Many changes. See further for more details.

- Notification API
- New Modal API
- Vault JSON import and export
- Improved Page Cache
- Adding Context Menu API
- Adding Vault Deletion
- Fixing Sync Issues
- Implementing Share Target API
- Implementing Share To API
This commit is contained in:
Fabian
2019-03-04 21:48:31 -05:00
parent 313f5aee97
commit 3ef36ab6ca
38 changed files with 2117 additions and 1852 deletions

View File

@ -1,39 +1,48 @@
import { h, Component } from 'preact';
import "./modal.scss"
import { Modal } from './Modal';
import Modal from './Modal';
export class YesNoModal extends Component<{ title: string, onResult: (result: boolean | undefined) => void }, {}> {
constructor(props) {
super(props);
this.onKeyDown = this.onKeyDown.bind(this);
export class YesNoModal extends Modal<boolean> {
constructor(protected title: string) {
super();
}
componentWillMount() {
window.addEventListener("keydown", this.onKeyDown);
private static IMD = class extends Component<{ modal: YesNoModal }, {}> {
constructor(props) {
super(props);
this.onKeyDown = this.onKeyDown.bind(this);
}
componentWillMount() {
window.addEventListener("keydown", this.onKeyDown);
}
componentWillUnmount() {
window.removeEventListener("keydown", this.onKeyDown);
}
onKeyDown(evt: KeyboardEvent) {
if (evt.keyCode === 74 || evt.keyCode === 89) this.props.modal.result(true)
else if (evt.keyCode === 78) this.props.modal.result(false)
}
render() {
return <Modal.BaseModal modal={this.props.modal}>
<fieldset style="border:none;">
<div style="text-align: right;">
<button class="primary" style="display: inline-block;" onClick={() => {
this.props.modal.result(false);
}}>No</button>
<button class="primary" style="display: inline-block;" onClick={() => {
this.props.modal.result(true);
}}>Yes</button>
</div>
</fieldset>
</Modal.BaseModal>
}
}
componentWillUnmount() {
window.removeEventListener("keydown", this.onKeyDown);
}
onKeyDown(evt: KeyboardEvent) {
if (evt.keyCode === 74 || evt.keyCode === 89) this.props.onResult(true)
else if (evt.keyCode === 78) this.props.onResult(false)
}
render() {
return <Modal title={this.props.title} onClose={() => this.props.onResult(undefined)}>
<fieldset style="border:none;">
<div style="text-align: right;">
<button class="primary" style="display: inline-block;" onClick={() => {
this.props.onResult(false);
}}>No</button>
<button class="primary" style="display: inline-block;" onClick={() => {
this.props.onResult(true);
}}>Yes</button>
</div>
</fieldset>
</Modal>
getComponent() {
return <YesNoModal.IMD modal={this} />
}
}