fix(radio-button-group): strongly type dispatched change/select events (#1819)

This commit is contained in:
Eric Liu 2023-10-03 11:23:17 -07:00 committed by GitHub
commit 06d81ddbff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 42 additions and 18 deletions

View file

@ -2984,12 +2984,12 @@ None.
### Events
| Event name | Type | Detail |
| :--------- | :--------- | :----- |
| :--------- | :--------- | :------------------ |
| change | dispatched | <code>string</code> |
| click | forwarded | -- |
| mouseover | forwarded | -- |
| mouseenter | forwarded | -- |
| mouseleave | forwarded | -- |
| change | dispatched | -- |
## `RadioButtonSkeleton`
@ -4252,8 +4252,8 @@ export type CarbonTheme = "white" | "g10" | "g80" | "g90" | "g100";
### Events
| Event name | Type | Detail |
| :--------- | :--------- | :----- |
| select | dispatched | -- |
| :--------- | :--------- | :------------------ |
| select | dispatched | <code>string</code> |
## `TimePicker`

View file

@ -9615,11 +9615,11 @@
}
],
"events": [
{ "type": "dispatched", "name": "change", "detail": "string" },
{ "type": "forwarded", "name": "click", "element": "div" },
{ "type": "forwarded", "name": "mouseover", "element": "div" },
{ "type": "forwarded", "name": "mouseenter", "element": "div" },
{ "type": "forwarded", "name": "mouseleave", "element": "div" },
{ "type": "dispatched", "name": "change" }
{ "type": "forwarded", "name": "mouseleave", "element": "div" }
],
"typedefs": [],
"rest_props": { "type": "Element", "name": "div" }
@ -13158,7 +13158,9 @@
],
"moduleExports": [],
"slots": [{ "name": "__default__", "default": true, "slot_props": "{}" }],
"events": [{ "type": "dispatched", "name": "select" }],
"events": [
{ "type": "dispatched", "name": "select", "detail": "string" }
],
"typedefs": [],
"rest_props": { "type": "Element", "name": "fieldset" }
},

View file

@ -1,4 +1,8 @@
<script>
/**
* @event {string} change
*/
/**
* Set the selected radio button value
* @type {string}

View file

@ -1,4 +1,8 @@
<script>
/**
* @event {string} select
*/
/**
* Specify the selected tile value
* @type {string}

View file

@ -2,7 +2,13 @@
import { RadioButton, RadioButtonSkeleton, RadioButtonGroup } from "../types";
</script>
<RadioButtonGroup legendText="Storage tier (disk)" selected="standard">
<RadioButtonGroup
legendText="Storage tier (disk)"
selected="standard"
on:change="{(e) => {
console.log(e.detail); // string
}}"
>
<RadioButton labelText="Free (1 GB)" value="free" />
<RadioButton labelText="Standard (10 GB)" value="standard" />
<RadioButton labelText="Pro (128 GB)" value="pro" />

View file

@ -2,8 +2,16 @@
import { TileGroup, RadioTile } from "../types";
</script>
<TileGroup name="plan" required legend="Service pricing tiers">
<RadioTile light value="0" checked>Lite plan</RadioTile>
<TileGroup
name="plan"
required
legend="Service pricing tiers"
selected="0"
on:select="{(e) => {
console.log(e.detail); // string
}}"
>
<RadioTile light checked value="0">Lite plan</RadioTile>
<RadioTile value="1">Standard plan</RadioTile>
<RadioTile value="2">Plus plan</RadioTile>
</TileGroup>

View file

@ -64,11 +64,11 @@ export interface RadioButtonGroupProps extends RestProps {
export default class RadioButtonGroup extends SvelteComponentTyped<
RadioButtonGroupProps,
{
change: CustomEvent<string>;
click: WindowEventMap["click"];
mouseover: WindowEventMap["mouseover"];
mouseenter: WindowEventMap["mouseenter"];
mouseleave: WindowEventMap["mouseleave"];
change: CustomEvent<any>;
},
{ default: {}; legendText: {} }
> {}

View file

@ -39,6 +39,6 @@ export interface TileGroupProps extends RestProps {
export default class TileGroup extends SvelteComponentTyped<
TileGroupProps,
{ select: CustomEvent<any> },
{ select: CustomEvent<string> },
{ default: {} }
> {}