320320 @replace="onDocumentReplace"
321321 @up="moveDocument(item, -1)"
322322 @reorder="reorderFields"
323+ @edit="editModalDocumentUuid = item.attachment_uuid"
323324 @down="moveDocument(item, 1)"
324325 @change="save"
325326 />
363364 isMobile ? 'overflow-y-auto' : 'overflow-y-hidden md:overflow-y-auto',
364365 zoomLevel > 1 ? 'overflow-x-auto' : 'overflow-x-hidden'
365366 ]"
367+ @wheel="onPagesWheel"
366368 >
367369 <div
368370 ref="documents"
684686 @close="isRevisionsModalOpen = false"
685687 @apply="onRevisionApply"
686688 />
689+ <DocumentsEditorModal
690+ v-if="editModalDocumentUuid"
691+ :template="template"
692+ :authenticity-token="authenticityToken"
693+ :accept-file-types="acceptFileTypes"
694+ :base-url="baseUrl"
695+ :page-preview-format="pagePreviewFormat"
696+ :scroll-to-attachment-uuid="editModalDocumentUuid"
697+ @saved="onDocumentsModified"
698+ @close="editModalDocumentUuid = null"
699+ />
687700 </div>
688701 </div>
689702</template>
@@ -703,6 +716,7 @@ import DocumentControls from './controls'
703716import MobileFields from './mobile_fields'
704717import FieldSubmitter from './field_submitter'
705718import RevisionsModal from './revisions_modal'
719+ import DocumentsEditorModal from './documents_editor_modal'
706720import { IconPlus, IconUsersPlus, IconDeviceFloppy, IconChevronDown, IconEye, IconWritingSign, IconInnerShadowTop, IconInfoCircle, IconAdjustments, IconDownload, IconHistory, IconX } from '@tabler/icons-vue'
707721import { v4 } from 'uuid'
708722import { ref, computed, toRaw, defineAsyncComponent } from 'vue'
@@ -746,7 +760,8 @@ export default {
746760 IconHistory,
747761 IconDeviceFloppy,
748762 IconX,
749- RevisionsModal
763+ RevisionsModal,
764+ DocumentsEditorModal
750765 },
751766 provide () {
752767 return {
@@ -1102,6 +1117,7 @@ export default {
11021117 isDragFile: false,
11031118 isMathLoaded: false,
11041119 isRevisionsModalOpen: false,
1120+ editModalDocumentUuid: null,
11051121 revisions: [],
11061122 beforeRevisionSnapshot: null,
11071123 zoomLevel: 1
@@ -1354,17 +1370,13 @@ export default {
13541370 this.pendingFieldAttachmentUuids.push(item.attachment_uuid)
13551371 }
13561372 })
1357-
1358- this.$refs.pagesContainer.addEventListener('wheel', this.onPagesWheel, { passive: false })
13591373 },
13601374 unmounted () {
13611375 document.removeEventListener('keyup', this.onKeyUp)
13621376 window.removeEventListener('keydown', this.onKeyDown)
13631377
13641378 window.removeEventListener('resize', this.onWindowResize)
13651379 window.removeEventListener('dragleave', this.onWindowDragLeave)
1366-
1367- this.$refs.pagesContainer.removeEventListener('wheel', this.onPagesWheel)
13681380 },
13691381 beforeUpdate () {
13701382 this.documentRefs = []
@@ -1681,7 +1693,7 @@ export default {
16811693
16821694 ref.x = e.clientX - ref.offsetX
16831695 ref.y = e.clientY - ref.offsetY
1684- } else if (e.dataTransfer?.types?.includes('Files')) {
1696+ } else if (e.dataTransfer?.types?.includes('Files') && !this.editModalDocumentUuid ) {
16851697 this.isDragFile = true
16861698 }
16871699 },
@@ -2124,6 +2136,10 @@ export default {
21242136 }
21252137 },
21262138 onKeyDown (event) {
2139+ if (this.editModalDocumentUuid) {
2140+ return
2141+ }
2142+
21272143 if (event.key === 'Tab' && document.activeElement === document.body) {
21282144 event.stopImmediatePropagation()
21292145 event.preventDefault()
@@ -3142,6 +3158,22 @@ export default {
31423158 onDocumentsReplaceAndTemplateClone (template) {
31433159 window.Turbo.visit(`/templates/${template.id}/edit`)
31443160 },
3161+ onDocumentsModified (data) {
3162+ this.template.schema = data.schema
3163+ this.template.fields = data.fields
3164+ this.template.submitters = data.submitters
3165+ this.template.documents = data.documents
3166+
3167+ this.selectedAreasRef.value = []
3168+
3169+ if (!this.template.submitters.find((s) => s.uuid === this.selectedSubmitter?.uuid)) {
3170+ this.selectedSubmitter = this.template.submitters[0]
3171+ }
3172+
3173+ this.editModalDocumentUuid = null
3174+
3175+ this.save()
3176+ },
31453177 moveDocument (item, direction) {
31463178 const currentIndex = this.template.schema.indexOf(item)
31473179
0 commit comments