From 4a6b3b3786578361067a73824f665e64b4cca12e Mon Sep 17 00:00:00 2001 From: Henrik Giesel Date: Thu, 6 May 2021 18:51:44 +0200 Subject: [PATCH] Clean up ButtonGroup and factor out extension logic --- ts/components/ButtonGroup.svelte | 153 +++++++++------------------ ts/components/ButtonGroupItem.svelte | 7 +- ts/components/ButtonToolbar.svelte | 15 +++ ts/components/StickyBar.svelte | 5 +- ts/components/registration.ts | 110 +++++++++++++++++++ ts/editor/EditorToolbar.svelte | 13 ++- ts/editor/bootstrap.scss | 1 + 7 files changed, 190 insertions(+), 114 deletions(-) create mode 100644 ts/components/ButtonToolbar.svelte create mode 100644 ts/components/registration.ts diff --git a/ts/components/ButtonGroup.svelte b/ts/components/ButtonGroup.svelte index c8ff5e9ea..8f10d89e5 100644 --- a/ts/components/ButtonGroup.svelte +++ b/ts/components/ButtonGroup.svelte @@ -4,148 +4,95 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html --> -
+
- {#each dynamic as item, i} - - + {#each $dynamicItems as item} + + {/each}
diff --git a/ts/components/ButtonGroupItem.svelte b/ts/components/ButtonGroupItem.svelte index b50e4024d..fc28a13e1 100644 --- a/ts/components/ButtonGroupItem.svelte +++ b/ts/components/ButtonGroupItem.svelte @@ -8,6 +8,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import type { ButtonRegistration } from "./buttons"; import { ButtonPosition } from "./buttons"; + import type { Register } from "./registration"; import { getContext, hasContext } from "svelte"; import { buttonGroupKey } from "./contextKeys"; @@ -43,8 +44,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html detach.subscribe((value: boolean) => (detach_ = value)); position.subscribe((value: ButtonPosition) => (position_ = value)); } else if (hasContext(buttonGroupKey)) { - const { registerButton } = getContext(buttonGroupKey); - const { detach, position } = registerButton(); + const registerComponent = getContext>( + buttonGroupKey + ); + const { detach, position } = registerComponent(); detach.subscribe((value: boolean) => (detach_ = value)); position.subscribe((value: ButtonPosition) => (position_ = value)); } else { diff --git a/ts/components/ButtonToolbar.svelte b/ts/components/ButtonToolbar.svelte new file mode 100644 index 000000000..82104ee05 --- /dev/null +++ b/ts/components/ButtonToolbar.svelte @@ -0,0 +1,15 @@ + + + + diff --git a/ts/components/StickyBar.svelte b/ts/components/StickyBar.svelte index 5f85b8802..f16d76300 100644 --- a/ts/components/StickyBar.svelte +++ b/ts/components/StickyBar.svelte @@ -10,9 +10,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -