Skip to content

Commit c51ac56

Browse files
committed
docs(selectable-tile): add/update examples
1 parent 6ba0fdf commit c51ac56

File tree

3 files changed

+92
-18
lines changed

3 files changed

+92
-18
lines changed
Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
2-
components: ["SelectableTile"]
2+
components: ["SelectableTileGroup", "SelectableTile"]
33
---
44

55
<script>
6-
import { SelectableTile } from "carbon-components-svelte";
6+
import { SelectableTileGroup, SelectableTile } from "carbon-components-svelte";
77
import Preview from "../../components/Preview.svelte";
88
</script>
99

@@ -13,46 +13,58 @@ components: ["SelectableTile"]
1313

1414
Group multiple selectable tiles together for multi-selection scenarios.
1515

16-
<div role="group" aria-label="selectable tiles">
17-
<SelectableTile selected>
16+
<SelectableTileGroup legend="Select options" name="options" selected={["option1", "option2"]}>
17+
<SelectableTile value="option1">
1818
Multi-select Tile
1919
</SelectableTile>
20-
<SelectableTile selected>
20+
<SelectableTile value="option2">
2121
Multi-select Tile
2222
</SelectableTile>
23-
<SelectableTile>
23+
<SelectableTile value="option3">
2424
Multi-select Tile
2525
</SelectableTile>
26-
</div>
26+
</SelectableTileGroup>
27+
28+
## Reactive (one-way binding)
29+
30+
Update the selected values using the `select` and `deselect` events.
31+
32+
<FileSource src="/framed/SelectableTile/SelectableTileReactiveOneWay" />
33+
34+
## Reactive (two-way binding)
35+
36+
Bind to the `selected` prop for simpler state management.
37+
38+
<FileSource src="/framed/SelectableTile/SelectableTileReactive" />
2739

2840
## Light variant
2941

3042
Use the light variant for light backgrounds.
3143

32-
<div role="group" aria-label="selectable tiles">
33-
<SelectableTile light selected>
44+
<SelectableTileGroup legend="Select options" name="options-light" selected={["option1", "option2"]}>
45+
<SelectableTile light value="option1">
3446
Multi-select Tile
3547
</SelectableTile>
36-
<SelectableTile light selected>
48+
<SelectableTile light value="option2">
3749
Multi-select Tile
3850
</SelectableTile>
39-
<SelectableTile light>
51+
<SelectableTile light value="option3">
4052
Multi-select Tile
4153
</SelectableTile>
42-
</div>
54+
</SelectableTileGroup>
4355

4456
## Disabled state
4557

46-
Disable tiles to prevent interaction.
58+
Disable specific tiles to prevent interaction.
4759

48-
<div role="group" aria-label="selectable tiles">
49-
<SelectableTile selected>
60+
<SelectableTileGroup legend="Select options" name="options-disabled" selected={["option1"]}>
61+
<SelectableTile value="option1">
5062
Multi-select Tile
5163
</SelectableTile>
52-
<SelectableTile disabled>
64+
<SelectableTile disabled value="option2">
5365
Multi-select Tile
5466
</SelectableTile>
55-
<SelectableTile disabled>
67+
<SelectableTile disabled value="option3">
5668
Multi-select Tile
5769
</SelectableTile>
58-
</div>
70+
</SelectableTileGroup>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<script>
2+
import {
3+
Button,
4+
SelectableTile,
5+
SelectableTileGroup,
6+
} from "carbon-components-svelte";
7+
8+
const values = ["Lite plan", "Standard plan", "Plus plan"];
9+
10+
let selected = [values[0], values[1]];
11+
</script>
12+
13+
<SelectableTileGroup legend="Service pricing tiers" name="plan" bind:selected>
14+
{#each values as value}
15+
<SelectableTile {value}>{value}</SelectableTile>
16+
{/each}
17+
</SelectableTileGroup>
18+
19+
<div>
20+
Selected: <strong>{selected.join(", ") || "None"}</strong>
21+
</div>
22+
23+
<Button
24+
size="small"
25+
disabled={selected.length === 1 && selected[0] === values[1]}
26+
on:click={() => (selected = [values[1]])}
27+
>
28+
Set to "{values[1]}" only
29+
</Button>
30+
31+
<style>
32+
div {
33+
margin: var(--cds-spacing-05) 0;
34+
}
35+
</style>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<script>
2+
import {
3+
SelectableTile,
4+
SelectableTileGroup,
5+
} from "carbon-components-svelte";
6+
7+
const values = ["Lite plan", "Standard plan", "Plus plan"];
8+
9+
let selected = [values[0], values[1]];
10+
</script>
11+
12+
<SelectableTileGroup
13+
legend="Service pricing tiers"
14+
name="plan"
15+
on:select={({ detail }) => (selected = [...selected, detail])}
16+
on:deselect={({ detail }) => (selected = selected.filter((v) => v !== detail))}
17+
>
18+
{#each values as value}
19+
<SelectableTile {value} selected={selected.includes(value)}>
20+
{value}
21+
</SelectableTile>
22+
{/each}
23+
</SelectableTileGroup>
24+
25+
<br />
26+
27+
Selected: <strong>{selected.join(", ") || "None"}</strong>

0 commit comments

Comments
 (0)