|
|
@@ -22,7 +22,7 @@
|
|
|
if ((multipleValues[ch.attrName] || 0) === 1)
|
|
|
actualChanges.push(`delete: ${ch.attrName}`);
|
|
|
else
|
|
|
- actualChanges.push(`delete: ${ch.attrName}\nattribute: ${ch.initialValue}`);
|
|
|
+ actualChanges.push(`delete: ${ch.attrName}\n${ch.attrName}: ${ch.initialValue}`);
|
|
|
}
|
|
|
if (ch.newValue.length)
|
|
|
actualChanges.push(`add: ${ch.attrName}\n${ch.attrName}: ${ch.newValue}`);
|
|
|
@@ -51,25 +51,45 @@
|
|
|
}
|
|
|
|
|
|
let prevItem = null; // input field
|
|
|
- function addAddButton(item) { // item is the input field
|
|
|
+ function removeButtonHandler(input, li) {
|
|
|
+ return (e) => {
|
|
|
+ e?.preventDefault();
|
|
|
+ input.value = "";
|
|
|
+ onValueChanged(input);
|
|
|
+ li.parentNode.removeChild(li);
|
|
|
+ };
|
|
|
+ }
|
|
|
+ function addAddButton(input, li) {
|
|
|
let addButton = document.createElement("a");
|
|
|
- addButton.innerText = "Add";
|
|
|
+ addButton.innerText = "";
|
|
|
+ addButton.className = "button button-add bi bi-plus-circle";
|
|
|
addButton.src = "#";
|
|
|
- addButton.parentInput = item;
|
|
|
+ addButton.parentInput = input;
|
|
|
addButton.addEventListener("click", (e) => {
|
|
|
e.preventDefault();
|
|
|
let line = addButton.parentInput.parentNode.parentNode;
|
|
|
let copy = line.cloneNode(true);
|
|
|
line.parentNode.insertBefore(copy, line);
|
|
|
- let input = copy.querySelectorAll("label > input")[0];
|
|
|
+ let input = copy.querySelector("label > input");
|
|
|
input.value = "";
|
|
|
input.dataset.initialValue = "";
|
|
|
input.addEventListener("change", e => onValueChanged(e.currentTarget));
|
|
|
input.dataset.inputId = ++maxInputId;
|
|
|
- let button = copy.querySelectorAll("label > span > a")[0];
|
|
|
+ copy.querySelector(".button-remove")?.addEventListener("click", removeButtonHandler(input, copy));
|
|
|
+ let button = copy.querySelector("label > span > .button-add");
|
|
|
button.parentNode.removeChild(button);
|
|
|
});
|
|
|
- item.parentNode.children[0].appendChild(addButton);
|
|
|
+ li.querySelector(".LDAPAttribute > span").appendChild(addButton);
|
|
|
+ }
|
|
|
+ function addRemoveButton(input, li) { // item is the input field
|
|
|
+ if (input.parentNode.children[0].classList.contains("mandatory"))
|
|
|
+ return;
|
|
|
+ let button = document.createElement("a");
|
|
|
+ button.innerText = "";
|
|
|
+ button.className = "button button-remove bi bi-dash-circle";
|
|
|
+ button.src = "#";
|
|
|
+ button.addEventListener("click", removeButtonHandler(input, li));
|
|
|
+ li.querySelector(".LDAPAttribute > span").appendChild(button);
|
|
|
}
|
|
|
function manageDuplicateAttributes(li, input) {
|
|
|
attributeCount[input.dataset.attributeName] = (attributeCount[input.dataset.attributeName] || {});
|
|
|
@@ -85,17 +105,19 @@
|
|
|
i.addEventListener("change", e => onValueChanged(e.currentTarget))
|
|
|
if (prevItem != null &&
|
|
|
prevItem.dataset.attributeName !== i.dataset.attributeName) {
|
|
|
- addAddButton(prevItem);
|
|
|
+ addAddButton(prevItem, prevItem.parentNode.parentNode);
|
|
|
}
|
|
|
+ addRemoveButton(i, i.parentNode.parentNode);
|
|
|
prevItem = i;
|
|
|
manageDuplicateAttributes(i.parentElement.parentElement, i);
|
|
|
});
|
|
|
- prevItem && addAddButton(prevItem);
|
|
|
+ prevItem && addAddButton(prevItem, prevItem.parentNode.parentNode);
|
|
|
|
|
|
function CreateClassAttributeDom(className, name, init, isMandatory) {
|
|
|
let li = document.createElement("li");
|
|
|
let label = document.createElement("label");
|
|
|
label.classList.add("LDAPAttribute");
|
|
|
+ label.classList.add("form-label");
|
|
|
li.appendChild(label);
|
|
|
let span = document.createElement("span");
|
|
|
if (isMandatory)
|
|
|
@@ -110,6 +132,7 @@
|
|
|
input.dataset.klass = className;
|
|
|
input.dataset.attributeName = name;
|
|
|
input.required = isMandatory;
|
|
|
+ input.className = "form-control";
|
|
|
input.addEventListener("change", e => onValueChanged(e.currentTarget))
|
|
|
label.appendChild(span);
|
|
|
label.appendChild(input);
|