@nextcloud/vue 9.0.0-alpha.4 → 9.0.0-alpha.5
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 +24 -2
- package/dist/Components/NcActionButtonGroup.mjs +1 -1
- package/dist/Components/NcActionInput.mjs +1 -1
- package/dist/Components/NcActions.mjs +1 -1
- package/dist/Components/NcAppContent.mjs +1 -1
- package/dist/Components/NcAppNavigation.mjs +1 -1
- package/dist/Components/NcAppNavigationCaption.mjs +1 -1
- package/dist/Components/NcAppNavigationItem.mjs +1 -1
- package/dist/Components/NcAppNavigationNew.mjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
- package/dist/Components/NcAppNavigationSettings.mjs +1 -1
- package/dist/Components/NcAppNavigationToggle.mjs +1 -1
- package/dist/Components/NcAppSettingsDialog.mjs +1 -1
- package/dist/Components/NcAppSettingsSection.mjs +1 -1
- package/dist/Components/NcAppSidebar.mjs +1 -1
- package/dist/Components/NcAvatar.mjs +1 -1
- package/dist/Components/NcBreadcrumb.mjs +1 -1
- package/dist/Components/NcBreadcrumbs.mjs +1 -1
- package/dist/Components/NcButton.mjs +4 -1
- package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
- package/dist/Components/NcChip.mjs +1 -1
- package/dist/Components/NcCollectionList.mjs +4 -0
- package/dist/Components/NcCollectionList.mjs.map +1 -0
- package/dist/Components/NcColorPicker.mjs +1 -1
- package/dist/Components/NcContent.mjs +1 -1
- package/dist/Components/NcDashboardWidget.mjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
- package/dist/Components/NcDateTime.mjs +1 -1
- package/dist/Components/NcDateTimePicker.mjs +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +1 -1
- package/dist/Components/NcDialog.mjs +1 -1
- package/dist/Components/NcDialogButton.mjs +1 -1
- package/dist/Components/NcEmojiPicker.mjs +1 -1
- package/dist/Components/NcHeaderMenu.mjs +1 -1
- package/dist/Components/NcInputField.mjs +1 -1
- package/dist/Components/NcListItem.mjs +1 -1
- package/dist/Components/NcListItemIcon.mjs +1 -1
- package/dist/Components/NcModal.mjs +29 -12
- package/dist/Components/NcModal.mjs.map +1 -1
- package/dist/Components/NcPasswordField.mjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
- package/dist/Components/NcRichContenteditable.mjs +2 -2
- package/dist/Components/NcRichText.mjs +3 -3
- package/dist/Components/NcSelect.mjs +1 -1
- package/dist/Components/NcSelectTags.mjs +1 -1
- package/dist/Components/NcSettingsInputText.mjs +1 -1
- package/dist/Components/NcSettingsSection.mjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
- package/dist/Components/NcTextField.mjs +1 -1
- package/dist/Components/NcTimezonePicker.mjs +1 -1
- package/dist/Components/NcUserBubble.mjs +1 -1
- package/dist/Components/NcUserStatusIcon.mjs +1 -1
- package/dist/Functions/reference.mjs +1 -1
- package/dist/Functions/usernameToColor.mjs +1 -1
- package/dist/Mixins/richEditor.mjs +1 -1
- package/dist/assets/{NcAppNavigationCaption-NPhURS5E.css → NcAppNavigationCaption-CWeMjjhD.css} +7 -7
- package/dist/assets/{NcAppNavigationSettings-Cyn2gy0W.css → NcAppNavigationSettings-TYqL_3Eu.css} +13 -13
- package/dist/assets/{NcAppSettingsSection-CcRbdcD-.css → NcAppSettingsSection-C_QldGnW.css} +3 -3
- package/dist/assets/{NcAppSidebar-CxMCtTtn.css → NcAppSidebar-B7CgUHLX.css} +57 -57
- package/dist/assets/NcButton-B62D9Gft.css +210 -0
- package/dist/assets/{NcCheckboxRadioSwitch-By6afmQ3.css → NcCheckboxRadioSwitch-ChIIElUW.css} +31 -31
- package/dist/assets/NcCollectionList-BT2L4guq.css +221 -0
- package/dist/assets/{NcDateTimePicker-BLEg7GJo.css → NcDateTimePicker-DHWLpzCH.css} +7 -7
- package/dist/assets/{NcDialog-BmN7gR6_.css → NcDialog-DXX2MKxJ.css} +15 -15
- package/dist/assets/{NcHeaderMenu-C-0GR7Si.css → NcHeaderMenu-Cb5YSERm.css} +11 -11
- package/dist/assets/{NcInputField-DXzhRkiY.css → NcInputField-CZnSCalG.css} +34 -34
- package/dist/assets/{NcMentionBubble-B-xYaJDc.css → NcMentionBubble-C6t8od-_.css} +13 -10
- package/dist/assets/{NcModal-B5iEU9Qr.css → NcModal-Cr_CG7O3.css} +60 -60
- package/dist/assets/{NcRichContenteditable-B_YH-89_.css → NcRichContenteditable-Cf8PvtvB.css} +10 -10
- package/dist/assets/{NcRichText-yqgOn353.css → NcRichText-yXgN8zvG.css} +53 -53
- package/dist/assets/{NcUserStatusIcon-D9N1ER72.css → NcUserStatusIcon-FLA1tQpD.css} +3 -3
- package/dist/assets/{referencePickerModal-DeIfdfau.css → referencePickerModal-G4uFPuyg.css} +18 -18
- package/dist/chunks/{GenColors-BidEIqUL.mjs → GenColors-AKX06ocD.mjs} +1 -1
- package/dist/chunks/{GenColors-BidEIqUL.mjs.map → GenColors-AKX06ocD.mjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-BeQ4mLmQ.mjs → NcActionButtonGroup-QSxR0BLf.mjs} +1 -1
- package/dist/chunks/{NcActionButtonGroup-BeQ4mLmQ.mjs.map → NcActionButtonGroup-QSxR0BLf.mjs.map} +1 -1
- package/dist/chunks/{NcActionInput-DCe8K_gs.mjs → NcActionInput-DY8dxchc.mjs} +7 -7
- package/dist/chunks/{NcActionInput-DCe8K_gs.mjs.map → NcActionInput-DY8dxchc.mjs.map} +1 -1
- package/dist/chunks/{NcActions-COaRMDe5.mjs → NcActions-DqMOvrbN.mjs} +2 -2
- package/dist/chunks/{NcActions-COaRMDe5.mjs.map → NcActions-DqMOvrbN.mjs.map} +1 -1
- package/dist/chunks/{NcAppContent-D2in9bd7.mjs → NcAppContent-xtfi9kNO.mjs} +3 -3
- package/dist/chunks/{NcAppContent-D2in9bd7.mjs.map → NcAppContent-xtfi9kNO.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigation-Dz1n-CeR.mjs → NcAppNavigation-C9Ku9eb2.mjs} +1 -1
- package/dist/chunks/{NcAppNavigation-Dz1n-CeR.mjs.map → NcAppNavigation-C9Ku9eb2.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-6odGo1iM.mjs → NcAppNavigationCaption-BysnsczC.mjs} +10 -6
- package/dist/chunks/NcAppNavigationCaption-BysnsczC.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationItem-BHtzDfb2.mjs → NcAppNavigationItem--znMc-4G.mjs} +6 -6
- package/dist/chunks/{NcAppNavigationItem-BHtzDfb2.mjs.map → NcAppNavigationItem--znMc-4G.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNew-CRonFKWJ.mjs → NcAppNavigationNew-xPVyvfza.mjs} +1 -1
- package/dist/chunks/{NcAppNavigationNew-CRonFKWJ.mjs.map → NcAppNavigationNew-xPVyvfza.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-Ctbp1kb-.mjs → NcAppNavigationNewItem-DS1hIl6W.mjs} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-Ctbp1kb-.mjs.map → NcAppNavigationNewItem-DS1hIl6W.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-ynYeFb6Z.mjs → NcAppNavigationSettings-CekHqqk0.mjs} +5 -5
- package/dist/chunks/{NcAppNavigationSettings-ynYeFb6Z.mjs.map → NcAppNavigationSettings-CekHqqk0.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-DYG8u5dW.mjs → NcAppNavigationToggle-DfX9dazn.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationToggle-DYG8u5dW.mjs.map → NcAppNavigationToggle-DfX9dazn.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-CjpGb_I4.mjs → NcAppSettingsDialog-ChTLtlsE.mjs} +3 -3
- package/dist/chunks/{NcAppSettingsDialog-CjpGb_I4.mjs.map → NcAppSettingsDialog-ChTLtlsE.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsSection-a7OfJ9GT.mjs → NcAppSettingsSection-CJff2xNR.mjs} +10 -6
- package/dist/chunks/NcAppSettingsSection-CJff2xNR.mjs.map +1 -0
- package/dist/chunks/{NcAppSidebar-BGCuCKk_.mjs → NcAppSidebar-C9frc6kG.mjs} +28 -10
- package/dist/chunks/NcAppSidebar-C9frc6kG.mjs.map +1 -0
- package/dist/chunks/{NcAvatar-OjWzLdGK.mjs → NcAvatar-BjooMt8H.mjs} +7 -7
- package/dist/chunks/{NcAvatar-OjWzLdGK.mjs.map → NcAvatar-BjooMt8H.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-Df7Nn5jU.mjs → NcBreadcrumb-Btbcn1IT.mjs} +2 -2
- package/dist/chunks/{NcBreadcrumb-Df7Nn5jU.mjs.map → NcBreadcrumb-Btbcn1IT.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-CighY87i.mjs → NcBreadcrumbs-BFR0zNov.mjs} +3 -3
- package/dist/chunks/{NcBreadcrumbs-CighY87i.mjs.map → NcBreadcrumbs-BFR0zNov.mjs.map} +1 -1
- package/dist/chunks/{NcButton-DvO0XwJf.mjs → NcButton-Bhuckhtj.mjs} +53 -14
- package/dist/chunks/NcButton-Bhuckhtj.mjs.map +1 -0
- package/dist/chunks/{NcCheckboxRadioSwitch-BW7W0ToW.mjs → NcCheckboxRadioSwitch-fsQs5UG3.mjs} +46 -28
- package/dist/chunks/NcCheckboxRadioSwitch-fsQs5UG3.mjs.map +1 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_266d05fb_lang-8iSIJ9Oz.mjs +3 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_266d05fb_lang-8iSIJ9Oz.mjs.map +1 -0
- package/dist/chunks/{NcChip-Crkkyllt.mjs → NcChip-Z436j_vb.mjs} +2 -2
- package/dist/chunks/{NcChip-Crkkyllt.mjs.map → NcChip-Z436j_vb.mjs.map} +1 -1
- package/dist/chunks/NcCollectionList-B8r2GWp5.mjs +589 -0
- package/dist/chunks/NcCollectionList-B8r2GWp5.mjs.map +1 -0
- package/dist/chunks/{NcColorPicker-Bq2-21Np.mjs → NcColorPicker-ChOP5UKN.mjs} +3 -3
- package/dist/chunks/{NcColorPicker-Bq2-21Np.mjs.map → NcColorPicker-ChOP5UKN.mjs.map} +1 -1
- package/dist/chunks/{NcContent-WcbDFG2f.mjs → NcContent-BTRh5byh.mjs} +3 -3
- package/dist/chunks/{NcContent-WcbDFG2f.mjs.map → NcContent-BTRh5byh.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-xBpqAct1.mjs → NcDashboardWidget-CyEJLxAR.mjs} +4 -4
- package/dist/chunks/{NcDashboardWidget-xBpqAct1.mjs.map → NcDashboardWidget-CyEJLxAR.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-BwemNzvL.mjs → NcDashboardWidgetItem-DfP6DwdF.mjs} +2 -2
- package/dist/chunks/{NcDashboardWidgetItem-BwemNzvL.mjs.map → NcDashboardWidgetItem-DfP6DwdF.mjs.map} +1 -1
- package/dist/chunks/{NcDateTime-BVQqC6rO.mjs → NcDateTime-DX34z7Lo.mjs} +1 -1
- package/dist/chunks/{NcDateTime-BVQqC6rO.mjs.map → NcDateTime-DX34z7Lo.mjs.map} +1 -1
- package/dist/chunks/{NcDateTimePicker-CjuFbS-2.mjs → NcDateTimePicker-D9gDwRl4.mjs} +5 -5
- package/dist/chunks/{NcDateTimePicker-CjuFbS-2.mjs.map → NcDateTimePicker-D9gDwRl4.mjs.map} +1 -1
- package/dist/chunks/{NcDateTimePickerNative-DwJ_yIEg.mjs → NcDateTimePickerNative-d04KsMAl.mjs} +1 -1
- package/dist/chunks/{NcDateTimePickerNative-DwJ_yIEg.mjs.map → NcDateTimePickerNative-d04KsMAl.mjs.map} +1 -1
- package/dist/chunks/{NcDialog-CE2gyz2g.mjs → NcDialog-D5IAHMrC.mjs} +12 -8
- package/dist/chunks/NcDialog-D5IAHMrC.mjs.map +1 -0
- package/dist/chunks/{NcDialogButton-DAb0CNtg.mjs → NcDialogButton-BkFODtad.mjs} +5 -3
- package/dist/chunks/NcDialogButton-BkFODtad.mjs.map +1 -0
- package/dist/chunks/{NcEmojiPicker-DNbUUyLY.mjs → NcEmojiPicker-Dtc8dnSp.mjs} +6 -6
- package/dist/chunks/{NcEmojiPicker-DNbUUyLY.mjs.map → NcEmojiPicker-Dtc8dnSp.mjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-CIWkk8T1.mjs → NcHeaderMenu-CKynqFZZ.mjs} +5 -4
- package/dist/chunks/NcHeaderMenu-CKynqFZZ.mjs.map +1 -0
- package/dist/chunks/{NcInputConfirmCancel-Cwh6_J6A.mjs → NcInputConfirmCancel-DkOh9UP_.mjs} +3 -3
- package/dist/chunks/{NcInputConfirmCancel-Cwh6_J6A.mjs.map → NcInputConfirmCancel-DkOh9UP_.mjs.map} +1 -1
- package/dist/chunks/{NcInputField-BrAvsgA4.mjs → NcInputField-hpiI0X9L.mjs} +3 -3
- package/dist/chunks/{NcInputField-BrAvsgA4.mjs.map → NcInputField-hpiI0X9L.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-D3yyUn7h.mjs → NcListItem-DX-yKrou.mjs} +2 -2
- package/dist/chunks/{NcListItem-D3yyUn7h.mjs.map → NcListItem-DX-yKrou.mjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-B06oTqsI.mjs → NcListItemIcon-Bgd2w_Ug.mjs} +2 -2
- package/dist/chunks/{NcListItemIcon-B06oTqsI.mjs.map → NcListItemIcon-Bgd2w_Ug.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-CaRDsoPg.mjs → NcPasswordField-Vfr9wcwj.mjs} +3 -3
- package/dist/chunks/{NcPasswordField-CaRDsoPg.mjs.map → NcPasswordField-Vfr9wcwj.mjs.map} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-Bg_z2tZT.mjs → NcRelatedResourcesPanel-DXQ9WHF5.mjs} +5 -5
- package/dist/chunks/{NcRelatedResourcesPanel-Bg_z2tZT.mjs.map → NcRelatedResourcesPanel-DXQ9WHF5.mjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-Cx8Fv6sx.mjs → NcRichContenteditable-Bf9Kg4hl.mjs} +13 -12
- package/dist/chunks/{NcRichContenteditable-Cx8Fv6sx.mjs.map → NcRichContenteditable-Bf9Kg4hl.mjs.map} +1 -1
- package/dist/chunks/{NcRichText-2N_x-ark.mjs → NcRichText-COi8Ex6O.mjs} +4 -4
- package/dist/chunks/NcRichText-COi8Ex6O.mjs.map +1 -0
- package/dist/chunks/{NcSelect-CPlvJjcY.mjs → NcSelect-uOkQ9CdB.mjs} +3 -3
- package/dist/chunks/{NcSelect-CPlvJjcY.mjs.map → NcSelect-uOkQ9CdB.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-Hpq3uQ0b.mjs → NcSelectTags-1hIEJsvj.mjs} +2 -2
- package/dist/chunks/{NcSelectTags-Hpq3uQ0b.mjs.map → NcSelectTags-1hIEJsvj.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-oIYmufF3.mjs → NcSettingsInputText-DO40BQ3B.mjs} +2 -2
- package/dist/chunks/{NcSettingsInputText-oIYmufF3.mjs.map → NcSettingsInputText-DO40BQ3B.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-CMw4W_UL.mjs → NcSettingsSection-BDI1fNYG.mjs} +2 -2
- package/dist/chunks/{NcSettingsSection-CMw4W_UL.mjs.map → NcSettingsSection-BDI1fNYG.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-BTVYUUsQ.mjs → NcSettingsSelectGroup-OQVMB2G-.mjs} +3 -3
- package/dist/chunks/{NcSettingsSelectGroup-BTVYUUsQ.mjs.map → NcSettingsSelectGroup-OQVMB2G-.mjs.map} +1 -1
- package/dist/chunks/{NcTextField-W5cVvjob.mjs → NcTextField-DctsarIL.mjs} +3 -3
- package/dist/chunks/{NcTextField-W5cVvjob.mjs.map → NcTextField-DctsarIL.mjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-DQ7LMeQo.mjs → NcTimezonePicker-CGW5Q2gI.mjs} +4 -4
- package/dist/chunks/{NcTimezonePicker-DQ7LMeQo.mjs.map → NcTimezonePicker-CGW5Q2gI.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-DrQahQl0.mjs → NcUserBubble-CsVyJK3C.mjs} +1 -1
- package/dist/chunks/{NcUserBubble-DrQahQl0.mjs.map → NcUserBubble-CsVyJK3C.mjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-CA3yJfmu.mjs → NcUserStatusIcon-CLYI768S.mjs} +6 -11
- package/dist/chunks/NcUserStatusIcon-CLYI768S.mjs.map +1 -0
- package/dist/chunks/{ScopeComponent-C5tGtO7l.mjs → ScopeComponent-59SnWk9S.mjs} +1 -1
- package/dist/chunks/{ScopeComponent-C5tGtO7l.mjs.map → ScopeComponent-59SnWk9S.mjs.map} +1 -1
- package/dist/chunks/_l10n-6dsjYig_.mjs +126 -0
- package/dist/chunks/_l10n-6dsjYig_.mjs.map +1 -0
- package/dist/chunks/{index-BKkaCvJ0.mjs → index-CyNq54HS.mjs} +2 -2
- package/dist/chunks/index-CyNq54HS.mjs.map +1 -0
- package/dist/chunks/{referencePickerModal-Cho5o36L.mjs → referencePickerModal-BwzqUWFA.mjs} +14 -14
- package/dist/chunks/referencePickerModal-BwzqUWFA.mjs.map +1 -0
- package/dist/chunks/{usernameToColor-4ci35wWd.mjs → usernameToColor-CEyHwgy-.mjs} +1 -1
- package/dist/chunks/{usernameToColor-4ci35wWd.mjs.map → usernameToColor-CEyHwgy-.mjs.map} +1 -1
- package/dist/components/NcActions/NcActions.vue.d.ts +1 -1
- package/dist/components/NcAppNavigationCaption/NcAppNavigationCaption.vue.d.ts +5 -68
- package/dist/components/NcAppNavigationItem/NcAppNavigationItem.vue.d.ts +1 -1
- package/dist/components/NcAppSidebar/NcAppSidebar.vue.d.ts +15 -0
- package/dist/components/NcAppSidebar/NcAppSidebarTabs.vue.d.ts +16 -0
- package/dist/components/NcAvatar/NcAvatar.vue.d.ts +1 -1
- package/dist/components/NcButton/NcButton.vue.d.ts +44 -25
- package/dist/components/NcButton/index.d.ts +1 -0
- package/dist/components/NcButton/types.d.ts +30 -0
- package/dist/components/NcCollectionList/NcCollectionList.vue.d.ts +126 -0
- package/dist/components/NcCollectionList/NcCollectionListItem.vue.d.ts +50 -0
- package/dist/components/NcCollectionList/index.d.ts +1 -0
- package/dist/components/NcCollectionList/service.d.ts +47 -0
- package/dist/components/NcCollectionList/useCollections.d.ts +31 -0
- package/dist/components/NcDialog/NcDialog.vue.d.ts +359 -1
- package/dist/components/NcDialogButton/NcDialogButton.vue.d.ts +94 -1
- package/dist/components/NcDialogButton/index.d.ts +4 -0
- package/dist/components/NcListItemIcon/NcListItemIcon.vue.d.ts +1 -1
- package/dist/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue.d.ts +1 -1
- package/dist/components/NcRichContenteditable/NcAutoCompleteResult.vue.d.ts +1 -1
- package/dist/components/NcSavingIndicatorIcon/NcSavingIndicatorIcon.vue.d.ts +1 -1
- package/dist/components/NcUserBubble/NcUserBubble.vue.d.ts +2 -2
- package/dist/components/index.d.ts +1 -0
- package/dist/index.mjs +56 -53
- package/dist/index.mjs.map +1 -1
- package/dist/utils/VueTypes.d.ts +3 -0
- package/package.json +4 -3
- package/dist/assets/NcButton-D3_Qd5cl.css +0 -191
- package/dist/chunks/NcAppNavigationCaption-6odGo1iM.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsSection-a7OfJ9GT.mjs.map +0 -1
- package/dist/chunks/NcAppSidebar-BGCuCKk_.mjs.map +0 -1
- package/dist/chunks/NcButton-DvO0XwJf.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-BW7W0ToW.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_959f6f1b_lang-C0H-ioQZ.mjs +0 -3
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_959f6f1b_lang-C0H-ioQZ.mjs.map +0 -1
- package/dist/chunks/NcDialog-CE2gyz2g.mjs.map +0 -1
- package/dist/chunks/NcDialogButton-DAb0CNtg.mjs.map +0 -1
- package/dist/chunks/NcHeaderMenu-CIWkk8T1.mjs.map +0 -1
- package/dist/chunks/NcRichText-2N_x-ark.mjs.map +0 -1
- package/dist/chunks/NcUserStatusIcon-CA3yJfmu.mjs.map +0 -1
- package/dist/chunks/_l10n-C3nxU4O-.mjs +0 -122
- package/dist/chunks/_l10n-C3nxU4O-.mjs.map +0 -1
- package/dist/chunks/index-BKkaCvJ0.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-Cho5o36L.mjs.map +0 -1
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
import '../assets/NcCollectionList-BT2L4guq.css';
|
|
2
|
+
import debounce from "debounce";
|
|
3
|
+
import { resolveComponent, openBlock, createElementBlock, createVNode, toDisplayString, normalizeClass, withModifiers, withDirectives, createElementVNode, vModelText, Fragment, renderList, createBlock, resolveDynamicComponent, withCtx, createCommentVNode, createTextVNode, Transition, pushScopeId, popScopeId, ref } from "vue";
|
|
4
|
+
import { r as register, G as t7, H as t26, a as t } from "./_l10n-6dsjYig_.mjs";
|
|
5
|
+
import { N as NcAvatar } from "./NcAvatar-BjooMt8H.mjs";
|
|
6
|
+
import { N as NcSelect } from "./NcSelect-uOkQ9CdB.mjs";
|
|
7
|
+
import { g as getRoute } from "./autolink-CKPk5rzg.mjs";
|
|
8
|
+
import { N as NcActions } from "./NcActions-DqMOvrbN.mjs";
|
|
9
|
+
import { N as NcActionButton } from "./NcActionButton-Bqkgltcz.mjs";
|
|
10
|
+
import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
|
|
11
|
+
import axios from "@nextcloud/axios";
|
|
12
|
+
import { generateOcsUrl } from "@nextcloud/router";
|
|
13
|
+
register(t7);
|
|
14
|
+
register(t26);
|
|
15
|
+
const _sfc_main$1 = {
|
|
16
|
+
name: "NcCollectionListItem",
|
|
17
|
+
components: {
|
|
18
|
+
NcAvatar,
|
|
19
|
+
NcActions,
|
|
20
|
+
NcActionButton
|
|
21
|
+
},
|
|
22
|
+
props: {
|
|
23
|
+
collection: {
|
|
24
|
+
type: Object,
|
|
25
|
+
default: null
|
|
26
|
+
},
|
|
27
|
+
error: {
|
|
28
|
+
type: String,
|
|
29
|
+
default: void 0
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
emits: ["remove-resource", "rename-collection"],
|
|
33
|
+
data() {
|
|
34
|
+
return {
|
|
35
|
+
detailsOpen: false,
|
|
36
|
+
newName: null
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
computed: {
|
|
40
|
+
getIcon() {
|
|
41
|
+
return (resource) => [resource.iconClass];
|
|
42
|
+
},
|
|
43
|
+
typeClass() {
|
|
44
|
+
return (resource) => "resource-type-" + resource.type;
|
|
45
|
+
},
|
|
46
|
+
resources() {
|
|
47
|
+
return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];
|
|
48
|
+
},
|
|
49
|
+
getComponent() {
|
|
50
|
+
return (resource) => {
|
|
51
|
+
const route = getRoute(this.$router, resource.link);
|
|
52
|
+
return route ? { component: "router-link", to: route, href: void 0 } : { component: "a", to: void 0, href: resource.link };
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
iconUrl() {
|
|
56
|
+
return (resource) => {
|
|
57
|
+
if (resource.mimetype) {
|
|
58
|
+
return OC.MimeType.getIconUrl(resource.mimetype);
|
|
59
|
+
}
|
|
60
|
+
if (resource.iconUrl) {
|
|
61
|
+
return resource.iconUrl;
|
|
62
|
+
}
|
|
63
|
+
return "";
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
methods: {
|
|
68
|
+
t,
|
|
69
|
+
toggleDetails() {
|
|
70
|
+
this.detailsOpen = !this.detailsOpen;
|
|
71
|
+
},
|
|
72
|
+
showDetails() {
|
|
73
|
+
this.detailsOpen = true;
|
|
74
|
+
},
|
|
75
|
+
removeResource(collection, resource) {
|
|
76
|
+
this.$emit("remove-resource", {
|
|
77
|
+
collectionId: collection.id,
|
|
78
|
+
resourceType: resource.type,
|
|
79
|
+
resourceId: resource.id
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
openRename() {
|
|
83
|
+
this.newName = this.collection.name;
|
|
84
|
+
},
|
|
85
|
+
renameCollection() {
|
|
86
|
+
if (this.newName) {
|
|
87
|
+
this.$emit("rename-collection", {
|
|
88
|
+
collectionId: this.collection.id,
|
|
89
|
+
name: this.newName
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
this.newName = null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
const _withScopeId$1 = (n) => (pushScopeId("data-v-76f66b8d"), n = n(), popScopeId(), n);
|
|
97
|
+
const _hoisted_1$1 = { class: "collection-list-item" };
|
|
98
|
+
const _hoisted_2$1 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("input", {
|
|
99
|
+
type: "submit",
|
|
100
|
+
value: "",
|
|
101
|
+
class: "icon-confirm"
|
|
102
|
+
}, null, -1));
|
|
103
|
+
const _hoisted_3$1 = {
|
|
104
|
+
key: 2,
|
|
105
|
+
class: "linked-icons"
|
|
106
|
+
};
|
|
107
|
+
const _hoisted_4$1 = ["src", "alt"];
|
|
108
|
+
const _hoisted_5$1 = {
|
|
109
|
+
key: 3,
|
|
110
|
+
class: "sharingOptionsGroup"
|
|
111
|
+
};
|
|
112
|
+
const _hoisted_6$1 = {
|
|
113
|
+
key: 0,
|
|
114
|
+
class: "error"
|
|
115
|
+
};
|
|
116
|
+
const _hoisted_7$1 = {
|
|
117
|
+
key: 0,
|
|
118
|
+
class: "resource-list-details"
|
|
119
|
+
};
|
|
120
|
+
const _hoisted_8$1 = ["src", "alt"];
|
|
121
|
+
const _hoisted_9$1 = { class: "resource-name" };
|
|
122
|
+
const _hoisted_10 = ["onClick"];
|
|
123
|
+
function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
124
|
+
const _component_NcAvatar = resolveComponent("NcAvatar");
|
|
125
|
+
const _component_NcActionButton = resolveComponent("NcActionButton");
|
|
126
|
+
const _component_NcActions = resolveComponent("NcActions");
|
|
127
|
+
return openBlock(), createElementBlock("li", _hoisted_1$1, [
|
|
128
|
+
createVNode(_component_NcAvatar, {
|
|
129
|
+
"display-name": $props.collection.name,
|
|
130
|
+
"allow-placeholder": "",
|
|
131
|
+
class: "collection-avatar"
|
|
132
|
+
}, null, 8, ["display-name"]),
|
|
133
|
+
$data.newName === null ? (openBlock(), createElementBlock("span", {
|
|
134
|
+
key: 0,
|
|
135
|
+
class: "collection-item-name",
|
|
136
|
+
title: "",
|
|
137
|
+
onClick: _cache[0] || (_cache[0] = (...args) => $options.showDetails && $options.showDetails(...args))
|
|
138
|
+
}, toDisplayString($props.collection.name), 1)) : (openBlock(), createElementBlock("form", {
|
|
139
|
+
key: 1,
|
|
140
|
+
class: normalizeClass({ "should-shake": $props.error }),
|
|
141
|
+
onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.renameCollection && $options.renameCollection(...args), ["prevent"]))
|
|
142
|
+
}, [
|
|
143
|
+
withDirectives(createElementVNode("input", {
|
|
144
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.newName = $event),
|
|
145
|
+
type: "text",
|
|
146
|
+
autocomplete: "off",
|
|
147
|
+
autocapitalize: "off"
|
|
148
|
+
}, null, 512), [
|
|
149
|
+
[vModelText, $data.newName]
|
|
150
|
+
]),
|
|
151
|
+
_hoisted_2$1
|
|
152
|
+
], 34)),
|
|
153
|
+
!$data.detailsOpen && $data.newName === null ? (openBlock(), createElementBlock("div", _hoisted_3$1, [
|
|
154
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList($options.resources.slice(0, 2), (resource) => {
|
|
155
|
+
return openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {
|
|
156
|
+
key: resource.type + "|" + resource.id,
|
|
157
|
+
title: resource.name,
|
|
158
|
+
to: $options.getComponent(resource).to,
|
|
159
|
+
href: $options.getComponent(resource).href,
|
|
160
|
+
class: normalizeClass($options.typeClass(resource))
|
|
161
|
+
}, {
|
|
162
|
+
default: withCtx(() => [
|
|
163
|
+
createElementVNode("img", {
|
|
164
|
+
src: $options.iconUrl(resource),
|
|
165
|
+
alt: resource.name
|
|
166
|
+
}, null, 8, _hoisted_4$1)
|
|
167
|
+
]),
|
|
168
|
+
_: 2
|
|
169
|
+
}, 1032, ["title", "to", "href", "class"]);
|
|
170
|
+
}), 128))
|
|
171
|
+
])) : createCommentVNode("", true),
|
|
172
|
+
$data.newName === null ? (openBlock(), createElementBlock("span", _hoisted_5$1, [
|
|
173
|
+
createVNode(_component_NcActions, null, {
|
|
174
|
+
default: withCtx(() => [
|
|
175
|
+
createVNode(_component_NcActionButton, {
|
|
176
|
+
icon: "icon-info",
|
|
177
|
+
onClick: withModifiers($options.toggleDetails, ["prevent"])
|
|
178
|
+
}, {
|
|
179
|
+
default: withCtx(() => [
|
|
180
|
+
createTextVNode(toDisplayString($data.detailsOpen ? $options.t("Hide details") : $options.t("Show details")), 1)
|
|
181
|
+
]),
|
|
182
|
+
_: 1
|
|
183
|
+
}, 8, ["onClick"]),
|
|
184
|
+
createVNode(_component_NcActionButton, {
|
|
185
|
+
icon: "icon-rename",
|
|
186
|
+
onClick: withModifiers($options.openRename, ["prevent"])
|
|
187
|
+
}, {
|
|
188
|
+
default: withCtx(() => [
|
|
189
|
+
createTextVNode(toDisplayString($options.t("Rename project")), 1)
|
|
190
|
+
]),
|
|
191
|
+
_: 1
|
|
192
|
+
}, 8, ["onClick"])
|
|
193
|
+
]),
|
|
194
|
+
_: 1
|
|
195
|
+
})
|
|
196
|
+
])) : createCommentVNode("", true),
|
|
197
|
+
createVNode(Transition, { name: "fade" }, {
|
|
198
|
+
default: withCtx(() => [
|
|
199
|
+
$props.error ? (openBlock(), createElementBlock("div", _hoisted_6$1, toDisplayString($props.error), 1)) : createCommentVNode("", true)
|
|
200
|
+
]),
|
|
201
|
+
_: 1
|
|
202
|
+
}),
|
|
203
|
+
createVNode(Transition, { name: "fade" }, {
|
|
204
|
+
default: withCtx(() => [
|
|
205
|
+
$data.detailsOpen ? (openBlock(), createElementBlock("ul", _hoisted_7$1, [
|
|
206
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList($options.resources, (resource) => {
|
|
207
|
+
return openBlock(), createElementBlock("li", {
|
|
208
|
+
key: resource.type + "|" + resource.id,
|
|
209
|
+
class: normalizeClass($options.typeClass(resource))
|
|
210
|
+
}, [
|
|
211
|
+
(openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {
|
|
212
|
+
to: $options.getComponent(resource).to,
|
|
213
|
+
href: $options.getComponent(resource).href
|
|
214
|
+
}, {
|
|
215
|
+
default: withCtx(() => [
|
|
216
|
+
createElementVNode("img", {
|
|
217
|
+
src: $options.iconUrl(resource),
|
|
218
|
+
alt: resource.name
|
|
219
|
+
}, null, 8, _hoisted_8$1),
|
|
220
|
+
createElementVNode("span", _hoisted_9$1, toDisplayString(resource.name || ""), 1)
|
|
221
|
+
]),
|
|
222
|
+
_: 2
|
|
223
|
+
}, 1032, ["to", "href"])),
|
|
224
|
+
createElementVNode("span", {
|
|
225
|
+
class: "icon-close",
|
|
226
|
+
onClick: ($event) => $options.removeResource($props.collection, resource)
|
|
227
|
+
}, null, 8, _hoisted_10)
|
|
228
|
+
], 2);
|
|
229
|
+
}), 128))
|
|
230
|
+
])) : createCommentVNode("", true)
|
|
231
|
+
]),
|
|
232
|
+
_: 1
|
|
233
|
+
})
|
|
234
|
+
]);
|
|
235
|
+
}
|
|
236
|
+
const NcCollectionListItem = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-76f66b8d"]]);
|
|
237
|
+
function extractOcsData(response) {
|
|
238
|
+
return response.data.ocs.data;
|
|
239
|
+
}
|
|
240
|
+
function renameCollectionService(collectionId, collectionName) {
|
|
241
|
+
return axios.put(generateOcsUrl("collaboration/resources/collections/{collectionId}", { collectionId }), { collectionName }).then(extractOcsData);
|
|
242
|
+
}
|
|
243
|
+
function getCollectionsByResourceService(resourceType, resourceId) {
|
|
244
|
+
return axios.get(generateOcsUrl("collaboration/resources/{resourceType}/{resourceId}", { resourceType, resourceId })).then(extractOcsData);
|
|
245
|
+
}
|
|
246
|
+
function createCollectionService(resourceType, resourceId, name) {
|
|
247
|
+
return axios.post(generateOcsUrl("collaboration/resources/{resourceType}/{resourceId}", { resourceType, resourceId }), { name }).then(extractOcsData);
|
|
248
|
+
}
|
|
249
|
+
function addResourceService(collectionId, resourceType, resourceId) {
|
|
250
|
+
return axios.post(generateOcsUrl("collaboration/resources/collections/{collectionId}", { collectionId }), { resourceType, resourceId }).then(extractOcsData);
|
|
251
|
+
}
|
|
252
|
+
function removeResourceService(collectionId, resourceType, resourceId) {
|
|
253
|
+
return axios.delete(generateOcsUrl("collaboration/resources/collections/{collectionId}", { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData);
|
|
254
|
+
}
|
|
255
|
+
function searchService(query) {
|
|
256
|
+
return axios.get(generateOcsUrl("collaboration/resources/collections/search/{query}", { query })).then(extractOcsData);
|
|
257
|
+
}
|
|
258
|
+
function useCollections() {
|
|
259
|
+
const storedCollections = ref([]);
|
|
260
|
+
const addCollections = (collections) => {
|
|
261
|
+
storedCollections.value = collections;
|
|
262
|
+
};
|
|
263
|
+
const addCollection = (collection) => {
|
|
264
|
+
storedCollections.value.push(collection);
|
|
265
|
+
};
|
|
266
|
+
const removeCollection = (collectionId) => {
|
|
267
|
+
storedCollections.value = storedCollections.value.filter((item) => item.id !== collectionId);
|
|
268
|
+
};
|
|
269
|
+
const updateCollection = (collection) => {
|
|
270
|
+
const index = storedCollections.value.findIndex((item) => item.id === collection.id);
|
|
271
|
+
if (index !== -1) {
|
|
272
|
+
storedCollections.value[index] = collection;
|
|
273
|
+
} else {
|
|
274
|
+
addCollection(collection);
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
const fetchCollectionsByResource = async ({ resourceType, resourceId }) => {
|
|
278
|
+
const collections = await getCollectionsByResourceService(resourceType, resourceId);
|
|
279
|
+
addCollections(collections);
|
|
280
|
+
};
|
|
281
|
+
const createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {
|
|
282
|
+
const collection = await createCollectionService(baseResourceType, baseResourceId, name);
|
|
283
|
+
addCollection(collection);
|
|
284
|
+
await addResourceToCollection({
|
|
285
|
+
collectionId: collection.id,
|
|
286
|
+
resourceType,
|
|
287
|
+
resourceId
|
|
288
|
+
});
|
|
289
|
+
};
|
|
290
|
+
const renameCollection = async ({ collectionId, name }) => {
|
|
291
|
+
const collection = await renameCollectionService(collectionId, name);
|
|
292
|
+
updateCollection(collection);
|
|
293
|
+
};
|
|
294
|
+
const addResourceToCollection = async ({ collectionId, resourceType, resourceId }) => {
|
|
295
|
+
const collection = await addResourceService(collectionId, resourceType, String(resourceId));
|
|
296
|
+
updateCollection(collection);
|
|
297
|
+
};
|
|
298
|
+
const removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {
|
|
299
|
+
const collection = await removeResourceService(collectionId, resourceType, String(resourceId));
|
|
300
|
+
if (collection.resources.length > 0) {
|
|
301
|
+
updateCollection(collection);
|
|
302
|
+
} else {
|
|
303
|
+
removeCollection(collectionId);
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
return {
|
|
307
|
+
storedCollections,
|
|
308
|
+
fetchCollectionsByResource,
|
|
309
|
+
createCollection,
|
|
310
|
+
renameCollection,
|
|
311
|
+
addResourceToCollection,
|
|
312
|
+
removeResourceFromCollection
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
const METHOD_CREATE_COLLECTION = 0;
|
|
316
|
+
const METHOD_ADD_TO_COLLECTION = 1;
|
|
317
|
+
const _sfc_main = {
|
|
318
|
+
name: "NcCollectionList",
|
|
319
|
+
components: {
|
|
320
|
+
NcCollectionListItem,
|
|
321
|
+
NcAvatar,
|
|
322
|
+
NcSelect
|
|
323
|
+
},
|
|
324
|
+
props: {
|
|
325
|
+
/**
|
|
326
|
+
* Resource type identifier
|
|
327
|
+
*/
|
|
328
|
+
type: {
|
|
329
|
+
type: String,
|
|
330
|
+
default: null
|
|
331
|
+
},
|
|
332
|
+
/**
|
|
333
|
+
* Unique id of the resource
|
|
334
|
+
*/
|
|
335
|
+
id: {
|
|
336
|
+
type: String,
|
|
337
|
+
default: null
|
|
338
|
+
},
|
|
339
|
+
/**
|
|
340
|
+
* Name of the resource
|
|
341
|
+
*/
|
|
342
|
+
name: {
|
|
343
|
+
type: String,
|
|
344
|
+
default: ""
|
|
345
|
+
},
|
|
346
|
+
/**
|
|
347
|
+
* Whether the component is active (to start fetch resources)
|
|
348
|
+
*/
|
|
349
|
+
isActive: {
|
|
350
|
+
type: Boolean,
|
|
351
|
+
default: true
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
setup() {
|
|
355
|
+
const {
|
|
356
|
+
storedCollections,
|
|
357
|
+
fetchCollectionsByResource,
|
|
358
|
+
createCollection,
|
|
359
|
+
addResourceToCollection,
|
|
360
|
+
removeResourceFromCollection,
|
|
361
|
+
renameCollection
|
|
362
|
+
} = useCollections();
|
|
363
|
+
const searchCollections = ref([]);
|
|
364
|
+
const search = debounce(function(query, loading) {
|
|
365
|
+
if (query !== "") {
|
|
366
|
+
loading(true);
|
|
367
|
+
searchService(query).then((collections) => {
|
|
368
|
+
searchCollections.value = collections;
|
|
369
|
+
}).catch((e) => {
|
|
370
|
+
console.error("Failed to search for collections", e);
|
|
371
|
+
}).finally(() => {
|
|
372
|
+
loading(false);
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
}, 500);
|
|
376
|
+
return {
|
|
377
|
+
storedCollections,
|
|
378
|
+
fetchCollectionsByResource,
|
|
379
|
+
createCollection,
|
|
380
|
+
addResourceToCollection,
|
|
381
|
+
removeResourceFromCollection,
|
|
382
|
+
renameCollection,
|
|
383
|
+
searchCollections,
|
|
384
|
+
search
|
|
385
|
+
};
|
|
386
|
+
},
|
|
387
|
+
data() {
|
|
388
|
+
return {
|
|
389
|
+
selectIsOpen: false,
|
|
390
|
+
generatingCodes: false,
|
|
391
|
+
codes: void 0,
|
|
392
|
+
value: null,
|
|
393
|
+
model: {},
|
|
394
|
+
collectionsError: {},
|
|
395
|
+
error: null,
|
|
396
|
+
isSelectOpen: false
|
|
397
|
+
};
|
|
398
|
+
},
|
|
399
|
+
computed: {
|
|
400
|
+
collections() {
|
|
401
|
+
return this.storedCollections.filter(
|
|
402
|
+
(collection) => collection.resources.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type)
|
|
403
|
+
);
|
|
404
|
+
},
|
|
405
|
+
placeholder() {
|
|
406
|
+
return this.isSelectOpen ? t("Type to search for existing projects") : t("Add to a project");
|
|
407
|
+
},
|
|
408
|
+
options() {
|
|
409
|
+
const options = [];
|
|
410
|
+
window.OCP.Collaboration.getTypes().sort().forEach((type) => {
|
|
411
|
+
options.push({
|
|
412
|
+
method: METHOD_CREATE_COLLECTION,
|
|
413
|
+
type,
|
|
414
|
+
title: window.OCP.Collaboration.getLabel(type),
|
|
415
|
+
class: window.OCP.Collaboration.getIcon(type),
|
|
416
|
+
action: () => window.OCP.Collaboration.trigger(type)
|
|
417
|
+
});
|
|
418
|
+
});
|
|
419
|
+
for (const index in this.searchCollections) {
|
|
420
|
+
if (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {
|
|
421
|
+
options.push({
|
|
422
|
+
method: METHOD_ADD_TO_COLLECTION,
|
|
423
|
+
title: this.searchCollections[index].name,
|
|
424
|
+
collectionId: this.searchCollections[index].id
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return options;
|
|
429
|
+
},
|
|
430
|
+
resourceIdentifier() {
|
|
431
|
+
return {
|
|
432
|
+
resourceType: this.type,
|
|
433
|
+
resourceId: this.id,
|
|
434
|
+
isActive: this.isActive
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
watch: {
|
|
439
|
+
resourceIdentifier: {
|
|
440
|
+
deep: true,
|
|
441
|
+
immediate: true,
|
|
442
|
+
handler(resourceIdentifier) {
|
|
443
|
+
if (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
this.fetchCollectionsByResource(resourceIdentifier);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
},
|
|
450
|
+
methods: {
|
|
451
|
+
t,
|
|
452
|
+
select(selectedOption) {
|
|
453
|
+
if (selectedOption.method === METHOD_CREATE_COLLECTION) {
|
|
454
|
+
selectedOption.action().then((resourceId) => {
|
|
455
|
+
this.createCollection({
|
|
456
|
+
baseResourceType: this.type,
|
|
457
|
+
baseResourceId: this.id,
|
|
458
|
+
resourceType: selectedOption.type,
|
|
459
|
+
resourceId,
|
|
460
|
+
name: this.name
|
|
461
|
+
}).catch((e) => {
|
|
462
|
+
this.setError(t("Failed to create a project"), e);
|
|
463
|
+
});
|
|
464
|
+
}).catch((e) => {
|
|
465
|
+
console.error("No resource selected", e);
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {
|
|
469
|
+
this.addResourceToCollection({
|
|
470
|
+
collectionId: selectedOption.collectionId,
|
|
471
|
+
resourceType: this.type,
|
|
472
|
+
resourceId: this.id
|
|
473
|
+
}).catch((e) => {
|
|
474
|
+
this.setError(t("Failed to add the item to the project"), e);
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
this.value = null;
|
|
478
|
+
},
|
|
479
|
+
showSelect() {
|
|
480
|
+
this.selectIsOpen = true;
|
|
481
|
+
this.$refs.select.$el.focus();
|
|
482
|
+
},
|
|
483
|
+
setError(error, e) {
|
|
484
|
+
console.error(error, e);
|
|
485
|
+
this.error = error;
|
|
486
|
+
setTimeout(() => {
|
|
487
|
+
this.error = null;
|
|
488
|
+
}, 5e3);
|
|
489
|
+
},
|
|
490
|
+
renameCollectionFromItem({ collectionId, name }) {
|
|
491
|
+
this.renameCollection({ collectionId, name }).catch((e) => {
|
|
492
|
+
console.error(t("Failed to rename the project"), e);
|
|
493
|
+
this.collectionsError[collectionId] = t("Failed to rename the project");
|
|
494
|
+
setTimeout(() => {
|
|
495
|
+
this.collectionsError[collectionId] = null;
|
|
496
|
+
}, 5e3);
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
};
|
|
501
|
+
const _withScopeId = (n) => (pushScopeId("data-v-efe8beb8"), n = n(), popScopeId(), n);
|
|
502
|
+
const _hoisted_1 = {
|
|
503
|
+
key: 0,
|
|
504
|
+
id: "collection-list",
|
|
505
|
+
class: "collection-list"
|
|
506
|
+
};
|
|
507
|
+
const _hoisted_2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("div", { class: "avatar" }, [
|
|
508
|
+
/* @__PURE__ */ createElementVNode("span", { class: "icon-projects" })
|
|
509
|
+
], -1));
|
|
510
|
+
const _hoisted_3 = { id: "collection-select-container" };
|
|
511
|
+
const _hoisted_4 = { class: "option__desc" };
|
|
512
|
+
const _hoisted_5 = { class: "option__title" };
|
|
513
|
+
const _hoisted_6 = { class: "option__wrapper" };
|
|
514
|
+
const _hoisted_7 = { class: "option__title" };
|
|
515
|
+
const _hoisted_8 = { class: "hint" };
|
|
516
|
+
const _hoisted_9 = {
|
|
517
|
+
key: 0,
|
|
518
|
+
class: "error"
|
|
519
|
+
};
|
|
520
|
+
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
521
|
+
const _component_NcAvatar = resolveComponent("NcAvatar");
|
|
522
|
+
const _component_NcSelect = resolveComponent("NcSelect");
|
|
523
|
+
const _component_NcCollectionListItem = resolveComponent("NcCollectionListItem");
|
|
524
|
+
return $options.collections && $props.type && $props.id ? (openBlock(), createElementBlock("ul", _hoisted_1, [
|
|
525
|
+
createElementVNode("li", {
|
|
526
|
+
onClick: _cache[3] || (_cache[3] = (...args) => $options.showSelect && $options.showSelect(...args))
|
|
527
|
+
}, [
|
|
528
|
+
_hoisted_2,
|
|
529
|
+
createElementVNode("div", _hoisted_3, [
|
|
530
|
+
createVNode(_component_NcSelect, {
|
|
531
|
+
ref: "select",
|
|
532
|
+
modelValue: $data.value,
|
|
533
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.value = $event),
|
|
534
|
+
"aria-label-combobox": $options.t("Add to a project"),
|
|
535
|
+
options: $options.options,
|
|
536
|
+
placeholder: $options.placeholder,
|
|
537
|
+
label: "title",
|
|
538
|
+
limit: 5,
|
|
539
|
+
onClose: _cache[1] || (_cache[1] = ($event) => $data.isSelectOpen = false),
|
|
540
|
+
onOpen: _cache[2] || (_cache[2] = ($event) => $data.isSelectOpen = true),
|
|
541
|
+
"onOption:selected": $options.select,
|
|
542
|
+
onSearch: $setup.search
|
|
543
|
+
}, {
|
|
544
|
+
"selected-option": withCtx((option) => [
|
|
545
|
+
createElementVNode("span", _hoisted_4, [
|
|
546
|
+
createElementVNode("span", _hoisted_5, toDisplayString(option.title), 1)
|
|
547
|
+
])
|
|
548
|
+
]),
|
|
549
|
+
option: withCtx((option) => [
|
|
550
|
+
createElementVNode("span", _hoisted_6, [
|
|
551
|
+
option.class ? (openBlock(), createElementBlock("span", {
|
|
552
|
+
key: 0,
|
|
553
|
+
class: normalizeClass([option.class, "avatar"])
|
|
554
|
+
}, null, 2)) : option.method !== 2 ? (openBlock(), createBlock(_component_NcAvatar, {
|
|
555
|
+
key: 1,
|
|
556
|
+
"allow-placeholder": "",
|
|
557
|
+
"display-name": option.title
|
|
558
|
+
}, null, 8, ["display-name"])) : createCommentVNode("", true),
|
|
559
|
+
createElementVNode("span", _hoisted_7, toDisplayString(option.title), 1)
|
|
560
|
+
])
|
|
561
|
+
]),
|
|
562
|
+
default: withCtx(() => [
|
|
563
|
+
createElementVNode("p", _hoisted_8, toDisplayString($options.t("Connect items to a project to make them easier to find")), 1)
|
|
564
|
+
]),
|
|
565
|
+
_: 1
|
|
566
|
+
}, 8, ["modelValue", "aria-label-combobox", "options", "placeholder", "onOption:selected", "onSearch"])
|
|
567
|
+
])
|
|
568
|
+
]),
|
|
569
|
+
createVNode(Transition, { name: "fade" }, {
|
|
570
|
+
default: withCtx(() => [
|
|
571
|
+
$data.error ? (openBlock(), createElementBlock("li", _hoisted_9, toDisplayString($data.error), 1)) : createCommentVNode("", true)
|
|
572
|
+
]),
|
|
573
|
+
_: 1
|
|
574
|
+
}),
|
|
575
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList($options.collections, (collection) => {
|
|
576
|
+
return openBlock(), createBlock(_component_NcCollectionListItem, {
|
|
577
|
+
key: collection.id,
|
|
578
|
+
collection,
|
|
579
|
+
error: $data.collectionsError[collection.id],
|
|
580
|
+
onRenameCollection: $options.renameCollectionFromItem,
|
|
581
|
+
onRemoveResource: $setup.removeResourceFromCollection
|
|
582
|
+
}, null, 8, ["collection", "error", "onRenameCollection", "onRemoveResource"]);
|
|
583
|
+
}), 128))
|
|
584
|
+
])) : createCommentVNode("", true);
|
|
585
|
+
}
|
|
586
|
+
const NcCollectionList = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-efe8beb8"]]);
|
|
587
|
+
export {
|
|
588
|
+
NcCollectionList as N
|
|
589
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NcCollectionList-B8r2GWp5.mjs","sources":["../../src/components/NcCollectionList/NcCollectionListItem.vue","../../src/components/NcCollectionList/service.ts","../../src/components/NcCollectionList/useCollections.js","../../src/components/NcCollectionList/NcCollectionList.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<li class=\"collection-list-item\">\n\t\t<NcAvatar :display-name=\"collection.name\" allow-placeholder class=\"collection-avatar\" />\n\t\t<span v-if=\"newName === null\"\n\t\t\tclass=\"collection-item-name\"\n\t\t\ttitle=\"\"\n\t\t\t@click=\"showDetails\">{{ collection.name }}</span>\n\t\t<form v-else :class=\"{'should-shake': error }\" @submit.prevent=\"renameCollection\">\n\t\t\t<input v-model=\"newName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tautocapitalize=\"off\">\n\t\t\t<input type=\"submit\" value=\"\" class=\"icon-confirm\">\n\t\t</form>\n\t\t<div v-if=\"!detailsOpen && newName === null\" class=\"linked-icons\">\n\t\t\t<component :is=\"getComponent(resource).component\"\n\t\t\t\tv-for=\"resource in resources.slice(0, 2)\"\n\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t:title=\"resource.name\"\n\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t:href=\"getComponent(resource).href\"\n\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t</component>\n\t\t</div>\n\n\t\t<span v-if=\"newName === null\" class=\"sharingOptionsGroup\">\n\t\t\t<NcActions>\n\t\t\t\t<NcActionButton icon=\"icon-info\"\n\t\t\t\t\t@click.prevent=\"toggleDetails\">\n\t\t\t\t\t{{ detailsOpen ? t('Hide details') : t('Show details') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton icon=\"icon-rename\"\n\t\t\t\t\t@click.prevent=\"openRename\">\n\t\t\t\t\t{{ t('Rename project') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t</span>\n\n\t\t<transition name=\"fade\">\n\t\t\t<div v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</div>\n\t\t</transition>\n\t\t<transition name=\"fade\">\n\t\t\t<ul v-if=\"detailsOpen\" class=\"resource-list-details\">\n\t\t\t\t<li v-for=\"resource in resources\"\n\t\t\t\t\t:key=\"resource.type + '|' + resource.id\"\n\t\t\t\t\t:class=\"typeClass(resource)\">\n\t\t\t\t\t<component :is=\"getComponent(resource).component\"\n\t\t\t\t\t\t:to=\"getComponent(resource).to\"\n\t\t\t\t\t\t:href=\"getComponent(resource).href\">\n\t\t\t\t\t\t<img :src=\"iconUrl(resource)\" :alt=\"resource.name\">\n\t\t\t\t\t\t<span class=\"resource-name\">{{ resource.name || '' }}</span>\n\t\t\t\t\t</component>\n\t\t\t\t\t<span class=\"icon-close\" @click=\"removeResource(collection, resource)\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</transition>\n\t</li>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport { getRoute } from '../NcRichText/autolink.ts'\n\nimport NcActions from '../NcActions/index.js'\nimport NcActionButton from '../NcActionButton/index.js'\nimport NcAvatar from '../NcAvatar/index.js'\n\nexport default {\n\tname: 'NcCollectionListItem',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcActions,\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\tcollection: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\n\t\terror: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\temits: ['remove-resource', 'rename-collection'],\n\n\tdata() {\n\t\treturn {\n\t\t\tdetailsOpen: false,\n\t\t\tnewName: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgetIcon() {\n\t\t\treturn (resource) => [resource.iconClass]\n\t\t},\n\n\t\ttypeClass() {\n\t\t\treturn (resource) => 'resource-type-' + resource.type\n\t\t},\n\n\t\tresources() {\n\t\t\t// invalid resources come from server as empty array ([]) and not an object\n\t\t\treturn this.collection.resources?.filter(resource => !Array.isArray(resource)) ?? []\n\t\t},\n\n\t\tgetComponent() {\n\t\t\treturn (resource) => {\n\t\t\t\tconst route = getRoute(this.$router, resource.link)\n\n\t\t\t\treturn route\n\t\t\t\t\t? { component: 'router-link', to: route, href: undefined }\n\t\t\t\t\t: { component: 'a', to: undefined, href: resource.link }\n\t\t\t}\n\t\t},\n\n\t\ticonUrl() {\n\t\t\treturn (resource) => {\n\t\t\t\tif (resource.mimetype) {\n\t\t\t\t\treturn OC.MimeType.getIconUrl(resource.mimetype)\n\t\t\t\t}\n\t\t\t\tif (resource.iconUrl) {\n\t\t\t\t\treturn resource.iconUrl\n\t\t\t\t}\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\ttoggleDetails() {\n\t\t\tthis.detailsOpen = !this.detailsOpen\n\t\t},\n\n\t\tshowDetails() {\n\t\t\tthis.detailsOpen = true\n\t\t},\n\n\t\tremoveResource(collection, resource) {\n\t\t\tthis.$emit('remove-resource', {\n\t\t\t\tcollectionId: collection.id,\n\t\t\t\tresourceType: resource.type,\n\t\t\t\tresourceId: resource.id,\n\t\t\t})\n\t\t},\n\n\t\topenRename() {\n\t\t\tthis.newName = this.collection.name\n\t\t},\n\n\t\trenameCollection() {\n\t\t\tif (this.newName) {\n\t\t\t\tthis.$emit('rename-collection', {\n\t\t\t\t\tcollectionId: this.collection.id,\n\t\t\t\t\tname: this.newName,\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.newName = null\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s ease;\n}\n\n.fade-enter, .fade-leave-to\n\t/* .fade-leave-active below version 2.1.8 */\n{\n\topacity: 0;\n}\n\n.linked-icons {\n\tdisplay: flex;\n\n\timg {\n\t\tpadding: 12px;\n\t\theight: 44px;\n\t\tdisplay: block;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\topacity: 0.7;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n.popovermenu {\n\tdisplay: none;\n\n\t&.open {\n\t\tdisplay: block;\n\t}\n}\n\nli.collection-list-item {\n\tflex-wrap: wrap;\n\theight: auto;\n\tcursor: pointer;\n\tmargin-bottom: 0 !important;\n\n\t.collection-avatar {\n\t\tmargin-top: 0;\n\t}\n\n\tform, .collection-item-name {\n\t\tflex-basis: 10%;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t}\n\n\t.collection-item-name {\n\t\tpadding: 12px 9px;\n\t}\n\n\tinput {\n\t\tmargin-top: 4px;\n\t\tborder-color: var(--color-border-maxcontrast);\n\n\t\t&[type=text] {\n\t\t\tflex-grow: 1;\n\t\t}\n\t}\n\n\t.error {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\t}\n\n\t.resource-list-details {\n\t\tflex-basis: 100%;\n\t\twidth: 100%;\n\n\t\tli {\n\t\t\tdisplay: flex;\n\t\t\tmargin-left: 44px;\n\t\t\tborder-radius: 3px;\n\t\t\tcursor: pointer;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-dark);\n\t\t\t}\n\n\t\t\ta {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding: 3px;\n\t\t\t\tmax-width: calc(100% - 30px);\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: top;\n\t\t\tmargin-right: 10px;\n\t\t}\n\n\t\tspan.resource-name {\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tposition: relative;\n\t\t\tvertical-align: top;\n\t\t\twhite-space: nowrap;\n\t\t\tflex-grow: 1;\n\t\t\tpadding: 4px;\n\t\t}\n\n\t\timg {\n\t\t\twidth: 24px;\n\t\t\theight: 24px;\n\t\t}\n\n\t\t.icon-close {\n\t\t\topacity: .7;\n\n\t\t\t&:hover, &:focus {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.should-shake {\n\tanimation: shake 0.6s 1 linear;\n}\n\n@keyframes shake {\n\t0% {\n\t\ttransform: translate(15px);\n\t}\n\t20% {\n\t\ttransform: translate(-15px);\n\t}\n\t40% {\n\t\ttransform: translate(7px);\n\t}\n\t60% {\n\t\ttransform: translate(-7px);\n\t}\n\t80% {\n\t\ttransform: translate(3px);\n\t}\n\t100% {\n\t\ttransform: translate(0px);\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios, { type AxiosResponse } from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\n/**\n * Extracts the OCS data from a response\n * @param response OCS response\n */\nfunction extractOcsData(response: AxiosResponse<OCSResponse>) {\n\treturn response.data.ocs.data\n}\n\n/**\n * Lists all collections\n * @param collectionId Collection ID\n */\nexport function listCollectionService(collectionId: number) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId })).then(extractOcsData)\n}\n\n/**\n * Renames a collection\n * @param collectionId Collection ID\n * @param collectionName New collection name\n */\nexport function renameCollectionService(collectionId: number, collectionName: string) {\n\treturn axios.put(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { collectionName }).then(extractOcsData)\n}\n\n/**\n * Lists all collections for a resource\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function getCollectionsByResourceService(resourceType: string, resourceId: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId })).then(extractOcsData)\n}\n\n/**\n * Creates a collection\n * @param resourceType Resource type\n * @param resourceId Resource ID\n * @param name Collection name\n */\nexport function createCollectionService(resourceType: string, resourceId: string, name: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/{resourceType}/{resourceId}', { resourceType, resourceId }), { name }).then(extractOcsData)\n}\n\n/**\n * Adds a resource to a collection\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function addResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.post(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { resourceType, resourceId }).then(extractOcsData)\n}\n\n/**\n * Removes a resource from a collection\n * @param collectionId Collection ID\n * @param resourceType Resource type\n * @param resourceId Resource ID\n */\nexport function removeResourceService(collectionId: number, resourceType: string, resourceId: string) {\n\treturn axios.delete(generateOcsUrl('collaboration/resources/collections/{collectionId}', { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData)\n}\n\n/**\n * Searches for collections\n * @param query Search query\n */\nexport function searchService(query: string) {\n\treturn axios.get(generateOcsUrl('collaboration/resources/collections/search/{query}', { query })).then(extractOcsData)\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { ref } from 'vue'\nimport {\n\trenameCollectionService,\n\tgetCollectionsByResourceService,\n\tcreateCollectionService,\n\taddResourceService,\n\tremoveResourceService,\n} from './service.ts'\n\n/**\n * Use collections composable\n */\nexport function useCollections() {\n\t// State\n\tconst storedCollections = ref([])\n\n\t// Mutations\n\tconst addCollections = (collections) => {\n\t\tstoredCollections.value = collections\n\t}\n\n\tconst addCollection = (collection) => {\n\t\tstoredCollections.value.push(collection)\n\t}\n\n\tconst removeCollection = (collectionId) => {\n\t\tstoredCollections.value = storedCollections.value.filter(item => item.id !== collectionId)\n\t}\n\n\tconst updateCollection = (collection) => {\n\t\tconst index = storedCollections.value.findIndex(item => item.id === collection.id)\n\t\tif (index !== -1) {\n\t\t\tstoredCollections.value[index] = collection\n\t\t} else {\n\t\t\taddCollection(collection)\n\t\t}\n\t}\n\n\t// Actions\n\tconst fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n\t\tconst collections = await getCollectionsByResourceService(resourceType, resourceId)\n\n\t\taddCollections(collections)\n\t}\n\n\tconst createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n\t\tconst collection = await createCollectionService(baseResourceType, baseResourceId, name)\n\n\t\taddCollection(collection)\n\t\tawait addResourceToCollection({\n\t\t\tcollectionId: collection.id,\n\t\t\tresourceType,\n\t\t\tresourceId,\n\t\t})\n\t}\n\n\tconst renameCollection = async ({ collectionId, name }) => {\n\t\tconst collection = await renameCollectionService(collectionId, name)\n\n\t\tupdateCollection(collection)\n\t}\n\n\tconst addResourceToCollection = async ({ collectionId, resourceType, resourceId }) => {\n\t\tconst collection = await addResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tupdateCollection(collection)\n\t}\n\n\tconst removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n\t\tconst collection = await removeResourceService(collectionId, resourceType, String(resourceId))\n\n\t\tif (collection.resources.length > 0) {\n\t\t\tupdateCollection(collection)\n\t\t} else {\n\t\t\tremoveCollection(collectionId)\n\t\t}\n\t}\n\n\treturn {\n\t\tstoredCollections,\n\t\tfetchCollectionsByResource,\n\t\tcreateCollection,\n\t\trenameCollection,\n\t\taddResourceToCollection,\n\t\tremoveResourceFromCollection,\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\nProvides a Vue standalone component for Nextcloud Projects feature introduced in Nextcloud 16. Replaces deprecated `nextcloud-vue-collections` library.\n\nProjects feature is deprecated since Nextcloud 25, and superseded by Related resources. See [NcRelatedResourcesPanel](#/Components/NcRelatedResourcesPanel) documentation for more information.\n\n### Usage\n\nTo enable feature in Nextcloud, run following command:\n```sh\nocc config:system:set --value true 'projects.enabled'\n```\n</docs>\n\n<template>\n\t<ul v-if=\"collections && type && id\" id=\"collection-list\" class=\"collection-list\">\n\t\t<li @click=\"showSelect\">\n\t\t\t<div class=\"avatar\">\n\t\t\t\t<span class=\"icon-projects\" />\n\t\t\t</div>\n\t\t\t<div id=\"collection-select-container\">\n\t\t\t\t<NcSelect ref=\"select\"\n\t\t\t\t\tv-model=\"value\"\n\t\t\t\t\t:aria-label-combobox=\"t('Add to a project')\"\n\t\t\t\t\t:options=\"options\"\n\t\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t\tlabel=\"title\"\n\t\t\t\t\t:limit=\"5\"\n\t\t\t\t\t@close=\"isSelectOpen = false\"\n\t\t\t\t\t@open=\"isSelectOpen = true\"\n\t\t\t\t\t@option:selected=\"select\"\n\t\t\t\t\t@search=\"search\">\n\t\t\t\t\t<template #selected-option=\"option\">\n\t\t\t\t\t\t<span class=\"option__desc\">\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template #option=\"option\">\n\t\t\t\t\t\t<span class=\"option__wrapper\">\n\t\t\t\t\t\t\t<span v-if=\"option.class\" :class=\"option.class\" class=\"avatar\" />\n\t\t\t\t\t\t\t<NcAvatar v-else-if=\"option.method !== 2\" allow-placeholder :display-name=\"option.title\" />\n\t\t\t\t\t\t\t<span class=\"option__title\">{{ option.title }}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<p class=\"hint\">\n\t\t\t\t\t\t{{ t('Connect items to a project to make them easier to find') }}\n\t\t\t\t\t</p>\n\t\t\t\t</NcSelect>\n\t\t\t</div>\n\t\t</li>\n\t\t<transition name=\"fade\">\n\t\t\t<li v-if=\"error\" class=\"error\">\n\t\t\t\t{{ error }}\n\t\t\t</li>\n\t\t</transition>\n\t\t<NcCollectionListItem v-for=\"collection in collections\"\n\t\t\t:key=\"collection.id\"\n\t\t\t:collection=\"collection\"\n\t\t\t:error=\"collectionsError[collection.id]\"\n\t\t\t@rename-collection=\"renameCollectionFromItem\"\n\t\t\t@remove-resource=\"removeResourceFromCollection\" />\n\t</ul>\n</template>\n\n<script>\nimport debounce from 'debounce'\nimport { ref } from 'vue'\nimport { t } from '../../l10n.js'\n\nimport NcAvatar from '../NcAvatar/index.js'\nimport NcSelect from '../NcSelect/index.js'\nimport NcCollectionListItem from './NcCollectionListItem.vue'\n\nimport { useCollections } from './useCollections.js'\nimport { searchService } from './service.ts'\n\nconst METHOD_CREATE_COLLECTION = 0\nconst METHOD_ADD_TO_COLLECTION = 1\n\nexport default {\n\tname: 'NcCollectionList',\n\n\tcomponents: {\n\t\tNcCollectionListItem,\n\t\tNcAvatar,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Resource type identifier\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Unique id of the resource\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Name of the resource\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Whether the component is active (to start fetch resources)\n\t\t */\n\t\tisActive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t} = useCollections()\n\n\t\tconst searchCollections = ref([])\n\t\tconst search = debounce(function(query, loading) {\n\t\t\tif (query !== '') {\n\t\t\t\tloading(true)\n\t\t\t\tsearchService(query).then(collections => {\n\t\t\t\t\tsearchCollections.value = collections\n\t\t\t\t}).catch(e => {\n\t\t\t\t\tconsole.error('Failed to search for collections', e)\n\t\t\t\t}).finally(() => {\n\t\t\t\t\tloading(false)\n\t\t\t\t})\n\t\t\t}\n\t\t}, 500)\n\n\t\treturn {\n\t\t\tstoredCollections,\n\t\t\tfetchCollectionsByResource,\n\t\t\tcreateCollection,\n\t\t\taddResourceToCollection,\n\t\t\tremoveResourceFromCollection,\n\t\t\trenameCollection,\n\t\t\tsearchCollections,\n\t\t\tsearch,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectIsOpen: false,\n\t\t\tgeneratingCodes: false,\n\t\t\tcodes: undefined,\n\t\t\tvalue: null,\n\t\t\tmodel: {},\n\t\t\tcollectionsError: {},\n\t\t\terror: null,\n\t\t\tisSelectOpen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcollections() {\n\t\t\treturn this.storedCollections.filter(collection => collection.resources\n\t\t\t\t.some(resource => resource && resource.id === String(this.id) && resource.type === this.type),\n\t\t\t)\n\t\t},\n\n\t\tplaceholder() {\n\t\t\treturn this.isSelectOpen\n\t\t\t\t? t('Type to search for existing projects')\n\t\t\t\t: t('Add to a project')\n\t\t},\n\n\t\toptions() {\n\t\t\tconst options = []\n\t\t\twindow.OCP.Collaboration.getTypes().sort().forEach(type => {\n\t\t\t\toptions.push({\n\t\t\t\t\tmethod: METHOD_CREATE_COLLECTION,\n\t\t\t\t\ttype,\n\t\t\t\t\ttitle: window.OCP.Collaboration.getLabel(type),\n\t\t\t\t\tclass: window.OCP.Collaboration.getIcon(type),\n\t\t\t\t\taction: () => window.OCP.Collaboration.trigger(type),\n\t\t\t\t})\n\t\t\t})\n\t\t\tfor (const index in this.searchCollections) {\n\t\t\t\tif (!this.collections.find(collection => collection.id === this.searchCollections[index].id)) {\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tmethod: METHOD_ADD_TO_COLLECTION,\n\t\t\t\t\t\ttitle: this.searchCollections[index].name,\n\t\t\t\t\t\tcollectionId: this.searchCollections[index].id,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn options\n\t\t},\n\n\t\tresourceIdentifier() {\n\t\t\treturn {\n\t\t\t\tresourceType: this.type,\n\t\t\t\tresourceId: this.id,\n\t\t\t\tisActive: this.isActive,\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tresourceIdentifier: {\n\t\t\tdeep: true,\n\t\t\timmediate: true,\n\t\t\thandler(resourceIdentifier) {\n\t\t\t\tif (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.fetchCollectionsByResource(resourceIdentifier)\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\tselect(selectedOption) {\n\t\t\tif (selectedOption.method === METHOD_CREATE_COLLECTION) {\n\t\t\t\tselectedOption.action().then(resourceId => {\n\t\t\t\t\tthis.createCollection({\n\t\t\t\t\t\tbaseResourceType: this.type,\n\t\t\t\t\t\tbaseResourceId: this.id,\n\t\t\t\t\t\tresourceType: selectedOption.type,\n\t\t\t\t\t\tresourceId,\n\t\t\t\t\t\tname: this.name,\n\t\t\t\t\t}).catch((e) => {\n\t\t\t\t\t\tthis.setError(t('Failed to create a project'), e)\n\t\t\t\t\t})\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tconsole.error('No resource selected', e)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n\t\t\t\tthis.addResourceToCollection({\n\t\t\t\t\tcollectionId: selectedOption.collectionId, resourceType: this.type, resourceId: this.id,\n\t\t\t\t}).catch((e) => {\n\t\t\t\t\tthis.setError(t('Failed to add the item to the project'), e)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.value = null\n\t\t},\n\n\t\tshowSelect() {\n\t\t\tthis.selectIsOpen = true\n\t\t\tthis.$refs.select.$el.focus()\n\t\t},\n\n\t\tsetError(error, e) {\n\t\t\tconsole.error(error, e)\n\t\t\tthis.error = error\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.error = null\n\t\t\t}, 5000)\n\t\t},\n\n\t\trenameCollectionFromItem({ collectionId, name }) {\n\t\t\tthis.renameCollection({ collectionId, name })\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tconsole.error(t('Failed to rename the project'), e)\n\t\t\t\t\tthis.collectionsError[collectionId] = t('Failed to rename the project')\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.collectionsError[collectionId] = null\n\t\t\t\t\t}, 5000)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.collection-list * {\n\tbox-sizing: border-box;\n}\n\n.collection-list > li {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n\n\t& > .avatar {\n\t\tmargin-top: 0;\n\t}\n}\n\n#collection-select-container {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.v-select {\n\t// NcAvatar in the dropdown\n\tspan.avatar {\n\t\tdisplay: block;\n\t\tpadding: 16px;\n\t\topacity: .7;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\np.hint {\n\tz-index: 1;\n\t// fix alignment\n\tmargin-top: -16px;\n\tpadding: 8px 8px;\n\tcolor: var(--color-text-maxcontrast);\n\tline-height: normal;\n}\n\ndiv.avatar {\n\twidth: 32px;\n\theight: 32px;\n\tmargin: 0;\n\tpadding: 8px;\n\tbackground-color: var(--color-background-dark);\n\tmargin-top: 30px;\n}\n\n/** TODO provide white icon in core */\n.icon-projects {\n\tdisplay: block;\n\tpadding: 8px;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.option__wrapper {\n\tdisplay: flex;\n\n\t.avatar {\n\t\tdisplay: block;\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-background-darker) !important;\n\t}\n\n\t.option__title {\n\t\tpadding: 4px;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .5s;\n}\n\n.fade-enter, .fade-leave-to {\n\topacity: 0;\n}\n\n</style>\n"],"names":["_sfc_main","_hoisted_1","_createElementVNode","_hoisted_4","_hoisted_8","_hoisted_9","_openBlock","_createElementBlock","_createVNode","_toDisplayString","_normalizeClass","_withModifiers","_hoisted_2","_hoisted_3","_Fragment","_renderList","_createBlock","_resolveDynamicComponent","_withCtx","_createCommentVNode","_hoisted_5","_createTextVNode","_Transition","_hoisted_6","_hoisted_7"],"mappings":"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"}
|