@nextcloud/vue 8.35.0 → 8.35.2
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 +26 -2
- package/dist/Components/NcActionButton.cjs +1 -1
- package/dist/Components/NcActionButton.mjs +1 -1
- package/dist/Components/NcActionButtonGroup.cjs +1 -1
- package/dist/Components/NcActionButtonGroup.mjs +1 -1
- package/dist/Components/NcActionInput.cjs +1 -1
- package/dist/Components/NcActionInput.mjs +1 -1
- package/dist/Components/NcActionTextEditable.cjs +1 -1
- package/dist/Components/NcActionTextEditable.mjs +1 -1
- package/dist/Components/NcActions.cjs +1 -1
- package/dist/Components/NcActions.mjs +1 -1
- package/dist/Components/NcAppContent.cjs +1 -1
- package/dist/Components/NcAppContent.mjs +1 -1
- package/dist/Components/NcAppNavigation.cjs +1 -1
- package/dist/Components/NcAppNavigation.mjs +1 -1
- package/dist/Components/NcAppNavigationCaption.cjs +1 -1
- package/dist/Components/NcAppNavigationCaption.mjs +1 -1
- package/dist/Components/NcAppNavigationItem.cjs +1 -1
- package/dist/Components/NcAppNavigationItem.mjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
- package/dist/Components/NcAppNavigationSearch.cjs +1 -1
- package/dist/Components/NcAppNavigationSearch.mjs +1 -1
- package/dist/Components/NcAppNavigationSettings.cjs +1 -1
- package/dist/Components/NcAppNavigationSettings.mjs +1 -1
- package/dist/Components/NcAppNavigationToggle.cjs +1 -1
- package/dist/Components/NcAppNavigationToggle.mjs +1 -1
- package/dist/Components/NcAppSettingsDialog.cjs +1 -1
- package/dist/Components/NcAppSettingsDialog.mjs +1 -1
- package/dist/Components/NcAppSettingsSection.cjs +1 -1
- package/dist/Components/NcAppSettingsSection.mjs +1 -1
- package/dist/Components/NcAppSettingsSectionShortcuts.cjs +1 -1
- package/dist/Components/NcAppSettingsSectionShortcuts.mjs +1 -1
- package/dist/Components/NcAppSettingsShortcutsSection.cjs +1 -1
- package/dist/Components/NcAppSettingsShortcutsSection.mjs +1 -1
- package/dist/Components/NcAppSidebar.cjs +1 -1
- package/dist/Components/NcAppSidebar.mjs +1 -1
- package/dist/Components/NcAssistantButton.cjs +1 -1
- package/dist/Components/NcAssistantButton.mjs +1 -1
- package/dist/Components/NcAssistantIcon.cjs +1 -1
- package/dist/Components/NcAssistantIcon.mjs +1 -1
- package/dist/Components/NcAvatar.cjs +1 -1
- package/dist/Components/NcAvatar.mjs +1 -1
- package/dist/Components/NcBreadcrumb.cjs +1 -1
- package/dist/Components/NcBreadcrumb.mjs +1 -1
- package/dist/Components/NcBreadcrumbs.cjs +1 -1
- package/dist/Components/NcBreadcrumbs.mjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
- package/dist/Components/NcChip.cjs +4 -4
- package/dist/Components/NcChip.mjs +4 -4
- package/dist/Components/NcCollectionList.cjs +1 -1
- package/dist/Components/NcCollectionList.mjs +1 -1
- package/dist/Components/NcColorPicker.cjs +1 -1
- package/dist/Components/NcColorPicker.mjs +1 -1
- package/dist/Components/NcContent.cjs +1 -1
- package/dist/Components/NcContent.mjs +1 -1
- package/dist/Components/NcDashboardWidget.cjs +1 -1
- package/dist/Components/NcDashboardWidget.mjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
- package/dist/Components/NcDateTimePicker.cjs +5 -5
- package/dist/Components/NcDateTimePicker.mjs +5 -5
- package/dist/Components/NcDateTimePickerNative.cjs +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +1 -1
- package/dist/Components/NcDialog.cjs +1 -1
- package/dist/Components/NcDialog.mjs +1 -1
- package/dist/Components/NcDialogButton.cjs +1 -1
- package/dist/Components/NcDialogButton.mjs +1 -1
- package/dist/Components/NcEmojiPicker.cjs +1 -1
- package/dist/Components/NcEmojiPicker.mjs +1 -1
- package/dist/Components/NcFormBox.cjs +1 -1
- package/dist/Components/NcFormBox.mjs +1 -1
- package/dist/Components/NcFormBoxButton.cjs +1 -1
- package/dist/Components/NcFormBoxButton.mjs +1 -1
- package/dist/Components/NcFormBoxCopyButton.cjs +1 -1
- package/dist/Components/NcFormBoxCopyButton.mjs +1 -1
- package/dist/Components/NcFormBoxSwitch.cjs +1 -1
- package/dist/Components/NcFormBoxSwitch.mjs +1 -1
- package/dist/Components/NcHotkey.cjs +1 -1
- package/dist/Components/NcHotkey.mjs +1 -1
- package/dist/Components/NcHotkeyList.cjs +1 -1
- package/dist/Components/NcHotkeyList.mjs +1 -1
- package/dist/Components/NcKbd.cjs +1 -1
- package/dist/Components/NcKbd.mjs +1 -1
- package/dist/Components/NcListItem.cjs +1 -1
- package/dist/Components/NcListItem.mjs +1 -1
- package/dist/Components/NcListItemIcon.cjs +1 -1
- package/dist/Components/NcListItemIcon.mjs +1 -1
- package/dist/Components/NcModal.cjs +7 -7
- package/dist/Components/NcModal.cjs.map +1 -1
- package/dist/Components/NcModal.mjs +7 -7
- package/dist/Components/NcModal.mjs.map +1 -1
- package/dist/Components/NcPasswordField.cjs +1 -1
- package/dist/Components/NcPasswordField.mjs +1 -1
- package/dist/Components/NcPopover.cjs +1 -1
- package/dist/Components/NcPopover.mjs +1 -1
- package/dist/Components/NcRadioGroup.cjs +1 -1
- package/dist/Components/NcRadioGroup.mjs +1 -1
- package/dist/Components/NcRadioGroupButton.cjs +1 -1
- package/dist/Components/NcRadioGroupButton.mjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
- package/dist/Components/NcRichContenteditable.cjs +1 -1
- package/dist/Components/NcRichContenteditable.mjs +1 -1
- package/dist/Components/NcRichText.cjs +2 -2
- package/dist/Components/NcRichText.mjs +3 -3
- package/dist/Components/NcSelect.cjs +1 -1
- package/dist/Components/NcSelect.mjs +1 -1
- package/dist/Components/NcSelectTags.cjs +1 -1
- package/dist/Components/NcSelectTags.mjs +1 -1
- package/dist/Components/NcSelectUsers.cjs +1 -1
- package/dist/Components/NcSelectUsers.mjs +1 -1
- package/dist/Components/NcSettingsInputText.cjs +1 -1
- package/dist/Components/NcSettingsInputText.mjs +1 -1
- package/dist/Components/NcSettingsSection.cjs +1 -1
- package/dist/Components/NcSettingsSection.mjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
- package/dist/Components/NcTextField.cjs +1 -1
- package/dist/Components/NcTextField.mjs +1 -1
- package/dist/Components/NcThemeProvider.cjs +1 -1
- package/dist/Components/NcThemeProvider.mjs +1 -1
- package/dist/Components/NcTimezonePicker.cjs +1 -1
- package/dist/Components/NcTimezonePicker.mjs +1 -1
- package/dist/Components/NcUserBubble.cjs +1 -1
- package/dist/Components/NcUserBubble.mjs +1 -1
- package/dist/Components/NcUserStatusIcon.cjs +1 -1
- package/dist/Components/NcUserStatusIcon.mjs +1 -1
- package/dist/Composables/useFormatDateTime.cjs +1 -1
- package/dist/Composables/useFormatDateTime.mjs +1 -1
- package/dist/Composables/useIsDarkTheme.cjs +1 -1
- package/dist/Composables/useIsDarkTheme.mjs +1 -1
- package/dist/Functions/reference.cjs +1 -1
- package/dist/Functions/reference.mjs +1 -1
- package/dist/Functions/usernameToColor.cjs +1 -1
- package/dist/Functions/usernameToColor.mjs +1 -1
- package/dist/assets/{NcActionInput-BvPYSqDP.css → NcActionInput-B-c5cOfM.css} +65 -65
- package/dist/assets/{NcCheckboxRadioSwitch-BcHKt-lf.css → NcCheckboxRadioSwitch-BACLOhMO.css} +13 -12
- package/dist/assets/{NcDateTimePicker-DzPH7x0i.css → NcDateTimePicker-DyG-TczL.css} +8 -8
- package/dist/assets/{NcFormBoxSwitch-BmyNQCbA.css → NcFormBoxSwitch-DScgbxtv.css} +2 -8
- package/dist/assets/NcIconToggleSwitch-Dr-tC5Ic.css +30 -0
- package/dist/assets/{NcModal-4ZPVUmG2.css → NcModal-CfHpabcF.css} +65 -65
- package/dist/chunks/{NcActionButton-BS9Mv3XD.cjs → NcActionButton-jtEEPXw2.cjs} +2 -2
- package/dist/chunks/{NcActionButton-BS9Mv3XD.cjs.map → NcActionButton-jtEEPXw2.cjs.map} +1 -1
- package/dist/chunks/{NcActionButton-CECxOkhK.mjs → NcActionButton-w5F9kCHW.mjs} +2 -2
- package/dist/chunks/{NcActionButton-CECxOkhK.mjs.map → NcActionButton-w5F9kCHW.mjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-D_ldp8Lw.mjs → NcActionButtonGroup-Dl_0bIqn.mjs} +2 -2
- package/dist/chunks/{NcActionButtonGroup-D_ldp8Lw.mjs.map → NcActionButtonGroup-Dl_0bIqn.mjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-CbKrDPie.cjs → NcActionButtonGroup-E-6SoAHx.cjs} +2 -2
- package/dist/chunks/{NcActionButtonGroup-CbKrDPie.cjs.map → NcActionButtonGroup-E-6SoAHx.cjs.map} +1 -1
- package/dist/chunks/{NcActionInput-Cd7bhV5-.cjs → NcActionInput-CvTePip6.cjs} +7 -7
- package/dist/chunks/NcActionInput-CvTePip6.cjs.map +1 -0
- package/dist/chunks/{NcActionInput-CB9jcc0_.mjs → NcActionInput-JVtIXzyo.mjs} +7 -7
- package/dist/chunks/NcActionInput-JVtIXzyo.mjs.map +1 -0
- package/dist/chunks/{NcActionTextEditable-D-peY-RA.cjs → NcActionTextEditable-CDkdl0jj.cjs} +2 -2
- package/dist/chunks/{NcActionTextEditable-D-peY-RA.cjs.map → NcActionTextEditable-CDkdl0jj.cjs.map} +1 -1
- package/dist/chunks/{NcActionTextEditable-CNEW3Fav.mjs → NcActionTextEditable-CfhlP5-E.mjs} +2 -2
- package/dist/chunks/{NcActionTextEditable-CNEW3Fav.mjs.map → NcActionTextEditable-CfhlP5-E.mjs.map} +1 -1
- package/dist/chunks/{NcActions-C-CwY6XQ.mjs → NcActions-DXfOYf3w.mjs} +3 -3
- package/dist/chunks/{NcActions-C-CwY6XQ.mjs.map → NcActions-DXfOYf3w.mjs.map} +1 -1
- package/dist/chunks/{NcActions-S-0Ec5lH.cjs → NcActions-DhEGso92.cjs} +3 -3
- package/dist/chunks/{NcActions-S-0Ec5lH.cjs.map → NcActions-DhEGso92.cjs.map} +1 -1
- package/dist/chunks/{NcAppContent-BvgsOP0K.mjs → NcAppContent-D-MzdCDi.mjs} +2 -2
- package/dist/chunks/{NcAppContent-BvgsOP0K.mjs.map → NcAppContent-D-MzdCDi.mjs.map} +1 -1
- package/dist/chunks/{NcAppContent-CMntmSFj.cjs → NcAppContent-cKOp687H.cjs} +2 -2
- package/dist/chunks/{NcAppContent-CMntmSFj.cjs.map → NcAppContent-cKOp687H.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigation-DgekTp_z.mjs → NcAppNavigation-BGc7ks7G.mjs} +2 -2
- package/dist/chunks/{NcAppNavigation-DgekTp_z.mjs.map → NcAppNavigation-BGc7ks7G.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigation-BcFTYsgM.cjs → NcAppNavigation-Ce5BoTSG.cjs} +2 -2
- package/dist/chunks/{NcAppNavigation-BcFTYsgM.cjs.map → NcAppNavigation-Ce5BoTSG.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-1-KiRt-N.cjs → NcAppNavigationCaption-C8SUVqGR.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationCaption-1-KiRt-N.cjs.map → NcAppNavigationCaption-C8SUVqGR.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-D7mH8K7B.mjs → NcAppNavigationCaption-oRJEZSTQ.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationCaption-D7mH8K7B.mjs.map → NcAppNavigationCaption-oRJEZSTQ.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-CkAgsU6p.cjs → NcAppNavigationItem-DyMBscJd.cjs} +5 -5
- package/dist/chunks/{NcAppNavigationItem-CkAgsU6p.cjs.map → NcAppNavigationItem-DyMBscJd.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-B6YKr1n2.mjs → NcAppNavigationItem-zOxlduFj.mjs} +5 -5
- package/dist/chunks/{NcAppNavigationItem-B6YKr1n2.mjs.map → NcAppNavigationItem-zOxlduFj.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-D7dxbu-1.cjs → NcAppNavigationNewItem-BSsLh8nj.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationNewItem-D7dxbu-1.cjs.map → NcAppNavigationNewItem-BSsLh8nj.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-C96AER1b.mjs → NcAppNavigationNewItem-D7Pn6vob.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationNewItem-C96AER1b.mjs.map → NcAppNavigationNewItem-D7Pn6vob.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSearch-CuqE2exX.mjs → NcAppNavigationSearch-BgivVWlR.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationSearch-CuqE2exX.mjs.map → NcAppNavigationSearch-BgivVWlR.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSearch-C9dLgU2t.cjs → NcAppNavigationSearch-DC2ybadu.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationSearch-C9dLgU2t.cjs.map → NcAppNavigationSearch-DC2ybadu.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-Ba8OcJxl.mjs → NcAppNavigationSettings-D5-V4TIs.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationSettings-Ba8OcJxl.mjs.map → NcAppNavigationSettings-D5-V4TIs.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-C7d5dhkD.cjs → NcAppNavigationSettings-J1GIZ9QS.cjs} +3 -3
- package/dist/chunks/{NcAppNavigationSettings-C7d5dhkD.cjs.map → NcAppNavigationSettings-J1GIZ9QS.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-Ck-d5mHe.cjs → NcAppNavigationToggle-C0Kc4R9v.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationToggle-Ck-d5mHe.cjs.map → NcAppNavigationToggle-C0Kc4R9v.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-B0N05AxP.mjs → NcAppNavigationToggle-phm-tyID.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationToggle-B0N05AxP.mjs.map → NcAppNavigationToggle-phm-tyID.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-fOCnfyD-.cjs → NcAppSettingsDialog-BSxqwcZ4.cjs} +5 -5
- package/dist/chunks/{NcAppSettingsDialog-fOCnfyD-.cjs.map → NcAppSettingsDialog-BSxqwcZ4.cjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-PRGGDKCy.mjs → NcAppSettingsDialog-CjnPlzCs.mjs} +5 -5
- package/dist/chunks/{NcAppSettingsDialog-PRGGDKCy.mjs.map → NcAppSettingsDialog-CjnPlzCs.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsSection-Cq1VIzMR.mjs → NcAppSettingsSection-BjQllLEA.mjs} +2 -2
- package/dist/chunks/{NcAppSettingsSection-Cq1VIzMR.mjs.map → NcAppSettingsSection-BjQllLEA.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsSection-Q5PB51ht.cjs → NcAppSettingsSection-CDLQ-AjK.cjs} +2 -2
- package/dist/chunks/{NcAppSettingsSection-Q5PB51ht.cjs.map → NcAppSettingsSection-CDLQ-AjK.cjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsShortcutsSection-DI5YBdYf.cjs → NcAppSettingsShortcutsSection-B0WBkOo9.cjs} +4 -4
- package/dist/chunks/NcAppSettingsShortcutsSection-B0WBkOo9.cjs.map +1 -0
- package/dist/chunks/{NcAppSettingsShortcutsSection-BGMDhIXI.mjs → NcAppSettingsShortcutsSection-DzjowBeE.mjs} +4 -4
- package/dist/chunks/NcAppSettingsShortcutsSection-DzjowBeE.mjs.map +1 -0
- package/dist/chunks/{NcAppSidebar-BA8rmpOk.cjs → NcAppSidebar-BDz7d7NJ.cjs} +5 -5
- package/dist/chunks/{NcAppSidebar-BA8rmpOk.cjs.map → NcAppSidebar-BDz7d7NJ.cjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-1Q4AznUI.mjs → NcAppSidebar-CdSeLJD4.mjs} +5 -5
- package/dist/chunks/{NcAppSidebar-1Q4AznUI.mjs.map → NcAppSidebar-CdSeLJD4.mjs.map} +1 -1
- package/dist/chunks/{NcAssistantButton-BPXX2mz6.mjs → NcAssistantButton-CjP2aanh.mjs} +3 -3
- package/dist/chunks/{NcAssistantButton-BPXX2mz6.mjs.map → NcAssistantButton-CjP2aanh.mjs.map} +1 -1
- package/dist/chunks/{NcAssistantButton-CAJQBxgk.cjs → NcAssistantButton-DQSwGT_7.cjs} +3 -3
- package/dist/chunks/{NcAssistantButton-CAJQBxgk.cjs.map → NcAssistantButton-DQSwGT_7.cjs.map} +1 -1
- package/dist/chunks/{NcAssistantIcon-jHDGZ_Bd.cjs → NcAssistantIcon-Dn_unLGj.cjs} +2 -2
- package/dist/chunks/{NcAssistantIcon-jHDGZ_Bd.cjs.map → NcAssistantIcon-Dn_unLGj.cjs.map} +1 -1
- package/dist/chunks/{NcAssistantIcon-CKWZRzXg.mjs → NcAssistantIcon-wlxNsdd7.mjs} +2 -2
- package/dist/chunks/{NcAssistantIcon-CKWZRzXg.mjs.map → NcAssistantIcon-wlxNsdd7.mjs.map} +1 -1
- package/dist/chunks/{NcAvatar-4h0wo9uv.mjs → NcAvatar-Cn98JTqK.mjs} +5 -5
- package/dist/chunks/{NcAvatar-4h0wo9uv.mjs.map → NcAvatar-Cn98JTqK.mjs.map} +1 -1
- package/dist/chunks/{NcAvatar-BrDByW-X.cjs → NcAvatar-DTYINOTI.cjs} +5 -5
- package/dist/chunks/{NcAvatar-BrDByW-X.cjs.map → NcAvatar-DTYINOTI.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-BUsCwbnF.cjs → NcBreadcrumb-CkmzyLa_.cjs} +2 -2
- package/dist/chunks/{NcBreadcrumb-BUsCwbnF.cjs.map → NcBreadcrumb-CkmzyLa_.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-CcKJsew_.mjs → NcBreadcrumb-DB0OuwsV.mjs} +2 -2
- package/dist/chunks/{NcBreadcrumb-CcKJsew_.mjs.map → NcBreadcrumb-DB0OuwsV.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-bDlnNcz1.mjs → NcBreadcrumbs-BizyuyGI.mjs} +4 -4
- package/dist/chunks/{NcBreadcrumbs-bDlnNcz1.mjs.map → NcBreadcrumbs-BizyuyGI.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-W9wcvU4n.cjs → NcBreadcrumbs-C4T9-I6M.cjs} +4 -4
- package/dist/chunks/{NcBreadcrumbs-W9wcvU4n.cjs.map → NcBreadcrumbs-C4T9-I6M.cjs.map} +1 -1
- package/dist/chunks/{NcCheckboxRadioSwitch-CX3HXCEk.mjs → NcCheckboxRadioSwitch-CgbTELjq.mjs} +37 -104
- package/dist/chunks/NcCheckboxRadioSwitch-CgbTELjq.mjs.map +1 -0
- package/dist/chunks/{NcCheckboxRadioSwitch-CG2BbMsv.cjs → NcCheckboxRadioSwitch-USANpRLI.cjs} +37 -104
- package/dist/chunks/NcCheckboxRadioSwitch-USANpRLI.cjs.map +1 -0
- package/dist/chunks/{NcCollectionList-DSk0m1Ap.cjs → NcCollectionList-BjYItjGi.cjs} +6 -6
- package/dist/chunks/{NcCollectionList-DSk0m1Ap.cjs.map → NcCollectionList-BjYItjGi.cjs.map} +1 -1
- package/dist/chunks/{NcCollectionList-CejmntlL.mjs → NcCollectionList-C7QmpJW9.mjs} +6 -6
- package/dist/chunks/{NcCollectionList-CejmntlL.mjs.map → NcCollectionList-C7QmpJW9.mjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-BPVlMiBg.cjs → NcColorPicker-Chsy5lX_.cjs} +6 -6
- package/dist/chunks/{NcColorPicker-BPVlMiBg.cjs.map → NcColorPicker-Chsy5lX_.cjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-BERjJHgc.mjs → NcColorPicker-DnWT8i3g.mjs} +6 -6
- package/dist/chunks/{NcColorPicker-BERjJHgc.mjs.map → NcColorPicker-DnWT8i3g.mjs.map} +1 -1
- package/dist/chunks/{NcContent-DWLtsXHf.cjs → NcContent-B0MLEwwX.cjs} +2 -2
- package/dist/chunks/{NcContent-DWLtsXHf.cjs.map → NcContent-B0MLEwwX.cjs.map} +1 -1
- package/dist/chunks/{NcContent-yW5m-Mj5.mjs → NcContent-RSHRX9Ei.mjs} +2 -2
- package/dist/chunks/{NcContent-yW5m-Mj5.mjs.map → NcContent-RSHRX9Ei.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-Bk6i__T-.mjs → NcDashboardWidget-By1MRGQM.mjs} +4 -4
- package/dist/chunks/{NcDashboardWidget-Bk6i__T-.mjs.map → NcDashboardWidget-By1MRGQM.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-Dc0fUaGv.cjs → NcDashboardWidget-tPBonsAz.cjs} +4 -4
- package/dist/chunks/{NcDashboardWidget-Dc0fUaGv.cjs.map → NcDashboardWidget-tPBonsAz.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem--NyYqf1-.mjs → NcDashboardWidgetItem-D2CwvHeu.mjs} +4 -4
- package/dist/chunks/{NcDashboardWidgetItem--NyYqf1-.mjs.map → NcDashboardWidgetItem-D2CwvHeu.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-DiSoDid-.cjs → NcDashboardWidgetItem-Zb-33B99.cjs} +4 -4
- package/dist/chunks/{NcDashboardWidgetItem-DiSoDid-.cjs.map → NcDashboardWidgetItem-Zb-33B99.cjs.map} +1 -1
- package/dist/chunks/{NcDialog-WN4eYniZ.cjs → NcDialog-ChYi3mdd.cjs} +2 -2
- package/dist/chunks/{NcDialog-WN4eYniZ.cjs.map → NcDialog-ChYi3mdd.cjs.map} +1 -1
- package/dist/chunks/{NcDialog-8ipQ69_t.mjs → NcDialog-DDWiv6ap.mjs} +2 -2
- package/dist/chunks/{NcDialog-8ipQ69_t.mjs.map → NcDialog-DDWiv6ap.mjs.map} +1 -1
- package/dist/chunks/{NcDialogButton-BFV6qd7F.cjs → NcDialogButton-DljI3tNu.cjs} +2 -2
- package/dist/chunks/{NcDialogButton-BFV6qd7F.cjs.map → NcDialogButton-DljI3tNu.cjs.map} +1 -1
- package/dist/chunks/{NcDialogButton-CSC8PAz-.mjs → NcDialogButton-lR5aJG_-.mjs} +2 -2
- package/dist/chunks/{NcDialogButton-CSC8PAz-.mjs.map → NcDialogButton-lR5aJG_-.mjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-BENbptkx.cjs → NcEmojiPicker-C0AfqJC9.cjs} +6 -6
- package/dist/chunks/{NcEmojiPicker-BENbptkx.cjs.map → NcEmojiPicker-C0AfqJC9.cjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-DlizXqla.mjs → NcEmojiPicker-DclGvRU_.mjs} +6 -6
- package/dist/chunks/{NcEmojiPicker-DlizXqla.mjs.map → NcEmojiPicker-DclGvRU_.mjs.map} +1 -1
- package/dist/chunks/{NcFormBox-DL435pbV.mjs → NcFormBox-C4wu4RJ_.mjs} +2 -2
- package/dist/chunks/{NcFormBox-DL435pbV.mjs.map → NcFormBox-C4wu4RJ_.mjs.map} +1 -1
- package/dist/chunks/{NcFormBox-_JqkU_xn.cjs → NcFormBox-DjrN-K4Q.cjs} +2 -2
- package/dist/chunks/{NcFormBox-_JqkU_xn.cjs.map → NcFormBox-DjrN-K4Q.cjs.map} +1 -1
- package/dist/chunks/{NcFormBoxButton-DR_OMvmB.mjs → NcFormBoxButton-4xiKHRJH.mjs} +3 -3
- package/dist/chunks/{NcFormBoxButton-DR_OMvmB.mjs.map → NcFormBoxButton-4xiKHRJH.mjs.map} +1 -1
- package/dist/chunks/{NcFormBoxButton-B4STyrn7.cjs → NcFormBoxButton-WatYqw6i.cjs} +3 -3
- package/dist/chunks/{NcFormBoxButton-B4STyrn7.cjs.map → NcFormBoxButton-WatYqw6i.cjs.map} +1 -1
- package/dist/chunks/{NcFormBoxCopyButton-BQt4cqDo.mjs → NcFormBoxCopyButton-AeYq9iKM.mjs} +3 -3
- package/dist/chunks/{NcFormBoxCopyButton-BQt4cqDo.mjs.map → NcFormBoxCopyButton-AeYq9iKM.mjs.map} +1 -1
- package/dist/chunks/{NcFormBoxCopyButton-CthOiHuc.cjs → NcFormBoxCopyButton-VM720MPU.cjs} +3 -3
- package/dist/chunks/{NcFormBoxCopyButton-CthOiHuc.cjs.map → NcFormBoxCopyButton-VM720MPU.cjs.map} +1 -1
- package/dist/chunks/{NcFormBoxItem-BfXaRfkc.cjs → NcFormBoxItem-CK0Zakr1.cjs} +2 -2
- package/dist/chunks/{NcFormBoxItem-BfXaRfkc.cjs.map → NcFormBoxItem-CK0Zakr1.cjs.map} +1 -1
- package/dist/chunks/{NcFormBoxItem-BcNIAmpc.mjs → NcFormBoxItem-DJZrmlTP.mjs} +2 -2
- package/dist/chunks/{NcFormBoxItem-BcNIAmpc.mjs.map → NcFormBoxItem-DJZrmlTP.mjs.map} +1 -1
- package/dist/chunks/{NcFormBoxSwitch-BUBD5jli.cjs → NcFormBoxSwitch-DGAjBKdo.cjs} +9 -12
- package/dist/chunks/NcFormBoxSwitch-DGAjBKdo.cjs.map +1 -0
- package/dist/chunks/{NcFormBoxSwitch-BqbGsapa.mjs → NcFormBoxSwitch-Dq5JvIem.mjs} +9 -12
- package/dist/chunks/NcFormBoxSwitch-Dq5JvIem.mjs.map +1 -0
- package/dist/chunks/{NcHotkey-CuAapY_f.cjs → NcHotkey-B9IBly2F.cjs} +2 -2
- package/dist/chunks/{NcHotkey-CuAapY_f.cjs.map → NcHotkey-B9IBly2F.cjs.map} +1 -1
- package/dist/chunks/{NcHotkey-DcpG5Pla.mjs → NcHotkey-COqzksbg.mjs} +2 -2
- package/dist/chunks/{NcHotkey-DcpG5Pla.mjs.map → NcHotkey-COqzksbg.mjs.map} +1 -1
- package/dist/chunks/{NcHotkeyList-CyJKMulK.cjs → NcHotkeyList-D5QS6zXI.cjs} +3 -3
- package/dist/chunks/{NcHotkeyList-CyJKMulK.cjs.map → NcHotkeyList-D5QS6zXI.cjs.map} +1 -1
- package/dist/chunks/{NcHotkeyList-CV_FJXF8.mjs → NcHotkeyList-D9tKXM-e.mjs} +3 -3
- package/dist/chunks/{NcHotkeyList-CV_FJXF8.mjs.map → NcHotkeyList-D9tKXM-e.mjs.map} +1 -1
- package/dist/chunks/NcIconToggleSwitch-C2VDKTSP.mjs +62 -0
- package/dist/chunks/NcIconToggleSwitch-C2VDKTSP.mjs.map +1 -0
- package/dist/chunks/NcIconToggleSwitch-Cnov67_2.cjs +61 -0
- package/dist/chunks/NcIconToggleSwitch-Cnov67_2.cjs.map +1 -0
- package/dist/chunks/{NcInputConfirmCancel-lLiyPQvo.cjs → NcInputConfirmCancel-BAM7SUH2.cjs} +2 -2
- package/dist/chunks/{NcInputConfirmCancel-lLiyPQvo.cjs.map → NcInputConfirmCancel-BAM7SUH2.cjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-D7omQqvB.mjs → NcInputConfirmCancel-CrZiDaEw.mjs} +2 -2
- package/dist/chunks/{NcInputConfirmCancel-D7omQqvB.mjs.map → NcInputConfirmCancel-CrZiDaEw.mjs.map} +1 -1
- package/dist/chunks/{NcKbd-ChdGXvZR.mjs → NcKbd-CapL6_v1.mjs} +3 -3
- package/dist/chunks/{NcKbd-ChdGXvZR.mjs.map → NcKbd-CapL6_v1.mjs.map} +1 -1
- package/dist/chunks/{NcKbd-CyyEm6BD.cjs → NcKbd-DiOuj-R9.cjs} +3 -3
- package/dist/chunks/{NcKbd-CyyEm6BD.cjs.map → NcKbd-DiOuj-R9.cjs.map} +1 -1
- package/dist/chunks/{NcListItem-DP0kl2g5.mjs → NcListItem-BCsfLnyO.mjs} +2 -2
- package/dist/chunks/{NcListItem-DP0kl2g5.mjs.map → NcListItem-BCsfLnyO.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-DB6prfmf.cjs → NcListItem-DO5dSzuL.cjs} +2 -2
- package/dist/chunks/{NcListItem-DB6prfmf.cjs.map → NcListItem-DO5dSzuL.cjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-D41xabRp.mjs → NcListItemIcon-D--9lMWR.mjs} +2 -2
- package/dist/chunks/{NcListItemIcon-D41xabRp.mjs.map → NcListItemIcon-D--9lMWR.mjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-BM5iJwye.cjs → NcListItemIcon-DShtuUOU.cjs} +2 -2
- package/dist/chunks/{NcListItemIcon-BM5iJwye.cjs.map → NcListItemIcon-DShtuUOU.cjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-D2xXHnvI.mjs → NcPasswordField-Df0X4U3c.mjs} +2 -2
- package/dist/chunks/{NcPasswordField-D2xXHnvI.mjs.map → NcPasswordField-Df0X4U3c.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-Cq8yg7NE.cjs → NcPasswordField-btocqVR7.cjs} +2 -2
- package/dist/chunks/{NcPasswordField-Cq8yg7NE.cjs.map → NcPasswordField-btocqVR7.cjs.map} +1 -1
- package/dist/chunks/{NcPopover-BgUZkmjk.cjs → NcPopover-CD8IwZd2.cjs} +4 -4
- package/dist/chunks/NcPopover-CD8IwZd2.cjs.map +1 -0
- package/dist/chunks/{NcPopover-gxcAqoEb.mjs → NcPopover-DmPH_emH.mjs} +4 -4
- package/dist/chunks/NcPopover-DmPH_emH.mjs.map +1 -0
- package/dist/chunks/{NcRadioGroup-D0rC63G8.mjs → NcRadioGroup-C2Nibs7w.mjs} +3 -3
- package/dist/chunks/{NcRadioGroup-D0rC63G8.mjs.map → NcRadioGroup-C2Nibs7w.mjs.map} +1 -1
- package/dist/chunks/{NcRadioGroup-D59En1O3.cjs → NcRadioGroup-zZIcG3FY.cjs} +3 -3
- package/dist/chunks/{NcRadioGroup-D59En1O3.cjs.map → NcRadioGroup-zZIcG3FY.cjs.map} +1 -1
- package/dist/chunks/{NcRadioGroupButton-3Pu4Iqdf.mjs → NcRadioGroupButton-Bzd7AZ5F.mjs} +3 -3
- package/dist/chunks/{NcRadioGroupButton-3Pu4Iqdf.mjs.map → NcRadioGroupButton-Bzd7AZ5F.mjs.map} +1 -1
- package/dist/chunks/{NcRadioGroupButton-DoOf7cE1.cjs → NcRadioGroupButton-C_T_e6DC.cjs} +3 -3
- package/dist/chunks/{NcRadioGroupButton-DoOf7cE1.cjs.map → NcRadioGroupButton-C_T_e6DC.cjs.map} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-BbjG2Qvg.mjs → NcRelatedResourcesPanel-CZgZsBil.mjs} +2 -2
- package/dist/chunks/{NcRelatedResourcesPanel-BbjG2Qvg.mjs.map → NcRelatedResourcesPanel-CZgZsBil.mjs.map} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-DUxV4_Bt.cjs → NcRelatedResourcesPanel-DDEAaN_S.cjs} +2 -2
- package/dist/chunks/{NcRelatedResourcesPanel-DUxV4_Bt.cjs.map → NcRelatedResourcesPanel-DDEAaN_S.cjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-S7ASR6NI.mjs → NcRichContenteditable-BitJ9Dpc.mjs} +7 -7
- package/dist/chunks/{NcRichContenteditable-S7ASR6NI.mjs.map → NcRichContenteditable-BitJ9Dpc.mjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-C_PlLt-H.cjs → NcRichContenteditable-Y5XIH11o.cjs} +7 -7
- package/dist/chunks/{NcRichContenteditable-C_PlLt-H.cjs.map → NcRichContenteditable-Y5XIH11o.cjs.map} +1 -1
- package/dist/chunks/{NcRichText-C7k_8zuH.mjs → NcRichText-BoBTuJn0.mjs} +6 -6
- package/dist/chunks/{NcRichText-C7k_8zuH.mjs.map → NcRichText-BoBTuJn0.mjs.map} +1 -1
- package/dist/chunks/{NcRichText-kd0NZSP_.cjs → NcRichText-C-Sj_7GQ.cjs} +6 -6
- package/dist/chunks/{NcRichText-kd0NZSP_.cjs.map → NcRichText-C-Sj_7GQ.cjs.map} +1 -1
- package/dist/chunks/{NcSelect-DfosTlgF.cjs → NcSelect-B04XrVzV.cjs} +3 -3
- package/dist/chunks/{NcSelect-DfosTlgF.cjs.map → NcSelect-B04XrVzV.cjs.map} +1 -1
- package/dist/chunks/{NcSelect-CkB50N9T.mjs → NcSelect-vNUKMdvr.mjs} +3 -3
- package/dist/chunks/{NcSelect-CkB50N9T.mjs.map → NcSelect-vNUKMdvr.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-DrDrZUA6.mjs → NcSelectTags-BHfgOy9u.mjs} +3 -3
- package/dist/chunks/{NcSelectTags-DrDrZUA6.mjs.map → NcSelectTags-BHfgOy9u.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-deek6JXy.cjs → NcSelectTags-DeVGcDZr.cjs} +3 -3
- package/dist/chunks/{NcSelectTags-deek6JXy.cjs.map → NcSelectTags-DeVGcDZr.cjs.map} +1 -1
- package/dist/chunks/{NcSelectUsers-HmMuAP19.mjs → NcSelectUsers--GvJjma1.mjs} +4 -4
- package/dist/chunks/{NcSelectUsers-HmMuAP19.mjs.map → NcSelectUsers--GvJjma1.mjs.map} +1 -1
- package/dist/chunks/{NcSelectUsers-Cu5KZCxC.cjs → NcSelectUsers-BSi-wQFH.cjs} +4 -4
- package/dist/chunks/{NcSelectUsers-Cu5KZCxC.cjs.map → NcSelectUsers-BSi-wQFH.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-ynxiTO4n.cjs → NcSettingsInputText-BmZijZoF.cjs} +2 -2
- package/dist/chunks/{NcSettingsInputText-ynxiTO4n.cjs.map → NcSettingsInputText-BmZijZoF.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-wFKkjw2t.mjs → NcSettingsInputText-DRgdOe4X.mjs} +2 -2
- package/dist/chunks/{NcSettingsInputText-wFKkjw2t.mjs.map → NcSettingsInputText-DRgdOe4X.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-ZV3KIsxm.mjs → NcSettingsSection-10O9VU1F.mjs} +2 -2
- package/dist/chunks/{NcSettingsSection-ZV3KIsxm.mjs.map → NcSettingsSection-10O9VU1F.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-Bvo098h3.cjs → NcSettingsSection-Ck1k_G_E.cjs} +2 -2
- package/dist/chunks/{NcSettingsSection-Bvo098h3.cjs.map → NcSettingsSection-Ck1k_G_E.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-DmHVvBng.cjs → NcSettingsSelectGroup-Chz3fOJq.cjs} +3 -3
- package/dist/chunks/{NcSettingsSelectGroup-DmHVvBng.cjs.map → NcSettingsSelectGroup-Chz3fOJq.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-CXGxufce.mjs → NcSettingsSelectGroup-Dqh2jQi_.mjs} +3 -3
- package/dist/chunks/{NcSettingsSelectGroup-CXGxufce.mjs.map → NcSettingsSelectGroup-Dqh2jQi_.mjs.map} +1 -1
- package/dist/chunks/{NcTextField-CYbpyxC1.cjs → NcTextField-DiFoJmdM.cjs} +3 -3
- package/dist/chunks/{NcTextField-CYbpyxC1.cjs.map → NcTextField-DiFoJmdM.cjs.map} +1 -1
- package/dist/chunks/{NcTextField-CijJWC3h.mjs → NcTextField-DyPJI6lW.mjs} +3 -3
- package/dist/chunks/{NcTextField-CijJWC3h.mjs.map → NcTextField-DyPJI6lW.mjs.map} +1 -1
- package/dist/chunks/{NcThemeProvider-25ResoIv.mjs → NcThemeProvider-BA_zMjAf.mjs} +2 -2
- package/dist/chunks/{NcThemeProvider-25ResoIv.mjs.map → NcThemeProvider-BA_zMjAf.mjs.map} +1 -1
- package/dist/chunks/{NcThemeProvider-BqGPTeWg.cjs → NcThemeProvider-BOKkNukO.cjs} +2 -2
- package/dist/chunks/{NcThemeProvider-BqGPTeWg.cjs.map → NcThemeProvider-BOKkNukO.cjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-8z2Jxzq-.cjs → NcTimezonePicker-2dMBEhRN.cjs} +3 -3
- package/dist/chunks/{NcTimezonePicker-8z2Jxzq-.cjs.map → NcTimezonePicker-2dMBEhRN.cjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-DOSucwRx.mjs → NcTimezonePicker-Cirerde6.mjs} +3 -3
- package/dist/chunks/{NcTimezonePicker-DOSucwRx.mjs.map → NcTimezonePicker-Cirerde6.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-CSGX6IdN.mjs → NcUserBubble-DT9YWw5v.mjs} +3 -3
- package/dist/chunks/{NcUserBubble-CSGX6IdN.mjs.map → NcUserBubble-DT9YWw5v.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-Bzng2YLf.cjs → NcUserBubble-OTn2y2Qh.cjs} +3 -3
- package/dist/chunks/{NcUserBubble-Bzng2YLf.cjs.map → NcUserBubble-OTn2y2Qh.cjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-Dfd_lPCI.mjs → NcUserStatusIcon-BNyLZCP1.mjs} +2 -2
- package/dist/chunks/{NcUserStatusIcon-Dfd_lPCI.mjs.map → NcUserStatusIcon-BNyLZCP1.mjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-DYU-ubF3.cjs → NcUserStatusIcon-CeS_I2cx.cjs} +2 -2
- package/dist/chunks/{NcUserStatusIcon-DYU-ubF3.cjs.map → NcUserStatusIcon-CeS_I2cx.cjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-CycICbeB.cjs → ScopeComponent-DIh9MG7S.cjs} +2 -2
- package/dist/chunks/{ScopeComponent-CycICbeB.cjs.map → ScopeComponent-DIh9MG7S.cjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-CTeSJqUJ.mjs → ScopeComponent-DzNYMeEs.mjs} +2 -2
- package/dist/chunks/{ScopeComponent-CTeSJqUJ.mjs.map → ScopeComponent-DzNYMeEs.mjs.map} +1 -1
- package/dist/chunks/_l10n-BcrsamRV.mjs +149 -0
- package/dist/chunks/_l10n-BcrsamRV.mjs.map +1 -0
- package/dist/chunks/_l10n-IBFNlYqh.cjs +148 -0
- package/dist/chunks/{_l10n-DWMcjgRh.cjs.map → _l10n-IBFNlYqh.cjs.map} +1 -1
- package/dist/chunks/{colors-RIMKc3tN.cjs → colors-DSOGBWbF.cjs} +2 -2
- package/dist/chunks/{colors-RIMKc3tN.cjs.map → colors-DSOGBWbF.cjs.map} +1 -1
- package/dist/chunks/{colors-DYuPlOca.mjs → colors-DqvwWwoq.mjs} +2 -2
- package/dist/chunks/{colors-DYuPlOca.mjs.map → colors-DqvwWwoq.mjs.map} +1 -1
- package/dist/chunks/{constants-C_lA-vcp.cjs → constants-D-Hp78ng.cjs} +2 -2
- package/dist/chunks/{constants-C_lA-vcp.cjs.map → constants-D-Hp78ng.cjs.map} +1 -1
- package/dist/chunks/{constants-Bls5liKo.mjs → constants-wIEKSp2G.mjs} +2 -2
- package/dist/chunks/{constants-Bls5liKo.mjs.map → constants-wIEKSp2G.mjs.map} +1 -1
- package/dist/chunks/{mdi-CVXTs58m.cjs → mdi-BLgCcHlv.cjs} +1 -5
- package/dist/chunks/{mdi-CVXTs58m.cjs.map → mdi-BLgCcHlv.cjs.map} +1 -1
- package/dist/chunks/{mdi-CgetWrFc.mjs → mdi-CNJ_YP0l.mjs} +9 -13
- package/dist/chunks/{mdi-CgetWrFc.mjs.map → mdi-CNJ_YP0l.mjs.map} +1 -1
- package/dist/chunks/{referencePickerModal-eu8fU-gn.mjs → referencePickerModal-B8AfZsD_.mjs} +5 -5
- package/dist/chunks/{referencePickerModal-eu8fU-gn.mjs.map → referencePickerModal-B8AfZsD_.mjs.map} +1 -1
- package/dist/chunks/{referencePickerModal-BPowR5yI.cjs → referencePickerModal-BfGuwv98.cjs} +5 -5
- package/dist/chunks/{referencePickerModal-BPowR5yI.cjs.map → referencePickerModal-BfGuwv98.cjs.map} +1 -1
- package/dist/chunks/useAppSettingsDialog-C73Wx6iQ.mjs +12 -0
- package/dist/chunks/{useAppSettingsDialog-DbtEkXa4.mjs.map → useAppSettingsDialog-C73Wx6iQ.mjs.map} +1 -1
- package/dist/chunks/{useAppSettingsDialog-BfnyikIV.cjs → useAppSettingsDialog-DKwz-cwX.cjs} +3 -3
- package/dist/chunks/{useAppSettingsDialog-BfnyikIV.cjs.map → useAppSettingsDialog-DKwz-cwX.cjs.map} +1 -1
- package/dist/chunks/{useCopy-BrkuO6SD.cjs → useCopy-B8YTkOhE.cjs} +3 -3
- package/dist/chunks/{useCopy-BrkuO6SD.cjs.map → useCopy-B8YTkOhE.cjs.map} +1 -1
- package/dist/chunks/{useCopy-J3zJ3s94.mjs → useCopy-BWnr0WjK.mjs} +3 -3
- package/dist/chunks/{useCopy-J3zJ3s94.mjs.map → useCopy-BWnr0WjK.mjs.map} +1 -1
- package/dist/chunks/{useNcFormBox-DA9iwXWY.mjs → useNcFormBox-Djlh582y.mjs} +2 -2
- package/dist/chunks/{useNcFormBox-DA9iwXWY.mjs.map → useNcFormBox-Djlh582y.mjs.map} +1 -1
- package/dist/chunks/{useNcFormBox-DQeOEuQp.cjs → useNcFormBox-XowgPxpI.cjs} +2 -2
- package/dist/chunks/{useNcFormBox-DQeOEuQp.cjs.map → useNcFormBox-XowgPxpI.cjs.map} +1 -1
- package/dist/chunks/{useNcRadioGroup-DaZbEKbf.mjs → useNcRadioGroup-D6llQmAl.mjs} +2 -2
- package/dist/chunks/{useNcRadioGroup-DaZbEKbf.mjs.map → useNcRadioGroup-D6llQmAl.mjs.map} +1 -1
- package/dist/chunks/{useNcRadioGroup-Djvu7bo0.cjs → useNcRadioGroup-rLYISWKB.cjs} +2 -2
- package/dist/chunks/{useNcRadioGroup-Djvu7bo0.cjs.map → useNcRadioGroup-rLYISWKB.cjs.map} +1 -1
- package/dist/index.cjs +57 -57
- package/dist/index.mjs +58 -58
- package/package.json +9 -9
- package/dist/chunks/NcActionInput-CB9jcc0_.mjs.map +0 -1
- package/dist/chunks/NcActionInput-Cd7bhV5-.cjs.map +0 -1
- package/dist/chunks/NcAppSettingsShortcutsSection-BGMDhIXI.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsShortcutsSection-DI5YBdYf.cjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-CG2BbMsv.cjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-CX3HXCEk.mjs.map +0 -1
- package/dist/chunks/NcFormBoxSwitch-BUBD5jli.cjs.map +0 -1
- package/dist/chunks/NcFormBoxSwitch-BqbGsapa.mjs.map +0 -1
- package/dist/chunks/NcPopover-BgUZkmjk.cjs.map +0 -1
- package/dist/chunks/NcPopover-gxcAqoEb.mjs.map +0 -1
- package/dist/chunks/_l10n-D3tJt_gL.mjs +0 -141
- package/dist/chunks/_l10n-D3tJt_gL.mjs.map +0 -1
- package/dist/chunks/_l10n-DWMcjgRh.cjs +0 -140
- package/dist/chunks/useAppSettingsDialog-DbtEkXa4.mjs +0 -12
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import '../assets/NcFormBoxButton-C6EvdLK4.css';
|
|
2
2
|
import { reactive, getCurrentInstance, computed, defineComponent } from "vue";
|
|
3
|
-
import {
|
|
3
|
+
import { i as mdiOpenInNew, j as mdiArrowTopRight } from "./mdi-CNJ_YP0l.mjs";
|
|
4
4
|
import { toRef } from "@vueuse/core";
|
|
5
|
-
import { N as NcFormBoxItem } from "./NcFormBoxItem-
|
|
5
|
+
import { N as NcFormBoxItem } from "./NcFormBoxItem-DJZrmlTP.mjs";
|
|
6
6
|
import { N as NcIconSvgWrapper } from "./NcIconSvgWrapper-Bui9PhAS.mjs";
|
|
7
7
|
import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
|
|
8
8
|
/*!
|
|
@@ -135,4 +135,4 @@ const NcFormBoxButton = __component__.exports;
|
|
|
135
135
|
export {
|
|
136
136
|
NcFormBoxButton as N
|
|
137
137
|
};
|
|
138
|
-
//# sourceMappingURL=NcFormBoxButton-
|
|
138
|
+
//# sourceMappingURL=NcFormBoxButton-4xiKHRJH.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcFormBoxButton-DR_OMvmB.mjs","sources":["../../src/composables/useButtonLink.ts","../../src/components/NcFormBoxButton/NcFormBoxButton.vue"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRef } from '@vueuse/core'\nimport type { AnchorHTMLAttributes, ButtonHTMLAttributes } from 'vue'\nimport type { RawLocation } from 'vue-router'\n\nimport { computed, getCurrentInstance, reactive } from 'vue'\n\ntype ButtonLinkProps = {\n\t// Required - general link props\n\n\t/**\n\t * RouterLink's to props and a trigger to use RouterLink.\n\t * Note: This takes precedence over the href attribute.\n\t */\n\tto: MaybeRef<RawLocation | undefined>\n\t/**\n\t * HyperLink href attribute and a trigger to use <a> hyperlink.\n\t */\n\thref: MaybeRef<string | undefined>\n\t/**\n\t * Define additional attributes, based on the tag\n\t */\n\tadditionalAttrs?: (tag: 'RouterLink' | 'a' | 'button') => object | undefined\n\n\t// RouterLink props\n\n\t/**\n\t * RouterLink's activeClass prop\n\t */\n\tactiveClass?: MaybeRef<string | undefined>\n\n\t// Hyperlink\n\n\t/**\n\t * <a> hyperlink's target attribute\n\t */\n\ttarget?: MaybeRef<AnchorHTMLAttributes['target'] | undefined>\n\t/**\n\t * <a> hyperlink's download attribute\n\t */\n\tdownload?: MaybeRef<string | boolean | undefined>\n\n\t// Button\n\n\t/**\n\t * <button> element's type attribute, but default to \"button\" instead of \"submit\"\n\t */\n\ttype?: MaybeRef<ButtonHTMLAttributes['type'] | undefined>\n\t/**\n\t * <button> element's disabled attribute\n\t */\n\tdisabled?: MaybeRef<boolean | undefined>\n}\n\n/**\n * Reusable implementation of an interactive button-like element that can be a link or a button\n *\n * @param options - Props to determine the button/link behavior. Can be a reactive object, or an object with nested refs, or mixed.\n */\nexport function useButtonLink(options: ButtonLinkProps) {\n\t// Resolve all MaybeRef-s values and maybe reactive object via unwrapping\n\tconst props = reactive(options)\n\n\tconst instance = getCurrentInstance()!\n\tconst hasVueRouterContext = '$router' in instance.proxy.$root\n\n\t/**\n\t * Tag name to be used\n\t */\n\tconst tag = computed(() => {\n\t\t// TODO: should we warn if props.to is provided but there is no vue-router?\n\t\tif (hasVueRouterContext && props.to) {\n\t\t\t// Note: RouterLink is used as globally registered component (by name) and not imported intentionally\n\t\t\t// to use injected component from the app and not bundle it to the button\n\t\t\treturn 'RouterLink'\n\t\t} else if (props.href) {\n\t\t\treturn 'a'\n\t\t} else {\n\t\t\treturn 'button'\n\t\t}\n\t})\n\n\tconst isLink = computed(() => tag.value === 'RouterLink' || tag.value === 'a')\n\tconst isHyperLink = computed(() => tag.value === 'a')\n\tconst isRouterLink = computed(() => tag.value === 'RouterLink')\n\tconst isButton = computed(() => tag.value === 'button')\n\n\tconst attrs = computed(() => {\n\t\tif (tag.value === 'RouterLink') {\n\t\t\treturn {\n\t\t\t\tto: props.to,\n\t\t\t\tactiveClass: 'active',\n\t\t\t\t...(props.additionalAttrs?.('RouterLink') ?? {}),\n\t\t\t}\n\t\t} else if (tag.value === 'a') {\n\t\t\treturn {\n\t\t\t\thref: props.href,\n\t\t\t\ttarget: props.target,\n\t\t\t\tdownload: props.download || undefined,\n\t\t\t\trel: 'nofollow noreferrer noopener',\n\t\t\t\t...(props.additionalAttrs?.('a') ?? {}),\n\t\t\t}\n\t\t} else if (tag.value === 'button') {\n\t\t\treturn {\n\t\t\t\ttype: props.type || 'button',\n\t\t\t\tdisabled: props.disabled,\n\t\t\t\t...(props.additionalAttrs?.('button') ?? {}),\n\t\t\t}\n\t\t}\n\t})\n\n\treturn {\n\t\ttag,\n\t\tisLink,\n\t\tisHyperLink,\n\t\tisRouterLink,\n\t\tisButton,\n\t\tattrs,\n\t}\n}\n","<!--\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 { AnchorHTMLAttributes } from 'vue'\nimport type { RawLocation } from 'vue-router'\n\nimport { mdiArrowTopRight, mdiOpenInNew } from '@mdi/js'\nimport { toRef } from '@vueuse/core'\nimport { computed } from 'vue'\nimport NcFormBoxItem from '../NcFormBox/NcFormBoxItem.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\nimport { useButtonLink } from '../../composables/useButtonLink.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Main label */\n\tlabel?: string\n\t/** Optional description below the label, also used for the aria-describedby */\n\tdescription?: string\n\t/** Accent on the description instead of the label (see docs) */\n\tinvertedAccent?: boolean\n\t/** RouterLink's `to` prop; when provided, renders as `<RouterLink>` (takes precedence over the `href` prop) */\n\tto?: RawLocation\n\t/** Hyperlink `href` attribute; when provided, renders as `<a>` */\n\thref?: string\n\t/** Hyperlink's target attribute */\n\ttarget?: AnchorHTMLAttributes['target']\n\t/** Button's disabled attribute, not applicable to links */\n\tdisabled?: boolean\n}>(), {\n\tlabel: undefined,\n\tdescription: undefined,\n\tinvertedAccent: false,\n\tto: undefined,\n\thref: undefined,\n\ttarget: undefined, // TODO: should it be _blank by default?\n\tdisabled: false,\n})\n\ndefineEmits<{\n\t/** Native click event */\n\t(e: 'click', event: MouseEvent): void\n}>()\n\nconst { tag, attrs, isLink } = useButtonLink({\n\tto: toRef(() => props.to),\n\thref: toRef(() => props.href),\n\ttarget: toRef(() => props.target),\n\tdisabled: toRef(() => props.disabled),\n})\n\nconst icon = computed(() => {\n\tif (isLink.value) {\n\t\treturn props.target === '_blank' ? mdiOpenInNew : mdiArrowTopRight\n\t}\n\treturn undefined\n})\n</script>\n\n<template>\n\t<NcFormBoxItem\n\t\t:tag=\"tag\"\n\t\t:item-classes=\"[\n\t\t\t'button-vue', /* Reset server's global HTML button styles */\n\t\t\t$style.formBoxButton,\n\t\t]\"\n\t\t:inverted-accent=\"invertedAccent\"\n\t\tv-bind=\"attrs\"\n\t\ttabindex=\"0\"\n\t\t@click=\"$emit('click', $event)\">\n\t\t<template v-if=\"$scopedSlots.default || label\" #default>\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<slot>\n\t\t\t\t{{ label }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$scopedSlots.description || description\" #description>\n\t\t\t<!-- @slot Custom description content -->\n\t\t\t<slot name=\"description\">\n\t\t\t\t{{ description }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$scopedSlots.icon || icon\" #icon>\n\t\t\t<!-- @slot Required icon (links have a default icon) -->\n\t\t\t<slot name=\"icon\">\n\t\t\t\t<NcIconSvgWrapper v-if=\"icon\" :path=\"icon\" inline />\n\t\t\t</slot>\n\t\t</template>\n\t</NcFormBoxItem>\n</template>\n\n<style lang=\"scss\" module>\n.formBoxButton {\n\t/* Reset default HTML button styles */\n\tbackground: unset;\n\tborder: none;\n\tcolor: inherit;\n\tfont-size: inherit;\n\tfont-weight: inherit;\n\ttext-decoration: none;\n\ttext-align: inherit;\n\tline-height: inherit;\n\tpadding: 0;\n\tmargin: 0;\n\toutline: none;\n}\n</style>\n\n<docs>\n### General\n\nAn interactive button-like item within `<NcFormBox>`. It can be a button or a native link/router link if `to` or `href` props are provided.\n\nLike other form box items, it has a label and an optional description.\n\n```vue\n<script>\nimport { mdiContentCopy, mdiInformationOutline } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn {\n\t\t\tmdiContentCopy,\n\t\t\tmdiInformationOutline,\n\t\t}\n\t},\n}\n</script>\n\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"Nextcloud\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\" />\n\n\t\t<NcFormBoxButton\n\t\t\thref=\"https://nextcloud-vue-components.netlify.app\">\n\t\t\t<code>@nextcloud/vue</code> documentation\n\t\t</NcFormBoxButton>\n\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"About\"\n\t\t\tdescription=\"Installation details\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiInformationOutline\" inline />\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"Public signing key\">\n\t\t\t<template #description>\n\t\t\t\t<code>SSBkb24ndCBrbm93IHdoeSB5b3UgZGVjb2RlZCB0aGlzIHZhbHVlDQrgvLwg44GkIOKXlV/il5Ug4Ly944Gk</code>\n\t\t\t</template>\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\t</NcFormBox>\n</template>\n```\n\n### Inverted accent\n\nSometimes the description is more important than the label. In such cases use `inverted-accent` prop.\n\nFor example:\n- **Steps:** the description of the step is more important than the step number\n- **Copy button:** the value being copied is more important than the value label\n- **Folder picker:** the selected folder path is more important than the input label\n\n```vue\n<script>\nimport { mdiContentCopy, mdiDomain, mdiFolderOpenOutline } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn { mdiContentCopy, mdiDomain, mdiFolderOpenOutline }\n\t},\n}\n</script>\n\n<template>\n\t<div style=\"display: flex; flex-direction: column; gap: calc(4 * var(--default-grid-baseline));\">\n\t\t<NcFormGroup label=\"Mailvelope\" description=\"A browser extension that enables easy OpenPGP encryption and decryption of emails\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Step 1\"\n\t\t\t\t\tdescription=\"Install the browser extension\"\n\t\t\t\t\thref=\"https://www.mailvelope.com/\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\tinverted-accent />\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Step 2\"\n\t\t\t\t\tdescription=\"Enable the current domain\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiDomain\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\n\t\t<NcFormGroup label=\"CalDAV\" description=\"Access Nextcloud calendars from other apps and devices\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"CalDAV URL\"\n\t\t\t\t\tdescription=\"https://cloud.example.com/remote.php/dav/\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Server Address for iOS and macOS\"\n\t\t\t\t\tdescription=\"https://cloud.example.com/remote.php/dav/principals/users/user/\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\n\t\t<NcFormGroup label=\"Files\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Attachments folder\"\n\t\t\t\t\tdescription=\"/Talk\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiFolderOpenOutline\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\t</div>\n</template>\n```\n\n### Requirements\n\n- Label is required (`label` prop or the default slot)\n- Icon is required unless there is a default icon (links)\n\n```vue\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxButton description=\"No label example\">\n\t\t\t<template #icon>\n\t\t\t\t✅\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\t\t<NcFormBoxButton label=\"No icon example\"/>\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"No icon link example\"\n\t\t\tdescription=\"Links have a default icon\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\" />\n\t</NcFormBox>\n</template>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;AAAA;AAAA;AAAA;AAAA;AA+DO,SAAS,cAAc,SAA0B;AAEvD,QAAM,QAAQ,SAAS,OAAO;AAE9B,QAAM,WAAW,mBAAA;AACjB,QAAM,sBAAsB,aAAa,SAAS,MAAM;AAKxD,QAAM,MAAM,SAAS,MAAM;AAE1B,QAAI,uBAAuB,MAAM,IAAI;AAGpC,aAAO;AAAA,IACR,WAAW,MAAM,MAAM;AACtB,aAAO;AAAA,IACR,OAAO;AACN,aAAO;AAAA,IACR;AAAA,EACD,CAAC;AAED,QAAM,SAAS,SAAS,MAAM,IAAI,UAAU,gBAAgB,IAAI,UAAU,GAAG;AAC7E,QAAM,cAAc,SAAS,MAAM,IAAI,UAAU,GAAG;AACpD,QAAM,eAAe,SAAS,MAAM,IAAI,UAAU,YAAY;AAC9D,QAAM,WAAW,SAAS,MAAM,IAAI,UAAU,QAAQ;AAEtD,QAAM,QAAQ,SAAS,MAAM;AAC5B,QAAI,IAAI,UAAU,cAAc;AAC/B,aAAO;AAAA,QACN,IAAI,MAAM;AAAA,QACV,aAAa;AAAA,QACb,GAAI,MAAM,kBAAkB,YAAY,KAAK,CAAA;AAAA,MAAC;AAAA,IAEhD,WAAW,IAAI,UAAU,KAAK;AAC7B,aAAO;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,UAAU,MAAM,YAAY;AAAA,QAC5B,KAAK;AAAA,QACL,GAAI,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAAA,MAAC;AAAA,IAEvC,WAAW,IAAI,UAAU,UAAU;AAClC,aAAO;AAAA,QACN,MAAM,MAAM,QAAQ;AAAA,QACpB,UAAU,MAAM;AAAA,QAChB,GAAI,MAAM,kBAAkB,QAAQ,KAAK,CAAA;AAAA,MAAC;AAAA,IAE5C;AAAA,EACD,CAAC;AAED,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF;;;;;;;;;;;;;;;AC7EA,UAAM,EAAE,KAAK,OAAO,OAAA,IAAW,cAAc;AAAA,MAC5C,IAAI,MAAM,MAAM,MAAM,EAAE;AAAA,MACxB,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,MAC5B,QAAQ,MAAM,MAAM,MAAM,MAAM;AAAA,MAChC,UAAU,MAAM,MAAM,MAAM,QAAQ;AAAA,IAAA,CACpC;AAED,UAAM,OAAO,SAAS,MAAM;AAC3B,UAAI,OAAO,OAAO;AACjB,eAAO,MAAM,WAAW,WAAW,eAAe;AAAA,MACnD;AACA,aAAO;AAAA,IACR,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"NcFormBoxButton-4xiKHRJH.mjs","sources":["../../src/composables/useButtonLink.ts","../../src/components/NcFormBoxButton/NcFormBoxButton.vue"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRef } from '@vueuse/core'\nimport type { AnchorHTMLAttributes, ButtonHTMLAttributes } from 'vue'\nimport type { RawLocation } from 'vue-router'\n\nimport { computed, getCurrentInstance, reactive } from 'vue'\n\ntype ButtonLinkProps = {\n\t// Required - general link props\n\n\t/**\n\t * RouterLink's to props and a trigger to use RouterLink.\n\t * Note: This takes precedence over the href attribute.\n\t */\n\tto: MaybeRef<RawLocation | undefined>\n\t/**\n\t * HyperLink href attribute and a trigger to use <a> hyperlink.\n\t */\n\thref: MaybeRef<string | undefined>\n\t/**\n\t * Define additional attributes, based on the tag\n\t */\n\tadditionalAttrs?: (tag: 'RouterLink' | 'a' | 'button') => object | undefined\n\n\t// RouterLink props\n\n\t/**\n\t * RouterLink's activeClass prop\n\t */\n\tactiveClass?: MaybeRef<string | undefined>\n\n\t// Hyperlink\n\n\t/**\n\t * <a> hyperlink's target attribute\n\t */\n\ttarget?: MaybeRef<AnchorHTMLAttributes['target'] | undefined>\n\t/**\n\t * <a> hyperlink's download attribute\n\t */\n\tdownload?: MaybeRef<string | boolean | undefined>\n\n\t// Button\n\n\t/**\n\t * <button> element's type attribute, but default to \"button\" instead of \"submit\"\n\t */\n\ttype?: MaybeRef<ButtonHTMLAttributes['type'] | undefined>\n\t/**\n\t * <button> element's disabled attribute\n\t */\n\tdisabled?: MaybeRef<boolean | undefined>\n}\n\n/**\n * Reusable implementation of an interactive button-like element that can be a link or a button\n *\n * @param options - Props to determine the button/link behavior. Can be a reactive object, or an object with nested refs, or mixed.\n */\nexport function useButtonLink(options: ButtonLinkProps) {\n\t// Resolve all MaybeRef-s values and maybe reactive object via unwrapping\n\tconst props = reactive(options)\n\n\tconst instance = getCurrentInstance()!\n\tconst hasVueRouterContext = '$router' in instance.proxy.$root\n\n\t/**\n\t * Tag name to be used\n\t */\n\tconst tag = computed(() => {\n\t\t// TODO: should we warn if props.to is provided but there is no vue-router?\n\t\tif (hasVueRouterContext && props.to) {\n\t\t\t// Note: RouterLink is used as globally registered component (by name) and not imported intentionally\n\t\t\t// to use injected component from the app and not bundle it to the button\n\t\t\treturn 'RouterLink'\n\t\t} else if (props.href) {\n\t\t\treturn 'a'\n\t\t} else {\n\t\t\treturn 'button'\n\t\t}\n\t})\n\n\tconst isLink = computed(() => tag.value === 'RouterLink' || tag.value === 'a')\n\tconst isHyperLink = computed(() => tag.value === 'a')\n\tconst isRouterLink = computed(() => tag.value === 'RouterLink')\n\tconst isButton = computed(() => tag.value === 'button')\n\n\tconst attrs = computed(() => {\n\t\tif (tag.value === 'RouterLink') {\n\t\t\treturn {\n\t\t\t\tto: props.to,\n\t\t\t\tactiveClass: 'active',\n\t\t\t\t...(props.additionalAttrs?.('RouterLink') ?? {}),\n\t\t\t}\n\t\t} else if (tag.value === 'a') {\n\t\t\treturn {\n\t\t\t\thref: props.href,\n\t\t\t\ttarget: props.target,\n\t\t\t\tdownload: props.download || undefined,\n\t\t\t\trel: 'nofollow noreferrer noopener',\n\t\t\t\t...(props.additionalAttrs?.('a') ?? {}),\n\t\t\t}\n\t\t} else if (tag.value === 'button') {\n\t\t\treturn {\n\t\t\t\ttype: props.type || 'button',\n\t\t\t\tdisabled: props.disabled,\n\t\t\t\t...(props.additionalAttrs?.('button') ?? {}),\n\t\t\t}\n\t\t}\n\t})\n\n\treturn {\n\t\ttag,\n\t\tisLink,\n\t\tisHyperLink,\n\t\tisRouterLink,\n\t\tisButton,\n\t\tattrs,\n\t}\n}\n","<!--\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 { AnchorHTMLAttributes } from 'vue'\nimport type { RawLocation } from 'vue-router'\n\nimport { mdiArrowTopRight, mdiOpenInNew } from '@mdi/js'\nimport { toRef } from '@vueuse/core'\nimport { computed } from 'vue'\nimport NcFormBoxItem from '../NcFormBox/NcFormBoxItem.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\nimport { useButtonLink } from '../../composables/useButtonLink.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Main label */\n\tlabel?: string\n\t/** Optional description below the label, also used for the aria-describedby */\n\tdescription?: string\n\t/** Accent on the description instead of the label (see docs) */\n\tinvertedAccent?: boolean\n\t/** RouterLink's `to` prop; when provided, renders as `<RouterLink>` (takes precedence over the `href` prop) */\n\tto?: RawLocation\n\t/** Hyperlink `href` attribute; when provided, renders as `<a>` */\n\thref?: string\n\t/** Hyperlink's target attribute */\n\ttarget?: AnchorHTMLAttributes['target']\n\t/** Button's disabled attribute, not applicable to links */\n\tdisabled?: boolean\n}>(), {\n\tlabel: undefined,\n\tdescription: undefined,\n\tinvertedAccent: false,\n\tto: undefined,\n\thref: undefined,\n\ttarget: undefined, // TODO: should it be _blank by default?\n\tdisabled: false,\n})\n\ndefineEmits<{\n\t/** Native click event */\n\t(e: 'click', event: MouseEvent): void\n}>()\n\nconst { tag, attrs, isLink } = useButtonLink({\n\tto: toRef(() => props.to),\n\thref: toRef(() => props.href),\n\ttarget: toRef(() => props.target),\n\tdisabled: toRef(() => props.disabled),\n})\n\nconst icon = computed(() => {\n\tif (isLink.value) {\n\t\treturn props.target === '_blank' ? mdiOpenInNew : mdiArrowTopRight\n\t}\n\treturn undefined\n})\n</script>\n\n<template>\n\t<NcFormBoxItem\n\t\t:tag=\"tag\"\n\t\t:item-classes=\"[\n\t\t\t'button-vue', /* Reset server's global HTML button styles */\n\t\t\t$style.formBoxButton,\n\t\t]\"\n\t\t:inverted-accent=\"invertedAccent\"\n\t\tv-bind=\"attrs\"\n\t\ttabindex=\"0\"\n\t\t@click=\"$emit('click', $event)\">\n\t\t<template v-if=\"$scopedSlots.default || label\" #default>\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<slot>\n\t\t\t\t{{ label }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$scopedSlots.description || description\" #description>\n\t\t\t<!-- @slot Custom description content -->\n\t\t\t<slot name=\"description\">\n\t\t\t\t{{ description }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$scopedSlots.icon || icon\" #icon>\n\t\t\t<!-- @slot Required icon (links have a default icon) -->\n\t\t\t<slot name=\"icon\">\n\t\t\t\t<NcIconSvgWrapper v-if=\"icon\" :path=\"icon\" inline />\n\t\t\t</slot>\n\t\t</template>\n\t</NcFormBoxItem>\n</template>\n\n<style lang=\"scss\" module>\n.formBoxButton {\n\t/* Reset default HTML button styles */\n\tbackground: unset;\n\tborder: none;\n\tcolor: inherit;\n\tfont-size: inherit;\n\tfont-weight: inherit;\n\ttext-decoration: none;\n\ttext-align: inherit;\n\tline-height: inherit;\n\tpadding: 0;\n\tmargin: 0;\n\toutline: none;\n}\n</style>\n\n<docs>\n### General\n\nAn interactive button-like item within `<NcFormBox>`. It can be a button or a native link/router link if `to` or `href` props are provided.\n\nLike other form box items, it has a label and an optional description.\n\n```vue\n<script>\nimport { mdiContentCopy, mdiInformationOutline } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn {\n\t\t\tmdiContentCopy,\n\t\t\tmdiInformationOutline,\n\t\t}\n\t},\n}\n</script>\n\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"Nextcloud\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\" />\n\n\t\t<NcFormBoxButton\n\t\t\thref=\"https://nextcloud-vue-components.netlify.app\">\n\t\t\t<code>@nextcloud/vue</code> documentation\n\t\t</NcFormBoxButton>\n\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"About\"\n\t\t\tdescription=\"Installation details\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiInformationOutline\" inline />\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"Public signing key\">\n\t\t\t<template #description>\n\t\t\t\t<code>SSBkb24ndCBrbm93IHdoeSB5b3UgZGVjb2RlZCB0aGlzIHZhbHVlDQrgvLwg44GkIOKXlV/il5Ug4Ly944Gk</code>\n\t\t\t</template>\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\t</NcFormBox>\n</template>\n```\n\n### Inverted accent\n\nSometimes the description is more important than the label. In such cases use `inverted-accent` prop.\n\nFor example:\n- **Steps:** the description of the step is more important than the step number\n- **Copy button:** the value being copied is more important than the value label\n- **Folder picker:** the selected folder path is more important than the input label\n\n```vue\n<script>\nimport { mdiContentCopy, mdiDomain, mdiFolderOpenOutline } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn { mdiContentCopy, mdiDomain, mdiFolderOpenOutline }\n\t},\n}\n</script>\n\n<template>\n\t<div style=\"display: flex; flex-direction: column; gap: calc(4 * var(--default-grid-baseline));\">\n\t\t<NcFormGroup label=\"Mailvelope\" description=\"A browser extension that enables easy OpenPGP encryption and decryption of emails\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Step 1\"\n\t\t\t\t\tdescription=\"Install the browser extension\"\n\t\t\t\t\thref=\"https://www.mailvelope.com/\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\tinverted-accent />\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Step 2\"\n\t\t\t\t\tdescription=\"Enable the current domain\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiDomain\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\n\t\t<NcFormGroup label=\"CalDAV\" description=\"Access Nextcloud calendars from other apps and devices\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"CalDAV URL\"\n\t\t\t\t\tdescription=\"https://cloud.example.com/remote.php/dav/\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Server Address for iOS and macOS\"\n\t\t\t\t\tdescription=\"https://cloud.example.com/remote.php/dav/principals/users/user/\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\n\t\t<NcFormGroup label=\"Files\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Attachments folder\"\n\t\t\t\t\tdescription=\"/Talk\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiFolderOpenOutline\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\t</div>\n</template>\n```\n\n### Requirements\n\n- Label is required (`label` prop or the default slot)\n- Icon is required unless there is a default icon (links)\n\n```vue\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxButton description=\"No label example\">\n\t\t\t<template #icon>\n\t\t\t\t✅\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\t\t<NcFormBoxButton label=\"No icon example\"/>\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"No icon link example\"\n\t\t\tdescription=\"Links have a default icon\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\" />\n\t</NcFormBox>\n</template>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;AAAA;AAAA;AAAA;AAAA;AA+DO,SAAS,cAAc,SAA0B;AAEvD,QAAM,QAAQ,SAAS,OAAO;AAE9B,QAAM,WAAW,mBAAA;AACjB,QAAM,sBAAsB,aAAa,SAAS,MAAM;AAKxD,QAAM,MAAM,SAAS,MAAM;AAE1B,QAAI,uBAAuB,MAAM,IAAI;AAGpC,aAAO;AAAA,IACR,WAAW,MAAM,MAAM;AACtB,aAAO;AAAA,IACR,OAAO;AACN,aAAO;AAAA,IACR;AAAA,EACD,CAAC;AAED,QAAM,SAAS,SAAS,MAAM,IAAI,UAAU,gBAAgB,IAAI,UAAU,GAAG;AAC7E,QAAM,cAAc,SAAS,MAAM,IAAI,UAAU,GAAG;AACpD,QAAM,eAAe,SAAS,MAAM,IAAI,UAAU,YAAY;AAC9D,QAAM,WAAW,SAAS,MAAM,IAAI,UAAU,QAAQ;AAEtD,QAAM,QAAQ,SAAS,MAAM;AAC5B,QAAI,IAAI,UAAU,cAAc;AAC/B,aAAO;AAAA,QACN,IAAI,MAAM;AAAA,QACV,aAAa;AAAA,QACb,GAAI,MAAM,kBAAkB,YAAY,KAAK,CAAA;AAAA,MAAC;AAAA,IAEhD,WAAW,IAAI,UAAU,KAAK;AAC7B,aAAO;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,UAAU,MAAM,YAAY;AAAA,QAC5B,KAAK;AAAA,QACL,GAAI,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAAA,MAAC;AAAA,IAEvC,WAAW,IAAI,UAAU,UAAU;AAClC,aAAO;AAAA,QACN,MAAM,MAAM,QAAQ;AAAA,QACpB,UAAU,MAAM;AAAA,QAChB,GAAI,MAAM,kBAAkB,QAAQ,KAAK,CAAA;AAAA,MAAC;AAAA,IAE5C;AAAA,EACD,CAAC;AAED,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF;;;;;;;;;;;;;;;AC7EA,UAAM,EAAE,KAAK,OAAO,OAAA,IAAW,cAAc;AAAA,MAC5C,IAAI,MAAM,MAAM,MAAM,EAAE;AAAA,MACxB,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,MAC5B,QAAQ,MAAM,MAAM,MAAM,MAAM;AAAA,MAChC,UAAU,MAAM,MAAM,MAAM,QAAQ;AAAA,IAAA,CACpC;AAED,UAAM,OAAO,SAAS,MAAM;AAC3B,UAAI,OAAO,OAAO;AACjB,eAAO,MAAM,WAAW,WAAW,eAAe;AAAA,MACnD;AACA,aAAO;AAAA,IACR,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
require('../assets/NcFormBoxButton-C6EvdLK4.css');
|
|
2
2
|
"use strict";
|
|
3
3
|
const Vue = require("vue");
|
|
4
|
-
const mdi = require("./mdi-
|
|
4
|
+
const mdi = require("./mdi-BLgCcHlv.cjs");
|
|
5
5
|
const core = require("@vueuse/core");
|
|
6
|
-
const NcFormBoxItem = require("./NcFormBoxItem-
|
|
6
|
+
const NcFormBoxItem = require("./NcFormBoxItem-CK0Zakr1.cjs");
|
|
7
7
|
const NcIconSvgWrapper = require("./NcIconSvgWrapper-Bbl4kXZI.cjs");
|
|
8
8
|
const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
|
|
9
9
|
/*!
|
|
@@ -134,4 +134,4 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
|
134
134
|
);
|
|
135
135
|
const NcFormBoxButton = __component__.exports;
|
|
136
136
|
exports.NcFormBoxButton = NcFormBoxButton;
|
|
137
|
-
//# sourceMappingURL=NcFormBoxButton-
|
|
137
|
+
//# sourceMappingURL=NcFormBoxButton-WatYqw6i.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcFormBoxButton-B4STyrn7.cjs","sources":["../../src/composables/useButtonLink.ts","../../src/components/NcFormBoxButton/NcFormBoxButton.vue"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRef } from '@vueuse/core'\nimport type { AnchorHTMLAttributes, ButtonHTMLAttributes } from 'vue'\nimport type { RawLocation } from 'vue-router'\n\nimport { computed, getCurrentInstance, reactive } from 'vue'\n\ntype ButtonLinkProps = {\n\t// Required - general link props\n\n\t/**\n\t * RouterLink's to props and a trigger to use RouterLink.\n\t * Note: This takes precedence over the href attribute.\n\t */\n\tto: MaybeRef<RawLocation | undefined>\n\t/**\n\t * HyperLink href attribute and a trigger to use <a> hyperlink.\n\t */\n\thref: MaybeRef<string | undefined>\n\t/**\n\t * Define additional attributes, based on the tag\n\t */\n\tadditionalAttrs?: (tag: 'RouterLink' | 'a' | 'button') => object | undefined\n\n\t// RouterLink props\n\n\t/**\n\t * RouterLink's activeClass prop\n\t */\n\tactiveClass?: MaybeRef<string | undefined>\n\n\t// Hyperlink\n\n\t/**\n\t * <a> hyperlink's target attribute\n\t */\n\ttarget?: MaybeRef<AnchorHTMLAttributes['target'] | undefined>\n\t/**\n\t * <a> hyperlink's download attribute\n\t */\n\tdownload?: MaybeRef<string | boolean | undefined>\n\n\t// Button\n\n\t/**\n\t * <button> element's type attribute, but default to \"button\" instead of \"submit\"\n\t */\n\ttype?: MaybeRef<ButtonHTMLAttributes['type'] | undefined>\n\t/**\n\t * <button> element's disabled attribute\n\t */\n\tdisabled?: MaybeRef<boolean | undefined>\n}\n\n/**\n * Reusable implementation of an interactive button-like element that can be a link or a button\n *\n * @param options - Props to determine the button/link behavior. Can be a reactive object, or an object with nested refs, or mixed.\n */\nexport function useButtonLink(options: ButtonLinkProps) {\n\t// Resolve all MaybeRef-s values and maybe reactive object via unwrapping\n\tconst props = reactive(options)\n\n\tconst instance = getCurrentInstance()!\n\tconst hasVueRouterContext = '$router' in instance.proxy.$root\n\n\t/**\n\t * Tag name to be used\n\t */\n\tconst tag = computed(() => {\n\t\t// TODO: should we warn if props.to is provided but there is no vue-router?\n\t\tif (hasVueRouterContext && props.to) {\n\t\t\t// Note: RouterLink is used as globally registered component (by name) and not imported intentionally\n\t\t\t// to use injected component from the app and not bundle it to the button\n\t\t\treturn 'RouterLink'\n\t\t} else if (props.href) {\n\t\t\treturn 'a'\n\t\t} else {\n\t\t\treturn 'button'\n\t\t}\n\t})\n\n\tconst isLink = computed(() => tag.value === 'RouterLink' || tag.value === 'a')\n\tconst isHyperLink = computed(() => tag.value === 'a')\n\tconst isRouterLink = computed(() => tag.value === 'RouterLink')\n\tconst isButton = computed(() => tag.value === 'button')\n\n\tconst attrs = computed(() => {\n\t\tif (tag.value === 'RouterLink') {\n\t\t\treturn {\n\t\t\t\tto: props.to,\n\t\t\t\tactiveClass: 'active',\n\t\t\t\t...(props.additionalAttrs?.('RouterLink') ?? {}),\n\t\t\t}\n\t\t} else if (tag.value === 'a') {\n\t\t\treturn {\n\t\t\t\thref: props.href,\n\t\t\t\ttarget: props.target,\n\t\t\t\tdownload: props.download || undefined,\n\t\t\t\trel: 'nofollow noreferrer noopener',\n\t\t\t\t...(props.additionalAttrs?.('a') ?? {}),\n\t\t\t}\n\t\t} else if (tag.value === 'button') {\n\t\t\treturn {\n\t\t\t\ttype: props.type || 'button',\n\t\t\t\tdisabled: props.disabled,\n\t\t\t\t...(props.additionalAttrs?.('button') ?? {}),\n\t\t\t}\n\t\t}\n\t})\n\n\treturn {\n\t\ttag,\n\t\tisLink,\n\t\tisHyperLink,\n\t\tisRouterLink,\n\t\tisButton,\n\t\tattrs,\n\t}\n}\n","<!--\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 { AnchorHTMLAttributes } from 'vue'\nimport type { RawLocation } from 'vue-router'\n\nimport { mdiArrowTopRight, mdiOpenInNew } from '@mdi/js'\nimport { toRef } from '@vueuse/core'\nimport { computed } from 'vue'\nimport NcFormBoxItem from '../NcFormBox/NcFormBoxItem.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\nimport { useButtonLink } from '../../composables/useButtonLink.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Main label */\n\tlabel?: string\n\t/** Optional description below the label, also used for the aria-describedby */\n\tdescription?: string\n\t/** Accent on the description instead of the label (see docs) */\n\tinvertedAccent?: boolean\n\t/** RouterLink's `to` prop; when provided, renders as `<RouterLink>` (takes precedence over the `href` prop) */\n\tto?: RawLocation\n\t/** Hyperlink `href` attribute; when provided, renders as `<a>` */\n\thref?: string\n\t/** Hyperlink's target attribute */\n\ttarget?: AnchorHTMLAttributes['target']\n\t/** Button's disabled attribute, not applicable to links */\n\tdisabled?: boolean\n}>(), {\n\tlabel: undefined,\n\tdescription: undefined,\n\tinvertedAccent: false,\n\tto: undefined,\n\thref: undefined,\n\ttarget: undefined, // TODO: should it be _blank by default?\n\tdisabled: false,\n})\n\ndefineEmits<{\n\t/** Native click event */\n\t(e: 'click', event: MouseEvent): void\n}>()\n\nconst { tag, attrs, isLink } = useButtonLink({\n\tto: toRef(() => props.to),\n\thref: toRef(() => props.href),\n\ttarget: toRef(() => props.target),\n\tdisabled: toRef(() => props.disabled),\n})\n\nconst icon = computed(() => {\n\tif (isLink.value) {\n\t\treturn props.target === '_blank' ? mdiOpenInNew : mdiArrowTopRight\n\t}\n\treturn undefined\n})\n</script>\n\n<template>\n\t<NcFormBoxItem\n\t\t:tag=\"tag\"\n\t\t:item-classes=\"[\n\t\t\t'button-vue', /* Reset server's global HTML button styles */\n\t\t\t$style.formBoxButton,\n\t\t]\"\n\t\t:inverted-accent=\"invertedAccent\"\n\t\tv-bind=\"attrs\"\n\t\ttabindex=\"0\"\n\t\t@click=\"$emit('click', $event)\">\n\t\t<template v-if=\"$scopedSlots.default || label\" #default>\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<slot>\n\t\t\t\t{{ label }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$scopedSlots.description || description\" #description>\n\t\t\t<!-- @slot Custom description content -->\n\t\t\t<slot name=\"description\">\n\t\t\t\t{{ description }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$scopedSlots.icon || icon\" #icon>\n\t\t\t<!-- @slot Required icon (links have a default icon) -->\n\t\t\t<slot name=\"icon\">\n\t\t\t\t<NcIconSvgWrapper v-if=\"icon\" :path=\"icon\" inline />\n\t\t\t</slot>\n\t\t</template>\n\t</NcFormBoxItem>\n</template>\n\n<style lang=\"scss\" module>\n.formBoxButton {\n\t/* Reset default HTML button styles */\n\tbackground: unset;\n\tborder: none;\n\tcolor: inherit;\n\tfont-size: inherit;\n\tfont-weight: inherit;\n\ttext-decoration: none;\n\ttext-align: inherit;\n\tline-height: inherit;\n\tpadding: 0;\n\tmargin: 0;\n\toutline: none;\n}\n</style>\n\n<docs>\n### General\n\nAn interactive button-like item within `<NcFormBox>`. It can be a button or a native link/router link if `to` or `href` props are provided.\n\nLike other form box items, it has a label and an optional description.\n\n```vue\n<script>\nimport { mdiContentCopy, mdiInformationOutline } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn {\n\t\t\tmdiContentCopy,\n\t\t\tmdiInformationOutline,\n\t\t}\n\t},\n}\n</script>\n\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"Nextcloud\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\" />\n\n\t\t<NcFormBoxButton\n\t\t\thref=\"https://nextcloud-vue-components.netlify.app\">\n\t\t\t<code>@nextcloud/vue</code> documentation\n\t\t</NcFormBoxButton>\n\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"About\"\n\t\t\tdescription=\"Installation details\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiInformationOutline\" inline />\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"Public signing key\">\n\t\t\t<template #description>\n\t\t\t\t<code>SSBkb24ndCBrbm93IHdoeSB5b3UgZGVjb2RlZCB0aGlzIHZhbHVlDQrgvLwg44GkIOKXlV/il5Ug4Ly944Gk</code>\n\t\t\t</template>\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\t</NcFormBox>\n</template>\n```\n\n### Inverted accent\n\nSometimes the description is more important than the label. In such cases use `inverted-accent` prop.\n\nFor example:\n- **Steps:** the description of the step is more important than the step number\n- **Copy button:** the value being copied is more important than the value label\n- **Folder picker:** the selected folder path is more important than the input label\n\n```vue\n<script>\nimport { mdiContentCopy, mdiDomain, mdiFolderOpenOutline } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn { mdiContentCopy, mdiDomain, mdiFolderOpenOutline }\n\t},\n}\n</script>\n\n<template>\n\t<div style=\"display: flex; flex-direction: column; gap: calc(4 * var(--default-grid-baseline));\">\n\t\t<NcFormGroup label=\"Mailvelope\" description=\"A browser extension that enables easy OpenPGP encryption and decryption of emails\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Step 1\"\n\t\t\t\t\tdescription=\"Install the browser extension\"\n\t\t\t\t\thref=\"https://www.mailvelope.com/\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\tinverted-accent />\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Step 2\"\n\t\t\t\t\tdescription=\"Enable the current domain\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiDomain\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\n\t\t<NcFormGroup label=\"CalDAV\" description=\"Access Nextcloud calendars from other apps and devices\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"CalDAV URL\"\n\t\t\t\t\tdescription=\"https://cloud.example.com/remote.php/dav/\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Server Address for iOS and macOS\"\n\t\t\t\t\tdescription=\"https://cloud.example.com/remote.php/dav/principals/users/user/\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\n\t\t<NcFormGroup label=\"Files\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Attachments folder\"\n\t\t\t\t\tdescription=\"/Talk\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiFolderOpenOutline\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\t</div>\n</template>\n```\n\n### Requirements\n\n- Label is required (`label` prop or the default slot)\n- Icon is required unless there is a default icon (links)\n\n```vue\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxButton description=\"No label example\">\n\t\t\t<template #icon>\n\t\t\t\t✅\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\t\t<NcFormBoxButton label=\"No icon example\"/>\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"No icon link example\"\n\t\t\tdescription=\"Links have a default icon\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\" />\n\t</NcFormBox>\n</template>\n```\n</docs>\n"],"names":["reactive","getCurrentInstance","computed","toRef","mdiOpenInNew","mdiArrowTopRight"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AA+DO,SAAS,cAAc,SAA0B;AAEvD,QAAM,QAAQA,IAAAA,SAAS,OAAO;AAE9B,QAAM,WAAWC,IAAAA,mBAAA;AACjB,QAAM,sBAAsB,aAAa,SAAS,MAAM;AAKxD,QAAM,MAAMC,IAAAA,SAAS,MAAM;AAE1B,QAAI,uBAAuB,MAAM,IAAI;AAGpC,aAAO;AAAA,IACR,WAAW,MAAM,MAAM;AACtB,aAAO;AAAA,IACR,OAAO;AACN,aAAO;AAAA,IACR;AAAA,EACD,CAAC;AAED,QAAM,SAASA,IAAAA,SAAS,MAAM,IAAI,UAAU,gBAAgB,IAAI,UAAU,GAAG;AAC7E,QAAM,cAAcA,IAAAA,SAAS,MAAM,IAAI,UAAU,GAAG;AACpD,QAAM,eAAeA,IAAAA,SAAS,MAAM,IAAI,UAAU,YAAY;AAC9D,QAAM,WAAWA,IAAAA,SAAS,MAAM,IAAI,UAAU,QAAQ;AAEtD,QAAM,QAAQA,IAAAA,SAAS,MAAM;AAC5B,QAAI,IAAI,UAAU,cAAc;AAC/B,aAAO;AAAA,QACN,IAAI,MAAM;AAAA,QACV,aAAa;AAAA,QACb,GAAI,MAAM,kBAAkB,YAAY,KAAK,CAAA;AAAA,MAAC;AAAA,IAEhD,WAAW,IAAI,UAAU,KAAK;AAC7B,aAAO;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,UAAU,MAAM,YAAY;AAAA,QAC5B,KAAK;AAAA,QACL,GAAI,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAAA,MAAC;AAAA,IAEvC,WAAW,IAAI,UAAU,UAAU;AAClC,aAAO;AAAA,QACN,MAAM,MAAM,QAAQ;AAAA,QACpB,UAAU,MAAM;AAAA,QAChB,GAAI,MAAM,kBAAkB,QAAQ,KAAK,CAAA;AAAA,MAAC;AAAA,IAE5C;AAAA,EACD,CAAC;AAED,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF;;;;;;;;;;;;;;;AC7EA,UAAM,EAAE,KAAK,OAAO,OAAA,IAAW,cAAc;AAAA,MAC5C,IAAIC,KAAAA,MAAM,MAAM,MAAM,EAAE;AAAA,MACxB,MAAMA,KAAAA,MAAM,MAAM,MAAM,IAAI;AAAA,MAC5B,QAAQA,KAAAA,MAAM,MAAM,MAAM,MAAM;AAAA,MAChC,UAAUA,KAAAA,MAAM,MAAM,MAAM,QAAQ;AAAA,IAAA,CACpC;AAED,UAAM,OAAOD,IAAAA,SAAS,MAAM;AAC3B,UAAI,OAAO,OAAO;AACjB,eAAO,MAAM,WAAW,WAAWE,IAAAA,eAAeC,IAAAA;AAAAA,MACnD;AACA,aAAO;AAAA,IACR,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"NcFormBoxButton-WatYqw6i.cjs","sources":["../../src/composables/useButtonLink.ts","../../src/components/NcFormBoxButton/NcFormBoxButton.vue"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRef } from '@vueuse/core'\nimport type { AnchorHTMLAttributes, ButtonHTMLAttributes } from 'vue'\nimport type { RawLocation } from 'vue-router'\n\nimport { computed, getCurrentInstance, reactive } from 'vue'\n\ntype ButtonLinkProps = {\n\t// Required - general link props\n\n\t/**\n\t * RouterLink's to props and a trigger to use RouterLink.\n\t * Note: This takes precedence over the href attribute.\n\t */\n\tto: MaybeRef<RawLocation | undefined>\n\t/**\n\t * HyperLink href attribute and a trigger to use <a> hyperlink.\n\t */\n\thref: MaybeRef<string | undefined>\n\t/**\n\t * Define additional attributes, based on the tag\n\t */\n\tadditionalAttrs?: (tag: 'RouterLink' | 'a' | 'button') => object | undefined\n\n\t// RouterLink props\n\n\t/**\n\t * RouterLink's activeClass prop\n\t */\n\tactiveClass?: MaybeRef<string | undefined>\n\n\t// Hyperlink\n\n\t/**\n\t * <a> hyperlink's target attribute\n\t */\n\ttarget?: MaybeRef<AnchorHTMLAttributes['target'] | undefined>\n\t/**\n\t * <a> hyperlink's download attribute\n\t */\n\tdownload?: MaybeRef<string | boolean | undefined>\n\n\t// Button\n\n\t/**\n\t * <button> element's type attribute, but default to \"button\" instead of \"submit\"\n\t */\n\ttype?: MaybeRef<ButtonHTMLAttributes['type'] | undefined>\n\t/**\n\t * <button> element's disabled attribute\n\t */\n\tdisabled?: MaybeRef<boolean | undefined>\n}\n\n/**\n * Reusable implementation of an interactive button-like element that can be a link or a button\n *\n * @param options - Props to determine the button/link behavior. Can be a reactive object, or an object with nested refs, or mixed.\n */\nexport function useButtonLink(options: ButtonLinkProps) {\n\t// Resolve all MaybeRef-s values and maybe reactive object via unwrapping\n\tconst props = reactive(options)\n\n\tconst instance = getCurrentInstance()!\n\tconst hasVueRouterContext = '$router' in instance.proxy.$root\n\n\t/**\n\t * Tag name to be used\n\t */\n\tconst tag = computed(() => {\n\t\t// TODO: should we warn if props.to is provided but there is no vue-router?\n\t\tif (hasVueRouterContext && props.to) {\n\t\t\t// Note: RouterLink is used as globally registered component (by name) and not imported intentionally\n\t\t\t// to use injected component from the app and not bundle it to the button\n\t\t\treturn 'RouterLink'\n\t\t} else if (props.href) {\n\t\t\treturn 'a'\n\t\t} else {\n\t\t\treturn 'button'\n\t\t}\n\t})\n\n\tconst isLink = computed(() => tag.value === 'RouterLink' || tag.value === 'a')\n\tconst isHyperLink = computed(() => tag.value === 'a')\n\tconst isRouterLink = computed(() => tag.value === 'RouterLink')\n\tconst isButton = computed(() => tag.value === 'button')\n\n\tconst attrs = computed(() => {\n\t\tif (tag.value === 'RouterLink') {\n\t\t\treturn {\n\t\t\t\tto: props.to,\n\t\t\t\tactiveClass: 'active',\n\t\t\t\t...(props.additionalAttrs?.('RouterLink') ?? {}),\n\t\t\t}\n\t\t} else if (tag.value === 'a') {\n\t\t\treturn {\n\t\t\t\thref: props.href,\n\t\t\t\ttarget: props.target,\n\t\t\t\tdownload: props.download || undefined,\n\t\t\t\trel: 'nofollow noreferrer noopener',\n\t\t\t\t...(props.additionalAttrs?.('a') ?? {}),\n\t\t\t}\n\t\t} else if (tag.value === 'button') {\n\t\t\treturn {\n\t\t\t\ttype: props.type || 'button',\n\t\t\t\tdisabled: props.disabled,\n\t\t\t\t...(props.additionalAttrs?.('button') ?? {}),\n\t\t\t}\n\t\t}\n\t})\n\n\treturn {\n\t\ttag,\n\t\tisLink,\n\t\tisHyperLink,\n\t\tisRouterLink,\n\t\tisButton,\n\t\tattrs,\n\t}\n}\n","<!--\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 { AnchorHTMLAttributes } from 'vue'\nimport type { RawLocation } from 'vue-router'\n\nimport { mdiArrowTopRight, mdiOpenInNew } from '@mdi/js'\nimport { toRef } from '@vueuse/core'\nimport { computed } from 'vue'\nimport NcFormBoxItem from '../NcFormBox/NcFormBoxItem.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\nimport { useButtonLink } from '../../composables/useButtonLink.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Main label */\n\tlabel?: string\n\t/** Optional description below the label, also used for the aria-describedby */\n\tdescription?: string\n\t/** Accent on the description instead of the label (see docs) */\n\tinvertedAccent?: boolean\n\t/** RouterLink's `to` prop; when provided, renders as `<RouterLink>` (takes precedence over the `href` prop) */\n\tto?: RawLocation\n\t/** Hyperlink `href` attribute; when provided, renders as `<a>` */\n\thref?: string\n\t/** Hyperlink's target attribute */\n\ttarget?: AnchorHTMLAttributes['target']\n\t/** Button's disabled attribute, not applicable to links */\n\tdisabled?: boolean\n}>(), {\n\tlabel: undefined,\n\tdescription: undefined,\n\tinvertedAccent: false,\n\tto: undefined,\n\thref: undefined,\n\ttarget: undefined, // TODO: should it be _blank by default?\n\tdisabled: false,\n})\n\ndefineEmits<{\n\t/** Native click event */\n\t(e: 'click', event: MouseEvent): void\n}>()\n\nconst { tag, attrs, isLink } = useButtonLink({\n\tto: toRef(() => props.to),\n\thref: toRef(() => props.href),\n\ttarget: toRef(() => props.target),\n\tdisabled: toRef(() => props.disabled),\n})\n\nconst icon = computed(() => {\n\tif (isLink.value) {\n\t\treturn props.target === '_blank' ? mdiOpenInNew : mdiArrowTopRight\n\t}\n\treturn undefined\n})\n</script>\n\n<template>\n\t<NcFormBoxItem\n\t\t:tag=\"tag\"\n\t\t:item-classes=\"[\n\t\t\t'button-vue', /* Reset server's global HTML button styles */\n\t\t\t$style.formBoxButton,\n\t\t]\"\n\t\t:inverted-accent=\"invertedAccent\"\n\t\tv-bind=\"attrs\"\n\t\ttabindex=\"0\"\n\t\t@click=\"$emit('click', $event)\">\n\t\t<template v-if=\"$scopedSlots.default || label\" #default>\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<slot>\n\t\t\t\t{{ label }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$scopedSlots.description || description\" #description>\n\t\t\t<!-- @slot Custom description content -->\n\t\t\t<slot name=\"description\">\n\t\t\t\t{{ description }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$scopedSlots.icon || icon\" #icon>\n\t\t\t<!-- @slot Required icon (links have a default icon) -->\n\t\t\t<slot name=\"icon\">\n\t\t\t\t<NcIconSvgWrapper v-if=\"icon\" :path=\"icon\" inline />\n\t\t\t</slot>\n\t\t</template>\n\t</NcFormBoxItem>\n</template>\n\n<style lang=\"scss\" module>\n.formBoxButton {\n\t/* Reset default HTML button styles */\n\tbackground: unset;\n\tborder: none;\n\tcolor: inherit;\n\tfont-size: inherit;\n\tfont-weight: inherit;\n\ttext-decoration: none;\n\ttext-align: inherit;\n\tline-height: inherit;\n\tpadding: 0;\n\tmargin: 0;\n\toutline: none;\n}\n</style>\n\n<docs>\n### General\n\nAn interactive button-like item within `<NcFormBox>`. It can be a button or a native link/router link if `to` or `href` props are provided.\n\nLike other form box items, it has a label and an optional description.\n\n```vue\n<script>\nimport { mdiContentCopy, mdiInformationOutline } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn {\n\t\t\tmdiContentCopy,\n\t\t\tmdiInformationOutline,\n\t\t}\n\t},\n}\n</script>\n\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"Nextcloud\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\" />\n\n\t\t<NcFormBoxButton\n\t\t\thref=\"https://nextcloud-vue-components.netlify.app\">\n\t\t\t<code>@nextcloud/vue</code> documentation\n\t\t</NcFormBoxButton>\n\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"About\"\n\t\t\tdescription=\"Installation details\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiInformationOutline\" inline />\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"Public signing key\">\n\t\t\t<template #description>\n\t\t\t\t<code>SSBkb24ndCBrbm93IHdoeSB5b3UgZGVjb2RlZCB0aGlzIHZhbHVlDQrgvLwg44GkIOKXlV/il5Ug4Ly944Gk</code>\n\t\t\t</template>\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\t</NcFormBox>\n</template>\n```\n\n### Inverted accent\n\nSometimes the description is more important than the label. In such cases use `inverted-accent` prop.\n\nFor example:\n- **Steps:** the description of the step is more important than the step number\n- **Copy button:** the value being copied is more important than the value label\n- **Folder picker:** the selected folder path is more important than the input label\n\n```vue\n<script>\nimport { mdiContentCopy, mdiDomain, mdiFolderOpenOutline } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn { mdiContentCopy, mdiDomain, mdiFolderOpenOutline }\n\t},\n}\n</script>\n\n<template>\n\t<div style=\"display: flex; flex-direction: column; gap: calc(4 * var(--default-grid-baseline));\">\n\t\t<NcFormGroup label=\"Mailvelope\" description=\"A browser extension that enables easy OpenPGP encryption and decryption of emails\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Step 1\"\n\t\t\t\t\tdescription=\"Install the browser extension\"\n\t\t\t\t\thref=\"https://www.mailvelope.com/\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\tinverted-accent />\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Step 2\"\n\t\t\t\t\tdescription=\"Enable the current domain\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiDomain\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\n\t\t<NcFormGroup label=\"CalDAV\" description=\"Access Nextcloud calendars from other apps and devices\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"CalDAV URL\"\n\t\t\t\t\tdescription=\"https://cloud.example.com/remote.php/dav/\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Server Address for iOS and macOS\"\n\t\t\t\t\tdescription=\"https://cloud.example.com/remote.php/dav/principals/users/user/\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiContentCopy\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\n\t\t<NcFormGroup label=\"Files\">\n\t\t\t<NcFormBox>\n\t\t\t\t<NcFormBoxButton\n\t\t\t\t\tlabel=\"Attachments folder\"\n\t\t\t\t\tdescription=\"/Talk\"\n\t\t\t\t\tinverted-accent>\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiFolderOpenOutline\" inline />\n\t\t\t\t\t</template>\n\t\t\t\t</NcFormBoxButton>\n\t\t\t</NcFormBox>\n\t\t</NcFormGroup>\n\t</div>\n</template>\n```\n\n### Requirements\n\n- Label is required (`label` prop or the default slot)\n- Icon is required unless there is a default icon (links)\n\n```vue\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxButton description=\"No label example\">\n\t\t\t<template #icon>\n\t\t\t\t✅\n\t\t\t</template>\n\t\t</NcFormBoxButton>\n\t\t<NcFormBoxButton label=\"No icon example\"/>\n\t\t<NcFormBoxButton\n\t\t\tlabel=\"No icon link example\"\n\t\t\tdescription=\"Links have a default icon\"\n\t\t\thref=\"https://nextcloud.com\"\n\t\t\ttarget=\"_blank\" />\n\t</NcFormBox>\n</template>\n```\n</docs>\n"],"names":["reactive","getCurrentInstance","computed","toRef","mdiOpenInNew","mdiArrowTopRight"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AA+DO,SAAS,cAAc,SAA0B;AAEvD,QAAM,QAAQA,IAAAA,SAAS,OAAO;AAE9B,QAAM,WAAWC,IAAAA,mBAAA;AACjB,QAAM,sBAAsB,aAAa,SAAS,MAAM;AAKxD,QAAM,MAAMC,IAAAA,SAAS,MAAM;AAE1B,QAAI,uBAAuB,MAAM,IAAI;AAGpC,aAAO;AAAA,IACR,WAAW,MAAM,MAAM;AACtB,aAAO;AAAA,IACR,OAAO;AACN,aAAO;AAAA,IACR;AAAA,EACD,CAAC;AAED,QAAM,SAASA,IAAAA,SAAS,MAAM,IAAI,UAAU,gBAAgB,IAAI,UAAU,GAAG;AAC7E,QAAM,cAAcA,IAAAA,SAAS,MAAM,IAAI,UAAU,GAAG;AACpD,QAAM,eAAeA,IAAAA,SAAS,MAAM,IAAI,UAAU,YAAY;AAC9D,QAAM,WAAWA,IAAAA,SAAS,MAAM,IAAI,UAAU,QAAQ;AAEtD,QAAM,QAAQA,IAAAA,SAAS,MAAM;AAC5B,QAAI,IAAI,UAAU,cAAc;AAC/B,aAAO;AAAA,QACN,IAAI,MAAM;AAAA,QACV,aAAa;AAAA,QACb,GAAI,MAAM,kBAAkB,YAAY,KAAK,CAAA;AAAA,MAAC;AAAA,IAEhD,WAAW,IAAI,UAAU,KAAK;AAC7B,aAAO;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,UAAU,MAAM,YAAY;AAAA,QAC5B,KAAK;AAAA,QACL,GAAI,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAAA,MAAC;AAAA,IAEvC,WAAW,IAAI,UAAU,UAAU;AAClC,aAAO;AAAA,QACN,MAAM,MAAM,QAAQ;AAAA,QACpB,UAAU,MAAM;AAAA,QAChB,GAAI,MAAM,kBAAkB,QAAQ,KAAK,CAAA;AAAA,MAAC;AAAA,IAE5C;AAAA,EACD,CAAC;AAED,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF;;;;;;;;;;;;;;;AC7EA,UAAM,EAAE,KAAK,OAAO,OAAA,IAAW,cAAc;AAAA,MAC5C,IAAIC,KAAAA,MAAM,MAAM,MAAM,EAAE;AAAA,MACxB,MAAMA,KAAAA,MAAM,MAAM,MAAM,IAAI;AAAA,MAC5B,QAAQA,KAAAA,MAAM,MAAM,MAAM,MAAM;AAAA,MAChC,UAAUA,KAAAA,MAAM,MAAM,MAAM,QAAQ;AAAA,IAAA,CACpC;AAED,UAAM,OAAOD,IAAAA,SAAS,MAAM;AAC3B,UAAI,OAAO,OAAO;AACjB,eAAO,MAAM,WAAW,WAAWE,IAAAA,eAAeC,IAAAA;AAAAA,MACnD;AACA,aAAO;AAAA,IACR,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineComponent } from "vue";
|
|
2
2
|
import { whenever } from "@vueuse/core";
|
|
3
|
-
import { N as NcFormBoxButton } from "./NcFormBoxButton-
|
|
3
|
+
import { N as NcFormBoxButton } from "./NcFormBoxButton-4xiKHRJH.mjs";
|
|
4
4
|
import { N as NcIconSvgWrapper } from "./NcIconSvgWrapper-Bui9PhAS.mjs";
|
|
5
|
-
import { u as useCopy } from "./useCopy-
|
|
5
|
+
import { u as useCopy } from "./useCopy-BWnr0WjK.mjs";
|
|
6
6
|
import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
|
|
7
7
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
8
8
|
__name: "NcFormBoxCopyButton",
|
|
@@ -44,4 +44,4 @@ const NcFormBoxCopyButton = __component__.exports;
|
|
|
44
44
|
export {
|
|
45
45
|
NcFormBoxCopyButton as N
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=NcFormBoxCopyButton-
|
|
47
|
+
//# sourceMappingURL=NcFormBoxCopyButton-AeYq9iKM.mjs.map
|
package/dist/chunks/{NcFormBoxCopyButton-BQt4cqDo.mjs.map → NcFormBoxCopyButton-AeYq9iKM.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcFormBoxCopyButton-
|
|
1
|
+
{"version":3,"file":"NcFormBoxCopyButton-AeYq9iKM.mjs","sources":["../../src/components/NcFormBoxCopyButton/NcFormBoxCopyButton.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 { whenever } from '@vueuse/core'\nimport NcFormBoxButton from '../NcFormBoxButton/NcFormBoxButton.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\nimport { useCopy } from '../../composables/useCopy.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Copied value's value */\n\tlabel?: string\n\t/** The value to be copied */\n\tvalue: string\n\t/** Native disabled attribute */\n\tdisabled?: boolean\n}>(), {\n\tlabel: undefined,\n\tdisabled: false,\n})\n\nconst emit = defineEmits<{\n\t/** Value has been successfully copied */\n\t(event: 'copy'): void\n}>()\n\nconst { isCopied, copy, icon, altText } = useCopy(() => props.value)\n\nwhenever(isCopied, () => emit('copy'))\n</script>\n\n<template>\n\t<NcFormBoxButton\n\t\t:disabled=\"disabled\"\n\t\tinverted-accent\n\t\t@click=\"copy\">\n\t\t<template v-if=\"$slots.default || label\" #default>\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t{{ altText }}\n\t\t\t</span>\n\t\t\t<slot>\n\t\t\t\t{{ label }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template #description>\n\t\t\t{{ value }}\n\t\t</template>\n\t\t<template #icon>\n\t\t\t<NcIconSvgWrapper :path=\"icon\" inline />\n\t\t</template>\n\t</NcFormBoxButton>\n</template>\n\n<docs>\n### General\n\n`NcFormBoxButton` set up to be a copy button.\n\n```vue\n<template>\n\t<NcFormGroup label=\"CalDAV\" description=\"Access Nextcloud calendars from other apps and devices\">\n\t\t<NcFormBox>\n\t\t\t<NcFormBoxCopyButton\n\t\t\t\tlabel=\"CalDAV URL\"\n\t\t\t\tvalue=\"https://cloud.example.com/remote.php/dav/\" />\n\t\t\t<NcFormBoxCopyButton\n\t\t\t\tlabel=\"Server Address for iOS and macOS\"\n\t\t\t\tvalue=\"https://cloud.example.com/remote.php/dav/principals/users/user/\" />\n\t\t</NcFormBox>\n\t</NcFormGroup>\n</template>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA4BA,UAAM,EAAE,UAAU,MAAM,MAAM,YAAY,QAAQ,MAAM,MAAM,KAAK;AAEnE,aAAS,UAAU,MAAM,KAAK,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const Vue = require("vue");
|
|
3
3
|
const core = require("@vueuse/core");
|
|
4
|
-
const NcFormBoxButton = require("./NcFormBoxButton-
|
|
4
|
+
const NcFormBoxButton = require("./NcFormBoxButton-WatYqw6i.cjs");
|
|
5
5
|
const NcIconSvgWrapper = require("./NcIconSvgWrapper-Bbl4kXZI.cjs");
|
|
6
|
-
const useCopy = require("./useCopy-
|
|
6
|
+
const useCopy = require("./useCopy-B8YTkOhE.cjs");
|
|
7
7
|
const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
|
|
8
8
|
const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
9
9
|
__name: "NcFormBoxCopyButton",
|
|
@@ -43,4 +43,4 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
|
43
43
|
);
|
|
44
44
|
const NcFormBoxCopyButton = __component__.exports;
|
|
45
45
|
exports.NcFormBoxCopyButton = NcFormBoxCopyButton;
|
|
46
|
-
//# sourceMappingURL=NcFormBoxCopyButton-
|
|
46
|
+
//# sourceMappingURL=NcFormBoxCopyButton-VM720MPU.cjs.map
|
package/dist/chunks/{NcFormBoxCopyButton-CthOiHuc.cjs.map → NcFormBoxCopyButton-VM720MPU.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcFormBoxCopyButton-
|
|
1
|
+
{"version":3,"file":"NcFormBoxCopyButton-VM720MPU.cjs","sources":["../../src/components/NcFormBoxCopyButton/NcFormBoxCopyButton.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 { whenever } from '@vueuse/core'\nimport NcFormBoxButton from '../NcFormBoxButton/NcFormBoxButton.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\nimport { useCopy } from '../../composables/useCopy.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Copied value's value */\n\tlabel?: string\n\t/** The value to be copied */\n\tvalue: string\n\t/** Native disabled attribute */\n\tdisabled?: boolean\n}>(), {\n\tlabel: undefined,\n\tdisabled: false,\n})\n\nconst emit = defineEmits<{\n\t/** Value has been successfully copied */\n\t(event: 'copy'): void\n}>()\n\nconst { isCopied, copy, icon, altText } = useCopy(() => props.value)\n\nwhenever(isCopied, () => emit('copy'))\n</script>\n\n<template>\n\t<NcFormBoxButton\n\t\t:disabled=\"disabled\"\n\t\tinverted-accent\n\t\t@click=\"copy\">\n\t\t<template v-if=\"$slots.default || label\" #default>\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<span class=\"hidden-visually\">\n\t\t\t\t{{ altText }}\n\t\t\t</span>\n\t\t\t<slot>\n\t\t\t\t{{ label }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template #description>\n\t\t\t{{ value }}\n\t\t</template>\n\t\t<template #icon>\n\t\t\t<NcIconSvgWrapper :path=\"icon\" inline />\n\t\t</template>\n\t</NcFormBoxButton>\n</template>\n\n<docs>\n### General\n\n`NcFormBoxButton` set up to be a copy button.\n\n```vue\n<template>\n\t<NcFormGroup label=\"CalDAV\" description=\"Access Nextcloud calendars from other apps and devices\">\n\t\t<NcFormBox>\n\t\t\t<NcFormBoxCopyButton\n\t\t\t\tlabel=\"CalDAV URL\"\n\t\t\t\tvalue=\"https://cloud.example.com/remote.php/dav/\" />\n\t\t\t<NcFormBoxCopyButton\n\t\t\t\tlabel=\"Server Address for iOS and macOS\"\n\t\t\t\tvalue=\"https://cloud.example.com/remote.php/dav/principals/users/user/\" />\n\t\t</NcFormBox>\n\t</NcFormGroup>\n</template>\n```\n</docs>\n"],"names":["useCopy","whenever"],"mappings":";;;;;;;;;;;;;;;;;AA4BA,UAAM,EAAE,UAAU,MAAM,MAAM,YAAYA,QAAAA,QAAQ,MAAM,MAAM,KAAK;AAEnEC,SAAAA,SAAS,UAAU,MAAM,KAAK,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require('../assets/NcFormBoxItem-BfXKp9xJ.css');
|
|
2
2
|
"use strict";
|
|
3
3
|
const Vue = require("vue");
|
|
4
|
-
const useNcFormBox = require("./useNcFormBox-
|
|
4
|
+
const useNcFormBox = require("./useNcFormBox-XowgPxpI.cjs");
|
|
5
5
|
const createElementId = require("./createElementId-lalylSCf.cjs");
|
|
6
6
|
const legacy = require("./legacy-KBXhWdRy.cjs");
|
|
7
7
|
const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
|
|
@@ -83,4 +83,4 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
|
83
83
|
);
|
|
84
84
|
const NcFormBoxItem = __component__.exports;
|
|
85
85
|
exports.NcFormBoxItem = NcFormBoxItem;
|
|
86
|
-
//# sourceMappingURL=NcFormBoxItem-
|
|
86
|
+
//# sourceMappingURL=NcFormBoxItem-CK0Zakr1.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcFormBoxItem-
|
|
1
|
+
{"version":3,"file":"NcFormBoxItem-CK0Zakr1.cjs","sources":["../../src/components/NcFormBox/NcFormBoxItem.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script lang=\"ts\">\nexport default {\n\tinheritAttrs: false,\n}\n</script>\n\n<script setup lang=\"ts\">\nimport type { VueClassType } from '../../utils/VueTypes.ts'\n\nimport { useSlots } from 'vue'\nimport { useNcFormBox } from '../../components/NcFormBox/useNcFormBox.ts'\nimport { createElementId } from '../../utils/createElementId.ts'\nimport { isLegacy32 } from '../../utils/legacy.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Interactive item element's tag */\n\ttag: string\n\t/** Main Label */\n\tlabel?: string\n\t/** Optional description below the label, also used for the aria-describedby */\n\tdescription?: string\n\t/** Accent on the description instead of the label */\n\tinvertedAccent?: boolean\n\t/** Interactive item classes */\n\titemClasses?: VueClassType\n}>(), {\n\tlabel: undefined,\n\tdescription: undefined,\n\tinvertedAccent: false,\n\tclass: undefined,\n\titemClasses: undefined,\n})\n\ndefineEmits<{\n\t/** Click on the item */\n\t(e: 'click', event: MouseEvent): void\n}>()\n\nconst slots = useSlots()\n\nconst { formBoxItemClass } = useNcFormBox()\n\nconst descriptionId = createElementId()\nconst hasDescription = () => !!props.description || !!slots.description\n</script>\n\n<template>\n\t<div\n\t\t:class=\"[\n\t\t\t$style.formBoxItem,\n\t\t\tformBoxItemClass,\n\t\t\t{\n\t\t\t\t[$style.formBoxItem_inverted]: invertedAccent && hasDescription(),\n\t\t\t\t[$style.formBoxItem_legacy]: isLegacy32,\n\t\t\t},\n\t\t]\">\n\t\t<span :class=\"$style.formBoxItem__content\">\n\t\t\t<component\n\t\t\t\t:is=\"tag\"\n\t\t\t\t:class=\"[$style.formBoxItem__element, itemClasses]\"\n\t\t\t\tv-bind=\"$attrs\"\n\t\t\t\t@click=\"$emit('click', $event)\">\n\t\t\t\t<!-- @slot Item's label custom content\n\t\t\t\t @binding {string} descriptionId IDRef of the description element if present -->\n\t\t\t\t<slot :description-id=\"descriptionId\">\n\t\t\t\t\t{{ label || '⚠️ Label is missing' }}\n\t\t\t\t</slot>\n\t\t\t</component>\n\t\t\t<span v-if=\"hasDescription()\" :id=\"descriptionId\" :class=\"$style.formBoxItem__description\">\n\t\t\t\t<!-- @slot Custom description content\n\t\t\t\t @binding {string} descriptionId IDRef of the description element if present -->\n\t\t\t\t<slot name=\"description\">\n\t\t\t\t\t{{ description }}\n\t\t\t\t</slot>\n\t\t\t</span>\n\t\t</span>\n\t\t<span :class=\"$style.formBoxItem__icon\">\n\t\t\t<!-- @slot Icon content -->\n\t\t\t<slot name=\"icon\" :description-id=\"descriptionId\">\n\t\t\t\t⚠️ Icon is missing\n\t\t\t</slot>\n\t\t</span>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.formBoxItem {\n\t--nc-form-box-item-border-width: 1px;\n\t--nc-form-box-item-min-height: 40px; // Special size defined by the design\n\t--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));\n\t--form-element-label-padding: calc(var(--form-element-label-offset) - var(--nc-form-box-item-border-width));\n\t// New colors we don't yet have in theming\n\t// TODO: add new colors to the theming\n\t--color-primary-element-extra-light: hsl(from var(--color-primary-element-light) h s calc(l * 1.045));\n\t--color-primary-element-extra-light-hover: hsl(from var(--color-primary-element-light-hover) h s calc(l * 1.045));\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: calc(2 * var(--default-grid-baseline));\n\tmin-height: var(--nc-form-box-item-min-height);\n\tpadding-inline: var(--form-element-label-padding);\n\tborder: 1px solid var(--color-primary-element-extra-light-hover);\n\tborder-bottom-width: 2px;\n\tborder-radius: var(--border-radius-element);\n\tbackground-color: var(--color-primary-element-extra-light);\n\tcolor: var(--color-main-text);\n\ttransition-property: color, border-color, background-color;\n\ttransition-duration: var(--animation-quick);\n\ttransition-timing-function: linear;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tcursor: pointer;\n\n\t* {\n\t\tcursor: inherit;\n\t}\n\n\t&:has(:disabled) {\n\t\tcursor: default;\n\t\topacity: 0.5;\n\t}\n\n\t&:hover:not(:has(:disabled)) {\n\t\tcolor: var(--color-primary-element-light-text);\n\t\tbackground-color: var(--color-primary-element-extra-light-hover);\n\t}\n\n\t&:has(:focus-visible) {\n\t\toutline: 2px solid var(--color-main-text);\n\t\tbox-shadow: 0 0 0 4px var(--color-main-background);\n\t}\n\n\t&.formBoxItem_legacy {\n\t\t--nc-form-box-item-border-width: 0px;\n\t\tborder: none;\n\t}\n\n\t&.formBoxItem_inverted {\n\t\t.formBoxItem__element {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\n\t\t.formBoxItem__description {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n}\n\n.formBoxItem__content {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding-block: calc(2 * var(--default-grid-baseline));\n\toverflow-wrap: anywhere;\n}\n\n// A trick for accessibility:\n// make entire component clickable while internally splitting the interactive item and the description\n.formBoxItem__element::after {\n\tcontent: '';\n\tposition: absolute;\n\tinset: 0;\n}\n\n.formBoxItem__description {\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.formBoxItem__icon {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n}\n</style>\n\n<docs>\nAn internal component\n</docs>\n"],"names":["useSlots","useNcFormBox","createElementId"],"mappings":";;;;;;AAMA,MAAA,cAAe;AAAA,EACd,cAAc;AACf;;;;;;;;;;;;;;AAmCA,UAAM,QAAQA,IAAAA,SAAA;AAEd,UAAM,EAAE,iBAAA,IAAqBC,0BAAA;AAE7B,UAAM,gBAAgBC,gBAAAA,gBAAA;AACtB,UAAM,iBAAiB,MAAM,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '../assets/NcFormBoxItem-BfXKp9xJ.css';
|
|
2
2
|
import { defineComponent, useSlots } from "vue";
|
|
3
|
-
import { u as useNcFormBox } from "./useNcFormBox-
|
|
3
|
+
import { u as useNcFormBox } from "./useNcFormBox-Djlh582y.mjs";
|
|
4
4
|
import { c as createElementId } from "./createElementId-DhjFt1I9.mjs";
|
|
5
5
|
import { i as isLegacy32 } from "./legacy-MK4GvP26.mjs";
|
|
6
6
|
import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
|
|
@@ -84,4 +84,4 @@ const NcFormBoxItem = __component__.exports;
|
|
|
84
84
|
export {
|
|
85
85
|
NcFormBoxItem as N
|
|
86
86
|
};
|
|
87
|
-
//# sourceMappingURL=NcFormBoxItem-
|
|
87
|
+
//# sourceMappingURL=NcFormBoxItem-DJZrmlTP.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcFormBoxItem-
|
|
1
|
+
{"version":3,"file":"NcFormBoxItem-DJZrmlTP.mjs","sources":["../../src/components/NcFormBox/NcFormBoxItem.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script lang=\"ts\">\nexport default {\n\tinheritAttrs: false,\n}\n</script>\n\n<script setup lang=\"ts\">\nimport type { VueClassType } from '../../utils/VueTypes.ts'\n\nimport { useSlots } from 'vue'\nimport { useNcFormBox } from '../../components/NcFormBox/useNcFormBox.ts'\nimport { createElementId } from '../../utils/createElementId.ts'\nimport { isLegacy32 } from '../../utils/legacy.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Interactive item element's tag */\n\ttag: string\n\t/** Main Label */\n\tlabel?: string\n\t/** Optional description below the label, also used for the aria-describedby */\n\tdescription?: string\n\t/** Accent on the description instead of the label */\n\tinvertedAccent?: boolean\n\t/** Interactive item classes */\n\titemClasses?: VueClassType\n}>(), {\n\tlabel: undefined,\n\tdescription: undefined,\n\tinvertedAccent: false,\n\tclass: undefined,\n\titemClasses: undefined,\n})\n\ndefineEmits<{\n\t/** Click on the item */\n\t(e: 'click', event: MouseEvent): void\n}>()\n\nconst slots = useSlots()\n\nconst { formBoxItemClass } = useNcFormBox()\n\nconst descriptionId = createElementId()\nconst hasDescription = () => !!props.description || !!slots.description\n</script>\n\n<template>\n\t<div\n\t\t:class=\"[\n\t\t\t$style.formBoxItem,\n\t\t\tformBoxItemClass,\n\t\t\t{\n\t\t\t\t[$style.formBoxItem_inverted]: invertedAccent && hasDescription(),\n\t\t\t\t[$style.formBoxItem_legacy]: isLegacy32,\n\t\t\t},\n\t\t]\">\n\t\t<span :class=\"$style.formBoxItem__content\">\n\t\t\t<component\n\t\t\t\t:is=\"tag\"\n\t\t\t\t:class=\"[$style.formBoxItem__element, itemClasses]\"\n\t\t\t\tv-bind=\"$attrs\"\n\t\t\t\t@click=\"$emit('click', $event)\">\n\t\t\t\t<!-- @slot Item's label custom content\n\t\t\t\t @binding {string} descriptionId IDRef of the description element if present -->\n\t\t\t\t<slot :description-id=\"descriptionId\">\n\t\t\t\t\t{{ label || '⚠️ Label is missing' }}\n\t\t\t\t</slot>\n\t\t\t</component>\n\t\t\t<span v-if=\"hasDescription()\" :id=\"descriptionId\" :class=\"$style.formBoxItem__description\">\n\t\t\t\t<!-- @slot Custom description content\n\t\t\t\t @binding {string} descriptionId IDRef of the description element if present -->\n\t\t\t\t<slot name=\"description\">\n\t\t\t\t\t{{ description }}\n\t\t\t\t</slot>\n\t\t\t</span>\n\t\t</span>\n\t\t<span :class=\"$style.formBoxItem__icon\">\n\t\t\t<!-- @slot Icon content -->\n\t\t\t<slot name=\"icon\" :description-id=\"descriptionId\">\n\t\t\t\t⚠️ Icon is missing\n\t\t\t</slot>\n\t\t</span>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.formBoxItem {\n\t--nc-form-box-item-border-width: 1px;\n\t--nc-form-box-item-min-height: 40px; // Special size defined by the design\n\t--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));\n\t--form-element-label-padding: calc(var(--form-element-label-offset) - var(--nc-form-box-item-border-width));\n\t// New colors we don't yet have in theming\n\t// TODO: add new colors to the theming\n\t--color-primary-element-extra-light: hsl(from var(--color-primary-element-light) h s calc(l * 1.045));\n\t--color-primary-element-extra-light-hover: hsl(from var(--color-primary-element-light-hover) h s calc(l * 1.045));\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: calc(2 * var(--default-grid-baseline));\n\tmin-height: var(--nc-form-box-item-min-height);\n\tpadding-inline: var(--form-element-label-padding);\n\tborder: 1px solid var(--color-primary-element-extra-light-hover);\n\tborder-bottom-width: 2px;\n\tborder-radius: var(--border-radius-element);\n\tbackground-color: var(--color-primary-element-extra-light);\n\tcolor: var(--color-main-text);\n\ttransition-property: color, border-color, background-color;\n\ttransition-duration: var(--animation-quick);\n\ttransition-timing-function: linear;\n\t-webkit-user-select: none;\n\tuser-select: none;\n\tcursor: pointer;\n\n\t* {\n\t\tcursor: inherit;\n\t}\n\n\t&:has(:disabled) {\n\t\tcursor: default;\n\t\topacity: 0.5;\n\t}\n\n\t&:hover:not(:has(:disabled)) {\n\t\tcolor: var(--color-primary-element-light-text);\n\t\tbackground-color: var(--color-primary-element-extra-light-hover);\n\t}\n\n\t&:has(:focus-visible) {\n\t\toutline: 2px solid var(--color-main-text);\n\t\tbox-shadow: 0 0 0 4px var(--color-main-background);\n\t}\n\n\t&.formBoxItem_legacy {\n\t\t--nc-form-box-item-border-width: 0px;\n\t\tborder: none;\n\t}\n\n\t&.formBoxItem_inverted {\n\t\t.formBoxItem__element {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\n\t\t.formBoxItem__description {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n}\n\n.formBoxItem__content {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding-block: calc(2 * var(--default-grid-baseline));\n\toverflow-wrap: anywhere;\n}\n\n// A trick for accessibility:\n// make entire component clickable while internally splitting the interactive item and the description\n.formBoxItem__element::after {\n\tcontent: '';\n\tposition: absolute;\n\tinset: 0;\n}\n\n.formBoxItem__description {\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.formBoxItem__icon {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n}\n</style>\n\n<docs>\nAn internal component\n</docs>\n"],"names":[],"mappings":";;;;;AAMA,MAAA,cAAe;AAAA,EACd,cAAc;AACf;;;;;;;;;;;;;;AAmCA,UAAM,QAAQ,SAAA;AAEd,UAAM,EAAE,iBAAA,IAAqB,aAAA;AAE7B,UAAM,gBAAgB,gBAAA;AACtB,UAAM,iBAAiB,MAAM,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
require('../assets/NcFormBoxSwitch-
|
|
1
|
+
require('../assets/NcFormBoxSwitch-DScgbxtv.css');
|
|
2
2
|
"use strict";
|
|
3
3
|
const Vue = require("vue");
|
|
4
|
-
const mdi = require("./mdi-CVXTs58m.cjs");
|
|
5
4
|
const core = require("@vueuse/core");
|
|
6
|
-
const NcFormBoxItem = require("./NcFormBoxItem-
|
|
7
|
-
const
|
|
5
|
+
const NcFormBoxItem = require("./NcFormBoxItem-CK0Zakr1.cjs");
|
|
6
|
+
const NcIconToggleSwitch = require("./NcIconToggleSwitch-Cnov67_2.cjs");
|
|
8
7
|
const createElementId = require("./createElementId-lalylSCf.cjs");
|
|
9
8
|
const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
|
|
10
9
|
const __default__ = {
|
|
@@ -38,15 +37,13 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
|
38
37
|
// Watching it synchronously to emit the enable/disable events together with the update:modelValue event
|
|
39
38
|
flush: "sync"
|
|
40
39
|
});
|
|
41
|
-
return { __sfc: true, props, emit, model, inputId,
|
|
40
|
+
return { __sfc: true, props, emit, model, inputId, NcFormBoxItem: NcFormBoxItem.NcFormBoxItem, NcIconToggleSwitch: NcIconToggleSwitch.NcIconToggleSwitch };
|
|
42
41
|
}
|
|
43
42
|
});
|
|
44
|
-
const formBoxSwitch__input = "
|
|
45
|
-
const formBoxSwitch__icon = "_formBoxSwitch__icon_hjv1a_34";
|
|
43
|
+
const formBoxSwitch__input = "_formBoxSwitch__input_njiy8_20";
|
|
46
44
|
const style0 = {
|
|
47
|
-
"material-design-icon": "_material-design-
|
|
48
|
-
formBoxSwitch__input
|
|
49
|
-
formBoxSwitch__icon
|
|
45
|
+
"material-design-icon": "_material-design-icon_njiy8_12",
|
|
46
|
+
formBoxSwitch__input
|
|
50
47
|
};
|
|
51
48
|
var _sfc_render = function render() {
|
|
52
49
|
var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
|
|
@@ -71,7 +68,7 @@ var _sfc_render = function render() {
|
|
|
71
68
|
} else {
|
|
72
69
|
_setup.model = $$c;
|
|
73
70
|
}
|
|
74
|
-
} } }), _c(_setup.
|
|
71
|
+
} } }), _c(_setup.NcIconToggleSwitch, { attrs: { "checked": _vm.modelValue, "inline": "" } })];
|
|
75
72
|
} }], null, true) });
|
|
76
73
|
};
|
|
77
74
|
var _sfc_staticRenderFns = [];
|
|
@@ -93,4 +90,4 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
|
93
90
|
);
|
|
94
91
|
const NcFormBoxSwitch = __component__.exports;
|
|
95
92
|
exports.NcFormBoxSwitch = NcFormBoxSwitch;
|
|
96
|
-
//# sourceMappingURL=NcFormBoxSwitch-
|
|
93
|
+
//# sourceMappingURL=NcFormBoxSwitch-DGAjBKdo.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NcFormBoxSwitch-DGAjBKdo.cjs","sources":["../../src/components/NcFormBoxSwitch/NcFormBoxSwitch.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script lang=\"ts\">\nexport default {\n\tmodel: {\n\t\tprop: 'modelValue',\n\t\tevent: 'update:modelValue',\n\t},\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { watch } from 'vue'\nimport NcFormBoxItem from '../NcFormBox/NcFormBoxItem.vue'\nimport NcIconToggleSwitch from '../NcIconToggleSwitch/NcIconToggleSwitch.vue'\nimport { createElementId } from '../../utils/createElementId.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Main label */\n\tlabel?: string\n\t/** Optional description below the label, also used for the aria-describedby */\n\tdescription?: string\n\t/** Disabled state */\n\tdisabled?: boolean\n\t/** Switch toggle model value */\n\tmodelValue: boolean // eslint-disable-line vue/no-unused-properties\n}>(), {\n\tlabel: undefined,\n\tdescription: undefined,\n\tdisabled: false,\n})\n\nconst emit = defineEmits<{\n\t/** Switch is toggled ON */\n\t(event: 'enable'): void\n\t/** Switch is toggled OFF */\n\t(event: 'disable'): void\n\t(event: 'update:modelValue', value: boolean): void\n}>()\n\nconst model = useVModel(props, 'modelValue', emit, { passive: true })\n\nconst inputId = createElementId()\n\nwatch(model, () => {\n\tif (model.value) {\n\t\temit('enable')\n\t} else {\n\t\temit('disable')\n\t}\n}, {\n\t// defineModel emits update:modelValue synchronously\n\t// Watching it synchronously to emit the enable/disable events together with the update:modelValue event\n\tflush: 'sync',\n})\n</script>\n\n<template>\n\t<NcFormBoxItem\n\t\ttag=\"label\"\n\t\t:for=\"inputId\">\n\t\t<template v-if=\"$slots.default || label\" #default>\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<slot>\n\t\t\t\t{{ label }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$slots.description || description\" #description>\n\t\t\t<!-- @slot Custom description content -->\n\t\t\t<slot name=\"description\">\n\t\t\t\t{{ description }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template #icon=\"{ descriptionId }\">\n\t\t\t<input\n\t\t\t\t:id=\"inputId\"\n\t\t\t\tv-model=\"model\"\n\t\t\t\t:class=\"$style.formBoxSwitch__input\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\trole=\"switch\"\n\t\t\t\t:aria-describedby=\"descriptionId\"\n\t\t\t\t:disabled=\"disabled\">\n\t\t\t<NcIconToggleSwitch :checked=\"modelValue\" inline />\n\t\t</template>\n\t</NcFormBoxItem>\n</template>\n\n<style lang=\"scss\" module>\ninput.formBoxSwitch__input {\n\tmargin: 0;\n\twidth: var(--default-clickable-area);\n\t/* Keep it visually hidden but on the position of visual switch icon */\n\tposition: absolute;\n\tinset-block: 0;\n\tinset-inline-end: var(--form-element-label-offset);\n\tz-index: -1;\n\topacity: 0 !important;\n\t/* Override server styles */\n\theight: auto;\n\tcursor: inherit;\n}\n</style>\n\n<docs>\n### General\n\nA toggle switch to be used within `<NcFormBox>`.\n\nLike other form box items, it has a label and an optional description.\n\nIn addition to the standard `v-model` binding, it emits `enable` and `disable` events when toggled **on** or **off**.\n\n```vue\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tswitchValue: false,\n\t\t}\n\t},\n\tmethods: {\n\t\tlog: console.log,\n\t},\n}\n</script>\n\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxSwitch v-model=\"switchValue\" label=\"Turn camera and microphone off by default\" />\n\t\t<NcFormBoxSwitch\n\t\t\tv-model=\"switchValue\"\n\t\t\tlabel=\"Blur camera background by default\"\n\t\t\tdisabled />\n\t\t<NcFormBoxSwitch\n\t\t\tv-model=\"switchValue\"\n\t\t\tlabel=\"Skip device preview before joining a call\"\n\t\t\tdescription=\"Will always show if recording consent is required\"\n\t\t\t@update:modelValue=\"log('Switch toggled', $event, switchValue)\"\n\t\t\t@enable=\"log('Switch enabled', switchValue)\"\n\t\t\t@disable=\"log('Switch disabled', switchValue)\"\n\t\t/>\n\t\t<NcFormBoxSwitch v-model=\"switchValue\" />\n\t</NcFormBox>\n</template>\n```\n</docs>\n"],"names":["useVModel","createElementId","watch"],"mappings":";;;;;;;AAMA,MAAA,cAAe;AAAA,EACd,OAAO;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAET;;;;;;;;;;;;;AAiCA,UAAM,QAAQA,KAAAA,UAAU,OAAO,cAAc,MAAM,EAAE,SAAS,MAAM;AAEpE,UAAM,UAAUC,gBAAAA,gBAAA;AAEhBC,QAAAA,MAAM,OAAO,MAAM;AAClB,UAAI,MAAM,OAAO;AAChB,aAAK,QAAQ;AAAA,MACd,OAAO;AACN,aAAK,SAAS;AAAA,MACf;AAAA,IACD,GAAG;AAAA;AAAA;AAAA,MAGF,OAAO;AAAA,IAAA,CACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import '../assets/NcFormBoxSwitch-
|
|
1
|
+
import '../assets/NcFormBoxSwitch-DScgbxtv.css';
|
|
2
2
|
import { defineComponent, watch } from "vue";
|
|
3
|
-
import { g as mdiToggleSwitchOff, h as mdiToggleSwitch } from "./mdi-CgetWrFc.mjs";
|
|
4
3
|
import { useVModel } from "@vueuse/core";
|
|
5
|
-
import { N as NcFormBoxItem } from "./NcFormBoxItem-
|
|
6
|
-
import { N as
|
|
4
|
+
import { N as NcFormBoxItem } from "./NcFormBoxItem-DJZrmlTP.mjs";
|
|
5
|
+
import { N as NcIconToggleSwitch } from "./NcIconToggleSwitch-C2VDKTSP.mjs";
|
|
7
6
|
import { c as createElementId } from "./createElementId-DhjFt1I9.mjs";
|
|
8
7
|
import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
|
|
9
8
|
const __default__ = {
|
|
@@ -37,15 +36,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
37
36
|
// Watching it synchronously to emit the enable/disable events together with the update:modelValue event
|
|
38
37
|
flush: "sync"
|
|
39
38
|
});
|
|
40
|
-
return { __sfc: true, props, emit, model, inputId,
|
|
39
|
+
return { __sfc: true, props, emit, model, inputId, NcFormBoxItem, NcIconToggleSwitch };
|
|
41
40
|
}
|
|
42
41
|
});
|
|
43
|
-
const formBoxSwitch__input = "
|
|
44
|
-
const formBoxSwitch__icon = "_formBoxSwitch__icon_hjv1a_34";
|
|
42
|
+
const formBoxSwitch__input = "_formBoxSwitch__input_njiy8_20";
|
|
45
43
|
const style0 = {
|
|
46
|
-
"material-design-icon": "_material-design-
|
|
47
|
-
formBoxSwitch__input
|
|
48
|
-
formBoxSwitch__icon
|
|
44
|
+
"material-design-icon": "_material-design-icon_njiy8_12",
|
|
45
|
+
formBoxSwitch__input
|
|
49
46
|
};
|
|
50
47
|
var _sfc_render = function render() {
|
|
51
48
|
var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;
|
|
@@ -70,7 +67,7 @@ var _sfc_render = function render() {
|
|
|
70
67
|
} else {
|
|
71
68
|
_setup.model = $$c;
|
|
72
69
|
}
|
|
73
|
-
} } }), _c(_setup.
|
|
70
|
+
} } }), _c(_setup.NcIconToggleSwitch, { attrs: { "checked": _vm.modelValue, "inline": "" } })];
|
|
74
71
|
} }], null, true) });
|
|
75
72
|
};
|
|
76
73
|
var _sfc_staticRenderFns = [];
|
|
@@ -94,4 +91,4 @@ const NcFormBoxSwitch = __component__.exports;
|
|
|
94
91
|
export {
|
|
95
92
|
NcFormBoxSwitch as N
|
|
96
93
|
};
|
|
97
|
-
//# sourceMappingURL=NcFormBoxSwitch-
|
|
94
|
+
//# sourceMappingURL=NcFormBoxSwitch-Dq5JvIem.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NcFormBoxSwitch-Dq5JvIem.mjs","sources":["../../src/components/NcFormBoxSwitch/NcFormBoxSwitch.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script lang=\"ts\">\nexport default {\n\tmodel: {\n\t\tprop: 'modelValue',\n\t\tevent: 'update:modelValue',\n\t},\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { useVModel } from '@vueuse/core'\nimport { watch } from 'vue'\nimport NcFormBoxItem from '../NcFormBox/NcFormBoxItem.vue'\nimport NcIconToggleSwitch from '../NcIconToggleSwitch/NcIconToggleSwitch.vue'\nimport { createElementId } from '../../utils/createElementId.ts'\n\nconst props = withDefaults(defineProps<{\n\t/** Main label */\n\tlabel?: string\n\t/** Optional description below the label, also used for the aria-describedby */\n\tdescription?: string\n\t/** Disabled state */\n\tdisabled?: boolean\n\t/** Switch toggle model value */\n\tmodelValue: boolean // eslint-disable-line vue/no-unused-properties\n}>(), {\n\tlabel: undefined,\n\tdescription: undefined,\n\tdisabled: false,\n})\n\nconst emit = defineEmits<{\n\t/** Switch is toggled ON */\n\t(event: 'enable'): void\n\t/** Switch is toggled OFF */\n\t(event: 'disable'): void\n\t(event: 'update:modelValue', value: boolean): void\n}>()\n\nconst model = useVModel(props, 'modelValue', emit, { passive: true })\n\nconst inputId = createElementId()\n\nwatch(model, () => {\n\tif (model.value) {\n\t\temit('enable')\n\t} else {\n\t\temit('disable')\n\t}\n}, {\n\t// defineModel emits update:modelValue synchronously\n\t// Watching it synchronously to emit the enable/disable events together with the update:modelValue event\n\tflush: 'sync',\n})\n</script>\n\n<template>\n\t<NcFormBoxItem\n\t\ttag=\"label\"\n\t\t:for=\"inputId\">\n\t\t<template v-if=\"$slots.default || label\" #default>\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<slot>\n\t\t\t\t{{ label }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template v-if=\"$slots.description || description\" #description>\n\t\t\t<!-- @slot Custom description content -->\n\t\t\t<slot name=\"description\">\n\t\t\t\t{{ description }}\n\t\t\t</slot>\n\t\t</template>\n\t\t<template #icon=\"{ descriptionId }\">\n\t\t\t<input\n\t\t\t\t:id=\"inputId\"\n\t\t\t\tv-model=\"model\"\n\t\t\t\t:class=\"$style.formBoxSwitch__input\"\n\t\t\t\ttype=\"checkbox\"\n\t\t\t\trole=\"switch\"\n\t\t\t\t:aria-describedby=\"descriptionId\"\n\t\t\t\t:disabled=\"disabled\">\n\t\t\t<NcIconToggleSwitch :checked=\"modelValue\" inline />\n\t\t</template>\n\t</NcFormBoxItem>\n</template>\n\n<style lang=\"scss\" module>\ninput.formBoxSwitch__input {\n\tmargin: 0;\n\twidth: var(--default-clickable-area);\n\t/* Keep it visually hidden but on the position of visual switch icon */\n\tposition: absolute;\n\tinset-block: 0;\n\tinset-inline-end: var(--form-element-label-offset);\n\tz-index: -1;\n\topacity: 0 !important;\n\t/* Override server styles */\n\theight: auto;\n\tcursor: inherit;\n}\n</style>\n\n<docs>\n### General\n\nA toggle switch to be used within `<NcFormBox>`.\n\nLike other form box items, it has a label and an optional description.\n\nIn addition to the standard `v-model` binding, it emits `enable` and `disable` events when toggled **on** or **off**.\n\n```vue\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tswitchValue: false,\n\t\t}\n\t},\n\tmethods: {\n\t\tlog: console.log,\n\t},\n}\n</script>\n\n<template>\n\t<NcFormBox>\n\t\t<NcFormBoxSwitch v-model=\"switchValue\" label=\"Turn camera and microphone off by default\" />\n\t\t<NcFormBoxSwitch\n\t\t\tv-model=\"switchValue\"\n\t\t\tlabel=\"Blur camera background by default\"\n\t\t\tdisabled />\n\t\t<NcFormBoxSwitch\n\t\t\tv-model=\"switchValue\"\n\t\t\tlabel=\"Skip device preview before joining a call\"\n\t\t\tdescription=\"Will always show if recording consent is required\"\n\t\t\t@update:modelValue=\"log('Switch toggled', $event, switchValue)\"\n\t\t\t@enable=\"log('Switch enabled', switchValue)\"\n\t\t\t@disable=\"log('Switch disabled', switchValue)\"\n\t\t/>\n\t\t<NcFormBoxSwitch v-model=\"switchValue\" />\n\t</NcFormBox>\n</template>\n```\n</docs>\n"],"names":[],"mappings":";;;;;;AAMA,MAAA,cAAe;AAAA,EACd,OAAO;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAET;;;;;;;;;;;;;AAiCA,UAAM,QAAQ,UAAU,OAAO,cAAc,MAAM,EAAE,SAAS,MAAM;AAEpE,UAAM,UAAU,gBAAA;AAEhB,UAAM,OAAO,MAAM;AAClB,UAAI,MAAM,OAAO;AAChB,aAAK,QAAQ;AAAA,MACd,OAAO;AACN,aAAK,SAAS;AAAA,MACf;AAAA,IACD,GAAG;AAAA;AAAA;AAAA,MAGF,OAAO;AAAA,IAAA,CACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require('../assets/NcHotkey-4yi1Hobg.css');
|
|
2
2
|
"use strict";
|
|
3
3
|
const Vue = require("vue");
|
|
4
|
-
const NcKbd = require("./NcKbd-
|
|
4
|
+
const NcKbd = require("./NcKbd-DiOuj-R9.cjs");
|
|
5
5
|
const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
7
7
|
__name: "NcHotkey",
|
|
@@ -56,4 +56,4 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
|
56
56
|
);
|
|
57
57
|
const NcHotkey = __component__.exports;
|
|
58
58
|
exports.NcHotkey = NcHotkey;
|
|
59
|
-
//# sourceMappingURL=NcHotkey-
|
|
59
|
+
//# sourceMappingURL=NcHotkey-B9IBly2F.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcHotkey-
|
|
1
|
+
{"version":3,"file":"NcHotkey-B9IBly2F.cjs","sources":["../../src/components/NcHotkey/NcHotkey.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 { computed } from 'vue'\nimport NcKbd from '../NcKbd/NcKbd.vue'\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * Label for the hotkey\n\t */\n\tlabel?: string\n\t/**\n\t * Hotkey combination string separated by space, for example, `Control Alt T` or `F2` (see `<NcKbd>` for supported key names)\n\t */\n\thotkey?: string\n}>(), {\n\tlabel: undefined,\n\thotkey: undefined,\n})\n\nconst symbols = computed(() => {\n\treturn props.hotkey?.split(/\\s+/).map((s) => s.trim())\n})\n\nconst NO_LABEL_WARNING = '⚠️ NcHotKey must have a label or slot content'\n</script>\n\n<template>\n\t<li :class=\"$style.hotkey\">\n\t\t<span role=\"term\" :class=\"$style.hotkey__keys\">\n\t\t\t<!-- @slot Custom hotkey content for an advanced hotkey layout with \"NcKbd\" components or other custom content -->\n\t\t\t<slot name=\"hotkey\">\n\t\t\t\t<NcKbd v-for=\"(symbol, index) in symbols\" :key=\"index\" :symbol=\"symbol\" />\n\t\t\t</slot>\n\t\t</span>\n\t\t<span role=\"definition\" :class=\"$style.hotkey__label\">\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<slot>\n\t\t\t\t{{ label || NO_LABEL_WARNING }}\n\t\t\t</slot>\n\t\t</span>\n\t</li>\n</template>\n\n<style lang=\"scss\" module>\n.hotkey {\n\t--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));\n\tdisplay: flex;\n\tflex-direction: row-reverse;\n\talign-items: stretch;\n\tpadding-inline: var(--form-element-label-offset);\n\n\t&:first-child {\n\t\t.hotkey__label,\n\t\t.hotkey__keys {\n\t\t\tborder-block-start: none;\n\t\t}\n\t}\n\n}\n\n.hotkey__label,\n.hotkey__keys {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-block: calc(2 * var(--default-grid-baseline));\n\tborder-block-start: 1px solid var(--color-border);\n}\n\n.hotkey__label {\n\tflex: 1 1 200px;\n}\n\n.hotkey__keys {\n\tflex: 1 1 auto;\n\tflex-wrap: wrap;\n\tjustify-content: end;\n\trow-gap: calc(1 * var(--default-grid-baseline));\n}\n</style>\n"],"names":["computed"],"mappings":";;;;;;;;;;;;AAuBA,UAAM,UAAUA,IAAAA,SAAS,MAAM;AAC9B,aAAO,MAAM,QAAQ,MAAM,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM;AAAA,IACtD,CAAC;AAED,UAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '../assets/NcHotkey-4yi1Hobg.css';
|
|
2
2
|
import { defineComponent, computed } from "vue";
|
|
3
|
-
import { N as NcKbd } from "./NcKbd-
|
|
3
|
+
import { N as NcKbd } from "./NcKbd-CapL6_v1.mjs";
|
|
4
4
|
import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
|
|
5
5
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
6
6
|
__name: "NcHotkey",
|
|
@@ -57,4 +57,4 @@ const NcHotkey = __component__.exports;
|
|
|
57
57
|
export {
|
|
58
58
|
NcHotkey as N
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=NcHotkey-
|
|
60
|
+
//# sourceMappingURL=NcHotkey-COqzksbg.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcHotkey-
|
|
1
|
+
{"version":3,"file":"NcHotkey-COqzksbg.mjs","sources":["../../src/components/NcHotkey/NcHotkey.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 { computed } from 'vue'\nimport NcKbd from '../NcKbd/NcKbd.vue'\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * Label for the hotkey\n\t */\n\tlabel?: string\n\t/**\n\t * Hotkey combination string separated by space, for example, `Control Alt T` or `F2` (see `<NcKbd>` for supported key names)\n\t */\n\thotkey?: string\n}>(), {\n\tlabel: undefined,\n\thotkey: undefined,\n})\n\nconst symbols = computed(() => {\n\treturn props.hotkey?.split(/\\s+/).map((s) => s.trim())\n})\n\nconst NO_LABEL_WARNING = '⚠️ NcHotKey must have a label or slot content'\n</script>\n\n<template>\n\t<li :class=\"$style.hotkey\">\n\t\t<span role=\"term\" :class=\"$style.hotkey__keys\">\n\t\t\t<!-- @slot Custom hotkey content for an advanced hotkey layout with \"NcKbd\" components or other custom content -->\n\t\t\t<slot name=\"hotkey\">\n\t\t\t\t<NcKbd v-for=\"(symbol, index) in symbols\" :key=\"index\" :symbol=\"symbol\" />\n\t\t\t</slot>\n\t\t</span>\n\t\t<span role=\"definition\" :class=\"$style.hotkey__label\">\n\t\t\t<!-- @slot Custom label content -->\n\t\t\t<slot>\n\t\t\t\t{{ label || NO_LABEL_WARNING }}\n\t\t\t</slot>\n\t\t</span>\n\t</li>\n</template>\n\n<style lang=\"scss\" module>\n.hotkey {\n\t--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));\n\tdisplay: flex;\n\tflex-direction: row-reverse;\n\talign-items: stretch;\n\tpadding-inline: var(--form-element-label-offset);\n\n\t&:first-child {\n\t\t.hotkey__label,\n\t\t.hotkey__keys {\n\t\t\tborder-block-start: none;\n\t\t}\n\t}\n\n}\n\n.hotkey__label,\n.hotkey__keys {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-block: calc(2 * var(--default-grid-baseline));\n\tborder-block-start: 1px solid var(--color-border);\n}\n\n.hotkey__label {\n\tflex: 1 1 200px;\n}\n\n.hotkey__keys {\n\tflex: 1 1 auto;\n\tflex-wrap: wrap;\n\tjustify-content: end;\n\trow-gap: calc(1 * var(--default-grid-baseline));\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;AAuBA,UAAM,UAAU,SAAS,MAAM;AAC9B,aAAO,MAAM,QAAQ,MAAM,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM;AAAA,IACtD,CAAC;AAED,UAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
require('../assets/NcHotkeyList-gAZN0WIu.css');
|
|
2
2
|
"use strict";
|
|
3
3
|
const Vue = require("vue");
|
|
4
|
-
const _l10n = require("./_l10n-
|
|
4
|
+
const _l10n = require("./_l10n-IBFNlYqh.cjs");
|
|
5
5
|
const createElementId = require("./createElementId-lalylSCf.cjs");
|
|
6
6
|
const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-V0q-tHlQ.cjs");
|
|
7
|
-
_l10n.register();
|
|
7
|
+
_l10n.register(_l10n.t31);
|
|
8
8
|
const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
|
|
9
9
|
__name: "NcHotkeyList",
|
|
10
10
|
props: {
|
|
@@ -44,4 +44,4 @@ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
|
|
|
44
44
|
);
|
|
45
45
|
const NcHotkeyList = __component__.exports;
|
|
46
46
|
exports.NcHotkeyList = NcHotkeyList;
|
|
47
|
-
//# sourceMappingURL=NcHotkeyList-
|
|
47
|
+
//# sourceMappingURL=NcHotkeyList-D5QS6zXI.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcHotkeyList-
|
|
1
|
+
{"version":3,"file":"NcHotkeyList-D5QS6zXI.cjs","sources":["../../src/components/NcHotkeyList/NcHotkeyList.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 { t } from '../../l10n.js'\nimport { createElementId } from '../../utils/createElementId.ts'\n\nwithDefaults(defineProps<{\n\t/**\n\t * Heading list label to use when there are multiple lists of shortcuts\n\t */\n\tlabel?: string\n}>(), {\n\tlabel: undefined,\n})\n\nconst labelId = `NcHotkeyList_${createElementId()}`\n</script>\n\n<template>\n\t<div :class=\"$style.hotkeyList\">\n\t\t<div :id=\"labelId\" :class=\"[$style.hotkeyList__heading, { 'hidden-visually': !label }]\">\n\t\t\t{{ label || t('Keyboard shortcuts') }}\n\t\t</div>\n\t\t<ul :aria-labelledby=\"labelId\">\n\t\t\t<!-- @slot Shortcuts described via \"NcHotkey\" components -->\n\t\t\t<slot />\n\t\t</ul>\n\t</div>\n</template>\n\n<style module>\n.hotkeyList {\n\t--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));\n}\n\n.hotkeyList__heading {\n\tfont-weight: bold;\n\tmargin-inline: var(--form-element-label-offset);\n}\n</style>\n\n<docs>\n## General\n\nList of keyboard shortcuts for the `<NcAppSettingsShortcutsSection>`.\n\n```vue\n<template>\n\t<NcHotkeyList>\n\t\t<NcHotkey label=\"New File\" hotkey=\"Ctrl N\" />\n\t\t<NcHotkey label=\"Open File\" hotkey=\"Ctrl O\" />\n\t\t<NcHotkey label=\"Save File\" hotkey=\"Ctrl S\" />\n\t</NcHotkeyList>\n</template>\n```\n\n## Groups\n\nThe hotkey list can have an optional heading label. This is useful when there are multiple groups of shortcuts in an app with many shortcuts.\n\n```vue\n<template>\n\t<section>\n\t\t<NcHotkeyList label=\"Actions\">\n\t\t\t<NcHotkey label=\"File actions\" hotkey=\"A\" />\n\t\t\t<NcHotkey label=\"Rename\" hotkey=\"F2\" />\n\t\t\t<NcHotkey label=\"Delete\" hotkey=\"Delete\" />\n\t\t\t<NcHotkey label=\"Add or remove favorite\" hotkey=\"S\" />\n\t\t\t<NcHotkey label=\"Manage tags\" hotkey=\"T\" />\n\t\t</NcHotkeyList>\n\n\t\t<NcHotkeyList label=\"Selection\">\n\t\t\t<NcHotkey label=\"Select all files\" hotkey=\"Control A\" />\n\t\t\t<NcHotkey label=\"Deselect all\" hotkey=\"Escape\" />\n\t\t\t<NcHotkey label=\"Select or deselect\" hotkey=\"Control Space\" />\n\t\t\t<NcHotkey label=\"Select a range\" hotkey=\"Control Shift Space\" />\n\t\t</NcHotkeyList>\n\n\t\t<NcHotkeyList label=\"Navigation\">\n\t\t\t<NcHotkey label=\"Go to parent folder\" hotkey=\"Alt ArrowUp\" />\n\t\t\t<NcHotkey label=\"Go to file above\" hotkey=\"ArrowUp\" />\n\t\t\t<NcHotkey label=\"Go to file below\" hotkey=\"ArrowDown\" />\n\t\t\t<NcHotkey label=\"Go left in grid\" hotkey=\"ArrowLeft\" />\n\t\t\t<NcHotkey label=\"Go right in grid\" hotkey=\"ArrowRight\" />\n\t\t</NcHotkeyList>\n\n\t\t<NcHotkeyList label=\"View\">\n\t\t\t<NcHotkey label=\"Toggle grid view\" hotkey=\"V\" />\n\t\t\t<NcHotkey label=\"Open file sidebar\" hotkey=\"D\" />\n\t\t\t<NcHotkey label=\"Show those shortcuts\" hotkey=\"?\" />\n\t\t</NcHotkeyList>\n\t</section>\n</template>\n```\n</docs>\n"],"names":["createElementId"],"mappings":";;;;;;;;;;;;AAkBA,UAAM,UAAU,gBAAgBA,gBAAAA,gBAAA,CAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|