From c1ab4fafb2ce86c527d85595099fd8b1e6e17a54 Mon Sep 17 00:00:00 2001 From: Alex Turchyn Date: Sat, 23 Sep 2023 18:23:34 +0300 Subject: [PATCH] select submitter name on edit --- .../template_builder/contenteditable.vue | 20 ++++++++++++++++++- .../template_builder/field_submitter.vue | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/javascript/template_builder/contenteditable.vue b/app/javascript/template_builder/contenteditable.vue index 4041b1ad..e36b12ca 100644 --- a/app/javascript/template_builder/contenteditable.vue +++ b/app/javascript/template_builder/contenteditable.vue @@ -30,7 +30,7 @@ :class="{ 'ml-1': !withRequired, 'absolute': !iconInline, 'inline align-bottom': iconInline }" :width="iconWidth" :stroke-width="iconStrokeWidth" - @click="focusContenteditable" + @click="[focusContenteditable(), selectOnEditClick && selectContent()]" /> @@ -64,6 +64,11 @@ export default { required: false, default: false }, + selectOnEditClick: { + type: Boolean, + required: false, + default: false + }, iconStrokeWidth: { type: Number, required: false, @@ -85,6 +90,19 @@ export default { } }, methods: { + selectContent () { + const el = this.$refs.contenteditable + + const range = document.createRange() + + range.selectNodeContents(el) + + const sel = window.getSelection() + + sel.removeAllRanges() + + sel.addRange(range) + }, onBlur (e) { setTimeout(() => { this.value = this.$refs.contenteditable.innerText.trim() || this.modelValue diff --git a/app/javascript/template_builder/field_submitter.vue b/app/javascript/template_builder/field_submitter.vue index e9583c24..584368b7 100644 --- a/app/javascript/template_builder/field_submitter.vue +++ b/app/javascript/template_builder/field_submitter.vue @@ -25,6 +25,7 @@ v-model="selectedSubmitter.name" class="cursor-text" :icon-inline="true" + :select-on-edit-click="true" :icon-width="18" @update:model-value="$emit('name-change', selectedSubmitter)" />