refactor(svelte): add slot to controls, cleanup ControlButton types closes #3788

This commit is contained in:
moklick
2024-01-15 17:00:16 +01:00
parent 0fe2f2ae53
commit 4d8fc79d21
4 changed files with 31 additions and 8 deletions
@@ -1,12 +1,16 @@
<script lang="ts">
import cc from 'classcat';
let className: string;
let bgColor: string | undefined = undefined;
let bgColorHover: string | undefined = undefined;
let color: string | undefined = undefined;
let colorHover: string | undefined = undefined;
let borderColor: string | undefined = undefined;
import type { ControlButtonProps } from './types';
type $$Props = ControlButtonProps;
let className: $$Props['class'] = undefined;
let bgColor: $$Props['bgColor'] = undefined;
let bgColorHover: $$Props['bgColorHover'] = undefined;
let color: $$Props['color'] = undefined;
let colorHover: $$Props['colorHover'] = undefined;
let borderColor: $$Props['borderColor'] = undefined;
export { className as class };
</script>
@@ -74,6 +74,7 @@
data-testid="svelte-flow__controls"
aria-label={ariaLabel ?? 'Svelte Flow controls'}
>
<slot name="before" />
{#if showZoom}
<ControlButton
on:click={onZoomInHandler}
@@ -118,4 +119,6 @@
{#if isInteractive}<UnlockIcon />{:else}<LockIcon />{/if}
</ControlButton>
{/if}
<slot />
<slot name="after" />
</Panel>
@@ -1,3 +1,4 @@
import type { HTMLButtonAttributes } from 'svelte/elements';
import type { PanelPosition } from '@xyflow/system';
export type ControlsProps = {
@@ -11,3 +12,12 @@ export type ControlsProps = {
buttonColorHover?: string;
'aria-label'?: string;
};
export type ControlButtonProps = HTMLButtonAttributes & {
class?: string;
bgColor?: string;
bgColorHover?: string;
color?: string;
colorHover?: string;
borderColor?: string;
};