Skip to content
This repository was archived by the owner on Jun 20, 2022. It is now read-only.

Commit 88bc002

Browse files
committed
feat: add Toggler
1 parent 5773201 commit 88bc002

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

src/Toggler.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
Toggler is a render-props component that provide a toggle behaviour.
2+
3+
```js
4+
<Toggler>
5+
{({ toggled, onToggle }) => (
6+
<Button variant="primary" onClick={onToggle}>
7+
{toggled ? 'ON' : 'OFF'}
8+
</Button>
9+
)}
10+
</Toggler>
11+
```
12+
13+
### Specify a value in `onToggle`
14+
15+
```js
16+
<Toggler>
17+
{({ toggled, onToggle }) => (
18+
<div className="block-list">
19+
<div>{toggled ? '🌞' : '🌛'}</div>
20+
<div>
21+
<Button variant="primary" size="sm" onClick={() => onToggle(false)}>
22+
Night
23+
</Button>{' '}
24+
<Button variant="primary" size="sm" onClick={() => onToggle(true)}>
25+
Day
26+
</Button>
27+
</div>
28+
</div>
29+
)}
30+
</Toggler>
31+
```
32+
33+
### Set the default toggle
34+
35+
You can define the default `toggled` value using `defaultToggled` property.
36+
37+
```js
38+
<Toggler defaultToggled>
39+
{({ toggled, onToggle }) => (
40+
<Button variant="primary" onClick={onToggle}>
41+
{toggled ? 'ON' : 'OFF'}
42+
</Button>
43+
)}
44+
</Toggler>
45+
```
46+
47+
### Listen for toggling
48+
49+
You can listen when the element is toggled using `onToggle` property.
50+
51+
```js
52+
<Toggler onToggle={toggled => console.log('Toggled', toggled)}>
53+
{({ toggled, onToggle }) => (
54+
<Button variant="primary" onClick={onToggle}>
55+
{toggled ? 'ON' : 'OFF'}
56+
</Button>
57+
)}
58+
</Toggler>
59+
```

styleguidist/main.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@ import { lighten } from 'polished'
44
import * as theme from '../src/theme/defaultTheme'
55

66
injectGlobal`
7+
body {
8+
font-family: ${theme.fontFamily};
9+
}
10+
711
table {
812
width: 100%;
913
}
10-
14+
1115
[class^='rsg--preview'], [class*=' rsg--preview'] {
1216
.sui-row + .sui-row {
1317
margin-top: 1rem;

0 commit comments

Comments
 (0)