|  |  | @ -13,9 +13,10 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  |     /> |  |  |  |     /> | 
			
		
	
		
		
			
				
					
					|  |  |  |   </div> |  |  |  |   </div> | 
			
		
	
		
		
			
				
					
					|  |  |  |   <div |  |  |  |   <div | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ref="fields" | 
			
		
	
		
		
			
				
					
					|  |  |  |     class="mb-1 mt-2" |  |  |  |     class="mb-1 mt-2" | 
			
		
	
		
		
			
				
					
					|  |  |  |     @dragover.prevent="onFieldDragover" |  |  |  |     @dragover.prevent="onFieldDragover" | 
			
		
	
		
		
			
				
					
					|  |  |  |     @drop="save" |  |  |  |     @drop="reorderFields" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   > |  |  |  |   > | 
			
		
	
		
		
			
				
					
					|  |  |  |     <Field |  |  |  |     <Field | 
			
		
	
		
		
			
				
					
					|  |  |  |       v-for="field in submitterFields" |  |  |  |       v-for="field in submitterFields" | 
			
		
	
	
		
		
			
				
					|  |  | @ -23,7 +24,7 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  |       :data-uuid="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 && !dragField" |  |  |  |       :editable="editable && (!dragField || dragField !== field)" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       :default-field="defaultFields.find((f) => f.name === field.name)" |  |  |  |       :default-field="defaultFields.find((f) => f.name === field.name)" | 
			
		
	
		
		
			
				
					
					|  |  |  |       :draggable="editable" |  |  |  |       :draggable="editable" | 
			
		
	
		
		
			
				
					
					|  |  |  |       @dragstart="dragField = field" |  |  |  |       @dragstart="dragField = field" | 
			
		
	
	
		
		
			
				
					|  |  | @ -211,23 +212,33 @@ export default { | 
			
		
	
		
		
			
				
					
					|  |  |  |       this.$emit('set-drag', field) |  |  |  |       this.$emit('set-drag', field) | 
			
		
	
		
		
			
				
					
					|  |  |  |     }, |  |  |  |     }, | 
			
		
	
		
		
			
				
					
					|  |  |  |     onFieldDragover (e) { |  |  |  |     onFieldDragover (e) { | 
			
		
	
		
		
			
				
					
					|  |  |  |       const targetFieldUuid = e.target.closest('[data-uuid]')?.dataset?.uuid |  |  |  |       const targetField = e.target.closest('[data-uuid]') | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       const dragField = this.$refs.fields.querySelector(`[data-uuid="${this.dragField.uuid}"]`) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       if (this.dragField && targetFieldUuid && this.dragField.uuid !== targetFieldUuid) { |  |  |  |       if (dragField && targetField && targetField !== dragField) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         const field = this.fields.find((f) => f.uuid === targetFieldUuid) |  |  |  |         const fields = Array.from(this.$refs.fields.children) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |         const currentIndex = fields.indexOf(dragField) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         const currentIndex = this.fields.indexOf(this.dragField) |  |  |  |         const targetIndex = fields.indexOf(targetField) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         const targetIndex = this.fields.indexOf(field) |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (currentIndex < targetIndex) { |  |  |  |         if (currentIndex < targetIndex) { | 
			
		
	
		
		
			
				
					
					|  |  |  |           this.fields.splice(targetIndex + 1, 0, this.dragField) |  |  |  |           targetField.after(dragField) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |           this.fields.splice(currentIndex, 1) |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } else { |  |  |  |         } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |           this.fields.splice(targetIndex, 0, this.dragField) |  |  |  |           targetField.before(dragField) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |           this.fields.splice(currentIndex + 1, 1) |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |       } |  |  |  |       } | 
			
		
	
		
		
			
				
					
					|  |  |  |     }, |  |  |  |     }, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     reorderFields () { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       Array.from(this.$refs.fields.children).forEach((el, index) => { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (el.dataset.uuid !== this.fields[index].uuid) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           const field = this.fields.find((f) => f.uuid === el.dataset.uuid) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           this.fields.splice(this.fields.indexOf(field), 1) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           this.fields.splice(index, 0, field) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       }) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       this.save() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     }, | 
			
		
	
		
		
			
				
					
					|  |  |  |     removeSubmitter (submitter) { |  |  |  |     removeSubmitter (submitter) { | 
			
		
	
		
		
			
				
					
					|  |  |  |       [...this.fields].forEach((field) => { |  |  |  |       [...this.fields].forEach((field) => { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (field.submitter_uuid === submitter.uuid) { |  |  |  |         if (field.submitter_uuid === submitter.uuid) { | 
			
		
	
	
		
		
			
				
					|  |  | 
 |