refactor(selectable-tile): dispatch select, unselect events

Remove on:change event forwarding
This commit is contained in:
Eric Liu 2019-12-31 15:33:04 -08:00
commit 359f99f682
2 changed files with 22 additions and 11 deletions

View file

@ -1,15 +1,15 @@
<script> <script>
let className = undefined; let className = undefined;
export { className as class }; export { className as class };
export let selected = false;
export let id = Math.random();
export let value = 'value';
export let title = 'title';
export let name = '';
export let iconDescription = 'Tile checkmark'; export let iconDescription = 'Tile checkmark';
export let tabindex = '0'; export let id = Math.random();
export let light = false; export let light = false;
export let name = '';
export let selected = false;
export let style = undefined; export let style = undefined;
export let tabindex = '0';
export let title = 'title';
export let value = 'value';
import { createEventDispatcher } from 'svelte'; import { createEventDispatcher } from 'svelte';
import CheckmarkFilled16 from 'carbon-icons-svelte/lib/CheckmarkFilled16'; import CheckmarkFilled16 from 'carbon-icons-svelte/lib/CheckmarkFilled16';
@ -17,16 +17,13 @@
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
$: if (selected) { $: dispatch(selected ? 'select' : 'deselect', id);
dispatch('select', id);
}
</script> </script>
<input <input
type="checkbox" type="checkbox"
tabindex="-1" tabindex="-1"
class={cx('--tile-input')} class={cx('--tile-input')}
on:change
checked={selected} checked={selected}
{id} {id}
{value} {value}

View file

@ -18,6 +18,8 @@
]; ];
let selected = radioTiles[1].value; let selected = radioTiles[1].value;
let selectedTile1 = false;
</script> </script>
<Layout> <Layout>
@ -28,7 +30,19 @@
<ClickableTile {...$$props}>Clickable Tile</ClickableTile> <ClickableTile {...$$props}>Clickable Tile</ClickableTile>
{:else if story === 'multi-select'} {:else if story === 'multi-select'}
<div role="group" aria-label="selectable tiles"> <div role="group" aria-label="selectable tiles">
<SelectableTile {...$$props} id="tile-1" name="tiles">Multi-select Tile</SelectableTile> <SelectableTile
{...$$props}
id="tile-1"
name="tiles"
bind:selected={selectedTile1}
on:select={({ detail }) => {
console.log('on:select', detail);
}}
on:deselect={({ detail }) => {
console.log('on:deselect', detail);
}}>
Multi-select Tile
</SelectableTile>
<SelectableTile {...$$props} id="tile-2" name="tiles">Multi-select Tile</SelectableTile> <SelectableTile {...$$props} id="tile-2" name="tiles">Multi-select Tile</SelectableTile>
<SelectableTile {...$$props} id="tile-3" name="tiles">Multi-select Tile</SelectableTile> <SelectableTile {...$$props} id="tile-3" name="tiles">Multi-select Tile</SelectableTile>
</div> </div>