From f581f840653be4893abcae80f6afe8c0716ba16a Mon Sep 17 00:00:00 2001 From: KoloMl Date: Sun, 5 Apr 2026 17:52:15 +0400 Subject: [PATCH] Presets: Added conditional presets option Now presets can be configured to show up only when specific tag is provided. --- src/lib/extension/entities/TagEditorPreset.ts | 4 ++++ src/lib/extension/transporting/exporters.ts | 2 ++ src/lib/extension/transporting/validators.ts | 2 ++ .../features/presets/[id]/edit/+page.svelte | 17 +++++++++++++++++ 4 files changed, 25 insertions(+) diff --git a/src/lib/extension/entities/TagEditorPreset.ts b/src/lib/extension/entities/TagEditorPreset.ts index d904d5f..681fc61 100644 --- a/src/lib/extension/entities/TagEditorPreset.ts +++ b/src/lib/extension/entities/TagEditorPreset.ts @@ -3,6 +3,8 @@ import StorageEntity from "$lib/extension/base/StorageEntity"; interface TagEditorPresetSettings { name: string; tags: string[]; + conditional: boolean; + requiredTags: string[]; } export default class TagEditorPreset extends StorageEntity { @@ -10,6 +12,8 @@ export default class TagEditorPreset extends StorageEntity([]); + let isConditional = $state(false); + let requiredTags = $state([]); $effect(() => { if (presetId === 'new') { @@ -39,6 +42,8 @@ presetName = targetPreset.settings.name; tagsList = [...targetPreset.settings.tags].sort((a, b) => a.localeCompare(b)); + isConditional = targetPreset.settings.conditional; + requiredTags = [...targetPreset.settings.requiredTags].sort((a, b) => a.localeCompare(b)); }); async function savePreset() { @@ -49,6 +54,8 @@ targetPreset.settings.name = presetName; targetPreset.settings.tags = [...tagsList]; + targetPreset.settings.conditional = isConditional; + targetPreset.settings.requiredTags = [...requiredTags]; await targetPreset.save(); await goto(`/features/presets/${targetPreset.id}`); @@ -67,6 +74,16 @@ + + + Show this preset only when specified tags are provided. + + + {#if isConditional} + + + + {/if}