loon-bulma-react 2022.3.11 → 2022.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +460 -151
- package/dist/components/Button/ButtonProps.d.ts +0 -2
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +1 -5
- package/dist/components/Form/Checkbox/Checkbox.d.ts +7 -0
- package/dist/components/Form/File/FileInput.d.ts +1 -1
- package/dist/components/Form/Form.d.ts +15 -0
- package/dist/components/Form/Radio/Radio.d.ts +29 -7
- package/dist/components/Layout/Box/Box.d.ts +4 -4
- package/dist/components/Layout/Columns/Column.d.ts +3 -3
- package/dist/components/Layout/Columns/Columns.d.ts +4 -4
- package/dist/components/Layout/Container/Container.d.ts +6 -6
- package/dist/components/Layout/Content/Content.d.ts +2 -3
- package/dist/components/Layout/Section/Section.d.ts +3 -4
- package/dist/components/Steps/Steps.d.ts +46 -0
- package/dist/components/Tag/Tag.d.ts +0 -2
- package/dist/components/TimeLine/TimeLine.d.ts +56 -0
- package/dist/hooks/useDebouncedValue.d.ts +4 -13
- package/dist/hooks/useHotkeys.d.ts +0 -4
- package/dist/hooks/useToggle.d.ts +4 -4
- package/dist/index.d.ts +7 -2
- package/dist/index.js +451 -313
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +448 -311
- package/dist/index.modern.js.map +1 -1
- package/dist/loon-react-bulma-types.d.ts +2 -1
- package/package.json +42 -31
- package/styles/_all.scss +3 -0
- package/styles/checkradio.scss +533 -0
- package/styles/custom-bulma.scss +10 -10
- package/styles/indicator-styles.scss +1 -1
- package/styles/steps.scss +252 -0
- package/styles/timeline.scss +283 -0
- package/styles/variables.scss +1 -0
- package/dist/components/Button/Button.test.d.ts +0 -1
- package/dist/components/Button/ButtonBase.d.ts +0 -22
- package/dist/components/Button/InvertedButton.d.ts +0 -44
- package/dist/components/Button/LightButton.d.ts +0 -44
- package/dist/components/Button/LightOutlinedButton.d.ts +0 -44
- package/dist/components/Button/OutlinedButton.d.ts +0 -44
- package/dist/components/Button/index.d.ts +0 -2
- package/dist/components/ButtonGroup/ButtonGroup.test.d.ts +0 -1
- package/dist/components/Calendar/CalendarItems/AlldayEvent.d.ts +0 -17
- package/dist/components/Calendar/CalendarItems/ContextMenu.d.ts +0 -7
- package/dist/components/Calendar/CalendarItems/Event.d.ts +0 -17
- package/dist/components/Calendar/CalendarItems/InvertedEvent.d.ts +0 -17
- package/dist/components/Calendar/CalendarItems/MoreEvents.d.ts +0 -19
- package/dist/components/Calendar/CalendarItems/TimedEvent.d.ts +0 -17
- package/dist/components/Calendar/CalendarItems/base-styles.d.ts +0 -13
- package/dist/components/Calendar/CalendarItems/utils.d.ts +0 -13
- package/dist/components/Calendar/EventProps.d.ts +0 -8
- package/dist/components/Calendar/Month/Cal.Month.View.d.ts +0 -22
- package/dist/components/Calendar/Week/DateContainer.d.ts +0 -20
- package/dist/components/Calendar/Week/DayContainer.d.ts +0 -22
- package/dist/components/Calendar/Week/TimedContainer.d.ts +0 -15
- package/dist/components/Calendar/Week/containers.d.ts +0 -22
- package/dist/components/Calendar/date-utils.d.ts +0 -224
- package/dist/components/Calendar/utils.d.ts +0 -70
- package/dist/components/DataTable/DataTable.test.d.ts +0 -1
- package/dist/components/Form/Base.Input.Horizontal.d.ts +0 -8
- package/dist/components/Form/Base.Input.Vertical.d.ts +0 -6
- package/dist/components/Form/Checkbox.d.ts +0 -17
- package/dist/components/Form/Checkbox.test.d.ts +0 -1
- package/dist/components/Form/ColorInput.d.ts +0 -22
- package/dist/components/Form/DateInput.d.ts +0 -21
- package/dist/components/Form/DateTimeInput.d.ts +0 -20
- package/dist/components/Form/EmailInput.d.ts +0 -25
- package/dist/components/Form/FormBuilder.d.ts +0 -9
- package/dist/components/Form/FormBuilderProps.d.ts +0 -92
- package/dist/components/Form/FormProps.d.ts +0 -91
- package/dist/components/Form/FormValidatie.d.ts +0 -32
- package/dist/components/Form/HiddenInput.d.ts +0 -19
- package/dist/components/Form/MultiRangeInput.d.ts +0 -21
- package/dist/components/Form/MultiSelect.d.ts +0 -31
- package/dist/components/Form/NumberInput.d.ts +0 -24
- package/dist/components/Form/Others/BasicInput.d.ts +0 -31
- package/dist/components/Form/PasswordInput.d.ts +0 -24
- package/dist/components/Form/RangeInput.d.ts +0 -22
- package/dist/components/Form/Select.d.ts +0 -28
- package/dist/components/Form/SelectProps.d.ts +0 -21
- package/dist/components/Form/TextArea.d.ts +0 -21
- package/dist/components/Form/TextInput.d.ts +0 -25
- package/dist/components/Form/TimeInput.d.ts +0 -23
- package/dist/components/Icon/Icon.test.d.ts +0 -1
- package/dist/components/Layout/AspectRatio/AspectRatio.test.d.ts +0 -1
- package/dist/components/Layout/Box/Box.test.d.ts +0 -1
- package/dist/components/Layout/ButtonGroup/ButtonGroup.d.ts +0 -21
- package/dist/components/Layout/Columns/Column.test.d.ts +0 -1
- package/dist/components/Layout/Columns/ColumnProps.d.ts +0 -9
- package/dist/components/Layout/Columns/Columns.test.d.ts +0 -1
- package/dist/components/Layout/Columns/Fifths.d.ts +0 -22
- package/dist/components/Layout/Columns/Numbered.d.ts +0 -50
- package/dist/components/Layout/Columns/Quarters.d.ts +0 -17
- package/dist/components/Layout/Columns/Thirds.d.ts +0 -10
- package/dist/components/Layout/Columns/_all.d.ts +0 -5
- package/dist/components/Layout/Columns/index.d.ts +0 -1
- package/dist/components/Layout/Container/Container.test.d.ts +0 -1
- package/dist/components/Layout/Content/Content.test.d.ts +0 -1
- package/dist/components/Layout/FlexBox/Flexbox.d.ts +0 -48
- package/dist/components/Layout/Footer/Footer.test.d.ts +0 -1
- package/dist/components/Layout/Hero/Hero.test.d.ts +0 -1
- package/dist/components/Layout/Hero/HeroProps.d.ts +0 -37
- package/dist/components/Layout/Image/Image.test.d.ts +0 -1
- package/dist/components/Layout/Modal/Modal.d.ts +0 -17
- package/dist/components/Layout/ScrollArea/ScrollArea.test.d.ts +0 -1
- package/dist/components/Layout/Section/Section.test.d.ts +0 -1
- package/dist/components/Link/Link.test.d.ts +0 -1
- package/dist/components/Menu/MenuContent.d.ts +0 -4
- package/dist/components/Message/Message.test.d.ts +0 -1
- package/dist/components/Message/MessageProps.d.ts +0 -11
- package/dist/components/Modal/Modal.test.d.ts +0 -1
- package/dist/components/Notification/Notification.test.d.ts +0 -1
- package/dist/components/Notification/NotificationProps.d.ts +0 -13
- package/dist/components/Notification/Notifier.d.ts +0 -2
- package/dist/components/Notification/useNotifier.d.ts +0 -9
- package/dist/components/Notifier/NotificationProvider.d.ts +0 -1
- package/dist/components/Notifier/Notifier.d.ts +0 -9
- package/dist/components/Notifier/NotifierHooks.d.ts +0 -1
- package/dist/components/Notifier/NotifierProps.d.ts +0 -22
- package/dist/components/Notifyer/Notifyer.d.ts +0 -8
- package/dist/components/Panel/Panel.d.ts +0 -23
- package/dist/components/ProgressBar/ProgressBar.test.d.ts +0 -1
- package/dist/components/SimpleTable/SimpleTableProps.d.ts +0 -52
- package/dist/components/Table/SimpleTable.d.ts +0 -8
- package/dist/components/Table/SimpleTableProps.d.ts +0 -52
- package/dist/components/Table/Table.d.ts +0 -45
- package/dist/components/Table/Table.test.d.ts +0 -1
- package/dist/components/Table/TableProps.d.ts +0 -52
- package/dist/components/Tabs/TabProps.d.ts +0 -23
- package/dist/components/Tabs/Tabs.d.ts +0 -32
- package/dist/components/Tabs/Tabs.test.d.ts +0 -1
- package/dist/components/Titles/TitleProps.d.ts +0 -31
- package/dist/components/Titles/Titles.test.d.ts +0 -1
- package/dist/components/Toggle/Toggle.d.ts +0 -20
- package/dist/components/Toggle/ToggleBar.d.ts +0 -20
- package/dist/components/ToggleBar/ItemToggleBar.d.ts +0 -43
- package/dist/components/ToolTip/ToolTip.d.ts +0 -2
- package/dist/components/ToolTip/ToolTipContext.d.ts +0 -17
- package/dist/components/ToolTip/useToolTip.d.ts +0 -8
- package/dist/contexts/Notifier/NotificationProvider.d.ts +0 -5
- package/dist/contexts/Notifier/Notifier.test.d.ts +0 -1
- package/dist/contexts/Notifier/useNotifier.d.ts +0 -1
- package/dist/contexts/NotifierContext.d.ts +0 -8
- package/dist/dev-warning-fn.d.ts +0 -5
- package/dist/hooks/useViewToggle.d.ts +0 -18
- package/dist/index.test.d.ts +0 -1
package/README.md
CHANGED
|
@@ -1,13 +1,30 @@
|
|
|
1
1
|
# loon-bulma-react
|
|
2
2
|
|
|
3
|
+
> ## Aanpassingen
|
|
4
|
+
>
|
|
5
|
+
> - Steps Component toegevoegd
|
|
6
|
+
> - TimeLine Component toegevoegd
|
|
7
|
+
> - Checkbox aangepast: heeft nu een `size`, `color`, en een `styling`-prop gekregen
|
|
8
|
+
> - RadioButtons aangepast: heeft nu een `size`, `color`, en een `styling`-prop gekregen
|
|
9
|
+
> - RadioButtons : direction prop werkt
|
|
10
|
+
> - DirectionProp: ipv alleen maar `horizontal`& `vertical` kan je ook `h` en `v` gebruiken
|
|
11
|
+
> - Form-component kan ook RadioButtons aan.
|
|
12
|
+
> - README: hooks-gedeelte aangevuld
|
|
13
|
+
> - `styles`-prop aangemaakt in aantal layout-componenten. Dan kan je direct styles zetten, mocht dat nodig zijn.
|
|
14
|
+
> - Container
|
|
15
|
+
> - Section
|
|
16
|
+
> - Box
|
|
17
|
+
> - Content
|
|
18
|
+
> - Columns
|
|
19
|
+
> - Column
|
|
20
|
+
|
|
3
21
|
## [Bulma](https://bulma.io/) & [React](https://reactjs.org/) componenten voor Loon Salarissoftware.
|
|
4
22
|
|
|
5
23
|
- [Installatie](#installatie)
|
|
6
24
|
- [Gebruik](#gebruik)
|
|
7
25
|
- [Notifier](#notifier)
|
|
8
|
-
- [Gebruik](#notifier-gebruik)
|
|
9
|
-
- [Instinkers](#notifier-let-op)
|
|
10
26
|
- [Componenten](#components)
|
|
27
|
+
|
|
11
28
|
- [Layout](#layout)
|
|
12
29
|
- [AspectRatio](#layout-aspectratio)
|
|
13
30
|
- [Box](#layout-box)
|
|
@@ -21,6 +38,7 @@
|
|
|
21
38
|
- [Button & ButtonGroup](#component-button)
|
|
22
39
|
- [Calendar](#components-calendar)
|
|
23
40
|
- [MonthView](#components-calendar-monthview)
|
|
41
|
+
- [WeekView](#components-calendar-weekview)
|
|
24
42
|
- [DataTable](#component-datatable)
|
|
25
43
|
- [Footer](#component-footer)
|
|
26
44
|
- [Icons (FontAwesome)](#component-icons)
|
|
@@ -33,7 +51,9 @@
|
|
|
33
51
|
- [ProgressBars](#component-progressbar)
|
|
34
52
|
- [TabBar](#component-tabbar) (Nieuw, ipv Tabs)
|
|
35
53
|
- [SimpleTable](#component-simpletable) (Voorheen Table)
|
|
54
|
+
- [Steps](#component-steps) (NIEUW)
|
|
36
55
|
- [Tag & Tags](#component-tags)
|
|
56
|
+
- [TimeLine](#component-timeline)
|
|
37
57
|
- [Titles & Subtitles](#component-titles)
|
|
38
58
|
- [ToggleBar](#component-toggles)
|
|
39
59
|
- [Form & Inputs](#form)
|
|
@@ -61,6 +81,12 @@
|
|
|
61
81
|
- [Validatie](#form-validatie)
|
|
62
82
|
- [Form](#form-form)
|
|
63
83
|
- [Form-builder](#form-component)
|
|
84
|
+
|
|
85
|
+
- [Hooks](#hooks)
|
|
86
|
+
- [useClipboard](#hooks-use-clipboard)
|
|
87
|
+
- [useDebouncedValue](#hooks-use-debounced-value)
|
|
88
|
+
- [useHotkeys](#hooks-use-hotkeys)
|
|
89
|
+
- [useToggle & useBoolToggle](#hooks-use-toggle)
|
|
64
90
|
- [Publiceren](#publiceren)
|
|
65
91
|
|
|
66
92
|
## Installatie <a id="installatie"></a>
|
|
@@ -70,8 +96,7 @@
|
|
|
70
96
|
Dat kan zonder toevoeging van versienummer. Je gebruikt dan de laatste versie (dus ook laatste jaar-tag) van de componenten. De tag `latest` hoef je niet toe te voegen, dat is de default.
|
|
71
97
|
|
|
72
98
|
```bash
|
|
73
|
-
npm install --save loon-bulma-react
|
|
74
|
-
npm install --save bulma
|
|
99
|
+
npm install --save bulma loon-bulma-react
|
|
75
100
|
```
|
|
76
101
|
|
|
77
102
|
### Voor een versie die hoort bij een bepaald jaar (Bijvoorbeeld in Loon-2021).
|
|
@@ -89,7 +114,7 @@ Dan wordt altijd de laatste versie van die tag geïnstalleerd, in plaats van de
|
|
|
89
114
|
{
|
|
90
115
|
"devDependencies": {
|
|
91
116
|
// ...
|
|
92
|
-
"loon-bulma-react": "
|
|
117
|
+
"loon-bulma-react": "y2022"
|
|
93
118
|
// ...
|
|
94
119
|
}
|
|
95
120
|
}
|
|
@@ -107,7 +132,7 @@ Dan wordt altijd de laatste versie van die tag geïnstalleerd, in plaats van de
|
|
|
107
132
|
|
|
108
133
|
## Gebruik <a id="gebruik"></a>
|
|
109
134
|
|
|
110
|
-
in `index.tsx`
|
|
135
|
+
in `index.tsx` importeer je de styles. Je kan ze ook allemaal apart importeren, maar begin dan met de `variables.scss`, die zijn overal nodig.
|
|
111
136
|
|
|
112
137
|
```tsx
|
|
113
138
|
import 'loon-bulma-react/styles/_all.scss';
|
|
@@ -137,9 +162,7 @@ function MyComponent(props) {
|
|
|
137
162
|
|
|
138
163
|
De notifier is een ContextProvider om vanuit de gehele app notificaties te kunnen tonen. Deze verschijnen aan de rechterkant. Er is een keuze om ze vanaf boven OF onder te tonen. Met behulp van de hook `useNotifier` kunnen notificaties toegevoegd worden.
|
|
139
164
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
##### 1: wrap de componenten die de notifier mogen gebruiken tussen de provider-tags
|
|
165
|
+
1: wrap de componenten die de notifier mogen gebruiken tussen de provider-tags
|
|
143
166
|
|
|
144
167
|
```tsx
|
|
145
168
|
// App.tsx
|
|
@@ -154,25 +177,29 @@ import { NotifierProvider } from 'loon-react-bulma';
|
|
|
154
177
|
</div>
|
|
155
178
|
```
|
|
156
179
|
|
|
157
|
-
|
|
180
|
+
2: gebruik de `useNotifier()`-hook in een **child-component**
|
|
158
181
|
|
|
159
182
|
```tsx
|
|
160
183
|
// MyComponent.tsx
|
|
161
184
|
import { useNotifier } from 'loon-react-bulma';
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
185
|
+
|
|
186
|
+
function MyComponent(): JSX.Element {
|
|
187
|
+
const { notify } = useNotifier();
|
|
188
|
+
const addNotification = () => {
|
|
189
|
+
notify({
|
|
190
|
+
type: 'i',
|
|
191
|
+
content: 'Dit is een notification',
|
|
192
|
+
onClick: () => console.log('notification clicked!'),
|
|
193
|
+
dismissAfter: 2500, // dismiss na 2500 ms
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
// ...
|
|
197
|
+
return (
|
|
198
|
+
<div>
|
|
199
|
+
<Button.Primary onClick={() => addNotification()}>Notify!</Button.Primary>
|
|
200
|
+
</div>
|
|
201
|
+
);
|
|
202
|
+
}
|
|
176
203
|
```
|
|
177
204
|
|
|
178
205
|
Een notificatie heeft de volgende properties nodig:
|
|
@@ -183,13 +210,13 @@ Een notificatie heeft de volgende properties nodig:
|
|
|
183
210
|
- `dismissAfter`: na hoeveel tijd moet de notificatie automatisch verborgen/gesloten worden. Default is 5000ms, gebruik 0 voor een notificatie die **niet** zelf gesloten mag worden.
|
|
184
211
|
- `id`: _(optioneel)_ id van een notificatie, een random int als niet ingevuld.
|
|
185
212
|
|
|
186
|
-
|
|
213
|
+
##### `useNotifier()`
|
|
187
214
|
|
|
188
215
|
De `useNotifier()`-hook is een custom hook voor het gebruik van de notifier. Deze bevat de functions om dingen met de notifier te doen:
|
|
189
216
|
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
217
|
+
- `notify(n: NotificationItemProps)`: maak een notificatie
|
|
218
|
+
- `remove(nId: number)`: verwijder een notificatie met een `id`.
|
|
219
|
+
- `clear()`: verwijder ALLE notificaties
|
|
193
220
|
|
|
194
221
|
Alleen de functions importeren die je nodig hebt is genoeg
|
|
195
222
|
|
|
@@ -198,17 +225,17 @@ import { useNotifier } from 'loon-react-bulma';
|
|
|
198
225
|
const { notify, remove, clear } = useNotifier();
|
|
199
226
|
```
|
|
200
227
|
|
|
201
|
-
>
|
|
228
|
+
> **Let op!** <a id="notifier-let-op"></a>
|
|
202
229
|
>
|
|
203
230
|
> De `useNotifier()`-hook werkt alleen in componenten die children zijn van de _NotifierProvider_, dus als je de _NotifierProvider_ in `App.tsx` importeert en neerzet, kan je de hook daar **niet** gebruiken.
|
|
204
231
|
|
|
205
232
|
## Componenten <a id="components"></a>
|
|
206
233
|
|
|
207
|
-
|
|
234
|
+
### Layout <a id="layout"></a>
|
|
208
235
|
|
|
209
236
|
Er zijn een aantal componenten die vooral van invloed zijn op de layout van een pagina.
|
|
210
237
|
|
|
211
|
-
|
|
238
|
+
#### AspectRatio <a id="layout-aspectratio"></a>
|
|
212
239
|
|
|
213
240
|
Een AspectRatio is vooral om te zorgen dat bijvoorbeeld `<iframe>` en andere elementen met een aanpasbare width aan een bepaald formaat voldoen.
|
|
214
241
|
|
|
@@ -227,7 +254,7 @@ Een AspectRatio is vooral om te zorgen dat bijvoorbeeld `<iframe>` en andere ele
|
|
|
227
254
|
</div>
|
|
228
255
|
```
|
|
229
256
|
|
|
230
|
-
|
|
257
|
+
#### Box <a id="layout-box"></a>
|
|
231
258
|
|
|
232
259
|
Een Box is een witte container om om andere elementen heen te gebruiken, bijvoorbeeld forms. Ze hebben een beetje padding en een box-shadow. De header, body en footer van een [Modal](#component-modal) zitten in een Box element.
|
|
233
260
|
|
|
@@ -240,7 +267,7 @@ Als je liever geen component gebruikt, maar een `<div>` de class `bulma-box` gee
|
|
|
240
267
|
</div>
|
|
241
268
|
```
|
|
242
269
|
|
|
243
|
-
|
|
270
|
+
#### Columns <a id="layout-columns"></a>
|
|
244
271
|
|
|
245
272
|
Columns worden gebruikt voor het verdelen van een (deel van het) scherm in kolommen. Columns kunnen ook genest worden. Bij children die niet van het type `<Column.XXX>` zijn, staat er een warning in de console. Deze children worden vervolgens door een `<Column>` gewrapped. Elke **Column** moet direct in een **Columns** element zitten om te werken. Voor de kolommen zijn er verschillende maten:
|
|
246
273
|
|
|
@@ -280,7 +307,7 @@ Als maar **één** van de kolommen een size-modifier heeft (bijvoorbeeld `<Colum
|
|
|
280
307
|
</div>
|
|
281
308
|
```
|
|
282
309
|
|
|
283
|
-
|
|
310
|
+
#### Container <a id="layout-container"></a>
|
|
284
311
|
|
|
285
312
|
Een container om content horizontaal te centreren op grotere viewports. De container wordt actief van verschillende breakpoints.
|
|
286
313
|
|
|
@@ -292,7 +319,7 @@ Een container om content horizontaal te centreren op grotere viewports. De conta
|
|
|
292
319
|
| Container.FullHD | max-width | max-width | max-width | 1344px |
|
|
293
320
|
| Container.Max\* | max-width | max-width | max-width | max-width |
|
|
294
321
|
|
|
295
|
-
|
|
322
|
+
> (\*) = links & rechts blijft er 32px ruimte als margin over.
|
|
296
323
|
|
|
297
324
|
```tsx
|
|
298
325
|
<div>
|
|
@@ -303,7 +330,7 @@ Een container om content horizontaal te centreren op grotere viewports. De conta
|
|
|
303
330
|
</div>
|
|
304
331
|
```
|
|
305
332
|
|
|
306
|
-
|
|
333
|
+
#### Content <a id="layout-content"></a>
|
|
307
334
|
|
|
308
335
|
Content is voor content, waar alleen HTML-tags beschikbaar zijn. Content kan een hoop html-aan:
|
|
309
336
|
`<p>, <ul, <ol>, <dl>, <h1>...<h6>, <blockquote>, <em>, <strong>, <table>, <tr>, <th>, <td>, <sub>, <sup>`
|
|
@@ -334,7 +361,7 @@ Deze markers zijn beschikbaar:
|
|
|
334
361
|
<!-- i, ii, iii-->
|
|
335
362
|
```
|
|
336
363
|
|
|
337
|
-
|
|
364
|
+
#### Hero <a id="layout-hero"></a>
|
|
338
365
|
|
|
339
366
|
Een Hero bevat een aantal buttons aan de bovenkant van de pagina, een titel en een subtitel en navigatie-tabs aan de onderkant van de pagina. Een hero is ook te krijgen in verschillende kleuren. Daar is de `heroColorFor` prop voor.
|
|
340
367
|
Een hero bevat optionele items aan de bovenkant (`Head`) of de onderkant (`Foot`).
|
|
@@ -391,7 +418,7 @@ De navigatie kan op 2 manieren worden gemaakt:
|
|
|
391
418
|
</Hero.Foot>
|
|
392
419
|
```
|
|
393
420
|
|
|
394
|
-
|
|
421
|
+
#### Image <a id="layout-image"></a>
|
|
395
422
|
|
|
396
423
|
Een afbeelding met een vastgestelde aspect-ratio. Een ratio 'square' kan een grootte hebbeen, de andere ratio's nemen de gehele breedte van de parent in.
|
|
397
424
|
|
|
@@ -403,7 +430,7 @@ Een afbeelding met een vastgestelde aspect-ratio. Een ratio 'square' kan een gro
|
|
|
403
430
|
</div>
|
|
404
431
|
```
|
|
405
432
|
|
|
406
|
-
|
|
433
|
+
#### Section <a id="layout-section"></a>
|
|
407
434
|
|
|
408
435
|
Een section is een simpele container om een pagina in stukken te verdelen.
|
|
409
436
|
|
|
@@ -414,7 +441,7 @@ Een section is een simpele container om een pagina in stukken te verdelen.
|
|
|
414
441
|
</div>
|
|
415
442
|
```
|
|
416
443
|
|
|
417
|
-
|
|
444
|
+
#### ScrollArea <a id="layout-scrollarea"></a>
|
|
418
445
|
|
|
419
446
|
Een ScrollArea is een horizontaal of verticaal scrollbare `<div>` met flexbox-eigenschappen. De elementen worden in een rij of kolom getoont, met optionele wrapping. De overflow is dus scrollbaar, met een optionele 'gap'. De content kan ook aligned worden.
|
|
420
447
|
|
|
@@ -422,7 +449,7 @@ Een ScrollArea is een horizontaal of verticaal scrollbare `<div>` met flexbox-ei
|
|
|
422
449
|
- `wrap`: mag de content wrappen? Scrollen is dan niet meer mogelijk, tenzij er een max-height is opgegeven.
|
|
423
450
|
- `align`: aligning van de content
|
|
424
451
|
|
|
425
|
-
|
|
452
|
+
##### Horizontaal:
|
|
426
453
|
|
|
427
454
|
```tsx
|
|
428
455
|
<ScrollArea.Horizontal gap={{ row: '1em', col: 16 }} wrap={true} alignment="c">
|
|
@@ -435,7 +462,7 @@ Een ScrollArea is een horizontaal of verticaal scrollbare `<div>` met flexbox-ei
|
|
|
435
462
|
</ScrollArea.Horizontal>
|
|
436
463
|
```
|
|
437
464
|
|
|
438
|
-
|
|
465
|
+
##### Verticaal:
|
|
439
466
|
|
|
440
467
|
```tsx
|
|
441
468
|
<ScrollArea.Vertical maxHeight={600}>
|
|
@@ -448,7 +475,7 @@ Een ScrollArea is een horizontaal of verticaal scrollbare `<div>` met flexbox-ei
|
|
|
448
475
|
</ScrollArea.Vertical>
|
|
449
476
|
```
|
|
450
477
|
|
|
451
|
-
|
|
478
|
+
#### Button & ButtonGroup <a id="component-button"></a>
|
|
452
479
|
|
|
453
480
|
Gebruikt de [Bulma-button](https://bulma.io/documentation/elements/button/) Er zijn meerdere soorten button-types. Van elke soort zijn er 6 beschikbaar: _Primary_, _Danger_, _Warning_, _Success_, _Link_, _Info_
|
|
454
481
|
|
|
@@ -469,13 +496,6 @@ De Light, Outlined, LightOutlined en Inverted versies van deze buttons zijn te m
|
|
|
469
496
|
- LightOutlined: `"light-outlined"` | `"lo"`
|
|
470
497
|
- default: `"default"` | `undefined`
|
|
471
498
|
|
|
472
|
-
> ### deprecated
|
|
473
|
-
>
|
|
474
|
-
> Met de optionele prop `icon` kan er op buttons een [Font Awesome icon](https://fontawesome.com/v5.15/icons?d=gallery&p=2&m=free) gezet worden. Dat kan door
|
|
475
|
-
>
|
|
476
|
-
> - de class-string op te geven, dus `'fas fa-horse-head'`.
|
|
477
|
-
> - door het object dat mbv React-FontAwsome wordt gemaakt als waarde door te geven.
|
|
478
|
-
|
|
479
499
|
De `ButtonGroup`-component kan gebruikt worden om buttons te grouperen en de grootte voor buttons in te stellen.
|
|
480
500
|
|
|
481
501
|
```tsx
|
|
@@ -497,7 +517,7 @@ import { ButtonGroup, Bttn, Button, LightButton, InvertedButton, OutlinedButton
|
|
|
497
517
|
</ButtonGroup>;
|
|
498
518
|
```
|
|
499
519
|
|
|
500
|
-
|
|
520
|
+
#### Calendar <a id="components-calendar"></a>
|
|
501
521
|
|
|
502
522
|
De Calendar Component toont events in een grid-view. Er zijn 2 verschillende soorten events:
|
|
503
523
|
|
|
@@ -519,7 +539,7 @@ export type BaseEventProps = {
|
|
|
519
539
|
};
|
|
520
540
|
```
|
|
521
541
|
|
|
522
|
-
Op dit moment
|
|
542
|
+
Op dit moment zijn er een `MonthView`-component en een `WeekView`-component.
|
|
523
543
|
|
|
524
544
|
De opties voor het instellen van de calendar zijn:
|
|
525
545
|
|
|
@@ -552,9 +572,7 @@ export type CalendarOptions<T> = {
|
|
|
552
572
|
};
|
|
553
573
|
```
|
|
554
574
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
Deze component toont een maand + de rest van de weken die maar deels in een maand zitten. De maand wordt getoond in een grid-view.
|
|
575
|
+
De properties zijn bijna allemaal hetzelfde.
|
|
558
576
|
|
|
559
577
|
- `events`: een array met events.
|
|
560
578
|
- `viewDate`: de datum waarop de maand wordt getoond.
|
|
@@ -563,9 +581,13 @@ Deze component toont een maand + de rest van de weken die maar deels in een maan
|
|
|
563
581
|
- `onDayClick()`: callback die wordt aangeroepen als er op een dag-datum wordt geklikt.
|
|
564
582
|
- `onShowMore()`: function die een JSX.Element opleveret voor hoveren & rechtsklikken op een event.
|
|
565
583
|
|
|
584
|
+
##### MonthView <a id="components-calendar-monthview"></a>
|
|
585
|
+
|
|
586
|
+
Deze component toont een maand + de rest van de weken die maar deels in een maand zitten. De maand wordt getoond in een grid-view.
|
|
587
|
+
|
|
566
588
|
```tsx
|
|
567
589
|
<>
|
|
568
|
-
<Calendar.
|
|
590
|
+
<Calendar.Month
|
|
569
591
|
events={events}
|
|
570
592
|
viewDate={viewDate}
|
|
571
593
|
options={options}
|
|
@@ -576,11 +598,32 @@ Deze component toont een maand + de rest van de weken die maar deels in een maan
|
|
|
576
598
|
</>
|
|
577
599
|
```
|
|
578
600
|
|
|
579
|
-
|
|
601
|
+
##### WeekView <A id="components-calendar-weekview"></a>
|
|
602
|
+
|
|
603
|
+
Deze component toont een week. In plaats van een cel per dag werkt deze met cellen per uur per dag.
|
|
604
|
+
|
|
605
|
+
```tsx
|
|
606
|
+
<>
|
|
607
|
+
<Calendar.Week
|
|
608
|
+
events={events}
|
|
609
|
+
options={{
|
|
610
|
+
locale: 'de-DE',
|
|
611
|
+
dayName: 'long',
|
|
612
|
+
visibleDays: visibleDayNums,
|
|
613
|
+
monthName: 'long',
|
|
614
|
+
}}
|
|
615
|
+
viewDate={viewDate}
|
|
616
|
+
onEventClick={(evt, clck) => console.log(evt, clck)}
|
|
617
|
+
onDayClick={(evt, clck) => console.log(evt, clck)}
|
|
618
|
+
/>
|
|
619
|
+
</>
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
#### DataTable <a id="component-datatable"></a>
|
|
580
623
|
|
|
581
624
|
Een DataTable is een tabel met een maximaal aantal rijen waarin je kan zoeken en sorteren. Voor een gewone, saaie, normale tabel kan je de [Table](#component-table) gebruiken. Voor re-renderen van de tabel moet de `data`-prop wel state zijn, anders werkt het rerenderen niet. Hetzelfde geld voor de `columns`-prop.
|
|
582
625
|
|
|
583
|
-
|
|
626
|
+
##### Sorteren
|
|
584
627
|
|
|
585
628
|
Het sorteren is aangepast. Om een column sorteerbaar te maken, moet je een van de onderstaande 4 waarden opgeven:
|
|
586
629
|
|
|
@@ -588,11 +631,10 @@ Het sorteren is aangepast. Om een column sorteerbaar te maken, moet je een van d
|
|
|
588
631
|
- true: deze kolom is sorteerbaar.
|
|
589
632
|
- `'function'`: sorteer deze kolom met deze `function`.
|
|
590
633
|
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
Als deze kolom JSX-Elementen bevat, _MOET_ er een sort-function worden opgegeven om wel te kunnen sorteren.</em>
|
|
634
|
+
> **LET OP**
|
|
635
|
+
> Als deze kolom JSX-Elementen bevat, _MOET_ er een sort-function worden opgegeven om wel te kunnen sorteren.</em>
|
|
594
636
|
|
|
595
|
-
|
|
637
|
+
##### Search
|
|
596
638
|
|
|
597
639
|
Er is een ingebouwde zoekfunctie die _alle_ kolommen doorzoekt voor gefilterede items. Het is ook mogelijk om een _eigen_ zoek-function toe te voegen. Als die is gedefinieerd wordt de default zoek-methode _niet_ gebruikt. Door op de props van de `<DataTable />` de prop `onSearch` aan te vullen met een function, gebruik je je eigen zoekfunctie. De Zoekfunctie ziet er zo uit:
|
|
598
640
|
|
|
@@ -608,16 +650,16 @@ const mySearch = (s: string, users: IUser[]): IUser[] => {
|
|
|
608
650
|
- _@param_ items: de items waarin gezocht / gefilterd moet worden
|
|
609
651
|
- _@returns_: de gefilterde items
|
|
610
652
|
|
|
611
|
-
|
|
653
|
+
##### Custom classes
|
|
612
654
|
|
|
613
655
|
Om eigen classes toe te voegen aan rows en aan columns zijn er methodes:
|
|
614
656
|
|
|
615
657
|
- op de DataTable props zit de `rowClasses` function voor classes op de `<tr>`.
|
|
616
658
|
- op de DataTableColum props zit de `columnClasses` function voor classes op de `<td>`.
|
|
617
659
|
De gebruikte classes kunnen in een globale css file of in een lokaal geïmporteerde file staan (zoals hieronder).
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
660
|
+
|
|
661
|
+
> **LET OP!**
|
|
662
|
+
> in combinatie met `isStriped: {true}` werkt het zetten van `background-color` ALLEEN in combinatie met `!important`. Anders wordt de achtergrondkleur weer overschreven door Bulma.
|
|
621
663
|
|
|
622
664
|
```css
|
|
623
665
|
/** datatable.styles.css */
|
|
@@ -698,7 +740,7 @@ export function DataTableTab() {
|
|
|
698
740
|
}
|
|
699
741
|
```
|
|
700
742
|
|
|
701
|
-
|
|
743
|
+
#### Footer <a id="component-footer"></a>
|
|
702
744
|
|
|
703
745
|
Een footer staat meestal onderaan de pagina. Er zit een container in die default centered tekst bevat. Deze tekst kan ook links of rechts aligned worden.
|
|
704
746
|
|
|
@@ -712,7 +754,7 @@ Een footer staat meestal onderaan de pagina. Er zit een container in die default
|
|
|
712
754
|
</div>
|
|
713
755
|
```
|
|
714
756
|
|
|
715
|
-
|
|
757
|
+
#### Icons (Font Awesome) <a id="component-icons"></a>
|
|
716
758
|
|
|
717
759
|
Icons kunnen gebruikt worden als content op buttons of voor andere dingen. Icons gebruiken de font-awesome icons. Als `icon`-prop kan er een string (font-awesome-icon class) of een react element (FontAwesomeIcon) worden meegegeven.
|
|
718
760
|
|
|
@@ -748,9 +790,18 @@ Daar kan wel meer worden opgegeven. Voor de IconText component wordt ook de kleu
|
|
|
748
790
|
</p>
|
|
749
791
|
```
|
|
750
792
|
|
|
751
|
-
|
|
793
|
+
#### Indicator <a id="component-indicator"></a>
|
|
752
794
|
|
|
753
|
-
Een `<Indicator>`-component kan gebruikt worden om een badge te tonen op een ander element. De indicator heeft een optionele kleur (default = 'l', 'link') en een optionele positie (default = 'tr', 'top-right').
|
|
795
|
+
Een `<Indicator>`-component kan gebruikt worden om een badge te tonen op een ander element. De indicator heeft een optionele kleur (default = 'l', 'link') en een optionele positie (default = 'tr', 'top-right'). De posities zijn:
|
|
796
|
+
|
|
797
|
+
- `tr`: top-right (default)
|
|
798
|
+
- `tl`: top-left
|
|
799
|
+
- `br`: bottom-right
|
|
800
|
+
- `bl`: bottom-left
|
|
801
|
+
- `tc`: top-center
|
|
802
|
+
- `bc`: bottom-center
|
|
803
|
+
- `rc`: right-center
|
|
804
|
+
- `lc`: left-center
|
|
754
805
|
|
|
755
806
|
Een `<Indicator>` heeft ook een optionele tooltip en een optioneel `label` om binnen de badge een tekst te plaatsen.
|
|
756
807
|
|
|
@@ -766,7 +817,7 @@ Een `<Indicator>` heeft ook een optionele tooltip en een optioneel `label` om bi
|
|
|
766
817
|
|
|
767
818
|
```
|
|
768
819
|
|
|
769
|
-
|
|
820
|
+
#### Kbd & Kbds (Keyboard Key, Keyboard Key group) <a id="component-kbd"></a>
|
|
770
821
|
|
|
771
822
|
Een `<Kbd>` is de weergave van een Keyboard Key. Dus toon bijvoorbeeld een 'S' als een S op een toetsenbord. Bijvoorbeeld voor het weergeven van hotkeys.
|
|
772
823
|
|
|
@@ -782,7 +833,7 @@ De `<Kbds>`-component gebruikt je om emerdere keyboard-keys bij elkaar te zetten
|
|
|
782
833
|
</>
|
|
783
834
|
```
|
|
784
835
|
|
|
785
|
-
|
|
836
|
+
#### Link & LinkButton <a id="component-linkbutton"></a>
|
|
786
837
|
|
|
787
838
|
Link en LinkButton zijn bedoelt om links (`<a>`) en buttons (`<button>`) er, bijvoorbeeld in een tekst, hetzelfde er uit te laten zien. Een Link bevat een url, target etc. die je ook in de `<a>`-tag aantreft, de LinkButton bevat een `onClick()`-methode. Ze zien er wel hetzelfde uit.
|
|
788
839
|
|
|
@@ -795,7 +846,7 @@ Link en LinkButton zijn bedoelt om links (`<a>`) en buttons (`<button>`) er, bij
|
|
|
795
846
|
</div>
|
|
796
847
|
```
|
|
797
848
|
|
|
798
|
-
|
|
849
|
+
#### Menu <a id="component-menu-2"></a>
|
|
799
850
|
|
|
800
851
|
Een menu is een verticale lijst van 'blokjes' met een optioneel label, en een array van items. Deze items kunnen ook weer een lijst van sub-items bevatten.
|
|
801
852
|
De `<Menu />`-tag heeft een `onMenuItemClicked(item: string) => void` function voor als het geselecteerde menu-item wijzigt. Met de prop `initialItem` kan een van de items als default geselecteerd worden.
|
|
@@ -839,9 +890,10 @@ Andere elementen worden **niet** gerendered.
|
|
|
839
890
|
</div>
|
|
840
891
|
```
|
|
841
892
|
|
|
842
|
-
|
|
893
|
+
#### Messages & Notifications <a id="component-messages"></a>
|
|
843
894
|
|
|
844
|
-
Een message of een notifcatie bevatten een tekst. Messages hebben ook een optionele titel. Er zjn
|
|
895
|
+
Een message of een notifcatie bevatten een tekst. Messages hebben ook een optionele titel. Er zjn 6 soorten: _Warning_, _Info_, _Success_, _Danger_, _Link_ & _Primary_. Dus eentje voor elke kleur.
|
|
896
|
+
Messages zijn er ook in 4 maten: `s`, `m`, `l`, `xl`. Die is in te stellen via de `size` property. Default is het `m`, medium.
|
|
845
897
|
|
|
846
898
|
```tsx
|
|
847
899
|
<div>
|
|
@@ -850,7 +902,7 @@ Een message of een notifcatie bevatten een tekst. Messages hebben ook een option
|
|
|
850
902
|
</div>
|
|
851
903
|
```
|
|
852
904
|
|
|
853
|
-
Een notificatie bevat ook een tekst, maar heeft ook een dimsiss-button. Deze methode is verplicht om toe te voegen.
|
|
905
|
+
Een notificatie bevat ook een tekst, maar heeft ook een dimsiss-button. Deze methode is verplicht om toe te voegen. Voor notificaties is er **geen** `size` of `title` property.
|
|
854
906
|
|
|
855
907
|
```tsx
|
|
856
908
|
<div>
|
|
@@ -864,7 +916,7 @@ Een notificatie bevat ook een tekst, maar heeft ook een dimsiss-button. Deze met
|
|
|
864
916
|
</div>
|
|
865
917
|
```
|
|
866
918
|
|
|
867
|
-
|
|
919
|
+
#### Modal <a id="component-modal"></a>
|
|
868
920
|
|
|
869
921
|
Een modal is een pop-up window die de achtergrond donker maakt en content weergeeft in een witte 'box'. Een optionele header of footer scrolled niet mee als de body van de modal zo lang is dat er gescrolled moet worden. Met een state-boolean kan het openen & sluiten van de modal geregeld worden.
|
|
870
922
|
|
|
@@ -930,24 +982,24 @@ Een modal heeft ook verschillende sizes. Met de `size`-prop kan deze ingesteld w
|
|
|
930
982
|
- `'50%'`
|
|
931
983
|
- `'60em'`
|
|
932
984
|
|
|
933
|
-
|
|
985
|
+
#### ProgressBar <a id="component-progressbar"></a>
|
|
934
986
|
|
|
935
987
|
Een progressbar doet precies wat je verwacht.
|
|
936
988
|
|
|
937
|
-
- 4 maten (small (s), medium (m)
|
|
938
|
-
-
|
|
989
|
+
- 4 maten (small (`s`), medium (`m)`, large (`l`) en extralarge (`xl`)). Default = `m`, medium
|
|
990
|
+
- 6 kleuren (danger (`d`), succes (`s`), warning (`w`), link (`l`), info (`i`) en primary (`p`)). Default = info (`i`)
|
|
939
991
|
- de max value is instelbaar, default = 100.
|
|
940
992
|
|
|
941
993
|
```tsx
|
|
942
994
|
<div>
|
|
943
|
-
<ProgressBar value={50}
|
|
995
|
+
<ProgressBar value={50} />
|
|
944
996
|
<ProgressBar color="success" size="m" />
|
|
945
997
|
<ProgressBar max={200} color="d" />
|
|
946
998
|
<ProgressBar value={50} color="l" size="s" />
|
|
947
999
|
</div>
|
|
948
1000
|
```
|
|
949
1001
|
|
|
950
|
-
|
|
1002
|
+
#### TabBar <A id="component-tabbar"></a>
|
|
951
1003
|
|
|
952
1004
|
De TabBar component komt in de plaats van de Tabs component. Deze gaat iets anders om met Tab items dan de oude Tabs-component.
|
|
953
1005
|
|
|
@@ -987,11 +1039,7 @@ const [tab, setTab] = useState<string | number>(100);
|
|
|
987
1039
|
</div>;
|
|
988
1040
|
```
|
|
989
1041
|
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
Table nieuwe stijl. TODO: documentatie & implementatie
|
|
993
|
-
|
|
994
|
-
### SimpleTable <a id="component-simpletable"></a>, voorheen Table
|
|
1042
|
+
#### SimpleTable <a id="component-simpletable"></a>, voorheen Table
|
|
995
1043
|
|
|
996
1044
|
Een SimpleTable is een gewone tabel, dus geen zoekfunctie of sortering zoals de [DataTable](#component-datatable). Het instellen gaat wel hetzelfde. Enige verschil is dat deze niet fullwidth hoeft te zijn.
|
|
997
1045
|
Als de inhoud van een Table kan wijzigen, moet deze data met 'state' worden gebruikt. Anders wordt de inhoud van de tabel niet geüpdate.
|
|
@@ -1020,7 +1068,51 @@ return (
|
|
|
1020
1068
|
);
|
|
1021
1069
|
```
|
|
1022
1070
|
|
|
1023
|
-
|
|
1071
|
+
#### Steps <a id="component-steps"></a>
|
|
1072
|
+
|
|
1073
|
+
De `<Steps>`-component is bedoeld voor het weergeven van een stappenplan. De `<Steps.Item>`-component wordt gebruikt om de stappen te maken.
|
|
1074
|
+
|
|
1075
|
+
##### `<Steps>` heeft de volgende props
|
|
1076
|
+
|
|
1077
|
+
- `className`: extra classes voor de steps-container
|
|
1078
|
+
- `children`: de `<Steps.Item>` componenten. (REQUIRED)
|
|
1079
|
+
- `size`: grootte van de steps (defualt = `m`)
|
|
1080
|
+
- `activeStep`: actieve stap;
|
|
1081
|
+
- `onChangeStep(step: number) => void`: callback voor het wijzigen van de stap
|
|
1082
|
+
- `freeStepChoice`: welke stappen zijn selecteerbaar (default = `disabled`)
|
|
1083
|
+
- `disabled`: alleen linker- en rechter-buurman mogen geselecteerd worden
|
|
1084
|
+
- `allowed`: alle stappen zijn vrij te kiezen
|
|
1085
|
+
- `up`: alleen de stappen rechts zijn vrij te kiezen, links alleen de directe buur
|
|
1086
|
+
- `down`: alleen de stappen links zijn vrij te kiezen, recht alleen de directe buur
|
|
1087
|
+
|
|
1088
|
+
##### `<Steps.Item>` heeft de volgende props
|
|
1089
|
+
|
|
1090
|
+
- `status`: een status van de stap (default = 'pending')
|
|
1091
|
+
- `pending`: stap nog niet gedaan
|
|
1092
|
+
- `error`: een fout in deze stap
|
|
1093
|
+
- `completed`: deze stap is gedaan
|
|
1094
|
+
- `active`: de actieve stap
|
|
1095
|
+
- `title`: een titel voor deze stap
|
|
1096
|
+
- `description`: een langere beschrijving van deze stap
|
|
1097
|
+
- `marker`: een icoon, nummer of letter voor deze stap
|
|
1098
|
+
|
|
1099
|
+
```tsx
|
|
1100
|
+
<>
|
|
1101
|
+
<Steps onChangeStep={(stepNr: number) => console.log(stepNr)} freeStepChoice="disabled">
|
|
1102
|
+
<Steps.Item title="Step 1" marker={1} />
|
|
1103
|
+
<Steps.Item title="" marker={<Icon icon={faFlask} />} />
|
|
1104
|
+
<Steps.Item title="Step 2" details="dit zijn de details voor deze stap" />
|
|
1105
|
+
<Steps.Item title="" marker={<Icon icon={faBomb} />} status="error" />
|
|
1106
|
+
<Steps.Item
|
|
1107
|
+
title="Step 3"
|
|
1108
|
+
marker={(status) => (status == 'pending' ? <Icon icon={faFlag} /> : <Icon icon={faFire} />)}
|
|
1109
|
+
/>
|
|
1110
|
+
<Steps.Item title="Step 4" marker="A" />
|
|
1111
|
+
</Steps>
|
|
1112
|
+
</>
|
|
1113
|
+
```
|
|
1114
|
+
|
|
1115
|
+
#### Tag & Tags <a id="component-tags"></a>
|
|
1024
1116
|
|
|
1025
1117
|
Een `<Tag>` is een klein inline elementje om overal te kunnen stoppen. Tags kunnen een optionele sluit-knop bevatten
|
|
1026
1118
|
De `<Tags>` component kan gebruikt worden om meerdere tags te groeperen. Dan kunnen ze samengeplakt worden, de grootte van alle tags of de alignment kan dan ingesteld worden. Als er een ander element dan een `<Tag>` gebruikt wordt in de `<Tags>`-component, wordt daarover gewaarschuwd in de console.
|
|
@@ -1060,7 +1152,61 @@ Om twee tags als 1 tag te laten zien, kan je de `merged` prop op de `<Tags>`-com
|
|
|
1060
1152
|
</Tags>
|
|
1061
1153
|
```
|
|
1062
1154
|
|
|
1063
|
-
|
|
1155
|
+
#### Timeline <a id="component-timeline"></a>
|
|
1156
|
+
|
|
1157
|
+
De `<TimeLine>`-component kan gebruikt worden om een verticale tijdlijn te maken. Een TimeLine bevat 2 verschillende items: **points** of **items**.
|
|
1158
|
+
|
|
1159
|
+
`<TimeLine>` component heeft de volgende props:
|
|
1160
|
+
|
|
1161
|
+
- `alignment`: positie: `l`, `r`, of `c`. (default = `l`). Met `c` verschijnen de items afwisselend links of rechts van de lijn.
|
|
1162
|
+
- `className`: extra classes voor op de timeline-container
|
|
1163
|
+
- `children`: de content van de timeline, dus `<TimeLine.Point>`'s en `<TimeLine.Item>`'s
|
|
1164
|
+
|
|
1165
|
+
##### `<TimeLine.Point>` component
|
|
1166
|
+
|
|
1167
|
+
De `<TimeLine.Point>`-component is een punt met een titel op de tijdlijn die goed zichtbaar moet zijn, bijvoorbeeld een jaarovergang. Of een ander soort titel
|
|
1168
|
+
|
|
1169
|
+
- `children`: Content van dit punt
|
|
1170
|
+
- `color`: kleur van dit punt (default = `light`, grijs)
|
|
1171
|
+
- `size`: de grotte van het punt (default = `s`, small)
|
|
1172
|
+
- `tooltip`: een tooltip voor het punt.
|
|
1173
|
+
|
|
1174
|
+
##### `<TimeLine.Item>` component
|
|
1175
|
+
|
|
1176
|
+
De `<TimeLine.Item>`-component geeft een item op de tijdlijn aan. Een item heeft een heading (of titel) en een markeerpunt op de lijn. Dit markeerpunt kan worden aangepast, anders is het een grijze cirkel. De content van het item bevindt zich in de children van deze component.
|
|
1177
|
+
|
|
1178
|
+
- `heading`: de titel van het item (bijvoorbeeld een datum)
|
|
1179
|
+
- `children`: de content van het item. Dit kan gewoon HTML zijn.
|
|
1180
|
+
- `marker`: een object om een icoon of een kleur mee door te geven. Deze prop bevat 2 props:
|
|
1181
|
+
- `icon`: een icon (string of Font Awesome Icon Prop) voor de markeerstip
|
|
1182
|
+
- `color`: de kleur van de markeerstip (default = undefined, een grijze cirkel)
|
|
1183
|
+
|
|
1184
|
+
```tsx
|
|
1185
|
+
<>
|
|
1186
|
+
<TimeLine>
|
|
1187
|
+
<TimeLine.Point>Start</TimeLine.Point>
|
|
1188
|
+
<TimeLine.Point color="l">2019</TimeLine.Point>
|
|
1189
|
+
<TimeLine.Item heading="Maart 2019">Oh boi oh boi oh boi oh boi</TimeLine.Item>
|
|
1190
|
+
<TimeLine.Item marker={{ color: 's' }} heading="November 2019">
|
|
1191
|
+
Oompa Loompa Dooba die dee.
|
|
1192
|
+
</TimeLine.Item>
|
|
1193
|
+
|
|
1194
|
+
<TimeLine.Point size="m">2020</TimeLine.Point>
|
|
1195
|
+
<TimeLine.Item marker={{ icon: faFlask, color: 's' }} heading="August 2020">
|
|
1196
|
+
Whoop sie doop sie dooooooop
|
|
1197
|
+
</TimeLine.Item>
|
|
1198
|
+
<TimeLine.Item marker={{ icon: 'fas fa-', color: 's' }} heading="December 2020">
|
|
1199
|
+
<p>Bibbity Boppity Boo</p>
|
|
1200
|
+
</TimeLine.Item>
|
|
1201
|
+
|
|
1202
|
+
<TimeLine.Point color="d" size="l">
|
|
1203
|
+
End
|
|
1204
|
+
</TimeLine.Point>
|
|
1205
|
+
</TimeLine>
|
|
1206
|
+
</>
|
|
1207
|
+
```
|
|
1208
|
+
|
|
1209
|
+
#### Titles & Subtitles <a id="component-titles"></a>
|
|
1064
1210
|
|
|
1065
1211
|
Een verzameling van h1...h6 tags. Er zijn drie verschillende componenten om [Bulma Titles](https://bulma.io/documentation/elements/title/) te gebruiken.
|
|
1066
1212
|
|
|
@@ -1091,9 +1237,9 @@ Allemaal hebben ze 2 waarden die isntelbaar zijn voor Sizes: _headingSize_ en _b
|
|
|
1091
1237
|
</div>
|
|
1092
1238
|
```
|
|
1093
1239
|
|
|
1094
|
-
|
|
1240
|
+
#### ToggleBar <a id="component-toggles"></a>
|
|
1095
1241
|
|
|
1096
|
-
De ToggleBar component toont een ritje aan elkaar vastgemaakte knoppen.
|
|
1242
|
+
De ToggleBar component toont een ritje aan elkaar vastgemaakte knoppen. De ToggleBar kan alleen maar `<ToggleBar.Item>` of `<ToggleBar.OnOffItem>` bevatten. Bij andere items wordt een warning geprint in de console en deze andere items worden **niet** gerendered.
|
|
1097
1243
|
|
|
1098
1244
|
De ToggleBar heeft de volgende props:
|
|
1099
1245
|
|
|
@@ -1106,7 +1252,7 @@ De ToggleBar heeft de volgende props:
|
|
|
1106
1252
|
- `onColor`: ColorProp voor de 'on'-status (default 's' (success, groen))
|
|
1107
1253
|
- `offColor`: ColorProp voor de 'off'-status (default 'd' (danger, rood))
|
|
1108
1254
|
|
|
1109
|
-
|
|
1255
|
+
##### Common props Toggle Items
|
|
1110
1256
|
|
|
1111
1257
|
Er zijn een paar props op de `Item` en de `OnOffItem` hetzelfde.
|
|
1112
1258
|
|
|
@@ -1114,7 +1260,7 @@ Er zijn een paar props op de `Item` en de `OnOffItem` hetzelfde.
|
|
|
1114
1260
|
- `tooltip`: tooltip voor een toggle-item
|
|
1115
1261
|
- `disabled`: disable een toggle-item`
|
|
1116
1262
|
|
|
1117
|
-
|
|
1263
|
+
##### ToggleItem
|
|
1118
1264
|
|
|
1119
1265
|
ToggleItems zijn meerdere knopjes op de bar, waarvan er maar 1 de status 'on' heeft. De andere buttons hebben dan de 'off'-state.
|
|
1120
1266
|
|
|
@@ -1130,7 +1276,7 @@ De `onToggle()`-callback wordt aangeroepen als de getogglede knop wordt verander
|
|
|
1130
1276
|
</div>
|
|
1131
1277
|
```
|
|
1132
1278
|
|
|
1133
|
-
|
|
1279
|
+
##### OnOffToggleItem
|
|
1134
1280
|
|
|
1135
1281
|
OnOffToggleItems zijn knopjes die apart on/off te toggelen zijn. Elke knop heeft een eigen onToggle-function die aangeroepen wordt als op de knop wordt gedrukt.
|
|
1136
1282
|
|
|
@@ -1180,24 +1326,25 @@ Ze hebben 2 props meer dan de ToggleItems:
|
|
|
1180
1326
|
</div>
|
|
1181
1327
|
```
|
|
1182
1328
|
|
|
1183
|
-
|
|
1329
|
+
### Form & inputs <a id="form"></a>
|
|
1184
1330
|
|
|
1185
1331
|
De library bevat componenten om als losse inputs, selects, ranges of checkboxes te gebruiken of om een form helemaal samen te stellen. Elke input heeft een validatie-object met wat standaard validatie-opties, een optionele methode om een waarde te evalueren (`onValidate()`). De `name` en `id` attributen zijn verplicht. Als voor een input geen `label` is opgegeven, wordt de `name` daarvoor gebruikt.
|
|
1186
1332
|
|
|
1187
1333
|
- [Input Types](#form-input)
|
|
1188
|
-
-
|
|
1189
|
-
-
|
|
1190
|
-
-
|
|
1191
|
-
-
|
|
1192
|
-
-
|
|
1193
|
-
-
|
|
1194
|
-
-
|
|
1195
|
-
-
|
|
1196
|
-
-
|
|
1197
|
-
-
|
|
1198
|
-
-
|
|
1199
|
-
-
|
|
1334
|
+
- `<TextInput>`: invoeren van tekst, urls, etc.
|
|
1335
|
+
- `<PasswordInput>`: invoeren van een wachtwoord, met puntjes ipv karakters
|
|
1336
|
+
- `<EmailInput>`: invoeren van een emailadres
|
|
1337
|
+
- `<NumberInput>`: invoeren van een nummer (alleen numerieke karakters)
|
|
1338
|
+
- `<ColorInput>`: invoeren van een kleur (in hex-formaat, altijd # + 6 hex-values)
|
|
1339
|
+
- `<HiddenInput>`: niet-bewerkbare onzichtbare input die WEL belangrijk is.
|
|
1340
|
+
- `<DateInput>`: invoeren van een datum
|
|
1341
|
+
- `<TimeInput>`: invoeren van een tijd
|
|
1342
|
+
- `<DateTimeInput>`: invoeren van een datum & een tijd als combi
|
|
1343
|
+
- `<TextAreaInput>`: invoer van een tekst
|
|
1344
|
+
- `<FileInput>`: invoer van een file
|
|
1345
|
+
- `<BasicInput>`: zelf in te stellen input
|
|
1200
1346
|
- [Checkbox](#form-checkbox)
|
|
1347
|
+
- [RadioButtons](#form-radio)
|
|
1201
1348
|
- [Ranges](#form-ranges)
|
|
1202
1349
|
- _Range_: een getal selecteren
|
|
1203
1350
|
- _MultiRange_: 2 getallen selecteren (een range)
|
|
@@ -1206,7 +1353,7 @@ De library bevat componenten om als losse inputs, selects, ranges of checkboxes
|
|
|
1206
1353
|
- [Form](#form-form)
|
|
1207
1354
|
- [Form-builder](#form-component)
|
|
1208
1355
|
|
|
1209
|
-
|
|
1356
|
+
#### Input Types<a id="form-input"></a>
|
|
1210
1357
|
|
|
1211
1358
|
Er zijn verschillende soorten inputs voor de afhandeling van input-types. Er zijn een aantal props die op alle inputs voorkomen:
|
|
1212
1359
|
|
|
@@ -1236,27 +1383,6 @@ Er zijn verschillende soorten inputs voor de afhandeling van input-types. Er zij
|
|
|
1236
1383
|
- `direction`: orientatie van de input (horizontaal of vertical, default = 'horizontal')
|
|
1237
1384
|
- `size`: de grootte van een input
|
|
1238
1385
|
|
|
1239
|
-
- Tekst:
|
|
1240
|
-
- **TextInput:** invoeren van tekst, urls, etc.
|
|
1241
|
-
- **EmailInput:** invoeren van een emailadres. Valideert het emailadres met een regex (overschrijfbaar mbv validatie-object).
|
|
1242
|
-
- **PasswordInput:** invoeren van een wachtwoord.
|
|
1243
|
-
- **TextAreaInput:** een textarea, werkt in tegenstelling tot de `<textarea></textarea>`-tag _niet_ met children. De waarde kan gezet worden met de `value`-attribuut.
|
|
1244
|
-
- Getallen:
|
|
1245
|
-
- **NumberInput:** invoer van een nummer
|
|
1246
|
-
- **Range:** invoer van een nummer, maar dan met een [range](#form-ranges)
|
|
1247
|
-
- **MultiRange:** invoer van twee nummers, met behulp van een [range](#form-ranges)
|
|
1248
|
-
- Datum / Tijd
|
|
1249
|
-
- **DateInput:** invoer van ene datum. De value kan als `string` of `Date` worden opgegeven
|
|
1250
|
-
- **TimeInput:** invoer van een tijdstip. De value kan als `string` of `Date` worden opgegeven
|
|
1251
|
-
- **DateTimeInput:** invoer-combi voor een datum & tijd. De value kan als `string` of `Date` worden opgegeven
|
|
1252
|
-
- Overig
|
|
1253
|
-
- **BasicInput** een input om helemaal zelf te kunnen instellen
|
|
1254
|
-
- **ColorInput** een invoer voor een kleur. Altijd een hex-waarde, de echte selectie is afhankelijk van de browser
|
|
1255
|
-
- **HiddenInput** een invoer die wel belangrijk is, maar niet gezien en niet bewerkt mag worden. Heeft vanzelfsprekend geen styling
|
|
1256
|
-
- **FileInput** invoer van een (of meer) files
|
|
1257
|
-
|
|
1258
|
-
##### voorbeeld
|
|
1259
|
-
|
|
1260
1386
|
```tsx
|
|
1261
1387
|
<>
|
|
1262
1388
|
<BasicInput name="something" type="text">
|
|
@@ -1279,9 +1405,18 @@ Er zijn verschillende soorten inputs voor de afhandeling van input-types. Er zij
|
|
|
1279
1405
|
</>
|
|
1280
1406
|
```
|
|
1281
1407
|
|
|
1282
|
-
|
|
1408
|
+
#### CheckBox <a id="form-checkbox"></a>
|
|
1409
|
+
|
|
1410
|
+
Een checkbox is een checkbox en werkt als een checkbox. De styling is een beetje aangepast van de standaard checkbox.
|
|
1411
|
+
Er zijn nu sizes (`s`, `m` (default), `l` en `xl`) en colors (`l` (default), `w`, `d`, `s`, `i`, `p`).
|
|
1412
|
+
Deze zijn in te stellen met de `size` en de `color` prop.
|
|
1283
1413
|
|
|
1284
|
-
|
|
1414
|
+
Ook is er een `styling`-prop. Met deze kan je wat styling aanpassen
|
|
1415
|
+
|
|
1416
|
+
- `noborder`: de randen van de checkbox zijn onzichtbaar
|
|
1417
|
+
- `colored`: de checkbox zelf heeft de achtergrondkleur uit de `color`-prop
|
|
1418
|
+
- `blocky`: de checkbox EN het label hebben dezelfde achtergrondkleur
|
|
1419
|
+
- `rounded`: afgeronde hoeken in plaats van vierkante hoeken op de checkbox.
|
|
1285
1420
|
|
|
1286
1421
|
```tsx
|
|
1287
1422
|
<div>
|
|
@@ -1289,7 +1424,7 @@ Er zijn verschillende soorten inputs voor de afhandeling van input-types. Er zij
|
|
|
1289
1424
|
</div>
|
|
1290
1425
|
```
|
|
1291
1426
|
|
|
1292
|
-
|
|
1427
|
+
#### RadioButtons <a id="form-radio"></a>
|
|
1293
1428
|
|
|
1294
1429
|
Radiobuttons kan je maken met de `<RadioGroup>`-component. De `<RadioGroup>` zelf is een container voor de `<RadioGroup.Item>`-buttons omeen radio-button-group te maken.
|
|
1295
1430
|
|
|
@@ -1301,12 +1436,27 @@ Een `<RadioGroup.Item>` component heeft de volgende props:
|
|
|
1301
1436
|
- `disabled?`: is dit item disabled of niet?
|
|
1302
1437
|
- `id?`: een id voor de radio-input
|
|
1303
1438
|
|
|
1439
|
+
Er zijn nu sizes (`s`, `m` (default), `l` en `xl`) en colors (`l` (default), `w`, `d`, `s`, `i`, `p`).
|
|
1440
|
+
Deze zijn in te stellen met de `size` en de `color` prop.
|
|
1441
|
+
|
|
1442
|
+
Ook is er een `styling`-prop. Met deze kan je wat styling aanpassen
|
|
1443
|
+
|
|
1444
|
+
- `noborder`: de randen van de checkbox zijn onzichtbaar
|
|
1445
|
+
- `colored`: de checkbox zelf heeft de achtergrondkleur uit de `color`-prop
|
|
1446
|
+
- `blocky`: de checkbox EN het label hebben dezelfde achtergrondkleur
|
|
1447
|
+
- `rounded`: afgeronde hoeken in plaats van vierkante hoeken op de checkbox.
|
|
1448
|
+
|
|
1449
|
+
> **Raar:**
|
|
1450
|
+
> de waarde `rounded` voor de `styling`-prop slaat nergens op. Maar ze maken gebruik van dezelfde Type als die van checkboxes, daarom zit hij er wel.
|
|
1451
|
+
|
|
1304
1452
|
```tsx
|
|
1305
1453
|
<>
|
|
1306
1454
|
<RadioGroup name="radio-1" onValueChanged={(v) => console.log('woohoo!', v)}>
|
|
1307
1455
|
<RadioGroup.Item value="Ein">Ein</RadioGroup.Item>
|
|
1308
|
-
<RadioGroup.Item value="Zwei">
|
|
1309
|
-
|
|
1456
|
+
<RadioGroup.Item value="Zwei" styling="noborder">
|
|
1457
|
+
Zwei
|
|
1458
|
+
</RadioGroup.Item>
|
|
1459
|
+
<RadioGroup.Item value="Polizei" color="l" size="xl">
|
|
1310
1460
|
<span>Polizei!</span>
|
|
1311
1461
|
</RadioGroup.Item>
|
|
1312
1462
|
<RadioGroup.Item value="Drei">Drei</RadioGroup.Item>
|
|
@@ -1328,9 +1478,9 @@ RadioButtons kunnen ook alleenstaand gebruikt worden. Deze component heet `<Radi
|
|
|
1328
1478
|
const [radio, setRadio] = React.useState('Sieben');
|
|
1329
1479
|
|
|
1330
1480
|
<>
|
|
1331
|
-
<Radio selectedItem={radio} value="Fünf" name="radio-2" setter={setRadio} />
|
|
1332
|
-
<Radio selectedItem={radio} value="Sechs" name="radio-2" setter={setRadio} disabled />
|
|
1333
|
-
<Radio selectedItem={radio} value="Alte Hex" name="radio-2" setter={setRadio} />
|
|
1481
|
+
<Radio selectedItem={radio} value="Fünf" name="radio-2" setter={setRadio} color="d"/>
|
|
1482
|
+
<Radio selectedItem={radio} value="Sechs" name="radio-2" setter={setRadio} disabled size="xl"/>
|
|
1483
|
+
<Radio selectedItem={radio} value="Alte Hex" name="radio-2" setter={setRadio} styling="noborder"/>
|
|
1334
1484
|
<Radio selectedItem={radio} value="Sieben" name="radio-2" setter={setRadio} />
|
|
1335
1485
|
<Radio selectedItem={radio} value="Acht" name="radio-2" setter={setRadio} />
|
|
1336
1486
|
<Radio selectedItem={radio} value="Gute Nacht" name="radio-2" setter={setRadio}>
|
|
@@ -1339,9 +1489,9 @@ const [radio, setRadio] = React.useState('Sieben');
|
|
|
1339
1489
|
<>
|
|
1340
1490
|
```
|
|
1341
1491
|
|
|
1342
|
-
|
|
1492
|
+
#### Ranges <a id="form-ranges"></a>
|
|
1343
1493
|
|
|
1344
|
-
Een Range of MultiRange is een component om op een andere manier een nummer te selecteren. In plaats van invullen, selecteer je deze op een schaal. Er zijn 2 soorten ranges: **Range** en **MultiRange**. Een Range werkt hetzelfde als een `<input type="number">`, het resultaat is ook een number. Een MultiRange werkt iets anders: het resultaat is een `number[]`, bestaand uit 2 getallen. Deze getallen staan altijd in dezelfde volgorde, dus als je twee begin-waardes opgeeft, komen die er in dezelfde volgorde uit. _Dus niet gesorteerd van klein naar groot_.
|
|
1494
|
+
Een `<Range>` of `<MultiRange>` is een component om op een andere manier een nummer te selecteren. In plaats van invullen, selecteer je deze op een schaal. Er zijn 2 soorten ranges: **Range** en **MultiRange**. Een Range werkt hetzelfde als een `<input type="number">`, het resultaat is ook een number. Een MultiRange werkt iets anders: het resultaat is een `number[]`, bestaand uit 2 getallen. Deze getallen staan altijd in dezelfde volgorde, dus als je twee begin-waardes opgeeft, komen die er in dezelfde volgorde uit. _Dus niet gesorteerd van klein naar groot_.
|
|
1345
1495
|
|
|
1346
1496
|
Als er in het validatie geen minimale of maximale waarde te vinden is, worden standaard `0` en `100` gebruikt.
|
|
1347
1497
|
|
|
@@ -1352,7 +1502,7 @@ Als er in het validatie geen minimale of maximale waarde te vinden is, worden st
|
|
|
1352
1502
|
</div>
|
|
1353
1503
|
```
|
|
1354
1504
|
|
|
1355
|
-
|
|
1505
|
+
#### Select <a id="form-select"></a>
|
|
1356
1506
|
|
|
1357
1507
|
Een select is een lijstje met opties waaruit je er een kan selecteren. De opties van een select kunnen uit 3 types bestaan:
|
|
1358
1508
|
|
|
@@ -1361,8 +1511,6 @@ Een select is een lijstje met opties waaruit je er een kan selecteren. De opties
|
|
|
1361
1511
|
- **SelectOptionGroupType[]:** een gegroupeerde option array voor `<optgroup>` tags. Kan daardoor ook disablen.
|
|
1362
1512
|
Om meerdere values te selecteren in een select, kan je een [MultiSelect](#form-multiselect) gebruiken.
|
|
1363
1513
|
|
|
1364
|
-
##### een select met string[]
|
|
1365
|
-
|
|
1366
1514
|
```tsx
|
|
1367
1515
|
<div>
|
|
1368
1516
|
{/* Een select met string-options, deze options zijn de value EN de tekst */}
|
|
@@ -1398,7 +1546,7 @@ Een select is een lijstje met opties waaruit je er een kan selecteren. De opties
|
|
|
1398
1546
|
</div>
|
|
1399
1547
|
```
|
|
1400
1548
|
|
|
1401
|
-
|
|
1549
|
+
#### Multi Select <a id="form-multiselect"> </a>
|
|
1402
1550
|
|
|
1403
1551
|
Een Multiselect werkt bijna hetzelfde als een select. Dezelfde type options worden ondersteund, alleen is het mogelijk om er meerdere te selecteren met `ctrl-click`, `cmd-click` of `shift-click`.
|
|
1404
1552
|
|
|
@@ -1465,11 +1613,11 @@ Een Multiselect werkt bijna hetzelfde als een select. Dezelfde type options word
|
|
|
1465
1613
|
</div>
|
|
1466
1614
|
```
|
|
1467
1615
|
|
|
1468
|
-
|
|
1616
|
+
#### Validatie <a id="form-validatie"></a>
|
|
1469
1617
|
|
|
1470
1618
|
Elke input, range, select of checkbox heeft een optioneel validatie-object. Daarop zitten een aantal, ook optionele, properties en een methode. Die worden gebruikt om wat regels en validatie toe te voegen aan die input. Als een value van een input niet voldoet aan de validatie-regels, wordt deze rood omlijnt.
|
|
1471
1619
|
|
|
1472
|
-
|
|
1620
|
+
###### Validatie-Type
|
|
1473
1621
|
|
|
1474
1622
|
```ts
|
|
1475
1623
|
export type FormValidatie = {
|
|
@@ -1492,7 +1640,7 @@ export type FormValidatie = {
|
|
|
1492
1640
|
- `pattern`: voor tekst-inputs: voldoet de waarde aan deze regex. In EmailInput overschrijft deze de default e-mail-validatie regex.
|
|
1493
1641
|
- `onValidate()`: een eigen validatie-methode (als gewenst). Wordt aangeroepen als het veld wordt gevalideerd. De methode met een lege string als _geldig_ of een foutmelding als _ongeldig_ returnen.
|
|
1494
1642
|
|
|
1495
|
-
|
|
1643
|
+
#### Form <a id="form-form"></a>
|
|
1496
1644
|
|
|
1497
1645
|
De `<Form>`-component is een wrapper voor een gewone `<form>`-tag. Hij bevat (als het goed is) alle normale attributen die ook bij een gewone `<form>`-tag te vinden zijn. Deze component maakt het mogelijk om voor alle inputs in het form de `direction`- en de `size`-attributen in te stellen. Hij exporteert de inputs nogmaals in de vorm `<Form.XXX>` (zie onder).
|
|
1498
1646
|
|
|
@@ -1510,6 +1658,7 @@ De `<Form>`-component is een wrapper voor een gewone `<form>`-tag. Hij bevat (al
|
|
|
1510
1658
|
- `<Form.Select>`: een input met type `select`, zelfde als `<Select>`.
|
|
1511
1659
|
- `<Form.MultiSelect>`: een input met type `select`, zelfde als `<MultiSelect>`.
|
|
1512
1660
|
- `<Form.Checkbox>`: een input met type `checkbox`, zelfde als `<Checkbox>`.
|
|
1661
|
+
- `<Form.RadioGroup>`: een input met type `radio`, zelfde als `<RadioGroup>`.
|
|
1513
1662
|
- `<Form.Date>`: een input met type `date`, zelfde als `<DateInput>`.
|
|
1514
1663
|
- `<Form.Time>`: een input met type `time`, zelfde als `<TimeInput>`.
|
|
1515
1664
|
- `<Form.DateTime>`: een input met type `datetime-local`, zelfde als `<DateTimeInput>`.
|
|
@@ -1518,12 +1667,10 @@ De `<Form>`-component is een wrapper voor een gewone `<form>`-tag. Hij bevat (al
|
|
|
1518
1667
|
|
|
1519
1668
|
##### Andere componenten binnen `<Form>`
|
|
1520
1669
|
|
|
1521
|
-
- `<Form.Line>` Een wrapper voor meerdere inputs, om deze op een lijn te kunnen zetten (achter elkaar). Dan moet je
|
|
1670
|
+
- `<Form.Line>` Een wrapper voor meerdere inputs, om deze op een lijn te kunnen zetten (achter elkaar). Dan moet je _wel_ zelf de direction instellen als die afwijkt van de normale form-direction.
|
|
1522
1671
|
- `Form.Space`: een container voor vrije ruimte. Hier kan je helemaal losgaan met eigen componenten. Deze container houdt zich wel aan de form-direction voor de positie.
|
|
1523
1672
|
- `<Form.Buttons`: een container voor de buttons. Werkt hetzelfde als `<ButtonGroup>`. Voor bijvoorbeeld de submit-button voor een form.
|
|
1524
1673
|
|
|
1525
|
-
##### Voorbeeld
|
|
1526
|
-
|
|
1527
1674
|
```tsx
|
|
1528
1675
|
<>
|
|
1529
1676
|
<Form direction={direction} size={size}>
|
|
@@ -1551,7 +1698,7 @@ De `<Form>`-component is een wrapper voor een gewone `<form>`-tag. Hij bevat (al
|
|
|
1551
1698
|
</>
|
|
1552
1699
|
```
|
|
1553
1700
|
|
|
1554
|
-
|
|
1701
|
+
#### Form-Builder <a id="form-component"></a>
|
|
1555
1702
|
|
|
1556
1703
|
Een **Form** is ook beschikbaar als component. Om te werken heeft die nodig:
|
|
1557
1704
|
|
|
@@ -1585,7 +1732,7 @@ Het resultaat van deze form komt via de `onSubmit()` methode naar buiten. Als de
|
|
|
1585
1732
|
</div>
|
|
1586
1733
|
```
|
|
1587
1734
|
|
|
1588
|
-
|
|
1735
|
+
###### Resultaat van `method="post"` en `method="get"`
|
|
1589
1736
|
|
|
1590
1737
|
```ts
|
|
1591
1738
|
// post
|
|
@@ -1600,6 +1747,168 @@ Het resultaat van deze form komt via de `onSubmit()` methode naar buiten. Als de
|
|
|
1600
1747
|
('Token=Bazinga%21&Naam=Brad+Wurst&Email=brad%40wurst.com&Wachtwoord=123123&Leeftijd=31');
|
|
1601
1748
|
```
|
|
1602
1749
|
|
|
1750
|
+
## Hooks <a id="hooks"></a>
|
|
1751
|
+
|
|
1752
|
+
- [Hooks](#hooks)
|
|
1753
|
+
- [useClipboard](#hooks-use-clipboard)
|
|
1754
|
+
- [useDebouncedValue](#hooks-use-debounced-value)
|
|
1755
|
+
- [useHotkeys](#hooks-use-hotkeys)
|
|
1756
|
+
- [useToggle & useBoolToggle](#hooks-use-toggle)
|
|
1757
|
+
- [Publiceren](#publiceren)
|
|
1758
|
+
|
|
1759
|
+
Er zijn een paar hooks in deze library. Geen idee of deze hooks nuttig zijn, maar je kan ze gebruiken.
|
|
1760
|
+
|
|
1761
|
+
#### useClipboard <a id="hooks-use-clipboard"></a>
|
|
1762
|
+
|
|
1763
|
+
De `useClibboard()`-hook kan je gebruiken om een waarde te kopiëren om die vervolgens ergens te kunnen plakken. Het object van deze hook heeft 4 properties:
|
|
1764
|
+
|
|
1765
|
+
- `copy`: een function om een waarde te kopiëren naar het clipboard
|
|
1766
|
+
- `copied`: een boolean die `true` is als een waarde minder dan de timeout (default 2000ms) geleden gekopieerd is
|
|
1767
|
+
- `reset`: een function om de timout te 'clearen' en `copied` te resetten
|
|
1768
|
+
- `error`: bevat een `Error` object als er iets is fout gegaan
|
|
1769
|
+
|
|
1770
|
+
```tsx
|
|
1771
|
+
function UseClipboardExample(props: {}) {
|
|
1772
|
+
const clipboard = useClipboard({timeout: 500});
|
|
1773
|
+
|
|
1774
|
+
const handleClick = () => {
|
|
1775
|
+
clipboard.copy('Hello World!');
|
|
1776
|
+
if(clipboard.error) console.error('error on copying', clipboard.error);
|
|
1777
|
+
|
|
1778
|
+
clipboard.reset();
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
return <Button onClick={handleClick}>
|
|
1782
|
+
{clipboard.copied ? 'Paste it somewhere' ? 'Copy something'}
|
|
1783
|
+
</Button>
|
|
1784
|
+
|
|
1785
|
+
}
|
|
1786
|
+
```
|
|
1787
|
+
|
|
1788
|
+
#### useDebouncedValue <a id="hooks-use-debounced-value"></a>
|
|
1789
|
+
|
|
1790
|
+
De `useDebouncedValue()`-hook kan je gebruiken om een waarde vertraagd aan te passen. Dat kan handig zijn bij zware operaties gebaseed op states. Bijvoorbeeld het verzenden van een zoek-request of het opzoeken van een item in een lange lijst.
|
|
1791
|
+
|
|
1792
|
+
De parameters zijn:
|
|
1793
|
+
|
|
1794
|
+
- `value`: de bronwaarde die vertraagd bijgewerkt moet worden.
|
|
1795
|
+
- `options`: opties voor de hook. Op dit moment zijn dat deze defaults:
|
|
1796
|
+
|
|
1797
|
+
```ts
|
|
1798
|
+
options: useDebounceHookOptions = {
|
|
1799
|
+
leading: true,
|
|
1800
|
+
delay: 500,
|
|
1801
|
+
};
|
|
1802
|
+
```
|
|
1803
|
+
|
|
1804
|
+
Deze hook geeft een tuple (net zoals bij `React.useState()`) met 2 objecten terug:
|
|
1805
|
+
|
|
1806
|
+
- `debounced`, type `T` de waarde voor NA het debouncen
|
|
1807
|
+
- `cancel`, type `() => void` de functie om de debouncen te stoppen. De waarde van `debounced` wordt dan niet geupdate.
|
|
1808
|
+
|
|
1809
|
+
> De `useDebounce()`-hook kan optioneel een type meekrijgen voor de waarde van `debounced`. Dit is optioneel
|
|
1810
|
+
|
|
1811
|
+
```tsx
|
|
1812
|
+
function UseDebouncedValueDemo() {
|
|
1813
|
+
const [value, setValue] = useState('');
|
|
1814
|
+
const [debounced, cancel] = useDebouncedValue<string>(value, { delay: 2000 });
|
|
1815
|
+
|
|
1816
|
+
return (
|
|
1817
|
+
<>
|
|
1818
|
+
<Input
|
|
1819
|
+
label="debounce value"
|
|
1820
|
+
name="debouncevalue"
|
|
1821
|
+
value={value}
|
|
1822
|
+
onChange={(e) => setValue(e.currentTarget.value)}
|
|
1823
|
+
/>
|
|
1824
|
+
<Button onClick={cancel} size="lg" style={{ marginLeft: 15 }}>
|
|
1825
|
+
Cancel
|
|
1826
|
+
</Button>
|
|
1827
|
+
|
|
1828
|
+
<p>Value: {value}</p>
|
|
1829
|
+
<p>Debounced value: {debounced}</p>
|
|
1830
|
+
</>
|
|
1831
|
+
);
|
|
1832
|
+
}
|
|
1833
|
+
```
|
|
1834
|
+
|
|
1835
|
+
#### useHotkeys <a id="hooks-use-hotkeys"></a>
|
|
1836
|
+
|
|
1837
|
+
De `useHotkeys()`-hook luistert naar toetsen-combinaties op het `document`-element. De hook zelf werkt **alleen** op dat element. Voor andere elementen moet je de `getHotkeyHandler()` gebruiken, die samen met de `useHotkeys()`-hook wordt geëxporteerd.
|
|
1838
|
+
|
|
1839
|
+
`useHotkeys()` heeft 1 parameters. Deze bestaat uit een array van toets-combinaties en handler-tuples (zie `HotkeyItem`). Deze tuples bestaan uit 2 delen:
|
|
1840
|
+
|
|
1841
|
+
- `hotkey`: hotkey-string, als `ctrl+E`, `shift+alt+L`, `mod+S`
|
|
1842
|
+
- `handler` functie die aangeroepen moet worden als de keys zijn gebruikt.
|
|
1843
|
+
|
|
1844
|
+
> **Formats voor de hotkeys**
|
|
1845
|
+
>
|
|
1846
|
+
> - `mod+S`: op macOS Cmd+S, op Windows Ctrl+S
|
|
1847
|
+
> - `ctrl+shift+X`: meerdere modifiers
|
|
1848
|
+
> - `ctrl + shift + X + Y`: spaties zijn toegestaan
|
|
1849
|
+
> - `ArrowLeft`: speciale toetsen volgens Key values van keyboard events (<a href="https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values" target="_blank">MDN</a>)
|
|
1850
|
+
|
|
1851
|
+
##### hotkeys op een ander element
|
|
1852
|
+
|
|
1853
|
+
Als een toetsen-combi bij een specifiek element hoort, dan moet je zelf de event-listener maken. Daarvoor is de `getHotkeyHandler()`-function. Deze werkt precies hetzelfde als de hook, maar is geen echte hook.
|
|
1854
|
+
|
|
1855
|
+
```tsx
|
|
1856
|
+
function HotkeysExample() {
|
|
1857
|
+
// useHotkeys alleen op het document-element
|
|
1858
|
+
useHotkeys([
|
|
1859
|
+
['mod+J', () => console.log('Toggle color scheme')],
|
|
1860
|
+
['ctrl+K', () => console.log('Trigger search')],
|
|
1861
|
+
['alt+mod+shift+X', () => console.log('Rick roll')],
|
|
1862
|
+
]);
|
|
1863
|
+
|
|
1864
|
+
// met getHotkeyHandler kunnen hotkeys op een specifiek element gezet worden
|
|
1865
|
+
return (
|
|
1866
|
+
<TextInput
|
|
1867
|
+
placeholder="Your message"
|
|
1868
|
+
label="Press ⌘+Enter or Ctrl+Enter when input has focus to send message"
|
|
1869
|
+
value={value}
|
|
1870
|
+
onChange={(event) => setValue(event.target.value)}
|
|
1871
|
+
onKeyDown={getHotkeyHandler([
|
|
1872
|
+
['mod+Enter', () => console.log('submit')],
|
|
1873
|
+
['mod+S', () => console.log('save')],
|
|
1874
|
+
])}
|
|
1875
|
+
/>
|
|
1876
|
+
);
|
|
1877
|
+
}
|
|
1878
|
+
```
|
|
1879
|
+
|
|
1880
|
+
#### useToggle & useBoolToggle <a id="hooks-use-toggle"></a>
|
|
1881
|
+
|
|
1882
|
+
De `useToggle()`- en `useBoolToggle()`-hooks kunnen gebruikt worden voor het togglen tussen twee waarden. De `useBoolToggle()`-hook is een voorgekauwde versie van de `useToggle()`-hook met een boolean als bronwaarde. Aan de `useToggle()` kan een type worden meegegeven.
|
|
1883
|
+
|
|
1884
|
+
de parameters voor de `useToggle()`-hook zijn:
|
|
1885
|
+
|
|
1886
|
+
- `initialState`: type `T`: de beginwaarde van de toggle
|
|
1887
|
+
- `options`: type `[T, T]`: de waarden waartussen getoggled wordt.
|
|
1888
|
+
|
|
1889
|
+
Bij de `useBoolToggle()`-hook is er maar 1 _optionele_ parameter:`initialValue`. Deze is default `false`.
|
|
1890
|
+
|
|
1891
|
+
Van beide hooks wordt een tuple (net als `React.useState()`) returned met 2 objecten:
|
|
1892
|
+
|
|
1893
|
+
- `state`: de huidige status van de toggle
|
|
1894
|
+
- `toggle()`: een functie om te togglen.
|
|
1895
|
+
|
|
1896
|
+
bij de `toggle()` function is het mogelijk om een bepaalde status te forceren, door de waarde als parameter mee te geven.
|
|
1897
|
+
|
|
1898
|
+
```tsx
|
|
1899
|
+
function ToggleDemo() {
|
|
1900
|
+
const [isVisible, toggleVisible] = useBoolToggle(); // start op isVisible = false
|
|
1901
|
+
const [color, toggleColor] = useToggle('red', ['red', 'blue']); // start op color = red, toggle tussen red & blue
|
|
1902
|
+
const [dier, toggleDier] = useToggle<Dier>(krokodil, [krokodil, alligator]]); // toggle met Type
|
|
1903
|
+
|
|
1904
|
+
return <>
|
|
1905
|
+
<Button.Primary onClick={() => toggleVsible()}>Visible</Button.Primary>
|
|
1906
|
+
<Button.Primary onClick={() => toggleColor()}>Color</Button.Primary>
|
|
1907
|
+
<Button.Primary onClick={() => toggleDier()}>Dier</Button.Primary>
|
|
1908
|
+
</>
|
|
1909
|
+
}
|
|
1910
|
+
```
|
|
1911
|
+
|
|
1603
1912
|
## Publiceren <a id="publiceren"></a>
|
|
1604
1913
|
|
|
1605
1914
|
Onder `scripts` in de `package.json` file staan `release` scripts klaar. Dit script publiceerd een nieuwe versie naar de npm-registry voor de tag `yXXXX` die hoort bij het jaar waar de geselecteerde git-branch bijhoort. Dus bijvoorbeeld voor 2020
|