diff --git a/app/javascript/application.js b/app/javascript/application.js index aca2d2c0..08b51dce 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -1,14 +1,11 @@ import '@hotwired/turbo-rails' -import { createApp, reactive } from 'vue' - import ToggleVisible from './elements/toggle_visible' import DisableHidden from './elements/disable_hidden' import TurboModal from './elements/turbo_modal' import FileDropzone from './elements/file_dropzone' import MenuActive from './elements/menu_active' import ClipboardCopy from './elements/clipboard_copy' -import TemplateBuilder from './template_builder/builder' import DynamicList from './elements/dynamic_list' import DownloadButton from './elements/download_button' import SetOriginUrl from './elements/set_origin_url' @@ -34,8 +31,16 @@ window.customElements.define('download-button', DownloadButton) window.customElements.define('set-origin-url', SetOriginUrl) window.customElements.define('template-builder', class extends HTMLElement { - connectedCallback () { - this.appElem = document.createElement('div') + async connectedCallback () { + const [ + { createApp, reactive }, + { default: TemplateBuilder } + ] = await Promise.all([ + import('vue'), + import('./template_builder/builder') + ]) + + this.appElem = this.children[0] this.app = createApp(TemplateBuilder, { template: reactive(JSON.parse(this.dataset.template)) @@ -50,6 +55,5 @@ window.customElements.define('template-builder', class extends HTMLElement { disconnectedCallback () { this.app?.unmount() - this.appElem?.remove() } }) diff --git a/app/javascript/elements/file_dropzone.js b/app/javascript/elements/file_dropzone.js index e6010337..bdba05ce 100644 --- a/app/javascript/elements/file_dropzone.js +++ b/app/javascript/elements/file_dropzone.js @@ -1,5 +1,3 @@ -import { DirectUpload } from '@rails/activestorage' - import { actionable } from '@github/catalyst/lib/actionable' import { target, targetable } from '@github/catalyst/lib/targetable' @@ -11,6 +9,8 @@ export default actionable(targetable(class extends HTMLElement { ] connectedCallback () { + import('@rails/activestorage') + this.addEventListener('drop', this.onDrop) this.addEventListener('dragover', (e) => e.preventDefault()) @@ -39,6 +39,8 @@ export default actionable(targetable(class extends HTMLElement { async uploadFiles (files) { this.toggleLoading() + const { DirectUpload } = await import('@rails/activestorage') + await Promise.all( Array.from(files).map(async (file) => { const upload = new DirectUpload( diff --git a/app/javascript/submission_form/completed.vue b/app/javascript/submission_form/completed.vue index 1969be30..37d23dbc 100644 --- a/app/javascript/submission_form/completed.vue +++ b/app/javascript/submission_form/completed.vue @@ -45,7 +45,6 @@