@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.
- package/CHANGELOG.md +46 -0
- package/dist/assets/{NcAppContent-BC1UrvXW.css → NcAppContent-r_MkL84m.css} +23 -23
- package/dist/assets/{NcAppSettingsDialog-Csh7L4r1.css → NcAppSettingsDialog-Dcv235GW.css} +10 -10
- package/dist/assets/{NcAppSettingsSection-qx2jbXXG.css → NcAppSettingsSection-DIVdlb0g.css} +3 -3
- package/dist/assets/NcAppSettingsSectionShortcuts-CRO4RakN.css +6 -0
- package/dist/assets/{NcAppSidebar-RFBRejzg.css → NcAppSidebar-aGrIJ9f6.css} +119 -83
- package/dist/assets/{NcAvatar-CtFA4-sC.css → NcAvatar-BvgSFJqT.css} +24 -24
- package/dist/assets/{NcChip-Cjdo3xPB.css → NcChip-T6s7HqeL.css} +23 -11
- package/dist/assets/{NcColorPicker-DtGrgPdj.css → NcColorPicker-CO_Jq2Ow.css} +31 -31
- package/dist/assets/{NcEmptyContent-q-geAf0w.css → NcEmptyContent-CLjlZ-UT.css} +9 -9
- package/dist/assets/NcHotkey-QklVKSyr.css +44 -0
- package/dist/assets/NcHotkeyList-B42a0d8Z.css +9 -0
- package/dist/assets/{NcInputField-DRt2ahWd.css → NcInputField-D5SEE7D0.css} +40 -40
- package/dist/assets/{NcPasswordField-CrBkaH78.css → NcPasswordField-CMuvrdVC.css} +2 -2
- package/dist/assets/{NcRadioGroupButton-6mf16D0h.css → NcRadioGroupButton-qxDfssOp.css} +13 -13
- package/dist/assets/{NcRelatedResourcesPanel-BVdRCi64.css → NcRelatedResourcesPanel-CZDNe7DZ.css} +14 -14
- package/dist/assets/{NcRichContenteditable-zvOx7ivB.css → NcRichContenteditable-CPbTS8xJ.css} +11 -11
- package/dist/assets/{NcTextArea-D7H1UNAd.css → NcTextArea-7C2JBozT.css} +25 -25
- package/dist/assets/{NcUserStatusIcon-D8HqS9GC.css → NcUserStatusIcon-B3aHoBAd.css} +4 -4
- package/dist/assets/{referencePickerModal-B4dORP5P.css → referencePickerModal-DWMAMaU3.css} +6 -6
- package/dist/chunks/{NcActionButtonGroup-BVFZ42sR.mjs → NcActionButtonGroup-EyWT8pe-.mjs} +2 -2
- package/dist/chunks/{NcActionButtonGroup-BVFZ42sR.mjs.map → NcActionButtonGroup-EyWT8pe-.mjs.map} +1 -1
- package/dist/chunks/{NcActionInput-CYkUDMIE.mjs → NcActionInput-BaHXAvFo.mjs} +6 -6
- package/dist/chunks/{NcActionInput-CYkUDMIE.mjs.map → NcActionInput-BaHXAvFo.mjs.map} +1 -1
- package/dist/chunks/{NcActions-DSYz-dfd.mjs → NcActions-C-E6BGfZ.mjs} +2 -2
- package/dist/chunks/{NcActions-DSYz-dfd.mjs.map → NcActions-C-E6BGfZ.mjs.map} +1 -1
- package/dist/chunks/{NcAppContent-M-ffnIS0.mjs → NcAppContent-Qg8YBJa7.mjs} +19 -21
- package/dist/chunks/NcAppContent-Qg8YBJa7.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigation-B1kSbOL2.mjs → NcAppNavigation-BWd7-5H0.mjs} +2 -2
- package/dist/chunks/{NcAppNavigation-B1kSbOL2.mjs.map → NcAppNavigation-BWd7-5H0.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-BEJgQZnC.mjs → NcAppNavigationCaption-wzGkHPZs.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationCaption-BEJgQZnC.mjs.map → NcAppNavigationCaption-wzGkHPZs.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-BQn3eApT.mjs → NcAppNavigationItem-Cz_lEp5a.mjs} +5 -5
- package/dist/chunks/{NcAppNavigationItem-BQn3eApT.mjs.map → NcAppNavigationItem-Cz_lEp5a.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-_Pc4DgGz.mjs → NcAppNavigationNewItem-D-JsQf87.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationNewItem-_Pc4DgGz.mjs.map → NcAppNavigationNewItem-D-JsQf87.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSearch-DhpYmUvR.mjs → NcAppNavigationSearch-BbXky-Un.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationSearch-DhpYmUvR.mjs.map → NcAppNavigationSearch-BbXky-Un.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-C7wCP68k.mjs → NcAppNavigationSettings-CgRg-AbU.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationSettings-C7wCP68k.mjs.map → NcAppNavigationSettings-CgRg-AbU.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-CAVz10A2.mjs → NcAppSettingsDialog-BZzj8jNU.mjs} +21 -12
- package/dist/chunks/NcAppSettingsDialog-BZzj8jNU.mjs.map +1 -0
- package/dist/chunks/NcAppSettingsSection-urZiy9aH.mjs +54 -0
- package/dist/chunks/NcAppSettingsSection-urZiy9aH.mjs.map +1 -0
- package/dist/chunks/NcAppSettingsSectionShortcuts-CK8lXUxx.mjs +38 -0
- package/dist/chunks/NcAppSettingsSectionShortcuts-CK8lXUxx.mjs.map +1 -0
- package/dist/chunks/{NcAppSidebar-DhIHNv38.mjs → NcAppSidebar-Du9lcG-G.mjs} +108 -68
- package/dist/chunks/NcAppSidebar-Du9lcG-G.mjs.map +1 -0
- package/dist/chunks/{NcAvatar-np0umB0M.mjs → NcAvatar-CZVJYWdr.mjs} +6 -6
- package/dist/chunks/NcAvatar-CZVJYWdr.mjs.map +1 -0
- package/dist/chunks/NcBlurHash-BiFktE2N.mjs.map +1 -1
- package/dist/chunks/{NcBreadcrumb-Owk00UZe.mjs → NcBreadcrumb-CkUvC1g0.mjs} +2 -2
- package/dist/chunks/{NcBreadcrumb-Owk00UZe.mjs.map → NcBreadcrumb-CkUvC1g0.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-DCC65VBU.mjs → NcBreadcrumbs-Dx6ylWcp.mjs} +3 -3
- package/dist/chunks/{NcBreadcrumbs-DCC65VBU.mjs.map → NcBreadcrumbs-Dx6ylWcp.mjs.map} +1 -1
- package/dist/chunks/{NcCheckboxRadioSwitch-CrehrqO8.mjs → NcCheckboxRadioSwitch-Da3UT5om.mjs} +2 -2
- package/dist/chunks/{NcCheckboxRadioSwitch-CrehrqO8.mjs.map → NcCheckboxRadioSwitch-Da3UT5om.mjs.map} +1 -1
- package/dist/chunks/{NcChip-DJYTA-9o.mjs → NcChip-CIjgDRrf.mjs} +5 -5
- package/dist/chunks/NcChip-CIjgDRrf.mjs.map +1 -0
- package/dist/chunks/{NcCollectionList-C3azs_bD.mjs → NcCollectionList-DqNsOT7P.mjs} +5 -5
- package/dist/chunks/{NcCollectionList-C3azs_bD.mjs.map → NcCollectionList-DqNsOT7P.mjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-CUgXEX1F.mjs → NcColorPicker-yoZ5ZWC3.mjs} +5 -5
- package/dist/chunks/NcColorPicker-yoZ5ZWC3.mjs.map +1 -0
- package/dist/chunks/{NcContent-D8hwdcWT.mjs → NcContent-DxKYTMfp.mjs} +2 -2
- package/dist/chunks/{NcContent-D8hwdcWT.mjs.map → NcContent-DxKYTMfp.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-BEUtfCxs.mjs → NcDashboardWidget-Bu7bWoUK.mjs} +6 -6
- package/dist/chunks/{NcDashboardWidget-BEUtfCxs.mjs.map → NcDashboardWidget-Bu7bWoUK.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-BPw9-irg.mjs → NcDashboardWidgetItem-CJg0lrlx.mjs} +3 -3
- package/dist/chunks/{NcDashboardWidgetItem-BPw9-irg.mjs.map → NcDashboardWidgetItem-CJg0lrlx.mjs.map} +1 -1
- package/dist/chunks/{NcDateTimePicker-DPFq8Xcd.mjs → NcDateTimePicker-DOwSKf9T.mjs} +3 -3
- package/dist/chunks/{NcDateTimePicker-DPFq8Xcd.mjs.map → NcDateTimePicker-DOwSKf9T.mjs.map} +1 -1
- package/dist/chunks/{NcDateTimePickerNative-BXcWNyR4.mjs → NcDateTimePickerNative-BSKXbwuA.mjs} +2 -2
- package/dist/chunks/{NcDateTimePickerNative-BXcWNyR4.mjs.map → NcDateTimePickerNative-BSKXbwuA.mjs.map} +1 -1
- package/dist/chunks/{NcDialog-CdAQQLxt.mjs → NcDialog-BgzJN2XT.mjs} +3 -3
- package/dist/chunks/{NcDialog-CdAQQLxt.mjs.map → NcDialog-BgzJN2XT.mjs.map} +1 -1
- 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
- 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
- package/dist/chunks/{NcEmojiPicker-B7wsWhTp.mjs → NcEmojiPicker-CwR_8bCR.mjs} +6 -6
- package/dist/chunks/{NcEmojiPicker-B7wsWhTp.mjs.map → NcEmojiPicker-CwR_8bCR.mjs.map} +1 -1
- package/dist/chunks/{NcEmptyContent-BdOezubv.mjs → NcEmptyContent-B8-90BSI.mjs} +25 -19
- package/dist/chunks/NcEmptyContent-B8-90BSI.mjs.map +1 -0
- package/dist/chunks/NcHotkey-V6s3DXUs.mjs +61 -0
- package/dist/chunks/NcHotkey-V6s3DXUs.mjs.map +1 -0
- package/dist/chunks/NcHotkeyList-Ck87UwvW.mjs +42 -0
- package/dist/chunks/NcHotkeyList-Ck87UwvW.mjs.map +1 -0
- package/dist/chunks/{NcInputConfirmCancel-CeWaIZeu.mjs → NcInputConfirmCancel-Zkh97f-3.mjs} +2 -2
- package/dist/chunks/{NcInputConfirmCancel-CeWaIZeu.mjs.map → NcInputConfirmCancel-Zkh97f-3.mjs.map} +1 -1
- package/dist/chunks/{NcInputField-BYFjEj7Z.mjs → NcInputField-By_D1kDJ.mjs} +12 -4
- package/dist/chunks/NcInputField-By_D1kDJ.mjs.map +1 -0
- package/dist/chunks/{NcKbd-u-dn94gy.mjs → NcKbd-CyqxbpJJ.mjs} +2 -2
- package/dist/chunks/{NcKbd-u-dn94gy.mjs.map → NcKbd-CyqxbpJJ.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-DoZ4r5-c.mjs → NcListItem-z4qAtAqe.mjs} +2 -2
- package/dist/chunks/{NcListItem-DoZ4r5-c.mjs.map → NcListItem-z4qAtAqe.mjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-CLd5HmTk.mjs → NcListItemIcon-BVr_U7S4.mjs} +2 -2
- package/dist/chunks/{NcListItemIcon-CLd5HmTk.mjs.map → NcListItemIcon-BVr_U7S4.mjs.map} +1 -1
- package/dist/chunks/{NcModal-B61_8i83.mjs → NcModal-CvHjwuUy.mjs} +4 -4
- package/dist/chunks/{NcModal-B61_8i83.mjs.map → NcModal-CvHjwuUy.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-CXp65fyE.mjs → NcPasswordField-DroBJzYE.mjs} +5 -5
- package/dist/chunks/NcPasswordField-DroBJzYE.mjs.map +1 -0
- package/dist/chunks/NcPopover-C-MTaPCs.mjs.map +1 -1
- package/dist/chunks/{NcRadioGroupButton-C4BDgB0X.mjs → NcRadioGroupButton-BNydXurR.mjs} +7 -7
- package/dist/chunks/{NcRadioGroupButton-C4BDgB0X.mjs.map → NcRadioGroupButton-BNydXurR.mjs.map} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-Kx5Uw_k4.mjs → NcRelatedResourcesPanel-1oVpr5Oh.mjs} +6 -6
- package/dist/chunks/NcRelatedResourcesPanel-1oVpr5Oh.mjs.map +1 -0
- package/dist/chunks/{NcRichContenteditable-bVKzNfXT.mjs → NcRichContenteditable-D-GPJR9c.mjs} +14 -14
- package/dist/chunks/NcRichContenteditable-D-GPJR9c.mjs.map +1 -0
- package/dist/chunks/{NcRichText-Dht_wH3t.mjs → NcRichText-CETsOVBU.mjs} +3 -3
- package/dist/chunks/{NcRichText-Dht_wH3t.mjs.map → NcRichText-CETsOVBU.mjs.map} +1 -1
- package/dist/chunks/{NcSelect-CVm-XUF0.mjs → NcSelect-BUPzYWtk.mjs} +2 -2
- package/dist/chunks/{NcSelect-CVm-XUF0.mjs.map → NcSelect-BUPzYWtk.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-DlEQlAe1.mjs → NcSelectTags-Cu7fqEPC.mjs} +3 -3
- package/dist/chunks/NcSelectTags-Cu7fqEPC.mjs.map +1 -0
- package/dist/chunks/{NcSelectUsers-DQVO0hcf.mjs → NcSelectUsers-C3w6sjP5.mjs} +3 -3
- package/dist/chunks/{NcSelectUsers-DQVO0hcf.mjs.map → NcSelectUsers-C3w6sjP5.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-DiUv-jCU.mjs → NcSettingsSection-DFav6ob5.mjs} +2 -2
- package/dist/chunks/{NcSettingsSection-DiUv-jCU.mjs.map → NcSettingsSection-DFav6ob5.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-D7QUg85q.mjs → NcSettingsSelectGroup-DOiWF5XH.mjs} +4 -4
- package/dist/chunks/{NcSettingsSelectGroup-D7QUg85q.mjs.map → NcSettingsSelectGroup-DOiWF5XH.mjs.map} +1 -1
- package/dist/chunks/{NcTextArea-f6VqBxce.mjs → NcTextArea-CKK_gfIE.mjs} +3 -3
- package/dist/chunks/NcTextArea-CKK_gfIE.mjs.map +1 -0
- 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
- 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
- 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
- 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
- package/dist/chunks/{NcUserBubble-ndaFuDRG.mjs → NcUserBubble-CM66IyhS.mjs} +2 -2
- package/dist/chunks/{NcUserBubble-ndaFuDRG.mjs.map → NcUserBubble-CM66IyhS.mjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-PmjvUVMB.mjs → NcUserStatusIcon-DWB8QUZh.mjs} +4 -4
- package/dist/chunks/{NcUserStatusIcon-PmjvUVMB.mjs.map → NcUserStatusIcon-DWB8QUZh.mjs.map} +1 -1
- package/dist/chunks/{_l10n-DbErv0fW.mjs → _l10n-YZMLsK4O.mjs} +44 -44
- package/dist/chunks/_l10n-YZMLsK4O.mjs.map +1 -0
- package/dist/chunks/autolink-U5pBzLgI.mjs.map +1 -1
- package/dist/chunks/{colors-C52haAK_.mjs → colors-DhEYXS0_.mjs} +2 -2
- package/dist/chunks/{colors-C52haAK_.mjs.map → colors-DhEYXS0_.mjs.map} +1 -1
- package/dist/chunks/customPickerElements-4pQTZUnk.mjs.map +1 -1
- package/dist/chunks/logger-D3RVzcfQ.mjs.map +1 -1
- package/dist/chunks/{referencePickerModal-CWsskZ5O.mjs → referencePickerModal-CseuhGwX.mjs} +11 -11
- package/dist/chunks/referencePickerModal-CseuhGwX.mjs.map +1 -0
- package/dist/chunks/useAppSettingsDialog-Dn48dw1k.mjs.map +1 -1
- package/dist/components/NcActionButtonGroup/index.mjs +1 -1
- package/dist/components/NcActionInput/index.mjs +1 -1
- package/dist/components/NcActions/index.mjs +1 -1
- package/dist/components/NcAppContent/NcAppContent.vue.d.ts +0 -3
- package/dist/components/NcAppContent/index.mjs +1 -1
- package/dist/components/NcAppNavigation/index.mjs +1 -1
- package/dist/components/NcAppNavigationCaption/index.mjs +1 -1
- package/dist/components/NcAppNavigationItem/index.mjs +1 -1
- package/dist/components/NcAppNavigationNewItem/index.mjs +1 -1
- package/dist/components/NcAppNavigationSearch/index.mjs +1 -1
- package/dist/components/NcAppNavigationSettings/index.mjs +1 -1
- package/dist/components/NcAppSettingsDialog/NcAppSettingsDialog.vue.d.ts +1 -0
- package/dist/components/NcAppSettingsDialog/index.mjs +1 -1
- package/dist/components/NcAppSettingsDialog/useAppSettingsDialog.d.ts +3 -2
- package/dist/components/NcAppSettingsSection/NcAppSettingsSection.vue.d.ts +32 -37
- package/dist/components/NcAppSettingsSection/index.d.ts +4 -0
- package/dist/components/NcAppSettingsSection/index.mjs +1 -1
- package/dist/components/NcAppSettingsSectionShortcuts/NcAppSettingsSectionShortcuts.vue.d.ts +26 -0
- package/dist/components/NcAppSettingsSectionShortcuts/index.d.ts +1 -0
- package/dist/components/NcAppSettingsSectionShortcuts/index.mjs +5 -0
- package/dist/components/NcAppSettingsSectionShortcuts/index.mjs.map +1 -0
- package/dist/components/NcAppSidebar/NcAppSidebar.vue.d.ts +13 -18
- package/dist/components/NcAppSidebar/NcAppSidebarTabs.vue.d.ts +13 -18
- package/dist/components/NcAppSidebar/NcAppSidebarTabsButton.vue.d.ts +16 -0
- package/dist/components/NcAppSidebar/index.mjs +1 -1
- package/dist/components/NcAvatar/index.mjs +1 -1
- package/dist/components/NcBreadcrumb/index.mjs +1 -1
- package/dist/components/NcBreadcrumbs/index.mjs +1 -1
- package/dist/components/NcCheckboxRadioSwitch/index.mjs +1 -1
- package/dist/components/NcChip/NcChip.vue.d.ts +2 -2
- package/dist/components/NcChip/index.mjs +1 -1
- package/dist/components/NcCollectionList/index.mjs +1 -1
- package/dist/components/NcColorPicker/index.mjs +1 -1
- package/dist/components/NcContent/index.mjs +1 -1
- package/dist/components/NcDashboardWidget/index.mjs +1 -1
- package/dist/components/NcDashboardWidgetItem/index.mjs +1 -1
- package/dist/components/NcDateTimePicker/index.mjs +1 -1
- package/dist/components/NcDateTimePickerNative/index.mjs +1 -1
- package/dist/components/NcDialog/index.mjs +1 -1
- package/dist/components/NcDialogButton/index.mjs +1 -1
- package/dist/components/NcEmojiPicker/index.mjs +1 -1
- package/dist/components/NcEmptyContent/index.mjs +1 -1
- package/dist/components/NcHotkey/NcHotkey.vue.d.ts +44 -0
- package/dist/components/NcHotkey/index.d.ts +1 -0
- package/dist/components/NcHotkey/index.mjs +5 -0
- package/dist/components/NcHotkey/index.mjs.map +1 -0
- package/dist/components/NcHotkeyList/NcHotkeyList.vue.d.ts +32 -0
- package/dist/components/NcHotkeyList/index.d.ts +1 -0
- package/dist/components/NcHotkeyList/index.mjs +5 -0
- package/dist/components/NcHotkeyList/index.mjs.map +1 -0
- package/dist/components/NcInputField/index.mjs +1 -1
- package/dist/components/NcKbd/index.mjs +1 -1
- package/dist/components/NcListItem/index.mjs +1 -1
- package/dist/components/NcListItemIcon/index.mjs +1 -1
- package/dist/components/NcModal/index.mjs +1 -1
- package/dist/components/NcPasswordField/index.mjs +1 -1
- package/dist/components/NcRadioGroupButton/index.mjs +1 -1
- package/dist/components/NcRelatedResourcesPanel/index.mjs +1 -1
- package/dist/components/NcRichContenteditable/NcRichContenteditable.vue.d.ts +1 -1
- package/dist/components/NcRichContenteditable/index.mjs +1 -1
- package/dist/components/NcRichText/index.mjs +3 -3
- package/dist/components/NcSelect/index.mjs +1 -1
- package/dist/components/NcSelectTags/index.mjs +1 -1
- package/dist/components/NcSelectUsers/index.mjs +1 -1
- package/dist/components/NcSettingsSection/index.mjs +1 -1
- package/dist/components/NcSettingsSelectGroup/index.mjs +1 -1
- package/dist/components/NcTextArea/index.mjs +1 -1
- package/dist/components/NcTextField/index.mjs +1 -1
- package/dist/components/NcTimezonePicker/index.mjs +1 -1
- package/dist/components/NcUserBubble/index.mjs +1 -1
- package/dist/components/NcUserStatusIcon/index.mjs +1 -1
- package/dist/components/index.d.ts +4 -1
- package/dist/composables/useFormatDateTime/index.mjs +1 -1
- package/dist/functions/contactsMenu/index.mjs.map +1 -1
- package/dist/functions/reference/index.mjs +1 -1
- package/dist/functions/usernameToColor/index.mjs +3 -3
- package/dist/functions/usernameToColor/index.mjs.map +1 -1
- package/dist/index.mjs +126 -120
- package/dist/index.mjs.map +1 -1
- package/dist/utils/logger.d.ts +1 -2
- package/package.json +21 -21
- package/dist/chunks/NcAppContent-M-ffnIS0.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsDialog-CAVz10A2.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsSection-BNTUyNUo.mjs +0 -75
- package/dist/chunks/NcAppSettingsSection-BNTUyNUo.mjs.map +0 -1
- package/dist/chunks/NcAppSidebar-DhIHNv38.mjs.map +0 -1
- package/dist/chunks/NcAvatar-np0umB0M.mjs.map +0 -1
- package/dist/chunks/NcChip-DJYTA-9o.mjs.map +0 -1
- package/dist/chunks/NcColorPicker-CUgXEX1F.mjs.map +0 -1
- package/dist/chunks/NcEmptyContent-BdOezubv.mjs.map +0 -1
- package/dist/chunks/NcInputField-BYFjEj7Z.mjs.map +0 -1
- package/dist/chunks/NcPasswordField-CXp65fyE.mjs.map +0 -1
- package/dist/chunks/NcRelatedResourcesPanel-Kx5Uw_k4.mjs.map +0 -1
- package/dist/chunks/NcRichContenteditable-bVKzNfXT.mjs.map +0 -1
- package/dist/chunks/NcSelectTags-DlEQlAe1.mjs.map +0 -1
- package/dist/chunks/NcTextArea-f6VqBxce.mjs.map +0 -1
- package/dist/chunks/_l10n-DbErv0fW.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-CWsskZ5O.mjs.map +0 -1
|
@@ -28,7 +28,8 @@ export { default as NcAppNavigationSearch } from './NcAppNavigationSearch/index.
|
|
|
28
28
|
export { default as NcAppNavigationSettings } from './NcAppNavigationSettings/index.js';
|
|
29
29
|
export { default as NcAppNavigationSpacer } from './NcAppNavigationSpacer/index.ts';
|
|
30
30
|
export { default as NcAppSettingsDialog } from './NcAppSettingsDialog/index.ts';
|
|
31
|
-
export { default as NcAppSettingsSection } from './NcAppSettingsSection/index.
|
|
31
|
+
export { default as NcAppSettingsSection } from './NcAppSettingsSection/index.ts';
|
|
32
|
+
export { default as NcAppSettingsSectionShortcuts } from './NcAppSettingsSectionShortcuts/index.ts';
|
|
32
33
|
export { default as NcAppSidebar } from './NcAppSidebar/index.js';
|
|
33
34
|
export { default as NcAppSidebarHeader } from './NcAppSidebarHeader/index.ts';
|
|
34
35
|
export { default as NcAppSidebarTab } from './NcAppSidebarTab/index.js';
|
|
@@ -60,6 +61,8 @@ export { default as NcGuestContent } from './NcGuestContent/index.ts';
|
|
|
60
61
|
export { default as NcHeaderButton } from './NcHeaderButton/index.ts';
|
|
61
62
|
export { default as NcHeaderMenu } from './NcHeaderMenu/index.ts';
|
|
62
63
|
export { default as NcHighlight } from './NcHighlight/index.ts';
|
|
64
|
+
export { default as NcHotkey } from './NcHotkey/index.ts';
|
|
65
|
+
export { default as NcHotkeyList } from './NcHotkeyList/index.ts';
|
|
63
66
|
export { default as NcIconSvgWrapper } from './NcIconSvgWrapper/index.ts';
|
|
64
67
|
export { default as NcInputField } from './NcInputField/index.ts';
|
|
65
68
|
export { default as NcKbd } from './NcKbd/index.ts';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { formatRelativeTime, getCanonicalLocale } from "@nextcloud/l10n";
|
|
2
2
|
import { computed, toValue, ref, watchEffect, onUnmounted, readonly } from "vue";
|
|
3
|
-
import { r as register, b as t2, a as t } from "../../chunks/_l10n-
|
|
3
|
+
import { r as register, b as t2, a as t } from "../../chunks/_l10n-YZMLsK4O.mjs";
|
|
4
4
|
register(t2);
|
|
5
5
|
const FEW_SECONDS_AGO = {
|
|
6
6
|
long: t("a few seconds ago"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/functions/contactsMenu/index.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from '../../utils/logger.ts'\n\n// Taken from \\OC\\Contacts\\ContactsMenu\\Entry::jsonSerialize\nexport interface ContactsMenuEntry {\n\tid: number | string | null\n\tfullName: string\n\tavatar: string | null\n\ttopAction: object | null\n\tactions: object[]\n\tlastMessage: string\n\temailAddresses: string[]\n\tprofileTitle: string | null\n\tprofileUrl: string | null\n\tstatus: string | null\n\tstatusMessage: string | null\n\tstatusMessageTimestamp: number | null\n\tstatusIcon: string | null\n\tisUser: boolean\n\tuid: string | null\n}\n\nexport interface ContactsMenuAction {\n\tid: string\n\tdisplayName: (entry: ContactsMenuEntry) => string\n\tenabled: (entry: ContactsMenuEntry) => boolean\n\ticonSvg: (entry: ContactsMenuEntry) => string\n\tcallback: (entry: ContactsMenuEntry) => void\n}\n\n/**\n * Register a contacts and avatar menu action that will invoke the given callback on click.\n *\n * @param action - The action to register\n */\nexport function registerContactsMenuAction(action: ContactsMenuAction): void {\n\twindow._nc_contacts_menu_hooks ??= {}\n\n\tif (window._nc_contacts_menu_hooks[action.id]) {\n\t\tlogger.error(`ContactsMenu action for id ${action.id} has already been registered`, {\n\t\t\taction,\n\t\t})\n\t\treturn\n\t}\n\n\twindow._nc_contacts_menu_hooks[action.id] = action\n}\n\n/**\n * Get all registered and enabled contacts menu actions for the given menu entry.\n *\n * @param entry - The contacts menu entry object as returned by the backend\n */\nexport function getEnabledContactsMenuActions(entry: ContactsMenuEntry): ContactsMenuAction[] {\n\tif (!window._nc_contacts_menu_hooks) {\n\t\treturn []\n\t}\n\n\treturn Object.values(window._nc_contacts_menu_hooks).filter((action) => action.enabled(entry))\n}\n"],"names":[],"mappings":";AAuCO,SAAS,2BAA2B,QAAkC;AAC5E,SAAO,4BAA4B,CAAA;AAEnC,MAAI,OAAO,wBAAwB,OAAO,EAAE,GAAG;AAC9C,WAAO,MAAM,8BAA8B,OAAO,EAAE,gCAAgC;AAAA,MACnF;AAAA,IAAA,CACA;AACD;AAAA,EACD;AAEA,SAAO,wBAAwB,OAAO,EAAE,IAAI;AAC7C;AAOO,SAAS,8BAA8B,OAAgD;AAC7F,MAAI,CAAC,OAAO,yBAAyB;AACpC,WAAO,CAAA;AAAA,EACR;AAEA,SAAO,OAAO,OAAO,OAAO,uBAAuB,EAAE,OAAO,CAAC,WAAW,OAAO,QAAQ,KAAK,CAAC;AAC9F;"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/functions/contactsMenu/index.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { logger } from '../../utils/logger.ts'\n\n// Taken from \\OC\\Contacts\\ContactsMenu\\Entry::jsonSerialize\nexport interface ContactsMenuEntry {\n\tid: number | string | null\n\tfullName: string\n\tavatar: string | null\n\ttopAction: object | null\n\tactions: object[]\n\tlastMessage: string\n\temailAddresses: string[]\n\tprofileTitle: string | null\n\tprofileUrl: string | null\n\tstatus: string | null\n\tstatusMessage: string | null\n\tstatusMessageTimestamp: number | null\n\tstatusIcon: string | null\n\tisUser: boolean\n\tuid: string | null\n}\n\nexport interface ContactsMenuAction {\n\tid: string\n\tdisplayName: (entry: ContactsMenuEntry) => string\n\tenabled: (entry: ContactsMenuEntry) => boolean\n\ticonSvg: (entry: ContactsMenuEntry) => string\n\tcallback: (entry: ContactsMenuEntry) => void\n}\n\n/**\n * Register a contacts and avatar menu action that will invoke the given callback on click.\n *\n * @param action - The action to register\n */\nexport function registerContactsMenuAction(action: ContactsMenuAction): void {\n\twindow._nc_contacts_menu_hooks ??= {}\n\n\tif (window._nc_contacts_menu_hooks[action.id]) {\n\t\tlogger.error(`ContactsMenu action for id ${action.id} has already been registered`, {\n\t\t\taction,\n\t\t})\n\t\treturn\n\t}\n\n\twindow._nc_contacts_menu_hooks[action.id] = action\n}\n\n/**\n * Get all registered and enabled contacts menu actions for the given menu entry.\n *\n * @param entry - The contacts menu entry object as returned by the backend\n */\nexport function getEnabledContactsMenuActions(entry: ContactsMenuEntry): ContactsMenuAction[] {\n\tif (!window._nc_contacts_menu_hooks) {\n\t\treturn []\n\t}\n\n\treturn Object.values(window._nc_contacts_menu_hooks).filter((action) => action.enabled(entry))\n}\n"],"names":[],"mappings":";AAuCO,SAAS,2BAA2B,QAAkC;AAC5E,SAAO,4BAA4B,CAAA;AAEnC,MAAI,OAAO,wBAAwB,OAAO,EAAE,GAAG;AAC9C,WAAO,MAAM,8BAA8B,OAAO,EAAE,gCAAgC;AAAA,MACnF;AAAA,IAAA,CACA;AACD;AAAA,EACD;AAEA,SAAO,wBAAwB,OAAO,EAAE,IAAI;AAC7C;AAOO,SAAS,8BAA8B,OAAgD;AAC7F,MAAI,CAAC,OAAO,yBAAyB;AACpC,WAAO,CAAA;AAAA,EACR;AAEA,SAAO,OAAO,OAAO,OAAO,uBAAuB,EAAE,OAAO,CAAC,WAAW,OAAO,QAAQ,KAAK,CAAC;AAC9F;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { N, h, c, i, e, r, f, a } from "../../chunks/customPickerElements-4pQTZUnk.mjs";
|
|
2
|
-
import { a as a2, g, b, c as c2, s, d } from "../../chunks/referencePickerModal-
|
|
2
|
+
import { a as a2, g, b, c as c2, s, d } from "../../chunks/referencePickerModal-CseuhGwX.mjs";
|
|
3
3
|
export {
|
|
4
4
|
N as NcCustomPickerRenderResult,
|
|
5
5
|
a2 as anyLinkProviderId,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { g as generatePalette } from "../../chunks/colors-
|
|
1
|
+
import { Md5 } from "ts-md5";
|
|
2
|
+
import { g as generatePalette } from "../../chunks/colors-DhEYXS0_.mjs";
|
|
3
3
|
function hashCode(str) {
|
|
4
4
|
let hash = str;
|
|
5
5
|
if (str.match(/^([0-9a-f]{4}-?){8}$/) === null) {
|
|
6
|
-
hash =
|
|
6
|
+
hash = Md5.hashStr(str);
|
|
7
7
|
}
|
|
8
8
|
hash = hash.replace(/[^0-9a-f]/g, "");
|
|
9
9
|
let finalInt = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/functions/usernameToColor/index.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Color } from '../../utils/colors.ts'\n\nimport {
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../src/functions/usernameToColor/index.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Color } from '../../utils/colors.ts'\n\nimport { Md5 } from 'ts-md5'\nimport { generatePalette } from '../../utils/colors.ts'\n\n/**\n * Create a simple hash from a string\n *\n * @param str - The string to hash\n */\nfunction hashCode(str: string): number {\n\tlet hash = str\n\n\t// Hash a given string, if it is not md5 hash already\n\tif (str.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = Md5.hashStr(str)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tlet finalInt = 0\n\n\tfor (let i = 0; i < hash.length; i++) {\n\t\t// chars in md5 are [0-9a-f] (base-16)\n\t\tfinalInt += parseInt(hash.charAt(i), 16)\n\t}\n\n\treturn finalInt\n}\n\n/**\n * Generate a color from a username\n *\n * @param username - Display name or user id to generate from\n * @return The RGB color\n */\nexport function usernameToColor(username: string): Color {\n\tconst steps = 6\n\tconst finalPalette = generatePalette(steps)\n\tconst hash = hashCode(username.toLocaleLowerCase())\n\n\treturn finalPalette[hash % finalPalette.length]!\n}\n"],"names":[],"mappings":";;AAeA,SAAS,SAAS,KAAqB;AACtC,MAAI,OAAO;AAGX,MAAI,IAAI,MAAM,sBAAsB,MAAM,MAAM;AAC/C,WAAO,IAAI,QAAQ,GAAG;AAAA,EACvB;AAEA,SAAO,KAAK,QAAQ,cAAc,EAAE;AAEpC,MAAI,WAAW;AAEf,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAErC,gBAAY,SAAS,KAAK,OAAO,CAAC,GAAG,EAAE;AAAA,EACxC;AAEA,SAAO;AACR;AAQO,SAAS,gBAAgB,UAAyB;AACxD,QAAM,QAAQ;AACd,QAAM,eAAe,gBAAgB,KAAK;AAC1C,QAAM,OAAO,SAAS,SAAS,kBAAA,CAAmB;AAElD,SAAO,aAAa,OAAO,aAAa,MAAM;AAC/C;"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,76 +1,79 @@
|
|
|
1
1
|
import { N } from "./chunks/NcActionButton-BAaRMesp.mjs";
|
|
2
|
-
import { N as N2 } from "./chunks/NcActionButtonGroup-
|
|
2
|
+
import { N as N2 } from "./chunks/NcActionButtonGroup-EyWT8pe-.mjs";
|
|
3
3
|
import { N as N3 } from "./chunks/NcActionCaption-Fumfjzxj.mjs";
|
|
4
4
|
import { N as N4 } from "./chunks/NcActionCheckbox-CwrO3g3I.mjs";
|
|
5
|
-
import { N as N5 } from "./chunks/NcActionInput-
|
|
5
|
+
import { N as N5 } from "./chunks/NcActionInput-BaHXAvFo.mjs";
|
|
6
6
|
import { N as N6 } from "./chunks/NcActionLink-afakPM_N.mjs";
|
|
7
7
|
import { N as N7 } from "./chunks/NcActionRadio-ByCpOD0q.mjs";
|
|
8
8
|
import { N as N8 } from "./chunks/NcActionRouter-oT-YU_jf.mjs";
|
|
9
|
-
import { N as N9 } from "./chunks/NcActions-
|
|
9
|
+
import { N as N9 } from "./chunks/NcActions-C-E6BGfZ.mjs";
|
|
10
10
|
import { N as N10 } from "./chunks/NcActionSeparator-Doekl1NX.mjs";
|
|
11
11
|
import { N as N11 } from "./chunks/NcActionText-uKvLcEY6.mjs";
|
|
12
12
|
import { N as N12 } from "./chunks/NcActionTextEditable-CzI0V4-P.mjs";
|
|
13
|
-
import { N as N13 } from "./chunks/NcAppContent-
|
|
13
|
+
import { N as N13 } from "./chunks/NcAppContent-Qg8YBJa7.mjs";
|
|
14
14
|
import { _ } from "./chunks/NcAppContentDetails.vue_vue_type_script_setup_true_lang-Dnf4r_Ng.mjs";
|
|
15
15
|
import { N as N14 } from "./chunks/NcAppContentList-DYFsuDKh.mjs";
|
|
16
|
-
import { N as N15 } from "./chunks/NcAppNavigation-
|
|
17
|
-
import { N as N16 } from "./chunks/NcAppNavigationCaption-
|
|
16
|
+
import { N as N15 } from "./chunks/NcAppNavigation-BWd7-5H0.mjs";
|
|
17
|
+
import { N as N16 } from "./chunks/NcAppNavigationCaption-wzGkHPZs.mjs";
|
|
18
18
|
import { N as N17 } from "./chunks/NcAppNavigationIconBullet-PrlhOoE9.mjs";
|
|
19
|
-
import { N as N18 } from "./chunks/NcAppNavigationItem-
|
|
19
|
+
import { N as N18 } from "./chunks/NcAppNavigationItem-Cz_lEp5a.mjs";
|
|
20
20
|
import { N as N19 } from "./chunks/NcAppNavigationList-BX0wE-dB.mjs";
|
|
21
21
|
import { N as N20 } from "./chunks/NcAppNavigationNew-Y50s6jTC.mjs";
|
|
22
|
-
import { N as N21 } from "./chunks/NcAppNavigationNewItem-
|
|
23
|
-
import { N as N22 } from "./chunks/NcAppNavigationSearch-
|
|
24
|
-
import { N as N23 } from "./chunks/NcAppNavigationSettings-
|
|
22
|
+
import { N as N21 } from "./chunks/NcAppNavigationNewItem-D-JsQf87.mjs";
|
|
23
|
+
import { N as N22 } from "./chunks/NcAppNavigationSearch-BbXky-Un.mjs";
|
|
24
|
+
import { N as N23 } from "./chunks/NcAppNavigationSettings-CgRg-AbU.mjs";
|
|
25
25
|
import { N as N24 } from "./chunks/NcAppNavigationSpacer-BvkBfuVw.mjs";
|
|
26
|
-
import { N as N25 } from "./chunks/NcAppSettingsDialog-
|
|
27
|
-
import { N as N26 } from "./chunks/NcAppSettingsSection-
|
|
28
|
-
import { N as N27 } from "./chunks/
|
|
26
|
+
import { N as N25 } from "./chunks/NcAppSettingsDialog-BZzj8jNU.mjs";
|
|
27
|
+
import { N as N26 } from "./chunks/NcAppSettingsSection-urZiy9aH.mjs";
|
|
28
|
+
import { N as N27 } from "./chunks/NcAppSettingsSectionShortcuts-CK8lXUxx.mjs";
|
|
29
|
+
import { N as N28 } from "./chunks/NcAppSidebar-Du9lcG-G.mjs";
|
|
29
30
|
import { _ as _2 } from "./chunks/NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-0j0aFDeK.mjs";
|
|
30
|
-
import { N as
|
|
31
|
-
import { N as
|
|
32
|
-
import { N as
|
|
33
|
-
import { N as
|
|
34
|
-
import { N as
|
|
35
|
-
import { N as
|
|
36
|
-
import { N as
|
|
37
|
-
import { N as
|
|
38
|
-
import { N as
|
|
39
|
-
import { N as
|
|
40
|
-
import { N as
|
|
41
|
-
import { N as
|
|
42
|
-
import { N as
|
|
43
|
-
import { N as
|
|
44
|
-
import { N as
|
|
45
|
-
import { N as
|
|
46
|
-
import { N as
|
|
31
|
+
import { N as N29 } from "./chunks/NcAppSidebarTab-Cjetm3Fs.mjs";
|
|
32
|
+
import { N as N30 } from "./chunks/NcAssistantButton-BdYyxDoX.mjs";
|
|
33
|
+
import { N as N31 } from "./chunks/NcAssistantContent-Boi-0v_0.mjs";
|
|
34
|
+
import { N as N32 } from "./chunks/NcAssistantIcon-ClJKOiGi.mjs";
|
|
35
|
+
import { N as N33 } from "./chunks/NcAvatar-CZVJYWdr.mjs";
|
|
36
|
+
import { N as N34 } from "./chunks/NcBlurHash-BiFktE2N.mjs";
|
|
37
|
+
import { N as N35 } from "./chunks/NcBreadcrumb-CkUvC1g0.mjs";
|
|
38
|
+
import { N as N36 } from "./chunks/NcBreadcrumbs-Dx6ylWcp.mjs";
|
|
39
|
+
import { N as N37 } from "./chunks/NcButton-DkC5k3Lb.mjs";
|
|
40
|
+
import { N as N38 } from "./chunks/NcCheckboxRadioSwitch-Da3UT5om.mjs";
|
|
41
|
+
import { N as N39 } from "./chunks/NcChip-CIjgDRrf.mjs";
|
|
42
|
+
import { N as N40 } from "./chunks/NcCollectionList-DqNsOT7P.mjs";
|
|
43
|
+
import { N as N41 } from "./chunks/NcColorPicker-yoZ5ZWC3.mjs";
|
|
44
|
+
import { N as N42 } from "./chunks/NcContent-DxKYTMfp.mjs";
|
|
45
|
+
import { N as N43 } from "./chunks/NcCounterBubble-CxxHHh8i.mjs";
|
|
46
|
+
import { N as N44 } from "./chunks/NcDashboardWidget-Bu7bWoUK.mjs";
|
|
47
|
+
import { N as N45 } from "./chunks/NcDashboardWidgetItem-CJg0lrlx.mjs";
|
|
47
48
|
import { _ as _3 } from "./chunks/NcDateTime.vue_vue_type_script_setup_true_lang-BhB8yA4U.mjs";
|
|
48
|
-
import { N as
|
|
49
|
-
import { N as
|
|
50
|
-
import { N as
|
|
51
|
-
import { _ as _4 } from "./chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-
|
|
52
|
-
import { N as
|
|
53
|
-
import { N as
|
|
54
|
-
import { N as
|
|
55
|
-
import { N as
|
|
56
|
-
import { N as
|
|
57
|
-
import { N as
|
|
49
|
+
import { N as N46 } from "./chunks/NcDateTimePicker-DOwSKf9T.mjs";
|
|
50
|
+
import { N as N47 } from "./chunks/NcDateTimePickerNative-BSKXbwuA.mjs";
|
|
51
|
+
import { N as N48 } from "./chunks/NcDialog-BgzJN2XT.mjs";
|
|
52
|
+
import { _ as _4 } from "./chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-D9ClaBcS.mjs";
|
|
53
|
+
import { N as N49 } from "./chunks/NcEllipsisedOption-dT-CtXYp.mjs";
|
|
54
|
+
import { N as N50 } from "./chunks/NcEmojiPicker-CwR_8bCR.mjs";
|
|
55
|
+
import { N as N51 } from "./chunks/NcEmptyContent-B8-90BSI.mjs";
|
|
56
|
+
import { N as N52 } from "./chunks/NcGuestContent-CfCh49o0.mjs";
|
|
57
|
+
import { N as N53 } from "./chunks/NcHeaderButton-DafXYbXB.mjs";
|
|
58
|
+
import { N as N54 } from "./chunks/NcHeaderMenu-DfO7ghiM.mjs";
|
|
58
59
|
import { _ as _5 } from "./chunks/NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs";
|
|
59
|
-
import { N as
|
|
60
|
-
import { N as
|
|
61
|
-
import { N as
|
|
62
|
-
import { N as
|
|
63
|
-
import { N as
|
|
64
|
-
import { N as
|
|
65
|
-
import { N as
|
|
66
|
-
import { N as
|
|
67
|
-
import { N as
|
|
68
|
-
import { N as
|
|
69
|
-
import { N as
|
|
70
|
-
import { N as
|
|
71
|
-
import { N as
|
|
72
|
-
import { N as
|
|
73
|
-
import {
|
|
60
|
+
import { N as N55 } from "./chunks/NcHotkey-V6s3DXUs.mjs";
|
|
61
|
+
import { N as N56 } from "./chunks/NcHotkeyList-Ck87UwvW.mjs";
|
|
62
|
+
import { N as N57 } from "./chunks/NcIconSvgWrapper-5AA93z-F.mjs";
|
|
63
|
+
import { N as N58 } from "./chunks/NcInputField-By_D1kDJ.mjs";
|
|
64
|
+
import { N as N59 } from "./chunks/NcKbd-CyqxbpJJ.mjs";
|
|
65
|
+
import { N as N60 } from "./chunks/NcListItem-z4qAtAqe.mjs";
|
|
66
|
+
import { N as N61 } from "./chunks/NcListItemIcon-BVr_U7S4.mjs";
|
|
67
|
+
import { N as N62 } from "./chunks/NcLoadingIcon-b_ajZ_nQ.mjs";
|
|
68
|
+
import { N as N63 } from "./chunks/NcModal-CvHjwuUy.mjs";
|
|
69
|
+
import { N as N64 } from "./chunks/NcNoteCard-BomepG0z.mjs";
|
|
70
|
+
import { N as N65 } from "./chunks/NcPasswordField-DroBJzYE.mjs";
|
|
71
|
+
import { N as N66 } from "./chunks/NcPopover-C-MTaPCs.mjs";
|
|
72
|
+
import { N as N67 } from "./chunks/NcProgressBar-DDMAo4h-.mjs";
|
|
73
|
+
import { N as N68 } from "./chunks/NcRadioGroup-B_BNFM6V.mjs";
|
|
74
|
+
import { N as N69 } from "./chunks/NcRadioGroupButton-BNydXurR.mjs";
|
|
75
|
+
import { N as N70 } from "./chunks/NcRelatedResourcesPanel-1oVpr5Oh.mjs";
|
|
76
|
+
import { a, N as N71, b } from "./chunks/NcRichContenteditable-D-GPJR9c.mjs";
|
|
74
77
|
import "@nextcloud/auth";
|
|
75
78
|
import "@nextcloud/axios";
|
|
76
79
|
import "@nextcloud/router";
|
|
@@ -78,25 +81,25 @@ import "@nextcloud/sharing/public";
|
|
|
78
81
|
import "vue";
|
|
79
82
|
import "@vueuse/core";
|
|
80
83
|
import "vue-router";
|
|
81
|
-
import { a as a2, g, b as b2, c, s, d } from "./chunks/referencePickerModal-
|
|
82
|
-
import { N as
|
|
84
|
+
import { a as a2, g, b as b2, c, s, d } from "./chunks/referencePickerModal-CseuhGwX.mjs";
|
|
85
|
+
import { N as N72, h, c as c2, i, e, r, f, a as a3 } from "./chunks/customPickerElements-4pQTZUnk.mjs";
|
|
83
86
|
import "./chunks/autolink-U5pBzLgI.mjs";
|
|
84
|
-
import { N as
|
|
85
|
-
import { N as
|
|
87
|
+
import { N as N73 } from "./chunks/NcRichText-CETsOVBU.mjs";
|
|
88
|
+
import { N as N74 } from "./chunks/NcSelect-BUPzYWtk.mjs";
|
|
86
89
|
import "debounce";
|
|
87
90
|
import "./chunks/logger-D3RVzcfQ.mjs";
|
|
88
|
-
import { _ as _6 } from "./chunks/NcTextField.vue_vue_type_script_setup_true_lang-
|
|
91
|
+
import { _ as _6 } from "./chunks/NcTextField.vue_vue_type_script_setup_true_lang-DVAnIMOA.mjs";
|
|
89
92
|
import "@nextcloud/event-bus";
|
|
90
93
|
import { _ as _7 } from "./chunks/NcSavingIndicatorIcon.vue_vue_type_script_setup_true_lang-jUf1K561.mjs";
|
|
91
|
-
import { N as
|
|
92
|
-
import { N as
|
|
93
|
-
import { N as
|
|
94
|
-
import { N as
|
|
95
|
-
import { N as
|
|
94
|
+
import { N as N75 } from "./chunks/NcSelectTags-Cu7fqEPC.mjs";
|
|
95
|
+
import { N as N76 } from "./chunks/NcSelectUsers-C3w6sjP5.mjs";
|
|
96
|
+
import { N as N77 } from "./chunks/NcSettingsSection-DFav6ob5.mjs";
|
|
97
|
+
import { N as N78 } from "./chunks/NcSettingsSelectGroup-DOiWF5XH.mjs";
|
|
98
|
+
import { N as N79 } from "./chunks/NcTextArea-CKK_gfIE.mjs";
|
|
96
99
|
import { _ as _8 } from "./chunks/NcThemeProvider.vue_vue_type_script_setup_true_lang-nUDJsDGI.mjs";
|
|
97
|
-
import { _ as _9 } from "./chunks/NcTimezonePicker.vue_vue_type_script_setup_true_lang-
|
|
98
|
-
import { N as
|
|
99
|
-
import { N as
|
|
100
|
+
import { _ as _9 } from "./chunks/NcTimezonePicker.vue_vue_type_script_setup_true_lang-C2YnFWvf.mjs";
|
|
101
|
+
import { N as N80 } from "./chunks/NcUserBubble-CM66IyhS.mjs";
|
|
102
|
+
import { N as N81 } from "./chunks/NcUserStatusIcon-DWB8QUZh.mjs";
|
|
100
103
|
import { _ as _10 } from "./chunks/NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs";
|
|
101
104
|
import { useFormatRelativeTime, useFormatTime } from "./composables/useFormatDateTime/index.mjs";
|
|
102
105
|
import { useHotKey } from "./composables/useHotKey/index.mjs";
|
|
@@ -145,68 +148,71 @@ export {
|
|
|
145
148
|
N24 as NcAppNavigationSpacer,
|
|
146
149
|
N25 as NcAppSettingsDialog,
|
|
147
150
|
N26 as NcAppSettingsSection,
|
|
148
|
-
N27 as
|
|
151
|
+
N27 as NcAppSettingsSectionShortcuts,
|
|
152
|
+
N28 as NcAppSidebar,
|
|
149
153
|
_2 as NcAppSidebarHeader,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
+
N29 as NcAppSidebarTab,
|
|
155
|
+
N30 as NcAssistantButton,
|
|
156
|
+
N31 as NcAssistantContent,
|
|
157
|
+
N32 as NcAssistantIcon,
|
|
154
158
|
a as NcAutoCompleteResult,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
159
|
+
N33 as NcAvatar,
|
|
160
|
+
N34 as NcBlurHash,
|
|
161
|
+
N35 as NcBreadcrumb,
|
|
162
|
+
N36 as NcBreadcrumbs,
|
|
163
|
+
N37 as NcButton,
|
|
164
|
+
N38 as NcCheckboxRadioSwitch,
|
|
165
|
+
N39 as NcChip,
|
|
166
|
+
N40 as NcCollectionList,
|
|
167
|
+
N41 as NcColorPicker,
|
|
168
|
+
N42 as NcContent,
|
|
169
|
+
N43 as NcCounterBubble,
|
|
170
|
+
N72 as NcCustomPickerRenderResult,
|
|
171
|
+
N44 as NcDashboardWidget,
|
|
172
|
+
N45 as NcDashboardWidgetItem,
|
|
169
173
|
_3 as NcDateTime,
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
174
|
+
N46 as NcDateTimePicker,
|
|
175
|
+
N47 as NcDateTimePickerNative,
|
|
176
|
+
N48 as NcDialog,
|
|
173
177
|
_4 as NcDialogButton,
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
N49 as NcEllipsisedOption,
|
|
179
|
+
N50 as NcEmojiPicker,
|
|
180
|
+
N51 as NcEmptyContent,
|
|
181
|
+
N52 as NcGuestContent,
|
|
182
|
+
N53 as NcHeaderButton,
|
|
183
|
+
N54 as NcHeaderMenu,
|
|
180
184
|
_5 as NcHighlight,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
185
|
+
N55 as NcHotkey,
|
|
186
|
+
N56 as NcHotkeyList,
|
|
187
|
+
N57 as NcIconSvgWrapper,
|
|
188
|
+
N58 as NcInputField,
|
|
189
|
+
N59 as NcKbd,
|
|
190
|
+
N60 as NcListItem,
|
|
191
|
+
N61 as NcListItemIcon,
|
|
192
|
+
N62 as NcLoadingIcon,
|
|
193
|
+
N71 as NcMentionBubble,
|
|
194
|
+
N63 as NcModal,
|
|
195
|
+
N64 as NcNoteCard,
|
|
196
|
+
N65 as NcPasswordField,
|
|
197
|
+
N66 as NcPopover,
|
|
198
|
+
N67 as NcProgressBar,
|
|
199
|
+
N68 as NcRadioGroup,
|
|
200
|
+
N69 as NcRadioGroupButton,
|
|
201
|
+
N70 as NcRelatedResourcesPanel,
|
|
196
202
|
b as NcRichContenteditable,
|
|
197
|
-
|
|
203
|
+
N73 as NcRichText,
|
|
198
204
|
_7 as NcSavingIndicatorIcon,
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
+
N74 as NcSelect,
|
|
206
|
+
N75 as NcSelectTags,
|
|
207
|
+
N76 as NcSelectUsers,
|
|
208
|
+
N77 as NcSettingsSection,
|
|
209
|
+
N78 as NcSettingsSelectGroup,
|
|
210
|
+
N79 as NcTextArea,
|
|
205
211
|
_6 as NcTextField,
|
|
206
212
|
_8 as NcThemeProvider,
|
|
207
213
|
_9 as NcTimezonePicker,
|
|
208
|
-
|
|
209
|
-
|
|
214
|
+
N80 as NcUserBubble,
|
|
215
|
+
N81 as NcUserStatusIcon,
|
|
210
216
|
_10 as NcVNodes,
|
|
211
217
|
a2 as anyLinkProviderId,
|
|
212
218
|
checkIfDarkTheme,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -2,5 +2,4 @@
|
|
|
2
2
|
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
|
|
3
3
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
4
|
*/
|
|
5
|
-
declare const
|
|
6
|
-
export default _default;
|
|
5
|
+
export declare const logger: import('@nextcloud/logger').ILogger;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nextcloud/vue",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.1.0",
|
|
4
4
|
"description": "Nextcloud vue components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vuejs",
|
|
@@ -77,9 +77,9 @@
|
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"@ckpack/vue-color": "^1.6.0",
|
|
79
79
|
"@floating-ui/dom": "^1.7.4",
|
|
80
|
-
"@nextcloud/auth": "^2.5.
|
|
80
|
+
"@nextcloud/auth": "^2.5.3",
|
|
81
81
|
"@nextcloud/axios": "^2.5.2",
|
|
82
|
-
"@nextcloud/browser-storage": "^0.
|
|
82
|
+
"@nextcloud/browser-storage": "^0.5.0",
|
|
83
83
|
"@nextcloud/capabilities": "^1.2.0",
|
|
84
84
|
"@nextcloud/event-bus": "^3.3.2",
|
|
85
85
|
"@nextcloud/initial-state": "^3.0.0",
|
|
@@ -92,15 +92,14 @@
|
|
|
92
92
|
"@vueuse/core": "^13.9.0",
|
|
93
93
|
"blurhash": "^2.0.5",
|
|
94
94
|
"clone": "^2.1.2",
|
|
95
|
-
"crypto-browserify": "^3.12.1",
|
|
96
95
|
"debounce": "^2.2.0",
|
|
97
|
-
"dompurify": "^3.
|
|
96
|
+
"dompurify": "^3.3.0",
|
|
98
97
|
"emoji-mart-vue-fast": "^15.0.5",
|
|
99
98
|
"escape-html": "^1.0.3",
|
|
100
99
|
"floating-vue": "^5.2.2",
|
|
101
100
|
"focus-trap": "^7.6.5",
|
|
102
101
|
"linkifyjs": "^4.3.2",
|
|
103
|
-
"p-queue": "^
|
|
102
|
+
"p-queue": "^9.0.0",
|
|
104
103
|
"rehype-external-links": "^3.0.0",
|
|
105
104
|
"rehype-highlight": "^7.0.2",
|
|
106
105
|
"rehype-react": "^8.0.0",
|
|
@@ -110,13 +109,14 @@
|
|
|
110
109
|
"remark-unlink-protocols": "^1.0.0",
|
|
111
110
|
"splitpanes": "^4.0.4",
|
|
112
111
|
"striptags": "^3.2.0",
|
|
113
|
-
"tabbable": "^6.
|
|
112
|
+
"tabbable": "^6.3.0",
|
|
114
113
|
"tributejs": "^5.1.3",
|
|
114
|
+
"ts-md5": "^2.0.1",
|
|
115
115
|
"unified": "^11.0.5",
|
|
116
116
|
"unist-builder": "^4.0.0",
|
|
117
117
|
"unist-util-visit": "^5.0.0",
|
|
118
118
|
"vue": "^3.5.18",
|
|
119
|
-
"vue-router": "^4.
|
|
119
|
+
"vue-router": "^4.6.3",
|
|
120
120
|
"vue-select": "^4.0.0-beta.6"
|
|
121
121
|
},
|
|
122
122
|
"devDependencies": {
|
|
@@ -127,40 +127,40 @@
|
|
|
127
127
|
"@mdi/js": "^7.4.47",
|
|
128
128
|
"@mdi/svg": "^7.4.47",
|
|
129
129
|
"@nextcloud/babel-config": "^1.2.0",
|
|
130
|
-
"@nextcloud/browserslist-config": "^3.
|
|
130
|
+
"@nextcloud/browserslist-config": "^3.1.1",
|
|
131
131
|
"@nextcloud/eslint-config": "^9.0.0-rc.5",
|
|
132
|
-
"@nextcloud/stylelint-config": "^3.1.
|
|
132
|
+
"@nextcloud/stylelint-config": "^3.1.1",
|
|
133
133
|
"@nextcloud/vite-config": "^2.5.0",
|
|
134
134
|
"@nextcloud/webpack-vue-config": "github:nextcloud/webpack-vue-config#vue3",
|
|
135
|
-
"@playwright/experimental-ct-vue": "^1.
|
|
136
|
-
"@playwright/test": "^1.
|
|
135
|
+
"@playwright/experimental-ct-vue": "^1.56.1",
|
|
136
|
+
"@playwright/test": "^1.56.1",
|
|
137
137
|
"@types/gettext-parser": "^8.0.0",
|
|
138
|
-
"@types/node": "^24.
|
|
138
|
+
"@types/node": "^24.9.1",
|
|
139
139
|
"@vitest/coverage-v8": "^3.2.4",
|
|
140
140
|
"@vue/test-utils": "^2.4.6",
|
|
141
141
|
"@vue/tsconfig": "^0.8.1",
|
|
142
142
|
"babel-loader-exclude-node-modules-except": "^1.2.1",
|
|
143
|
-
"core-js": "^3.
|
|
144
|
-
"eslint": "^9.
|
|
143
|
+
"core-js": "^3.46.0",
|
|
144
|
+
"eslint": "^9.38.0",
|
|
145
145
|
"file-loader": "^6.2.0",
|
|
146
146
|
"gettext-extractor": "^4.0.1",
|
|
147
147
|
"gettext-parser": "^8.0.0",
|
|
148
148
|
"glob": "^11.0.3",
|
|
149
|
-
"jsdom": "^
|
|
149
|
+
"jsdom": "^27.0.1",
|
|
150
150
|
"remark-gfm": "^4.0.1",
|
|
151
151
|
"resolve-url-loader": "^5.0.0",
|
|
152
152
|
"sass": "^1.93.2",
|
|
153
|
-
"stylelint": "^16.
|
|
153
|
+
"stylelint": "^16.25.0",
|
|
154
154
|
"ts-node": "^10.9.2",
|
|
155
|
-
"typescript": "^5.9.
|
|
155
|
+
"typescript": "^5.9.3",
|
|
156
156
|
"url-loader": "^4.1.1",
|
|
157
|
-
"vite": "^7.1.
|
|
157
|
+
"vite": "^7.1.11",
|
|
158
158
|
"vitest": "^3.2.4",
|
|
159
159
|
"vue-eslint-parser": "^10.2.0",
|
|
160
160
|
"vue-material-design-icons": "^5.3.1",
|
|
161
161
|
"vue-styleguidist": "^4.72.4",
|
|
162
|
-
"vue-tsc": "^3.
|
|
163
|
-
"webpack": "^5.
|
|
162
|
+
"vue-tsc": "^3.1.1",
|
|
163
|
+
"webpack": "^5.102.1",
|
|
164
164
|
"webpack-merge": "^6.0.1"
|
|
165
165
|
},
|
|
166
166
|
"engines": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcAppContent-M-ffnIS0.mjs","sources":["../../src/components/NcAppContent/NcAppContentDetailsToggle.vue","../../src/utils/appName.ts","../../src/components/NcAppContent/NcAppContent.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport { mdiArrowRight } from '@mdi/js'\nimport { emit } from '@nextcloud/event-bus'\nimport { onBeforeUnmount, watch } from 'vue'\nimport { useIsMobile } from '../../composables/useIsMobile/index.js'\nimport { t } from '../../l10n.ts'\nimport NcButton from '../NcButton/index.ts'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/index.ts'\n\nconst isMobile = useIsMobile()\nwatch(isMobile, toggleAppNavigationButton, { immediate: true })\n\nonBeforeUnmount(() => {\n\tif (isMobile.value) {\n\t\ttoggleAppNavigationButton(false)\n\t}\n})\n\n/**\n * Toggle the app navigation button and hide it if needed.\n *\n * @param hide - if true the navigation toggle is visually hidden\n */\nfunction toggleAppNavigationButton(hide: boolean = true) {\n\tconst appNavigationToggle = document.querySelector<HTMLElement>('.app-navigation .app-navigation-toggle')\n\tif (appNavigationToggle) {\n\t\tappNavigationToggle.style.display = hide ? 'none' : ''\n\n\t\t// If we hide the NavigationToggle, we need to make sure the Navigation is also closed\n\t\tif (hide === true) {\n\t\t\temit('toggle-navigation', { open: false })\n\t\t}\n\t}\n}\n</script>\n\n<template>\n\t<NcButton\n\t\t:aria-label=\"t('Go back to the list')\"\n\t\tclass=\"app-details-toggle\"\n\t\t:class=\"{ 'app-details-toggle--mobile': isMobile }\"\n\t\t:title=\"t('Go back to the list')\"\n\t\tvariant=\"tertiary\">\n\t\t<template #icon>\n\t\t\t<NcIconSvgWrapper directional :path=\"mdiArrowRight\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<style lang=\"scss\" scoped>\n.app-details-toggle {\n\tposition: sticky;\n\twidth: var(--default-clickable-area);\n\theight: var(--default-clickable-area);\n\tpadding: $icon-margin;\n\tcursor: pointer;\n\topacity: .6;\n\ttransform: rotate(180deg);\n\tbackground-color: var(--color-main-background);\n\tz-index: 2000;\n\n\ttop: var(--app-navigation-padding);\n\t// Navigation Toggle button width + 2 paddings around\n\tinset-inline-start: calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2);\n\t&--mobile {\n\t\t// There is no NavigationToggle button\n\t\tinset-inline-start: var(--app-navigation-padding);\n\t}\n\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\topacity: 1;\n\t}\n}\n\n</style>\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from './logger.ts'\n\nlet realAppName = 'missing-app-name'\n\ntry {\n\trealAppName = appName\n} catch {\n\tlogger.error('The `@nextcloud/vue` library was used without setting / replacing the `appName`.')\n}\n\nexport const APP_NAME = realAppName\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### General description\n\nThis components provides a wrapper around the main app's content.\n\nSingle-column layouts can just use the default slot. A resizable column\ncan be added by providing content to the named slot `list`.\n\n### CSS variables\nIn the css section some css variables are declared and will be available for\nall the children of the NcAppContent component\n\n### Examples\n\n#### Usage: Single-column content\n```vue\n<template>\n\t<NcAppContent>\n\t\t<h2>Single-column main content</h2>\n\t</NcAppContent>\n</template>\n```\n\n#### Usage: Two resizable columns\n```vue\n<template>\n\t<NcAppContent>\n\t\t<template #list>\n\t\t\t<div>Resizable list content</div>\n\t\t</template>\n\n\t\t<div>Main content</div>\n\t</NcAppContent>\n</template>\n```\n\n#### Overriding Defaults\nThe default, min and max sizes (in percent) of the resizable list column can be overridden.\nThe list size must be between the min and the max width value.\n\n```\n<NcAppContent\n\t:list-size=\"35\"\n\t:list-min-width=\"20\"\n\t:list-max-width=\"45\"\n>...</NcAppContent>\n```\n\n#### Usage: Custom document title\nFor accessibility reasons every document should have a `h1` heading,\nthis is visually hidden, but required for a semantically correct document.\nYou can use your app name or current view for the heading.\n\nAdditionally you can set a custom document title, e.g. to show the current status.\n\n```vue\n<template>\n\t<NcAppContent :pageHeading=\"heading ? 'Heading' : undefined\" :pageTitle=\"title ? 'Title' : undefined\" >\n\t\t<NcCheckboxRadioSwitch type=\"switch\" :checked.sync=\"title\">\n\t\t\tToggle title\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch type=\"switch\" :checked.sync=\"heading\">\n\t\t\tToggle Heading\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcButton @click=\"reset\">Reset</NcButton>\n\t</NcAppContent>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\theading: false,\n\t\t\ttitle: false,\n\t\t}\n\t},\n\tmethods: {\n\t\treset() {\n\t\t\tthis.heading = false\n\t\t\tthis.title = false\n\t\t\tdocument.title = ''\n\t\t},\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<main id=\"app-content-vue\" class=\"app-content no-snapper\" :class=\"{ 'app-content--has-list': hasList }\">\n\t\t<h1 v-if=\"pageHeading\" class=\"hidden-visually\">\n\t\t\t{{ pageHeading }}\n\t\t</h1>\n\n\t\t<template v-if=\"hasList\">\n\t\t\t<!-- Mobile view does not allow resizeable panes -->\n\t\t\t<div\n\t\t\t\tv-if=\"isMobile || layout === 'no-split'\"\n\t\t\t\tclass=\"app-content-wrapper app-content-wrapper--no-split\"\n\t\t\t\t:class=\"{\n\t\t\t\t\t'app-content-wrapper--show-details': showDetails,\n\t\t\t\t\t'app-content-wrapper--show-list': !showDetails,\n\t\t\t\t\t'app-content-wrapper--mobile': isMobile,\n\t\t\t\t}\">\n\t\t\t\t<NcAppContentDetailsToggle v-if=\"showDetails\" @click.stop.prevent=\"hideDetails\" />\n\n\t\t\t\t<div v-show=\"!showDetails\">\n\t\t\t\t\t<slot name=\"list\" />\n\t\t\t\t</div>\n\t\t\t\t<slot v-if=\"showDetails\" />\n\t\t\t</div>\n\t\t\t<div v-else-if=\"layout === 'vertical-split' || layout === 'horizontal-split'\" class=\"app-content-wrapper\">\n\t\t\t\t<Splitpanes\n\t\t\t\t\t:horizontal=\"layout === 'horizontal-split'\"\n\t\t\t\t\tclass=\"default-theme\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'splitpanes--horizontal': layout === 'horizontal-split',\n\t\t\t\t\t\t'splitpanes--vertical': layout === 'vertical-split',\n\t\t\t\t\t}\"\n\t\t\t\t\t:rtl=\"isRtl\"\n\t\t\t\t\t@resized=\"handlePaneResize\">\n\t\t\t\t\t<Pane\n\t\t\t\t\t\tclass=\"splitpanes__pane-list\"\n\t\t\t\t\t\t:size=\"listPaneSize || paneDefaults.list.size\"\n\t\t\t\t\t\t:min-size=\"paneDefaults.list.min\"\n\t\t\t\t\t\t:max-size=\"paneDefaults.list.max\">\n\t\t\t\t\t\t<!-- @slot Provide a list to the app content -->\n\t\t\t\t\t\t<slot name=\"list\" />\n\t\t\t\t\t</Pane>\n\n\t\t\t\t\t<Pane\n\t\t\t\t\t\tclass=\"splitpanes__pane-details\"\n\t\t\t\t\t\t:size=\"detailsPaneSize\"\n\t\t\t\t\t\t:min-size=\"paneDefaults.details.min\"\n\t\t\t\t\t\t:max-size=\"paneDefaults.details.max\">\n\t\t\t\t\t\t<!-- @slot Provide the main content to the app content -->\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</Pane>\n\t\t\t\t</Splitpanes>\n\t\t\t</div>\n\t\t</template>\n\t\t<!-- @slot Provide the main content to the app content -->\n\t\t<slot v-if=\"!hasList\" />\n\t</main>\n</template>\n\n<script>\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { useSwipe } from '@vueuse/core'\nimport { Pane, Splitpanes } from 'splitpanes'\nimport NcAppContentDetailsToggle from './NcAppContentDetailsToggle.vue'\nimport { useIsMobile } from '../../composables/useIsMobile/index.js'\nimport { APP_NAME } from '../../utils/appName.ts'\nimport logger from '../../utils/logger.ts'\nimport { isRtl } from '../../utils/rtl.ts'\n\nimport 'splitpanes/dist/splitpanes.css'\n\nconst browserStorage = getBuilder('nextcloud').persist().build()\nconst instanceName = getCapabilities().theming?.name ?? 'Nextcloud'\nconst activeApp = loadState('core', 'active-app', APP_NAME)\nconst localizedAppName = loadState('core', 'apps', []).find(({ id }) => id === activeApp)?.name ?? APP_NAME\n\n/**\n * App content container to be used for the main content of your app\n *\n */\nexport default {\n\tname: 'NcAppContent',\n\n\tcomponents: {\n\t\tNcAppContentDetailsToggle,\n\t\tPane,\n\t\tSplitpanes,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Allows to disable the control by swipe of the app navigation open state.\n\t\t */\n\t\tdisableSwipe: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Allows you to set the default width of the resizable list in % on vertical-split\n\t\t * or respectively the default height on horizontal-split.\n\t\t *\n\t\t * Must be between `listMinWidth` and `listMaxWidth`.\n\t\t */\n\t\tlistSize: {\n\t\t\ttype: Number,\n\t\t\tdefault: 20,\n\t\t},\n\n\t\t/**\n\t\t * Allows you to set the minimum width of the list column in % on vertical-split\n\t\t * or respectively the minimum height on horizontal-split.\n\t\t */\n\t\tlistMinWidth: {\n\t\t\ttype: Number,\n\t\t\tdefault: 15,\n\t\t},\n\n\t\t/**\n\t\t * Allows you to set the maximum width of the list column in % on vertical-split\n\t\t * or respectively the maximum height on horizontal-split.\n\t\t */\n\t\tlistMaxWidth: {\n\t\t\ttype: Number,\n\t\t\tdefault: 40,\n\t\t},\n\n\t\t/**\n\t\t * Specify the config key for the pane config sizes\n\t\t * Default is the global var appName if you use the webpack-vue-config\n\t\t */\n\t\tpaneConfigKey: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * When in mobile view, only the list or the details are shown.\n\t\t *\n\t\t * If you provide a list, you need to provide a variable\n\t\t * that will be set to true by the user when an element of\n\t\t * the list gets selected. The details will then show a back\n\t\t * arrow to return to the list that will update this prop to false.\n\t\t */\n\t\tshowDetails: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Content layout used when there is a list together with content:\n\t\t * - `vertical-split` - a 2-column layout with list and default content separated vertically\n\t\t * - `no-split` - a single column layout; List is shown when `showDetails` is `false`, otherwise the default slot content is shown with a back button to return to the list.\n\t\t * - 'horizontal-split' - a 2-column layout with list and default content separated horizontally\n\t\t * On mobile screen `no-split` layout is forced.\n\t\t */\n\t\tlayout: {\n\t\t\ttype: String,\n\t\t\tdefault: 'vertical-split',\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['no-split', 'vertical-split', 'horizontal-split'].includes(value)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Specify the `<h1>` page heading\n\t\t */\n\t\tpageHeading: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Allow setting the page's `<title>`\n\t\t *\n\t\t * If a page heading is set it defaults to `{pageHeading} - {appName} - {instanceName}` e.g. `Favorites - Files - MyPersonalCloud`.\n\t\t * When the page heading and the app name is the same only one is used, e.g. `Files - Files - MyPersonalCloud` is shown as `Files - MyPersonalCloud`.\n\t\t * When setting the prop then the following format will be used: `{pageTitle} - {instanceName}`\n\t\t */\n\t\tpageTitle: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'update:showDetails',\n\t\t'resizeList',\n\t],\n\n\tsetup() {\n\t\treturn {\n\t\t\tisMobile: useIsMobile(),\n\t\t\tisRtl,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcontentHeight: 0,\n\t\t\thasList: false,\n\t\t\thasContent: false,\n\t\t\tswiping: {},\n\t\t\tlistPaneSize: this.restorePaneConfig(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tpaneConfigID() {\n\t\t\t// If provided, let's use it\n\t\t\tif (this.paneConfigKey !== '') {\n\t\t\t\treturn `pane-list-size-${this.paneConfigKey}`\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Using the webpack-vue-config, appName is a global variable\n\t\t\t\t// This will throw a ReferenceError when the global variable is missing\n\t\t\t\t// In that case either you provide paneConfigKey or else it fallback\n\t\t\t\t// to a global storage key\n\t\t\t\treturn `pane-list-size-${APP_NAME}`\n\t\t\t} catch {\n\t\t\t\tlogger.info('[NcAppContent]: falling back to global nextcloud pane config')\n\t\t\t\treturn 'pane-list-size-nextcloud'\n\t\t\t}\n\t\t},\n\n\t\tdetailsPaneSize() {\n\t\t\tif (this.listPaneSize) {\n\t\t\t\treturn 100 - this.listPaneSize\n\t\t\t}\n\t\t\treturn this.paneDefaults.details.size\n\t\t},\n\n\t\tpaneDefaults() {\n\t\t\treturn {\n\t\t\t\tlist: {\n\t\t\t\t\tsize: this.listSize,\n\t\t\t\t\tmin: this.listMinWidth,\n\t\t\t\t\tmax: this.listMaxWidth,\n\t\t\t\t},\n\n\t\t\t\t// set the inverse values of the details column\n\t\t\t\t// based on the provided (or default) values of the list column\n\t\t\t\tdetails: {\n\t\t\t\t\tsize: 100 - this.listSize,\n\t\t\t\t\tmin: 100 - this.listMaxWidth,\n\t\t\t\t\tmax: 100 - this.listMinWidth,\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\t\trealPageTitle() {\n\t\t\tconst entries = new Set()\n\t\t\tif (this.pageTitle) {\n\t\t\t\t// when page title is set we only use that\n\t\t\t\t// we still split to remove duplicated instanceName\n\t\t\t\tfor (const part of this.pageTitle.split(' - ')) {\n\t\t\t\t\tentries.add(part)\n\t\t\t\t}\n\t\t\t} else if (this.pageHeading) {\n\t\t\t\t// when the page heading is provided but not the title\n\t\t\t\t// then we split to remove duplicates\n\t\t\t\t// but also add the localized app name\n\t\t\t\tfor (const part of this.pageHeading.split(' - ')) {\n\t\t\t\t\tentries.add(part)\n\t\t\t\t}\n\n\t\t\t\tif (entries.size > 0) {\n\t\t\t\t\tentries.add(localizedAppName)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tentries.add(instanceName)\n\t\t\treturn [...entries.values()].join(' - ')\n\t\t},\n\t},\n\n\twatch: {\n\t\trealPageTitle: {\n\t\t\timmediate: true,\n\t\t\thandler() {\n\t\t\t\tif (this.realPageTitle !== null) {\n\t\t\t\t\tdocument.title = this.realPageTitle\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tupdated() {\n\t\tthis.checkSlots()\n\t},\n\n\tmounted() {\n\t\tif (!this.disableSwipe) {\n\t\t\tthis.swiping = useSwipe(this.$el, {\n\t\t\t\tonSwipeEnd: this.handleSwipe,\n\t\t\t})\n\t\t}\n\n\t\tthis.checkSlots()\n\t\tthis.restorePaneConfig()\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * handle the swipe event\n\t\t *\n\t\t * @param {TouchEvent} e The touch event\n\t\t * @param {import('@vueuse/core').SwipeDirection} direction The swipe direction of the event\n\t\t */\n\t\thandleSwipe(e, direction) {\n\t\t\tconst minSwipeX = 70\n\t\t\tconst touchZone = 300\n\t\t\tif (Math.abs(this.swiping.lengthX) > minSwipeX) {\n\t\t\t\tif (this.swiping.coordsStart.x < (touchZone / 2) && direction === 'right') {\n\t\t\t\t\temit('toggle-navigation', {\n\t\t\t\t\t\topen: true,\n\t\t\t\t\t})\n\t\t\t\t} else if (this.swiping.coordsStart.x < touchZone * 1.5 && direction === 'left') {\n\t\t\t\t\temit('toggle-navigation', {\n\t\t\t\t\t\topen: false,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thandlePaneResize(event) {\n\t\t\tconst listPaneSize = parseInt(event.panes[0].size, 10)\n\t\t\tbrowserStorage.setItem(this.paneConfigID, JSON.stringify(listPaneSize))\n\t\t\tthis.listPaneSize = listPaneSize\n\t\t\t/**\n\t\t\t * Emitted when the list pane is resized by the user\n\t\t\t */\n\t\t\tthis.$emit('resizeList', { size: listPaneSize })\n\t\t\tlogger.debug('[NcAppContent] pane config', { listPaneSize })\n\t\t},\n\n\t\t// $slots is not reactive, we need to update this manually\n\t\tcheckSlots() {\n\t\t\tthis.hasList = !!this.$slots.list\n\t\t\tthis.hasContent = !!this.$slots.default\n\t\t},\n\n\t\t// browserStorage is not reactive, we need to update this manually\n\t\trestorePaneConfig() {\n\t\t\tconst listPaneSize = parseInt(browserStorage.getItem(this.paneConfigID), 10)\n\t\t\tif (!isNaN(listPaneSize) && listPaneSize !== this.listPaneSize) {\n\t\t\t\tlogger.debug('[NcAppContent] pane config', { listPaneSize })\n\t\t\t\tthis.listPaneSize = listPaneSize\n\t\t\t\treturn listPaneSize\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * The user clicked the back arrow from the details view\n\t\t */\n\t\thideDetails() {\n\t\t\tthis.$emit('update:showDetails', false)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.app-content {\n\tposition: initial;\n\tz-index: 1000;\n\tflex-basis: 100vw;\n\theight: 100%;\n\t// Overriding server styles TODO: cleanup!\n\tmargin: 0 !important;\n\tbackground-color: var(--color-main-background);\n\tmin-width: 0;\n\n\t&:not(.app-content--has-list) {\n\t\toverflow: auto;\n\t}\n}\n\n.app-content-wrapper {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\n\n// Mobile list/details handling\n.app-content-wrapper--no-split {\n\t&.app-content-wrapper--show-list :deep() {\n\t\t.app-content-list {\n\t\t\tdisplay: flex;\n\t\t}\n\t\t.app-content-details {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\t&.app-content-wrapper--show-details :deep() {\n\t\t.app-content-list {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.app-content-details {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n\n:deep(.splitpanes.default-theme) {\n\t.app-content-list {\n\t\tmax-width: none;\n\t\t/* Thin scrollbar is hard to catch on resizable columns */\n\t\tscrollbar-width: auto;\n\t}\n\n\t.splitpanes__pane {\n\t\tbackground-color: transparent;\n\t\ttransition: none;\n\n\t\t&-list {\n\t\t\tmin-width: 300px;\n\t\t\tposition: sticky;\n\n\t\t\t@media only screen and (width < $breakpoint-mobile) {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\n\t\t&-details {\n\t\t\toverflow-y: auto;\n\n\t\t\t@media only screen and (width < $breakpoint-mobile) {\n\t\t\t\tmin-width: 100%;\n\t\t\t}\n\t\t}\n\t}\n\n\t.splitpanes__splitter {\n\t\tbackground-color: var(--color-main-background);\n\t\t&::before, &::after {\n\t\t\tbackground-color: var(--color-border);\n\t\t}\n\t}\n\n\t&.splitpanes--vertical .splitpanes__splitter {\n\t\tborder-inline-start: 1px solid var(--color-border);\n\t}\n\n\t&.splitpanes--horizontal .splitpanes__splitter {\n\t\tborder-top: 1px solid var(--color-border);\n\t}\n}\n\n.app-content-wrapper--show-list {\n\t:deep(.app-content-list) {\n\t\tmax-width: none;\n\t}\n}\n</style>\n"],"names":["_createBlock","_unref","_normalizeClass","_createVNode","_createElementBlock","_toDisplayString","_Fragment","_createElementVNode","_renderSlot","_openBlock"],"mappings":";;;;;;;;;;;;;;;;;;;;AAcA,UAAM,WAAW,YAAA;AACjB,UAAM,UAAU,2BAA2B,EAAE,WAAW,MAAM;AAE9D,oBAAgB,MAAM;AACrB,UAAI,SAAS,OAAO;AACnB,kCAA0B,KAAK;AAAA,MAChC;AAAA,IACD,CAAC;AAOD,aAAS,0BAA0B,OAAgB,MAAM;AACxD,YAAM,sBAAsB,SAAS,cAA2B,wCAAwC;AACxG,UAAI,qBAAqB;AACxB,4BAAoB,MAAM,UAAU,OAAO,SAAS;AAGpD,YAAI,SAAS,MAAM;AAClB,eAAK,qBAAqB,EAAE,MAAM,MAAA,CAAO;AAAA,QAC1C;AAAA,MACD;AAAA,IACD;;0BAICA,YASWC,MAAA,QAAA,GAAA;AAAA,QART,cAAYA,MAAA,CAAA,EAAC,qBAAA;AAAA,QACd,OAAKC,eAAA,CAAC,sBAAoB,EAAA,8BACcD,MAAA,QAAA,EAAA,CAAQ,CAAA;AAAA,QAC/C,OAAOA,MAAA,CAAA,EAAC,qBAAA;AAAA,QACT,SAAQ;AAAA,MAAA;QACG,cACV,MAAsD;AAAA,UAAtDE,YAAsDF,MAAA,gBAAA,GAAA;AAAA,YAApC,aAAA;AAAA,YAAa,MAAMA,MAAA,aAAA;AAAA,UAAA;;;;;;;;AC1CxC,IAAI,cAAc;AAElB,IAAI;AACH,gBAAc;AACf,QAAQ;AACP,SAAO,MAAM,kFAAkF;AAChG;AAEO,MAAM,WAAW;ACuJxB,MAAM,iBAAiB,WAAW,WAAW,EAAE,QAAO,EAAG,MAAK;AAC9D,MAAM,eAAe,gBAAe,EAAG,SAAS,QAAQ;AACxD,MAAM,YAAY,UAAU,QAAQ,cAAc,QAAQ;AAC1D,MAAM,mBAAmB,UAAU,QAAQ,QAAQ,CAAA,CAAE,EAAE,KAAK,CAAC,EAAE,SAAS,OAAO,SAAS,GAAG,QAAQ;AAMnG,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EAEN,YAAY;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA;EAGD,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,cAAc;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;IASV,UAAU;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;;;;;IAOV,cAAc;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;;;;;IAOV,cAAc;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;;;;;IAOV,eAAe;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;;;IAWV,aAAa;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;;IAUV,QAAQ;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,OAAO;AAChB,eAAO,CAAC,YAAY,kBAAkB,kBAAkB,EAAE,SAAS,KAAK;AAAA,MACzE;AAAA;;;;IAMD,aAAa;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;;IAUV,WAAW;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;;EAIX,OAAO;AAAA,IACN;AAAA,IACA;AAAA;EAGD,QAAQ;AACP,WAAO;AAAA,MACN,UAAU,YAAW;AAAA,MACrB;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AACN,WAAO;AAAA,MACN,eAAe;AAAA,MACf,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS,CAAA;AAAA,MACT,cAAc,KAAK,kBAAiB;AAAA,IACrC;AAAA,EACD;AAAA,EAEA,UAAU;AAAA,IACT,eAAe;AAEd,UAAI,KAAK,kBAAkB,IAAI;AAC9B,eAAO,kBAAkB,KAAK,aAAa;AAAA,MAC5C;AAEA,UAAI;AAKH,eAAO,kBAAkB,QAAQ;AAAA,MAClC,QAAQ;AACP,eAAO,KAAK,8DAA8D;AAC1E,eAAO;AAAA,MACR;AAAA,IACD;AAAA,IAEA,kBAAkB;AACjB,UAAI,KAAK,cAAc;AACtB,eAAO,MAAM,KAAK;AAAA,MACnB;AACA,aAAO,KAAK,aAAa,QAAQ;AAAA,IAClC;AAAA,IAEA,eAAe;AACd,aAAO;AAAA,QACN,MAAM;AAAA,UACL,MAAM,KAAK;AAAA,UACX,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA;;;QAKX,SAAS;AAAA,UACR,MAAM,MAAM,KAAK;AAAA,UACjB,KAAK,MAAM,KAAK;AAAA,UAChB,KAAK,MAAM,KAAK;AAAA;MAElB;AAAA,IACD;AAAA,IAEA,gBAAgB;AACf,YAAM,UAAU,oBAAI,IAAG;AACvB,UAAI,KAAK,WAAW;AAGnB,mBAAW,QAAQ,KAAK,UAAU,MAAM,KAAK,GAAG;AAC/C,kBAAQ,IAAI,IAAI;AAAA,QACjB;AAAA,MACD,WAAW,KAAK,aAAa;AAI5B,mBAAW,QAAQ,KAAK,YAAY,MAAM,KAAK,GAAG;AACjD,kBAAQ,IAAI,IAAI;AAAA,QACjB;AAEA,YAAI,QAAQ,OAAO,GAAG;AACrB,kBAAQ,IAAI,gBAAgB;AAAA,QAC7B;AAAA,MACD,OAAO;AACN,eAAO;AAAA,MACR;AAEA,cAAQ,IAAI,YAAY;AACxB,aAAO,CAAC,GAAG,QAAQ,OAAM,CAAE,EAAE,KAAK,KAAK;AAAA,IACxC;AAAA;EAGD,OAAO;AAAA,IACN,eAAe;AAAA,MACd,WAAW;AAAA,MACX,UAAU;AACT,YAAI,KAAK,kBAAkB,MAAM;AAChC,mBAAS,QAAQ,KAAK;AAAA,QACvB;AAAA,MACD;AAAA;;EAIF,UAAU;AACT,SAAK,WAAU;AAAA,EAChB;AAAA,EAEA,UAAU;AACT,QAAI,CAAC,KAAK,cAAc;AACvB,WAAK,UAAU,SAAS,KAAK,KAAK;AAAA,QACjC,YAAY,KAAK;AAAA,OACjB;AAAA,IACF;AAEA,SAAK,WAAU;AACf,SAAK,kBAAiB;AAAA,EACvB;AAAA,EAEA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOR,YAAY,GAAG,WAAW;AACzB,YAAM,YAAY;AAClB,YAAM,YAAY;AAClB,UAAI,KAAK,IAAI,KAAK,QAAQ,OAAO,IAAI,WAAW;AAC/C,YAAI,KAAK,QAAQ,YAAY,IAAK,YAAY,KAAM,cAAc,SAAS;AAC1E,eAAK,qBAAqB;AAAA,YACzB,MAAM;AAAA,WACN;AAAA,QACF,WAAW,KAAK,QAAQ,YAAY,IAAI,YAAY,OAAO,cAAc,QAAQ;AAChF,eAAK,qBAAqB;AAAA,YACzB,MAAM;AAAA,WACN;AAAA,QACF;AAAA,MACD;AAAA,IACD;AAAA,IAEA,iBAAiB,OAAO;AACvB,YAAM,eAAe,SAAS,MAAM,MAAM,CAAC,EAAE,MAAM,EAAE;AACrD,qBAAe,QAAQ,KAAK,cAAc,KAAK,UAAU,YAAY,CAAC;AACtE,WAAK,eAAe;AAIpB,WAAK,MAAM,cAAc,EAAE,MAAM,cAAc;AAC/C,aAAO,MAAM,8BAA8B,EAAE,aAAW,CAAG;AAAA,IAC5D;AAAA;AAAA,IAGA,aAAa;AACZ,WAAK,UAAU,CAAC,CAAC,KAAK,OAAO;AAC7B,WAAK,aAAa,CAAC,CAAC,KAAK,OAAO;AAAA,IACjC;AAAA;AAAA,IAGA,oBAAoB;AACnB,YAAM,eAAe,SAAS,eAAe,QAAQ,KAAK,YAAY,GAAG,EAAE;AAC3E,UAAI,CAAC,MAAM,YAAY,KAAK,iBAAiB,KAAK,cAAc;AAC/D,eAAO,MAAM,8BAA8B,EAAE,aAAW,CAAG;AAC3D,aAAK,eAAe;AACpB,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA;AAAA;AAAA,IAKA,cAAc;AACb,WAAK,MAAM,sBAAsB,KAAK;AAAA,IACvC;AAAA;AAEF;;;EA1WyB,OAAM;;;;EAqBkD,OAAM;;;;;;sBAtBtFG,mBAsDO,QAAA;AAAA,IAtDD,IAAG;AAAA,IAAkB,OAAKF,eAAA,CAAC,0BAAwB,EAAA,yBAAoC,MAAA,SAAO,CAAA;AAAA;IACzF,OAAA,4BAAVE,mBAEK,MAFL,YAEKC,gBADD,OAAA,WAAW,GAAA,CAAA;IAGC,MAAA,wBAAhBD,mBA8CWE,UAAA,EAAA,KAAA,EAAA,GAAA;AAAA,MA3CH,OAAA,YAAY,OAAA,WAAM,2BADzBF,mBAcM,OAAA;AAAA;QAZL,uBAAM,qDAAmD;AAAA,+CACL,OAAA;AAAA,6CAAqD,OAAA;AAAA,yCAAiD,OAAA;AAAA;;QAKzH,OAAA,4BAAjCJ,YAAkF,sCAAA;AAAA;UAAnC,uBAAoB,SAAA,aAAW,CAAA,QAAA,SAAA,CAAA;AAAA;uBAE9EO,mBAEM,OAAA,MAAA;AAAA,UADLC,WAAoB,KAAA,QAAA,QAAA,CAAA,GAAA,QAAA,IAAA;AAAA;mBADP,OAAA,WAAW;AAAA;QAGb,OAAA,cAAZA,WAA2B,KAAA,QAAA,WAAA,EAAA,KAAA,EAAA,GAAA,QAAA,IAAA;eAEZ,OAAA,+BAA+B,OAAA,WAAM,sBAArDC,aAAAL,mBA4BM,OA5BN,YA4BM;AAAA,QA3BLD,YA0Ba,uBAAA;AAAA,UAzBX,YAAY,OAAA,WAAM;AAAA,UACnB,uBAAM,iBAAe;AAAA,sCACqB,OAAA,WAAM;AAAA,oCAAuD,OAAA,WAAM;AAAA;UAI5G,KAAK,OAAA;AAAA,UACL,WAAS,SAAA;AAAA;2BACV,MAOO;AAAA,YAPPA,YAOO,iBAAA;AAAA,cANN,OAAM;AAAA,cACL,MAAM,MAAA,gBAAgB,sBAAa,KAAK;AAAA,cACxC,YAAU,SAAA,aAAa,KAAK;AAAA,cAC5B,YAAU,SAAA,aAAa,KAAK;AAAA;+BAE7B,MAAoB;AAAA,gBAApBK,WAAoB,KAAA,QAAA,QAAA,CAAA,GAAA,QAAA,IAAA;AAAA;;;YAGrBL,YAOO,iBAAA;AAAA,cANN,OAAM;AAAA,cACL,MAAM,SAAA;AAAA,cACN,YAAU,SAAA,aAAa,QAAQ;AAAA,cAC/B,YAAU,SAAA,aAAa,QAAQ;AAAA;+BAEhC,MAAQ;AAAA,gBAARK,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,QAAA,IAAA;AAAA;;;;;;;;KAMC,MAAA,UAAbA,WAAwB,KAAA,QAAA,WAAA,EAAA,KAAA,EAAA,GAAA,QAAA,IAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcAppSettingsDialog-CAVz10A2.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, 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\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\nconst slots = defineSlots<{\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 * 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 icon - Optional icon component\n */\nfunction registerSection(id: string, name: string, 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\tconst newSections = [...registeredSections.value, { id, name, icon }]\n\t// Sort sections by order in slots\n\tregisteredSections.value = newSections.sort(({ id: idA }, { id: idB }) => {\n\t\tconst indexOf = (id) => slots.default?.().findIndex((vnode: VNode) => vnode?.props?.id === id) ?? -1\n\t\treturn indexOf(idA) - indexOf(idB)\n\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</docs>\n"],"names":["_useModel","_useSlots","id","_createBlock","additionalTrapElements","container","_unref","name","_createElementVNode","_renderSlot","_withCtx","_openBlock","_createElementBlock","_Fragment","_renderList","_withModifiers","_withKeys","NcVNodes","_toDisplayString"],"mappings":"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"}
|