keeweb/app/scripts/views/extension/extension-connect-view.js

63 lines
1.7 KiB
JavaScript

import { View } from 'framework/views/view';
import template from 'templates/extension/extension-connect.hbs';
class ExtensionConnectView extends View {
template = template;
events = {
'change #extension-connect__ask-get': 'askGetChanged',
'change .extension-connect__file-check': 'fileChecked'
};
constructor(model) {
super(model);
this.config = {
askGet: this.model.askGet,
allFiles: this.model.allFiles,
files: this.model.files.filter((f) => f.checked).map((f) => f.id)
};
}
render() {
super.render({
...this.model,
...this.config,
files: this.model.files.map((f) => ({
id: f.id,
name: f.name,
checked: this.config.files.includes(f.id)
}))
});
}
fileChecked(e) {
const fileId = e.target.dataset.file;
const checked = e.target.checked;
if (fileId === 'all') {
this.config.allFiles = checked;
this.config.files = this.model.files.map((f) => f.id);
} else {
if (checked) {
this.config.files.push(fileId);
} else {
this.config.files = this.config.files.filter((f) => f !== fileId);
this.config.allFiles = false;
}
}
this.render();
const atLeastOneFileSelected = this.config.files.length > 0 || this.config.allFiles;
const allowButton = document.querySelector('.modal button[data-result=yes]');
allowButton.classList.toggle('hide', !atLeastOneFileSelected);
}
askGetChanged(e) {
this.config.askGet = e.target.value;
}
}
export { ExtensionConnectView };