Use async import for vue component on collections entrypoint
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
@@ -25,9 +25,8 @@ const buildSelector = (selector, propsData = {}) => {
|
|||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const container = document.createElement('div')
|
const container = document.createElement('div')
|
||||||
document.getElementById('body-user').append(container)
|
document.getElementById('body-user').append(container)
|
||||||
const View = Vue.extend(selector)
|
const ComponentVM = new Vue({
|
||||||
const ComponentVM = new View({
|
render: (h) => h(selector, propsData),
|
||||||
propsData,
|
|
||||||
}).$mount(container)
|
}).$mount(container)
|
||||||
ComponentVM.$root.$on('close', () => {
|
ComponentVM.$root.$on('close', () => {
|
||||||
ComponentVM.$el.remove()
|
ComponentVM.$el.remove()
|
||||||
|
|||||||
@@ -22,8 +22,6 @@
|
|||||||
|
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
|
|
||||||
import BoardSelector from './BoardSelector'
|
|
||||||
import CardSelector from './CardSelector'
|
|
||||||
import './../css/collections.css'
|
import './../css/collections.css'
|
||||||
import FileSharingPicker from './views/FileSharingPicker'
|
import FileSharingPicker from './views/FileSharingPicker'
|
||||||
import { buildSelector } from './helpers/selector'
|
import { buildSelector } from './helpers/selector'
|
||||||
@@ -45,13 +43,19 @@ window.addEventListener('DOMContentLoaded', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
window.OCP.Collaboration.registerType('deck', {
|
window.OCP.Collaboration.registerType('deck', {
|
||||||
action: () => buildSelector(BoardSelector),
|
action: () => {
|
||||||
|
const BoardSelector = () => import('./BoardSelector')
|
||||||
|
buildSelector(BoardSelector)
|
||||||
|
},
|
||||||
typeString: t('deck', 'Link to a board'),
|
typeString: t('deck', 'Link to a board'),
|
||||||
typeIconClass: 'icon-deck',
|
typeIconClass: 'icon-deck',
|
||||||
})
|
})
|
||||||
|
|
||||||
window.OCP.Collaboration.registerType('deck-card', {
|
window.OCP.Collaboration.registerType('deck-card', {
|
||||||
action: () => buildSelector(CardSelector),
|
action: () => {
|
||||||
|
const CardSelector = () => import('./CardSelector')
|
||||||
|
buildSelector(CardSelector)
|
||||||
|
},
|
||||||
typeString: t('deck', 'Link to a card'),
|
typeString: t('deck', 'Link to a card'),
|
||||||
typeIconClass: 'icon-deck',
|
typeIconClass: 'icon-deck',
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import CardSelector from '../CardSelector'
|
|
||||||
import { createShare } from '../services/SharingApi'
|
import { createShare } from '../services/SharingApi'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -34,12 +33,12 @@ export default {
|
|||||||
container.id = 'deck-board-select'
|
container.id = 'deck-board-select'
|
||||||
const body = document.getElementById('body-user')
|
const body = document.getElementById('body-user')
|
||||||
body.append(container)
|
body.append(container)
|
||||||
const SelectorView = Vue.extend(CardSelector)
|
const CardSelector = () => import('./../CardSelector')
|
||||||
const ComponentVM = new SelectorView({
|
const ComponentVM = new Vue({
|
||||||
propsData: {
|
render: (h) => h(CardSelector, {
|
||||||
title: t('deck', 'Share {file} with a Deck card', { file: decodeURIComponent(self.fileInfo.name) }),
|
title: t('deck', 'Share {file} with a Deck card', { file: decodeURIComponent(self.fileInfo.name) }),
|
||||||
action: t('deck', 'Share'),
|
action: t('deck', 'Share'),
|
||||||
},
|
}),
|
||||||
})
|
})
|
||||||
ComponentVM.$mount(container)
|
ComponentVM.$mount(container)
|
||||||
ComponentVM.$root.$on('close', () => {
|
ComponentVM.$root.$on('close', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user