{% extends 'layouts/constrained.html.twig' %}
{% block page_content %}
{{ form_start(form) }}
<div class="form-group">
<button type="button" class="add_item_link btn btn-secondary" data-collection-holder-class="domainPool">
Add a variation
</button>
</div>
<div>
<ul
class="domainPool"
data-index="0"
data-prototype="
<div class="input-group">
<input type="text" id="domain_variation_domainPool___name__" name="domain_variation[domainPool][__name__]" required="required" class="form-control" />
<div class="input-group-append remove_item_link">
<div class="input-group-text">X</div>
</div>
</div>
"
>
{% for domain in form.domainPool %}
<li class="domain-item mt-2">
<div class="input-group">
{{ form_errors(domain) }}
{{ form_widget(domain) }}
<div class="input-group-append remove_item_link">
<div class="input-group-text">X</div>
</div>
</div>
</li>
{% endfor %}
</ul>
</div>
{{ form_end(form) }}
<script>
function removeItem (event) {
$(event.currentTarget).closest('li.domain-item').remove();
refreshIndex();
}
function refreshIndex() {
// remapping index
const lstInput = $('li.domain-item input');
const nbOfInput = lstInput.length;
for (let i =0; i< nbOfInput; i += 1) {
$(lstInput[i]).attr('name', 'domain_variation[domainPool][' + i + ']');
$(lstInput[i]).attr('id', 'domain_variation_domainPool_' + i);
}
// rebinding click event
const removeItemButtons = $('div.remove_item_link');
removeItemButtons.unbind('click');
removeItemButtons.click(function (e) {
removeItem(e);
});
}
$('button.add_item_link').click(function (e) {
const collectionHolder = document.querySelector('.' + $(e.target).data('collection-holder-class'));
const item = document.createElement('li');
$(item).attr('class', 'domain-item mt-2');
item.innerHTML = collectionHolder
.dataset
.prototype;
collectionHolder.appendChild(item);
refreshIndex();
});
$('div.remove_item_link').click(function (e) {
removeItem(e);
});
</script>
{% endblock %}