diff --git a/src/Bundle/ChillPersonBundle/Resources/public/page/person/suggest-names.js b/src/Bundle/ChillPersonBundle/Resources/public/page/person/suggest-names.js index fedef3c13..8973d0e6c 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/page/person/suggest-names.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/page/person/suggest-names.js @@ -1,21 +1,17 @@ function capitalizeFirstLetter(string) { - return string.charAt(0).toUpperCase() + string.slice(1); + return string.charAt(0).toLocaleUpperCase() + string.slice(1); } window.addEventListener('DOMContentLoaded', function() { const uri = decodeURI(location.hash.substring(1)) - // console.log(uri) let searchFragments = uri.split(' ') - console.log(searchFragments) searchFragments = searchFragments.filter((el) => { if ( ( el.startsWith("firstname") || el.startsWith("lastname") ) || (el !== '' && !el.startsWith('birthdate') && !el.startsWith('gender') && !el.startsWith('city') && !el.startsWith('phonenumber') && !el.startsWith('@'))) { return el } }) - console.log('after filter', searchFragments) - searchFragments = searchFragments.map((el) => { if (el.startsWith("firstname")) { return el.slice(10) @@ -25,34 +21,39 @@ window.addEventListener('DOMContentLoaded', function() { return el.replace('\"', '') }) - console.log(searchFragments) - if (searchFragments) { - const suggestions = searchFragments.map((el) => `

${capitalizeFirstLetter(el)}

`) - const suggestFirstName = document.getElementById("suggest-firstname") - const suggestLastname = document.getElementById("suggest-lastname") + const pre = ''; - suggestFirstName.innerHTML = suggestions.join(' '); - suggestLastname.innerHTML = suggestions.join(' '); + document.querySelectorAll('[data-suggest-container]').forEach(function(container) { + const suggestions = searchFragments.map((el) => `
  • ${capitalizeFirstLetter(el)}
  • `); + container.innerHTML = pre + suggestions.join(' ') + after; + }) } - const tags = document.querySelectorAll('.name') - - tags.forEach((tag) => { + const tags = document.querySelectorAll('[data-suggest-target]').forEach((tag) => { tag.addEventListener('click', function(e) { - const field = e.target.parentElement.id === 'suggest-lastname' ? document.getElementById('lastname-field') : document.getElementById('firstname-field') - const suggestion = e.target.parentElement.id === 'suggest-lastname' ? e.target.textContent.toUpperCase() : e.target.textContent + const field = document.querySelector(`[name="${e.target.dataset.suggestTarget}"]`); + let suggestion = e.target.textContent.trim(); + switch (field.dataset.suggestTransform) { + case 'uppercase_all': + suggestion = suggestion.toLocaleUpperCase(); + break; + case 'uppercase_first_letter': + default: + suggestion = capitalizeFirstLetter(suggestion); + } - if (field.value === '') { + if (field.value === '') { field.value = suggestion; } else { field.value = `${field.value} ${suggestion}` } e.target.style.display = "none"; - [...document.querySelectorAll("p")] + [...document.querySelectorAll("[data-suggest-target]")] .filter(p => p.textContent.includes(e.target.textContent)) - .forEach(p => p.style.display = "none") + .forEach(p => p.remove()); }) }) diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Person/create.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Person/create.html.twig index 880fac4fb..70d6a4a8e 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Person/create.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Person/create.html.twig @@ -66,21 +66,29 @@
    {{ form_label(form.lastName, 'Last name'|trans) }}
    - {{ form_widget(form.lastName, { 'id' : 'lastname-field'}) }} + {{ form_widget(form.lastName, {'attr': {'data-suggest-transform': 'uppercase_all' } }) }}
    -
    +
    {{ form_label(form.firstName, 'First name'|trans) }}
    - {{ form_widget(form.firstName, { 'id' : 'firstname-field' }) }} + {{ form_widget(form.firstName, {'attr': {'data-suggest-transform': 'uppercase_first_letter' } }) }}
    -
    +
    {% if form.altNames is defined %} - {{ form_widget(form.altNames) }} + {% for altName in form.altNames %} +
    + {{ form_label(altName) }} +
    + {{ form_widget(altName, {'attr': {'data-suggest-transform': 'uppercase_all' } }) }} +
    +
    +
    + {% endfor %} {% endif %} {{ form_row(form.gender, { 'label' : 'Gender'|trans }) }}