Skip to content

Commit

Permalink
Merge pull request #35 from Dyldog/feature-22
Browse files Browse the repository at this point in the history
Add 2 new commands that address feature #22
  • Loading branch information
Eforen authored Sep 12, 2022
2 parents b803f95 + b33d556 commit fd91265
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 12 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ Sections are used under each version as follows:
- Added beta versions (via [BRAT]).
- Added notifications for some failures.
- Added CHANGELOG.
- Added `Open New Zettel on Creation` checkbox on Model screen
- Added new command `New Child Zettel Note (Don't Open)` same as `New Child Zettel Note` but defaults `Open New Zettel on Creation` to false
- Added new command `New Sibling Zettel Note (Don't Open)` same as `New Sibling Zettel Note` but defaults `Open New Zettel on Creation` to false

### Fixed

Expand Down
100 changes: 88 additions & 12 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,8 @@ export default class NewZettel extends Plugin {
path: string,
title: string,
content: string,
placeCursorAtStartOfContent: boolean
placeCursorAtStartOfContent: boolean,
openZettel: boolean = false
) {
const app = this.app;
let titleContent = null;
Expand All @@ -256,6 +257,7 @@ export default class NewZettel extends Plugin {
if (active == null) {
return;
}
if(openZettel == false) return

await active.openFile(file);

Expand All @@ -277,7 +279,7 @@ export default class NewZettel extends Plugin {
return mdRegex.exec(name) != null && this.fileToId(name) !== "";
}

makeNoteFunction(idGenerator: (file: TFile) => string) {
makeNoteFunction(idGenerator: (file: TFile) => string, openNewFile: boolean = true) {
const file = this.app.workspace.getActiveFile();
if (file == null) {
return;
Expand Down Expand Up @@ -322,11 +324,13 @@ export default class NewZettel extends Plugin {
ch: positionCH + 1,
};
editor!.replaceRange(" " + newLink(title), position, position);
this.makeNote(nextPath(title), title, fileLink, true);
this.makeNote(nextPath(title), title, fileLink, true, openNewFile);
} else {
new NewZettelModal(this.app, (title: string) => {
new NewZettelModal(this.app, (title: string, options) => {
this.insertTextIntoCurrentNote(newLink(title));
this.makeNote(nextPath(title), title, fileLink, true);
this.makeNote(nextPath(title), title, fileLink, true, options.openNewZettel);
}, {
openNewZettel: openNewFile
}).open();
}
} else {
Expand Down Expand Up @@ -403,6 +407,22 @@ export default class NewZettel extends Plugin {
this.makeNoteFunction(this.makeNoteForNextChildOf);
},
});

this.addCommand({
id: "new-sibling-note-dont-open",
name: "New Sibling Zettel Note (Don't Open)",
callback: () => {
this.makeNoteFunction(this.makeNoteForNextSiblingOf, false);
},
});

this.addCommand({
id: "new-child-note-dont-open",
name: "New Child Zettel Note (Don't Open)",
callback: () => {
this.makeNoteFunction(this.makeNoteForNextChildOf, false);
},
});

this.addCommand({
id: "insert-zettel-link",
Expand Down Expand Up @@ -550,21 +570,41 @@ export default class NewZettel extends Plugin {
}
}

type ZettelModelCallback = (text: string, options: ZettelModelOptions) => void;
type ZettelModelOptions = {
openNewZettel: boolean
}

const MakeZettelModelOptionDefault: ()=>ZettelModelOptions = () => ({
openNewZettel: true
})

class NewZettelModal extends Modal {
public completion: (text: string) => void;
public completion: ZettelModelCallback;
private textBox: HTMLInputElement;
private openNewZettelCheckbox: HTMLInputElement;

constructor(app: App, completion: (title: string) => void) {
constructor(app: App, completion: ZettelModelCallback, options:ZettelModelOptions = MakeZettelModelOptionDefault()) {
super(app);
this.completion = completion;

/***********************************
** Model Title **
***********************************/
const { contentEl } = this;
contentEl.parentElement!.addClass("zettel-modal");
this.titleEl.setText("New zettel title...");

const container = contentEl.createEl("div", {
/***********************************
** Name and GO area **
***********************************/

// Setup the container
const main_container = contentEl.createEl("div", {
cls: "zettel-modal-container",
});

// Add the textBox
this.textBox = contentEl.createEl("input", {
type: "text",
cls: "zettel-modal-textbox",
Expand All @@ -576,17 +616,50 @@ class NewZettelModal extends Modal {
this.goTapped();
}
});
container.append(this.textBox);
main_container.append(this.textBox);

// Add the go button
const button = contentEl.createEl("input", {
type: "button",
value: "GO",
cls: "zettel-modal-button",
});
button.addEventListener("click", (e: Event) => this.goTapped());
container.append(button);
main_container.append(button);

contentEl.append(container);
contentEl.append(main_container);

/***********************************
** New Zettel Options **
***********************************/

// Setup the container
const options_container = contentEl.appendChild(
contentEl.createEl("div", {
cls: ["zettel-modal-container", "zettel-options-container"],
})
);
// Create label inside the container
const label = options_container.appendChild(
contentEl.createEl("label", {
cls: ["label", "zettel-label"]
})
)

// Create label
const openNewZettelCheckboxLabel = label.appendChild(contentEl.createEl("div", {cls:["labelText"]}))
openNewZettelCheckboxLabel.innerText = "Open New Zettel on Creation"

// Create checkbox inside the container
this.openNewZettelCheckbox = label.appendChild(
contentEl.createEl("input", {
type:"checkbox",
cls: ["zettel-modal-checkbox"],
value: options.openNewZettel.toString()
})
)
this.openNewZettelCheckbox.id = "zettel-modal-option-openZettel"
this.openNewZettelCheckbox.checked = options.openNewZettel
}

onOpen() {
Expand All @@ -597,7 +670,10 @@ class NewZettelModal extends Modal {

goTapped() {
const title = this.textBox.value;
this.completion(title);
const openNewZettel = this.openNewZettelCheckbox.checked
this.completion(title, {
openNewZettel
});
this.close();
}
}
Expand Down
23 changes: 23 additions & 0 deletions src/styles/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,26 @@
flex-grow: 100;
margin-right: 10px;
}

.zettel-modal-container.zettel-options-container {
margin-top: 0.5em;
display: flex;
flex-direction: column;
}

.zettel-modal-container.zettel-options-container .zettel-label {
display: flex;
align-items: center;
justify-content: center;
}

.zettel-modal-container.zettel-options-container .labelText {
display: flex;
flex-grow: 1;
justify-content: center;
}

.zettel-modal-container.zettel-options-container input[type=checkbox] {
width: 2em;
height: 2em;
}

0 comments on commit fd91265

Please sign in to comment.