From 8f33c8d8b60d062127277f114c55e086d8eb31d9 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 22 Sep 2026 11:51:54 +0300 Subject: [PATCH] adjust ui --- .../elements/autoresize_textarea.js | 2 + app/javascript/elements/disable_hidden.js | 12 + app/javascript/elements/search_input.js | 5 + app/javascript/template_builder/builder.vue | 2 +- .../template_builder/contenteditable.vue | 2 +- app/javascript/template_builder/field.vue | 4 +- app/javascript/template_builder/fields.vue | 11 +- app/javascript/template_builder/i18n.js | 7 + app/views/storage_settings/index.html.erb | 2 +- app/views/submissions/show.html.erb | 664 +++++++++--------- app/views/templates_preferences/show.html.erb | 2 +- app/views/templates_share_link/show.html.erb | 6 +- tailwind.config.js | 3 + tailwind.dynamic.config.js | 3 + 14 files changed, 383 insertions(+), 342 deletions(-) diff --git a/app/javascript/elements/autoresize_textarea.js b/app/javascript/elements/autoresize_textarea.js index a5a8b5ed0..e33c13794 100644 --- a/app/javascript/elements/autoresize_textarea.js +++ b/app/javascript/elements/autoresize_textarea.js @@ -1,5 +1,7 @@ export default class extends HTMLElement { connectedCallback () { + this.id = `autoresize-textarea-${Math.random().toString(32).split('.')[1]}` + this.resize() this.textarea.addEventListener('input', () => this.resize()) diff --git a/app/javascript/elements/disable_hidden.js b/app/javascript/elements/disable_hidden.js index 1e5da77c7..4b1c621ba 100644 --- a/app/javascript/elements/disable_hidden.js +++ b/app/javascript/elements/disable_hidden.js @@ -2,6 +2,18 @@ export default class extends HTMLElement { static observedAttributes = ['class'] connectedCallback () { + this.addEventListener('turbo:morph-element', this.onMorph) + + this.trigger() + } + + disconnectedCallback () { + this.removeEventListener('turbo:morph-element', this.onMorph) + } + + onMorph = (event) => { + if (event.target !== this) return + this.trigger() } diff --git a/app/javascript/elements/search_input.js b/app/javascript/elements/search_input.js index e07e6a5cc..7ef784e2c 100644 --- a/app/javascript/elements/search_input.js +++ b/app/javascript/elements/search_input.js @@ -9,6 +9,11 @@ export default class extends HTMLElement { }) document.addEventListener('turbo:before-cache', this.onBeforeCache) + + if (this.input.value) { + this.input.focus() + this.input.setSelectionRange(this.input.value.length, this.input.value.length) + } } disconnectedCallback () { diff --git a/app/javascript/template_builder/builder.vue b/app/javascript/template_builder/builder.vue index d537a6297..7f6e2f648 100644 --- a/app/javascript/template_builder/builder.vue +++ b/app/javascript/template_builder/builder.vue @@ -105,7 +105,7 @@ :fields="template.fields" :submitters="template.submitters" :selected-submitter="selectedSubmitter" - :with-help="false" + :with-help="withHelp" :default-submitters="defaultSubmitters" :draw-field-type="drawFieldType" :custom-fields="customFields" diff --git a/app/javascript/template_builder/contenteditable.vue b/app/javascript/template_builder/contenteditable.vue index 7c6686029..7836e29ac 100644 --- a/app/javascript/template_builder/contenteditable.vue +++ b/app/javascript/template_builder/contenteditable.vue @@ -10,7 +10,7 @@ :data-placeholder="placeholder" :data-empty="isEmpty" :style="{ minWidth }" - :class="[iconInline ? (isEmpty ? 'inline-block' : 'inline') : 'block', hideIcon ? 'focus:block' : '']" + :class="[iconInline ? (isEmpty ? 'inline-block' : 'inline') : 'block', hideIcon ? 'focus:block' : '', { 'py-2 -my-2': isMobile && iconInline && !isEmpty }]" class="peer relative inline-block outline-none before:pointer-events-none before:absolute before:left-0 before:top-0 before:select-none before:whitespace-pre before:text-neutral-400 before:content-[attr(data-placeholder)] before:opacity-0 data-[empty=true]:before:opacity-100" @paste.prevent="onPaste" @keydown.enter.prevent="blurContenteditable" diff --git a/app/javascript/template_builder/field.vue b/app/javascript/template_builder/field.vue index 9cc2b4501..acb0b5007 100644 --- a/app/javascript/template_builder/field.vue +++ b/app/javascript/template_builder/field.vue @@ -111,7 +111,7 @@