feat(toggle): dispatch toggle event

This commit is contained in:
Eric Liu 2021-02-03 06:04:07 -08:00
commit c0dd80d149
6 changed files with 38 additions and 11 deletions

View file

@ -3959,7 +3959,8 @@ None.
### Events
| Event name | Type | Detail |
| :--------- | :-------- | :----- |
| :--------- | :--------- | :--------------------------------- |
| toggle | dispatched | <code>{ toggled: boolean; }</code> |
| click | forwarded | -- |
| mouseover | forwarded | -- |
| mouseenter | forwarded | -- |

View file

@ -9245,6 +9245,11 @@
],
"slots": [],
"events": [
{
"type": "dispatched",
"name": "toggle",
"detail": "{ toggled: boolean; }"
},
{ "type": "forwarded", "name": "click", "element": "div" },
{ "type": "forwarded", "name": "mouseover", "element": "div" },
{ "type": "forwarded", "name": "mouseenter", "element": "div" },

View file

@ -19,6 +19,10 @@ components: ["Toggle", "ToggleSkeleton"]
<FileSource src="/framed/Toggle/ToggleReactive" />
### on:toggle event
<Toggle labelText="Push notifications" on:toggle={e => console.log(e.detail)} />
### Custom labels
<Toggle labelText="Push notifications" labelA="No" labelB="Yes" />

View file

@ -1,4 +1,8 @@
<script>
/**
* @event {{ toggled: boolean; }} toggle
*/
/**
* Specify the toggle size
* @type {"default" | "sm"}
@ -28,6 +32,12 @@
* @type {string}
*/
export let name = undefined;
import { createEventDispatcher } from "svelte";
const dispatch = createEventDispatcher();
$: dispatch("toggle", { toggled });
</script>
<div

View file

@ -4,7 +4,13 @@
<Toggle labelText="Push notifications" />
<Toggle labelText="Push notifications" toggled />
<Toggle
labelText="Push notifications"
toggled
on:toggle="{(e) => {
console.log(e.detail.toggled);
}}"
/>
<Toggle labelText="Push notifications" labelA="No" labelB="Yes" />

View file

@ -53,6 +53,7 @@ export default class Toggle {
$$prop_def: ToggleProps;
$$slot_def: {};
$on(eventname: "toggle", cb: (event: CustomEvent<{ toggled: boolean }>) => void): () => void;
$on(eventname: "click", cb: (event: WindowEventMap["click"]) => void): () => void;
$on(eventname: "mouseover", cb: (event: WindowEventMap["mouseover"]) => void): () => void;
$on(eventname: "mouseenter", cb: (event: WindowEventMap["mouseenter"]) => void): () => void;