feat(components): add RadioButtonGroup

Closes #25
This commit is contained in:
Eric Liu 2019-12-21 17:16:15 -08:00
commit 4f73b8b71a
9 changed files with 128 additions and 11 deletions

View file

@ -0,0 +1,46 @@
<script>
let className = undefined;
export { className as class };
export let orientation = 'horizontal';
export let labelPosition = 'right';
export let defaultSelected = undefined;
export let disabled = false;
export let style = undefined;
import { createEventDispatcher, setContext } from 'svelte';
import { writable } from 'svelte/store';
import { cx } from '../../lib';
const dispatch = createEventDispatcher();
const _class = cx(
'--radio-button-group',
orientation === 'vertical' && `--radio-button-group--${orientation}`,
labelPosition && `--radio-button-group--label-${labelPosition}`,
className
);
let selected = writable(defaultSelected);
setContext('RadioButtonGroup', {
selected,
add: ({ checked, value }) => {
if (checked) {
selected.set(value);
}
},
update: value => {
selected.set(value);
}
});
$: {
defaultSelected = $selected;
dispatch('change', $selected);
}
</script>
<div on:click on:mouseover on:mouseenter on:mouseleave class={cx('--form-item')} {style}>
<div class={_class} {disabled}>
<slot />
</div>
</div>