Fix some readonly selectboxes were missing options

This commit is contained in:
nathan 2022-02-17 16:37:59 -07:00
parent b8455e0b8d
commit 1776dd9005
2 changed files with 26 additions and 30 deletions

View File

@ -22,8 +22,6 @@ const so = new StaticOptions();
*/ */
export class Et2SelectReadonly extends Et2Widget(LitElement) implements et2_IDetachedDOM export class Et2SelectReadonly extends Et2Widget(LitElement) implements et2_IDetachedDOM
{ {
protected _options : SelectOption[] = [];
static get styles() static get styles()
{ {
return [ return [
@ -49,7 +47,7 @@ li {
return { return {
...super.properties, ...super.properties,
value: String, value: String,
select_options: Object select_options: Array
} }
} }
@ -57,11 +55,12 @@ li {
{ {
super(); super();
this.type = ""; this.type = "";
this.select_options = [];
} }
protected find_select_options(_attrs) protected find_select_options(_attrs)
{ {
let sel_options = find_select_options(this, _attrs['select_options'], _attrs); let sel_options = find_select_options(this, _attrs['select_options']);
if(sel_options.length > 0) if(sel_options.length > 0)
{ {
this.set_select_options(sel_options); this.set_select_options(sel_options);
@ -128,24 +127,24 @@ li {
fixed_options.push(<SelectOption>{value: key, label: new_options[key]}); fixed_options.push(<SelectOption>{value: key, label: new_options[key]});
} }
console.warn(this.id + " passed a key => value map instead of array"); console.warn(this.id + " passed a key => value map instead of array");
this._options = fixed_options; this.select_options = fixed_options;
return; return;
} }
this._options = new_options; this.select_options = new_options;
} }
render() render()
{ {
if(!this.value) if(!this.value)
{ {
return this._readonlyRender({label: this.empty_text, value: ""}); return this._readonlyRender({label: this.empty_label, value: ""});
} }
return html` return html`
<ul> <ul>
${repeat(this.value, (val : string) => val, (val) => ${repeat(this.value, (val : string) => val, (val) =>
{ {
let option = this._options.find(option => option.value == val); let option = this.select_options.find(option => option.value == val);
if(!option) if(!option)
{ {
return ""; return "";
@ -189,9 +188,6 @@ customElements.define("et2-select_ro", Et2SelectReadonly);
export class Et2SelectAccountReadonly extends Et2SelectReadonly export class Et2SelectAccountReadonly extends Et2SelectReadonly
{ {
protected find_select_options(_attrs) {}
set value(new_value) set value(new_value)
{ {
if(!new_value) if(!new_value)
@ -208,7 +204,7 @@ export class Et2SelectAccountReadonly extends Et2SelectReadonly
{ {
let account_name = null; let account_name = null;
let option = <SelectOption>{value: id, label: id + " ..."}; let option = <SelectOption>{value: id, label: id + " ..."};
this._options.push(option); this.select_options.push(option);
if(new_value && (account_name = this.egw().link_title('api-accounts', id))) if(new_value && (account_name = this.egw().link_title('api-accounts', id)))
{ {
option.label = account_name; option.label = account_name;
@ -241,7 +237,7 @@ export class Et2SelectAppReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.app(this, {other: this.other || []}); this.select_options = so.app(this, {other: this.other || []});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -255,9 +251,9 @@ export class Et2SelectBitwiseReadonly extends Et2SelectReadonly
render() render()
{ {
let new_value = []; let new_value = [];
for(let index in this._options) for(let index in this.select_options)
{ {
let option = this._options[index]; let option = this.select_options[index];
let right = parseInt(option && option.value ? option.value : index); let right = parseInt(option && option.value ? option.value : index);
if(!!(this.value & right)) if(!!(this.value & right))
{ {
@ -268,7 +264,7 @@ export class Et2SelectBitwiseReadonly extends Et2SelectReadonly
<ul> <ul>
${repeat(new_value, (val : string) => val, (val) => ${repeat(new_value, (val : string) => val, (val) =>
{ {
let option = this._options.find(option => option.value == val); let option = this.select_options.find(option => option.value == val);
if(!option) if(!option)
{ {
return ""; return "";
@ -287,7 +283,7 @@ export class Et2SelectBoolReadonly extends Et2SelectReadonly
constructor() constructor()
{ {
super(); super();
this._options = so.bool(this); this.select_options = so.bool(this);
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -302,7 +298,7 @@ export class Et2SelectCategoryReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.cat(this, {other: this.other || []}); this.select_options = so.cat(this, {other: this.other || []});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -316,7 +312,7 @@ export class Et2SelectPercentReadonly extends Et2SelectReadonly
constructor() constructor()
{ {
super(); super();
this._options = so.percent(this, {}); this.select_options = so.percent(this, {});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -330,7 +326,7 @@ export class Et2SelectCountryReadonly extends Et2SelectReadonly
constructor() constructor()
{ {
super(); super();
this._options = so.country(this, {}); this.select_options = so.country(this, {});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -345,7 +341,7 @@ export class Et2SelectDayReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.day(this, {other: this.other || []}); this.select_options = so.day(this, {other: this.other || []});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -360,7 +356,7 @@ export class Et2SelectDayOfWeekReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.dow(this, {other: this.other || []}); this.select_options = so.dow(this, {other: this.other || []});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -375,7 +371,7 @@ export class Et2SelectHourReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.hour(this, {other: this.other || []}); this.select_options = so.hour(this, {other: this.other || []});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -390,7 +386,7 @@ export class Et2SelectMonthReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.month(this); this.select_options = so.month(this);
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -405,7 +401,7 @@ export class Et2SelectNumberReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.number(this, {other: this.other || []}); this.select_options = so.number(this, {other: this.other || []});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -419,7 +415,7 @@ export class Et2SelectPriorityReadonly extends Et2SelectReadonly
constructor() constructor()
{ {
super(); super();
this._options = so.priority(this); this.select_options = so.priority(this);
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -434,7 +430,7 @@ export class Et2SelectStateReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.state(this, {other: this.other || []}); this.select_options = so.state(this, {other: this.other || []});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -449,7 +445,7 @@ export class Et2SelectTimezoneReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.timezone(this, {other: this.other || []}); this.select_options = so.timezone(this, {other: this.other || []});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}
@ -464,7 +460,7 @@ export class Et2SelectYearReadonly extends Et2SelectReadonly
{ {
super(); super();
this._options = so.year(this, {other: this.other || []}); this.select_options = so.year(this, {other: this.other || []});
} }
protected find_select_options(_attrs) {} protected find_select_options(_attrs) {}

View File

@ -61,7 +61,7 @@ export class StaticOptions
// Avoid errors if widget is destroyed before the timeout // Avoid errors if widget is destroyed before the timeout
if(widget && typeof widget.id !== 'undefined') if(widget && typeof widget.id !== 'undefined')
{ {
widget.set_select_options(find_select_options(widget, {}, widget.options)); widget.set_select_options(find_select_options(widget, {}, cache));
} }
}); });
return []; return [];