loon-bulma-react 2022.3.10 → 2022.3.13
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 +525 -143
- package/dist/components/Button/ButtonProps.d.ts +0 -2
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +3 -8
- 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 +16 -2
- package/dist/components/Form/Others/{BasicInput.d.ts → Input.d.ts} +4 -4
- package/dist/components/Form/Radio/Radio.d.ts +46 -0
- package/dist/components/Form/Text/TextInput.d.ts +9 -0
- package/dist/components/Indicator/Indicator.d.ts +19 -0
- package/dist/components/Layout/AspectRatio/AspectRatio.d.ts +2 -0
- package/dist/components/Layout/Box/Box.d.ts +6 -4
- package/dist/components/Layout/Columns/Column.d.ts +4 -2
- package/dist/components/Layout/Columns/Columns.d.ts +5 -3
- package/dist/components/Layout/Container/Container.d.ts +8 -5
- package/dist/components/Layout/Content/Content.d.ts +9 -6
- package/dist/components/Layout/Footer/Footer.d.ts +2 -4
- package/dist/components/Layout/Section/Section.d.ts +8 -5
- package/dist/components/Steps/Steps.d.ts +46 -0
- package/dist/components/Tag/Tag.d.ts +2 -2
- package/dist/components/TimeLine/TimeLine.d.ts +56 -0
- package/dist/components/ToggleBar/ToggleBar.d.ts +2 -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 +12 -4
- package/dist/index.js +563 -278
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +557 -276
- package/dist/index.modern.js.map +1 -1
- package/dist/loon-react-bulma-types.d.ts +1 -0
- package/package.json +44 -33
- package/styles/_all.scss +11 -6
- package/styles/checkradio.scss +533 -0
- package/styles/custom-bulma.scss +2 -14
- package/styles/indicator-styles.scss +84 -0
- package/styles/kbd-styles.scss +13 -0
- 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/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,28 @@
|
|
|
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
|
+
> - Form-component kan ook RadioButtons aan.
|
|
10
|
+
> - README: hooks-gedeelte aangevuld
|
|
11
|
+
> - `styles`-prop aangemaakt in aantal layout-componenten. Dan kan je direct styles zetten, mocht dat nodig zijn.
|
|
12
|
+
> - Container
|
|
13
|
+
> - Section
|
|
14
|
+
> - Box
|
|
15
|
+
> - Content
|
|
16
|
+
> - Columns
|
|
17
|
+
> - Column
|
|
18
|
+
|
|
3
19
|
## [Bulma](https://bulma.io/) & [React](https://reactjs.org/) componenten voor Loon Salarissoftware.
|
|
4
20
|
|
|
5
21
|
- [Installatie](#installatie)
|
|
6
22
|
- [Gebruik](#gebruik)
|
|
7
23
|
- [Notifier](#notifier)
|
|
8
|
-
- [Gebruik](#notifier-gebruik)
|
|
9
|
-
- [Instinkers](#notifier-let-op)
|
|
10
24
|
- [Componenten](#components)
|
|
25
|
+
|
|
11
26
|
- [Layout](#layout)
|
|
12
27
|
- [AspectRatio](#layout-aspectratio)
|
|
13
28
|
- [Box](#layout-box)
|
|
@@ -21,9 +36,11 @@
|
|
|
21
36
|
- [Button & ButtonGroup](#component-button)
|
|
22
37
|
- [Calendar](#components-calendar)
|
|
23
38
|
- [MonthView](#components-calendar-monthview)
|
|
39
|
+
- [WeekView](#components-calendar-weekview)
|
|
24
40
|
- [DataTable](#component-datatable)
|
|
25
41
|
- [Footer](#component-footer)
|
|
26
42
|
- [Icons (FontAwesome)](#component-icons)
|
|
43
|
+
- [Indicator](#component-indicator)
|
|
27
44
|
- [Kbd & Kbds](#component-kbd) (KeyBoarD)
|
|
28
45
|
- [Link & LinkButon](#component-linkbutton)
|
|
29
46
|
- [Menu](#component-menu-2)
|
|
@@ -32,7 +49,9 @@
|
|
|
32
49
|
- [ProgressBars](#component-progressbar)
|
|
33
50
|
- [TabBar](#component-tabbar) (Nieuw, ipv Tabs)
|
|
34
51
|
- [SimpleTable](#component-simpletable) (Voorheen Table)
|
|
52
|
+
- [Steps](#component-steps) (NIEUW)
|
|
35
53
|
- [Tag & Tags](#component-tags)
|
|
54
|
+
- [TimeLine](#component-timeline)
|
|
36
55
|
- [Titles & Subtitles](#component-titles)
|
|
37
56
|
- [ToggleBar](#component-toggles)
|
|
38
57
|
- [Form & Inputs](#form)
|
|
@@ -50,6 +69,7 @@
|
|
|
50
69
|
- FileInput
|
|
51
70
|
- BasicInput
|
|
52
71
|
- [CheckBox](#form-checkbox)
|
|
72
|
+
- [RadioButtons](#form-radio)
|
|
53
73
|
- [Ranges](#form-ranges)
|
|
54
74
|
- Range
|
|
55
75
|
- MultiRange
|
|
@@ -59,6 +79,12 @@
|
|
|
59
79
|
- [Validatie](#form-validatie)
|
|
60
80
|
- [Form](#form-form)
|
|
61
81
|
- [Form-builder](#form-component)
|
|
82
|
+
|
|
83
|
+
- [Hooks](#hooks)
|
|
84
|
+
- [useClipboard](#hooks-use-clipboard)
|
|
85
|
+
- [useDebouncedValue](#hooks-use-debounced-value)
|
|
86
|
+
- [useHotkeys](#hooks-use-hotkeys)
|
|
87
|
+
- [useToggle & useBoolToggle](#hooks-use-toggle)
|
|
62
88
|
- [Publiceren](#publiceren)
|
|
63
89
|
|
|
64
90
|
## Installatie <a id="installatie"></a>
|
|
@@ -68,8 +94,7 @@
|
|
|
68
94
|
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.
|
|
69
95
|
|
|
70
96
|
```bash
|
|
71
|
-
npm install --save loon-bulma-react
|
|
72
|
-
npm install --save bulma
|
|
97
|
+
npm install --save bulma loon-bulma-react
|
|
73
98
|
```
|
|
74
99
|
|
|
75
100
|
### Voor een versie die hoort bij een bepaald jaar (Bijvoorbeeld in Loon-2021).
|
|
@@ -87,7 +112,7 @@ Dan wordt altijd de laatste versie van die tag geïnstalleerd, in plaats van de
|
|
|
87
112
|
{
|
|
88
113
|
"devDependencies": {
|
|
89
114
|
// ...
|
|
90
|
-
"loon-bulma-react": "
|
|
115
|
+
"loon-bulma-react": "y2022"
|
|
91
116
|
// ...
|
|
92
117
|
}
|
|
93
118
|
}
|
|
@@ -105,7 +130,7 @@ Dan wordt altijd de laatste versie van die tag geïnstalleerd, in plaats van de
|
|
|
105
130
|
|
|
106
131
|
## Gebruik <a id="gebruik"></a>
|
|
107
132
|
|
|
108
|
-
in `index.tsx`
|
|
133
|
+
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.
|
|
109
134
|
|
|
110
135
|
```tsx
|
|
111
136
|
import 'loon-bulma-react/styles/_all.scss';
|
|
@@ -135,9 +160,7 @@ function MyComponent(props) {
|
|
|
135
160
|
|
|
136
161
|
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.
|
|
137
162
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
##### 1: wrap de componenten die de notifier mogen gebruiken tussen de provider-tags
|
|
163
|
+
1: wrap de componenten die de notifier mogen gebruiken tussen de provider-tags
|
|
141
164
|
|
|
142
165
|
```tsx
|
|
143
166
|
// App.tsx
|
|
@@ -152,25 +175,29 @@ import { NotifierProvider } from 'loon-react-bulma';
|
|
|
152
175
|
</div>
|
|
153
176
|
```
|
|
154
177
|
|
|
155
|
-
|
|
178
|
+
2: gebruik de `useNotifier()`-hook in een **child-component**
|
|
156
179
|
|
|
157
180
|
```tsx
|
|
158
181
|
// MyComponent.tsx
|
|
159
182
|
import { useNotifier } from 'loon-react-bulma';
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
183
|
+
|
|
184
|
+
function MyComponent(): JSX.Element {
|
|
185
|
+
const { notify } = useNotifier();
|
|
186
|
+
const addNotification = () => {
|
|
187
|
+
notify({
|
|
188
|
+
type: 'i',
|
|
189
|
+
content: 'Dit is een notification',
|
|
190
|
+
onClick: () => console.log('notification clicked!'),
|
|
191
|
+
dismissAfter: 2500, // dismiss na 2500 ms
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
// ...
|
|
195
|
+
return (
|
|
196
|
+
<div>
|
|
197
|
+
<Button.Primary onClick={() => addNotification()}>Notify!</Button.Primary>
|
|
198
|
+
</div>
|
|
199
|
+
);
|
|
200
|
+
}
|
|
174
201
|
```
|
|
175
202
|
|
|
176
203
|
Een notificatie heeft de volgende properties nodig:
|
|
@@ -181,13 +208,13 @@ Een notificatie heeft de volgende properties nodig:
|
|
|
181
208
|
- `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.
|
|
182
209
|
- `id`: _(optioneel)_ id van een notificatie, een random int als niet ingevuld.
|
|
183
210
|
|
|
184
|
-
|
|
211
|
+
##### `useNotifier()`
|
|
185
212
|
|
|
186
213
|
De `useNotifier()`-hook is een custom hook voor het gebruik van de notifier. Deze bevat de functions om dingen met de notifier te doen:
|
|
187
214
|
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
215
|
+
- `notify(n: NotificationItemProps)`: maak een notificatie
|
|
216
|
+
- `remove(nId: number)`: verwijder een notificatie met een `id`.
|
|
217
|
+
- `clear()`: verwijder ALLE notificaties
|
|
191
218
|
|
|
192
219
|
Alleen de functions importeren die je nodig hebt is genoeg
|
|
193
220
|
|
|
@@ -196,17 +223,17 @@ import { useNotifier } from 'loon-react-bulma';
|
|
|
196
223
|
const { notify, remove, clear } = useNotifier();
|
|
197
224
|
```
|
|
198
225
|
|
|
199
|
-
>
|
|
226
|
+
> **Let op!** <a id="notifier-let-op"></a>
|
|
200
227
|
>
|
|
201
228
|
> 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.
|
|
202
229
|
|
|
203
230
|
## Componenten <a id="components"></a>
|
|
204
231
|
|
|
205
|
-
|
|
232
|
+
### Layout <a id="layout"></a>
|
|
206
233
|
|
|
207
234
|
Er zijn een aantal componenten die vooral van invloed zijn op de layout van een pagina.
|
|
208
235
|
|
|
209
|
-
|
|
236
|
+
#### AspectRatio <a id="layout-aspectratio"></a>
|
|
210
237
|
|
|
211
238
|
Een AspectRatio is vooral om te zorgen dat bijvoorbeeld `<iframe>` en andere elementen met een aanpasbare width aan een bepaald formaat voldoen.
|
|
212
239
|
|
|
@@ -225,7 +252,7 @@ Een AspectRatio is vooral om te zorgen dat bijvoorbeeld `<iframe>` en andere ele
|
|
|
225
252
|
</div>
|
|
226
253
|
```
|
|
227
254
|
|
|
228
|
-
|
|
255
|
+
#### Box <a id="layout-box"></a>
|
|
229
256
|
|
|
230
257
|
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.
|
|
231
258
|
|
|
@@ -238,7 +265,7 @@ Als je liever geen component gebruikt, maar een `<div>` de class `bulma-box` gee
|
|
|
238
265
|
</div>
|
|
239
266
|
```
|
|
240
267
|
|
|
241
|
-
|
|
268
|
+
#### Columns <a id="layout-columns"></a>
|
|
242
269
|
|
|
243
270
|
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:
|
|
244
271
|
|
|
@@ -278,7 +305,7 @@ Als maar **één** van de kolommen een size-modifier heeft (bijvoorbeeld `<Colum
|
|
|
278
305
|
</div>
|
|
279
306
|
```
|
|
280
307
|
|
|
281
|
-
|
|
308
|
+
#### Container <a id="layout-container"></a>
|
|
282
309
|
|
|
283
310
|
Een container om content horizontaal te centreren op grotere viewports. De container wordt actief van verschillende breakpoints.
|
|
284
311
|
|
|
@@ -290,7 +317,7 @@ Een container om content horizontaal te centreren op grotere viewports. De conta
|
|
|
290
317
|
| Container.FullHD | max-width | max-width | max-width | 1344px |
|
|
291
318
|
| Container.Max\* | max-width | max-width | max-width | max-width |
|
|
292
319
|
|
|
293
|
-
|
|
320
|
+
> (\*) = links & rechts blijft er 32px ruimte als margin over.
|
|
294
321
|
|
|
295
322
|
```tsx
|
|
296
323
|
<div>
|
|
@@ -301,7 +328,7 @@ Een container om content horizontaal te centreren op grotere viewports. De conta
|
|
|
301
328
|
</div>
|
|
302
329
|
```
|
|
303
330
|
|
|
304
|
-
|
|
331
|
+
#### Content <a id="layout-content"></a>
|
|
305
332
|
|
|
306
333
|
Content is voor content, waar alleen HTML-tags beschikbaar zijn. Content kan een hoop html-aan:
|
|
307
334
|
`<p>, <ul, <ol>, <dl>, <h1>...<h6>, <blockquote>, <em>, <strong>, <table>, <tr>, <th>, <td>, <sub>, <sup>`
|
|
@@ -332,7 +359,7 @@ Deze markers zijn beschikbaar:
|
|
|
332
359
|
<!-- i, ii, iii-->
|
|
333
360
|
```
|
|
334
361
|
|
|
335
|
-
|
|
362
|
+
#### Hero <a id="layout-hero"></a>
|
|
336
363
|
|
|
337
364
|
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.
|
|
338
365
|
Een hero bevat optionele items aan de bovenkant (`Head`) of de onderkant (`Foot`).
|
|
@@ -389,7 +416,7 @@ De navigatie kan op 2 manieren worden gemaakt:
|
|
|
389
416
|
</Hero.Foot>
|
|
390
417
|
```
|
|
391
418
|
|
|
392
|
-
|
|
419
|
+
#### Image <a id="layout-image"></a>
|
|
393
420
|
|
|
394
421
|
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.
|
|
395
422
|
|
|
@@ -401,7 +428,7 @@ Een afbeelding met een vastgestelde aspect-ratio. Een ratio 'square' kan een gro
|
|
|
401
428
|
</div>
|
|
402
429
|
```
|
|
403
430
|
|
|
404
|
-
|
|
431
|
+
#### Section <a id="layout-section"></a>
|
|
405
432
|
|
|
406
433
|
Een section is een simpele container om een pagina in stukken te verdelen.
|
|
407
434
|
|
|
@@ -412,7 +439,7 @@ Een section is een simpele container om een pagina in stukken te verdelen.
|
|
|
412
439
|
</div>
|
|
413
440
|
```
|
|
414
441
|
|
|
415
|
-
|
|
442
|
+
#### ScrollArea <a id="layout-scrollarea"></a>
|
|
416
443
|
|
|
417
444
|
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.
|
|
418
445
|
|
|
@@ -420,7 +447,7 @@ Een ScrollArea is een horizontaal of verticaal scrollbare `<div>` met flexbox-ei
|
|
|
420
447
|
- `wrap`: mag de content wrappen? Scrollen is dan niet meer mogelijk, tenzij er een max-height is opgegeven.
|
|
421
448
|
- `align`: aligning van de content
|
|
422
449
|
|
|
423
|
-
|
|
450
|
+
##### Horizontaal:
|
|
424
451
|
|
|
425
452
|
```tsx
|
|
426
453
|
<ScrollArea.Horizontal gap={{ row: '1em', col: 16 }} wrap={true} alignment="c">
|
|
@@ -433,7 +460,7 @@ Een ScrollArea is een horizontaal of verticaal scrollbare `<div>` met flexbox-ei
|
|
|
433
460
|
</ScrollArea.Horizontal>
|
|
434
461
|
```
|
|
435
462
|
|
|
436
|
-
|
|
463
|
+
##### Verticaal:
|
|
437
464
|
|
|
438
465
|
```tsx
|
|
439
466
|
<ScrollArea.Vertical maxHeight={600}>
|
|
@@ -446,7 +473,7 @@ Een ScrollArea is een horizontaal of verticaal scrollbare `<div>` met flexbox-ei
|
|
|
446
473
|
</ScrollArea.Vertical>
|
|
447
474
|
```
|
|
448
475
|
|
|
449
|
-
|
|
476
|
+
#### Button & ButtonGroup <a id="component-button"></a>
|
|
450
477
|
|
|
451
478
|
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_
|
|
452
479
|
|
|
@@ -467,13 +494,6 @@ De Light, Outlined, LightOutlined en Inverted versies van deze buttons zijn te m
|
|
|
467
494
|
- LightOutlined: `"light-outlined"` | `"lo"`
|
|
468
495
|
- default: `"default"` | `undefined`
|
|
469
496
|
|
|
470
|
-
> ### deprecated
|
|
471
|
-
>
|
|
472
|
-
> 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
|
|
473
|
-
>
|
|
474
|
-
> - de class-string op te geven, dus `'fas fa-horse-head'`.
|
|
475
|
-
> - door het object dat mbv React-FontAwsome wordt gemaakt als waarde door te geven.
|
|
476
|
-
|
|
477
497
|
De `ButtonGroup`-component kan gebruikt worden om buttons te grouperen en de grootte voor buttons in te stellen.
|
|
478
498
|
|
|
479
499
|
```tsx
|
|
@@ -495,7 +515,7 @@ import { ButtonGroup, Bttn, Button, LightButton, InvertedButton, OutlinedButton
|
|
|
495
515
|
</ButtonGroup>;
|
|
496
516
|
```
|
|
497
517
|
|
|
498
|
-
|
|
518
|
+
#### Calendar <a id="components-calendar"></a>
|
|
499
519
|
|
|
500
520
|
De Calendar Component toont events in een grid-view. Er zijn 2 verschillende soorten events:
|
|
501
521
|
|
|
@@ -517,7 +537,7 @@ export type BaseEventProps = {
|
|
|
517
537
|
};
|
|
518
538
|
```
|
|
519
539
|
|
|
520
|
-
Op dit moment
|
|
540
|
+
Op dit moment zijn er een `MonthView`-component en een `WeekView`-component.
|
|
521
541
|
|
|
522
542
|
De opties voor het instellen van de calendar zijn:
|
|
523
543
|
|
|
@@ -550,9 +570,7 @@ export type CalendarOptions<T> = {
|
|
|
550
570
|
};
|
|
551
571
|
```
|
|
552
572
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
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.
|
|
573
|
+
De properties zijn bijna allemaal hetzelfde.
|
|
556
574
|
|
|
557
575
|
- `events`: een array met events.
|
|
558
576
|
- `viewDate`: de datum waarop de maand wordt getoond.
|
|
@@ -561,9 +579,13 @@ Deze component toont een maand + de rest van de weken die maar deels in een maan
|
|
|
561
579
|
- `onDayClick()`: callback die wordt aangeroepen als er op een dag-datum wordt geklikt.
|
|
562
580
|
- `onShowMore()`: function die een JSX.Element opleveret voor hoveren & rechtsklikken op een event.
|
|
563
581
|
|
|
582
|
+
##### MonthView <a id="components-calendar-monthview"></a>
|
|
583
|
+
|
|
584
|
+
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.
|
|
585
|
+
|
|
564
586
|
```tsx
|
|
565
587
|
<>
|
|
566
|
-
<Calendar.
|
|
588
|
+
<Calendar.Month
|
|
567
589
|
events={events}
|
|
568
590
|
viewDate={viewDate}
|
|
569
591
|
options={options}
|
|
@@ -574,11 +596,32 @@ Deze component toont een maand + de rest van de weken die maar deels in een maan
|
|
|
574
596
|
</>
|
|
575
597
|
```
|
|
576
598
|
|
|
577
|
-
|
|
599
|
+
##### WeekView <A id="components-calendar-weekview"></a>
|
|
600
|
+
|
|
601
|
+
Deze component toont een week. In plaats van een cel per dag werkt deze met cellen per uur per dag.
|
|
602
|
+
|
|
603
|
+
```tsx
|
|
604
|
+
<>
|
|
605
|
+
<Calendar.Week
|
|
606
|
+
events={events}
|
|
607
|
+
options={{
|
|
608
|
+
locale: 'de-DE',
|
|
609
|
+
dayName: 'long',
|
|
610
|
+
visibleDays: visibleDayNums,
|
|
611
|
+
monthName: 'long',
|
|
612
|
+
}}
|
|
613
|
+
viewDate={viewDate}
|
|
614
|
+
onEventClick={(evt, clck) => console.log(evt, clck)}
|
|
615
|
+
onDayClick={(evt, clck) => console.log(evt, clck)}
|
|
616
|
+
/>
|
|
617
|
+
</>
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
#### DataTable <a id="component-datatable"></a>
|
|
578
621
|
|
|
579
622
|
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.
|
|
580
623
|
|
|
581
|
-
|
|
624
|
+
##### Sorteren
|
|
582
625
|
|
|
583
626
|
Het sorteren is aangepast. Om een column sorteerbaar te maken, moet je een van de onderstaande 4 waarden opgeven:
|
|
584
627
|
|
|
@@ -586,11 +629,10 @@ Het sorteren is aangepast. Om een column sorteerbaar te maken, moet je een van d
|
|
|
586
629
|
- true: deze kolom is sorteerbaar.
|
|
587
630
|
- `'function'`: sorteer deze kolom met deze `function`.
|
|
588
631
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
Als deze kolom JSX-Elementen bevat, _MOET_ er een sort-function worden opgegeven om wel te kunnen sorteren.</em>
|
|
632
|
+
> **LET OP**
|
|
633
|
+
> Als deze kolom JSX-Elementen bevat, _MOET_ er een sort-function worden opgegeven om wel te kunnen sorteren.</em>
|
|
592
634
|
|
|
593
|
-
|
|
635
|
+
##### Search
|
|
594
636
|
|
|
595
637
|
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:
|
|
596
638
|
|
|
@@ -606,16 +648,16 @@ const mySearch = (s: string, users: IUser[]): IUser[] => {
|
|
|
606
648
|
- _@param_ items: de items waarin gezocht / gefilterd moet worden
|
|
607
649
|
- _@returns_: de gefilterde items
|
|
608
650
|
|
|
609
|
-
|
|
651
|
+
##### Custom classes
|
|
610
652
|
|
|
611
653
|
Om eigen classes toe te voegen aan rows en aan columns zijn er methodes:
|
|
612
654
|
|
|
613
655
|
- op de DataTable props zit de `rowClasses` function voor classes op de `<tr>`.
|
|
614
656
|
- op de DataTableColum props zit de `columnClasses` function voor classes op de `<td>`.
|
|
615
657
|
De gebruikte classes kunnen in een globale css file of in een lokaal geïmporteerde file staan (zoals hieronder).
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
658
|
+
|
|
659
|
+
> **LET OP!**
|
|
660
|
+
> in combinatie met `isStriped: {true}` werkt het zetten van `background-color` ALLEEN in combinatie met `!important`. Anders wordt de achtergrondkleur weer overschreven door Bulma.
|
|
619
661
|
|
|
620
662
|
```css
|
|
621
663
|
/** datatable.styles.css */
|
|
@@ -696,7 +738,7 @@ export function DataTableTab() {
|
|
|
696
738
|
}
|
|
697
739
|
```
|
|
698
740
|
|
|
699
|
-
|
|
741
|
+
#### Footer <a id="component-footer"></a>
|
|
700
742
|
|
|
701
743
|
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.
|
|
702
744
|
|
|
@@ -710,7 +752,7 @@ Een footer staat meestal onderaan de pagina. Er zit een container in die default
|
|
|
710
752
|
</div>
|
|
711
753
|
```
|
|
712
754
|
|
|
713
|
-
|
|
755
|
+
#### Icons (Font Awesome) <a id="component-icons"></a>
|
|
714
756
|
|
|
715
757
|
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.
|
|
716
758
|
|
|
@@ -746,7 +788,34 @@ Daar kan wel meer worden opgegeven. Voor de IconText component wordt ook de kleu
|
|
|
746
788
|
</p>
|
|
747
789
|
```
|
|
748
790
|
|
|
749
|
-
|
|
791
|
+
#### Indicator <a id="component-indicator"></a>
|
|
792
|
+
|
|
793
|
+
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:
|
|
794
|
+
|
|
795
|
+
- `tr`: top-right (default)
|
|
796
|
+
- `tl`: top-left
|
|
797
|
+
- `br`: bottom-right
|
|
798
|
+
- `bl`: bottom-left
|
|
799
|
+
- `tc`: top-center
|
|
800
|
+
- `bc`: bottom-center
|
|
801
|
+
- `rc`: right-center
|
|
802
|
+
- `lc`: left-center
|
|
803
|
+
|
|
804
|
+
Een `<Indicator>` heeft ook een optionele tooltip en een optioneel `label` om binnen de badge een tekst te plaatsen.
|
|
805
|
+
|
|
806
|
+
```tsx
|
|
807
|
+
<>
|
|
808
|
+
<Indicator color="d" label="100" position="tr" tooltip="100 nieuwe e-mails">
|
|
809
|
+
<Button.Primary>
|
|
810
|
+
<Icon icon={faMail}>
|
|
811
|
+
Email
|
|
812
|
+
</Button.Primary>
|
|
813
|
+
</Indicator>
|
|
814
|
+
</>
|
|
815
|
+
|
|
816
|
+
```
|
|
817
|
+
|
|
818
|
+
#### Kbd & Kbds (Keyboard Key, Keyboard Key group) <a id="component-kbd"></a>
|
|
750
819
|
|
|
751
820
|
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.
|
|
752
821
|
|
|
@@ -762,7 +831,7 @@ De `<Kbds>`-component gebruikt je om emerdere keyboard-keys bij elkaar te zetten
|
|
|
762
831
|
</>
|
|
763
832
|
```
|
|
764
833
|
|
|
765
|
-
|
|
834
|
+
#### Link & LinkButton <a id="component-linkbutton"></a>
|
|
766
835
|
|
|
767
836
|
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.
|
|
768
837
|
|
|
@@ -775,7 +844,7 @@ Link en LinkButton zijn bedoelt om links (`<a>`) en buttons (`<button>`) er, bij
|
|
|
775
844
|
</div>
|
|
776
845
|
```
|
|
777
846
|
|
|
778
|
-
|
|
847
|
+
#### Menu <a id="component-menu-2"></a>
|
|
779
848
|
|
|
780
849
|
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.
|
|
781
850
|
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.
|
|
@@ -819,9 +888,10 @@ Andere elementen worden **niet** gerendered.
|
|
|
819
888
|
</div>
|
|
820
889
|
```
|
|
821
890
|
|
|
822
|
-
|
|
891
|
+
#### Messages & Notifications <a id="component-messages"></a>
|
|
823
892
|
|
|
824
|
-
Een message of een notifcatie bevatten een tekst. Messages hebben ook een optionele titel. Er zjn
|
|
893
|
+
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.
|
|
894
|
+
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.
|
|
825
895
|
|
|
826
896
|
```tsx
|
|
827
897
|
<div>
|
|
@@ -830,7 +900,7 @@ Een message of een notifcatie bevatten een tekst. Messages hebben ook een option
|
|
|
830
900
|
</div>
|
|
831
901
|
```
|
|
832
902
|
|
|
833
|
-
Een notificatie bevat ook een tekst, maar heeft ook een dimsiss-button. Deze methode is verplicht om toe te voegen.
|
|
903
|
+
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.
|
|
834
904
|
|
|
835
905
|
```tsx
|
|
836
906
|
<div>
|
|
@@ -844,7 +914,7 @@ Een notificatie bevat ook een tekst, maar heeft ook een dimsiss-button. Deze met
|
|
|
844
914
|
</div>
|
|
845
915
|
```
|
|
846
916
|
|
|
847
|
-
|
|
917
|
+
#### Modal <a id="component-modal"></a>
|
|
848
918
|
|
|
849
919
|
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.
|
|
850
920
|
|
|
@@ -910,30 +980,33 @@ Een modal heeft ook verschillende sizes. Met de `size`-prop kan deze ingesteld w
|
|
|
910
980
|
- `'50%'`
|
|
911
981
|
- `'60em'`
|
|
912
982
|
|
|
913
|
-
|
|
983
|
+
#### ProgressBar <a id="component-progressbar"></a>
|
|
914
984
|
|
|
915
985
|
Een progressbar doet precies wat je verwacht.
|
|
916
986
|
|
|
917
|
-
- 4 maten (small (s), medium (m)
|
|
918
|
-
-
|
|
987
|
+
- 4 maten (small (`s`), medium (`m)`, large (`l`) en extralarge (`xl`)). Default = `m`, medium
|
|
988
|
+
- 6 kleuren (danger (`d`), succes (`s`), warning (`w`), link (`l`), info (`i`) en primary (`p`)). Default = info (`i`)
|
|
919
989
|
- de max value is instelbaar, default = 100.
|
|
920
990
|
|
|
921
991
|
```tsx
|
|
922
992
|
<div>
|
|
923
|
-
<ProgressBar value={50}
|
|
993
|
+
<ProgressBar value={50} />
|
|
924
994
|
<ProgressBar color="success" size="m" />
|
|
925
995
|
<ProgressBar max={200} color="d" />
|
|
926
996
|
<ProgressBar value={50} color="l" size="s" />
|
|
927
997
|
</div>
|
|
928
998
|
```
|
|
929
999
|
|
|
930
|
-
|
|
1000
|
+
#### TabBar <A id="component-tabbar"></a>
|
|
931
1001
|
|
|
932
1002
|
De TabBar component komt in de plaats van de Tabs component. Deze gaat iets anders om met Tab items dan de oude Tabs-component.
|
|
933
1003
|
|
|
934
1004
|
Als er andere items dan die van het type `<TabBarItem>` worden gebruikt, volgt een waarschuwing in de console.
|
|
935
1005
|
Een TabBarItem kan vervolgens **alleen** strings of `<Icon>`-componenten bevatten. Deze worden gebruikt o de tab weer te geven.
|
|
936
1006
|
|
|
1007
|
+
- `initialTab`: als je alleen de start-tab wil instellen en het daarna niet meer uitmaakt.
|
|
1008
|
+
- `activeTab`: voor als je een start-tab wil instellen, maar deze ook wil kunnen wijzigen.
|
|
1009
|
+
|
|
937
1010
|
```tsx
|
|
938
1011
|
const [tab, setTab] = useState<string | number>(100);
|
|
939
1012
|
// ...
|
|
@@ -964,11 +1037,7 @@ const [tab, setTab] = useState<string | number>(100);
|
|
|
964
1037
|
</div>;
|
|
965
1038
|
```
|
|
966
1039
|
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
Table nieuwe stijl. TODO: documentatie & implementatie
|
|
970
|
-
|
|
971
|
-
### SimpleTable <a id="component-simpletable"></a>, voorheen Table
|
|
1040
|
+
#### SimpleTable <a id="component-simpletable"></a>, voorheen Table
|
|
972
1041
|
|
|
973
1042
|
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.
|
|
974
1043
|
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.
|
|
@@ -997,7 +1066,51 @@ return (
|
|
|
997
1066
|
);
|
|
998
1067
|
```
|
|
999
1068
|
|
|
1000
|
-
|
|
1069
|
+
#### Steps <a id="component-steps"></a>
|
|
1070
|
+
|
|
1071
|
+
De `<Steps>`-component is bedoeld voor het weergeven van een stappenplan. De `<Steps.Item>`-component wordt gebruikt om de stappen te maken.
|
|
1072
|
+
|
|
1073
|
+
##### `<Steps>` heeft de volgende props
|
|
1074
|
+
|
|
1075
|
+
- `className`: extra classes voor de steps-container
|
|
1076
|
+
- `children`: de `<Steps.Item>` componenten. (REQUIRED)
|
|
1077
|
+
- `size`: grootte van de steps (defualt = `m`)
|
|
1078
|
+
- `activeStep`: actieve stap;
|
|
1079
|
+
- `onChangeStep(step: number) => void`: callback voor het wijzigen van de stap
|
|
1080
|
+
- `freeStepChoice`: welke stappen zijn selecteerbaar (default = `disabled`)
|
|
1081
|
+
- `disabled`: alleen linker- en rechter-buurman mogen geselecteerd worden
|
|
1082
|
+
- `allowed`: alle stappen zijn vrij te kiezen
|
|
1083
|
+
- `up`: alleen de stappen rechts zijn vrij te kiezen, links alleen de directe buur
|
|
1084
|
+
- `down`: alleen de stappen links zijn vrij te kiezen, recht alleen de directe buur
|
|
1085
|
+
|
|
1086
|
+
##### `<Steps.Item>` heeft de volgende props
|
|
1087
|
+
|
|
1088
|
+
- `status`: een status van de stap (default = 'pending')
|
|
1089
|
+
- `pending`: stap nog niet gedaan
|
|
1090
|
+
- `error`: een fout in deze stap
|
|
1091
|
+
- `completed`: deze stap is gedaan
|
|
1092
|
+
- `active`: de actieve stap
|
|
1093
|
+
- `title`: een titel voor deze stap
|
|
1094
|
+
- `description`: een langere beschrijving van deze stap
|
|
1095
|
+
- `marker`: een icoon, nummer of letter voor deze stap
|
|
1096
|
+
|
|
1097
|
+
```tsx
|
|
1098
|
+
<>
|
|
1099
|
+
<Steps onChangeStep={(stepNr: number) => console.log(stepNr)} freeStepChoice="disabled">
|
|
1100
|
+
<Steps.Item title="Step 1" marker={1} />
|
|
1101
|
+
<Steps.Item title="" marker={<Icon icon={faFlask} />} />
|
|
1102
|
+
<Steps.Item title="Step 2" details="dit zijn de details voor deze stap" />
|
|
1103
|
+
<Steps.Item title="" marker={<Icon icon={faBomb} />} status="error" />
|
|
1104
|
+
<Steps.Item
|
|
1105
|
+
title="Step 3"
|
|
1106
|
+
marker={(status) => (status == 'pending' ? <Icon icon={faFlag} /> : <Icon icon={faFire} />)}
|
|
1107
|
+
/>
|
|
1108
|
+
<Steps.Item title="Step 4" marker="A" />
|
|
1109
|
+
</Steps>
|
|
1110
|
+
</>
|
|
1111
|
+
```
|
|
1112
|
+
|
|
1113
|
+
#### Tag & Tags <a id="component-tags"></a>
|
|
1001
1114
|
|
|
1002
1115
|
Een `<Tag>` is een klein inline elementje om overal te kunnen stoppen. Tags kunnen een optionele sluit-knop bevatten
|
|
1003
1116
|
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.
|
|
@@ -1037,7 +1150,61 @@ Om twee tags als 1 tag te laten zien, kan je de `merged` prop op de `<Tags>`-com
|
|
|
1037
1150
|
</Tags>
|
|
1038
1151
|
```
|
|
1039
1152
|
|
|
1040
|
-
|
|
1153
|
+
#### Timeline <a id="component-timeline"></a>
|
|
1154
|
+
|
|
1155
|
+
De `<TimeLine>`-component kan gebruikt worden om een verticale tijdlijn te maken. Een TimeLine bevat 2 verschillende items: **points** of **items**.
|
|
1156
|
+
|
|
1157
|
+
`<TimeLine>` component heeft de volgende props:
|
|
1158
|
+
|
|
1159
|
+
- `alignment`: positie: `l`, `r`, of `c`. (default = `l`). Met `c` verschijnen de items afwisselend links of rechts van de lijn.
|
|
1160
|
+
- `className`: extra classes voor op de timeline-container
|
|
1161
|
+
- `children`: de content van de timeline, dus `<TimeLine.Point>`'s en `<TimeLine.Item>`'s
|
|
1162
|
+
|
|
1163
|
+
##### `<TimeLine.Point>` component
|
|
1164
|
+
|
|
1165
|
+
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
|
|
1166
|
+
|
|
1167
|
+
- `children`: Content van dit punt
|
|
1168
|
+
- `color`: kleur van dit punt (default = `light`, grijs)
|
|
1169
|
+
- `size`: de grotte van het punt (default = `s`, small)
|
|
1170
|
+
- `tooltip`: een tooltip voor het punt.
|
|
1171
|
+
|
|
1172
|
+
##### `<TimeLine.Item>` component
|
|
1173
|
+
|
|
1174
|
+
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.
|
|
1175
|
+
|
|
1176
|
+
- `heading`: de titel van het item (bijvoorbeeld een datum)
|
|
1177
|
+
- `children`: de content van het item. Dit kan gewoon HTML zijn.
|
|
1178
|
+
- `marker`: een object om een icoon of een kleur mee door te geven. Deze prop bevat 2 props:
|
|
1179
|
+
- `icon`: een icon (string of Font Awesome Icon Prop) voor de markeerstip
|
|
1180
|
+
- `color`: de kleur van de markeerstip (default = undefined, een grijze cirkel)
|
|
1181
|
+
|
|
1182
|
+
```tsx
|
|
1183
|
+
<>
|
|
1184
|
+
<TimeLine>
|
|
1185
|
+
<TimeLine.Point>Start</TimeLine.Point>
|
|
1186
|
+
<TimeLine.Point color="l">2019</TimeLine.Point>
|
|
1187
|
+
<TimeLine.Item heading="Maart 2019">Oh boi oh boi oh boi oh boi</TimeLine.Item>
|
|
1188
|
+
<TimeLine.Item marker={{ color: 's' }} heading="November 2019">
|
|
1189
|
+
Oompa Loompa Dooba die dee.
|
|
1190
|
+
</TimeLine.Item>
|
|
1191
|
+
|
|
1192
|
+
<TimeLine.Point size="m">2020</TimeLine.Point>
|
|
1193
|
+
<TimeLine.Item marker={{ icon: faFlask, color: 's' }} heading="August 2020">
|
|
1194
|
+
Whoop sie doop sie dooooooop
|
|
1195
|
+
</TimeLine.Item>
|
|
1196
|
+
<TimeLine.Item marker={{ icon: 'fas fa-', color: 's' }} heading="December 2020">
|
|
1197
|
+
<p>Bibbity Boppity Boo</p>
|
|
1198
|
+
</TimeLine.Item>
|
|
1199
|
+
|
|
1200
|
+
<TimeLine.Point color="d" size="l">
|
|
1201
|
+
End
|
|
1202
|
+
</TimeLine.Point>
|
|
1203
|
+
</TimeLine>
|
|
1204
|
+
</>
|
|
1205
|
+
```
|
|
1206
|
+
|
|
1207
|
+
#### Titles & Subtitles <a id="component-titles"></a>
|
|
1041
1208
|
|
|
1042
1209
|
Een verzameling van h1...h6 tags. Er zijn drie verschillende componenten om [Bulma Titles](https://bulma.io/documentation/elements/title/) te gebruiken.
|
|
1043
1210
|
|
|
@@ -1068,9 +1235,9 @@ Allemaal hebben ze 2 waarden die isntelbaar zijn voor Sizes: _headingSize_ en _b
|
|
|
1068
1235
|
</div>
|
|
1069
1236
|
```
|
|
1070
1237
|
|
|
1071
|
-
|
|
1238
|
+
#### ToggleBar <a id="component-toggles"></a>
|
|
1072
1239
|
|
|
1073
|
-
De ToggleBar component toont een ritje aan elkaar vastgemaakte knoppen.
|
|
1240
|
+
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.
|
|
1074
1241
|
|
|
1075
1242
|
De ToggleBar heeft de volgende props:
|
|
1076
1243
|
|
|
@@ -1083,7 +1250,7 @@ De ToggleBar heeft de volgende props:
|
|
|
1083
1250
|
- `onColor`: ColorProp voor de 'on'-status (default 's' (success, groen))
|
|
1084
1251
|
- `offColor`: ColorProp voor de 'off'-status (default 'd' (danger, rood))
|
|
1085
1252
|
|
|
1086
|
-
|
|
1253
|
+
##### Common props Toggle Items
|
|
1087
1254
|
|
|
1088
1255
|
Er zijn een paar props op de `Item` en de `OnOffItem` hetzelfde.
|
|
1089
1256
|
|
|
@@ -1091,7 +1258,7 @@ Er zijn een paar props op de `Item` en de `OnOffItem` hetzelfde.
|
|
|
1091
1258
|
- `tooltip`: tooltip voor een toggle-item
|
|
1092
1259
|
- `disabled`: disable een toggle-item`
|
|
1093
1260
|
|
|
1094
|
-
|
|
1261
|
+
##### ToggleItem
|
|
1095
1262
|
|
|
1096
1263
|
ToggleItems zijn meerdere knopjes op de bar, waarvan er maar 1 de status 'on' heeft. De andere buttons hebben dan de 'off'-state.
|
|
1097
1264
|
|
|
@@ -1107,7 +1274,7 @@ De `onToggle()`-callback wordt aangeroepen als de getogglede knop wordt verander
|
|
|
1107
1274
|
</div>
|
|
1108
1275
|
```
|
|
1109
1276
|
|
|
1110
|
-
|
|
1277
|
+
##### OnOffToggleItem
|
|
1111
1278
|
|
|
1112
1279
|
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.
|
|
1113
1280
|
|
|
@@ -1157,24 +1324,25 @@ Ze hebben 2 props meer dan de ToggleItems:
|
|
|
1157
1324
|
</div>
|
|
1158
1325
|
```
|
|
1159
1326
|
|
|
1160
|
-
|
|
1327
|
+
### Form & inputs <a id="form"></a>
|
|
1161
1328
|
|
|
1162
1329
|
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.
|
|
1163
1330
|
|
|
1164
1331
|
- [Input Types](#form-input)
|
|
1165
|
-
-
|
|
1166
|
-
-
|
|
1167
|
-
-
|
|
1168
|
-
-
|
|
1169
|
-
-
|
|
1170
|
-
-
|
|
1171
|
-
-
|
|
1172
|
-
-
|
|
1173
|
-
-
|
|
1174
|
-
-
|
|
1175
|
-
-
|
|
1176
|
-
-
|
|
1332
|
+
- `<TextInput>`: invoeren van tekst, urls, etc.
|
|
1333
|
+
- `<PasswordInput>`: invoeren van een wachtwoord, met puntjes ipv karakters
|
|
1334
|
+
- `<EmailInput>`: invoeren van een emailadres
|
|
1335
|
+
- `<NumberInput>`: invoeren van een nummer (alleen numerieke karakters)
|
|
1336
|
+
- `<ColorInput>`: invoeren van een kleur (in hex-formaat, altijd # + 6 hex-values)
|
|
1337
|
+
- `<HiddenInput>`: niet-bewerkbare onzichtbare input die WEL belangrijk is.
|
|
1338
|
+
- `<DateInput>`: invoeren van een datum
|
|
1339
|
+
- `<TimeInput>`: invoeren van een tijd
|
|
1340
|
+
- `<DateTimeInput>`: invoeren van een datum & een tijd als combi
|
|
1341
|
+
- `<TextAreaInput>`: invoer van een tekst
|
|
1342
|
+
- `<FileInput>`: invoer van een file
|
|
1343
|
+
- `<BasicInput>`: zelf in te stellen input
|
|
1177
1344
|
- [Checkbox](#form-checkbox)
|
|
1345
|
+
- [RadioButtons](#form-radio)
|
|
1178
1346
|
- [Ranges](#form-ranges)
|
|
1179
1347
|
- _Range_: een getal selecteren
|
|
1180
1348
|
- _MultiRange_: 2 getallen selecteren (een range)
|
|
@@ -1183,7 +1351,7 @@ De library bevat componenten om als losse inputs, selects, ranges of checkboxes
|
|
|
1183
1351
|
- [Form](#form-form)
|
|
1184
1352
|
- [Form-builder](#form-component)
|
|
1185
1353
|
|
|
1186
|
-
|
|
1354
|
+
#### Input Types<a id="form-input"></a>
|
|
1187
1355
|
|
|
1188
1356
|
Er zijn verschillende soorten inputs voor de afhandeling van input-types. Er zijn een aantal props die op alle inputs voorkomen:
|
|
1189
1357
|
|
|
@@ -1213,27 +1381,8 @@ Er zijn verschillende soorten inputs voor de afhandeling van input-types. Er zij
|
|
|
1213
1381
|
- `direction`: orientatie van de input (horizontaal of vertical, default = 'horizontal')
|
|
1214
1382
|
- `size`: de grootte van een input
|
|
1215
1383
|
|
|
1216
|
-
- Tekst:
|
|
1217
|
-
- **TextInput:** invoeren van tekst, urls, etc.
|
|
1218
|
-
- **EmailInput:** invoeren van een emailadres. Valideert het emailadres met een regex (overschrijfbaar mbv validatie-object).
|
|
1219
|
-
- **PasswordInput:** invoeren van een wachtwoord.
|
|
1220
|
-
- **TextAreaInput:** een textarea, werkt in tegenstelling tot de `<textarea></textarea>`-tag _niet_ met children. De waarde kan gezet worden met de `value`-attribuut.
|
|
1221
|
-
- Getallen:
|
|
1222
|
-
- **NumberInput:** invoer van een nummer
|
|
1223
|
-
- **Range:** invoer van een nummer, maar dan met een [range](#form-ranges)
|
|
1224
|
-
- **MultiRange:** invoer van twee nummers, met behulp van een [range](#form-ranges)
|
|
1225
|
-
- Datum / Tijd
|
|
1226
|
-
- **DateInput:** invoer van ene datum. De value kan als `string` of `Date` worden opgegeven
|
|
1227
|
-
- **TimeInput:** invoer van een tijdstip. De value kan als `string` of `Date` worden opgegeven
|
|
1228
|
-
- **DateTimeInput:** invoer-combi voor een datum & tijd. De value kan als `string` of `Date` worden opgegeven
|
|
1229
|
-
- Overig
|
|
1230
|
-
- **BasicInput** een input om helemaal zelf te kunnen instellen
|
|
1231
|
-
- **ColorInput** een invoer voor een kleur. Altijd een hex-waarde, de echte selectie is afhankelijk van de browser
|
|
1232
|
-
- **HiddenInput** een invoer die wel belangrijk is, maar niet gezien en niet bewerkt mag worden. Heeft vanzelfsprekend geen styling
|
|
1233
|
-
- **FileInput** invoer van een (of meer) files
|
|
1234
|
-
|
|
1235
1384
|
```tsx
|
|
1236
|
-
|
|
1385
|
+
<>
|
|
1237
1386
|
<BasicInput name="something" type="text">
|
|
1238
1387
|
<TextInput type="text" name="TextInput" id="textinput" validatie={{required: true}}/>
|
|
1239
1388
|
<EmailInput name="EmailInput" id="emailinput" validatie={{required: true}}/>
|
|
@@ -1251,12 +1400,21 @@ Er zijn verschillende soorten inputs voor de afhandeling van input-types. Er zij
|
|
|
1251
1400
|
|
|
1252
1401
|
<HiddenInput name="HiddenInput" value="bazinga!" id="hiddenInput" required={true}/>
|
|
1253
1402
|
|
|
1254
|
-
|
|
1403
|
+
</>
|
|
1255
1404
|
```
|
|
1256
1405
|
|
|
1257
|
-
|
|
1406
|
+
#### CheckBox <a id="form-checkbox"></a>
|
|
1407
|
+
|
|
1408
|
+
Een checkbox is een checkbox en werkt als een checkbox. De styling is een beetje aangepast van de standaard checkbox.
|
|
1409
|
+
Er zijn nu sizes (`s`, `m` (default), `l` en `xl`) en colors (`l` (default), `w`, `d`, `s`, `i`, `p`).
|
|
1410
|
+
Deze zijn in te stellen met de `size` en de `color` prop.
|
|
1258
1411
|
|
|
1259
|
-
|
|
1412
|
+
Ook is er een `styling`-prop. Met deze kan je wat styling aanpassen
|
|
1413
|
+
|
|
1414
|
+
- `noborder`: de randen van de checkbox zijn onzichtbaar
|
|
1415
|
+
- `colored`: de checkbox zelf heeft de achtergrondkleur uit de `color`-prop
|
|
1416
|
+
- `blocky`: de checkbox EN het label hebben dezelfde achtergrondkleur
|
|
1417
|
+
- `rounded`: afgeronde hoeken in plaats van vierkante hoeken op de checkbox.
|
|
1260
1418
|
|
|
1261
1419
|
```tsx
|
|
1262
1420
|
<div>
|
|
@@ -1264,9 +1422,74 @@ Er zijn verschillende soorten inputs voor de afhandeling van input-types. Er zij
|
|
|
1264
1422
|
</div>
|
|
1265
1423
|
```
|
|
1266
1424
|
|
|
1267
|
-
|
|
1425
|
+
#### RadioButtons <a id="form-radio"></a>
|
|
1426
|
+
|
|
1427
|
+
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.
|
|
1428
|
+
|
|
1429
|
+
Een `<RadioGroup.Item>` component heeft de volgende props:
|
|
1430
|
+
|
|
1431
|
+
- `value`: de waarde van de radiobutton. Als er geen children zijn, wordt de value getoond als tekst.
|
|
1432
|
+
- `title?`: tooltip
|
|
1433
|
+
- `children?`: een string of JSX-element die werkt als label van de radio
|
|
1434
|
+
- `disabled?`: is dit item disabled of niet?
|
|
1435
|
+
- `id?`: een id voor de radio-input
|
|
1436
|
+
|
|
1437
|
+
Er zijn nu sizes (`s`, `m` (default), `l` en `xl`) en colors (`l` (default), `w`, `d`, `s`, `i`, `p`).
|
|
1438
|
+
Deze zijn in te stellen met de `size` en de `color` prop.
|
|
1439
|
+
|
|
1440
|
+
Ook is er een `styling`-prop. Met deze kan je wat styling aanpassen
|
|
1441
|
+
|
|
1442
|
+
- `noborder`: de randen van de checkbox zijn onzichtbaar
|
|
1443
|
+
- `colored`: de checkbox zelf heeft de achtergrondkleur uit de `color`-prop
|
|
1444
|
+
- `blocky`: de checkbox EN het label hebben dezelfde achtergrondkleur
|
|
1445
|
+
- `rounded`: afgeronde hoeken in plaats van vierkante hoeken op de checkbox.
|
|
1446
|
+
|
|
1447
|
+
> **Raar:**
|
|
1448
|
+
> 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.
|
|
1449
|
+
|
|
1450
|
+
```tsx
|
|
1451
|
+
<>
|
|
1452
|
+
<RadioGroup name="radio-1" onValueChanged={(v) => console.log('woohoo!', v)}>
|
|
1453
|
+
<RadioGroup.Item value="Ein">Ein</RadioGroup.Item>
|
|
1454
|
+
<RadioGroup.Item value="Zwei" styling="noborder">
|
|
1455
|
+
Zwei
|
|
1456
|
+
</RadioGroup.Item>
|
|
1457
|
+
<RadioGroup.Item value="Polizei" color="l" size="xl">
|
|
1458
|
+
<span>Polizei!</span>
|
|
1459
|
+
</RadioGroup.Item>
|
|
1460
|
+
<RadioGroup.Item value="Drei">Drei</RadioGroup.Item>
|
|
1461
|
+
<RadioGroup.Item value="4">Vier</RadioGroup.Item>
|
|
1462
|
+
<RadioGroup.Item disabled value="Offizier">
|
|
1463
|
+
Offizier!
|
|
1464
|
+
</RadioGroup.Item>
|
|
1465
|
+
</RadioGroup>
|
|
1466
|
+
</>
|
|
1467
|
+
```
|
|
1468
|
+
|
|
1469
|
+
RadioButtons kunnen ook alleenstaand gebruikt worden. Deze component heet `<Radio>`. Deze component heeft dezelfde props als de `<RadioGroup.Item>`-component en nog drie extra.
|
|
1470
|
+
|
|
1471
|
+
- `setter: (val: string) => void`: function om de waarde te setten, met `React.useState()`
|
|
1472
|
+
- `selectedItem?`: het geselecteerde Radio-item
|
|
1473
|
+
- `name`: in plaats van de groep, moet je zelf de name van de radio-input opgeven
|
|
1474
|
+
|
|
1475
|
+
```tsx
|
|
1476
|
+
const [radio, setRadio] = React.useState('Sieben');
|
|
1477
|
+
|
|
1478
|
+
<>
|
|
1479
|
+
<Radio selectedItem={radio} value="Fünf" name="radio-2" setter={setRadio} color="d"/>
|
|
1480
|
+
<Radio selectedItem={radio} value="Sechs" name="radio-2" setter={setRadio} disabled size="xl"/>
|
|
1481
|
+
<Radio selectedItem={radio} value="Alte Hex" name="radio-2" setter={setRadio} styling="noborder"/>
|
|
1482
|
+
<Radio selectedItem={radio} value="Sieben" name="radio-2" setter={setRadio} />
|
|
1483
|
+
<Radio selectedItem={radio} value="Acht" name="radio-2" setter={setRadio} />
|
|
1484
|
+
<Radio selectedItem={radio} value="Gute Nacht" name="radio-2" setter={setRadio}>
|
|
1485
|
+
Good Night!
|
|
1486
|
+
</Radio>
|
|
1487
|
+
<>
|
|
1488
|
+
```
|
|
1489
|
+
|
|
1490
|
+
#### Ranges <a id="form-ranges"></a>
|
|
1268
1491
|
|
|
1269
|
-
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_.
|
|
1492
|
+
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_.
|
|
1270
1493
|
|
|
1271
1494
|
Als er in het validatie geen minimale of maximale waarde te vinden is, worden standaard `0` en `100` gebruikt.
|
|
1272
1495
|
|
|
@@ -1277,7 +1500,7 @@ Als er in het validatie geen minimale of maximale waarde te vinden is, worden st
|
|
|
1277
1500
|
</div>
|
|
1278
1501
|
```
|
|
1279
1502
|
|
|
1280
|
-
|
|
1503
|
+
#### Select <a id="form-select"></a>
|
|
1281
1504
|
|
|
1282
1505
|
Een select is een lijstje met opties waaruit je er een kan selecteren. De opties van een select kunnen uit 3 types bestaan:
|
|
1283
1506
|
|
|
@@ -1286,8 +1509,6 @@ Een select is een lijstje met opties waaruit je er een kan selecteren. De opties
|
|
|
1286
1509
|
- **SelectOptionGroupType[]:** een gegroupeerde option array voor `<optgroup>` tags. Kan daardoor ook disablen.
|
|
1287
1510
|
Om meerdere values te selecteren in een select, kan je een [MultiSelect](#form-multiselect) gebruiken.
|
|
1288
1511
|
|
|
1289
|
-
##### een select met string[]
|
|
1290
|
-
|
|
1291
1512
|
```tsx
|
|
1292
1513
|
<div>
|
|
1293
1514
|
{/* Een select met string-options, deze options zijn de value EN de tekst */}
|
|
@@ -1323,7 +1544,7 @@ Een select is een lijstje met opties waaruit je er een kan selecteren. De opties
|
|
|
1323
1544
|
</div>
|
|
1324
1545
|
```
|
|
1325
1546
|
|
|
1326
|
-
|
|
1547
|
+
#### Multi Select <a id="form-multiselect"> </a>
|
|
1327
1548
|
|
|
1328
1549
|
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`.
|
|
1329
1550
|
|
|
@@ -1390,11 +1611,11 @@ Een Multiselect werkt bijna hetzelfde als een select. Dezelfde type options word
|
|
|
1390
1611
|
</div>
|
|
1391
1612
|
```
|
|
1392
1613
|
|
|
1393
|
-
|
|
1614
|
+
#### Validatie <a id="form-validatie"></a>
|
|
1394
1615
|
|
|
1395
1616
|
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.
|
|
1396
1617
|
|
|
1397
|
-
|
|
1618
|
+
###### Validatie-Type
|
|
1398
1619
|
|
|
1399
1620
|
```ts
|
|
1400
1621
|
export type FormValidatie = {
|
|
@@ -1417,7 +1638,7 @@ export type FormValidatie = {
|
|
|
1417
1638
|
- `pattern`: voor tekst-inputs: voldoet de waarde aan deze regex. In EmailInput overschrijft deze de default e-mail-validatie regex.
|
|
1418
1639
|
- `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.
|
|
1419
1640
|
|
|
1420
|
-
|
|
1641
|
+
#### Form <a id="form-form"></a>
|
|
1421
1642
|
|
|
1422
1643
|
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).
|
|
1423
1644
|
|
|
@@ -1435,6 +1656,7 @@ De `<Form>`-component is een wrapper voor een gewone `<form>`-tag. Hij bevat (al
|
|
|
1435
1656
|
- `<Form.Select>`: een input met type `select`, zelfde als `<Select>`.
|
|
1436
1657
|
- `<Form.MultiSelect>`: een input met type `select`, zelfde als `<MultiSelect>`.
|
|
1437
1658
|
- `<Form.Checkbox>`: een input met type `checkbox`, zelfde als `<Checkbox>`.
|
|
1659
|
+
- `<Form.RadioGroup>`: een input met type `radio`, zelfde als `<RadioGroup>`.
|
|
1438
1660
|
- `<Form.Date>`: een input met type `date`, zelfde als `<DateInput>`.
|
|
1439
1661
|
- `<Form.Time>`: een input met type `time`, zelfde als `<TimeInput>`.
|
|
1440
1662
|
- `<Form.DateTime>`: een input met type `datetime-local`, zelfde als `<DateTimeInput>`.
|
|
@@ -1443,12 +1665,10 @@ De `<Form>`-component is een wrapper voor een gewone `<form>`-tag. Hij bevat (al
|
|
|
1443
1665
|
|
|
1444
1666
|
##### Andere componenten binnen `<Form>`
|
|
1445
1667
|
|
|
1446
|
-
- `<Form.Line>` Een wrapper voor meerdere inputs, om deze op een lijn te kunnen zetten (achter elkaar). Dan moet je
|
|
1668
|
+
- `<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.
|
|
1447
1669
|
- `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.
|
|
1448
1670
|
- `<Form.Buttons`: een container voor de buttons. Werkt hetzelfde als `<ButtonGroup>`. Voor bijvoorbeeld de submit-button voor een form.
|
|
1449
1671
|
|
|
1450
|
-
##### Voorbeeld
|
|
1451
|
-
|
|
1452
1672
|
```tsx
|
|
1453
1673
|
<>
|
|
1454
1674
|
<Form direction={direction} size={size}>
|
|
@@ -1476,7 +1696,7 @@ De `<Form>`-component is een wrapper voor een gewone `<form>`-tag. Hij bevat (al
|
|
|
1476
1696
|
</>
|
|
1477
1697
|
```
|
|
1478
1698
|
|
|
1479
|
-
|
|
1699
|
+
#### Form-Builder <a id="form-component"></a>
|
|
1480
1700
|
|
|
1481
1701
|
Een **Form** is ook beschikbaar als component. Om te werken heeft die nodig:
|
|
1482
1702
|
|
|
@@ -1510,7 +1730,7 @@ Het resultaat van deze form komt via de `onSubmit()` methode naar buiten. Als de
|
|
|
1510
1730
|
</div>
|
|
1511
1731
|
```
|
|
1512
1732
|
|
|
1513
|
-
|
|
1733
|
+
###### Resultaat van `method="post"` en `method="get"`
|
|
1514
1734
|
|
|
1515
1735
|
```ts
|
|
1516
1736
|
// post
|
|
@@ -1525,6 +1745,168 @@ Het resultaat van deze form komt via de `onSubmit()` methode naar buiten. Als de
|
|
|
1525
1745
|
('Token=Bazinga%21&Naam=Brad+Wurst&Email=brad%40wurst.com&Wachtwoord=123123&Leeftijd=31');
|
|
1526
1746
|
```
|
|
1527
1747
|
|
|
1748
|
+
## Hooks <a id="hooks"></a>
|
|
1749
|
+
|
|
1750
|
+
- [Hooks](#hooks)
|
|
1751
|
+
- [useClipboard](#hooks-use-clipboard)
|
|
1752
|
+
- [useDebouncedValue](#hooks-use-debounced-value)
|
|
1753
|
+
- [useHotkeys](#hooks-use-hotkeys)
|
|
1754
|
+
- [useToggle & useBoolToggle](#hooks-use-toggle)
|
|
1755
|
+
- [Publiceren](#publiceren)
|
|
1756
|
+
|
|
1757
|
+
Er zijn een paar hooks in deze library. Geen idee of deze hooks nuttig zijn, maar je kan ze gebruiken.
|
|
1758
|
+
|
|
1759
|
+
#### useClipboard <a id="hooks-use-clipboard"></a>
|
|
1760
|
+
|
|
1761
|
+
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:
|
|
1762
|
+
|
|
1763
|
+
- `copy`: een function om een waarde te kopiëren naar het clipboard
|
|
1764
|
+
- `copied`: een boolean die `true` is als een waarde minder dan de timeout (default 2000ms) geleden gekopieerd is
|
|
1765
|
+
- `reset`: een function om de timout te 'clearen' en `copied` te resetten
|
|
1766
|
+
- `error`: bevat een `Error` object als er iets is fout gegaan
|
|
1767
|
+
|
|
1768
|
+
```tsx
|
|
1769
|
+
function UseClipboardExample(props: {}) {
|
|
1770
|
+
const clipboard = useClipboard({timeout: 500});
|
|
1771
|
+
|
|
1772
|
+
const handleClick = () => {
|
|
1773
|
+
clipboard.copy('Hello World!');
|
|
1774
|
+
if(clipboard.error) console.error('error on copying', clipboard.error);
|
|
1775
|
+
|
|
1776
|
+
clipboard.reset();
|
|
1777
|
+
}
|
|
1778
|
+
|
|
1779
|
+
return <Button onClick={handleClick}>
|
|
1780
|
+
{clipboard.copied ? 'Paste it somewhere' ? 'Copy something'}
|
|
1781
|
+
</Button>
|
|
1782
|
+
|
|
1783
|
+
}
|
|
1784
|
+
```
|
|
1785
|
+
|
|
1786
|
+
#### useDebouncedValue <a id="hooks-use-debounced-value"></a>
|
|
1787
|
+
|
|
1788
|
+
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.
|
|
1789
|
+
|
|
1790
|
+
De parameters zijn:
|
|
1791
|
+
|
|
1792
|
+
- `value`: de bronwaarde die vertraagd bijgewerkt moet worden.
|
|
1793
|
+
- `options`: opties voor de hook. Op dit moment zijn dat deze defaults:
|
|
1794
|
+
|
|
1795
|
+
```ts
|
|
1796
|
+
options: useDebounceHookOptions = {
|
|
1797
|
+
leading: true,
|
|
1798
|
+
delay: 500,
|
|
1799
|
+
};
|
|
1800
|
+
```
|
|
1801
|
+
|
|
1802
|
+
Deze hook geeft een tuple (net zoals bij `React.useState()`) met 2 objecten terug:
|
|
1803
|
+
|
|
1804
|
+
- `debounced`, type `T` de waarde voor NA het debouncen
|
|
1805
|
+
- `cancel`, type `() => void` de functie om de debouncen te stoppen. De waarde van `debounced` wordt dan niet geupdate.
|
|
1806
|
+
|
|
1807
|
+
> De `useDebounce()`-hook kan optioneel een type meekrijgen voor de waarde van `debounced`. Dit is optioneel
|
|
1808
|
+
|
|
1809
|
+
```tsx
|
|
1810
|
+
function UseDebouncedValueDemo() {
|
|
1811
|
+
const [value, setValue] = useState('');
|
|
1812
|
+
const [debounced, cancel] = useDebouncedValue<string>(value, { delay: 2000 });
|
|
1813
|
+
|
|
1814
|
+
return (
|
|
1815
|
+
<>
|
|
1816
|
+
<Input
|
|
1817
|
+
label="debounce value"
|
|
1818
|
+
name="debouncevalue"
|
|
1819
|
+
value={value}
|
|
1820
|
+
onChange={(e) => setValue(e.currentTarget.value)}
|
|
1821
|
+
/>
|
|
1822
|
+
<Button onClick={cancel} size="lg" style={{ marginLeft: 15 }}>
|
|
1823
|
+
Cancel
|
|
1824
|
+
</Button>
|
|
1825
|
+
|
|
1826
|
+
<p>Value: {value}</p>
|
|
1827
|
+
<p>Debounced value: {debounced}</p>
|
|
1828
|
+
</>
|
|
1829
|
+
);
|
|
1830
|
+
}
|
|
1831
|
+
```
|
|
1832
|
+
|
|
1833
|
+
#### useHotkeys <a id="hooks-use-hotkeys"></a>
|
|
1834
|
+
|
|
1835
|
+
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.
|
|
1836
|
+
|
|
1837
|
+
`useHotkeys()` heeft 1 parameters. Deze bestaat uit een array van toets-combinaties en handler-tuples (zie `HotkeyItem`). Deze tuples bestaan uit 2 delen:
|
|
1838
|
+
|
|
1839
|
+
- `hotkey`: hotkey-string, als `ctrl+E`, `shift+alt+L`, `mod+S`
|
|
1840
|
+
- `handler` functie die aangeroepen moet worden als de keys zijn gebruikt.
|
|
1841
|
+
|
|
1842
|
+
> **Formats voor de hotkeys**
|
|
1843
|
+
>
|
|
1844
|
+
> - `mod+S`: op macOS Cmd+S, op Windows Ctrl+S
|
|
1845
|
+
> - `ctrl+shift+X`: meerdere modifiers
|
|
1846
|
+
> - `ctrl + shift + X + Y`: spaties zijn toegestaan
|
|
1847
|
+
> - `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>)
|
|
1848
|
+
|
|
1849
|
+
##### hotkeys op een ander element
|
|
1850
|
+
|
|
1851
|
+
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.
|
|
1852
|
+
|
|
1853
|
+
```tsx
|
|
1854
|
+
function HotkeysExample() {
|
|
1855
|
+
// useHotkeys alleen op het document-element
|
|
1856
|
+
useHotkeys([
|
|
1857
|
+
['mod+J', () => console.log('Toggle color scheme')],
|
|
1858
|
+
['ctrl+K', () => console.log('Trigger search')],
|
|
1859
|
+
['alt+mod+shift+X', () => console.log('Rick roll')],
|
|
1860
|
+
]);
|
|
1861
|
+
|
|
1862
|
+
// met getHotkeyHandler kunnen hotkeys op een specifiek element gezet worden
|
|
1863
|
+
return (
|
|
1864
|
+
<TextInput
|
|
1865
|
+
placeholder="Your message"
|
|
1866
|
+
label="Press ⌘+Enter or Ctrl+Enter when input has focus to send message"
|
|
1867
|
+
value={value}
|
|
1868
|
+
onChange={(event) => setValue(event.target.value)}
|
|
1869
|
+
onKeyDown={getHotkeyHandler([
|
|
1870
|
+
['mod+Enter', () => console.log('submit')],
|
|
1871
|
+
['mod+S', () => console.log('save')],
|
|
1872
|
+
])}
|
|
1873
|
+
/>
|
|
1874
|
+
);
|
|
1875
|
+
}
|
|
1876
|
+
```
|
|
1877
|
+
|
|
1878
|
+
#### useToggle & useBoolToggle <a id="hooks-use-toggle"></a>
|
|
1879
|
+
|
|
1880
|
+
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.
|
|
1881
|
+
|
|
1882
|
+
de parameters voor de `useToggle()`-hook zijn:
|
|
1883
|
+
|
|
1884
|
+
- `initialState`: type `T`: de beginwaarde van de toggle
|
|
1885
|
+
- `options`: type `[T, T]`: de waarden waartussen getoggled wordt.
|
|
1886
|
+
|
|
1887
|
+
Bij de `useBoolToggle()`-hook is er maar 1 _optionele_ parameter:`initialValue`. Deze is default `false`.
|
|
1888
|
+
|
|
1889
|
+
Van beide hooks wordt een tuple (net als `React.useState()`) returned met 2 objecten:
|
|
1890
|
+
|
|
1891
|
+
- `state`: de huidige status van de toggle
|
|
1892
|
+
- `toggle()`: een functie om te togglen.
|
|
1893
|
+
|
|
1894
|
+
bij de `toggle()` function is het mogelijk om een bepaalde status te forceren, door de waarde als parameter mee te geven.
|
|
1895
|
+
|
|
1896
|
+
```tsx
|
|
1897
|
+
function ToggleDemo() {
|
|
1898
|
+
const [isVisible, toggleVisible] = useBoolToggle(); // start op isVisible = false
|
|
1899
|
+
const [color, toggleColor] = useToggle('red', ['red', 'blue']); // start op color = red, toggle tussen red & blue
|
|
1900
|
+
const [dier, toggleDier] = useToggle<Dier>(krokodil, [krokodil, alligator]]); // toggle met Type
|
|
1901
|
+
|
|
1902
|
+
return <>
|
|
1903
|
+
<Button.Primary onClick={() => toggleVsible()}>Visible</Button.Primary>
|
|
1904
|
+
<Button.Primary onClick={() => toggleColor()}>Color</Button.Primary>
|
|
1905
|
+
<Button.Primary onClick={() => toggleDier()}>Dier</Button.Primary>
|
|
1906
|
+
</>
|
|
1907
|
+
}
|
|
1908
|
+
```
|
|
1909
|
+
|
|
1528
1910
|
## Publiceren <a id="publiceren"></a>
|
|
1529
1911
|
|
|
1530
1912
|
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
|