Associate Switch labels with their respective switches

This commit is contained in:
Henrik Giesel 2021-06-21 18:15:41 +02:00
parent 909502bb0a
commit 292ba665af
4 changed files with 25 additions and 8 deletions

View file

@ -5,6 +5,9 @@
<script lang="ts"> <script lang="ts">
import { onMount, createEventDispatcher } from "svelte"; import { onMount, createEventDispatcher } from "svelte";
let forId: string;
export { forId as for };
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
let spanRef: HTMLSpanElement; let spanRef: HTMLSpanElement;
@ -14,4 +17,4 @@
}); });
</script> </script>
<span bind:this={spanRef}><slot /></span> <label bind:this={spanRef} for={forId}><slot /></label>

View file

@ -3,12 +3,19 @@ Copyright: Ankitects Pty Ltd and contributors
License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
--> -->
<script lang="ts"> <script lang="ts">
export let id: string | undefined;
export let value: boolean; export let value: boolean;
export let disabled = false; export let disabled = false;
</script> </script>
<div class="form-check form-switch"> <div class="form-check form-switch">
<input class="form-check-input" type="checkbox" bind:checked={value} {disabled} /> <input
{id}
class="form-check-input"
type="checkbox"
bind:checked={value}
{disabled}
/>
</div> </div>
<style lang="scss"> <style lang="scss">

View file

@ -13,15 +13,18 @@
export let value: boolean; export let value: boolean;
export let defaultValue: boolean; export let defaultValue: boolean;
export let markdownTooltip: string | undefined = undefined; export let markdownTooltip: string | undefined = undefined;
const id = Math.random().toString(36).substring(2);
</script> </script>
<Row> <Row>
<Col> <Col>
{#if markdownTooltip}<TooltipLabel {markdownTooltip}><slot /></TooltipLabel {#if markdownTooltip}<TooltipLabel for={id} {markdownTooltip}
>{:else}<Label><slot /></Label>{/if} ><slot /></TooltipLabel
>{:else}<Label for={id}><slot /></Label>{/if}
</Col> </Col>
<Col grow={false}> <Col grow={false}>
<Switch bind:value /> <Switch {id} bind:value />
<RevertButton bind:value {defaultValue} /> <RevertButton bind:value {defaultValue} />
</Col> </Col>
</Row> </Row>

View file

@ -10,12 +10,16 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import Badge from "./Badge.svelte"; import Badge from "./Badge.svelte";
export let markdownTooltip: string; export let markdownTooltip: string;
let forId: string;
export { forId as for };
</script> </script>
<Label <span
><slot /><WithTooltip tooltip={marked(markdownTooltip)} let:createTooltip ><Label for={forId}><slot /></Label><WithTooltip
tooltip={marked(markdownTooltip)}
let:createTooltip
><Badge on:mount={(event) => createTooltip(event.detail.span)} ><Badge on:mount={(event) => createTooltip(event.detail.span)}
>{@html infoCircle}</Badge >{@html infoCircle}</Badge
></WithTooltip ></WithTooltip
></Label ></span
> >