|  |  | @ -12,16 +12,22 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  |       @update:model-value="$emit('change-submitter', submitters.find((s) => s.uuid === $event))" |  |  |  |       @update:model-value="$emit('change-submitter', submitters.find((s) => s.uuid === $event))" | 
			
		
	
		
		
			
				
					
					|  |  |  |     /> |  |  |  |     /> | 
			
		
	
		
		
			
				
					
					|  |  |  |   </div> |  |  |  |   </div> | 
			
		
	
		
		
			
				
					
					|  |  |  |   <div class="mb-1 mt-2"> |  |  |  |   <div | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     class="mb-1 mt-2" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @dragover.prevent="onFieldDragover" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @drop="save" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   > | 
			
		
	
		
		
			
				
					
					|  |  |  |     <Field |  |  |  |     <Field | 
			
		
	
		
		
			
				
					
					|  |  |  |       v-for="field in submitterFields" |  |  |  |       v-for="field in submitterFields" | 
			
		
	
		
		
			
				
					
					|  |  |  |       :key="field.uuid" |  |  |  |       :key="field.uuid" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       :data-uuid="field.uuid" | 
			
		
	
		
		
			
				
					
					|  |  |  |       :field="field" |  |  |  |       :field="field" | 
			
		
	
		
		
			
				
					
					|  |  |  |       :type-index="fields.filter((f) => f.type === field.type).indexOf(field)" |  |  |  |       :type-index="fields.filter((f) => f.type === field.type).indexOf(field)" | 
			
		
	
		
		
			
				
					
					|  |  |  |       :editable="editable" |  |  |  |       :editable="editable && !dragField" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       :draggable="editable" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       @dragstart="dragField = field" | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       @dragend="dragField = null" | 
			
		
	
		
		
			
				
					
					|  |  |  |       @remove="removeField" |  |  |  |       @remove="removeField" | 
			
		
	
		
		
			
				
					
					|  |  |  |       @move-up="move(field, -1)" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       @move-down="move(field, 1)" |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       @scroll-to="$emit('scroll-to-area', $event)" |  |  |  |       @scroll-to="$emit('scroll-to-area', $event)" | 
			
		
	
		
		
			
				
					
					|  |  |  |       @set-draw="$emit('set-draw', $event)" |  |  |  |       @set-draw="$emit('set-draw', $event)" | 
			
		
	
		
		
			
				
					
					|  |  |  |     /> |  |  |  |     /> | 
			
		
	
	
		
		
			
				
					|  |  | @ -162,6 +168,11 @@ export default { | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |   }, |  |  |  |   }, | 
			
		
	
		
		
			
				
					
					|  |  |  |   emits: ['set-draw', 'set-drag', 'drag-end', 'scroll-to-area', 'change-submitter'], |  |  |  |   emits: ['set-draw', 'set-drag', 'drag-end', 'scroll-to-area', 'change-submitter'], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   data () { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       dragField: null | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   }, | 
			
		
	
		
		
			
				
					
					|  |  |  |   computed: { |  |  |  |   computed: { | 
			
		
	
		
		
			
				
					
					|  |  |  |     fieldNames: FieldType.computed.fieldNames, |  |  |  |     fieldNames: FieldType.computed.fieldNames, | 
			
		
	
		
		
			
				
					
					|  |  |  |     fieldIcons: FieldType.computed.fieldIcons, |  |  |  |     fieldIcons: FieldType.computed.fieldIcons, | 
			
		
	
	
		
		
			
				
					|  |  | @ -173,6 +184,24 @@ export default { | 
			
		
	
		
		
			
				
					
					|  |  |  |     onDragstart (fieldType) { |  |  |  |     onDragstart (fieldType) { | 
			
		
	
		
		
			
				
					
					|  |  |  |       this.$emit('set-drag', fieldType) |  |  |  |       this.$emit('set-drag', fieldType) | 
			
		
	
		
		
			
				
					
					|  |  |  |     }, |  |  |  |     }, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     onFieldDragover (e) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       const targetFieldUuid = e.target.closest('[data-uuid]')?.dataset?.uuid | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       if (this.dragField && targetFieldUuid && this.dragField.uuid !== targetFieldUuid) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         const field = this.fields.find((f) => f.uuid === targetFieldUuid) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         const currentIndex = this.fields.indexOf(this.dragField) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         const targetIndex = this.fields.indexOf(field) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (currentIndex < targetIndex) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           this.fields.splice(targetIndex + 1, 0, this.dragField) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           this.fields.splice(currentIndex, 1) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           this.fields.splice(targetIndex, 0, this.dragField) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           this.fields.splice(currentIndex + 1, 1) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     }, | 
			
		
	
		
		
			
				
					
					|  |  |  |     removeSubmitter (submitter) { |  |  |  |     removeSubmitter (submitter) { | 
			
		
	
		
		
			
				
					
					|  |  |  |       [...this.fields].forEach((field) => { |  |  |  |       [...this.fields].forEach((field) => { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (field.submitter_uuid === submitter.uuid) { |  |  |  |         if (field.submitter_uuid === submitter.uuid) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -188,26 +217,6 @@ export default { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       this.save() |  |  |  |       this.save() | 
			
		
	
		
		
			
				
					
					|  |  |  |     }, |  |  |  |     }, | 
			
		
	
		
		
			
				
					
					|  |  |  |     move (field, direction) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       const currentIndex = this.submitterFields.indexOf(field) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       const fieldsIndex = this.fields.indexOf(field) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       this.fields.splice(fieldsIndex, 1) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       if (currentIndex + direction > this.submitterFields.length) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         const firstIndex = this.fields.indexOf(this.submitterFields[0]) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         this.fields.splice(firstIndex, 0, field) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       } else if (currentIndex + direction < 0) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         const lastIndex = this.fields.indexOf(this.submitterFields[this.submitterFields.length - 1]) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         this.fields.splice(lastIndex + 1, 0, field) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       } else { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         this.fields.splice(fieldsIndex + direction, 0, field) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       this.save() |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     }, |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     removeField (field) { |  |  |  |     removeField (field) { | 
			
		
	
		
		
			
				
					
					|  |  |  |       this.fields.splice(this.fields.indexOf(field), 1) |  |  |  |       this.fields.splice(this.fields.indexOf(field), 1) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |