Skip to content

Commit c821446

Browse files
committed
Add toggle for column blur setting
Fixes #3
1 parent 9878839 commit c821446

6 files changed

Lines changed: 52 additions & 11 deletions

File tree

data.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"backgroundBlur": 0,
2828
"columnTransparency": 100,
2929
"columnBlur": 8,
30+
"enableColumnBlur": false,
3031
"migrationGroupProperty": "status",
3132
"migrationQueryProperty": "legacyKanbanSource",
3233
"columnNameMaxLength": 40

src/kanban-view.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,7 @@ export class KanbanView extends BasesView {
887887
}
888888

889889
private applyBackgroundStyles(): void {
890+
const columnBlurEnabled = this.plugin.settings.enableColumnBlur;
890891
const config = {
891892
imageInput: this.config?.get(BACKGROUND_IMAGE_OPTION_KEY),
892893
brightness:
@@ -900,12 +901,15 @@ export class KanbanView extends BasesView {
900901
(this.config?.get(COLUMN_TRANSPARENCY_OPTION_KEY) as
901902
| number
902903
| undefined) ?? this.plugin.settings.columnTransparency,
903-
columnBlur:
904+
columnBlur: columnBlurEnabled
905+
?
904906
(this.config?.get(COLUMN_BLUR_OPTION_KEY) as number | undefined) ??
905-
this.plugin.settings.columnBlur,
907+
this.plugin.settings.columnBlur
908+
: 0,
906909
};
907910

908911
const styles = resolveBackgroundStyles(this.app as App, config);
912+
this.rootEl.classList.toggle("bases-kanban-column-blur-enabled", columnBlurEnabled);
909913

910914
this.rootEl.style.setProperty(
911915
"--bases-kanban-column-transparency",
@@ -2292,7 +2296,7 @@ export class KanbanView extends BasesView {
22922296
this.plugin.unregisterKanbanView(this);
22932297
}
22942298

2295-
static getViewOptions() {
2296-
return getKanbanViewOptions();
2299+
static getViewOptions(columnBlurEnabled: boolean) {
2300+
return getKanbanViewOptions(columnBlurEnabled);
22972301
}
22982302
}

src/kanban-view/options.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ import {
1111
PINNED_COLUMNS_OPTION_KEY,
1212
} from "./constants";
1313

14-
export function getKanbanViewOptions() {
14+
export function getKanbanViewOptions(columnBlurEnabled: boolean) {
15+
const columnBlurDisplayName = columnBlurEnabled
16+
? "Column blur"
17+
: "Column blur (enable in the settings)";
18+
1519
return [
1620
{
1721
key: COLUMN_ORDER_OPTION_KEY,
@@ -81,11 +85,11 @@ export function getKanbanViewOptions() {
8185
},
8286
{
8387
key: COLUMN_BLUR_OPTION_KEY,
84-
displayName: "Column blur",
88+
displayName: columnBlurDisplayName,
8589
type: "slider" as const,
86-
default: 8,
90+
default: columnBlurEnabled ? 8 : 0,
8791
min: 0,
88-
max: 20,
92+
max: columnBlurEnabled ? 20 : 0,
8993
step: 1,
9094
},
9195
{

src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export default class BasesKanbanPlugin extends Plugin {
8484
icon: "lucide-kanban",
8585
factory: (controller, containerEl) =>
8686
new KanbanView(controller, containerEl, this),
87-
options: () => KanbanView.getViewOptions(),
87+
options: () => KanbanView.getViewOptions(this.settings.enableColumnBlur),
8888
});
8989
}
9090

src/settings.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export interface BasesKanbanSettings {
4343
backgroundBlur: number;
4444
columnTransparency: number;
4545
columnBlur: number;
46+
enableColumnBlur: boolean;
4647

4748
// Migration
4849
migrationGroupProperty: string;
@@ -91,6 +92,7 @@ export const DEFAULT_SETTINGS: BasesKanbanSettings = {
9192
backgroundBlur: 0,
9293
columnTransparency: 100,
9394
columnBlur: 8,
95+
enableColumnBlur: false,
9496

9597
// Migration
9698
migrationGroupProperty: "status",
@@ -583,19 +585,45 @@ export class KanbanSettingTab extends PluginSettingTab {
583585
);
584586

585587
new Setting(containerEl)
588+
.setName("Enable column blur")
589+
.setDesc(
590+
"Turns on column backdrop blur globally. This can cause rendering artifacts on macOS when Obsidian translucent window is enabled.",
591+
)
592+
.addToggle((toggle) =>
593+
toggle
594+
.setValue(this.plugin.settings.enableColumnBlur)
595+
.onChange(async (value) => {
596+
this.plugin.settings.enableColumnBlur = value;
597+
await this.plugin.saveSettings();
598+
this.display();
599+
}),
600+
);
601+
602+
const isColumnBlurEnabled = this.plugin.settings.enableColumnBlur;
603+
const disabledReason = "Enable column blur to adjust this slider.";
604+
const columnBlurDescription = isColumnBlurEnabled
605+
? "Blur amount for column backgrounds (0-20px)"
606+
: "Blur amount for column backgrounds (0-20px). Enable column blur first.";
607+
608+
const columnBlurSetting = new Setting(containerEl)
586609
.setName("Column blur")
587-
.setDesc("Blur amount for column backgrounds (0-20px)")
610+
.setDesc(columnBlurDescription)
588611
.addSlider((slider) =>
589612
slider
590613
.setLimits(0, 20, 1)
591614
.setValue(this.plugin.settings.columnBlur)
592615
.setDynamicTooltip()
616+
.setDisabled(!isColumnBlurEnabled)
593617
.onChange(async (value) => {
594618
this.plugin.settings.columnBlur = value;
595619
await this.plugin.saveSettings();
596620
}),
597621
);
598622

623+
if (!isColumnBlurEnabled) {
624+
columnBlurSetting.settingEl.title = disabledReason;
625+
}
626+
599627
new Setting(containerEl).setName("Migration").setHeading();
600628

601629
new Setting(containerEl)

styles.css

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,14 @@
5353
overflow: hidden;
5454
position: relative;
5555
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.05);
56-
backdrop-filter: blur(var(--bases-kanban-column-blur, 8px));
56+
backdrop-filter: none;
5757
border: 1px solid var(--background-modifier-border);
5858
}
5959

60+
.bases-kanban-container.bases-kanban-column-blur-enabled .bases-kanban-column {
61+
backdrop-filter: blur(var(--bases-kanban-column-blur, 8px));
62+
}
63+
6064
.bases-kanban-placeholder {
6165
color: var(--text-muted);
6266
text-align: center;

0 commit comments

Comments
 (0)