nextcloud-calendar/src/reference.js

32 lines
1.2 KiB
JavaScript

import { registerWidget, NcCustomPickerRenderResult } from '@nextcloud/vue/dist/Functions/registerReference.js'
import { linkTo } from '@nextcloud/router'
import { getRequestToken } from '@nextcloud/auth'
import { translate, translatePlural } from '@nextcloud/l10n'
import '../css/calendar.scss'
__webpack_nonce__ = btoa(getRequestToken()) // eslint-disable-line
__webpack_public_path__ = linkTo('calendar', 'js/') // eslint-disable-line
registerWidget('calendar_widget', async (el, { richObjectType, richObject, accessible, interactive }) => {
const { default: Vue } = await import('vue')
const { default: Calendar } = await import('./views/Calendar.vue')
const { default: store } = await import('./store/index.js')
Vue.prototype.$t = translate
Vue.prototype.$n = translatePlural
Vue.mixin({ methods: { t, n } })
const Widget = Vue.extend(Calendar)
const vueElement = new Widget({
store,
propsData: {
isWidget: true,
isPublic: richObject.isPublic,
referenceToken: richObject?.token,
url: richObject.url,
},
}).$mount(el)
return new NcCustomPickerRenderResult(vueElement.$el, vueElement)
}, (el, renderResult) => {
renderResult.object.$destroy()
}, true)