From 44e848a1f0ab0da7fa9e82a67195525c706206e5 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Fri, 24 Jan 2025 22:32:20 +0200 Subject: [PATCH] fix heading move --- app/javascript/template_builder/area.vue | 36 ++++++++++++--------- app/javascript/template_builder/builder.vue | 2 ++ 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/app/javascript/template_builder/area.vue b/app/javascript/template_builder/area.vue index ccb62ab9..1ada02dc 100644 --- a/app/javascript/template_builder/area.vue +++ b/app/javascript/template_builder/area.vue @@ -361,6 +361,7 @@ export default { isMoved: false, renderDropdown: false, isNameFocus: false, + isHeadingSelected: false, textOverflowChars: 0, dragFrom: { x: 0, y: 0 } } @@ -377,7 +378,7 @@ export default { } }, isValueInput () { - return (this.field.type === 'heading' && this.isSelected) || this.isContenteditable || (this.inputMode && ['text', 'number', 'date'].includes(this.field.type)) + return (this.field.type === 'heading' && this.isHeadingSelected) || this.isContenteditable || (this.inputMode && ['text', 'number', 'date'].includes(this.field.type)) }, modalContainerEl () { return this.$el.getRootNode().querySelector('#docuseal_modal_container') @@ -485,7 +486,7 @@ export default { if (['text', 'number'].includes(this.field.type)) { this.isContenteditable = true - this.$nextTick(() => this.focusValueInput()) + this.focusValueInput() } else if (this.field.type === 'checkbox') { this.field.readonly = !this.field.readonly this.field.default_value === true ? delete this.field.default_value : this.field.default_value = true @@ -507,16 +508,18 @@ export default { } }, focusValueInput (e) { - if (this.$refs.defaultValue !== document.activeElement) { - this.$refs.defaultValue.focus() - - if (this.$refs.defaultValue.innerText.length && this.$refs.defaultValue !== e?.target) { - window.getSelection().collapse( - this.$refs.defaultValue.firstChild, - this.$refs.defaultValue.innerText.length - ) + this.$nextTick(() => { + if (this.$refs.defaultValue && this.$refs.defaultValue !== document.activeElement) { + this.$refs.defaultValue.focus() + + if (this.$refs.defaultValue.innerText.length && this.$refs.defaultValue !== e?.target) { + window.getSelection().collapse( + this.$refs.defaultValue.firstChild, + this.$refs.defaultValue.innerText.length + ) + } } - } + }) }, formatNumber (number, format) { if (format === 'comma') { @@ -632,6 +635,7 @@ export default { const text = this.$refs.defaultValue.innerText.trim() this.isContenteditable = false + this.isHeadingSelected = false if (text) { if (this.field.type === 'number') { @@ -749,10 +753,6 @@ export default { this.selectedAreaRef.value = this.area - if (this.field.type === 'heading') { - this.$nextTick(() => this.focusValueInput()) - } - this.dragFrom = { x: rect.left - e.clientX, y: rect.top - e.clientY } this.$el.getRootNode().addEventListener('mousemove', this.mouseMove) @@ -787,6 +787,12 @@ export default { this.save() } + if (this.field.type === 'heading') { + this.isHeadingSelected = !this.isMoved + + this.focusValueInput() + } + this.isDragged = false this.isMoved = false diff --git a/app/javascript/template_builder/builder.vue b/app/javascript/template_builder/builder.vue index 70e9b0f6..6e8bae2a 100644 --- a/app/javascript/template_builder/builder.vue +++ b/app/javascript/template_builder/builder.vue @@ -1427,6 +1427,8 @@ export default { const documentRef = this.documentRefs.find((e) => e.document.uuid === area.attachment_uuid) const areaRef = documentRef.pageRefs[area.page].areaRefs.find((ref) => ref.area === this.selectedAreaRef.value) + areaRef.isHeadingSelected = true + areaRef.focusValueInput() }) }