@conduction/components 2.2.11 → 2.2.12
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
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- **Version 2.2 (breaking changes from 2.1.x)**
|
|
6
6
|
|
|
7
|
+
- 2.2.12: Updated Select components to WCAG with aria-label and role.
|
|
7
8
|
- 2.2.11: Updated Primary and Secondary topnav to NLDS.
|
|
8
9
|
- 2.2.10: Added z-index to tooltip.
|
|
9
10
|
- 2.2.9: Added CardWrapper, CardHeader, CardHeaderTitle, CardHeaderDate to index.
|
|
@@ -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-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
|
};
|
package/package.json
CHANGED
|
@@ -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-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)}
|