keeweb/app/scripts/views/fields/field-view-select.js

54 lines
1.2 KiB
JavaScript
Raw Normal View History

2019-09-15 14:16:32 +02:00
import { FieldView } from 'views/fields/field-view';
2019-09-18 07:08:23 +02:00
import { escape } from 'util/fn';
2016-06-05 16:49:00 +02:00
2019-09-16 19:55:06 +02:00
class FieldViewSelect extends FieldView {
readonly = true;
2016-07-17 13:30:38 +02:00
2019-08-18 10:17:09 +02:00
renderValue(value) {
2019-08-16 23:05:39 +02:00
return (
'<select>' +
value
2020-06-01 16:53:51 +02:00
.map((opt) => {
2019-08-16 23:05:39 +02:00
return (
'<option ' +
'value="' +
2019-09-18 07:08:23 +02:00
escape(opt.id) +
2019-08-16 23:05:39 +02:00
'" ' +
(opt.selected ? 'selected ' : '') +
'>' +
2019-09-18 07:08:23 +02:00
escape(opt.value) +
2019-08-16 23:05:39 +02:00
'</option>'
);
})
.join('') +
'</select>'
);
2019-09-16 19:55:06 +02:00
}
2016-06-05 16:49:00 +02:00
2019-08-18 10:17:09 +02:00
render() {
2019-09-16 19:55:06 +02:00
super.render();
2016-06-05 16:49:00 +02:00
this.valueEl.addClass('details__field-value--select');
2020-06-01 16:53:51 +02:00
this.valueEl.find('select:first').change((e) => {
2016-07-17 13:30:38 +02:00
this.triggerChange({ val: e.target.value, field: this.model.name });
2016-06-05 16:49:00 +02:00
});
2019-09-16 19:55:06 +02:00
}
2016-06-05 16:49:00 +02:00
2019-09-16 19:55:06 +02:00
fieldLabelClick() {}
2016-06-05 16:49:00 +02:00
2019-09-16 19:55:06 +02:00
fieldValueClick() {}
2016-06-05 16:49:00 +02:00
2019-09-16 19:55:06 +02:00
edit() {}
2016-06-05 16:49:00 +02:00
2019-09-16 19:55:06 +02:00
startEdit() {}
2016-06-05 16:49:00 +02:00
2019-08-18 10:17:09 +02:00
endEdit(newVal, extra) {
2016-06-05 16:49:00 +02:00
if (!this.editing) {
return;
}
delete this.input;
2019-09-16 19:55:06 +02:00
super.endEdit(newVal, extra);
2016-06-05 16:49:00 +02:00
}
2019-09-16 19:55:06 +02:00
}
2016-06-05 16:49:00 +02:00
2019-09-15 14:16:32 +02:00
export { FieldViewSelect };