chore: v11 Toggle

This removes legacy `ToggleSkeleton`.
This commit is contained in:
Gregor Wassmann 2023-03-27 23:59:15 +02:00 committed by Enrico Sacchetti
commit 9a0a790e19
No known key found for this signature in database
GPG key ID: 3374B89ECA60D796
10 changed files with 60 additions and 199 deletions

View file

@ -1,6 +1,6 @@
# Component Index # Component Index
> 165 components exported from carbon-components-svelte@0.82.7. > 164 components exported from carbon-components-svelte@0.82.7.
## Components ## Components
@ -155,7 +155,6 @@
- [`TimePickerSelect`](#timepickerselect) - [`TimePickerSelect`](#timepickerselect)
- [`ToastNotification`](#toastnotification) - [`ToastNotification`](#toastnotification)
- [`Toggle`](#toggle) - [`Toggle`](#toggle)
- [`ToggleSkeleton`](#toggleskeleton)
- [`Toolbar`](#toolbar) - [`Toolbar`](#toolbar)
- [`ToolbarBatchActions`](#toolbarbatchactions) - [`ToolbarBatchActions`](#toolbarbatchactions)
- [`ToolbarContent`](#toolbarcontent) - [`ToolbarContent`](#toolbarcontent)
@ -1224,6 +1223,8 @@ None.
| light | No | <code>let</code> | No | <code>boolean</code> | <code>false</code> | Set to `true` to enable the light variant | | light | No | <code>let</code> | No | <code>boolean</code> | <code>false</code> | Set to `true` to enable the light variant |
| tileCollapsedIconText | No | <code>let</code> | No | <code>string</code> | <code>"Interact to expand Tile"</code> | Specify the icon text of the collapsed tile | | tileCollapsedIconText | No | <code>let</code> | No | <code>string</code> | <code>"Interact to expand Tile"</code> | Specify the icon text of the collapsed tile |
| tileExpandedIconText | No | <code>let</code> | No | <code>string</code> | <code>"Interact to collapse Tile"</code> | Specify the icon text of the expanded tile | | tileExpandedIconText | No | <code>let</code> | No | <code>string</code> | <code>"Interact to collapse Tile"</code> | Specify the icon text of the expanded tile |
| tileExpandedLabel | No | <code>let</code> | No | <code>string</code> | <code>""</code> | Specify the icon label of the expanded tile |
| tileCollapsedLabel | No | <code>let</code> | No | <code>string</code> | <code>""</code> | Specify the icon label of the collapsed tile |
| tabindex | No | <code>let</code> | No | <code>string</code> | <code>"0"</code> | Specify the tabindex | | tabindex | No | <code>let</code> | No | <code>string</code> | <code>"0"</code> | Specify the tabindex |
| id | No | <code>let</code> | No | <code>string</code> | <code>"ccs-" + Math.random().toString(36)</code> | Set an id for the top-level div element | | id | No | <code>let</code> | No | <code>string</code> | <code>"ccs-" + Math.random().toString(36)</code> | Set an id for the top-level div element |
@ -4367,9 +4368,9 @@ export type CarbonTheme = "white" | "g10" | "g80" | "g90" | "g100";
### Props ### Props
| Prop name | Required | Kind | Reactive | Type | Default value | Description | | Prop name | Required | Kind | Reactive | Type | Default value | Description |
| :-------- | :------- | :--------------- | :------- | ---------------------------------- | ------------------------------------------------ | ----------------------------------------------- | | :-------- | :------- | :--------------- | :------- | ----------------------------- | ------------------------------------------------ | ----------------------------------------------- |
| toggled | No | <code>let</code> | Yes | <code>boolean</code> | <code>false</code> | Set to `true` to toggle the checkbox input | | toggled | No | <code>let</code> | Yes | <code>boolean</code> | <code>false</code> | Set to `true` to toggle the checkbox input |
| size | No | <code>let</code> | No | <code>"default" &#124; "sm"</code> | <code>"default"</code> | Specify the toggle size | | size | No | <code>let</code> | No | <code>"md" &#124; "sm"</code> | <code>"md"</code> | Specify the toggle size |
| disabled | No | <code>let</code> | No | <code>boolean</code> | <code>false</code> | Set to `true` to disable checkbox input | | disabled | No | <code>let</code> | No | <code>boolean</code> | <code>false</code> | Set to `true` to disable checkbox input |
| labelA | No | <code>let</code> | No | <code>string</code> | <code>"Off"</code> | Specify the label for the untoggled state | | labelA | No | <code>let</code> | No | <code>string</code> | <code>"Off"</code> | Specify the label for the untoggled state |
| labelB | No | <code>let</code> | No | <code>string</code> | <code>"On"</code> | Specify the label for the toggled state | | labelB | No | <code>let</code> | No | <code>string</code> | <code>"On"</code> | Specify the label for the toggled state |
@ -4382,8 +4383,6 @@ 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
@ -4400,31 +4399,6 @@ export type CarbonTheme = "white" | "g10" | "g80" | "g90" | "g100";
| focus | forwarded | -- | | focus | forwarded | -- |
| blur | forwarded | -- | | blur | forwarded | -- |
## `ToggleSkeleton`
### Props
| Prop name | Required | Kind | Reactive | Type | Default value | Description |
| :-------- | :------- | :--------------- | :------- | ---------------------------------- | ------------------------------------------------ | ------------------------------- |
| size | No | <code>let</code> | No | <code>"default" &#124; "sm"</code> | <code>"default"</code> | Specify the toggle size |
| labelText | No | <code>let</code> | No | <code>string</code> | <code>""</code> | Specify the label text |
| id | No | <code>let</code> | No | <code>string</code> | <code>"ccs-" + Math.random().toString(36)</code> | Set an id for the input element |
### Slots
| Slot name | Default | Props | Fallback |
| :-------- | :------ | :---- | :----------------------- |
| labelText | No | -- | <code>{labelText}</code> |
### Events
| Event name | Type | Detail |
| :--------- | :-------- | :----- |
| click | forwarded | -- |
| mouseover | forwarded | -- |
| mouseenter | forwarded | -- |
| mouseleave | forwarded | -- |
## `Toolbar` ## `Toolbar`
### Props ### Props

View file

@ -1,5 +1,5 @@
{ {
"total": 165, "total": 164,
"components": [ "components": [
{ {
"moduleName": "Accordion", "moduleName": "Accordion",
@ -13619,8 +13619,8 @@
"name": "size", "name": "size",
"kind": "let", "kind": "let",
"description": "Specify the toggle size", "description": "Specify the toggle size",
"type": "\"default\" | \"sm\"", "type": "\"md\" | \"sm\"",
"value": "\"default\"", "value": "\"md\"",
"isFunction": false, "isFunction": false,
"isFunctionDeclaration": false, "isFunctionDeclaration": false,
"isRequired": false, "isRequired": false,
@ -13725,18 +13725,6 @@
], ],
"moduleExports": [], "moduleExports": [],
"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,
@ -13762,65 +13750,6 @@
"typedefs": [], "typedefs": [],
"rest_props": { "type": "Element", "name": "div" } "rest_props": { "type": "Element", "name": "div" }
}, },
{
"moduleName": "ToggleSkeleton",
"filePath": "src/Toggle/ToggleSkeleton.svelte",
"props": [
{
"name": "size",
"kind": "let",
"description": "Specify the toggle size",
"type": "\"default\" | \"sm\"",
"value": "\"default\"",
"isFunction": false,
"isFunctionDeclaration": false,
"isRequired": false,
"constant": false,
"reactive": false
},
{
"name": "labelText",
"kind": "let",
"description": "Specify the label text",
"type": "string",
"value": "\"\"",
"isFunction": false,
"isFunctionDeclaration": false,
"isRequired": false,
"constant": false,
"reactive": false
},
{
"name": "id",
"kind": "let",
"description": "Set an id for the input element",
"type": "string",
"value": "\"ccs-\" + Math.random().toString(36)",
"isFunction": false,
"isFunctionDeclaration": false,
"isRequired": false,
"constant": false,
"reactive": false
}
],
"moduleExports": [],
"slots": [
{
"name": "labelText",
"default": false,
"fallback": "{labelText}",
"slot_props": "{}"
}
],
"events": [
{ "type": "forwarded", "name": "click", "element": "div" },
{ "type": "forwarded", "name": "mouseover", "element": "div" },
{ "type": "forwarded", "name": "mouseenter", "element": "div" },
{ "type": "forwarded", "name": "mouseleave", "element": "div" }
],
"typedefs": [],
"rest_props": { "type": "Element", "name": "div" }
},
{ {
"moduleName": "Toolbar", "moduleName": "Toolbar",
"filePath": "src/DataTable/Toolbar.svelte", "filePath": "src/DataTable/Toolbar.svelte",

View file

@ -1,9 +1,9 @@
--- ---
components: ["Toggle", "ToggleSkeleton"] components: ["Toggle"]
--- ---
<script> <script>
import { Toggle, ToggleSkeleton } from "carbon-components-svelte"; import { Toggle } from "carbon-components-svelte";
import Preview from "../../components/Preview.svelte"; import Preview from "../../components/Preview.svelte";
</script> </script>
@ -33,15 +33,6 @@ Set `hideLabel` to `true` to visually hide the label text. It's recommended to s
<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 />
@ -49,11 +40,3 @@ An alternative to the "labelA" and "labelB" props is to use the corresponding na
## Small size ## Small size
<Toggle size="sm" labelText="Push notifications" /> <Toggle size="sm" labelText="Push notifications" />
## Skeleton
<ToggleSkeleton />
## Skeleton (small)
<ToggleSkeleton size="sm" />

View file

@ -5,9 +5,9 @@
/** /**
* Specify the toggle size * Specify the toggle size
* @type {"default" | "sm"} * @type {"md" | "sm"}
*/ */
export let size = "default"; export let size = "md";
/** Set to `true` to toggle the checkbox input */ /** Set to `true` to toggle the checkbox input */
export let toggled = false; export let toggled = false;
@ -41,6 +41,8 @@
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
$: dispatch("toggle", { toggled }); $: dispatch("toggle", { toggled });
$: sideLabel = toggled ? labelB : labelA;
$: isSm = size === "sm";
</script> </script>
<!-- svelte-ignore a11y-mouse-events-have-key-events --> <!-- svelte-ignore a11y-mouse-events-have-key-events -->
@ -48,6 +50,8 @@
<div <div
class:bx--form-item="{true}" class:bx--form-item="{true}"
style:user-select="none" style:user-select="none"
class:bx--toggle="{true}"
class:bx--toggle--disabled="{disabled}"
{...$$restProps} {...$$restProps}
on:click on:click
on:mouseover on:mouseover
@ -58,8 +62,7 @@
<input <input
role="switch" role="switch"
type="checkbox" type="checkbox"
class:bx--toggle-input="{true}" class:bx--toggle__button="{true}"
class:bx--toggle-input--small="{size === 'sm'}"
checked="{toggled}" checked="{toggled}"
on:change="{() => { on:change="{() => {
toggled = !toggled; toggled = !toggled;
@ -81,27 +84,40 @@
<label <label
aria-label="{labelText ? undefined : $$props['aria-label'] || 'Toggle'}" aria-label="{labelText ? undefined : $$props['aria-label'] || 'Toggle'}"
for="{id}" for="{id}"
class:bx--toggle-input__label="{true}" class:bx--toggle__label="{true}"
>
<span
class:bx--toggle__label-text="{true}"
class:bx--visually-hidden="{hideLabel}"
> >
<span class:bx--visually-hidden="{hideLabel}">
<slot name="labelText"> <slot name="labelText">
{labelText} {labelText}
</slot> </slot>
</span> </span>
<span <div
class:bx--toggle__switch="{true}" class:bx--toggle__appearance="{true}"
style:margin-top="{hideLabel ? 0 : undefined}" class:bx--toggle__appearance--sm="{isSm}"
style="{hideLabel && 'margin-top: 0'}"
> >
<span aria-hidden="true" class:bx--toggle__text--off="{true}"> <div
<slot name="labelA"> aria-hidden="true"
{labelA} class:bx--toggle__switch="{true}"
</slot> class:bx--toggle__switch--checked="{toggled}"
</span> >
<span aria-hidden="true" class:bx--toggle__text--on="{true}"> {#if isSm}
<slot name="labelB"> <svg
{labelB} class:bx--toggle__check="{true}"
</slot> width="6px"
</span> height="5px"
</span> viewBox="0 0 6 5"
>
<path d="M2.2 2.7L5 0 6 1 2.2 5 0 2.7 1 1.5z"></path>
</svg>
{/if}
</div>
<span class:bx--toggle__text="{true}" aria-hidden="{true}"
>{sideLabel}</span
>
</div>
</label> </label>
</div> </div>

View file

@ -1,2 +1 @@
export { default as Toggle } from "./Toggle.svelte"; export { default as Toggle } from "./Toggle.svelte";
export { default as ToggleSkeleton } from "./ToggleSkeleton.svelte";

View file

@ -122,7 +122,7 @@ export {
TileGroup, TileGroup,
} from "./Tile"; } from "./Tile";
export { TimePicker, TimePickerSelect } from "./TimePicker"; export { TimePicker, TimePickerSelect } from "./TimePicker";
export { Toggle, ToggleSkeleton } from "./Toggle"; export { Toggle } from "./Toggle";
export { Tooltip, TooltipFooter } from "./Tooltip"; export { Tooltip, TooltipFooter } from "./Tooltip";
export { TooltipDefinition } from "./TooltipDefinition"; export { TooltipDefinition } from "./TooltipDefinition";
export { TooltipIcon } from "./TooltipIcon"; export { TooltipIcon } from "./TooltipIcon";

View file

@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { Toggle, ToggleSkeleton } from "../types"; import { Toggle } from "../types";
</script> </script>
<Toggle labelText="Push notifications" hideLabel /> <Toggle labelText="Push notifications" hideLabel />
@ -15,5 +15,3 @@
<Toggle labelText="Push notifications" labelA="No" labelB="Yes" /> <Toggle labelText="Push notifications" labelA="No" labelB="Yes" />
<Toggle labelText="Push notifications" disabled /> <Toggle labelText="Push notifications" disabled />
<ToggleSkeleton />

View file

@ -6,9 +6,9 @@ type RestProps = SvelteHTMLElements["div"];
export interface ToggleProps extends RestProps { export interface ToggleProps extends RestProps {
/** /**
* Specify the toggle size * Specify the toggle size
* @default "default" * @default "md"
*/ */
size?: "default" | "sm"; size?: "md" | "sm";
/** /**
* Set to `true` to toggle the checkbox input * Set to `true` to toggle the checkbox input
@ -74,5 +74,5 @@ export default class Toggle extends SvelteComponentTyped<
focus: WindowEventMap["focus"]; focus: WindowEventMap["focus"];
blur: WindowEventMap["blur"]; blur: WindowEventMap["blur"];
}, },
{ labelA: {}; labelB: {}; labelText: {} } { labelText: {} }
> {} > {}

View file

@ -1,37 +0,0 @@
import type { SvelteComponentTyped } from "svelte";
import type { SvelteHTMLElements } from "svelte/elements";
type RestProps = SvelteHTMLElements["div"];
export interface ToggleSkeletonProps extends RestProps {
/**
* Specify the toggle size
* @default "default"
*/
size?: "default" | "sm";
/**
* Specify the label text
* @default ""
*/
labelText?: string;
/**
* Set an id for the input element
* @default "ccs-" + Math.random().toString(36)
*/
id?: string;
[key: `data-${string}`]: any;
}
export default class ToggleSkeleton extends SvelteComponentTyped<
ToggleSkeletonProps,
{
click: WindowEventMap["click"];
mouseover: WindowEventMap["mouseover"];
mouseenter: WindowEventMap["mouseenter"];
mouseleave: WindowEventMap["mouseleave"];
},
{ labelText: {} }
> {}

1
types/index.d.ts vendored
View file

@ -137,7 +137,6 @@ export { default as TileGroup } from "./Tile/TileGroup.svelte";
export { default as TimePicker } from "./TimePicker/TimePicker.svelte"; export { default as TimePicker } from "./TimePicker/TimePicker.svelte";
export { default as TimePickerSelect } from "./TimePicker/TimePickerSelect.svelte"; export { default as TimePickerSelect } from "./TimePicker/TimePickerSelect.svelte";
export { default as Toggle } from "./Toggle/Toggle.svelte"; export { default as Toggle } from "./Toggle/Toggle.svelte";
export { default as ToggleSkeleton } from "./Toggle/ToggleSkeleton.svelte";
export { default as Tooltip } from "./Tooltip/Tooltip.svelte"; export { default as Tooltip } from "./Tooltip/Tooltip.svelte";
export { default as TooltipFooter } from "./Tooltip/TooltipFooter.svelte"; export { default as TooltipFooter } from "./Tooltip/TooltipFooter.svelte";
export { default as TooltipDefinition } from "./TooltipDefinition/TooltipDefinition.svelte"; export { default as TooltipDefinition } from "./TooltipDefinition/TooltipDefinition.svelte";