You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.2 KiB
JavaScript

class SelectWidget extends BaseWidget {
$el;
constructor(data, renderer) {
super(data, renderer);
this.makeLayout( {
type: 'select',
class: 'w_select',
name: 'el',
style: {
color: 'var(--prim)'
},
events: {
change: () => this.set(this.$el.value)
},
});
this.update(data);
}
update(data) {
super.update(data);
if ('value' in data) this.$el.value = data.value;
if ('text' in data) {
const options = [];
if (data.text) {
const ops = data.text.toString().split(/[;,]/);
for (const i in ops) {
const option = document.createElement('option');
option.value = i;
option.text = ops[i].trim();
option.selected = (i == this.$el.value);
options.push(option);
}
}
this.$el.replaceChildren(...options);
}
if ('color' in data) this.$el.style.color = intToCol(data.color);
}
}
Renderer.register('select', SelectWidget);