@patternfly/react-core 5.2.0-prerelease.11 → 5.2.0-prerelease.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/CHANGELOG.md +13 -0
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/AboutModal/package.json +1 -1
- package/dist/dynamic/components/Accordion/package.json +1 -1
- package/dist/dynamic/components/ActionList/package.json +1 -1
- package/dist/dynamic/components/Alert/package.json +1 -1
- package/dist/dynamic/components/Avatar/package.json +1 -1
- package/dist/dynamic/components/BackToTop/package.json +1 -1
- package/dist/dynamic/components/Backdrop/package.json +1 -1
- package/dist/dynamic/components/BackgroundImage/package.json +1 -1
- package/dist/dynamic/components/Badge/package.json +1 -1
- package/dist/dynamic/components/Banner/package.json +1 -1
- package/dist/dynamic/components/Brand/package.json +1 -1
- package/dist/dynamic/components/Breadcrumb/package.json +1 -1
- package/dist/dynamic/components/Button/package.json +1 -1
- package/dist/dynamic/components/CalendarMonth/package.json +1 -1
- package/dist/dynamic/components/Card/package.json +1 -1
- package/dist/dynamic/components/Checkbox/package.json +1 -1
- package/dist/dynamic/components/Chip/package.json +1 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/DataList/package.json +1 -1
- package/dist/dynamic/components/DatePicker/package.json +1 -1
- package/dist/dynamic/components/DescriptionList/package.json +1 -1
- package/dist/dynamic/components/Divider/package.json +1 -1
- package/dist/dynamic/components/DragDrop/package.json +1 -1
- package/dist/dynamic/components/Drawer/package.json +1 -1
- package/dist/dynamic/components/Dropdown/package.json +1 -1
- package/dist/dynamic/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/components/EmptyState/package.json +1 -1
- package/dist/dynamic/components/ExpandableSection/package.json +1 -1
- package/dist/dynamic/components/FileUpload/package.json +1 -1
- package/dist/dynamic/components/Form/package.json +1 -1
- package/dist/dynamic/components/FormSelect/package.json +1 -1
- package/dist/dynamic/components/HelperText/package.json +1 -1
- package/dist/dynamic/components/Hint/package.json +1 -1
- package/dist/dynamic/components/Icon/package.json +1 -1
- package/dist/dynamic/components/InputGroup/package.json +1 -1
- package/dist/dynamic/components/JumpLinks/package.json +1 -1
- package/dist/dynamic/components/Label/package.json +1 -1
- package/dist/dynamic/components/List/package.json +1 -1
- package/dist/dynamic/components/LoginPage/package.json +1 -1
- package/dist/dynamic/components/Masthead/package.json +1 -1
- package/dist/dynamic/components/Menu/package.json +1 -1
- package/dist/dynamic/components/MenuToggle/package.json +1 -1
- package/dist/dynamic/components/Modal/package.json +1 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
- package/dist/dynamic/components/Nav/package.json +1 -1
- package/dist/dynamic/components/NotificationBadge/package.json +1 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
- package/dist/dynamic/components/NumberInput/package.json +1 -1
- package/dist/dynamic/components/OverflowMenu/package.json +1 -1
- package/dist/dynamic/components/Page/package.json +1 -1
- package/dist/dynamic/components/Pagination/package.json +1 -1
- package/dist/dynamic/components/Panel/package.json +1 -1
- package/dist/dynamic/components/Popover/package.json +1 -1
- package/dist/dynamic/components/Progress/package.json +1 -1
- package/dist/dynamic/components/ProgressStepper/package.json +1 -1
- package/dist/dynamic/components/Radio/package.json +1 -1
- package/dist/dynamic/components/SearchInput/package.json +1 -1
- package/dist/dynamic/components/Select/package.json +1 -1
- package/dist/dynamic/components/Sidebar/package.json +1 -1
- package/dist/dynamic/components/SimpleList/package.json +1 -1
- package/dist/dynamic/components/Skeleton/package.json +1 -1
- package/dist/dynamic/components/SkipToContent/package.json +1 -1
- package/dist/dynamic/components/Slider/package.json +1 -1
- package/dist/dynamic/components/Spinner/package.json +1 -1
- package/dist/dynamic/components/Switch/package.json +1 -1
- package/dist/dynamic/components/Tabs/package.json +1 -1
- package/dist/dynamic/components/Text/package.json +1 -1
- package/dist/dynamic/components/TextArea/package.json +1 -1
- package/dist/dynamic/components/TextInput/package.json +1 -1
- package/dist/dynamic/components/TextInputGroup/package.json +1 -1
- package/dist/dynamic/components/Tile/package.json +1 -1
- package/dist/dynamic/components/TimePicker/package.json +1 -1
- package/dist/dynamic/components/Timestamp/package.json +1 -1
- package/dist/dynamic/components/Title/package.json +1 -1
- package/dist/dynamic/components/ToggleGroup/package.json +1 -1
- package/dist/dynamic/components/Toolbar/package.json +1 -1
- package/dist/dynamic/components/Tooltip/package.json +1 -1
- package/dist/dynamic/components/TreeView/package.json +1 -1
- package/dist/dynamic/components/Truncate/package.json +1 -1
- package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
- package/dist/dynamic/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
- package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
- package/dist/dynamic/deprecated/components/Select/package.json +1 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
- package/dist/dynamic/helpers/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/favorites/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
- package/dist/dynamic/helpers/util/package.json +1 -1
- package/dist/dynamic/layouts/Bullseye/package.json +1 -1
- package/dist/dynamic/layouts/Flex/package.json +1 -1
- package/dist/dynamic/layouts/Gallery/package.json +1 -1
- package/dist/dynamic/layouts/Grid/package.json +1 -1
- package/dist/dynamic/layouts/Level/package.json +1 -1
- package/dist/dynamic/layouts/Split/package.json +1 -1
- package/dist/dynamic/layouts/Stack/package.json +1 -1
- package/dist/dynamic/next/components/package.json +1 -1
- package/dist/esm/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
- package/dist/esm/components/CalendarMonth/CalendarMonth.js +15 -39
- package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
- package/dist/esm/components/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/esm/components/InputGroup/InputGroup.js +1 -51
- package/dist/esm/components/InputGroup/InputGroup.js.map +1 -1
- package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/esm/helpers/Popper/Popper.js +3 -2
- package/dist/esm/helpers/Popper/Popper.js.map +1 -1
- package/dist/esm/helpers/datetimeUtils.d.ts +1 -1
- package/dist/esm/helpers/datetimeUtils.d.ts.map +1 -1
- package/dist/esm/helpers/datetimeUtils.js.map +1 -1
- package/dist/js/components/CalendarMonth/CalendarMonth.d.ts.map +1 -1
- package/dist/js/components/CalendarMonth/CalendarMonth.js +15 -39
- package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
- package/dist/js/components/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/js/components/InputGroup/InputGroup.js +1 -51
- package/dist/js/components/InputGroup/InputGroup.js.map +1 -1
- package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/js/helpers/Popper/Popper.js +3 -2
- package/dist/js/helpers/Popper/Popper.js.map +1 -1
- package/dist/js/helpers/datetimeUtils.d.ts +1 -1
- package/dist/js/helpers/datetimeUtils.d.ts.map +1 -1
- package/dist/js/helpers/datetimeUtils.js.map +1 -1
- package/dist/umd/react-core.min.js +1 -1
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +2 -2
- package/src/components/CalendarMonth/CalendarMonth.tsx +18 -43
- package/src/components/InputGroup/InputGroup.tsx +1 -53
- package/src/components/InputGroup/__tests__/InputGroup.test.tsx +7 -44
- package/src/components/NumberInput/__tests__/NumberInput.test.tsx +0 -1
- package/src/demos/Nav.md +10 -1673
- package/src/demos/examples/Nav/NavDefault.tsx +98 -0
- package/src/demos/examples/Nav/NavDrilldown.tsx +2 -0
- package/src/demos/examples/Nav/NavExpandable.tsx +124 -0
- package/src/demos/examples/Nav/NavFlyout.tsx +278 -0
- package/src/demos/examples/Nav/NavGrouped.tsx +99 -0
- package/src/demos/examples/Nav/NavHorizontal.tsx +237 -0
- package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +297 -0
- package/src/demos/examples/Nav/NavManual.tsx +273 -0
- package/src/demos/examples/Nav/NavWithSubnav.tsx +142 -0
- package/src/demos/examples/Nav/deprecated/NavLight.tsx +96 -0
- package/src/demos/examples/Nav/deprecated/NavTertiary.tsx +92 -0
- package/src/helpers/Popper/Popper.tsx +3 -1
- package/src/helpers/datetimeUtils.ts +1 -1
package/helpers/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.2.0-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.2.0-prerelease.12","private":true}
|
package/layouts/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.2.0-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.2.0-prerelease.12","private":true}
|
package/next/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.2.0-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.2.0-prerelease.12","private":true}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "5.2.0-prerelease.
|
|
3
|
+
"version": "5.2.0-prerelease.13",
|
|
4
4
|
"description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
|
|
5
5
|
"main": "dist/js/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"react": "^17 || ^18",
|
|
72
72
|
"react-dom": "^17 || ^18"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "c1f452f956668d771994e5584dc24d251d913aa7"
|
|
75
75
|
}
|
|
@@ -154,12 +154,13 @@ export const CalendarMonth = ({
|
|
|
154
154
|
const [isSelectOpen, setIsSelectOpen] = React.useState(false);
|
|
155
155
|
|
|
156
156
|
const getInitialDate = () => {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
return initDate;
|
|
160
|
-
} else {
|
|
161
|
-
return isValidDate(rangeStart) ? rangeStart : today;
|
|
157
|
+
if (isValidDate(dateProp)) {
|
|
158
|
+
return dateProp;
|
|
162
159
|
}
|
|
160
|
+
if (isValidDate(rangeStart)) {
|
|
161
|
+
return rangeStart;
|
|
162
|
+
}
|
|
163
|
+
return today;
|
|
163
164
|
};
|
|
164
165
|
const initialDate = getInitialDate();
|
|
165
166
|
const [focusedDate, setFocusedDate] = React.useState(initialDate);
|
|
@@ -211,43 +212,25 @@ export const CalendarMonth = ({
|
|
|
211
212
|
}
|
|
212
213
|
};
|
|
213
214
|
|
|
214
|
-
const
|
|
215
|
-
const newDate = new Date(focusedDate);
|
|
216
|
-
const desiredDay = newDate.getDate();
|
|
217
|
-
const monthDays = new Date(newDate.getFullYear(), (month + 1) % 12, 0).getDate(); // Setting day 0 of the next month returns the last day of current month
|
|
218
|
-
|
|
219
|
-
if (monthDays < desiredDay) {
|
|
220
|
-
newDate.setDate(monthDays);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
newDate.setMonth(month);
|
|
224
|
-
|
|
225
|
-
if (initialDate.getDate() > desiredDay && monthDays > desiredDay) {
|
|
226
|
-
newDate.setDate(initialDate.getDate());
|
|
227
|
-
}
|
|
215
|
+
const changeYear = (newYear: number) => changeMonth(focusedDate.getMonth(), newYear);
|
|
228
216
|
|
|
229
|
-
|
|
230
|
-
|
|
217
|
+
const changeMonth = (newMonth: number, newYear?: number) =>
|
|
218
|
+
new Date(newYear ?? focusedDate.getFullYear(), newMonth, 1);
|
|
231
219
|
|
|
232
220
|
const addMonth = (toAdd: -1 | 1) => {
|
|
233
|
-
let newMonth =
|
|
221
|
+
let newMonth = focusedDate.getMonth() + toAdd;
|
|
222
|
+
let newYear = focusedDate.getFullYear();
|
|
223
|
+
|
|
234
224
|
if (newMonth === -1) {
|
|
235
225
|
newMonth = 11;
|
|
226
|
+
newYear--;
|
|
236
227
|
} else if (newMonth === 12) {
|
|
237
228
|
newMonth = 0;
|
|
229
|
+
newYear++;
|
|
238
230
|
}
|
|
239
|
-
const newDate = changeMonth(newMonth);
|
|
240
|
-
if (toAdd === 1 && newMonth === 0) {
|
|
241
|
-
newDate.setFullYear(newDate.getFullYear() + 1);
|
|
242
|
-
}
|
|
243
|
-
if (toAdd === -1 && newMonth === 11) {
|
|
244
|
-
newDate.setFullYear(newDate.getFullYear() - 1);
|
|
245
|
-
}
|
|
246
|
-
return newDate;
|
|
247
|
-
};
|
|
248
231
|
|
|
249
|
-
|
|
250
|
-
|
|
232
|
+
return changeMonth(newMonth, newYear);
|
|
233
|
+
};
|
|
251
234
|
|
|
252
235
|
const prevMonth = addMonth(-1);
|
|
253
236
|
const nextMonth = addMonth(1);
|
|
@@ -340,19 +323,11 @@ export const CalendarMonth = ({
|
|
|
340
323
|
type="number"
|
|
341
324
|
value={yearFormatted}
|
|
342
325
|
onChange={(ev: React.FormEvent<HTMLInputElement>, year: string) => {
|
|
343
|
-
const newDate =
|
|
344
|
-
if (dateIsFebruary29th(newDate) && !yearHasFebruary29th(+year)) {
|
|
345
|
-
newDate.setDate(28);
|
|
346
|
-
newDate.setMonth(1);
|
|
347
|
-
}
|
|
348
|
-
if (dateIsFebruary29th(initialDate) && yearHasFebruary29th(+year)) {
|
|
349
|
-
newDate.setFullYear(+year);
|
|
350
|
-
newDate.setDate(29);
|
|
351
|
-
}
|
|
352
|
-
newDate.setFullYear(+year);
|
|
326
|
+
const newDate = changeYear(Number(year));
|
|
353
327
|
setFocusedDate(newDate);
|
|
354
328
|
setHoveredDate(newDate);
|
|
355
329
|
setShouldFocus(false);
|
|
330
|
+
focusRef.current?.blur(); // will unfocus a date when changing year via up/down arrows
|
|
356
331
|
onMonthChange(ev, newDate);
|
|
357
332
|
}}
|
|
358
333
|
/>
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import styles from '@patternfly/react-styles/css/components/InputGroup/input-group';
|
|
3
3
|
import { css } from '@patternfly/react-styles';
|
|
4
|
-
import { FormSelect } from '../FormSelect';
|
|
5
|
-
import { TextArea } from '../TextArea';
|
|
6
|
-
import { TextInput } from '../TextInput';
|
|
7
4
|
|
|
8
5
|
export interface InputGroupProps extends React.HTMLProps<HTMLDivElement> {
|
|
9
6
|
/** Additional classes added to the input group. */
|
|
@@ -20,61 +17,12 @@ export const InputGroupBase: React.FunctionComponent<InputGroupProps> = ({
|
|
|
20
17
|
innerRef,
|
|
21
18
|
...props
|
|
22
19
|
}: InputGroupProps) => {
|
|
23
|
-
const getIdItem = () => {
|
|
24
|
-
const getChildId = (_children: any) =>
|
|
25
|
-
React.Children.toArray(_children).find(
|
|
26
|
-
(_child: any) => !formCtrls.includes(_child?.type?.displayName) && _child?.props?.id
|
|
27
|
-
);
|
|
28
|
-
let childId = getChildId(children);
|
|
29
|
-
if (childId) {
|
|
30
|
-
return childId;
|
|
31
|
-
}
|
|
32
|
-
React.Children.toArray(children).find((child: any) => {
|
|
33
|
-
const _childId = getChildId(child.props.children);
|
|
34
|
-
if (_childId) {
|
|
35
|
-
childId = _childId;
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
return childId;
|
|
40
|
-
};
|
|
41
|
-
const formCtrls = [FormSelect, TextArea, TextInput].map((comp) => comp.displayName);
|
|
42
|
-
const idItem = getIdItem() as React.ReactElement<{ id: string }>;
|
|
43
20
|
const ref = React.useRef(null);
|
|
44
21
|
const inputGroupRef = innerRef || ref;
|
|
45
22
|
|
|
46
|
-
const childrenWithId = React.Children.map(children, (child: any) => {
|
|
47
|
-
if (child?.type.displayName === 'InputGroupItem') {
|
|
48
|
-
const newChildren = React.Children.map(child.props.children, (_child) => {
|
|
49
|
-
if (!_child.props) {
|
|
50
|
-
return _child;
|
|
51
|
-
}
|
|
52
|
-
if (_child.props['aria-describedby']) {
|
|
53
|
-
return _child;
|
|
54
|
-
}
|
|
55
|
-
if (!formCtrls.includes(_child.type.displayName)) {
|
|
56
|
-
return _child;
|
|
57
|
-
}
|
|
58
|
-
return React.cloneElement(_child, {
|
|
59
|
-
'aria-describedby': _child.props['aria-describedby'] === '' ? undefined : idItem?.props?.id
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
return React.cloneElement(child, {}, newChildren);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (child?.props['aria-describedby']) {
|
|
66
|
-
return child;
|
|
67
|
-
}
|
|
68
|
-
if (!formCtrls.includes(child?.type.displayName)) {
|
|
69
|
-
return child;
|
|
70
|
-
}
|
|
71
|
-
return React.cloneElement(child, {
|
|
72
|
-
'aria-describedby': child.props['aria-describedby'] === '' ? undefined : idItem?.props?.id
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
23
|
return (
|
|
76
24
|
<div ref={inputGroupRef} className={css(styles.inputGroup, className)} {...props}>
|
|
77
|
-
{
|
|
25
|
+
{children}
|
|
78
26
|
</div>
|
|
79
27
|
);
|
|
80
28
|
};
|
|
@@ -8,59 +8,22 @@ import { Button } from '../../Button';
|
|
|
8
8
|
import { TextInput } from '../../TextInput';
|
|
9
9
|
|
|
10
10
|
describe('InputGroup', () => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// If Button has an id props, this should be used in aria-describedby.
|
|
11
|
+
// Regression test for https://github.com/patternfly/patternfly-react/issues/9667
|
|
12
|
+
test('wont add aria-describedby automatically to form-control', () => {
|
|
14
13
|
render(
|
|
15
14
|
<InputGroup>
|
|
16
15
|
<InputGroupItem>
|
|
17
|
-
<TextInput
|
|
16
|
+
<TextInput aria-label="User password" />
|
|
18
17
|
</InputGroupItem>
|
|
19
18
|
<InputGroupItem>
|
|
20
|
-
<Button variant="
|
|
21
|
-
|
|
19
|
+
<Button variant="control" id="show-password-toggler">
|
|
20
|
+
Show
|
|
22
21
|
</Button>
|
|
23
22
|
</InputGroupItem>
|
|
24
23
|
</InputGroup>
|
|
25
24
|
);
|
|
26
|
-
expect(screen.getByLabelText('some text')).toHaveAttribute('aria-describedby', 'button-id');
|
|
27
|
-
});
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// If Button has an id props, this should be used in aria-describedby, but this
|
|
32
|
-
// example has an empty aria-describedby to prevent that from happening.
|
|
33
|
-
render(
|
|
34
|
-
<InputGroup>
|
|
35
|
-
<InputGroupItem>
|
|
36
|
-
<TextInput value="some data" aria-describedby="" aria-label="some text" />
|
|
37
|
-
</InputGroupItem>
|
|
38
|
-
<InputGroupItem>
|
|
39
|
-
<Button id="button-id">
|
|
40
|
-
hello
|
|
41
|
-
</Button>
|
|
42
|
-
</InputGroupItem>
|
|
43
|
-
</InputGroup>
|
|
44
|
-
);
|
|
45
|
-
expect(screen.getByLabelText('some text')).not.toHaveAttribute('aria-describedby');
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
test('wont override aria-describedby in form-control if describedby has value', () => {
|
|
49
|
-
// In this test, TextInput is a form-control component and Button is not.
|
|
50
|
-
// If Button has an id props, this should be used in aria-describedby, but this
|
|
51
|
-
// example has a predefined aria-describedby to prevent that from happening
|
|
52
|
-
render(
|
|
53
|
-
<InputGroup>
|
|
54
|
-
<InputGroupItem>
|
|
55
|
-
<TextInput value="some data" aria-describedby="myself" aria-label="some text" />
|
|
56
|
-
</InputGroupItem>
|
|
57
|
-
<InputGroupItem>
|
|
58
|
-
<Button id="button-id">
|
|
59
|
-
hello
|
|
60
|
-
</Button>
|
|
61
|
-
</InputGroupItem>
|
|
62
|
-
</InputGroup>
|
|
63
|
-
);
|
|
64
|
-
expect(screen.getByLabelText('some text')).toHaveAttribute('aria-describedby', 'myself');
|
|
26
|
+
const formControl = screen.getByLabelText("User password");
|
|
27
|
+
expect(formControl).not.toHaveAttribute("aria-describedby");
|
|
65
28
|
});
|
|
66
29
|
});
|