Skip to content

Commit 099a80b

Browse files
committed
4.2.0
- Close #33 - Added Collapsible by Default and Default Collapse Type settings
1 parent e21db64 commit 099a80b

File tree

8 files changed

+61
-7
lines changed

8 files changed

+61
-7
lines changed

@types/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ export interface ISettingsData {
1919
};
2020
syntaxHighlight: boolean;
2121
copyButton: boolean;
22+
autoCollapse: boolean;
23+
defaultCollapseType: string;
2224
version: string;
2325
}
2426
export declare class ObsidianAdmonitionPlugin extends Plugin_2 {
2527
removeAdmonition: (admonition: Admonition) => Promise<void>;
2628
admonitions: { [admonitionType: string]: Admonition };
27-
/* userAdmonitions: { [admonitionType: string]: Admonition };
29+
/* userAdmonitions: { [admonitionType: string]: Admonition };
2830
syntaxHighlight: boolean; */
2931
data: ISettingsData;
3032
turnOnSyntaxHighlighting: (types?: string[]) => void;

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ Use the `collapse` parameter to create a collapsible admonition.
7070

7171
If a blank title is provided, the collapse parameter will not do anything.
7272

73+
Admonitions may be set to be collapsible by default in settings.
74+
7375
![](https://raw.githubusercontent.com/valentine195/obsidian-admonition/master/images/collapse.gif)
7476

7577
## Nesting Admonitions
@@ -281,6 +283,18 @@ An icon without a title will have this CSS:
281283

282284
Turns on an experimental mode that uses Obsidian's markdown syntax highlighter inside admonition code blocks.
283285

286+
### Collapsible By Default
287+
288+
Admonitions will be automatically rendered as collapsible (open) by default.
289+
290+
If set, use `collapse: none` in an admonition block to override.
291+
292+
### Default Collapse Type
293+
294+
**This setting is only available if Collapsible By Default is ON**
295+
296+
Admonitions will be automatically rendered as opened or closed when collapsible by default.
297+
284298
### Copy Button
285299

286300
Adds a "copy content" button to every admonition block.

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"id": "obsidian-admonition",
33
"name": "Admonition",
4-
"version": "4.1.7",
4+
"version": "4.2.0",
55
"minAppVersion": "0.11.0",
66
"description": "Admonition block-styled content for Obsidian.md",
77
"author": "Jeremy Valentine",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "obsidian-admonition",
3-
"version": "4.1.7",
3+
"version": "4.2.0",
44
"description": "Admonition block-styled content for Obsidian.md",
55
"main": "main.js",
66
"scripts": {

src/main.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ const DEFAULT_APP_SETTINGS: ISettingsData = {
5656
userAdmonitions: {},
5757
syntaxHighlight: false,
5858
copyButton: false,
59-
version: ""
59+
version: "",
60+
autoCollapse: false,
61+
defaultCollapseType: "open"
6062
};
6163

6264
const ADMONITION_MAP: {
@@ -308,6 +310,12 @@ export default class ObsidianAdmonition
308310
content = split.join("\n");
309311
}
310312

313+
if (this.data.autoCollapse && !collapse) {
314+
collapse = this.data.defaultCollapseType ?? "open";
315+
} else if (collapse.trim() === "none") {
316+
collapse = "";
317+
}
318+
311319
let admonitionElement = getAdmonitionElement(
312320
type,
313321
title,

src/settings.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,36 @@ export default class AdmonitionSetting extends PluginSettingTab {
6565
await this.plugin.saveSettings();
6666
});
6767
});
68+
new Setting(containerEl)
69+
.setName("Collapsible by Default")
70+
.setDesc(
71+
"All admonitions will be collapsible by default. Use collapse: none to prevent."
72+
)
73+
.addToggle((t) => {
74+
t.setValue(this.plugin.data.autoCollapse).onChange(
75+
async (v) => {
76+
this.plugin.data.autoCollapse = v;
77+
this.display();
78+
await this.plugin.saveSettings();
79+
}
80+
);
81+
});
82+
if (this.plugin.data.autoCollapse) {
83+
new Setting(containerEl)
84+
.setName("Default Collapse Type")
85+
.setDesc(
86+
"Collapsible admonitions will be either opened or closed."
87+
)
88+
.addDropdown((d) => {
89+
d.addOption("open", "open");
90+
d.addOption("closed", "closed");
91+
d.setValue(this.plugin.data.defaultCollapseType);
92+
d.onChange(async (v) => {
93+
this.plugin.data.defaultCollapseType = v;
94+
await this.plugin.saveSettings();
95+
});
96+
});
97+
}
6898
new Setting(containerEl)
6999
.setName("Add Copy Button")
70100
.setDesc("Add a 'copy content' button to admonitions.")
@@ -291,7 +321,6 @@ class SettingsModal extends Modal {
291321
modal.onClose = validate;
292322

293323
text.inputEl.onblur = validate;
294-
295324
});
296325

297326
const desc = iconSetting.descEl.createDiv();

src/util.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export function getParametersFromSource(type: string, src: string) {
6161
Object.prototype.hasOwnProperty.call(params, "collapse") &&
6262
(params.collapse.length == 0 ||
6363
params.collapse === undefined ||
64-
collapse !== "open")
64+
(collapse !== "open" && collapse !== "none"))
6565
) {
6666
collapse = "closed";
6767
}

versions.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
"3.2.2": "0.11.0",
77
"3.3.4": "0.11.0",
88
"4.0.1": "0.11.0",
9-
"4.1.7": "0.11.0"
9+
"4.1.7": "0.11.0",
10+
"4.2.0": "0.11.0"
1011
}

0 commit comments

Comments
 (0)