Et2Select: Fix free entries can get doubled if more free entries added

This commit is contained in:
nathan 2023-02-10 14:12:33 -07:00
parent ee84b05d82
commit c4f3ec9840
2 changed files with 12 additions and 11 deletions

View File

@ -97,14 +97,12 @@ export class Et2SelectEmail extends Et2Select
accept: `.et2-select-draggable`,
ondrop: function(e)
{
// Add in as free entry
e.target.createFreeEntry(e.draggable.target.value);
e.target.classList.remove('et2_toolbarDropArea');
e.target.classList.remove('et2_dropZone');
// remove the dragged value from its origin source
e.draggable.parent_node.value = e.draggable.parent_node.value.filter(_item => {return e.draggable.target.value !== _item;})
// set value for newly dropped target
e.target.value.push(e.draggable.target.value);
},
ondragenter: function(e)
{

View File

@ -511,19 +511,22 @@ export const Et2WithSearchMixin = <T extends Constructor<LitElement>>(superclass
{
let options = [];
if(this.allowFreeEntries)
{
this.freeEntries.forEach((item) =>
{
options.push({value: item.value, label: item.textContent, class: item.classList.toString()});
})
}
// Any provided options
options = options.concat(this.__select_options);
// Any kept remote options
options = options.concat(this._selected_remote);
if(this.allowFreeEntries)
{
this.freeEntries.forEach((item : SlMenuItem) =>
{
if(!options.some(i => i.value == item.value))
{
options.push({value: item.value, label: item.textContent, class: item.classList.toString()});
}
})
}
return options;
}