A demo with triple nesting. But it could be more
Is done with:
const tripleRoot = document.getElementById('demo-triple-1');
formCollection(tripleRoot, {
btn_add_selector: '.collection-elem-add',
btn_delete_selector: '.collection-elem-remove',
btn_up_selector: '.collection-elem-up',
btn_down_selector: '.collection-elem-down',
call_post_add_on_init: true,
post_add: function(new_elem, context) {
const tripleSubRoot = new_elem.querySelectorAll('.sub-collection-root');
formCollection(tripleSubRoot, {
btn_add_selector: '.sub-collection-elem-add',
btn_delete_selector: '.sub-collection-elem-remove',
btn_up_selector: '.sub-collection-elem-up',
btn_down_selector: '.sub-collection-elem-down',
prototype_name: '__subname__',
call_post_add_on_init: true,
post_add: function(new_elem, context) {
const tripleSubSubRoot = new_elem.querySelectorAll('.sub-sub-collection-root')
formCollection(tripleSubSubRoot, {
btn_add_selector: '.sub-sub-collection-elem-add',
btn_delete_selector: '.sub-sub-collection-elem-remove',
btn_up_selector: '.sub-sub-collection-elem-up',
btn_down_selector: '.sub-sub-collection-elem-down',
call_post_add_on_init: false,
prototype_name: '__subsubname__'
});
formCollection(tripleSubSubRoot, 'add'); // to init with one element
}
});
formCollection(tripleSubRoot, 'add'); // to init with one element
}
});
formCollection(tripleRoot, 'add'); // to init with one element
const $tripleRoot = $('#demo-triple-1');
$tripleRoot.formCollection({
btn_add_selector: '.collection-elem-add',
btn_delete_selector: '.collection-elem-remove',
btn_up_selector: '.collection-elem-up',
btn_down_selector: '.collection-elem-down',
call_post_add_on_init: true,
post_add: function($new_elem, context) {
const $tripleSubRoot = $new_elem.find('.sub-collection-root');
$tripleSubRoot.formCollection({
btn_add_selector: '.sub-collection-elem-add',
btn_delete_selector: '.sub-collection-elem-remove',
btn_up_selector: '.sub-collection-elem-up',
btn_down_selector: '.sub-collection-elem-down',
prototype_name: '__subname__',
call_post_add_on_init: true,
post_add: function($new_elem, context) {
const $tripleSubSubRoot = $new_elem.find('.sub-sub-collection-root')
$tripleSubSubRoot.formCollection({
btn_add_selector: '.sub-sub-collection-elem-add',
btn_delete_selector: '.sub-sub-collection-elem-remove',
btn_up_selector: '.sub-sub-collection-elem-up',
btn_down_selector: '.sub-sub-collection-elem-down',
call_post_add_on_init: false,
prototype_name: '__subsubname__'
});
$tripleSubSubRoot.formCollection('add'); // to init with one element
}
});
formCollection(tripleSubRoot, 'add'); // to init with one element
}
});
$tripleRoot.formCollection('add'); // to init with one element
(The design is purely an example, you’re responsible of it)