diff --git a/package-lock.json b/package-lock.json index 0ef3398..26d17f2 100755 --- a/package-lock.json +++ b/package-lock.json @@ -5245,6 +5245,15 @@ "resolved": "https://npm.hibas123.de/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sass": { + "version": "1.29.0", + "resolved": "https://npm.hibas123.de/sass/-/sass-1.29.0.tgz", + "integrity": "sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, "sax": { "version": "1.2.4", "resolved": "https://npm.hibas123.de/sax/-/sax-1.2.4.tgz", diff --git a/package.json b/package.json index e5619fa..bafd199 100755 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "@types/codemirror": "0.0.99", "@types/lodash.clonedeep": "^4.5.6", "@types/uuid": "^8.3.0", + "sass": "^1.29.0", "typescript": "^4.1.2" } } diff --git a/src/components/routes/settings/Settings.tsx b/src/components/routes/settings/Settings.tsx index 1c725bc..c42882f 100644 --- a/src/components/routes/settings/Settings.tsx +++ b/src/components/routes/settings/Settings.tsx @@ -15,16 +15,10 @@ export default class SettingsPage extends Page< return (
- history.back()}> +
history.back()}> - -

Navigation.setPage("/")} - > - Settings -

+
+ Navigation.setPage("/")}>Settings
diff --git a/src/components/routes/vault/Entry copy.tsx b/src/components/routes/vault/Entry copy.tsx deleted file mode 100644 index 35ece4c..0000000 --- a/src/components/routes/vault/Entry copy.tsx +++ /dev/null @@ -1,209 +0,0 @@ -import { h, Component } from "preact"; -import { IVault, ViewNote } from "../../../notes"; -import { Trash2 as Trash, X, Save } from "preact-feather"; - -import Navigation from "../../../navigation"; -import { YesNoModal } from "../../modals/YesNoModal"; -import Notifications, { MessageType } from "../../../notifications"; - -const minRows = 3; -export default class EntryComponent extends Component< - { vault: Promise; id: string | undefined; note: string | undefined }, - { title: string; changed: boolean } -> { - private text: string = ""; - private vault: IVault; - // private lineHeight: number = 24; - private note: ViewNote; - - private rows: number = minRows; - - private skip_save: boolean = false; - - private inputElm: HTMLInputElement; - - constructor(props) { - super(props); - this.state = { changed: false, title: "" }; - this.textAreaChange = this.textAreaChange.bind(this); - this.textAreaKeyPress = this.textAreaKeyPress.bind(this); - } - - private toVault() { - history.back(); - } - - componentDidMount() { - this.inputElm.focus(); - } - - async componentWillMount() { - this.text = ""; - this.vault = undefined; - this.note = undefined; - this.rows = minRows; - this.skip_save = false; - this.setState({ changed: false, title: "" }); - try { - this.skip_save = false; - - this.vault = await this.props.vault; - let note: ViewNote; - let changed = false; - if (this.props.id) note = await this.vault.getNote(this.props.id); - else { - note = this.vault.newNote(); - if (this.props.note) { - note.__value = this.props.note; - changed = true; - } - } - - if (!note) { - Notifications.sendNotification( - "Note not found!", - MessageType.ERROR - ); - } else { - this.note = note; - this.text = note.__value; - let rows = this.getRows(this.text); - if (rows !== this.rows) { - this.rows = rows; - } - let [title] = this.text.split("\n", 1); - this.setState({ title, changed }); - } - } catch (err) { - Notifications.sendError(err); - } - } - - private async save() { - try { - if (this.state.changed) { - this.note.__value = this.text; - await this.vault.saveNote(this.note); - this.setState({ changed: false }); - } - } catch (err) { - Notifications.sendError(err); - } - } - - componentWillUnmount() { - if (!this.skip_save) this.save(); - } - - strToNr(value: string) { - let match = value.match(/\d/g); - return Number(match.join("")); - } - - getRows(value: string) { - const lines = (value.match(/\r?\n/g) || "").length + 1; - return Math.max(lines + 1, minRows); - } - - textAreaChange(evt: KeyboardEvent) { - if (evt.keyCode === 17 || evt.keyCode === 27) return; //No character, so not relevant for this function - if (!this.state.changed && this.textAreaKeyPress(evt)) - this.setState({ changed: true }); - - let target = evt.target as HTMLTextAreaElement; - let value = target.value; - - this.text = value; - - let [title] = value.split("\n", 1); - if (title !== this.state.title) this.setState({ title }); - - let rows = this.getRows(value); - if (rows !== this.rows) { - target.rows = rows; - this.rows = rows; - } - } - - async exitHandler() { - if (this.state.changed) { - let modal = new YesNoModal("Really want to quit?"); - let res = await modal.getResult(); - if (res === true) { - this.skip_save = true; - this.toVault(); - } - } else this.toVault(); - } - - textAreaKeyPress(evt: KeyboardEvent) { - console.log(evt); - if ((evt.keyCode === 83 || evt.keyCode === 13) && evt.ctrlKey) { - evt.preventDefault(); - this.save(); - return false; - } else if (evt.keyCode === 27) { - evt.preventDefault(); - this.exitHandler(); - return false; - } - return true; - } - - render() { - const save_handler = async () => { - await this.save(); - Navigation.setPage( - "/vault", - { id: this.vault.id }, - { entry: "false" }, - true - ); - this.toVault(); - }; - - const delete_handler = async () => { - await this.vault.deleteNote(this.props.id); - this.toVault(); - }; - - console.log("Rerender"); - - return ( -
-
- this.exitHandler()}> - - - {this.state.changed ? ( - save_handler()} - > - - - ) : undefined} -

- {this.state.title} -

- delete_handler()}> - - -
-
-