loon-bulma-react 2022.3.3 → 2022.3.4
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 +26 -2
- package/dist/components/Form/Base.Input.Container.d.ts +4 -1
- package/dist/components/Form/BaseInputProps.d.ts +3 -2
- package/dist/components/Form/Form.d.ts +69 -9
- package/dist/components/Form/FormBuilder.d.ts +9 -0
- package/dist/components/Form/FormBuilderProps.d.ts +92 -0
- package/dist/components/Form/Others/BasicInput.d.ts +29 -0
- package/dist/components/Icon/Icon.d.ts +2 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.js +532 -312
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +532 -314
- package/dist/index.modern.js.map +1 -1
- package/dist/loon-react-bulma-types.d.ts +1 -0
- package/example/src/App.tsx +4 -1
- package/example/src/Tabs/FormTab.tsx +58 -0
- package/example/src/Tabs/TitleFormsButtonsTab.tsx +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1162,7 +1162,31 @@ De library bevat componenten om als losse inputs, selects, ranges of checkboxes
|
|
|
1162
1162
|
|
|
1163
1163
|
### Input Types<a id="form-input"></a>
|
|
1164
1164
|
|
|
1165
|
-
Er zijn verschillende soorten inputs voor de afhandeling van input-types.
|
|
1165
|
+
Er zijn verschillende soorten inputs voor de afhandeling van input-types. Er zijn een aantal props die op alle inputs voorkomen:
|
|
1166
|
+
|
|
1167
|
+
- `name`: input name voor in een form
|
|
1168
|
+
- `id`: id van de input
|
|
1169
|
+
- `label`: label-tekst voor een input, voor als dat afwijkt van de `name`-prop
|
|
1170
|
+
- `labelHidden`: boolean, verbergt het label als die alleen voor screenreaders beschikbaar moet zijn.
|
|
1171
|
+
- `placeholder`: placeholder-tekst voor een input.
|
|
1172
|
+
- `tooltip`: tooltip voor een input (`<input title="..." />`)
|
|
1173
|
+
- `disabled`: input disabled
|
|
1174
|
+
- `validatie`: een object met wat standaard-validatie-opties en een onValidate-function input
|
|
1175
|
+
- `required`: input is verplicht
|
|
1176
|
+
- `max`: maximale waarde
|
|
1177
|
+
- text: input max length
|
|
1178
|
+
- numeric: max value
|
|
1179
|
+
- date: max datum
|
|
1180
|
+
- `min`: minimale waarde
|
|
1181
|
+
- text: input min length
|
|
1182
|
+
- numeric: min value
|
|
1183
|
+
- date: min datum
|
|
1184
|
+
- `minDiff`: voor multirange: minimale verschil tussen de twee waarden
|
|
1185
|
+
- `maxDiff`: voor multirange: maximale verschil tussen de twee waarden
|
|
1186
|
+
- `pattern`: een patroon voor string-validatie (mag een string of een Regexp zijn)
|
|
1187
|
+
- `onValidate()`: een eigen function opgeven voor validatie
|
|
1188
|
+
- `keyboardType`: wat voor toetsenbord moet er op een smartphone of tablet gebruikt worden
|
|
1189
|
+
- `direction`: orientatie van de input (horizontaal of vertical, default = 'horizontal')
|
|
1166
1190
|
|
|
1167
1191
|
- Tekst:
|
|
1168
1192
|
- **TextInput:** invoeren van tekst, urls, etc.
|
|
@@ -1194,7 +1218,7 @@ Er zijn verschillende soorten inputs voor de afhandeling van input-types.
|
|
|
1194
1218
|
|
|
1195
1219
|
<NumberInput name="NumberInput" id="numberinput" validatie={{required: true, min:-10, max: 10}}/>
|
|
1196
1220
|
|
|
1197
|
-
<ColorInput name="ColorInput" id="colorinput" value="#ff8000">
|
|
1221
|
+
<ColorInput name="ColorInput" id="colorinput" value="#ff8000" direction="vertical">
|
|
1198
1222
|
|
|
1199
1223
|
<HiddenInput name="HiddenInput" value="bazinga!" id="hiddenInput" required={true}/>
|
|
1200
1224
|
|
|
@@ -2,7 +2,10 @@ import React from 'react';
|
|
|
2
2
|
import { DirectionProp, SizeProp } from '../../loon-react-bulma-types';
|
|
3
3
|
/** een wrapper voor een input component, om te zorgen dat ze allemaal op dezelfde manier horizontaal of verticaal aligned worden. */
|
|
4
4
|
export declare const InputContainer: ({ label, children: input, error, size, direction, }: {
|
|
5
|
-
label
|
|
5
|
+
label?: {
|
|
6
|
+
txt: string;
|
|
7
|
+
id: string;
|
|
8
|
+
} | undefined;
|
|
6
9
|
children: React.ReactNode;
|
|
7
10
|
error?: React.ReactNode;
|
|
8
11
|
size?: "s" | "l" | "m" | "xl" | undefined;
|
|
@@ -4,8 +4,8 @@ export declare type BaseInputProps = {
|
|
|
4
4
|
disabled?: boolean;
|
|
5
5
|
/** name input: gebruikt voor een <label> als er geen label gedefinieerd is & de name-attribuut <input> */
|
|
6
6
|
name: string;
|
|
7
|
-
/** id voor de input: gebruikt voor een <label for="*id*}"
|
|
8
|
-
id
|
|
7
|
+
/** id voor de input: gebruikt voor een <label for="*id*}">. default wordt anders de 'name'-prop gebruik */
|
|
8
|
+
id?: string;
|
|
9
9
|
/** een tooltip voor de button */
|
|
10
10
|
tooltip?: string;
|
|
11
11
|
/** label voor de input, als dat afwijkt van de name-attribuut */
|
|
@@ -81,3 +81,4 @@ export declare type BaseFocusStateType = {
|
|
|
81
81
|
type: 'FOCUS';
|
|
82
82
|
focus: boolean;
|
|
83
83
|
};
|
|
84
|
+
export declare type InputTypeProp = 'text' | 'password' | 'number' | 'email' | 'tel' | 'url' | 'range' | 'date' | 'datetime-local' | 'month' | 'week' | 'time' | 'color' | 'search' | 'multirange' | 'multiselect' | 'select' | 'textarea';
|
|
@@ -1,9 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*/
|
|
9
|
-
|
|
1
|
+
import { DirectionProp, SizeProp } from '../../loon-react-bulma-types';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
declare type FormProps = {
|
|
4
|
+
/** de inputs voor dit form */
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
/** form attribuut <form action="..." > */
|
|
7
|
+
action?: string;
|
|
8
|
+
/** form attribuut <form name="..." > */
|
|
9
|
+
name?: string;
|
|
10
|
+
/** form attribuut <form method="..." > */
|
|
11
|
+
method?: 'post' | 'get';
|
|
12
|
+
/** form attribuut <form target="..." > */
|
|
13
|
+
target?: '_self' | '_blank' | '_parent' | '_top';
|
|
14
|
+
/** form onsubmit handler */
|
|
15
|
+
onSubmit?: (event: React.FormEvent<HTMLFormElement>) => void;
|
|
16
|
+
/** size voor alle form-elementen (default = 'm') */
|
|
17
|
+
size?: SizeProp;
|
|
18
|
+
/** form attribuut <form autocomplete="..." >. */
|
|
19
|
+
autocomplete?: 'on' | 'off';
|
|
20
|
+
/** direction voor form-elementen (horizontaal (1 lijn, default) of vertical (label boven, input onder)) */
|
|
21
|
+
direction?: DirectionProp;
|
|
22
|
+
/** form attribuut <form novalidate="..." > */
|
|
23
|
+
novalidate?: boolean;
|
|
24
|
+
/** extra classnames voor de form */
|
|
25
|
+
className?: string;
|
|
26
|
+
};
|
|
27
|
+
declare const Form: {
|
|
28
|
+
(props: FormProps): JSX.Element;
|
|
29
|
+
/** een zelf-configureerbare base input */
|
|
30
|
+
Input: (props: import("./Others/BasicInput").BasicInputProps) => JSX.Element;
|
|
31
|
+
/** input voor type url, text of tel */
|
|
32
|
+
Text: (props: import("./Text/TextInput").TextInputProps) => JSX.Element;
|
|
33
|
+
/** password input */
|
|
34
|
+
Password: (props: import("./Text/PasswordInput").PasswordInputProps) => JSX.Element;
|
|
35
|
+
/** email input */
|
|
36
|
+
Email: (props: import("./Text/EmailInput").EmailInputProps) => JSX.Element;
|
|
37
|
+
/** text area input */
|
|
38
|
+
TextArea: (props: import("./Text/TextArea").TextAreaProps) => JSX.Element;
|
|
39
|
+
/** select input */
|
|
40
|
+
Select: (props: import("./Selects/Select").SelectInputProps) => JSX.Element;
|
|
41
|
+
/** multi-select input */
|
|
42
|
+
MultiSelect: (props: import("./Selects/MultiSelect").MultiSelectInputProps) => JSX.Element;
|
|
43
|
+
/** color input */
|
|
44
|
+
Color: (props: import("./Others/ColorInput").ColorInputProps) => JSX.Element;
|
|
45
|
+
/** hidden input */
|
|
46
|
+
Hidden: (props: import("./Others/HiddenInput").HiddenInputProps) => JSX.Element;
|
|
47
|
+
/** number input */
|
|
48
|
+
Number: (props: import("./Numeric/NumberInput").NumberInputProps) => JSX.Element;
|
|
49
|
+
/** range input (als a number input) */
|
|
50
|
+
Range: (props: import("./Numeric/RangeInput").RangeInputProps) => JSX.Element;
|
|
51
|
+
/** multi-range input (2 numbers) */
|
|
52
|
+
MultiRange: (props: import("./Numeric/MultiRangeInput").MultiRangeInputProps) => JSX.Element;
|
|
53
|
+
/** input for dates */
|
|
54
|
+
Date: (props: import("./Datetimes/DateInput").DateInputProps) => JSX.Element;
|
|
55
|
+
/** input for date & time combinations */
|
|
56
|
+
DateTime: (props: import("./Datetimes/DateTimeInput").DateTimeInputProps) => JSX.Element;
|
|
57
|
+
/** time input */
|
|
58
|
+
Time: (props: import("./Datetimes/TimeInput").TimeInputProps) => JSX.Element;
|
|
59
|
+
/** checkbox input */
|
|
60
|
+
CheckBox: (props: import("./Checkbox/Checkbox").CheckboxInputProps) => JSX.Element;
|
|
61
|
+
/** Plaats 2 of meer inputs op een lijn
|
|
62
|
+
* LET OP: je moet zelf instellen of ze horizontaal / verticaal moeten zijn (default = horizontal)
|
|
63
|
+
*/
|
|
64
|
+
Line: (props: {
|
|
65
|
+
children: React.ReactNode;
|
|
66
|
+
}) => JSX.Element;
|
|
67
|
+
};
|
|
68
|
+
export { Form };
|
|
69
|
+
export type { FormProps };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { FormBuilderProps } from './FormBuilderProps';
|
|
3
|
+
/**
|
|
4
|
+
* stel een form samen op basis van een array van fields, met een submit-button en optionele extra buttons.
|
|
5
|
+
* Kan ook in een modal getoont worden.
|
|
6
|
+
* @param props
|
|
7
|
+
* @returns een object voor POST requests OF een URLPARAMS string voor GET requests
|
|
8
|
+
*/
|
|
9
|
+
export declare function FormBuilder(props: FormBuilderProps): JSX.Element;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { ColorProp, DirectionProp } from '../../loon-react-bulma-types';
|
|
2
|
+
import { FormValidationType } from './BaseInputProps';
|
|
3
|
+
import { SelectOptionType, SelectOptionGroupType } from './Selects/BaseSelectProps';
|
|
4
|
+
/** Props voor de Form-component */
|
|
5
|
+
export declare type FormBuilderProps = {
|
|
6
|
+
/** definieer een onSubmit voor het form
|
|
7
|
+
* <form onSubmit="onSubmit(e)"
|
|
8
|
+
* @param e: data
|
|
9
|
+
* @returns: het resultaat van het form: GET: URLSearchParams string, POST: key-values van fields
|
|
10
|
+
*/
|
|
11
|
+
onSubmit(e: any | undefined): void;
|
|
12
|
+
/** Moet het form in een modal verschijnen */
|
|
13
|
+
useModal?: boolean;
|
|
14
|
+
/** wat te doen om de modal te sluiten. ALLEEN ALS useModal 'true' IS, IS DEZE NODIG */
|
|
15
|
+
onDismiss?(e: any): void;
|
|
16
|
+
/** buttons voor onderaan het form */
|
|
17
|
+
buttons: {
|
|
18
|
+
/** de tekst voor de (groene) submit button, deze is VERPLICHT */
|
|
19
|
+
submit: string;
|
|
20
|
+
/** 0 of emerdere (blauw) buttons */
|
|
21
|
+
other?: FormBuilderButton[];
|
|
22
|
+
};
|
|
23
|
+
/** Een array van fields voor het form */
|
|
24
|
+
fields: FormBuilderFieldProps[];
|
|
25
|
+
/** autocomplete on or off? */
|
|
26
|
+
autocomplete?: 'on' | 'off' | null;
|
|
27
|
+
/** de form name */
|
|
28
|
+
name: string;
|
|
29
|
+
/** de GET / POST methode voor het form
|
|
30
|
+
* <form method="get"></form>
|
|
31
|
+
*/
|
|
32
|
+
method: 'post' | 'get';
|
|
33
|
+
/** target voor het form */
|
|
34
|
+
target?: '_self' | '_blank' | '_parent' | '_top' | null;
|
|
35
|
+
direction?: DirectionProp;
|
|
36
|
+
};
|
|
37
|
+
/** Props voor de fields in een form van de Form-Component */
|
|
38
|
+
export declare type FormBuilderFieldProps = {
|
|
39
|
+
/** de naam voor het field. gebruikt in input en in <label> als geen label gedefinieerd.
|
|
40
|
+
* <input name="..." /> */
|
|
41
|
+
name: string;
|
|
42
|
+
/** een tooltip voor de button */
|
|
43
|
+
tooltip?: string;
|
|
44
|
+
/** label voor het field, als die afwijkt van de name-attribuut. gebruikt in <label> (optional) */
|
|
45
|
+
label?: string;
|
|
46
|
+
/** is het field gevalideerd en wat is daar de uitkomst van. */
|
|
47
|
+
placeholder?: string;
|
|
48
|
+
/** (optioneel) id van een field. Anders wordt de "name" gebruikt */
|
|
49
|
+
id?: string;
|
|
50
|
+
valid?: boolean;
|
|
51
|
+
/** de waarde van de input.
|
|
52
|
+
* Voor multi-range-inputs: een number[] van twee waarden: [valueA, valueB]
|
|
53
|
+
* Voor Datum/Tijd inputs:
|
|
54
|
+
* - type 'date': YYYY-MM-DD
|
|
55
|
+
* - type 'time': HH:mm
|
|
56
|
+
* - type 'datetime': YYYY-MM-DD HH:mm OF YYYY-MM-DDTHH:mm
|
|
57
|
+
*/
|
|
58
|
+
value?: string | string[] | number | number[] | boolean | null;
|
|
59
|
+
/** object gebruikt voot validatie */
|
|
60
|
+
validation?: FormValidationType;
|
|
61
|
+
/** input type: <input type="..." /> */
|
|
62
|
+
type: 'text' | 'number' | 'email' | 'password' | 'date' | 'datetime' | 'time' | 'textarea' | 'select' | 'multiselect' | 'checkbox' | 'tel' | 'url' | 'range' | 'multirange' | 'hidden';
|
|
63
|
+
/** voor type 'number', 'time', 'range' en 'multirange' kan er een step-grootte worden opgegeven */
|
|
64
|
+
step?: number;
|
|
65
|
+
/** autocomplete voor gebruik met wachtwoorden, usernames & wachtwoordmanagers */
|
|
66
|
+
autocomplete?: 'on' | 'off' | 'current-password' | 'new-password' | 'username' | undefined;
|
|
67
|
+
/** voor een <select> input: welke options moeten er zijn */
|
|
68
|
+
selectOptions?: string[] | SelectOptionType[] | SelectOptionGroupType[];
|
|
69
|
+
};
|
|
70
|
+
/** Props voor het Button-object van de Form-component */
|
|
71
|
+
export declare type FormBuilderButton = {
|
|
72
|
+
/** tekst op de button */
|
|
73
|
+
txt: string;
|
|
74
|
+
/** moet de formdata gevalideert zijn voor je de button kan gebruiken? */
|
|
75
|
+
mustValidate?: boolean;
|
|
76
|
+
/** button type <button type="..." */
|
|
77
|
+
type: 'submit' | 'reset' | 'button';
|
|
78
|
+
/** button color: s: success-button, d: danger-button, n: primarycolor button */
|
|
79
|
+
color?: ColorProp;
|
|
80
|
+
/** wat als er op de button geklikt wordt? (optional) */
|
|
81
|
+
onClick(e: MouseEvent): any | void;
|
|
82
|
+
};
|
|
83
|
+
export declare type ChangedValue = {
|
|
84
|
+
/** nieuwe waarde */
|
|
85
|
+
new: number | number[] | string | string[] | boolean | null | undefined;
|
|
86
|
+
/** oude waarde */
|
|
87
|
+
old: number | number[] | string | string[] | boolean | null | undefined;
|
|
88
|
+
/** is de waarde valid */
|
|
89
|
+
valid: boolean;
|
|
90
|
+
/** wat is de naam van het gewijzigde field */
|
|
91
|
+
name: string;
|
|
92
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IconProp } from '@fortawesome/fontawesome-svg-core';
|
|
3
|
+
import { SizeProp } from '../../../loon-react-bulma-types';
|
|
4
|
+
import { BaseInputProps, InputTypeProp } from '../BaseInputProps';
|
|
5
|
+
declare type BasicInputProps = BaseInputProps & {
|
|
6
|
+
icon?: string | IconProp | any;
|
|
7
|
+
/** type van de tekst input (default = 'text') */
|
|
8
|
+
type?: InputTypeProp;
|
|
9
|
+
/** start value voor deze input (optioneel) */
|
|
10
|
+
value?: string;
|
|
11
|
+
/** speciaal voor password-managers. Wat is de functie van deze input */
|
|
12
|
+
autocomplete?: 'on' | 'off' | 'current-password' | 'new-password' | 'username' | 'given-name' | 'additional-name' | 'family-name' | 'nickname' | 'email' | 'name' | 'one-time-code' | 'organization' | 'street-address' | 'tel' | 'bday' | 'language' | 'country' | 'postal-code' | string;
|
|
13
|
+
/** grootte input (optioneel) */
|
|
14
|
+
size?: SizeProp;
|
|
15
|
+
/**
|
|
16
|
+
* Wat te doen als de waarde is veranderd
|
|
17
|
+
* @param newVal: de nieuwe waarde
|
|
18
|
+
* @param valid: is de nieuwe waarde geldig?
|
|
19
|
+
*/
|
|
20
|
+
onValueChanged?(newVal: string, isValid?: boolean): any | void;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Maak een input van een tekst-type met optionele validation.
|
|
24
|
+
* @param props
|
|
25
|
+
* @returns <input type="text'|'tel'|'url">
|
|
26
|
+
*/
|
|
27
|
+
declare const BasicInput: (props: BasicInputProps) => JSX.Element;
|
|
28
|
+
export { BasicInput };
|
|
29
|
+
export type { BasicInputProps };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IconProp } from '@fortawesome/fontawesome-svg-core';
|
|
1
2
|
import { ReactNode } from 'react';
|
|
2
3
|
import { ColorProp, SizeProp } from '../../loon-react-bulma-types';
|
|
3
4
|
declare type IconProps = {
|
|
@@ -5,7 +6,7 @@ declare type IconProps = {
|
|
|
5
6
|
* - string: geef de gehele font-awesome-class op. 'flip', 'animate', 'rotation' worden dan al gebruikt in deze class.
|
|
6
7
|
* - any: geef een react IconProp object door.
|
|
7
8
|
*/
|
|
8
|
-
icon: string |
|
|
9
|
+
icon: string | IconProp;
|
|
9
10
|
/** de icon-grootte */
|
|
10
11
|
size?: SizeProp;
|
|
11
12
|
/** de kleur voor het icoon */
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { SizeProp, AlignmentProp } from './loon-react-bulma-types';
|
|
1
|
+
export type { SizeProp, AlignmentProp, DirectionProp } from './loon-react-bulma-types';
|
|
2
2
|
export { AspectRatio } from './components/Layout/AspectRatio/AspectRatio';
|
|
3
3
|
export type { AspectRatioProps } from './components/Layout/AspectRatio/AspectRatio';
|
|
4
4
|
export { Box } from './components/Layout/Box/Box';
|
|
@@ -45,8 +45,10 @@ export type { ButtonProps } from './components/Button/ButtonProps';
|
|
|
45
45
|
export { Button } from './components/Button/Button';
|
|
46
46
|
export { Link, LinkButton } from './components/Link/Link';
|
|
47
47
|
export type { LinkProps, LinkButtonProps } from './components/Link/Link';
|
|
48
|
-
export
|
|
49
|
-
export type { FormProps
|
|
48
|
+
export { Form } from './components/Form/Form';
|
|
49
|
+
export type { FormProps } from './components/Form/Form';
|
|
50
|
+
export { FormBuilder } from './components/Form/FormBuilder';
|
|
51
|
+
export type { FormBuilderProps, FormBuilderFieldProps, FormBuilderButton } from './components/Form/FormBuilderProps';
|
|
50
52
|
export { CheckBox } from './components/Form/Checkbox/Checkbox';
|
|
51
53
|
export type { CheckboxInputProps } from './components/Form/Checkbox/Checkbox';
|
|
52
54
|
export type { SelectOptionGroupType, SelectOptionType } from './components/Form/Selects/BaseSelectProps';
|
|
@@ -58,6 +60,8 @@ export { ColorInput } from './components/Form/Others/ColorInput';
|
|
|
58
60
|
export type { ColorInputProps } from './components/Form/Others/ColorInput';
|
|
59
61
|
export { HiddenInput } from './components/Form/Others/HiddenInput';
|
|
60
62
|
export type { HiddenInputProps } from './components/Form/Others/HiddenInput';
|
|
63
|
+
export { BasicInput } from './components/Form/Others/BasicInput';
|
|
64
|
+
export type { BasicInputProps } from './components/Form/Others/BasicInput';
|
|
61
65
|
export { EmailInput } from './components/Form/Text/EmailInput';
|
|
62
66
|
export type { EmailInputProps } from './components/Form/Text/EmailInput';
|
|
63
67
|
export { PasswordInput } from './components/Form/Text/PasswordInput';
|