@nextcloud/vue 8.8.0 → 8.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/Components/NcActionButton.cjs +3 -3
- package/dist/Components/NcActionButton.mjs +6 -6
- package/dist/Components/NcActionButtonGroup.cjs +1 -1
- package/dist/Components/NcActionButtonGroup.mjs +1 -1
- package/dist/Components/NcActionCaption.cjs +2 -2
- package/dist/Components/NcActionCaption.mjs +2 -2
- package/dist/Components/NcActionCheckbox.cjs +2 -2
- package/dist/Components/NcActionCheckbox.mjs +4 -4
- package/dist/Components/NcActionInput.cjs +1 -1
- package/dist/Components/NcActionInput.mjs +1 -1
- package/dist/Components/NcActionLink.cjs +3 -3
- package/dist/Components/NcActionLink.mjs +4 -4
- package/dist/Components/NcActionRadio.cjs +2 -2
- package/dist/Components/NcActionRadio.mjs +4 -4
- package/dist/Components/NcActionRouter.cjs +3 -3
- package/dist/Components/NcActionRouter.mjs +4 -4
- package/dist/Components/NcActionSeparator.cjs +2 -2
- package/dist/Components/NcActionSeparator.mjs +2 -2
- package/dist/Components/NcActionText.cjs +3 -3
- package/dist/Components/NcActionText.mjs +4 -4
- package/dist/Components/NcActionTextEditable.cjs +3 -3
- package/dist/Components/NcActionTextEditable.mjs +6 -6
- 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/NcAppContentDetails.cjs +1 -1
- package/dist/Components/NcAppContentDetails.mjs +1 -1
- package/dist/Components/NcAppContentList.cjs +1 -1
- package/dist/Components/NcAppContentList.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/NcAppNavigationIconBullet.cjs +2 -2
- package/dist/Components/NcAppNavigationIconBullet.mjs +2 -2
- package/dist/Components/NcAppNavigationItem.cjs +1 -1
- package/dist/Components/NcAppNavigationItem.mjs +1 -1
- package/dist/Components/NcAppNavigationList.cjs +6 -6
- package/dist/Components/NcAppNavigationList.cjs.map +1 -1
- package/dist/Components/NcAppNavigationList.mjs +6 -6
- package/dist/Components/NcAppNavigationList.mjs.map +1 -1
- package/dist/Components/NcAppNavigationNew.cjs +2 -2
- package/dist/Components/NcAppNavigationNew.mjs +2 -2
- package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
- package/dist/Components/NcAppNavigationSettings.cjs +1 -1
- package/dist/Components/NcAppNavigationSettings.mjs +1 -1
- package/dist/Components/NcAppNavigationSpacer.cjs +2 -2
- package/dist/Components/NcAppNavigationSpacer.mjs +2 -2
- 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 +8 -5
- package/dist/Components/NcAppSettingsSection.cjs.map +1 -1
- package/dist/Components/NcAppSettingsSection.mjs +8 -5
- package/dist/Components/NcAppSettingsSection.mjs.map +1 -1
- package/dist/Components/NcAppSidebar.cjs +1 -1
- package/dist/Components/NcAppSidebar.mjs +1 -1
- package/dist/Components/NcAppSidebarTab.cjs +5 -4
- package/dist/Components/NcAppSidebarTab.cjs.map +1 -1
- package/dist/Components/NcAppSidebarTab.mjs +5 -4
- package/dist/Components/NcAppSidebarTab.mjs.map +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/NcButton.cjs +27 -26
- package/dist/Components/NcButton.cjs.map +1 -1
- package/dist/Components/NcButton.mjs +28 -27
- package/dist/Components/NcButton.mjs.map +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.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/NcCounterBubble.cjs +2 -2
- package/dist/Components/NcCounterBubble.mjs +2 -2
- 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/NcDateTime.cjs +1 -1
- package/dist/Components/NcDateTime.mjs +1 -1
- package/dist/Components/NcDateTimePicker.cjs +42 -40
- package/dist/Components/NcDateTimePicker.cjs.map +1 -1
- package/dist/Components/NcDateTimePicker.mjs +27 -25
- package/dist/Components/NcDateTimePicker.mjs.map +1 -1
- package/dist/Components/NcDateTimePickerNative.cjs +11 -11
- package/dist/Components/NcDateTimePickerNative.cjs.map +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +12 -12
- package/dist/Components/NcDateTimePickerNative.mjs.map +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/NcEllipsisedOption.cjs +2 -2
- package/dist/Components/NcEllipsisedOption.mjs +3 -3
- package/dist/Components/NcEmojiPicker.cjs +1 -1
- package/dist/Components/NcEmojiPicker.mjs +1 -1
- package/dist/Components/NcEmptyContent.cjs +9 -8
- package/dist/Components/NcEmptyContent.cjs.map +1 -1
- package/dist/Components/NcEmptyContent.mjs +9 -8
- package/dist/Components/NcEmptyContent.mjs.map +1 -1
- package/dist/Components/NcGuestContent.cjs +2 -2
- package/dist/Components/NcGuestContent.mjs +2 -2
- package/dist/Components/NcHeaderMenu.cjs +1 -1
- package/dist/Components/NcHeaderMenu.mjs +1 -1
- package/dist/Components/NcHighlight.cjs +1 -1
- package/dist/Components/NcHighlight.mjs +1 -1
- package/dist/Components/NcIconSvgWrapper.cjs +1 -1
- package/dist/Components/NcIconSvgWrapper.mjs +1 -1
- package/dist/Components/NcInputField.cjs +4 -4
- package/dist/Components/NcInputField.cjs.map +1 -1
- package/dist/Components/NcInputField.mjs +7 -7
- package/dist/Components/NcInputField.mjs.map +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/NcLoadingIcon.cjs +2 -2
- package/dist/Components/NcLoadingIcon.mjs +2 -2
- package/dist/Components/NcModal.cjs +8 -7
- package/dist/Components/NcModal.cjs.map +1 -1
- package/dist/Components/NcModal.mjs +19 -18
- package/dist/Components/NcModal.mjs.map +1 -1
- package/dist/Components/NcNoteCard.cjs +3 -3
- package/dist/Components/NcNoteCard.mjs +3 -3
- 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/NcProgressBar.cjs +1 -1
- package/dist/Components/NcProgressBar.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 +2 -2
- package/dist/Components/NcRichText.cjs +1 -1
- package/dist/Components/NcRichText.cjs.map +1 -1
- package/dist/Components/NcRichText.mjs +8 -8
- package/dist/Components/NcRichText.mjs.map +1 -1
- package/dist/Components/NcSavingIndicatorIcon.cjs +1 -1
- package/dist/Components/NcSavingIndicatorIcon.mjs +1 -1
- 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/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/NcTextArea.cjs +4 -4
- package/dist/Components/NcTextArea.cjs.map +1 -1
- package/dist/Components/NcTextArea.mjs +7 -7
- package/dist/Components/NcTextArea.mjs.map +1 -1
- package/dist/Components/NcTextField.cjs +1 -1
- package/dist/Components/NcTextField.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/Components/NcVNodes.cjs +11 -10
- package/dist/Components/NcVNodes.cjs.map +1 -1
- package/dist/Components/NcVNodes.mjs +12 -11
- package/dist/Components/NcVNodes.mjs.map +1 -1
- package/dist/Directives/Linkify.cjs +5 -4
- package/dist/Directives/Linkify.cjs.map +1 -1
- package/dist/Directives/Linkify.mjs +6 -5
- package/dist/Directives/Linkify.mjs.map +1 -1
- package/dist/Directives/Tooltip.cjs +1 -1
- package/dist/Directives/Tooltip.mjs +1 -1
- package/dist/Functions/reference.cjs +2 -1
- package/dist/Functions/reference.cjs.map +1 -1
- package/dist/Functions/reference.mjs +12 -11
- package/dist/Functions/registerReference.cjs +11 -69
- package/dist/Functions/registerReference.cjs.map +1 -1
- package/dist/Functions/registerReference.mjs +9 -67
- package/dist/Functions/registerReference.mjs.map +1 -1
- package/dist/Functions/usernameToColor.cjs +1 -1
- package/dist/Functions/usernameToColor.mjs +1 -1
- package/dist/Mixins/richEditor.cjs +2 -2
- package/dist/Mixins/richEditor.mjs +2 -2
- package/dist/assets/{NcActions-mt8BQ_bn.css → NcActions-CEbgl0_n.css} +12 -12
- package/dist/assets/{NcAppContent-SZz3PTd8.css → NcAppContent-Cv8rRTyy.css} +1 -0
- package/dist/assets/{NcAppNavigation-9nlYnuUQ.css → NcAppNavigation-D4ZBCJrI.css} +18 -8
- package/dist/assets/{NcAppNavigationList-RooPPg4w.css → NcAppNavigationList-Bj9PwL4X.css} +3 -7
- package/dist/assets/{NcDateTimePicker-l-C3PwHK.css → NcDateTimePicker-BChLYJ5X.css} +10 -10
- package/dist/assets/{NcEmojiPicker-hTlSVIq0.css → NcEmojiPicker-B-4WNYcx.css} +1 -0
- package/dist/assets/{NcRelatedResourcesPanel-oq5eMIoh.css → NcRelatedResourcesPanel-COW9gzml.css} +72 -6
- package/dist/assets/{NcRichText-kDp48Nji.css → NcRichText-BMe-xENJ.css} +5 -2
- package/dist/assets/{NcSelect-GsLmwj9w.css → NcSelect-4aBmXHhA.css} +3 -0
- package/dist/assets/{referencePickerModal-A0PlFUEI.css → referencePickerModal-C1KJzICb.css} +34 -14
- package/dist/chunks/{AlertCircleOutline-HYz1lvHU.cjs → AlertCircleOutline-DHFN4OkX.cjs} +1 -1
- package/dist/chunks/{AlertCircleOutline-HYz1lvHU.cjs.map → AlertCircleOutline-DHFN4OkX.cjs.map} +1 -1
- package/dist/chunks/{AlertCircleOutline-XY0EPUmQ.mjs → AlertCircleOutline-U_bhL30C.mjs} +1 -1
- package/dist/chunks/{AlertCircleOutline-XY0EPUmQ.mjs.map → AlertCircleOutline-U_bhL30C.mjs.map} +1 -1
- package/dist/chunks/{ArrowLeft-fC5aEWWu.cjs → ArrowLeft-CjNnGIlF.cjs} +1 -1
- package/dist/chunks/{ArrowLeft-fC5aEWWu.cjs.map → ArrowLeft-CjNnGIlF.cjs.map} +1 -1
- package/dist/chunks/{ArrowLeft-uW5eNVkY.mjs → ArrowLeft-kklNBL9z.mjs} +1 -1
- package/dist/chunks/{ArrowLeft-uW5eNVkY.mjs.map → ArrowLeft-kklNBL9z.mjs.map} +1 -1
- package/dist/chunks/{ArrowRight-16bLxoZc.mjs → ArrowRight-C3BxTDjF.mjs} +1 -1
- package/dist/chunks/{ArrowRight-16bLxoZc.mjs.map → ArrowRight-C3BxTDjF.mjs.map} +1 -1
- package/dist/chunks/{ArrowRight-uUC8qW2c.cjs → ArrowRight-CxzzJJQ6.cjs} +1 -1
- package/dist/chunks/{ArrowRight-uUC8qW2c.cjs.map → ArrowRight-CxzzJJQ6.cjs.map} +1 -1
- package/dist/chunks/{Check-qy5XrF1J.mjs → Check-CRLmJNGG.mjs} +1 -1
- package/dist/chunks/{Check-qy5XrF1J.mjs.map → Check-CRLmJNGG.mjs.map} +1 -1
- package/dist/chunks/{Check-QBzDcHpr.cjs → Check-CVn5nytg.cjs} +1 -1
- package/dist/chunks/{Check-QBzDcHpr.cjs.map → Check-CVn5nytg.cjs.map} +1 -1
- package/dist/chunks/{ChevronDown-Hc_DTRav.cjs → ChevronDown-DQPox_nl.cjs} +1 -1
- package/dist/chunks/{ChevronDown-Hc_DTRav.cjs.map → ChevronDown-DQPox_nl.cjs.map} +1 -1
- package/dist/chunks/{ChevronDown-suAKKmeb.mjs → ChevronDown-HHJdUMN4.mjs} +1 -1
- package/dist/chunks/{ChevronDown-suAKKmeb.mjs.map → ChevronDown-HHJdUMN4.mjs.map} +1 -1
- package/dist/chunks/{ChevronRight-MdQC55Yq.cjs → ChevronRight-BAJhNawb.cjs} +1 -1
- package/dist/chunks/{ChevronRight-MdQC55Yq.cjs.map → ChevronRight-BAJhNawb.cjs.map} +1 -1
- package/dist/chunks/{ChevronRight-9owhU_17.mjs → ChevronRight-DL3e8bjj.mjs} +1 -1
- package/dist/chunks/{ChevronRight-9owhU_17.mjs.map → ChevronRight-DL3e8bjj.mjs.map} +1 -1
- package/dist/chunks/ChevronUp-B6TIgl1a.mjs +37 -0
- package/dist/chunks/ChevronUp-B6TIgl1a.mjs.map +1 -0
- package/dist/chunks/ChevronUp-kmHRpe7H.cjs +35 -0
- package/dist/chunks/ChevronUp-kmHRpe7H.cjs.map +1 -0
- package/dist/chunks/{Close-QtH6_3PP.mjs → Close-BtO5TPBO.mjs} +1 -1
- package/dist/chunks/{Close-QtH6_3PP.mjs.map → Close-BtO5TPBO.mjs.map} +1 -1
- package/dist/chunks/{Close-dotk0707.cjs → Close-DBfrdXMw.cjs} +1 -1
- package/dist/chunks/{Close-dotk0707.cjs.map → Close-DBfrdXMw.cjs.map} +1 -1
- package/dist/chunks/{DotsHorizontal-6hepLUSS.cjs → DotsHorizontal-B8kTqpHe.cjs} +1 -1
- package/dist/chunks/{DotsHorizontal-6hepLUSS.cjs.map → DotsHorizontal-B8kTqpHe.cjs.map} +1 -1
- package/dist/chunks/{DotsHorizontal-IbmXTXRA.mjs → DotsHorizontal-DfVgEXgz.mjs} +1 -1
- package/dist/chunks/{DotsHorizontal-IbmXTXRA.mjs.map → DotsHorizontal-DfVgEXgz.mjs.map} +1 -1
- package/dist/chunks/{GenColors-MjG_SfWn.mjs → GenColors-BteFtwOv.mjs} +3 -3
- package/dist/chunks/{GenColors-MjG_SfWn.mjs.map → GenColors-BteFtwOv.mjs.map} +1 -1
- package/dist/chunks/{GenColors-LzmNxRE8.cjs → GenColors-vI-bx9ZY.cjs} +3 -3
- package/dist/chunks/{GenColors-LzmNxRE8.cjs.map → GenColors-vI-bx9ZY.cjs.map} +1 -1
- package/dist/chunks/{GenRandomId-ULxaMkkr.cjs.map → GenRandomId-B2O1GMbH.cjs.map} +1 -1
- package/dist/chunks/{GenRandomId-VodkdWbp.mjs.map → GenRandomId-BW3iYFf9.mjs.map} +1 -1
- package/dist/chunks/{Linkify-V7PfCeZ8.mjs.map → Linkify-BaDLLFxP.mjs.map} +1 -1
- package/dist/chunks/{Linkify-f3s3nAe_.cjs.map → Linkify-Dola0NBa.cjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-6TAtQFtq.cjs → NcActionButtonGroup-BdxkXNwc.cjs} +3 -3
- package/dist/chunks/{NcActionButtonGroup-6TAtQFtq.cjs.map → NcActionButtonGroup-BdxkXNwc.cjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-w6A9Fw2n.mjs → NcActionButtonGroup-SS3PkUD2.mjs} +5 -5
- package/dist/chunks/{NcActionButtonGroup-w6A9Fw2n.mjs.map → NcActionButtonGroup-SS3PkUD2.mjs.map} +1 -1
- package/dist/chunks/{NcActionInput-yvhGpEsS.mjs → NcActionInput-BHq3Le0q.mjs} +9 -9
- package/dist/chunks/{NcActionInput-yvhGpEsS.mjs.map → NcActionInput-BHq3Le0q.mjs.map} +1 -1
- package/dist/chunks/{NcActionInput-Fl2UyuVW.cjs → NcActionInput-D308ZntG.cjs} +4 -4
- package/dist/chunks/{NcActionInput-Fl2UyuVW.cjs.map → NcActionInput-D308ZntG.cjs.map} +1 -1
- package/dist/chunks/{NcActions-rHzi4RcQ.mjs → NcActions-CpU9WXzM.mjs} +135 -131
- package/dist/chunks/{NcActions-rHzi4RcQ.mjs.map → NcActions-CpU9WXzM.mjs.map} +1 -1
- package/dist/chunks/{NcActions-iACO4laf.cjs → NcActions-Dfkog_G0.cjs} +134 -130
- package/dist/chunks/{NcActions-iACO4laf.cjs.map → NcActions-Dfkog_G0.cjs.map} +1 -1
- package/dist/chunks/{NcAppContent-c0KjHkMb.mjs → NcAppContent-BDwOdxJE.mjs} +6 -6
- package/dist/chunks/{NcAppContent-c0KjHkMb.mjs.map → NcAppContent-BDwOdxJE.mjs.map} +1 -1
- package/dist/chunks/{NcAppContent--JRFOyLe.cjs → NcAppContent-kqYjKpzU.cjs} +6 -6
- package/dist/chunks/{NcAppContent--JRFOyLe.cjs.map → NcAppContent-kqYjKpzU.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigation-7U8buuT7.mjs → NcAppNavigation-BRtyTvKt.mjs} +19 -19
- package/dist/chunks/NcAppNavigation-BRtyTvKt.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigation-AcPesLHq.cjs → NcAppNavigation-DMxORgkV.cjs} +15 -15
- package/dist/chunks/NcAppNavigation-DMxORgkV.cjs.map +1 -0
- package/dist/chunks/{NcAppNavigationCaption-Iuzt-yzb.cjs → NcAppNavigationCaption-BKchbDsJ.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationCaption-Iuzt-yzb.cjs.map → NcAppNavigationCaption-BKchbDsJ.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-UJ7iY1q5.mjs → NcAppNavigationCaption-DsT6O4Hx.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationCaption-UJ7iY1q5.mjs.map → NcAppNavigationCaption-DsT6O4Hx.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-pvFIrGQv.cjs → NcAppNavigationItem-CABF2T4q.cjs} +47 -79
- package/dist/chunks/NcAppNavigationItem-CABF2T4q.cjs.map +1 -0
- package/dist/chunks/{NcAppNavigationItem-9n2uXjvj.mjs → NcAppNavigationItem-bjPcEx5D.mjs} +55 -86
- package/dist/chunks/NcAppNavigationItem-bjPcEx5D.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationNewItem-jr12p6VL.mjs → NcAppNavigationNewItem-BHCgaCoK.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationNewItem-jr12p6VL.mjs.map → NcAppNavigationNewItem-BHCgaCoK.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-CXGDvuMl.cjs → NcAppNavigationNewItem-t45tM5u1.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationNewItem-CXGDvuMl.cjs.map → NcAppNavigationNewItem-t45tM5u1.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-NRqRmMXw.mjs → NcAppNavigationSettings-BQD7JA4m.mjs} +4 -4
- package/dist/chunks/{NcAppNavigationSettings-NRqRmMXw.mjs.map → NcAppNavigationSettings-BQD7JA4m.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-Nd8RJnYL.cjs → NcAppNavigationSettings-CBeUiVLk.cjs} +5 -5
- package/dist/chunks/{NcAppNavigationSettings-Nd8RJnYL.cjs.map → NcAppNavigationSettings-CBeUiVLk.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-kL5XkG2J.mjs → NcAppNavigationToggle-BZxbkhCr.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationToggle-kL5XkG2J.mjs.map → NcAppNavigationToggle-BZxbkhCr.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-KZ_xHLv9.cjs → NcAppNavigationToggle-DDChOnAq.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationToggle-KZ_xHLv9.cjs.map → NcAppNavigationToggle-DDChOnAq.cjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-S9pm_eoJ.mjs → NcAppSettingsDialog-DeFBTD2J.mjs} +35 -28
- package/dist/chunks/{NcAppSettingsDialog-S9pm_eoJ.mjs.map → NcAppSettingsDialog-DeFBTD2J.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-8l-aNNFq.cjs → NcAppSettingsDialog-EUys9Os_.cjs} +29 -22
- package/dist/chunks/{NcAppSettingsDialog-8l-aNNFq.cjs.map → NcAppSettingsDialog-EUys9Os_.cjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-kN5SMxgh.mjs → NcAppSidebar-CdSvRI6l.mjs} +26 -22
- package/dist/chunks/{NcAppSidebar-kN5SMxgh.mjs.map → NcAppSidebar-CdSvRI6l.mjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-l6rV-lnp.cjs → NcAppSidebar-Du-IRmEO.cjs} +17 -13
- package/dist/chunks/{NcAppSidebar-l6rV-lnp.cjs.map → NcAppSidebar-Du-IRmEO.cjs.map} +1 -1
- package/dist/chunks/{NcAvatar-CVj9XTPL.cjs → NcAvatar-BEet_8fB.cjs} +57 -53
- package/dist/chunks/{NcAvatar-CVj9XTPL.cjs.map → NcAvatar-BEet_8fB.cjs.map} +1 -1
- package/dist/chunks/{NcAvatar-MI8_N7U1.mjs → NcAvatar-e0M-nnF6.mjs} +73 -69
- package/dist/chunks/{NcAvatar-MI8_N7U1.mjs.map → NcAvatar-e0M-nnF6.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-LpXeIBcG.mjs → NcBreadcrumb-CVMyBckA.mjs} +7 -7
- package/dist/chunks/{NcBreadcrumb-LpXeIBcG.mjs.map → NcBreadcrumb-CVMyBckA.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-EhfhBqAL.cjs → NcBreadcrumb-DVXsgQkE.cjs} +4 -4
- package/dist/chunks/{NcBreadcrumb-EhfhBqAL.cjs.map → NcBreadcrumb-DVXsgQkE.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-zYhyJxEY.cjs → NcBreadcrumbs-DkgzO9f5.cjs} +103 -99
- package/dist/chunks/{NcBreadcrumbs-zYhyJxEY.cjs.map → NcBreadcrumbs-DkgzO9f5.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs--4xgDVR7.mjs → NcBreadcrumbs-DqRU0BfB.mjs} +65 -61
- package/dist/chunks/{NcBreadcrumbs--4xgDVR7.mjs.map → NcBreadcrumbs-DqRU0BfB.mjs.map} +1 -1
- package/dist/chunks/{NcCheckboxRadioSwitch-ymUA5BIs.mjs → NcCheckboxRadioSwitch-7Yib86y3.mjs} +6 -6
- package/dist/chunks/{NcCheckboxRadioSwitch-ymUA5BIs.mjs.map → NcCheckboxRadioSwitch-7Yib86y3.mjs.map} +1 -1
- package/dist/chunks/{NcCheckboxRadioSwitch-Ox3J2r7t.cjs → NcCheckboxRadioSwitch-Dt96X5bR.cjs} +5 -5
- package/dist/chunks/{NcCheckboxRadioSwitch-Ox3J2r7t.cjs.map → NcCheckboxRadioSwitch-Dt96X5bR.cjs.map} +1 -1
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-C1WLneXl.cjs +4 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-C1WLneXl.cjs.map +1 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-CKROuACA.mjs +3 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-CKROuACA.mjs.map +1 -0
- package/dist/chunks/{NcColorPicker-7PNp6DUg.cjs → NcColorPicker-BVqwn1Fr.cjs} +4 -5
- package/dist/chunks/{NcColorPicker-1m1Xv5fE.mjs.map → NcColorPicker-BVqwn1Fr.cjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-1m1Xv5fE.mjs → NcColorPicker-Dkxeigs5.mjs} +11 -12
- package/dist/chunks/{NcColorPicker-7PNp6DUg.cjs.map → NcColorPicker-Dkxeigs5.mjs.map} +1 -1
- package/dist/chunks/NcContent-Bmeq8hLO.cjs +80 -0
- package/dist/chunks/{NcContent-YJfqE5Kv.mjs.map → NcContent-Bmeq8hLO.cjs.map} +1 -1
- package/dist/chunks/NcContent-COIw1X7V.mjs +87 -0
- package/dist/chunks/{NcContent-L5DDeJmE.cjs.map → NcContent-COIw1X7V.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-oUPY199x.mjs → NcDashboardWidget-Cxz_n1AN.mjs} +6 -6
- package/dist/chunks/{NcDashboardWidget-oUPY199x.mjs.map → NcDashboardWidget-Cxz_n1AN.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-KPADyPUh.cjs → NcDashboardWidget-DArU3jbL.cjs} +3 -3
- package/dist/chunks/{NcDashboardWidget-KPADyPUh.cjs.map → NcDashboardWidget-DArU3jbL.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-KpDnCM7Y.cjs → NcDashboardWidgetItem-BAhzcFfs.cjs} +2 -2
- package/dist/chunks/{NcDashboardWidgetItem-KpDnCM7Y.cjs.map → NcDashboardWidgetItem-BAhzcFfs.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-iZA9aHuL.mjs → NcDashboardWidgetItem-BV2tuXoj.mjs} +4 -4
- package/dist/chunks/{NcDashboardWidgetItem-iZA9aHuL.mjs.map → NcDashboardWidgetItem-BV2tuXoj.mjs.map} +1 -1
- package/dist/chunks/{NcDateTime-EqdvmXRa.mjs → NcDateTime-B0oaElJX.mjs} +2 -2
- package/dist/chunks/{NcDateTime-EqdvmXRa.mjs.map → NcDateTime-B0oaElJX.mjs.map} +1 -1
- package/dist/chunks/{NcDateTime-ez2Mc6Ut.cjs → NcDateTime-Dl0XztMt.cjs} +1 -1
- package/dist/chunks/{NcDateTime-ez2Mc6Ut.cjs.map → NcDateTime-Dl0XztMt.cjs.map} +1 -1
- package/dist/chunks/{NcDialog-f6KwlaqC.cjs → NcDialog-C6nYgBDF.cjs} +3 -3
- package/dist/chunks/{NcDialog-f6KwlaqC.cjs.map → NcDialog-C6nYgBDF.cjs.map} +1 -1
- package/dist/chunks/{NcDialog-_HZnlBi4.mjs → NcDialog-D6YSjidf.mjs} +5 -5
- package/dist/chunks/{NcDialog-_HZnlBi4.mjs.map → NcDialog-D6YSjidf.mjs.map} +1 -1
- package/dist/chunks/{NcDialogButton-CtdP0-DO.cjs → NcDialogButton-D7ibBxsQ.cjs} +11 -10
- package/dist/chunks/{NcDialogButton-xDZQrfsw.mjs.map → NcDialogButton-D7ibBxsQ.cjs.map} +1 -1
- package/dist/chunks/{NcDialogButton-xDZQrfsw.mjs → NcDialogButton-DQFoaN7q.mjs} +14 -13
- package/dist/chunks/{NcDialogButton-CtdP0-DO.cjs.map → NcDialogButton-DQFoaN7q.mjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-gZaqE1rk.cjs → NcEmojiPicker-BCdoIKXJ.cjs} +54 -52
- package/dist/chunks/{NcEmojiPicker-gZaqE1rk.cjs.map → NcEmojiPicker-BCdoIKXJ.cjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-Qi10uLHB.mjs → NcEmojiPicker-fRx7dTTf.mjs} +12 -10
- package/dist/chunks/{NcEmojiPicker-Qi10uLHB.mjs.map → NcEmojiPicker-fRx7dTTf.mjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-0d6eqre6.cjs → NcHeaderMenu-BUeI4DGP.cjs} +11 -9
- package/dist/chunks/{NcHeaderMenu-0d6eqre6.cjs.map → NcHeaderMenu-BUeI4DGP.cjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-91qMsRIw.mjs → NcHeaderMenu-CXBimxcN.mjs} +11 -9
- package/dist/chunks/{NcHeaderMenu-91qMsRIw.mjs.map → NcHeaderMenu-CXBimxcN.mjs.map} +1 -1
- package/dist/chunks/{NcIconSvgWrapper-CvnWKK7h.mjs → NcIconSvgWrapper-BTdzvQGV.mjs} +3 -3
- package/dist/chunks/{NcIconSvgWrapper-CvnWKK7h.mjs.map → NcIconSvgWrapper-BTdzvQGV.mjs.map} +1 -1
- package/dist/chunks/{NcIconSvgWrapper-RwagV5P9.cjs → NcIconSvgWrapper-kIn1eQyv.cjs} +3 -3
- package/dist/chunks/{NcIconSvgWrapper-RwagV5P9.cjs.map → NcIconSvgWrapper-kIn1eQyv.cjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-EgnZwbmj.mjs → NcInputConfirmCancel-BXZqwqY6.mjs} +5 -5
- package/dist/chunks/{NcInputConfirmCancel-EgnZwbmj.mjs.map → NcInputConfirmCancel-BXZqwqY6.mjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-wK1KES_K.cjs → NcInputConfirmCancel-DpgXTGmT.cjs} +2 -2
- package/dist/chunks/{NcInputConfirmCancel-wK1KES_K.cjs.map → NcInputConfirmCancel-DpgXTGmT.cjs.map} +1 -1
- package/dist/chunks/{NcListItem-DwAhV_Om.mjs → NcListItem-C5oWvAZQ.mjs} +5 -5
- package/dist/chunks/{NcListItem-DwAhV_Om.mjs.map → NcListItem-C5oWvAZQ.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-7wde4DHX.cjs → NcListItem-wxqWqs4s.cjs} +3 -3
- package/dist/chunks/{NcListItem-7wde4DHX.cjs.map → NcListItem-wxqWqs4s.cjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-1qPc7NDv.cjs → NcListItemIcon-DfdkSCin.cjs} +6 -5
- package/dist/chunks/{NcListItemIcon-1qPc7NDv.cjs.map → NcListItemIcon-DfdkSCin.cjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-S06TFU1A.mjs → NcListItemIcon-WH9TUCxb.mjs} +8 -7
- package/dist/chunks/{NcListItemIcon-S06TFU1A.mjs.map → NcListItemIcon-WH9TUCxb.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-F30zJsph.mjs → NcPasswordField-BPAivxc_.mjs} +38 -38
- package/dist/chunks/{NcPasswordField-F30zJsph.mjs.map → NcPasswordField-BPAivxc_.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-hngMvgyo.cjs → NcPasswordField-BgNcvN0V.cjs} +16 -16
- package/dist/chunks/{NcPasswordField-hngMvgyo.cjs.map → NcPasswordField-BgNcvN0V.cjs.map} +1 -1
- package/dist/chunks/{NcPopover-93ns_0K4.mjs → NcPopover--V3R3EKV.mjs} +39 -33
- package/dist/chunks/{NcPopover-93ns_0K4.mjs.map → NcPopover--V3R3EKV.mjs.map} +1 -1
- package/dist/chunks/{NcPopover-fv7OFtxM.cjs → NcPopover-h-t7Dnjk.cjs} +16 -10
- package/dist/chunks/{NcPopover-fv7OFtxM.cjs.map → NcPopover-h-t7Dnjk.cjs.map} +1 -1
- package/dist/chunks/{NcProgressBar-BthaVVHU.cjs → NcProgressBar-BYk5hfPI.cjs} +3 -3
- package/dist/chunks/{NcProgressBar-BthaVVHU.cjs.map → NcProgressBar-BYk5hfPI.cjs.map} +1 -1
- package/dist/chunks/{NcProgressBar-h2ufKS6c.mjs → NcProgressBar-DDAeXyp8.mjs} +3 -3
- package/dist/chunks/{NcProgressBar-h2ufKS6c.mjs.map → NcProgressBar-DDAeXyp8.mjs.map} +1 -1
- package/dist/chunks/NcRelatedResourcesPanel-Cp8Au2iI.cjs +371 -0
- package/dist/chunks/NcRelatedResourcesPanel-Cp8Au2iI.cjs.map +1 -0
- package/dist/chunks/NcRelatedResourcesPanel-LTNqJecS.mjs +381 -0
- package/dist/chunks/NcRelatedResourcesPanel-LTNqJecS.mjs.map +1 -0
- package/dist/chunks/{NcRichContenteditable-lE_j-Gfc.mjs → NcRichContenteditable-CHggLQuR.mjs} +42 -35
- package/dist/chunks/{NcRichContenteditable--pSQfJW9.cjs.map → NcRichContenteditable-CHggLQuR.mjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable--pSQfJW9.cjs → NcRichContenteditable-hT5m_2tr.cjs} +120 -113
- package/dist/chunks/{NcRichContenteditable-lE_j-Gfc.mjs.map → NcRichContenteditable-hT5m_2tr.cjs.map} +1 -1
- package/dist/chunks/{NcRichText-Vm0d22pV.mjs → NcRichText-BBXbh0Hh.mjs} +65 -62
- package/dist/chunks/NcRichText-BBXbh0Hh.mjs.map +1 -0
- package/dist/chunks/{NcRichText-0eMrB-8S.cjs → NcRichText-BWX8BLVh.cjs} +53 -50
- package/dist/chunks/NcRichText-BWX8BLVh.cjs.map +1 -0
- package/dist/chunks/{NcSavingIndicatorIcon-wcQ0mBIL.cjs → NcSavingIndicatorIcon-BTvUkUn-.cjs} +1 -1
- package/dist/chunks/{NcSavingIndicatorIcon-wcQ0mBIL.cjs.map → NcSavingIndicatorIcon-BTvUkUn-.cjs.map} +1 -1
- package/dist/chunks/{NcSavingIndicatorIcon-IqoMFcDK.mjs → NcSavingIndicatorIcon-Bf0SEmgS.mjs} +1 -1
- package/dist/chunks/{NcSavingIndicatorIcon-IqoMFcDK.mjs.map → NcSavingIndicatorIcon-Bf0SEmgS.mjs.map} +1 -1
- package/dist/chunks/{NcSelect-75KHhmKy.mjs → NcSelect-BVmjiQFa.mjs} +55 -51
- package/dist/chunks/{NcSelect-DmqYvkx5.cjs.map → NcSelect-BVmjiQFa.mjs.map} +1 -1
- package/dist/chunks/{NcSelect-DmqYvkx5.cjs → NcSelect-DjTSAsNL.cjs} +50 -46
- package/dist/chunks/{NcSelect-75KHhmKy.mjs.map → NcSelect-DjTSAsNL.cjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-hNbQxoKD.cjs → NcSelectTags-BJvxyO8E.cjs} +2 -11
- package/dist/chunks/{NcSelectTags-hNbQxoKD.cjs.map → NcSelectTags-BJvxyO8E.cjs.map} +1 -1
- package/dist/chunks/{NcSelectTags--fJnxT3p.mjs → NcSelectTags-Ccv-eQzZ.mjs} +4 -13
- package/dist/chunks/{NcSelectTags--fJnxT3p.mjs.map → NcSelectTags-Ccv-eQzZ.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-TsKBeDLR.cjs → NcSettingsInputText-CcO2Du6E.cjs} +3 -3
- package/dist/chunks/{NcSettingsInputText-TsKBeDLR.cjs.map → NcSettingsInputText-CcO2Du6E.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-UaZCytJK.mjs → NcSettingsInputText-DXxmqvcd.mjs} +4 -4
- package/dist/chunks/{NcSettingsInputText-UaZCytJK.mjs.map → NcSettingsInputText-DXxmqvcd.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-bupJ6Jna.mjs → NcSettingsSection-DBe4fKFA.mjs} +3 -3
- package/dist/chunks/{NcSettingsSection-bupJ6Jna.mjs.map → NcSettingsSection-DBe4fKFA.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-m79BAMzc.cjs → NcSettingsSection-qgIYSB_M.cjs} +3 -3
- package/dist/chunks/{NcSettingsSection-m79BAMzc.cjs.map → NcSettingsSection-qgIYSB_M.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup--i1OpaqD.cjs → NcSettingsSelectGroup-DD8PEgvQ.cjs} +6 -6
- package/dist/chunks/{NcSettingsSelectGroup--i1OpaqD.cjs.map → NcSettingsSelectGroup-DD8PEgvQ.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-OBtXPYek.mjs → NcSettingsSelectGroup-d2TLOW1O.mjs} +8 -8
- package/dist/chunks/{NcSettingsSelectGroup-OBtXPYek.mjs.map → NcSettingsSelectGroup-d2TLOW1O.mjs.map} +1 -1
- package/dist/chunks/{NcTextField-J7CSrszM.mjs → NcTextField-CU-YIhL3.mjs} +4 -4
- package/dist/chunks/{NcTextField-J7CSrszM.mjs.map → NcTextField-CU-YIhL3.mjs.map} +1 -1
- package/dist/chunks/{NcTextField-_LseQJYw.cjs → NcTextField-CsnzlYWD.cjs} +2 -2
- package/dist/chunks/{NcTextField-_LseQJYw.cjs.map → NcTextField-CsnzlYWD.cjs.map} +1 -1
- package/dist/chunks/NcTimezonePicker-C-Ci2IuC.cjs +3780 -0
- package/dist/chunks/{NcTimezonePicker-3_GbgBdk.cjs.map → NcTimezonePicker-C-Ci2IuC.cjs.map} +1 -1
- package/dist/chunks/NcTimezonePicker-gvp9MAcg.mjs +3786 -0
- package/dist/chunks/{NcTimezonePicker-WyBb1HGy.mjs.map → NcTimezonePicker-gvp9MAcg.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-dk-rgek6.cjs → NcUserBubble-COhpp9l_.cjs} +4 -3
- package/dist/chunks/{NcUserBubble-GvPAfzyX.mjs.map → NcUserBubble-COhpp9l_.cjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-GvPAfzyX.mjs → NcUserBubble-CbufscPi.mjs} +6 -5
- package/dist/chunks/{NcUserBubble-dk-rgek6.cjs.map → NcUserBubble-CbufscPi.mjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-Y1esUu9e.mjs → NcUserStatusIcon-0SGYQL9L.mjs} +37 -54
- package/dist/chunks/{NcUserStatusIcon-Y1esUu9e.mjs.map → NcUserStatusIcon-0SGYQL9L.mjs.map} +1 -1
- package/dist/chunks/NcUserStatusIcon-C7dfcW39.cjs +150 -0
- package/dist/chunks/{NcUserStatusIcon-vElqf2Lx.cjs.map → NcUserStatusIcon-C7dfcW39.cjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-Cswoc9a6.cjs → ScopeComponent-CSd5rNUA.cjs} +1 -1
- package/dist/chunks/{ScopeComponent-Cswoc9a6.cjs.map → ScopeComponent-CSd5rNUA.cjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-_g3nK3Vt.mjs → ScopeComponent-LxI8YPnR.mjs} +1 -1
- package/dist/chunks/{ScopeComponent-_g3nK3Vt.mjs.map → ScopeComponent-LxI8YPnR.mjs.map} +1 -1
- package/dist/chunks/_l10n-B986q8RC.cjs +66 -0
- package/dist/chunks/_l10n-B986q8RC.cjs.map +1 -0
- package/dist/chunks/_l10n-D8Scz3mH.mjs +68 -0
- package/dist/chunks/_l10n-D8Scz3mH.mjs.map +1 -0
- package/dist/chunks/_plugin-vue2_normalizer-Bj5bLKV4.mjs.map +1 -0
- package/dist/chunks/_plugin-vue2_normalizer-GXKvuwrq.cjs.map +1 -0
- package/dist/chunks/{actionGlobal-fRayfdEK.mjs.map → actionGlobal-D49NL940.mjs.map} +1 -1
- package/dist/chunks/{actionGlobal-SGFis4LZ.cjs.map → actionGlobal-DL1VaQzF.cjs.map} +1 -1
- package/dist/chunks/{actionText-nj1gFMEY.cjs → actionText-iWNpvZuI.cjs} +1 -1
- package/dist/chunks/{actionText-nj1gFMEY.cjs.map → actionText-iWNpvZuI.cjs.map} +1 -1
- package/dist/chunks/{actionText-bMy_49i8.mjs → actionText-jLsEBszD.mjs} +1 -1
- package/dist/chunks/{actionText-bMy_49i8.mjs.map → actionText-jLsEBszD.mjs.map} +1 -1
- package/dist/chunks/{autolink-oKM43mOC.mjs.map → autolink-BtgUDDdk.mjs.map} +1 -1
- package/dist/chunks/{autolink-gVCgJtXh.cjs.map → autolink-D0rLUkqm.cjs.map} +1 -1
- package/dist/chunks/{emoji-mJIuLpNR.cjs → emoji-DEH9dtOa.cjs} +7 -6
- package/dist/chunks/{emoji-mJIuLpNR.cjs.map → emoji-DEH9dtOa.cjs.map} +1 -1
- package/dist/chunks/{emoji-tllD0Rvt.mjs → emoji-k4gWHxrE.mjs} +4 -3
- package/dist/chunks/{emoji-tllD0Rvt.mjs.map → emoji-k4gWHxrE.mjs.map} +1 -1
- package/dist/chunks/{focusTrap-Py2bQ9-r.mjs.map → focusTrap-Be9GEB5C.mjs.map} +1 -1
- package/dist/chunks/{focusTrap-n3H52LOw.cjs.map → focusTrap-xauhLvvr.cjs.map} +1 -1
- package/dist/chunks/index-Bh9FEWbr.cjs +87 -0
- package/dist/chunks/index-Bh9FEWbr.cjs.map +1 -0
- package/dist/chunks/{index-XRGLuo0a.cjs → index-CIsMzBte.cjs} +9 -11
- package/dist/chunks/{index-XRGLuo0a.cjs.map → index-CIsMzBte.cjs.map} +1 -1
- package/dist/chunks/index-CU14QsCg.mjs +88 -0
- package/dist/chunks/index-CU14QsCg.mjs.map +1 -0
- package/dist/chunks/{index-FO4BaGaF.cjs → index-Cke9rKBg.cjs} +1 -1
- package/dist/chunks/{index-FO4BaGaF.cjs.map → index-Cke9rKBg.cjs.map} +1 -1
- package/dist/chunks/{index-2phCrsSH.mjs → index-CnpswYi6.mjs} +1 -1
- package/dist/chunks/{index-2phCrsSH.mjs.map → index-CnpswYi6.mjs.map} +1 -1
- package/dist/chunks/{index-05Rfhge1.mjs → index-DYXjj9ET.mjs} +10 -12
- package/dist/chunks/{index-05Rfhge1.mjs.map → index-DYXjj9ET.mjs.map} +1 -1
- package/dist/chunks/{logger-3m1eQsSo.mjs.map → logger-C7qcfVW8.mjs.map} +1 -1
- package/dist/chunks/{logger-G6OKp5ly.cjs.map → logger-D9RRY4er.cjs.map} +1 -1
- package/dist/chunks/{referencePickerModal-TxU49swn.mjs → referencePickerModal-DUhJWt2e.mjs} +721 -659
- package/dist/chunks/referencePickerModal-DUhJWt2e.mjs.map +1 -0
- package/dist/chunks/{referencePickerModal-bKXpgb2c.cjs → referencePickerModal-DV7-XzCc.cjs} +377 -315
- package/dist/chunks/referencePickerModal-DV7-XzCc.cjs.map +1 -0
- package/dist/chunks/{usernameToColor-AinK73Yf.cjs → usernameToColor-DibvD_OP.cjs} +1 -1
- package/dist/chunks/{usernameToColor-AinK73Yf.cjs.map → usernameToColor-DibvD_OP.cjs.map} +1 -1
- package/dist/chunks/{usernameToColor-CgFQ3CLQ.mjs → usernameToColor-iYF-oKTP.mjs} +1 -1
- package/dist/chunks/{usernameToColor-CgFQ3CLQ.mjs.map → usernameToColor-iYF-oKTP.mjs.map} +1 -1
- package/dist/functions/reference/widgets.d.ts +37 -0
- package/dist/index.cjs +18 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +112 -111
- package/package.json +13 -13
- package/dist/chunks/NcAppNavigation-7U8buuT7.mjs.map +0 -1
- package/dist/chunks/NcAppNavigation-AcPesLHq.cjs.map +0 -1
- package/dist/chunks/NcAppNavigationItem-9n2uXjvj.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationItem-pvFIrGQv.cjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-0EjSdGnM.mjs +0 -3
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-0EjSdGnM.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-0FNcC7Nt.cjs +0 -4
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-0FNcC7Nt.cjs.map +0 -1
- package/dist/chunks/NcContent-L5DDeJmE.cjs +0 -124
- package/dist/chunks/NcContent-YJfqE5Kv.mjs +0 -131
- package/dist/chunks/NcRelatedResourcesPanel-f1Up3M7Q.cjs +0 -205
- package/dist/chunks/NcRelatedResourcesPanel-f1Up3M7Q.cjs.map +0 -1
- package/dist/chunks/NcRelatedResourcesPanel-zXNE9qiS.mjs +0 -211
- package/dist/chunks/NcRelatedResourcesPanel-zXNE9qiS.mjs.map +0 -1
- package/dist/chunks/NcRichText-0eMrB-8S.cjs.map +0 -1
- package/dist/chunks/NcRichText-Vm0d22pV.mjs.map +0 -1
- package/dist/chunks/NcTimezonePicker-3_GbgBdk.cjs +0 -7195
- package/dist/chunks/NcTimezonePicker-WyBb1HGy.mjs +0 -7201
- package/dist/chunks/NcUserStatusIcon-vElqf2Lx.cjs +0 -167
- package/dist/chunks/_l10n-AmjncLyn.cjs +0 -64
- package/dist/chunks/_l10n-AmjncLyn.cjs.map +0 -1
- package/dist/chunks/_l10n-Y2fvkVoK.mjs +0 -66
- package/dist/chunks/_l10n-Y2fvkVoK.mjs.map +0 -1
- package/dist/chunks/_plugin-vue2_normalizer-DCfUPqga.cjs.map +0 -1
- package/dist/chunks/_plugin-vue2_normalizer-u6G_3nkj.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-TxU49swn.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-bKXpgb2c.cjs.map +0 -1
- /package/dist/assets/{NcActionButton-rOZFVQA8.css → NcActionButton-Cs5kVVAD.css} +0 -0
- /package/dist/assets/{NcActionButtonGroup-oXobVIqQ.css → NcActionButtonGroup-ChehtUip.css} +0 -0
- /package/dist/assets/{NcActionCaption-afJqyJO6.css → NcActionCaption-Bp8mrIk7.css} +0 -0
- /package/dist/assets/{NcActionCheckbox-6Pvlr1E7.css → NcActionCheckbox-Do--WvUT.css} +0 -0
- /package/dist/assets/{NcActionInput-4zSvDkWm.css → NcActionInput-DjNK8ORa.css} +0 -0
- /package/dist/assets/{NcActionLink-zdzQgwtH.css → NcActionLink-DN3NCDC0.css} +0 -0
- /package/dist/assets/{NcActionRadio-eOr9Sp-D.css → NcActionRadio-B46v1Kn4.css} +0 -0
- /package/dist/assets/{NcActionRouter-MFTD6tYI.css → NcActionRouter-wVMPq1gi.css} +0 -0
- /package/dist/assets/{NcActionSeparator-l98xWbiL.css → NcActionSeparator-CX3zFZuI.css} +0 -0
- /package/dist/assets/{NcActionText-GJYwsw_U.css → NcActionText-YljCzD9Q.css} +0 -0
- /package/dist/assets/{NcActionTextEditable-JrYuWEDd.css → NcActionTextEditable-mti5YQN1.css} +0 -0
- /package/dist/assets/{NcAppNavigationCaption-I1dcvB0N.css → NcAppNavigationCaption-jV1y8HQ1.css} +0 -0
- /package/dist/assets/{NcAppNavigationIconBullet-Nf3ARMLv.css → NcAppNavigationIconBullet-1_cBEwu8.css} +0 -0
- /package/dist/assets/{NcAppNavigationItem-caMsw_N_.css → NcAppNavigationItem-BxoyzD83.css} +0 -0
- /package/dist/assets/{NcAppNavigationNew-joyd78FM.css → NcAppNavigationNew-COjJ3vwU.css} +0 -0
- /package/dist/assets/{NcAppNavigationNewItem-ue-H4LQY.css → NcAppNavigationNewItem-C574fgtB.css} +0 -0
- /package/dist/assets/{NcAppNavigationSettings-Jx_6RpSn.css → NcAppNavigationSettings-nH_pGlKc.css} +0 -0
- /package/dist/assets/{NcAppNavigationSpacer-uaft91Uz.css → NcAppNavigationSpacer-C5p-33VT.css} +0 -0
- /package/dist/assets/{NcAppNavigationToggle-3vMKtCQL.css → NcAppNavigationToggle-De8wq0JA.css} +0 -0
- /package/dist/assets/{NcAppSettingsDialog-0eOo3ERv.css → NcAppSettingsDialog-DR46jcRG.css} +0 -0
- /package/dist/assets/{NcAppSettingsSection-ahfdhix_.css → NcAppSettingsSection-BqF92GLH.css} +0 -0
- /package/dist/assets/{NcAppSidebar-RkF-tqKy.css → NcAppSidebar-BGQX62or.css} +0 -0
- /package/dist/assets/{NcAppSidebarTab-FywbKxqo.css → NcAppSidebarTab-XLBsrGqg.css} +0 -0
- /package/dist/assets/{NcAvatar-5H9cqcD1.css → NcAvatar-Dkf1ypwP.css} +0 -0
- /package/dist/assets/{NcBreadcrumb-HspaFygg.css → NcBreadcrumb-eyloXKCC.css} +0 -0
- /package/dist/assets/{NcBreadcrumbs-KBV0Jccv.css → NcBreadcrumbs-oFXQlxy-.css} +0 -0
- /package/dist/assets/{NcButton-4Wj3KJn8.css → NcButton-DhaPcomf.css} +0 -0
- /package/dist/assets/{NcCheckboxRadioSwitch-mgKotCbU.css → NcCheckboxRadioSwitch-CaAqi0Jt.css} +0 -0
- /package/dist/assets/{NcColorPicker-jW6HOxWA.css → NcColorPicker-CNboc7FY.css} +0 -0
- /package/dist/assets/{NcContent-LWR23l9i.css → NcContent-tZHbeX2L.css} +0 -0
- /package/dist/assets/{NcCounterBubble-rgkmqN46.css → NcCounterBubble-CuCSao3j.css} +0 -0
- /package/dist/assets/{NcDashboardWidget-01deRW9Z.css → NcDashboardWidget-DTV15Fb1.css} +0 -0
- /package/dist/assets/{NcDashboardWidgetItem-OL--xR_P.css → NcDashboardWidgetItem-4v77FH89.css} +0 -0
- /package/dist/assets/{NcDateTimePickerNative-5yybtvfx.css → NcDateTimePickerNative-DnLJu29_.css} +0 -0
- /package/dist/assets/{NcDialog-DN-rY-55.css → NcDialog-M36tj7nk.css} +0 -0
- /package/dist/assets/{NcEllipsisedOption-eoI10kvc.css → NcEllipsisedOption-B6gjXSS9.css} +0 -0
- /package/dist/assets/{NcEmptyContent-pSz7F6Oe.css → NcEmptyContent-ClLPsXo5.css} +0 -0
- /package/dist/assets/{NcGuestContent-mGGTzI2_.css → NcGuestContent-CYYZPMjb.css} +0 -0
- /package/dist/assets/{NcHeaderMenu-Srn5iXdL.css → NcHeaderMenu-BKufmJd0.css} +0 -0
- /package/dist/assets/{NcIconSvgWrapper-KLotijwU.css → NcIconSvgWrapper-oui2KPBT.css} +0 -0
- /package/dist/assets/{NcInputConfirmCancel-ks8z8dIn.css → NcInputConfirmCancel-CSzzPx0i.css} +0 -0
- /package/dist/assets/{NcInputField-L2Lld_iG.css → NcInputField-vYuV3-IY.css} +0 -0
- /package/dist/assets/{NcListItem-L8LeGwpe.css → NcListItem-vwt4bCl6.css} +0 -0
- /package/dist/assets/{NcListItemIcon-PQ2s6ZqX.css → NcListItemIcon-9Dazpmpd.css} +0 -0
- /package/dist/assets/{NcLoadingIcon-hZn7TJM8.css → NcLoadingIcon-CFmftMkz.css} +0 -0
- /package/dist/assets/{NcMentionBubble-YYl1ib_F.css → NcMentionBubble-BhiXWJv8.css} +0 -0
- /package/dist/assets/{NcModal-sIK5sUoC.css → NcModal-CwgrmxSg.css} +0 -0
- /package/dist/assets/{NcNoteCard-f0NZpwjL.css → NcNoteCard-B_Q1mnCM.css} +0 -0
- /package/dist/assets/{NcPopover-MK4GcuPY.css → NcPopover-wrgZy49g.css} +0 -0
- /package/dist/assets/{NcProgressBar-w4-G5gQR.css → NcProgressBar-DDj4bmBB.css} +0 -0
- /package/dist/assets/{NcRichContenteditable-rW6l0h3m.css → NcRichContenteditable-CtbqXSHe.css} +0 -0
- /package/dist/assets/{NcSettingsInputText-MPi6a3Yy.css → NcSettingsInputText-w-LprdjK.css} +0 -0
- /package/dist/assets/{NcSettingsSection-PEWm0eeL.css → NcSettingsSection-8RabR54v.css} +0 -0
- /package/dist/assets/{NcSettingsSelectGroup-_Jpb8yE3.css → NcSettingsSelectGroup-D8mlvzIT.css} +0 -0
- /package/dist/assets/{NcTextArea-4rVwq6GK.css → NcTextArea-DitXCroY.css} +0 -0
- /package/dist/assets/{NcUserBubble-jjzI5imn.css → NcUserBubble-COPMjmKa.css} +0 -0
- /package/dist/assets/{NcUserStatusIcon-62u43_6P.css → NcUserStatusIcon-Dra7jf_o.css} +0 -0
- /package/dist/assets/{Tooltip-wOLIuz0Q.css → Tooltip-DA4si7PR.css} +0 -0
- /package/dist/chunks/{GenRandomId-ULxaMkkr.cjs → GenRandomId-B2O1GMbH.cjs} +0 -0
- /package/dist/chunks/{GenRandomId-VodkdWbp.mjs → GenRandomId-BW3iYFf9.mjs} +0 -0
- /package/dist/chunks/{Linkify-V7PfCeZ8.mjs → Linkify-BaDLLFxP.mjs} +0 -0
- /package/dist/chunks/{Linkify-f3s3nAe_.cjs → Linkify-Dola0NBa.cjs} +0 -0
- /package/dist/chunks/{_plugin-vue2_normalizer-u6G_3nkj.mjs → _plugin-vue2_normalizer-Bj5bLKV4.mjs} +0 -0
- /package/dist/chunks/{_plugin-vue2_normalizer-DCfUPqga.cjs → _plugin-vue2_normalizer-GXKvuwrq.cjs} +0 -0
- /package/dist/chunks/{actionGlobal-fRayfdEK.mjs → actionGlobal-D49NL940.mjs} +0 -0
- /package/dist/chunks/{actionGlobal-SGFis4LZ.cjs → actionGlobal-DL1VaQzF.cjs} +0 -0
- /package/dist/chunks/{autolink-oKM43mOC.mjs → autolink-BtgUDDdk.mjs} +0 -0
- /package/dist/chunks/{autolink-gVCgJtXh.cjs → autolink-D0rLUkqm.cjs} +0 -0
- /package/dist/chunks/{focusTrap-Py2bQ9-r.mjs → focusTrap-Be9GEB5C.mjs} +0 -0
- /package/dist/chunks/{focusTrap-n3H52LOw.cjs → focusTrap-xauhLvvr.cjs} +0 -0
- /package/dist/chunks/{logger-3m1eQsSo.mjs → logger-C7qcfVW8.mjs} +0 -0
- /package/dist/chunks/{logger-G6OKp5ly.cjs → logger-D9RRY4er.cjs} +0 -0
package/dist/chunks/{NcAppSettingsDialog-S9pm_eoJ.mjs.map → NcAppSettingsDialog-DeFBTD2J.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcAppSettingsDialog-S9pm_eoJ.mjs","sources":["../../src/components/NcAppSettingsDialog/NcAppSettingsDialog.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2020 Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\n - @author Ferdinand Thiessen <opensource@fthiessen.de>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\nJust nest the `AppSettingSections` component into `NcAppSettingsDialog`,\nproviding the section's name prop. You can put your settings within each\n`NcAppSettingsSection` component.\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog :open.sync=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Example name 1\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Example name 2\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Example name 3\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Example name 4\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-5\" name=\"Example name 5\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-6\" name=\"Example name 6\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-7\" name=\"Example name 7\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-8\" name=\"Example name 8\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-9\" name=\"Example name 9\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-10\" name=\"Example name 10\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n\nYou can also add icons to the section navigation:\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog :open.sync=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Instagram\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Instagram :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tInstagram setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Mastodon\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Mastodon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tMastodon setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Twitch\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitch :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tTwitch setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Twitter\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitter :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tTwitter setting\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nimport Instagram from 'vue-material-design-icons/Instagram.vue'\nimport Mastodon from 'vue-material-design-icons/Mastodon.vue'\nimport Twitch from 'vue-material-design-icons/Twitch.vue'\nimport Twitter from 'vue-material-design-icons/Twitter.vue'\n\nexport default {\n\tcomponents: {\n\t\tInstagram,\n\t\tMastodon,\n\t\tTwitch,\n\t\tTwitter,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcDialog v-if=\"open\"\n\t\t:navigation-aria-label=\"settingsNavigationAriaLabel\"\n\t\tv-bind=\"dialogProperties\"\n\t\t@update:open=\"handleCloseModal\">\n\t\t<template v-if=\"hasNavigation\" #navigation=\"{ isCollapsed }\">\n\t\t\t<ul v-if=\"!isCollapsed\"\n\t\t\t\tclass=\"navigation-list\">\n\t\t\t\t<li v-for=\"section in sections\" :key=\"section.id\">\n\t\t\t\t\t<a :aria-current=\"`${section.id === selectedSection}`\"\n\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'navigation-list__link': true,\n\t\t\t\t\t\t\t'navigation-list__link--active': section.id === selectedSection,\n\t\t\t\t\t\t\t'navigation-list__link--icon': hasNavigationIcons,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:href=\"`#settings-section_${section.id}`\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t@click.prevent=\"handleSettingsNavigationClick(section.id)\"\n\t\t\t\t\t\t@keydown.enter=\"handleSettingsNavigationClick(section.id)\">\n\t\t\t\t\t\t<div v-if=\"hasNavigationIcons\" class=\"navigation-list__link-icon\">\n\t\t\t\t\t\t\t<NcVNodes v-if=\"section.icon\" :vnodes=\"section.icon\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"navigation-list__link-text\">\n\t\t\t\t\t\t\t{{ section.name }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t\t<div ref=\"settingsScroller\">\n\t\t\t<slot />\n\t\t</div>\n\t</NcDialog>\n</template>\n\n<script>\nimport NcDialog from '../NcDialog/index.js'\nimport NcVNodes from '../NcVNodes/index.js'\nimport { useIsMobile } from '../../composables/useIsMobile/index.js'\nimport { t } from '../../l10n.js'\n\nimport debounce from 'debounce'\nimport Vue from 'vue'\n\nexport default {\n\n\tname: 'NcAppSettingsDialog',\n\n\tcomponents: {\n\t\tNcDialog,\n\t\tNcVNodes,\n\t},\n\n\tprovide() {\n\t\treturn {\n\t\t\tregisterSection: this.registerSection,\n\t\t\tunregisterSection: this.unregisterSection,\n\t\t}\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Determines the open / closed state of the modal\n\t\t */\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Shows the navigation on desktop if true\n\t\t */\n\t\tshowNavigation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Selector for the popover container\n\t\t */\n\t\tcontainer: {\n\t\t\ttype: String,\n\t\t\tdefault: 'body',\n\t\t},\n\n\t\t/**\n\t\t * Name of the settings\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Additional elements to add to the focus trap\n\t\t */\n\t\tadditionalTrapElements: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t},\n\n\temits: ['update:open'],\n\n\tsetup() {\n\t\treturn {\n\t\t\tisMobile: useIsMobile(),\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedSection: '',\n\t\t\tlinkClicked: false,\n\t\t\taddedScrollListener: false,\n\t\t\tscroller: null,\n\t\t\t/**\n\t\t\t * Currently registered settings sections\n\t\t\t * @type {{ id: string, name: string, icon?: import('vue').VNode[] }[]}\n\t\t\t */\n\t\t\tsections: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdialogProperties() {\n\t\t\treturn {\n\t\t\t\tadditionalTrapElements: this.additionalTrapElements,\n\t\t\t\tcloseOnClickOutside: true,\n\t\t\t\tclass: 'app-settings',\n\t\t\t\tcontainer: this.container,\n\t\t\t\tcontentClasses: 'app-settings__content',\n\t\t\t\tsize: 'large',\n\t\t\t\tname: this.name,\n\t\t\t\tnavigationClasses: 'app-settings__navigation',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Check if one or more navigation entries provide icons\n\t\t */\n\t\thasNavigationIcons() {\n\t\t\treturn this.sections.some(({ icon }) => !!icon)\n\t\t},\n\n\t\thasNavigation() {\n\t\t\tif (this.isMobile || !this.showNavigation) {\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\treturn true\n\t\t\t}\n\t\t},\n\n\t\tsettingsNavigationAriaLabel() {\n\t\t\treturn t('Settings navigation')\n\t\t},\n\t},\n\n\tupdated() {\n\t\t// Check that the scroller element has been mounted\n\t\tif (!this.$refs.settingsScroller) {\n\t\t\treturn\n\t\t}\n\t\t// Get the scroller element\n\t\tthis.scroller = this.$refs.settingsScroller\n\t\tif (!this.addedScrollListener) {\n\t\t\tthis.scroller.addEventListener('scroll', this.handleScroll)\n\t\t\tthis.addedScrollListener = true\n\t\t}\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Called when a new section is registered\n\t\t * @param {string} id The section ID\n\t\t * @param {string} name The section name\n\t\t * @param {import('vue').VNode[]|undefined} icon Optional icon component\n\t\t */\n\t\tregisterSection(id, name, icon) {\n\t\t\t// Check for the uniqueness of section names\n\t\t\tif (this.sections.some(({ id: otherId }) => id === otherId)) {\n\t\t\t\tthrow new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`)\n\t\t\t}\n\t\t\tif (this.sections.some(({ name: otherName }) => name === otherName)) {\n\t\t\t\tVue.util.warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`)\n\t\t\t}\n\n\t\t\tconst newSections = [...this.sections, { id, name, icon }]\n\t\t\t// Sort sections by order in slots\n\t\t\tthis.sections = newSections.sort(({ id: idA }, { id: idB }) => {\n\t\t\t\tconst indexOf = (id) => this.$slots.default?.findIndex?.(vnode => vnode?.componentOptions?.propsData?.id === id) ?? -1\n\t\t\t\treturn indexOf(idA) - indexOf(idB)\n\t\t\t})\n\n\t\t\t// If this is the first section registered, set it as selected\n\t\t\tif (this.sections.length === 1) {\n\t\t\t\tthis.selectedSection = id\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Called when a section is unregistered to remove it from dialog\n\t\t * @param {string} id The section ID\n\t\t */\n\t\tunregisterSection(id) {\n\t\t\tthis.sections = this.sections.filter(({ id: otherId }) => id !== otherId)\n\n\t\t\t// If the current section is unregistered, set the first section as selected\n\t\t\tif (this.selectedSection === id) {\n\t\t\t\tthis.selectedSection = this.sections[0]?.id ?? ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Scrolls the content to the selected settings section.absolute\n\t\t *\n\t\t * @param {string} item the ID of the section\n\t\t */\n\t\thandleSettingsNavigationClick(item) {\n\t\t\tthis.linkClicked = true\n\t\t\tdocument.getElementById('settings-section_' + item).scrollIntoView({\n\t\t\t\tbehavior: 'smooth',\n\t\t\t\tinline: 'nearest',\n\t\t\t})\n\t\t\tthis.selectedSection = item\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.linkClicked = false\n\t\t\t}, 1000)\n\t\t},\n\n\t\thandleCloseModal(isOpen) {\n\t\t\tif (isOpen) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$emit('update:open', false)\n\t\t\t// Remove scroll listener each time the modal is closed\n\t\t\tthis.scroller.removeEventListener('scroll', this.handleScroll)\n\t\t\tthis.addedScrollListener = false\n\t\t\tthis.scroller.scrollTop = 0\n\t\t},\n\n\t\thandleScroll() {\n\t\t\tif (!this.linkClicked) {\n\t\t\t\tthis.unfocusNavigationItem()\n\t\t\t}\n\t\t},\n\n\t\t// Remove selected section once the user starts scrolling\n\t\tunfocusNavigationItem: debounce(function() {\n\t\t\tthis.selectedSection = ''\n\t\t\tif (document.activeElement.className.includes('navigation-list__link')) {\n\t\t\t\tdocument.activeElement.blur()\n\t\t\t}\n\t\t}, 300),\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n.app-settings {\n\t:deep &__navigation {\n\t\tmin-width: 200px;\n\t\tmargin-right: 20px;\n\t\toverflow-x: hidden;\n\t\toverflow-y: auto;\n\t\tposition: relative;\n\t}\n\t:deep &__content {\n\t\tbox-sizing: border-box;\n\t\tpadding-inline: 16px;\n\t}\n}\n\n.navigation-list {\n\theight: 100%;\n\tbox-sizing: border-box;\n\toverflow-y: auto;\n\tpadding: 12px;\n\n\t&__link {\n\t\tdisplay: flex;\n\t\talign-content: center;\n\t\tfont-size: 16px;\n\t\theight: $clickable-area;\n\t\tmargin: 4px 0;\n\t\tline-height: $clickable-area;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: bold;\n\t\tpadding: 0 20px;\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\n\t\t&--active {\n\t\t\tbackground-color: var(--color-primary-element-light) !important;\n\t\t}\n\n\t\t&--icon {\n\t\t\tpadding-inline-start: 8px;\n\t\t\tgap: 4px;\n\t\t}\n\n\t\t&-icon {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-content: center;\n\t\t\twidth: 36px;\n\t\t\tmax-width: 36px;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: $breakpoint-small-mobile) {\n\t.app-settings {\n\t\t:deep .dialog__name {\n\t\t\tpadding-inline-start: 16px;\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main","NcDialog","NcVNodes","useIsMobile","icon","t","id","name","otherId","otherName","Vue","newSections","idA","idB","indexOf","vnode","item","isOpen","debounce"],"mappings":";;;;;;;;AAyLA,MAAAA,IAAA;AAAA,EAEA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,EACA;AAAA,EAEA,UAAA;AACA,WAAA;AAAA,MACA,iBAAA,KAAA;AAAA,MACA,mBAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,CAAA;AAAA,IACA;AAAA,EAEA;AAAA,EAEA,OAAA,CAAA,aAAA;AAAA,EAEA,QAAA;AACA,WAAA;AAAA,MACA,UAAAC,EAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,aAAA;AAAA,MACA,qBAAA;AAAA,MACA,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,UAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,mBAAA;AACA,aAAA;AAAA,QACA,wBAAA,KAAA;AAAA,QACA,qBAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,KAAA;AAAA,QACA,gBAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA,KAAA;AAAA,QACA,mBAAA;AAAA,MACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAA;AACA,aAAA,KAAA,SAAA,KAAA,CAAA,EAAA,MAAAC,EAAA,MAAA,CAAA,CAAAA,CAAA;AAAA,IACA;AAAA,IAEA,gBAAA;AACA,aAAA,OAAA,YAAA,CAAA,KAAA;AAAA,IAKA;AAAA,IAEA,8BAAA;AACA,aAAAC,EAAA,qBAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAEA,IAAA,KAAA,MAAA,qBAIA,KAAA,WAAA,KAAA,MAAA,kBACA,KAAA,wBACA,KAAA,SAAA,iBAAA,UAAA,KAAA,YAAA,GACA,KAAA,sBAAA;AAAA,EAGA;AAAA,EAEA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAAC,GAAAC,GAAAH,GAAA;AAEA,UAAA,KAAA,SAAA,KAAA,CAAA,EAAA,IAAAI,EAAA,MAAAF,MAAAE,CAAA;AACA,cAAA,IAAA,MAAA,+BAAAF,CAAA,8DAAA;AAEA,MAAA,KAAA,SAAA,KAAA,CAAA,EAAA,MAAAG,EAAA,MAAAF,MAAAE,CAAA,KACAC,EAAA,KAAA,KAAA,iCAAAH,CAAA,gEAAA;AAGA,YAAAI,IAAA,CAAA,GAAA,KAAA,UAAA,EAAA,IAAAL,GAAA,MAAAC,GAAA,MAAAH,GAAA;AAEA,WAAA,WAAAO,EAAA,KAAA,CAAA,EAAA,IAAAC,KAAA,EAAA,IAAAC,QAAA;AACA,cAAAC,IAAA,CAAAR,MAAA,KAAA,OAAA,SAAA,YAAA,CAAAS,MAAAA,GAAA,kBAAA,WAAA,OAAAT,CAAA,KAAA;AACA,eAAAQ,EAAAF,CAAA,IAAAE,EAAAD,CAAA;AAAA,MACA,CAAA,GAGA,KAAA,SAAA,WAAA,MACA,KAAA,kBAAAP;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,kBAAAA,GAAA;AACA,WAAA,WAAA,KAAA,SAAA,OAAA,CAAA,EAAA,IAAAE,EAAA,MAAAF,MAAAE,CAAA,GAGA,KAAA,oBAAAF,MACA,KAAA,kBAAA,KAAA,SAAA,CAAA,GAAA,MAAA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,8BAAAU,GAAA;AACA,WAAA,cAAA,IACA,SAAA,eAAA,sBAAAA,CAAA,EAAA,eAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,MACA,CAAA,GACA,KAAA,kBAAAA,GACA,WAAA,MAAA;AACA,aAAA,cAAA;AAAA,MACA,GAAA,GAAA;AAAA,IACA;AAAA,IAEA,iBAAAC,GAAA;AACA,MAAAA,MAIA,KAAA,MAAA,eAAA,EAAA,GAEA,KAAA,SAAA,oBAAA,UAAA,KAAA,YAAA,GACA,KAAA,sBAAA,IACA,KAAA,SAAA,YAAA;AAAA,IACA;AAAA,IAEA,eAAA;AACA,MAAA,KAAA,eACA,KAAA,sBAAA;AAAA,IAEA;AAAA;AAAA,IAGA,uBAAAC,EAAA,WAAA;AACA,WAAA,kBAAA,IACA,SAAA,cAAA,UAAA,SAAA,uBAAA,KACA,SAAA,cAAA,KAAA;AAAA,IAEA,GAAA,GAAA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"NcAppSettingsDialog-DeFBTD2J.mjs","sources":["../../src/components/NcAppSettingsDialog/NcAppSettingsDialog.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2020 Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\n - @author Ferdinand Thiessen <opensource@fthiessen.de>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\nJust nest the `AppSettingSections` component into `NcAppSettingsDialog`,\nproviding the section's name prop. You can put your settings within each\n`NcAppSettingsSection` component.\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog :open.sync=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Example name 1\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Example name 2\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Example name 3\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Example name 4\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-5\" name=\"Example name 5\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-6\" name=\"Example name 6\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-7\" name=\"Example name 7\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-8\" name=\"Example name 8\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-9\" name=\"Example name 9\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-10\" name=\"Example name 10\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n\nYou can also add icons to the section navigation:\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog :open.sync=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Instagram\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Instagram :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tInstagram setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Mastodon\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Mastodon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tMastodon setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Twitch\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitch :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tTwitch setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Twitter\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitter :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tTwitter setting\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nimport Instagram from 'vue-material-design-icons/Instagram.vue'\nimport Mastodon from 'vue-material-design-icons/Mastodon.vue'\nimport Twitch from 'vue-material-design-icons/Twitch.vue'\nimport Twitter from 'vue-material-design-icons/Twitter.vue'\n\nexport default {\n\tcomponents: {\n\t\tInstagram,\n\t\tMastodon,\n\t\tTwitch,\n\t\tTwitter,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcDialog v-if=\"open\"\n\t\t:navigation-aria-label=\"settingsNavigationAriaLabel\"\n\t\tv-bind=\"dialogProperties\"\n\t\t@update:open=\"handleCloseModal\">\n\t\t<template v-if=\"hasNavigation\" #navigation=\"{ isCollapsed }\">\n\t\t\t<ul v-if=\"!isCollapsed\"\n\t\t\t\tclass=\"navigation-list\">\n\t\t\t\t<li v-for=\"section in sections\" :key=\"section.id\">\n\t\t\t\t\t<a :aria-current=\"`${section.id === selectedSection}`\"\n\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'navigation-list__link': true,\n\t\t\t\t\t\t\t'navigation-list__link--active': section.id === selectedSection,\n\t\t\t\t\t\t\t'navigation-list__link--icon': hasNavigationIcons,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:href=\"`#settings-section_${section.id}`\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t@click.prevent=\"handleSettingsNavigationClick(section.id)\"\n\t\t\t\t\t\t@keydown.enter=\"handleSettingsNavigationClick(section.id)\">\n\t\t\t\t\t\t<div v-if=\"hasNavigationIcons\" class=\"navigation-list__link-icon\">\n\t\t\t\t\t\t\t<NcVNodes v-if=\"section.icon\" :vnodes=\"section.icon\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"navigation-list__link-text\">\n\t\t\t\t\t\t\t{{ section.name }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t\t<div ref=\"settingsScroller\">\n\t\t\t<slot />\n\t\t</div>\n\t</NcDialog>\n</template>\n\n<script>\nimport NcDialog from '../NcDialog/index.js'\nimport NcVNodes from '../NcVNodes/index.js'\nimport { useIsMobile } from '../../composables/useIsMobile/index.js'\nimport { t } from '../../l10n.js'\n\nimport debounce from 'debounce'\nimport Vue from 'vue'\n\nexport default {\n\n\tname: 'NcAppSettingsDialog',\n\n\tcomponents: {\n\t\tNcDialog,\n\t\tNcVNodes,\n\t},\n\n\tprovide() {\n\t\treturn {\n\t\t\tregisterSection: this.registerSection,\n\t\t\tunregisterSection: this.unregisterSection,\n\t\t}\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Determines the open / closed state of the modal\n\t\t */\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Shows the navigation on desktop if true\n\t\t */\n\t\tshowNavigation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Selector for the popover container\n\t\t */\n\t\tcontainer: {\n\t\t\ttype: String,\n\t\t\tdefault: 'body',\n\t\t},\n\n\t\t/**\n\t\t * Name of the settings\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Additional elements to add to the focus trap\n\t\t */\n\t\tadditionalTrapElements: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t},\n\n\temits: ['update:open'],\n\n\tsetup() {\n\t\treturn {\n\t\t\tisMobile: useIsMobile(),\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedSection: '',\n\t\t\tlinkClicked: false,\n\t\t\taddedScrollListener: false,\n\t\t\tscroller: null,\n\t\t\t/**\n\t\t\t * Currently registered settings sections\n\t\t\t * @type {{ id: string, name: string, icon?: import('vue').VNode[] }[]}\n\t\t\t */\n\t\t\tsections: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdialogProperties() {\n\t\t\treturn {\n\t\t\t\tadditionalTrapElements: this.additionalTrapElements,\n\t\t\t\tcloseOnClickOutside: true,\n\t\t\t\tclass: 'app-settings',\n\t\t\t\tcontainer: this.container,\n\t\t\t\tcontentClasses: 'app-settings__content',\n\t\t\t\tsize: 'large',\n\t\t\t\tname: this.name,\n\t\t\t\tnavigationClasses: 'app-settings__navigation',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Check if one or more navigation entries provide icons\n\t\t */\n\t\thasNavigationIcons() {\n\t\t\treturn this.sections.some(({ icon }) => !!icon)\n\t\t},\n\n\t\thasNavigation() {\n\t\t\tif (this.isMobile || !this.showNavigation) {\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\treturn true\n\t\t\t}\n\t\t},\n\n\t\tsettingsNavigationAriaLabel() {\n\t\t\treturn t('Settings navigation')\n\t\t},\n\t},\n\n\tupdated() {\n\t\t// Check that the scroller element has been mounted\n\t\tif (!this.$refs.settingsScroller) {\n\t\t\treturn\n\t\t}\n\t\t// Get the scroller element\n\t\tthis.scroller = this.$refs.settingsScroller\n\t\tif (!this.addedScrollListener) {\n\t\t\tthis.scroller.addEventListener('scroll', this.handleScroll)\n\t\t\tthis.addedScrollListener = true\n\t\t}\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Called when a new section is registered\n\t\t * @param {string} id The section ID\n\t\t * @param {string} name The section name\n\t\t * @param {import('vue').VNode[]|undefined} icon Optional icon component\n\t\t */\n\t\tregisterSection(id, name, icon) {\n\t\t\t// Check for the uniqueness of section names\n\t\t\tif (this.sections.some(({ id: otherId }) => id === otherId)) {\n\t\t\t\tthrow new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`)\n\t\t\t}\n\t\t\tif (this.sections.some(({ name: otherName }) => name === otherName)) {\n\t\t\t\tVue.util.warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`)\n\t\t\t}\n\n\t\t\tconst newSections = [...this.sections, { id, name, icon }]\n\t\t\t// Sort sections by order in slots\n\t\t\tthis.sections = newSections.sort(({ id: idA }, { id: idB }) => {\n\t\t\t\tconst indexOf = (id) => this.$slots.default?.findIndex?.(vnode => vnode?.componentOptions?.propsData?.id === id) ?? -1\n\t\t\t\treturn indexOf(idA) - indexOf(idB)\n\t\t\t})\n\n\t\t\t// If this is the first section registered, set it as selected\n\t\t\tif (this.sections.length === 1) {\n\t\t\t\tthis.selectedSection = id\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Called when a section is unregistered to remove it from dialog\n\t\t * @param {string} id The section ID\n\t\t */\n\t\tunregisterSection(id) {\n\t\t\tthis.sections = this.sections.filter(({ id: otherId }) => id !== otherId)\n\n\t\t\t// If the current section is unregistered, set the first section as selected\n\t\t\tif (this.selectedSection === id) {\n\t\t\t\tthis.selectedSection = this.sections[0]?.id ?? ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Scrolls the content to the selected settings section.absolute\n\t\t *\n\t\t * @param {string} item the ID of the section\n\t\t */\n\t\thandleSettingsNavigationClick(item) {\n\t\t\tthis.linkClicked = true\n\t\t\tdocument.getElementById('settings-section_' + item).scrollIntoView({\n\t\t\t\tbehavior: 'smooth',\n\t\t\t\tinline: 'nearest',\n\t\t\t})\n\t\t\tthis.selectedSection = item\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.linkClicked = false\n\t\t\t}, 1000)\n\t\t},\n\n\t\thandleCloseModal(isOpen) {\n\t\t\tif (isOpen) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$emit('update:open', false)\n\t\t\t// Remove scroll listener each time the modal is closed\n\t\t\tthis.scroller.removeEventListener('scroll', this.handleScroll)\n\t\t\tthis.addedScrollListener = false\n\t\t\tthis.scroller.scrollTop = 0\n\t\t},\n\n\t\thandleScroll() {\n\t\t\tif (!this.linkClicked) {\n\t\t\t\tthis.unfocusNavigationItem()\n\t\t\t}\n\t\t},\n\n\t\t// Remove selected section once the user starts scrolling\n\t\tunfocusNavigationItem: debounce(function() {\n\t\t\tthis.selectedSection = ''\n\t\t\tif (document.activeElement.className.includes('navigation-list__link')) {\n\t\t\t\tdocument.activeElement.blur()\n\t\t\t}\n\t\t}, 300),\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n.app-settings {\n\t:deep &__navigation {\n\t\tmin-width: 200px;\n\t\tmargin-right: 20px;\n\t\toverflow-x: hidden;\n\t\toverflow-y: auto;\n\t\tposition: relative;\n\t}\n\t:deep &__content {\n\t\tbox-sizing: border-box;\n\t\tpadding-inline: 16px;\n\t}\n}\n\n.navigation-list {\n\theight: 100%;\n\tbox-sizing: border-box;\n\toverflow-y: auto;\n\tpadding: 12px;\n\n\t&__link {\n\t\tdisplay: flex;\n\t\talign-content: center;\n\t\tfont-size: 16px;\n\t\theight: $clickable-area;\n\t\tmargin: 4px 0;\n\t\tline-height: $clickable-area;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: bold;\n\t\tpadding: 0 20px;\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\n\t\t&--active {\n\t\t\tbackground-color: var(--color-primary-element-light) !important;\n\t\t}\n\n\t\t&--icon {\n\t\t\tpadding-inline-start: 8px;\n\t\t\tgap: 4px;\n\t\t}\n\n\t\t&-icon {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-content: center;\n\t\t\twidth: 36px;\n\t\t\tmax-width: 36px;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: $breakpoint-small-mobile) {\n\t.app-settings {\n\t\t:deep .dialog__name {\n\t\t\tpadding-inline-start: 16px;\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main","NcDialog","NcVNodes","useIsMobile","icon","t","id","name","otherId","otherName","Vue","newSections","idA","idB","indexOf","_c","_b","_a","vnode","item","isOpen","debounce"],"mappings":";;;;;;;;AAyLA,MAAAA,IAAA;AAAA,EAEA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,EACA;AAAA,EAEA,UAAA;AACA,WAAA;AAAA,MACA,iBAAA,KAAA;AAAA,MACA,mBAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,wBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,CAAA;AAAA,IACA;AAAA,EAEA;AAAA,EAEA,OAAA,CAAA,aAAA;AAAA,EAEA,QAAA;AACA,WAAA;AAAA,MACA,UAAAC,EAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,aAAA;AAAA,MACA,qBAAA;AAAA,MACA,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,UAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,mBAAA;AACA,aAAA;AAAA,QACA,wBAAA,KAAA;AAAA,QACA,qBAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,KAAA;AAAA,QACA,gBAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA,KAAA;AAAA,QACA,mBAAA;AAAA,MACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAA;AACA,aAAA,KAAA,SAAA,KAAA,CAAA,EAAA,MAAAC,EAAA,MAAA,CAAA,CAAAA,CAAA;AAAA,IACA;AAAA,IAEA,gBAAA;AACA,aAAA,OAAA,YAAA,CAAA,KAAA;AAAA,IAKA;AAAA,IAEA,8BAAA;AACA,aAAAC,EAAA,qBAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAEA,IAAA,KAAA,MAAA,qBAIA,KAAA,WAAA,KAAA,MAAA,kBACA,KAAA,wBACA,KAAA,SAAA,iBAAA,UAAA,KAAA,YAAA,GACA,KAAA,sBAAA;AAAA,EAGA;AAAA,EAEA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAAC,GAAAC,GAAAH,GAAA;AAEA,UAAA,KAAA,SAAA,KAAA,CAAA,EAAA,IAAAI,EAAA,MAAAF,MAAAE,CAAA;AACA,cAAA,IAAA,MAAA,+BAAA,OAAAF,GAAA,+DAAA;AAEA,MAAA,KAAA,SAAA,KAAA,CAAA,EAAA,MAAAG,EAAA,MAAAF,MAAAE,CAAA,KACAC,EAAA,KAAA,KAAA,iCAAA,OAAAH,GAAA,iEAAA;AAGA,YAAAI,IAAA,CAAA,GAAA,KAAA,UAAA,EAAA,IAAAL,GAAA,MAAAC,GAAA,MAAAH,GAAA;AAEA,WAAA,WAAAO,EAAA,KAAA,CAAA,EAAA,IAAAC,KAAA,EAAA,IAAAC,QAAA;AACA,cAAAC,IAAA,CAAAR,MAAA;;AAAA,kBAAAS,KAAAC,KAAAC,IAAA,KAAA,OAAA,YAAA,gBAAAA,EAAA,cAAA,gBAAAD,EAAA,KAAAC,GAAA,CAAAC,MAAA;;AAAA,qBAAAF,KAAAC,IAAAC,KAAA,gBAAAA,EAAA,qBAAA,gBAAAD,EAAA,cAAA,gBAAAD,EAAA,QAAAV;AAAA,iBAAA,OAAAS,IAAA;AAAA;AACA,eAAAD,EAAAF,CAAA,IAAAE,EAAAD,CAAA;AAAA,MACA,CAAA,GAGA,KAAA,SAAA,WAAA,MACA,KAAA,kBAAAP;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,kBAAAA,GAAA;;AACA,WAAA,WAAA,KAAA,SAAA,OAAA,CAAA,EAAA,IAAAE,EAAA,MAAAF,MAAAE,CAAA,GAGA,KAAA,oBAAAF,MACA,KAAA,mBAAAU,KAAAC,IAAA,KAAA,SAAA,CAAA,MAAA,gBAAAA,EAAA,OAAA,OAAAD,IAAA;AAAA,IAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,8BAAAG,GAAA;AACA,WAAA,cAAA,IACA,SAAA,eAAA,sBAAAA,CAAA,EAAA,eAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,MACA,CAAA,GACA,KAAA,kBAAAA,GACA,WAAA,MAAA;AACA,aAAA,cAAA;AAAA,MACA,GAAA,GAAA;AAAA,IACA;AAAA,IAEA,iBAAAC,GAAA;AACA,MAAAA,MAIA,KAAA,MAAA,eAAA,EAAA,GAEA,KAAA,SAAA,oBAAA,UAAA,KAAA,YAAA,GACA,KAAA,sBAAA,IACA,KAAA,SAAA,YAAA;AAAA,IACA;AAAA,IAEA,eAAA;AACA,MAAA,KAAA,eACA,KAAA,sBAAA;AAAA,IAEA;AAAA;AAAA,IAGA,uBAAAC,EAAA,WAAA;AACA,WAAA,kBAAA,IACA,SAAA,cAAA,UAAA,SAAA,uBAAA,KACA,SAAA,cAAA,KAAA;AAAA,IAEA,GAAA,GAAA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
require('../assets/NcAppSettingsDialog-
|
|
1
|
+
require('../assets/NcAppSettingsDialog-DR46jcRG.css');
|
|
2
2
|
"use strict";
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
const
|
|
3
|
+
const _ = require("./NcDialog-C6nYgBDF.cjs"), v = require("../Components/NcVNodes.cjs"), m = require("../Composables/useIsMobile.cjs"), r = require("./_l10n-B986q8RC.cjs"), S = require("debounce"), N = require("vue"), k = require("./_plugin-vue2_normalizer-GXKvuwrq.cjs"), f = (t) => t && t.__esModule ? t : { default: t }, C = /* @__PURE__ */ f(S), b = /* @__PURE__ */ f(N);
|
|
4
|
+
r.register(r.t40);
|
|
5
|
+
const y = {
|
|
6
6
|
name: "NcAppSettingsDialog",
|
|
7
7
|
components: {
|
|
8
|
-
NcDialog:
|
|
9
|
-
NcVNodes:
|
|
8
|
+
NcDialog: _.NcDialog,
|
|
9
|
+
NcVNodes: v
|
|
10
10
|
},
|
|
11
11
|
provide() {
|
|
12
12
|
return {
|
|
@@ -54,7 +54,7 @@ const S = {
|
|
|
54
54
|
emits: ["update:open"],
|
|
55
55
|
setup() {
|
|
56
56
|
return {
|
|
57
|
-
isMobile:
|
|
57
|
+
isMobile: m.useIsMobile()
|
|
58
58
|
};
|
|
59
59
|
},
|
|
60
60
|
data() {
|
|
@@ -93,7 +93,7 @@ const S = {
|
|
|
93
93
|
return !(this.isMobile || !this.showNavigation);
|
|
94
94
|
},
|
|
95
95
|
settingsNavigationAriaLabel() {
|
|
96
|
-
return
|
|
96
|
+
return r.t("Settings navigation");
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
updated() {
|
|
@@ -108,12 +108,18 @@ const S = {
|
|
|
108
108
|
*/
|
|
109
109
|
registerSection(t, e, n) {
|
|
110
110
|
if (this.sections.some(({ id: i }) => t === i))
|
|
111
|
-
throw new Error(
|
|
112
|
-
this.sections.some(({ name: i }) => e === i) &&
|
|
111
|
+
throw new Error("Duplicate section id found: ".concat(t, ". Settings navigation sections must have unique section ids."));
|
|
112
|
+
this.sections.some(({ name: i }) => e === i) && b.default.util.warn("Duplicate section name found: ".concat(e, ". Settings navigation sections must have unique section names."));
|
|
113
113
|
const o = [...this.sections, { id: t, name: e, icon: n }];
|
|
114
114
|
this.sections = o.sort(({ id: i }, { id: s }) => {
|
|
115
|
-
const
|
|
116
|
-
|
|
115
|
+
const c = (p) => {
|
|
116
|
+
var a, u, d;
|
|
117
|
+
return (d = (u = (a = this.$slots.default) == null ? void 0 : a.findIndex) == null ? void 0 : u.call(a, (l) => {
|
|
118
|
+
var g, h;
|
|
119
|
+
return ((h = (g = l == null ? void 0 : l.componentOptions) == null ? void 0 : g.propsData) == null ? void 0 : h.id) === p;
|
|
120
|
+
})) != null ? d : -1;
|
|
121
|
+
};
|
|
122
|
+
return c(i) - c(s);
|
|
117
123
|
}), this.sections.length === 1 && (this.selectedSection = t);
|
|
118
124
|
},
|
|
119
125
|
/**
|
|
@@ -121,7 +127,8 @@ const S = {
|
|
|
121
127
|
* @param {string} id The section ID
|
|
122
128
|
*/
|
|
123
129
|
unregisterSection(t) {
|
|
124
|
-
|
|
130
|
+
var e, n;
|
|
131
|
+
this.sections = this.sections.filter(({ id: o }) => t !== o), this.selectedSection === t && (this.selectedSection = (n = (e = this.sections[0]) == null ? void 0 : e.id) != null ? n : "");
|
|
125
132
|
},
|
|
126
133
|
/**
|
|
127
134
|
* Scrolls the content to the selected settings section.absolute
|
|
@@ -143,12 +150,12 @@ const S = {
|
|
|
143
150
|
this.linkClicked || this.unfocusNavigationItem();
|
|
144
151
|
},
|
|
145
152
|
// Remove selected section once the user starts scrolling
|
|
146
|
-
unfocusNavigationItem:
|
|
153
|
+
unfocusNavigationItem: C.default(function() {
|
|
147
154
|
this.selectedSection = "", document.activeElement.className.includes("navigation-list__link") && document.activeElement.blur();
|
|
148
155
|
}, 300)
|
|
149
156
|
}
|
|
150
157
|
};
|
|
151
|
-
var
|
|
158
|
+
var D = function() {
|
|
152
159
|
var e = this, n = e._self._c;
|
|
153
160
|
return e.open ? n("NcDialog", e._b({ attrs: { "navigation-aria-label": e.settingsNavigationAriaLabel }, on: { "update:open": e.handleCloseModal }, scopedSlots: e._u([e.hasNavigation ? { key: "navigation", fn: function({ isCollapsed: o }) {
|
|
154
161
|
return [o ? e._e() : n("ul", { staticClass: "navigation-list" }, e._l(e.sections, function(i) {
|
|
@@ -156,22 +163,22 @@ var N = function() {
|
|
|
156
163
|
"navigation-list__link": !0,
|
|
157
164
|
"navigation-list__link--active": i.id === e.selectedSection,
|
|
158
165
|
"navigation-list__link--icon": e.hasNavigationIcons
|
|
159
|
-
}, attrs: { "aria-current":
|
|
166
|
+
}, attrs: { "aria-current": "".concat(i.id === e.selectedSection), href: "#settings-section_".concat(i.id), tabindex: "0" }, on: { click: function(s) {
|
|
160
167
|
return s.preventDefault(), e.handleSettingsNavigationClick(i.id);
|
|
161
168
|
}, keydown: function(s) {
|
|
162
169
|
return !s.type.indexOf("key") && e._k(s.keyCode, "enter", 13, s.key, "Enter") ? null : e.handleSettingsNavigationClick(i.id);
|
|
163
170
|
} } }, [e.hasNavigationIcons ? n("div", { staticClass: "navigation-list__link-icon" }, [i.icon ? n("NcVNodes", { attrs: { vnodes: i.icon } }) : e._e()], 1) : e._e(), n("span", { staticClass: "navigation-list__link-text" }, [e._v(" " + e._s(i.name) + " ")])])]);
|
|
164
171
|
}), 0)];
|
|
165
172
|
} } : null], null, !0) }, "NcDialog", e.dialogProperties, !1), [n("div", { ref: "settingsScroller" }, [e._t("default")], 2)]) : e._e();
|
|
166
|
-
},
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
173
|
+
}, q = [], E = /* @__PURE__ */ k.normalizeComponent(
|
|
174
|
+
y,
|
|
175
|
+
D,
|
|
176
|
+
q,
|
|
170
177
|
!1,
|
|
171
178
|
null,
|
|
172
179
|
"3e0025d1",
|
|
173
180
|
null,
|
|
174
181
|
null
|
|
175
182
|
);
|
|
176
|
-
const
|
|
177
|
-
exports.NcAppSettingsDialog =
|
|
183
|
+
const I = E.exports;
|
|
184
|
+
exports.NcAppSettingsDialog = I;
|
package/dist/chunks/{NcAppSettingsDialog-8l-aNNFq.cjs.map → NcAppSettingsDialog-EUys9Os_.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcAppSettingsDialog-8l-aNNFq.cjs","sources":["../../src/components/NcAppSettingsDialog/NcAppSettingsDialog.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2020 Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\n - @author Ferdinand Thiessen <opensource@fthiessen.de>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\nJust nest the `AppSettingSections` component into `NcAppSettingsDialog`,\nproviding the section's name prop. You can put your settings within each\n`NcAppSettingsSection` component.\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog :open.sync=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Example name 1\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Example name 2\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Example name 3\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Example name 4\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-5\" name=\"Example name 5\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-6\" name=\"Example name 6\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-7\" name=\"Example name 7\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-8\" name=\"Example name 8\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-9\" name=\"Example name 9\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-10\" name=\"Example name 10\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n\nYou can also add icons to the section navigation:\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog :open.sync=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Instagram\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Instagram :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tInstagram setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Mastodon\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Mastodon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tMastodon setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Twitch\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitch :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tTwitch setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Twitter\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitter :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tTwitter setting\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nimport Instagram from 'vue-material-design-icons/Instagram.vue'\nimport Mastodon from 'vue-material-design-icons/Mastodon.vue'\nimport Twitch from 'vue-material-design-icons/Twitch.vue'\nimport Twitter from 'vue-material-design-icons/Twitter.vue'\n\nexport default {\n\tcomponents: {\n\t\tInstagram,\n\t\tMastodon,\n\t\tTwitch,\n\t\tTwitter,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcDialog v-if=\"open\"\n\t\t:navigation-aria-label=\"settingsNavigationAriaLabel\"\n\t\tv-bind=\"dialogProperties\"\n\t\t@update:open=\"handleCloseModal\">\n\t\t<template v-if=\"hasNavigation\" #navigation=\"{ isCollapsed }\">\n\t\t\t<ul v-if=\"!isCollapsed\"\n\t\t\t\tclass=\"navigation-list\">\n\t\t\t\t<li v-for=\"section in sections\" :key=\"section.id\">\n\t\t\t\t\t<a :aria-current=\"`${section.id === selectedSection}`\"\n\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'navigation-list__link': true,\n\t\t\t\t\t\t\t'navigation-list__link--active': section.id === selectedSection,\n\t\t\t\t\t\t\t'navigation-list__link--icon': hasNavigationIcons,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:href=\"`#settings-section_${section.id}`\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t@click.prevent=\"handleSettingsNavigationClick(section.id)\"\n\t\t\t\t\t\t@keydown.enter=\"handleSettingsNavigationClick(section.id)\">\n\t\t\t\t\t\t<div v-if=\"hasNavigationIcons\" class=\"navigation-list__link-icon\">\n\t\t\t\t\t\t\t<NcVNodes v-if=\"section.icon\" :vnodes=\"section.icon\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"navigation-list__link-text\">\n\t\t\t\t\t\t\t{{ section.name }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t\t<div ref=\"settingsScroller\">\n\t\t\t<slot />\n\t\t</div>\n\t</NcDialog>\n</template>\n\n<script>\nimport NcDialog from '../NcDialog/index.js'\nimport NcVNodes from '../NcVNodes/index.js'\nimport { useIsMobile } from '../../composables/useIsMobile/index.js'\nimport { t } from '../../l10n.js'\n\nimport debounce from 'debounce'\nimport Vue from 'vue'\n\nexport default {\n\n\tname: 'NcAppSettingsDialog',\n\n\tcomponents: {\n\t\tNcDialog,\n\t\tNcVNodes,\n\t},\n\n\tprovide() {\n\t\treturn {\n\t\t\tregisterSection: this.registerSection,\n\t\t\tunregisterSection: this.unregisterSection,\n\t\t}\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Determines the open / closed state of the modal\n\t\t */\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Shows the navigation on desktop if true\n\t\t */\n\t\tshowNavigation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Selector for the popover container\n\t\t */\n\t\tcontainer: {\n\t\t\ttype: String,\n\t\t\tdefault: 'body',\n\t\t},\n\n\t\t/**\n\t\t * Name of the settings\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Additional elements to add to the focus trap\n\t\t */\n\t\tadditionalTrapElements: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t},\n\n\temits: ['update:open'],\n\n\tsetup() {\n\t\treturn {\n\t\t\tisMobile: useIsMobile(),\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedSection: '',\n\t\t\tlinkClicked: false,\n\t\t\taddedScrollListener: false,\n\t\t\tscroller: null,\n\t\t\t/**\n\t\t\t * Currently registered settings sections\n\t\t\t * @type {{ id: string, name: string, icon?: import('vue').VNode[] }[]}\n\t\t\t */\n\t\t\tsections: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdialogProperties() {\n\t\t\treturn {\n\t\t\t\tadditionalTrapElements: this.additionalTrapElements,\n\t\t\t\tcloseOnClickOutside: true,\n\t\t\t\tclass: 'app-settings',\n\t\t\t\tcontainer: this.container,\n\t\t\t\tcontentClasses: 'app-settings__content',\n\t\t\t\tsize: 'large',\n\t\t\t\tname: this.name,\n\t\t\t\tnavigationClasses: 'app-settings__navigation',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Check if one or more navigation entries provide icons\n\t\t */\n\t\thasNavigationIcons() {\n\t\t\treturn this.sections.some(({ icon }) => !!icon)\n\t\t},\n\n\t\thasNavigation() {\n\t\t\tif (this.isMobile || !this.showNavigation) {\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\treturn true\n\t\t\t}\n\t\t},\n\n\t\tsettingsNavigationAriaLabel() {\n\t\t\treturn t('Settings navigation')\n\t\t},\n\t},\n\n\tupdated() {\n\t\t// Check that the scroller element has been mounted\n\t\tif (!this.$refs.settingsScroller) {\n\t\t\treturn\n\t\t}\n\t\t// Get the scroller element\n\t\tthis.scroller = this.$refs.settingsScroller\n\t\tif (!this.addedScrollListener) {\n\t\t\tthis.scroller.addEventListener('scroll', this.handleScroll)\n\t\t\tthis.addedScrollListener = true\n\t\t}\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Called when a new section is registered\n\t\t * @param {string} id The section ID\n\t\t * @param {string} name The section name\n\t\t * @param {import('vue').VNode[]|undefined} icon Optional icon component\n\t\t */\n\t\tregisterSection(id, name, icon) {\n\t\t\t// Check for the uniqueness of section names\n\t\t\tif (this.sections.some(({ id: otherId }) => id === otherId)) {\n\t\t\t\tthrow new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`)\n\t\t\t}\n\t\t\tif (this.sections.some(({ name: otherName }) => name === otherName)) {\n\t\t\t\tVue.util.warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`)\n\t\t\t}\n\n\t\t\tconst newSections = [...this.sections, { id, name, icon }]\n\t\t\t// Sort sections by order in slots\n\t\t\tthis.sections = newSections.sort(({ id: idA }, { id: idB }) => {\n\t\t\t\tconst indexOf = (id) => this.$slots.default?.findIndex?.(vnode => vnode?.componentOptions?.propsData?.id === id) ?? -1\n\t\t\t\treturn indexOf(idA) - indexOf(idB)\n\t\t\t})\n\n\t\t\t// If this is the first section registered, set it as selected\n\t\t\tif (this.sections.length === 1) {\n\t\t\t\tthis.selectedSection = id\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Called when a section is unregistered to remove it from dialog\n\t\t * @param {string} id The section ID\n\t\t */\n\t\tunregisterSection(id) {\n\t\t\tthis.sections = this.sections.filter(({ id: otherId }) => id !== otherId)\n\n\t\t\t// If the current section is unregistered, set the first section as selected\n\t\t\tif (this.selectedSection === id) {\n\t\t\t\tthis.selectedSection = this.sections[0]?.id ?? ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Scrolls the content to the selected settings section.absolute\n\t\t *\n\t\t * @param {string} item the ID of the section\n\t\t */\n\t\thandleSettingsNavigationClick(item) {\n\t\t\tthis.linkClicked = true\n\t\t\tdocument.getElementById('settings-section_' + item).scrollIntoView({\n\t\t\t\tbehavior: 'smooth',\n\t\t\t\tinline: 'nearest',\n\t\t\t})\n\t\t\tthis.selectedSection = item\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.linkClicked = false\n\t\t\t}, 1000)\n\t\t},\n\n\t\thandleCloseModal(isOpen) {\n\t\t\tif (isOpen) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$emit('update:open', false)\n\t\t\t// Remove scroll listener each time the modal is closed\n\t\t\tthis.scroller.removeEventListener('scroll', this.handleScroll)\n\t\t\tthis.addedScrollListener = false\n\t\t\tthis.scroller.scrollTop = 0\n\t\t},\n\n\t\thandleScroll() {\n\t\t\tif (!this.linkClicked) {\n\t\t\t\tthis.unfocusNavigationItem()\n\t\t\t}\n\t\t},\n\n\t\t// Remove selected section once the user starts scrolling\n\t\tunfocusNavigationItem: debounce(function() {\n\t\t\tthis.selectedSection = ''\n\t\t\tif (document.activeElement.className.includes('navigation-list__link')) {\n\t\t\t\tdocument.activeElement.blur()\n\t\t\t}\n\t\t}, 300),\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n.app-settings {\n\t:deep &__navigation {\n\t\tmin-width: 200px;\n\t\tmargin-right: 20px;\n\t\toverflow-x: hidden;\n\t\toverflow-y: auto;\n\t\tposition: relative;\n\t}\n\t:deep &__content {\n\t\tbox-sizing: border-box;\n\t\tpadding-inline: 16px;\n\t}\n}\n\n.navigation-list {\n\theight: 100%;\n\tbox-sizing: border-box;\n\toverflow-y: auto;\n\tpadding: 12px;\n\n\t&__link {\n\t\tdisplay: flex;\n\t\talign-content: center;\n\t\tfont-size: 16px;\n\t\theight: $clickable-area;\n\t\tmargin: 4px 0;\n\t\tline-height: $clickable-area;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: bold;\n\t\tpadding: 0 20px;\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\n\t\t&--active {\n\t\t\tbackground-color: var(--color-primary-element-light) !important;\n\t\t}\n\n\t\t&--icon {\n\t\t\tpadding-inline-start: 8px;\n\t\t\tgap: 4px;\n\t\t}\n\n\t\t&-icon {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-content: center;\n\t\t\twidth: 36px;\n\t\t\tmax-width: 36px;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: $breakpoint-small-mobile) {\n\t.app-settings {\n\t\t:deep .dialog__name {\n\t\t\tpadding-inline-start: 16px;\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main","NcDialog","NcVNodes","useIsMobile","icon","t","id","name","otherId","otherName","Vue","newSections","idA","idB","indexOf","vnode","item","isOpen","debounce"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NcAppSettingsDialog-EUys9Os_.cjs","sources":["../../src/components/NcAppSettingsDialog/NcAppSettingsDialog.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2020 Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\n - @author Ferdinand Thiessen <opensource@fthiessen.de>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\nJust nest the `AppSettingSections` component into `NcAppSettingsDialog`,\nproviding the section's name prop. You can put your settings within each\n`NcAppSettingsSection` component.\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog :open.sync=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Example name 1\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Example name 2\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Example name 3\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Example name 4\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-5\" name=\"Example name 5\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-6\" name=\"Example name 6\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-7\" name=\"Example name 7\">\n\t\t\t\tSome example content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-8\" name=\"Example name 8\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-9\" name=\"Example name 9\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-10\" name=\"Example name 10\">\n\t\t\t\tSome more content\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n\nYou can also add icons to the section navigation:\n\n```vue\n<template>\n\t<div>\n\t\t<NcButton @click=\"settingsOpen = true\">Show Settings</NcButton>\n\t\t<NcAppSettingsDialog :open.sync=\"settingsOpen\" :show-navigation=\"true\" name=\"Application settings\">\n\t\t\t<NcAppSettingsSection id=\"asci-name-1\" name=\"Instagram\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Instagram :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tInstagram setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-2\" name=\"Mastodon\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Mastodon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tMastodon setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-3\" name=\"Twitch\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitch :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t<p style=\"height: 100vh;\">\n\t\t\t\t\tTwitch setting\n\t\t\t\t</p>\n\t\t\t</NcAppSettingsSection>\n\t\t\t<NcAppSettingsSection id=\"asci-name-4\" name=\"Twitter\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Twitter :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tTwitter setting\n\t\t\t</NcAppSettingsSection>\n\t\t</NcAppSettingsDialog>\n\t</div>\n</template>\n\n<script>\nimport Instagram from 'vue-material-design-icons/Instagram.vue'\nimport Mastodon from 'vue-material-design-icons/Mastodon.vue'\nimport Twitch from 'vue-material-design-icons/Twitch.vue'\nimport Twitter from 'vue-material-design-icons/Twitter.vue'\n\nexport default {\n\tcomponents: {\n\t\tInstagram,\n\t\tMastodon,\n\t\tTwitch,\n\t\tTwitter,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpen: false,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcDialog v-if=\"open\"\n\t\t:navigation-aria-label=\"settingsNavigationAriaLabel\"\n\t\tv-bind=\"dialogProperties\"\n\t\t@update:open=\"handleCloseModal\">\n\t\t<template v-if=\"hasNavigation\" #navigation=\"{ isCollapsed }\">\n\t\t\t<ul v-if=\"!isCollapsed\"\n\t\t\t\tclass=\"navigation-list\">\n\t\t\t\t<li v-for=\"section in sections\" :key=\"section.id\">\n\t\t\t\t\t<a :aria-current=\"`${section.id === selectedSection}`\"\n\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'navigation-list__link': true,\n\t\t\t\t\t\t\t'navigation-list__link--active': section.id === selectedSection,\n\t\t\t\t\t\t\t'navigation-list__link--icon': hasNavigationIcons,\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:href=\"`#settings-section_${section.id}`\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t@click.prevent=\"handleSettingsNavigationClick(section.id)\"\n\t\t\t\t\t\t@keydown.enter=\"handleSettingsNavigationClick(section.id)\">\n\t\t\t\t\t\t<div v-if=\"hasNavigationIcons\" class=\"navigation-list__link-icon\">\n\t\t\t\t\t\t\t<NcVNodes v-if=\"section.icon\" :vnodes=\"section.icon\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"navigation-list__link-text\">\n\t\t\t\t\t\t\t{{ section.name }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t\t<div ref=\"settingsScroller\">\n\t\t\t<slot />\n\t\t</div>\n\t</NcDialog>\n</template>\n\n<script>\nimport NcDialog from '../NcDialog/index.js'\nimport NcVNodes from '../NcVNodes/index.js'\nimport { useIsMobile } from '../../composables/useIsMobile/index.js'\nimport { t } from '../../l10n.js'\n\nimport debounce from 'debounce'\nimport Vue from 'vue'\n\nexport default {\n\n\tname: 'NcAppSettingsDialog',\n\n\tcomponents: {\n\t\tNcDialog,\n\t\tNcVNodes,\n\t},\n\n\tprovide() {\n\t\treturn {\n\t\t\tregisterSection: this.registerSection,\n\t\t\tunregisterSection: this.unregisterSection,\n\t\t}\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Determines the open / closed state of the modal\n\t\t */\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Shows the navigation on desktop if true\n\t\t */\n\t\tshowNavigation: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Selector for the popover container\n\t\t */\n\t\tcontainer: {\n\t\t\ttype: String,\n\t\t\tdefault: 'body',\n\t\t},\n\n\t\t/**\n\t\t * Name of the settings\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Additional elements to add to the focus trap\n\t\t */\n\t\tadditionalTrapElements: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t},\n\n\temits: ['update:open'],\n\n\tsetup() {\n\t\treturn {\n\t\t\tisMobile: useIsMobile(),\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedSection: '',\n\t\t\tlinkClicked: false,\n\t\t\taddedScrollListener: false,\n\t\t\tscroller: null,\n\t\t\t/**\n\t\t\t * Currently registered settings sections\n\t\t\t * @type {{ id: string, name: string, icon?: import('vue').VNode[] }[]}\n\t\t\t */\n\t\t\tsections: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdialogProperties() {\n\t\t\treturn {\n\t\t\t\tadditionalTrapElements: this.additionalTrapElements,\n\t\t\t\tcloseOnClickOutside: true,\n\t\t\t\tclass: 'app-settings',\n\t\t\t\tcontainer: this.container,\n\t\t\t\tcontentClasses: 'app-settings__content',\n\t\t\t\tsize: 'large',\n\t\t\t\tname: this.name,\n\t\t\t\tnavigationClasses: 'app-settings__navigation',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Check if one or more navigation entries provide icons\n\t\t */\n\t\thasNavigationIcons() {\n\t\t\treturn this.sections.some(({ icon }) => !!icon)\n\t\t},\n\n\t\thasNavigation() {\n\t\t\tif (this.isMobile || !this.showNavigation) {\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\treturn true\n\t\t\t}\n\t\t},\n\n\t\tsettingsNavigationAriaLabel() {\n\t\t\treturn t('Settings navigation')\n\t\t},\n\t},\n\n\tupdated() {\n\t\t// Check that the scroller element has been mounted\n\t\tif (!this.$refs.settingsScroller) {\n\t\t\treturn\n\t\t}\n\t\t// Get the scroller element\n\t\tthis.scroller = this.$refs.settingsScroller\n\t\tif (!this.addedScrollListener) {\n\t\t\tthis.scroller.addEventListener('scroll', this.handleScroll)\n\t\t\tthis.addedScrollListener = true\n\t\t}\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Called when a new section is registered\n\t\t * @param {string} id The section ID\n\t\t * @param {string} name The section name\n\t\t * @param {import('vue').VNode[]|undefined} icon Optional icon component\n\t\t */\n\t\tregisterSection(id, name, icon) {\n\t\t\t// Check for the uniqueness of section names\n\t\t\tif (this.sections.some(({ id: otherId }) => id === otherId)) {\n\t\t\t\tthrow new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`)\n\t\t\t}\n\t\t\tif (this.sections.some(({ name: otherName }) => name === otherName)) {\n\t\t\t\tVue.util.warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`)\n\t\t\t}\n\n\t\t\tconst newSections = [...this.sections, { id, name, icon }]\n\t\t\t// Sort sections by order in slots\n\t\t\tthis.sections = newSections.sort(({ id: idA }, { id: idB }) => {\n\t\t\t\tconst indexOf = (id) => this.$slots.default?.findIndex?.(vnode => vnode?.componentOptions?.propsData?.id === id) ?? -1\n\t\t\t\treturn indexOf(idA) - indexOf(idB)\n\t\t\t})\n\n\t\t\t// If this is the first section registered, set it as selected\n\t\t\tif (this.sections.length === 1) {\n\t\t\t\tthis.selectedSection = id\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Called when a section is unregistered to remove it from dialog\n\t\t * @param {string} id The section ID\n\t\t */\n\t\tunregisterSection(id) {\n\t\t\tthis.sections = this.sections.filter(({ id: otherId }) => id !== otherId)\n\n\t\t\t// If the current section is unregistered, set the first section as selected\n\t\t\tif (this.selectedSection === id) {\n\t\t\t\tthis.selectedSection = this.sections[0]?.id ?? ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Scrolls the content to the selected settings section.absolute\n\t\t *\n\t\t * @param {string} item the ID of the section\n\t\t */\n\t\thandleSettingsNavigationClick(item) {\n\t\t\tthis.linkClicked = true\n\t\t\tdocument.getElementById('settings-section_' + item).scrollIntoView({\n\t\t\t\tbehavior: 'smooth',\n\t\t\t\tinline: 'nearest',\n\t\t\t})\n\t\t\tthis.selectedSection = item\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.linkClicked = false\n\t\t\t}, 1000)\n\t\t},\n\n\t\thandleCloseModal(isOpen) {\n\t\t\tif (isOpen) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$emit('update:open', false)\n\t\t\t// Remove scroll listener each time the modal is closed\n\t\t\tthis.scroller.removeEventListener('scroll', this.handleScroll)\n\t\t\tthis.addedScrollListener = false\n\t\t\tthis.scroller.scrollTop = 0\n\t\t},\n\n\t\thandleScroll() {\n\t\t\tif (!this.linkClicked) {\n\t\t\t\tthis.unfocusNavigationItem()\n\t\t\t}\n\t\t},\n\n\t\t// Remove selected section once the user starts scrolling\n\t\tunfocusNavigationItem: debounce(function() {\n\t\t\tthis.selectedSection = ''\n\t\t\tif (document.activeElement.className.includes('navigation-list__link')) {\n\t\t\t\tdocument.activeElement.blur()\n\t\t\t}\n\t\t}, 300),\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n.app-settings {\n\t:deep &__navigation {\n\t\tmin-width: 200px;\n\t\tmargin-right: 20px;\n\t\toverflow-x: hidden;\n\t\toverflow-y: auto;\n\t\tposition: relative;\n\t}\n\t:deep &__content {\n\t\tbox-sizing: border-box;\n\t\tpadding-inline: 16px;\n\t}\n}\n\n.navigation-list {\n\theight: 100%;\n\tbox-sizing: border-box;\n\toverflow-y: auto;\n\tpadding: 12px;\n\n\t&__link {\n\t\tdisplay: flex;\n\t\talign-content: center;\n\t\tfont-size: 16px;\n\t\theight: $clickable-area;\n\t\tmargin: 4px 0;\n\t\tline-height: $clickable-area;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tfont-weight: bold;\n\t\tpadding: 0 20px;\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\n\t\t&--active {\n\t\t\tbackground-color: var(--color-primary-element-light) !important;\n\t\t}\n\n\t\t&--icon {\n\t\t\tpadding-inline-start: 8px;\n\t\t\tgap: 4px;\n\t\t}\n\n\t\t&-icon {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-content: center;\n\t\t\twidth: 36px;\n\t\t\tmax-width: 36px;\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: $breakpoint-small-mobile) {\n\t.app-settings {\n\t\t:deep .dialog__name {\n\t\t\tpadding-inline-start: 16px;\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main","NcDialog","NcVNodes","useIsMobile","icon","t","id","name","otherId","otherName","Vue","newSections","idA","idB","indexOf","_c","_b","_a","vnode","item","isOpen","debounce"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import '../assets/NcAppSidebar-
|
|
1
|
+
import '../assets/NcAppSidebar-BGQX62or.css';
|
|
2
2
|
import n from "../Components/NcVNodes.mjs";
|
|
3
|
-
import { N as o } from "./NcCheckboxRadioSwitch-
|
|
4
|
-
import { n as s } from "./_plugin-vue2_normalizer-
|
|
5
|
-
import { N as l } from "./NcActions-
|
|
3
|
+
import { N as o } from "./NcCheckboxRadioSwitch-7Yib86y3.mjs";
|
|
4
|
+
import { n as s } from "./_plugin-vue2_normalizer-Bj5bLKV4.mjs";
|
|
5
|
+
import { N as l } from "./NcActions-CpU9WXzM.mjs";
|
|
6
6
|
import u from "../Components/NcLoadingIcon.mjs";
|
|
7
7
|
import c from "../Components/NcButton.mjs";
|
|
8
8
|
import d from "../Components/NcEmptyContent.mjs";
|
|
@@ -10,11 +10,11 @@ import { directive as p } from "../Directives/Focus.mjs";
|
|
|
10
10
|
import { directive as f } from "../Directives/Linkify.mjs";
|
|
11
11
|
import "../Directives/Tooltip.mjs";
|
|
12
12
|
import { useIsSmallMobile as m } from "../Composables/useIsMobile.mjs";
|
|
13
|
-
import { G as b } from "./GenRandomId-
|
|
14
|
-
import { g as h } from "./focusTrap-
|
|
15
|
-
import { r as _,
|
|
16
|
-
import { A as g } from "./ArrowRight-
|
|
17
|
-
import { C as k } from "./Close-
|
|
13
|
+
import { G as b } from "./GenRandomId-BW3iYFf9.mjs";
|
|
14
|
+
import { g as h } from "./focusTrap-Be9GEB5C.mjs";
|
|
15
|
+
import { r as _, G as y, a as r } from "./_l10n-D8Scz3mH.mjs";
|
|
16
|
+
import { A as g } from "./ArrowRight-C3BxTDjF.mjs";
|
|
17
|
+
import { C as k } from "./Close-BtO5TPBO.mjs";
|
|
18
18
|
import { vOnClickOutside as T } from "@vueuse/components";
|
|
19
19
|
import { createFocusTrap as v } from "focus-trap";
|
|
20
20
|
import { VTooltip as C } from "floating-vue";
|
|
@@ -115,7 +115,7 @@ const S = {
|
|
|
115
115
|
* Focus the current active tab
|
|
116
116
|
*/
|
|
117
117
|
focusActiveTab() {
|
|
118
|
-
this.$el.querySelector(
|
|
118
|
+
this.$el.querySelector("#tab-button-".concat(this.activeTab)).focus();
|
|
119
119
|
},
|
|
120
120
|
/**
|
|
121
121
|
* Focus the content on tab
|
|
@@ -166,7 +166,7 @@ var N = function() {
|
|
|
166
166
|
}, function(t) {
|
|
167
167
|
return !t.type.indexOf("key") && e._k(t.keyCode, "page-down", void 0, t.key, void 0) || t.ctrlKey || t.shiftKey || t.altKey || t.metaKey ? null : (t.preventDefault(), t.stopPropagation(), e.focusLastTab.apply(null, arguments));
|
|
168
168
|
}] } }, e._l(e.tabs, function(t) {
|
|
169
|
-
return a("NcCheckboxRadioSwitch", { key: t.id, staticClass: "app-sidebar-tabs__tab", class: { active: t.id === e.activeTab }, attrs: { "aria-controls":
|
|
169
|
+
return a("NcCheckboxRadioSwitch", { key: t.id, staticClass: "app-sidebar-tabs__tab", class: { active: t.id === e.activeTab }, attrs: { "aria-controls": "tab-".concat(t.id), "aria-selected": String(e.activeTab === t.id), "button-variant": !0, checked: e.activeTab === t.id, "wrapper-id": "tab-button-".concat(t.id), tabindex: e.activeTab === t.id ? 0 : -1, "button-variant-grouped": "horizontal", role: "tab", type: "button" }, on: { "update:checked": function(G) {
|
|
170
170
|
return e.setActive(t.id);
|
|
171
171
|
} }, scopedSlots: e._u([{ key: "icon", fn: function() {
|
|
172
172
|
return [a("NcVNodes", { attrs: { vnodes: t.renderIcon() } }, [a("span", { staticClass: "app-sidebar-tabs__tab-icon", class: t.icon })])];
|
|
@@ -216,7 +216,7 @@ var F = function() {
|
|
|
216
216
|
null,
|
|
217
217
|
null
|
|
218
218
|
);
|
|
219
|
-
const
|
|
219
|
+
const R = K.exports, I = {
|
|
220
220
|
name: "StarOutlineIcon",
|
|
221
221
|
emits: ["click"],
|
|
222
222
|
props: {
|
|
@@ -239,7 +239,7 @@ var B = function() {
|
|
|
239
239
|
return e.$emit("click", t);
|
|
240
240
|
} } }, "span", e.$attrs, !1), [a("svg", { staticClass: "material-design-icon__svg", attrs: { fill: e.fillColor, width: e.size, height: e.size, viewBox: "0 0 24 24" } }, [a("path", { attrs: { d: "M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z" } }, [e.title ? a("title", [e._v(e._s(e.title))]) : e._e()])])]);
|
|
241
241
|
}, O = [], D = /* @__PURE__ */ s(
|
|
242
|
-
|
|
242
|
+
I,
|
|
243
243
|
B,
|
|
244
244
|
O,
|
|
245
245
|
!1,
|
|
@@ -258,7 +258,7 @@ const M = D.exports, P = {
|
|
|
258
258
|
NcLoadingIcon: u,
|
|
259
259
|
NcEmptyContent: d,
|
|
260
260
|
Close: k,
|
|
261
|
-
Star:
|
|
261
|
+
Star: R,
|
|
262
262
|
StarOutline: M
|
|
263
263
|
},
|
|
264
264
|
directives: {
|
|
@@ -424,19 +424,21 @@ const M = D.exports, P = {
|
|
|
424
424
|
this.elementToReturnFocus && this.focus(), this.toggleFocusTrap();
|
|
425
425
|
},
|
|
426
426
|
beforeDestroy() {
|
|
427
|
-
|
|
427
|
+
var i;
|
|
428
|
+
this.$emit("closed"), (i = this.focusTrap) == null || i.deactivate();
|
|
428
429
|
},
|
|
429
430
|
methods: {
|
|
430
431
|
preserveElementToReturnFocus() {
|
|
431
432
|
if (document.activeElement && document.activeElement !== document.body && (this.elementToReturnFocus = document.activeElement, this.elementToReturnFocus.getAttribute("role") === "menuitem")) {
|
|
432
433
|
const i = this.elementToReturnFocus.closest('[role="menu"]');
|
|
433
434
|
if (i) {
|
|
434
|
-
const e = document.querySelector(
|
|
435
|
+
const e = document.querySelector('[aria-controls="'.concat(i.id, '"]'));
|
|
435
436
|
this.elementToReturnFocus = e;
|
|
436
437
|
}
|
|
437
438
|
}
|
|
438
439
|
},
|
|
439
440
|
initFocusTrap() {
|
|
441
|
+
var i;
|
|
440
442
|
this.focusTrap || (this.focusTrap = v([
|
|
441
443
|
// The sidebar itself
|
|
442
444
|
this.$refs.sidebar,
|
|
@@ -444,7 +446,7 @@ const M = D.exports, P = {
|
|
|
444
446
|
document.querySelector("#header"),
|
|
445
447
|
// The app navigation toggle. Navigation can be opened above the sidebar
|
|
446
448
|
// Take the parent element, because the focus-trap requires a container with elements, not the element itself
|
|
447
|
-
document.querySelector('[aria-controls="app-navigation-vue"]')
|
|
449
|
+
(i = document.querySelector('[aria-controls="app-navigation-vue"]')) == null ? void 0 : i.parentElement
|
|
448
450
|
], {
|
|
449
451
|
allowOutsideClick: !0,
|
|
450
452
|
fallbackFocus: this.$refs.closeButton,
|
|
@@ -456,7 +458,8 @@ const M = D.exports, P = {
|
|
|
456
458
|
* Activate focus trap if it is currently needed, otherwise deactivate
|
|
457
459
|
*/
|
|
458
460
|
toggleFocusTrap() {
|
|
459
|
-
|
|
461
|
+
var i;
|
|
462
|
+
this.isMobile ? (this.initFocusTrap(), this.focusTrap.activate()) : (i = this.focusTrap) == null || i.deactivate();
|
|
460
463
|
},
|
|
461
464
|
onBeforeEnter(i) {
|
|
462
465
|
this.$emit("opening", i);
|
|
@@ -468,7 +471,8 @@ const M = D.exports, P = {
|
|
|
468
471
|
this.$emit("closing", i);
|
|
469
472
|
},
|
|
470
473
|
onAfterLeave(i) {
|
|
471
|
-
|
|
474
|
+
var e;
|
|
475
|
+
this.$emit("closed", i), (e = this.elementToReturnFocus) == null || e.focus({ focusVisible: !0 }), this.elementToReturnFocus = null;
|
|
472
476
|
},
|
|
473
477
|
/**
|
|
474
478
|
* Used to tell parent component the user asked to close the sidebar
|
|
@@ -539,7 +543,7 @@ const M = D.exports, P = {
|
|
|
539
543
|
};
|
|
540
544
|
var z = function() {
|
|
541
545
|
var e = this, a = e._self._c;
|
|
542
|
-
return a("transition", { attrs: { appear: "", name: "slide-right" }, on: { "before-enter": e.onBeforeEnter, "after-enter": e.onAfterEnter, "before-leave": e.onBeforeLeave, "after-leave": e.onAfterLeave } }, [a("aside", { ref: "sidebar", staticClass: "app-sidebar", attrs: { id: "app-sidebar-vue", "aria-labelledby":
|
|
546
|
+
return a("transition", { attrs: { appear: "", name: "slide-right" }, on: { "before-enter": e.onBeforeEnter, "after-enter": e.onAfterEnter, "before-leave": e.onBeforeLeave, "after-leave": e.onAfterLeave } }, [a("aside", { ref: "sidebar", staticClass: "app-sidebar", attrs: { id: "app-sidebar-vue", "aria-labelledby": "app-sidebar-vue-".concat(e.uid, "__header") }, on: { keydown: function(t) {
|
|
543
547
|
if (!t.type.indexOf("key") && e._k(t.keyCode, "esc", 27, t.key, ["Esc", "Escape"]))
|
|
544
548
|
return null;
|
|
545
549
|
t.stopPropagation(), e.isMobile && e.closeSidebar();
|
|
@@ -549,7 +553,7 @@ var z = function() {
|
|
|
549
553
|
} }, [a("div", { staticClass: "app-sidebar-header__info" }, [e.hasFigure && !e.empty ? a("div", { staticClass: "app-sidebar-header__figure", class: {
|
|
550
554
|
"app-sidebar-header__figure--with-action": e.hasFigureClickListener
|
|
551
555
|
}, style: {
|
|
552
|
-
backgroundImage:
|
|
556
|
+
backgroundImage: "url(".concat(e.background, ")")
|
|
553
557
|
}, attrs: { tabindex: "0" }, on: { click: e.onFigureClick, keydown: function(t) {
|
|
554
558
|
return !t.type.indexOf("key") && e._k(t.keyCode, "enter", 13, t.key, "Enter") ? null : e.onFigureClick.apply(null, arguments);
|
|
555
559
|
} } }, [e._t("header")], 2) : e._e(), e.empty ? e._e() : a("div", { staticClass: "app-sidebar-header__desc", class: {
|
|
@@ -563,7 +567,7 @@ var z = function() {
|
|
|
563
567
|
} }, scopedSlots: e._u([{ key: "icon", fn: function() {
|
|
564
568
|
return [e.starLoading ? a("NcLoadingIcon") : e.isStarred ? a("Star", { attrs: { size: 20 } }) : a("StarOutline", { attrs: { size: 20 } })];
|
|
565
569
|
}, proxy: !0 }], null, !1, 2575459756) }) : e._e()];
|
|
566
|
-
})], 2) : e._e(), a("div", { staticClass: "app-sidebar-header__name-container" }, [a("div", { staticClass: "app-sidebar-header__mainname-container" }, [a("h2", { directives: [{ name: "show", rawName: "v-show", value: !e.nameEditable, expression: "!nameEditable" }, { name: "linkify", rawName: "v-linkify", value: { text: e.name, linkify: e.linkifyName }, expression: "{text: name, linkify: linkifyName}" }], ref: "header", staticClass: "app-sidebar-header__mainname", attrs: { id:
|
|
570
|
+
})], 2) : e._e(), a("div", { staticClass: "app-sidebar-header__name-container" }, [a("div", { staticClass: "app-sidebar-header__mainname-container" }, [a("h2", { directives: [{ name: "show", rawName: "v-show", value: !e.nameEditable, expression: "!nameEditable" }, { name: "linkify", rawName: "v-linkify", value: { text: e.name, linkify: e.linkifyName }, expression: "{text: name, linkify: linkifyName}" }], ref: "header", staticClass: "app-sidebar-header__mainname", attrs: { id: "app-sidebar-vue-".concat(e.uid, "__header"), "aria-label": e.title, title: e.title, tabindex: e.nameEditable ? 0 : -1 }, on: { click: function(t) {
|
|
567
571
|
return t.target !== t.currentTarget ? null : e.editName.apply(null, arguments);
|
|
568
572
|
} } }, [e._v(" " + e._s(e.name) + " ")]), e.nameEditable ? [a("form", { directives: [{ name: "click-outside", rawName: "v-click-outside", value: () => e.onSubmitName(), expression: "() => onSubmitName()" }], staticClass: "app-sidebar-header__mainname-form", on: { submit: function(t) {
|
|
569
573
|
return t.preventDefault(), e.onSubmitName.apply(null, arguments);
|