mirror of https://github.com/keeweb/keeweb.git
63 lines
1.7 KiB
JavaScript
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 };
|