@conduction/components 2.2.11 → 2.2.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 +4 -0
- package/lib/components/formFields/input.d.ts +1 -0
- package/lib/components/formFields/input.js +8 -8
- package/lib/components/formFields/select/select.d.ts +4 -3
- package/lib/components/formFields/select/select.js +58 -6
- package/lib/components/formFields/textarea.d.ts +2 -1
- package/lib/components/formFields/textarea.js +1 -1
- package/package.json +1 -1
- package/src/components/formFields/input.tsx +15 -0
- package/src/components/formFields/select/select.tsx +58 -0
- package/src/components/formFields/textarea.tsx +8 -1
package/README.md
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
- **Version 2.2 (breaking changes from 2.1.x)**
|
|
6
6
|
|
|
7
|
+
- 2.2.13:
|
|
8
|
+
- Updated Textarea and all Input components to allow aria-label.
|
|
9
|
+
- Updated Select components.
|
|
10
|
+
- 2.2.12: Updated Select components to WCAG with aria-label and role.
|
|
7
11
|
- 2.2.11: Updated Primary and Secondary topnav to NLDS.
|
|
8
12
|
- 2.2.10: Added z-index to tooltip.
|
|
9
13
|
- 2.2.9: Added CardWrapper, CardHeader, CardHeaderTitle, CardHeaderDate to index.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Textbox } from "@utrecht/component-library-react/dist/css-module";
|
|
3
3
|
import { ErrorMessage } from "./errorMessage/ErrorMessage";
|
|
4
|
-
export const InputPassword = ({ disabled, name, validation, register, placeholder, errors, hideErrorMessage, }) => {
|
|
5
|
-
return (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "password", ...{ disabled, placeholder }, ...register(name, { ...validation }), invalid: errors[name] }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
4
|
+
export const InputPassword = ({ disabled, name, validation, register, placeholder, errors, hideErrorMessage, ariaLabel, }) => {
|
|
5
|
+
return (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "password", ...{ disabled, placeholder }, ...register(name, { ...validation }), invalid: errors[name], "aria-label": ariaLabel }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
6
6
|
};
|
|
7
|
-
export const InputText = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "text", ...{ defaultValue, disabled, placeholder, icon }, ...register(name, { ...validation }), invalid: errors[name] }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
8
|
-
export const InputEmail = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "email", required: !!validation?.required, ...{ defaultValue, disabled, placeholder, icon }, ...register(name, { ...validation }), invalid: errors[name] }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
9
|
-
export const InputURL = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "url", ...{ defaultValue, disabled, placeholder, icon }, ...register(name, { ...validation }), invalid: errors[name] }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
10
|
-
export const InputNumber = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "number", ...{ defaultValue, disabled, placeholder, icon }, ...register(name, { ...validation, valueAsNumber: true }), invalid: errors[name] }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
11
|
-
export const InputFloat = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "number", step: ".01", ...{ disabled, placeholder, icon, defaultValue }, ...register(name, { ...validation, valueAsNumber: true }), invalid: errors[name] }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
12
|
-
export const InputFile = ({ disabled, name, accept, defaultValue, validation, register, }) => (_jsx("input", { className: "denhaag-Textbox__input", type: "file", ...{ defaultValue, disabled, accept }, ...register(name, { ...validation }) }));
|
|
7
|
+
export const InputText = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, ariaLabel, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "text", ...{ defaultValue, disabled, placeholder, icon }, ...register(name, { ...validation }), invalid: errors[name], "aria-label": ariaLabel }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
8
|
+
export const InputEmail = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, ariaLabel, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "email", required: !!validation?.required, ...{ defaultValue, disabled, placeholder, icon }, ...register(name, { ...validation }), invalid: errors[name], "aria-label": ariaLabel }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
9
|
+
export const InputURL = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, ariaLabel, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "url", ...{ defaultValue, disabled, placeholder, icon }, ...register(name, { ...validation }), invalid: errors[name], "aria-label": ariaLabel }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
10
|
+
export const InputNumber = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, ariaLabel, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "number", ...{ defaultValue, disabled, placeholder, icon }, ...register(name, { ...validation, valueAsNumber: true }), invalid: errors[name], "aria-label": ariaLabel }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
11
|
+
export const InputFloat = ({ disabled, name, defaultValue, validation, register, icon, placeholder, errors, hideErrorMessage, ariaLabel, }) => (_jsxs(_Fragment, { children: [_jsx(Textbox, { type: "number", step: ".01", ...{ disabled, placeholder, icon, defaultValue }, ...register(name, { ...validation, valueAsNumber: true }), invalid: errors[name], "aria-label": ariaLabel }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
12
|
+
export const InputFile = ({ disabled, name, accept, defaultValue, validation, register, ariaLabel, }) => (_jsx("input", { className: "denhaag-Textbox__input", type: "file", ...{ defaultValue, disabled, accept }, ...register(name, { ...validation }), "aria-label": ariaLabel }));
|
|
@@ -9,6 +9,7 @@ interface ISelectProps {
|
|
|
9
9
|
value: string;
|
|
10
10
|
}[];
|
|
11
11
|
name: string;
|
|
12
|
+
ariaLabel?: string;
|
|
12
13
|
id?: string;
|
|
13
14
|
defaultValue?: any;
|
|
14
15
|
disabled?: boolean;
|
|
@@ -17,7 +18,7 @@ interface ISelectProps {
|
|
|
17
18
|
menuPlacement?: MenuPlacement;
|
|
18
19
|
placeholder?: string;
|
|
19
20
|
}
|
|
20
|
-
export declare const SelectMultiple: ({ id, name, options, errors, control, validation, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, }: ISelectProps & IReactHookFormProps) => JSX.Element;
|
|
21
|
-
export declare const SelectCreate: ({ id, name, options, errors, control, validation, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, }: ISelectProps & IReactHookFormProps) => JSX.Element;
|
|
22
|
-
export declare const SelectSingle: ({ id, name, options, errors, control, validation, isClearable, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, }: ISelectProps & IReactHookFormProps) => JSX.Element;
|
|
21
|
+
export declare const SelectMultiple: ({ id, name, options, errors, control, validation, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, ariaLabel, }: ISelectProps & IReactHookFormProps) => JSX.Element;
|
|
22
|
+
export declare const SelectCreate: ({ id, name, options, errors, control, validation, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, ariaLabel, }: ISelectProps & IReactHookFormProps) => JSX.Element;
|
|
23
|
+
export declare const SelectSingle: ({ id, name, options, errors, control, validation, isClearable, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, ariaLabel, }: ISelectProps & IReactHookFormProps) => JSX.Element;
|
|
23
24
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
2
3
|
import * as styles from "./select.module.css";
|
|
3
4
|
import { Controller } from "react-hook-form";
|
|
4
5
|
import ReactSelect from "react-select";
|
|
@@ -41,18 +42,69 @@ const selectMultiStyles = {
|
|
|
41
42
|
color: `var(--conduction-input-select-placeholder-color, var(--utrecht-form-input-placeholder-color, ${base.color}) )`,
|
|
42
43
|
}),
|
|
43
44
|
};
|
|
44
|
-
export const SelectMultiple = ({ id, name, options, errors, control, validation, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, }) => {
|
|
45
|
+
export const SelectMultiple = ({ id, name, options, errors, control, validation, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, ariaLabel, }) => {
|
|
46
|
+
React.useEffect(() => {
|
|
47
|
+
document.querySelectorAll('[id*="live-region"]').forEach((element) => {
|
|
48
|
+
if (element?.role !== "presentation") {
|
|
49
|
+
element.setAttribute("role", "presentation");
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
document.querySelectorAll('[class*="indicatorSeparator"]').forEach((element) => {
|
|
53
|
+
if (element.role !== "presentation") {
|
|
54
|
+
element.setAttribute("role", "presentation");
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
document.querySelectorAll('[class*="a11yText-A11yText"]').forEach((element) => {
|
|
58
|
+
if (element.role !== "presentation") {
|
|
59
|
+
element.setAttribute("role", "presentation");
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}, []);
|
|
45
63
|
return (_jsx(Controller, { ...{ control, name, defaultValue }, rules: validation, render: ({ field: { onChange, value } }) => {
|
|
46
|
-
return (_jsxs(_Fragment, { children: [_jsx(ReactSelect, { inputId: id, value: value ?? "", className: clsx(styles.select, errors[name] && styles.error), isMulti: true, isDisabled: disabled, ...{ options, onChange, errors }, menuPortalTarget: document.body, menuPlacement: menuPlacement, styles: selectStyles, placeholder: disabled ? "Disabled..." : placeholder ?? "Select one or more options..." }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
64
|
+
return (_jsxs(_Fragment, { children: [_jsx(ReactSelect, { "aria-label": ariaLabel, inputId: id, value: value ?? "", className: clsx(styles.select, errors[name] && styles.error), isMulti: true, isDisabled: disabled, ...{ options, onChange, errors }, menuPortalTarget: document.body, menuPlacement: menuPlacement, styles: selectStyles, placeholder: disabled ? "Disabled..." : placeholder ?? "Select one or more options..." }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
47
65
|
} }));
|
|
48
66
|
};
|
|
49
|
-
export const SelectCreate = ({ id, name, options, errors, control, validation, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, }) => {
|
|
67
|
+
export const SelectCreate = ({ id, name, options, errors, control, validation, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, ariaLabel, }) => {
|
|
68
|
+
React.useEffect(() => {
|
|
69
|
+
document.querySelectorAll('[id*="live-region"]').forEach((element) => {
|
|
70
|
+
if (element.role !== "presentation") {
|
|
71
|
+
element.setAttribute("role", "presentation");
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
document.querySelectorAll('[class*="indicatorSeparator"]').forEach((element) => {
|
|
75
|
+
if (element.role !== "presentation") {
|
|
76
|
+
element.setAttribute("role", "presentation");
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
document.querySelectorAll('[class*="a11yText"]').forEach((element) => {
|
|
80
|
+
if (element.role !== "presentation") {
|
|
81
|
+
element.setAttribute("role", "presentation");
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}, []);
|
|
50
85
|
return (_jsx(Controller, { ...{ control, name, defaultValue }, rules: validation, render: ({ field: { onChange, value } }) => {
|
|
51
|
-
return (_jsxs(_Fragment, { children: [_jsx(CreatableSelect, { inputId: id, value: value ?? "", placeholder: disabled ? "Disabled..." : placeholder ?? "Select one or more options...", className: clsx(styles.select, errors[name] && styles.error), isMulti: true, isDisabled: disabled, ...{ options, onChange, errors }, menuPortalTarget: document.body, menuPlacement: menuPlacement, styles: selectStyles }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
86
|
+
return (_jsxs(_Fragment, { children: [_jsx(CreatableSelect, { "aria-label": ariaLabel, inputId: id, value: value ?? "", placeholder: disabled ? "Disabled..." : placeholder ?? "Select one or more options...", className: clsx(styles.select, errors[name] && styles.error), isMulti: true, isDisabled: disabled, ...{ options, onChange, errors }, menuPortalTarget: document.body, menuPlacement: menuPlacement, styles: selectStyles }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
52
87
|
} }));
|
|
53
88
|
};
|
|
54
|
-
export const SelectSingle = ({ id, name, options, errors, control, validation, isClearable, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, }) => {
|
|
89
|
+
export const SelectSingle = ({ id, name, options, errors, control, validation, isClearable, defaultValue, disabled, hideErrorMessage, menuPlacement, placeholder, ariaLabel, }) => {
|
|
90
|
+
React.useEffect(() => {
|
|
91
|
+
document.querySelectorAll('[id*="live-region"]').forEach((element) => {
|
|
92
|
+
if (element.role !== "presentation") {
|
|
93
|
+
element.setAttribute("role", "presentation");
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
document.querySelectorAll('[class*="indicatorSeparator"]').forEach((element) => {
|
|
97
|
+
if (element.role !== "presentation") {
|
|
98
|
+
element.setAttribute("role", "presentation");
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
document.querySelectorAll('[class*="a11yText-A11yText"]').forEach((element) => {
|
|
102
|
+
if (element.role !== "presentation") {
|
|
103
|
+
element.setAttribute("role", "presentation");
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}, []);
|
|
55
107
|
return (_jsx(Controller, { ...{ control, name, defaultValue }, rules: validation, render: ({ field: { onChange, value } }) => {
|
|
56
|
-
return (_jsxs(_Fragment, { children: [_jsx(ReactSelect, { inputId: id, value: value ?? "", className: clsx(styles.select, errors[name] && styles.error), isDisabled: disabled, ...{ options, onChange, errors, isClearable }, menuPortalTarget: document.body, menuPlacement: menuPlacement, styles: selectStyles, placeholder: disabled ? "Disabled..." : placeholder ?? "Select one or more options..." }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
108
|
+
return (_jsxs(_Fragment, { children: [_jsx(ReactSelect, { "aria-label": ariaLabel, inputId: id, value: value ?? "", className: clsx(styles.select, errors[name] && styles.error), isDisabled: disabled, ...{ options, onChange, errors, isClearable }, menuPortalTarget: document.body, menuPlacement: menuPlacement, styles: selectStyles, placeholder: disabled ? "Disabled..." : placeholder ?? "Select one or more options..." }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
57
109
|
} }));
|
|
58
110
|
};
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
import { IReactHookFormProps } from "./types";
|
|
3
3
|
export interface ITextAreaProps {
|
|
4
4
|
name: string;
|
|
5
|
+
ariaLabel?: string;
|
|
5
6
|
disabled?: boolean;
|
|
6
7
|
defaultValue?: string;
|
|
7
8
|
hideErrorMessage?: boolean;
|
|
8
9
|
}
|
|
9
|
-
export declare const Textarea: ({ name, validation, register, errors, disabled, defaultValue, hideErrorMessage, }: ITextAreaProps & IReactHookFormProps) => JSX.Element;
|
|
10
|
+
export declare const Textarea: ({ name, validation, register, errors, disabled, defaultValue, hideErrorMessage, ariaLabel, }: ITextAreaProps & IReactHookFormProps) => JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ErrorMessage } from "./errorMessage/ErrorMessage";
|
|
3
3
|
import { Textarea as UtrechtTextarea } from "@utrecht/component-library-react/dist/css-module";
|
|
4
|
-
export const Textarea = ({ name, validation, register, errors, disabled, defaultValue, hideErrorMessage, }) => (_jsxs(_Fragment, { children: [_jsx(UtrechtTextarea, { ...register(name, { ...validation }), ...{ disabled, defaultValue }, invalid: errors[name] }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
|
4
|
+
export const Textarea = ({ name, validation, register, errors, disabled, defaultValue, hideErrorMessage, ariaLabel, }) => (_jsxs(_Fragment, { children: [_jsx(UtrechtTextarea, { ...register(name, { ...validation }), ...{ disabled, defaultValue }, invalid: errors[name], "aria-label": ariaLabel }), errors[name] && !hideErrorMessage && _jsx(ErrorMessage, { message: errors[name].message })] }));
|
package/package.json
CHANGED
|
@@ -5,6 +5,7 @@ import { ErrorMessage } from "./errorMessage/ErrorMessage";
|
|
|
5
5
|
|
|
6
6
|
export interface IInputProps {
|
|
7
7
|
name: string;
|
|
8
|
+
ariaLabel?: string;
|
|
8
9
|
disabled?: boolean;
|
|
9
10
|
defaultValue?: string;
|
|
10
11
|
icon?: JSX.Element;
|
|
@@ -20,6 +21,7 @@ export const InputPassword: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
20
21
|
placeholder,
|
|
21
22
|
errors,
|
|
22
23
|
hideErrorMessage,
|
|
24
|
+
ariaLabel,
|
|
23
25
|
}) => {
|
|
24
26
|
return (
|
|
25
27
|
<>
|
|
@@ -28,6 +30,7 @@ export const InputPassword: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
28
30
|
{...{ disabled, placeholder }}
|
|
29
31
|
{...register(name, { ...validation })}
|
|
30
32
|
invalid={errors[name]}
|
|
33
|
+
aria-label={ariaLabel}
|
|
31
34
|
/>
|
|
32
35
|
{errors[name] && !hideErrorMessage && <ErrorMessage message={errors[name].message} />}
|
|
33
36
|
</>
|
|
@@ -44,6 +47,7 @@ export const InputText: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
44
47
|
placeholder,
|
|
45
48
|
errors,
|
|
46
49
|
hideErrorMessage,
|
|
50
|
+
ariaLabel,
|
|
47
51
|
}) => (
|
|
48
52
|
<>
|
|
49
53
|
<Textbox
|
|
@@ -51,6 +55,7 @@ export const InputText: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
51
55
|
{...{ defaultValue, disabled, placeholder, icon }}
|
|
52
56
|
{...register(name, { ...validation })}
|
|
53
57
|
invalid={errors[name]}
|
|
58
|
+
aria-label={ariaLabel}
|
|
54
59
|
/>
|
|
55
60
|
{errors[name] && !hideErrorMessage && <ErrorMessage message={errors[name].message} />}
|
|
56
61
|
</>
|
|
@@ -66,6 +71,7 @@ export const InputEmail: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
66
71
|
placeholder,
|
|
67
72
|
errors,
|
|
68
73
|
hideErrorMessage,
|
|
74
|
+
ariaLabel,
|
|
69
75
|
}) => (
|
|
70
76
|
<>
|
|
71
77
|
<Textbox
|
|
@@ -74,6 +80,7 @@ export const InputEmail: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
74
80
|
{...{ defaultValue, disabled, placeholder, icon }}
|
|
75
81
|
{...register(name, { ...validation })}
|
|
76
82
|
invalid={errors[name]}
|
|
83
|
+
aria-label={ariaLabel}
|
|
77
84
|
/>
|
|
78
85
|
{errors[name] && !hideErrorMessage && <ErrorMessage message={errors[name].message} />}
|
|
79
86
|
</>
|
|
@@ -89,6 +96,7 @@ export const InputURL: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
89
96
|
placeholder,
|
|
90
97
|
errors,
|
|
91
98
|
hideErrorMessage,
|
|
99
|
+
ariaLabel,
|
|
92
100
|
}) => (
|
|
93
101
|
<>
|
|
94
102
|
<Textbox
|
|
@@ -96,6 +104,7 @@ export const InputURL: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
96
104
|
{...{ defaultValue, disabled, placeholder, icon }}
|
|
97
105
|
{...register(name, { ...validation })}
|
|
98
106
|
invalid={errors[name]}
|
|
107
|
+
aria-label={ariaLabel}
|
|
99
108
|
/>
|
|
100
109
|
{errors[name] && !hideErrorMessage && <ErrorMessage message={errors[name].message} />}
|
|
101
110
|
</>
|
|
@@ -111,6 +120,7 @@ export const InputNumber: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
111
120
|
placeholder,
|
|
112
121
|
errors,
|
|
113
122
|
hideErrorMessage,
|
|
123
|
+
ariaLabel,
|
|
114
124
|
}) => (
|
|
115
125
|
<>
|
|
116
126
|
<Textbox
|
|
@@ -118,6 +128,7 @@ export const InputNumber: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
118
128
|
{...{ defaultValue, disabled, placeholder, icon }}
|
|
119
129
|
{...register(name, { ...validation, valueAsNumber: true })}
|
|
120
130
|
invalid={errors[name]}
|
|
131
|
+
aria-label={ariaLabel}
|
|
121
132
|
/>
|
|
122
133
|
{errors[name] && !hideErrorMessage && <ErrorMessage message={errors[name].message} />}
|
|
123
134
|
</>
|
|
@@ -133,6 +144,7 @@ export const InputFloat: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
133
144
|
placeholder,
|
|
134
145
|
errors,
|
|
135
146
|
hideErrorMessage,
|
|
147
|
+
ariaLabel,
|
|
136
148
|
}) => (
|
|
137
149
|
<>
|
|
138
150
|
<Textbox
|
|
@@ -141,6 +153,7 @@ export const InputFloat: React.FC<IInputProps & IReactHookFormProps> = ({
|
|
|
141
153
|
{...{ disabled, placeholder, icon, defaultValue }}
|
|
142
154
|
{...register(name, { ...validation, valueAsNumber: true })}
|
|
143
155
|
invalid={errors[name]}
|
|
156
|
+
aria-label={ariaLabel}
|
|
144
157
|
/>
|
|
145
158
|
{errors[name] && !hideErrorMessage && <ErrorMessage message={errors[name].message} />}
|
|
146
159
|
</>
|
|
@@ -157,11 +170,13 @@ export const InputFile: React.FC<IInputFileProps & IInputProps & IReactHookFormP
|
|
|
157
170
|
defaultValue,
|
|
158
171
|
validation,
|
|
159
172
|
register,
|
|
173
|
+
ariaLabel,
|
|
160
174
|
}) => (
|
|
161
175
|
<input
|
|
162
176
|
className="denhaag-Textbox__input"
|
|
163
177
|
type="file"
|
|
164
178
|
{...{ defaultValue, disabled, accept }}
|
|
165
179
|
{...register(name, { ...validation })}
|
|
180
|
+
aria-label={ariaLabel}
|
|
166
181
|
/>
|
|
167
182
|
);
|
|
@@ -11,6 +11,7 @@ interface ISelectProps {
|
|
|
11
11
|
control: Control<FieldValues, any>;
|
|
12
12
|
options: { label: string; value: string }[];
|
|
13
13
|
name: string;
|
|
14
|
+
ariaLabel?: string;
|
|
14
15
|
id?: string;
|
|
15
16
|
defaultValue?: any;
|
|
16
17
|
disabled?: boolean;
|
|
@@ -72,7 +73,25 @@ export const SelectMultiple = ({
|
|
|
72
73
|
hideErrorMessage,
|
|
73
74
|
menuPlacement,
|
|
74
75
|
placeholder,
|
|
76
|
+
ariaLabel,
|
|
75
77
|
}: ISelectProps & IReactHookFormProps): JSX.Element => {
|
|
78
|
+
React.useEffect(() => {
|
|
79
|
+
document.querySelectorAll('[id*="live-region"]').forEach((element: any) => {
|
|
80
|
+
if (element?.role !== "presentation") {
|
|
81
|
+
element.setAttribute("role", "presentation");
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
document.querySelectorAll('[class*="indicatorSeparator"]').forEach((element: any) => {
|
|
85
|
+
if (element.role !== "presentation") {
|
|
86
|
+
element.setAttribute("role", "presentation");
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
document.querySelectorAll('[class*="a11yText-A11yText"]').forEach((element: any) => {
|
|
90
|
+
if (element.role !== "presentation") {
|
|
91
|
+
element.setAttribute("role", "presentation");
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}, []);
|
|
76
95
|
return (
|
|
77
96
|
<Controller
|
|
78
97
|
{...{ control, name, defaultValue }}
|
|
@@ -81,6 +100,7 @@ export const SelectMultiple = ({
|
|
|
81
100
|
return (
|
|
82
101
|
<>
|
|
83
102
|
<ReactSelect
|
|
103
|
+
aria-label={ariaLabel}
|
|
84
104
|
inputId={id}
|
|
85
105
|
value={value ?? ""}
|
|
86
106
|
className={clsx(styles.select, errors[name] && styles.error)}
|
|
@@ -112,7 +132,25 @@ export const SelectCreate = ({
|
|
|
112
132
|
hideErrorMessage,
|
|
113
133
|
menuPlacement,
|
|
114
134
|
placeholder,
|
|
135
|
+
ariaLabel,
|
|
115
136
|
}: ISelectProps & IReactHookFormProps): JSX.Element => {
|
|
137
|
+
React.useEffect(() => {
|
|
138
|
+
document.querySelectorAll('[id*="live-region"]').forEach((element: any) => {
|
|
139
|
+
if (element.role !== "presentation") {
|
|
140
|
+
element.setAttribute("role", "presentation");
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
document.querySelectorAll('[class*="indicatorSeparator"]').forEach((element: any) => {
|
|
144
|
+
if (element.role !== "presentation") {
|
|
145
|
+
element.setAttribute("role", "presentation");
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
document.querySelectorAll('[class*="a11yText"]').forEach((element: any) => {
|
|
149
|
+
if (element.role !== "presentation") {
|
|
150
|
+
element.setAttribute("role", "presentation");
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}, []);
|
|
116
154
|
return (
|
|
117
155
|
<Controller
|
|
118
156
|
{...{ control, name, defaultValue }}
|
|
@@ -121,6 +159,7 @@ export const SelectCreate = ({
|
|
|
121
159
|
return (
|
|
122
160
|
<>
|
|
123
161
|
<CreatableSelect
|
|
162
|
+
aria-label={ariaLabel}
|
|
124
163
|
inputId={id}
|
|
125
164
|
value={value ?? ""}
|
|
126
165
|
placeholder={disabled ? "Disabled..." : placeholder ?? "Select one or more options..."}
|
|
@@ -153,7 +192,25 @@ export const SelectSingle = ({
|
|
|
153
192
|
hideErrorMessage,
|
|
154
193
|
menuPlacement,
|
|
155
194
|
placeholder,
|
|
195
|
+
ariaLabel,
|
|
156
196
|
}: ISelectProps & IReactHookFormProps): JSX.Element => {
|
|
197
|
+
React.useEffect(() => {
|
|
198
|
+
document.querySelectorAll('[id*="live-region"]').forEach((element: any) => {
|
|
199
|
+
if (element.role !== "presentation") {
|
|
200
|
+
element.setAttribute("role", "presentation");
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
document.querySelectorAll('[class*="indicatorSeparator"]').forEach((element: any) => {
|
|
204
|
+
if (element.role !== "presentation") {
|
|
205
|
+
element.setAttribute("role", "presentation");
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
document.querySelectorAll('[class*="a11yText-A11yText"]').forEach((element: any) => {
|
|
209
|
+
if (element.role !== "presentation") {
|
|
210
|
+
element.setAttribute("role", "presentation");
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}, []);
|
|
157
214
|
return (
|
|
158
215
|
<Controller
|
|
159
216
|
{...{ control, name, defaultValue }}
|
|
@@ -162,6 +219,7 @@ export const SelectSingle = ({
|
|
|
162
219
|
return (
|
|
163
220
|
<>
|
|
164
221
|
<ReactSelect
|
|
222
|
+
aria-label={ariaLabel}
|
|
165
223
|
inputId={id}
|
|
166
224
|
value={value ?? ""}
|
|
167
225
|
className={clsx(styles.select, errors[name] && styles.error)}
|
|
@@ -4,6 +4,7 @@ import { Textarea as UtrechtTextarea } from "@utrecht/component-library-react/di
|
|
|
4
4
|
|
|
5
5
|
export interface ITextAreaProps {
|
|
6
6
|
name: string;
|
|
7
|
+
ariaLabel?: string;
|
|
7
8
|
disabled?: boolean;
|
|
8
9
|
defaultValue?: string;
|
|
9
10
|
hideErrorMessage?: boolean;
|
|
@@ -17,9 +18,15 @@ export const Textarea = ({
|
|
|
17
18
|
disabled,
|
|
18
19
|
defaultValue,
|
|
19
20
|
hideErrorMessage,
|
|
21
|
+
ariaLabel,
|
|
20
22
|
}: ITextAreaProps & IReactHookFormProps): JSX.Element => (
|
|
21
23
|
<>
|
|
22
|
-
<UtrechtTextarea
|
|
24
|
+
<UtrechtTextarea
|
|
25
|
+
{...register(name, { ...validation })}
|
|
26
|
+
{...{ disabled, defaultValue }}
|
|
27
|
+
invalid={errors[name]}
|
|
28
|
+
aria-label={ariaLabel}
|
|
29
|
+
/>
|
|
23
30
|
{errors[name] && !hideErrorMessage && <ErrorMessage message={errors[name].message} />}
|
|
24
31
|
</>
|
|
25
32
|
);
|