From e5d11ac547e5f9817ef1b03965419d74e7582708 Mon Sep 17 00:00:00 2001 From: Henrik Giesel Date: Tue, 18 May 2021 16:32:29 +0200 Subject: [PATCH] WIP: Use our components in deckoptions sticky bar --- ts/components/ButtonDropdown.svelte | 2 +- ts/components/DropdownDivider.svelte | 5 +++ ts/components/DropdownMenu.svelte | 2 +- ts/components/LabelButton.svelte | 11 +++-- ts/components/SelectButton.svelte | 29 +++++-------- ts/components/SelectOption.svelte | 7 +-- ts/components/WithTheming.svelte | 4 +- ts/deckoptions/BUILD.bazel | 1 + ts/deckoptions/ConfigSelector.svelte | 51 +++++++++++++--------- ts/deckoptions/OptionsDropdown.svelte | 62 ++++++++++++--------------- ts/deckoptions/index.ts | 25 ++++++++--- ts/editor/TemplateButtons.svelte | 2 +- ts/editor/toolbar.ts | 6 +-- 13 files changed, 115 insertions(+), 92 deletions(-) create mode 100644 ts/components/DropdownDivider.svelte diff --git a/ts/components/ButtonDropdown.svelte b/ts/components/ButtonDropdown.svelte index c4512842f..530defa1a 100644 --- a/ts/components/ButtonDropdown.svelte +++ b/ts/components/ButtonDropdown.svelte @@ -9,7 +9,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import WithTheming from "./WithTheming.svelte"; import ButtonToolbar from "./ButtonToolbar.svelte"; - export let id: string | undefined; + export let id: string; let className = ""; export { className as class }; diff --git a/ts/components/DropdownDivider.svelte b/ts/components/DropdownDivider.svelte new file mode 100644 index 000000000..7f3db50bf --- /dev/null +++ b/ts/components/DropdownDivider.svelte @@ -0,0 +1,5 @@ + + diff --git a/ts/components/DropdownMenu.svelte b/ts/components/DropdownMenu.svelte index c988ff1dc..b3cc9e1b4 100644 --- a/ts/components/DropdownMenu.svelte +++ b/ts/components/DropdownMenu.svelte @@ -6,7 +6,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import { setContext } from "svelte"; import { dropdownKey } from "./contextKeys"; - export let id: string | undefined; + export let id: string; setContext(dropdownKey, null); diff --git a/ts/components/LabelButton.svelte b/ts/components/LabelButton.svelte index b138dee12..1c89e5beb 100644 --- a/ts/components/LabelButton.svelte +++ b/ts/components/LabelButton.svelte @@ -11,6 +11,11 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html export let id: string | undefined = undefined; let className: string = ""; export { className as class }; + export let theme = "anki"; + + function extendClassName(className: string, theme: string): string { + return `btn ${theme !== "anki" ? `btn-${theme}` : ""}${className}`; + } export let tooltip: string | undefined = undefined; export let active = false; @@ -48,11 +53,11 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - - - + + + + + Add Config + Rename Config + Remove Config + + save(true)}> + Save to All Children + + + + + diff --git a/ts/deckoptions/index.ts b/ts/deckoptions/index.ts index 7af7871f0..52f0b1d19 100644 --- a/ts/deckoptions/index.ts +++ b/ts/deckoptions/index.ts @@ -10,20 +10,33 @@ import SpinBoxFloat from "./SpinBoxFloat.svelte"; import EnumSelector from "./EnumSelector.svelte"; import CheckBox from "./CheckBox.svelte"; +import { nightModeKey } from "components/contextKeys"; + export async function deckOptions( target: HTMLDivElement, deckId: number ): Promise { - checkNightMode(); - await setupI18n({ - modules: [ModuleName.SCHEDULING, ModuleName.ACTIONS, ModuleName.DECK_CONFIG], - }); - const info = await getDeckOptionsInfo(deckId); + const [info] = await Promise.all([ + getDeckOptionsInfo(deckId), + setupI18n({ + modules: [ + ModuleName.SCHEDULING, + ModuleName.ACTIONS, + ModuleName.DECK_CONFIG, + ], + }), + ]); + + const nightMode = checkNightMode(); + const context = new Map(); + context.set(nightModeKey, nightMode); + const state = new DeckOptionsState(deckId, info); return new DeckOptionsPage({ target, props: { state }, - }); + context, + } as any); } export const deckConfigComponents = { diff --git a/ts/editor/TemplateButtons.svelte b/ts/editor/TemplateButtons.svelte index 003cbfcb7..eb88d2473 100644 --- a/ts/editor/TemplateButtons.svelte +++ b/ts/editor/TemplateButtons.svelte @@ -62,7 +62,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html - + {@html functionIcon} diff --git a/ts/editor/toolbar.ts b/ts/editor/toolbar.ts index 4ad858d41..856d69014 100644 --- a/ts/editor/toolbar.ts +++ b/ts/editor/toolbar.ts @@ -20,7 +20,7 @@ export function initToolbar(i18n: Promise): Promise { toolbarResolve = resolve; }); - document.addEventListener("DOMContentLoaded", () => { + document.addEventListener("DOMContentLoaded", () => i18n.then(() => { const target = document.body; const anchor = document.getElementById("fields")!; @@ -33,8 +33,8 @@ export function initToolbar(i18n: Promise): Promise { ); toolbarResolve(new EditorToolbar({ target, anchor, context } as any)); - }); - }); + }) + ); return toolbarPromise; }