& Et2InputWidg
'tree-dropdown--disabled': this.disabled,
'tree-dropdown--readonly': this.readonly,
'tree-dropdown--focused': this.hasFocus,
+ 'tree-dropdown--multiple': this.multiple,
'tree-dropdown--placeholder-visible': isPlaceholderVisible,
'tree-dropdown--searching': this.treeOrSearch == "search",
'tree-dropdown--has-value': hasValue
@@ -672,7 +886,6 @@ export class Et2TreeDropdown extends SearchMixin
& Et2InputWidg
auto-size-padding="10"
?active=${this.open}
placement=${this.placement || "bottom"}
- stay-open-on-select
strategy="fixed"
?disabled=${this.disabled}
>
@@ -681,12 +894,28 @@ export class Et2TreeDropdown extends SearchMixin & Et2InputWidg
class="tree-dropdown__combobox"
slot="anchor"
@keydown=${this.handleComboboxKeyDown}
+ @click=${this.handleClick}
>
-
- ${this.tagsTemplate()}
- ${this.inputTemplate()}
-
+ ${this.multiple ? this.tagsTemplate() : nothing}
+ ${this.inputTemplate()}
+ ${hasClearIcon
+ ? html`
+
+ `
+ : ''}
@@ -702,7 +931,7 @@ export class Et2TreeDropdown extends SearchMixin & Et2InputWidg
?readonly=${this.readonly}
?disabled=${this.disabled}
value=${this.multiple ? nothing : this.value}
- ._selectOptions=${this.select_options}
+ ._selectOptions=${options}
.actions=${this.actions}
.styleTemplate=${() => this.styleTemplate()}
.autoloading="${this.autoloading}"
diff --git a/api/js/etemplate/Et2Widget/SearchMixin.ts b/api/js/etemplate/Et2Widget/SearchMixin.ts
index 975c43aa78..6d99027323 100644
--- a/api/js/etemplate/Et2Widget/SearchMixin.ts
+++ b/api/js/etemplate/Et2Widget/SearchMixin.ts
@@ -505,6 +505,11 @@ export const SearchMixin =
+ {
+ this.dispatchEvent(new Event("change", {bubbles: true}));
+ });
*/
this.updateComplete.then(() =>
diff --git a/api/js/etemplate/et2_extension_nextmatch.ts b/api/js/etemplate/et2_extension_nextmatch.ts
index cdcc64a30a..ac9c7b0341 100644
--- a/api/js/etemplate/et2_extension_nextmatch.ts
+++ b/api/js/etemplate/et2_extension_nextmatch.ts
@@ -3797,6 +3797,8 @@ export class et2_nextmatch_header_bar extends et2_DOMWidget implements et2_INext
!select.select_options.filter(option => option.value === '').length)
{
select.emptyLabel = this.egw().lang('All categories');
+ // requestUpdate because widget is not firing update itself
+ select.requestUpdate("emptyLabel");
}
select.requestUpdate("value");
})