Make Toggle labels slottable (#1002)

* feat(toggle): support slottable labels

* yarn build:lib

* docs(toggle): add "Slottable labels" example
This commit is contained in:
Eric Liu 2022-01-12 16:43:27 -10:00 committed by GitHub
commit 32edfa59dd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 30 additions and 3 deletions

View file

@ -4426,6 +4426,8 @@ export type CarbonTheme = "white" | "g10" | "g80" | "g90" | "g100";
| Slot name | Default | Props | Fallback | | Slot name | Default | Props | Fallback |
| :-------- | :------ | :---- | :----------------------- | | :-------- | :------ | :---- | :----------------------- |
| labelA | No | -- | <code>{labelA}</code> |
| labelB | No | -- | <code>{labelB}</code> |
| labelText | No | -- | <code>{labelText}</code> | | labelText | No | -- | <code>{labelText}</code> |
### Events ### Events

View file

@ -12440,6 +12440,18 @@
} }
], ],
"slots": [ "slots": [
{
"name": "labelA",
"default": false,
"fallback": "{labelA}",
"slot_props": "{}"
},
{
"name": "labelB",
"default": false,
"fallback": "{labelB}",
"slot_props": "{}"
},
{ {
"name": "labelText", "name": "labelText",
"default": false, "default": false,

View file

@ -27,6 +27,15 @@ components: ["Toggle", "ToggleSkeleton"]
<Toggle labelText="Push notifications" labelA="No" labelB="Yes" /> <Toggle labelText="Push notifications" labelA="No" labelB="Yes" />
### Slottable labels
An alternative to the "labelA" and "labelB" props is to use the corresponding named slots.
<Toggle labelText="Push notifications">
<span slot="labelA" style="color: red">No</span>
<span slot="labelB" style="color: green">Yes</span>
</Toggle>
### Disabled ### Disabled
<Toggle labelText="Push notifications" disabled /> <Toggle labelText="Push notifications" disabled />

View file

@ -81,10 +81,14 @@
</slot> </slot>
<span class:bx--toggle__switch="{true}"> <span class:bx--toggle__switch="{true}">
<span aria-hidden="true" class:bx--toggle__text--off="{true}"> <span aria-hidden="true" class:bx--toggle__text--off="{true}">
{labelA} <slot name="labelA">
{labelA}
</slot>
</span> </span>
<span aria-hidden="true" class:bx--toggle__text--on="{true}"> <span aria-hidden="true" class:bx--toggle__text--on="{true}">
{labelB} <slot name="labelB">
{labelB}
</slot>
</span> </span>
</span> </span>
</label> </label>

View file

@ -64,5 +64,5 @@ export default class Toggle extends SvelteComponentTyped<
focus: WindowEventMap["focus"]; focus: WindowEventMap["focus"];
blur: WindowEventMap["blur"]; blur: WindowEventMap["blur"];
}, },
{ labelText: {} } { labelA: {}; labelB: {}; labelText: {} }
> {} > {}