diff --git a/app/javascript/application.js b/app/javascript/application.js index 6e8eec576..a9c3d0391 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -59,6 +59,7 @@ import ConfirmUpload from './elements/confirm_upload' import ScrollFade from './elements/scroll_fade' import OpenModalMobile from './elements/open_modal_mobile' import HistoryBack from './elements/history_back' +import DatePlaceholder from './elements/date_placeholder' import * as TurboInstantClick from './lib/turbo_instant_click' @@ -156,6 +157,7 @@ safeRegisterElement('confirm-upload', ConfirmUpload) safeRegisterElement('scroll-fade', ScrollFade) safeRegisterElement('open-modal-mobile', OpenModalMobile) safeRegisterElement('history-back', HistoryBack) +safeRegisterElement('date-placeholder', DatePlaceholder) safeRegisterElement('template-builder', class extends HTMLElement { connectedCallback () { diff --git a/app/javascript/elements/date_placeholder.js b/app/javascript/elements/date_placeholder.js new file mode 100644 index 000000000..8003b2adf --- /dev/null +++ b/app/javascript/elements/date_placeholder.js @@ -0,0 +1,10 @@ +export default class extends HTMLElement { + connectedCallback () { + const input = this.querySelector('input') + const placeholder = this.querySelector('span') + + input.addEventListener('change', () => { + placeholder.classList.toggle('hidden', !!input.value) + }) + } +} diff --git a/app/views/submissions/_detailed_form.html.erb b/app/views/submissions/_detailed_form.html.erb index 86e2f29d0..fbfc3892e 100644 --- a/app/views/submissions/_detailed_form.html.erb +++ b/app/views/submissions/_detailed_form.html.erb @@ -65,7 +65,10 @@ <% elsif field['type'] == 'select' || field['type'] == 'radio' %> <%= select_tag "submission[1][submitters][][values][#{field['uuid'] || field['name']}]", options_for_select(field['options'].pluck('value'), field['default_value']), prompt: t(:select), id: field_id, class: 'select select-sm base-input !h-10 mt-1.5 ', required: field['required'] %> <% elsif field['type'] == 'date' %> - <%= tag.input type: field['type'], name: "submission[1][submitters][][values][#{field['uuid'] || field['name']}]", autocomplete: 'off', class: 'base-input !h-10 mt-1.5 w-full border rounded p-3', placeholder: (field['required'] ? field['title'].presence || field['name'] : "#{field['title'].presence || field['name']} (#{t('optional')})"), value: field['default_value'], id: field_id, required: field['required'] %> + + <%= tag.input type: field['type'], name: "submission[1][submitters][][values][#{field['uuid'] || field['name']}]", autocomplete: 'off', class: 'peer base-input !h-10 w-full border rounded p-3', value: field['default_value'], id: field_id, required: field['required'] %> + <%= field['required'] ? field['title'].presence || field['name'] : "#{field['title'].presence || field['name']} (#{t('optional')})" %> + <% elsif field['type'] != 'phone' %> <%= tag.input type: field['type'], name: "submission[1][submitters][][values][#{field['uuid'] || field['name']}]", autocomplete: 'off', class: 'base-input !h-10 mt-1.5 w-full border rounded p-3', placeholder: (field['required'] ? field['title'].presence || field['name'] : "#{field['title'].presence || field['name']} (#{t('optional')})"), value: field['default_value'], id: field_id, required: field['required'] %> <% end %>