Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,25 @@ class IbexaCustomAttributesFormView extends View {
addListToDropdown(labeledDropdown.fieldView, itemsList);

this.listenTo(labeledDropdown.fieldView, 'execute', (event) => {
const alreadySelectedValues = labeledDropdown.fieldView.element.value ? labeledDropdown.fieldView.element.value.split(' ') : [];
const value = config.multiple ? [...new Set([...alreadySelectedValues, event.source.value])].join(' ') : event.source.value;
const previousValue = labeledDropdown.fieldView.element.value;
let value;

if (config.multiple) {
value = previousValue ? [...new Set([...previousValue.split(','), event.source.value])].join(',') : event.source.value;
} else {
({ value } = event.source);
}

if (previousValue === value) {
if (config.multiple) {
const set = new Set([...previousValue.split(',')]);

set.delete(event.source.value);
value = [...set].join(',');
} else {
value = null;
}
}

labeledDropdown.fieldView.buttonView.set({
label: value,
Expand Down