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 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: React.ReactNode;
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: string;
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
- /// <reference types="react" />
2
- import { FormProps } from './FormProps';
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 Form(props: FormProps): JSX.Element;
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 | any;
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 * from './components/Form/Form';
49
- export type { FormProps, FormFieldProps, FormButton } from './components/Form/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';