mirror of https://github.com/keeweb/keeweb
extension connection dialog
parent
b2e828e7ef
commit
15936fcef0
@ -0,0 +1,62 @@
|
||||
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 };
|
@ -0,0 +1,10 @@
|
||||
.extension-connect {
|
||||
&__files {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
&__file {
|
||||
margin: $base-padding;
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
<div class="extension-connect">
|
||||
<p>{{#res 'extensionConnectIntro'}}{{extensionName}}{{/res}}</p>
|
||||
{{#unless identityVerified}}
|
||||
<p class="muted-color">{{res 'extensionConnectUnknownActivity'}}</p>
|
||||
{{/unless}}
|
||||
<div><label>{{res 'extensionConnectFiles'}}</label></div>
|
||||
<div class="extension-connect__files">
|
||||
{{#each files as |file|}}
|
||||
<div class="extension-connect__file">
|
||||
<input type="checkbox" class="input-base extension-connect__file-check"
|
||||
data-file="{{file.id}}"
|
||||
id="extension-connect__file-check--name-{{file.id}}"
|
||||
{{#if file.checked}}checked{{/if}}
|
||||
/>
|
||||
<label for="extension-connect__file-check--name-{{file.id}}">{{file.name}}</label>
|
||||
</div>
|
||||
{{/each}}
|
||||
<div class="extension-connect__file">
|
||||
<input type="checkbox" class="input-base extension-connect__file-check"
|
||||
data-file="all"
|
||||
id="extension-connect__file-check--all"
|
||||
{{#if allFiles}}checked{{/if}}
|
||||
/>
|
||||
<label for="extension-connect__file-check--all">{{res 'extensionConnectAllFiles'}}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div><label for="extension-connect__ask-get">{{res 'extensionConnectAskGet'}}</label></div>
|
||||
<select id="extension-connect__ask-get" class="input-base">
|
||||
<option value="multiple" {{#ifeq askGet 'multiple'}}selected{{/ifeq}}>
|
||||
{{res 'extensionConnectAskGetMultiple'}}
|
||||
</option>
|
||||
<option value="always" {{#ifeq askGet 'always'}}selected{{/ifeq}}>
|
||||
{{res 'extensionConnectAskGetAlways'}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<p>{{res 'extensionConnectSettingsAreForSession'}}</p>
|
||||
</div>
|
Loading…
Reference in New Issue