bbpro
Version:
BrowserBox - remote browser isolation tool
60 lines (47 loc) • 1.5 kB
JavaScript
class Component extends Base {
UpdateSelected(clickEvent) {
const {form, state, name} = this.getSelected(clickEvent);
name.firstName = form.firstname.value;
name.surname = form.surname.value;
setState('data', state);
}
DeleteSelected(clickEvent) {
const {name, state} = this.getSelected(clickEvent);
state.crud.names.splice(state.crud.names.findIndex(({key}) => key === name.key), 1);
state.crud.selected = '';
setState('data', state);
}
AddName(clickEvent) {
const form = clickEvent.target.form;
const state = cloneState('data');
const name = {
key: Math.random()+'',
firstName: form.firstname.value,
surname: form.surname.value
}
state.crud.names.push(name);
setState('data', state);
}
SetSelected(inputEvent) {
let selected = '';
if ( inputEvent.target.selectedIndex !== -1 ) {
selected = inputEvent.target.selectedOptions[0].dataset.key;
}
const state = cloneState('data');
state.crud.selected = selected;
setState('data', state);
}
SetPrefix(inputEvent) {
const prefix = inputEvent.target.value;
const state = cloneState('data');
state.crud.prefix = prefix;
state.crud.selected = '';
setState('data', state);
}
getSelected(clickEvent) {
const form = clickEvent.target.form;
const state = cloneState('data');
const name = state.crud.names.find(({key}) => key === state.crud.selected);
return {form, state, name};
}
}