diff --git a/form-stamp.js b/form-stamp.js index 57db446..fa90b89 100644 --- a/form-stamp.js +++ b/form-stamp.js @@ -1,19 +1,21 @@ /* jshint esversion: 6 */ const defaults = { nameToReplace: 'idx', - removeSelector: '.remove' + removeSelector: '.remove', + minimalId: 'auto' } export function formStamp(element, options = {}) { const { nameToReplace, - removeSelector + removeSelector, + minimalId } = { ...defaults, ...element.dataset, ...options }; const container = element.parentElement; const template = element.querySelector('template'); const itemSelector = '.' + template.content.firstElementChild.className.replace(/ /g, '.'); - const initialItemCount = container.querySelectorAll(itemSelector).length; + const startWithId = minimalId === 'auto' ? container.querySelectorAll(itemSelector).length : parseInt(minimalId); let created = 0; const afterDomManipulation = () => { element.dispatchEvent(new CustomEvent('afterStampDomManipulation')); @@ -43,7 +45,7 @@ export function formStamp(element, options = {}) element.addEventListener('click', () => { const clone = template.content.cloneNode(true); clone.querySelectorAll('input, select, textarea').forEach(child => { - child.name = child.name.replace(nameToReplace, initialItemCount + created); + child.name = child.name.replace(nameToReplace, startWithId + created); }); clone.querySelectorAll(removeSelector).forEach(child => { child.onclick = removeRow(child); @@ -52,7 +54,7 @@ export function formStamp(element, options = {}) 'beforeStampInsert', { detail: { - i: initialItemCount + created, + i: startWithId + created, node: clone }, cancelable: true diff --git a/package.json b/package.json index 8173eb6..d1fb2f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@digicomp/form-stamp", - "version": "0.0.4", + "version": "0.0.5", "description": "duplicates an entry form field group", "main": "form-stamp.js", "scripts": {