mirror of https://github.com/nextcloud/bookmarks
52 lines
1.6 KiB
JavaScript
52 lines
1.6 KiB
JavaScript
/*
|
|
* Copyright (c) 2022. The Nextcloud Bookmarks contributors.
|
|
*
|
|
* This file is licensed under the Affero General Public License version 3 or later. See the COPYING file.
|
|
*/
|
|
|
|
import Vue from 'vue'
|
|
import FolderPickerDialog from './components/FolderPickerDialog.vue'
|
|
import { Store } from 'vuex'
|
|
import deepClone from 'clone-deep'
|
|
import store, { actions } from './store/index.js'
|
|
import AppGlobal from './mixins/AppGlobal.js'
|
|
import { Tooltip } from '@nextcloud/vue'
|
|
|
|
// eslint-disable-next-line
|
|
__webpack_nonce__ = btoa(OC.requestToken)
|
|
// eslint-disable-next-line
|
|
__webpack_public_path__ = OC.linkTo('bookmarks', 'js/')
|
|
|
|
Vue.mixin(AppGlobal)
|
|
Vue.directive('tooltip', Tooltip)
|
|
|
|
OCP.Collaboration.registerType('bookmarks-folder', {
|
|
action: () => {
|
|
return new Promise((resolve, reject) => {
|
|
const container = document.createElement('div')
|
|
container.id = 'bookmarks-bookmark-folder-select'
|
|
const body = document.getElementById('body-user')
|
|
body.appendChild(container)
|
|
const ComponentVM = new Vue({
|
|
render: h => h(FolderPickerDialog),
|
|
store: new Store(deepClone(store)),
|
|
})
|
|
ComponentVM.$store.dispatch(actions.LOAD_FOLDERS, true)
|
|
ComponentVM.$mount(container)
|
|
window.bookmarksPicker = ComponentVM
|
|
ComponentVM.$root.$on('close', () => {
|
|
ComponentVM.$el.remove()
|
|
ComponentVM.$destroy()
|
|
reject(new Error('User cancelled resource selection'))
|
|
})
|
|
ComponentVM.$root.$on('select', (id) => {
|
|
resolve(id)
|
|
ComponentVM.$el.remove()
|
|
ComponentVM.$destroy()
|
|
})
|
|
})
|
|
},
|
|
typeString: t('bookmarks', 'Link to a bookmark folder'),
|
|
typeIconClass: 'icon-favorite',
|
|
})
|