@patternfly/react-core 6.5.0-prerelease.4 → 6.5.0-prerelease.5
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 +10 -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/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/Compass/package.json +1 -1
- package/dist/dynamic/components/Content/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/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/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/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/Chip/package.json +1 -1
- package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
- package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
- package/dist/dynamic/deprecated/components/Tile/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/AnimationsProvider/AnimationsProvider/package.json +1 -1
- package/dist/dynamic/helpers/AnimationsProvider/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/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/styles/package.json +1 -1
- package/dist/esm/components/DataList/DataList.d.ts +2 -0
- package/dist/esm/components/DataList/DataList.d.ts.map +1 -1
- package/dist/esm/components/DataList/DataList.js +2 -2
- package/dist/esm/components/DataList/DataList.js.map +1 -1
- package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/esm/components/Truncate/Truncate.js +5 -4
- package/dist/esm/components/Truncate/Truncate.js.map +1 -1
- package/dist/js/components/DataList/DataList.d.ts +2 -0
- package/dist/js/components/DataList/DataList.d.ts.map +1 -1
- package/dist/js/components/DataList/DataList.js +2 -2
- package/dist/js/components/DataList/DataList.js.map +1 -1
- package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/js/components/Truncate/Truncate.js +5 -4
- package/dist/js/components/Truncate/Truncate.js.map +1 -1
- package/dist/umd/assets/{output-TagVdL0S.css → output-m_8X2Duh.css} +19318 -19318
- 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/ClipboardCopy/__tests__/ClipboardCopyTruncateIntegration.test.tsx +32 -0
- package/src/components/DataList/DataList.tsx +4 -0
- package/src/components/DataList/examples/DataList.md +5 -0
- package/src/components/DataList/examples/DataListPlain.tsx +32 -0
- package/src/components/Truncate/Truncate.tsx +5 -4
- package/src/components/Truncate/__tests__/Truncate.test.tsx +21 -3
- package/src/components/Truncate/__tests__/__snapshots__/Truncate.test.tsx.snap +3 -9
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":"6.5.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":"6.5.0-prerelease.4","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":"6.5.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":"6.5.0-prerelease.4","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":"6.5.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":"6.5.0-prerelease.4","private":true}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "6.5.0-prerelease.
|
|
3
|
+
"version": "6.5.0-prerelease.5",
|
|
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",
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"react": "^17 || ^18 || ^19",
|
|
64
64
|
"react-dom": "^17 || ^18 || ^19"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "0f921f1c919501506e043b7c8b2febc71644b15a"
|
|
67
67
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
3
|
+
import { ClipboardCopy, ClipboardCopyVariant } from '../ClipboardCopy';
|
|
4
|
+
|
|
5
|
+
// This test file uses the real Truncate component for integration testing, instead of a mock
|
|
6
|
+
|
|
7
|
+
test('Tooltip appears on keyboard focus when using inline-compact variant with truncation', async () => {
|
|
8
|
+
const user = userEvent.setup();
|
|
9
|
+
const longText = 'This is a very long piece of content that should be truncated when the container is too small';
|
|
10
|
+
|
|
11
|
+
render(
|
|
12
|
+
<ClipboardCopy
|
|
13
|
+
variant={ClipboardCopyVariant.inlineCompact}
|
|
14
|
+
truncation={{ maxCharsDisplayed: 20 }}
|
|
15
|
+
data-testid="clipboard-copy"
|
|
16
|
+
>
|
|
17
|
+
{longText}
|
|
18
|
+
</ClipboardCopy>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
expect(screen.queryByText(longText)).not.toBeInTheDocument();
|
|
22
|
+
expect(screen.queryByRole('tooltip')).not.toBeInTheDocument();
|
|
23
|
+
|
|
24
|
+
await user.tab();
|
|
25
|
+
|
|
26
|
+
const clipboardCopy = screen.getByTestId('clipboard-copy');
|
|
27
|
+
expect(clipboardCopy).toHaveFocus();
|
|
28
|
+
|
|
29
|
+
const tooltip = screen.getByRole('tooltip');
|
|
30
|
+
expect(tooltip).toBeInTheDocument();
|
|
31
|
+
expect(tooltip).toHaveTextContent(longText);
|
|
32
|
+
});
|
|
@@ -31,6 +31,8 @@ export interface DataListProps extends React.HTMLProps<HTMLUListElement> {
|
|
|
31
31
|
selectedDataListItemId?: string;
|
|
32
32
|
/** Flag indicating if DataList should have compact styling */
|
|
33
33
|
isCompact?: boolean;
|
|
34
|
+
/** @beta Flag indicating if DataList should have plain styling with a transparent background */
|
|
35
|
+
isPlain?: boolean;
|
|
34
36
|
/** Specifies the grid breakpoints */
|
|
35
37
|
gridBreakpoint?: 'none' | 'always' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
36
38
|
/** Determines which wrapping modifier to apply to the DataList */
|
|
@@ -59,6 +61,7 @@ export const DataListBase: React.FunctionComponent<DataListProps> = ({
|
|
|
59
61
|
onSelectDataListItem,
|
|
60
62
|
selectedDataListItemId = '',
|
|
61
63
|
isCompact = false,
|
|
64
|
+
isPlain = false,
|
|
62
65
|
gridBreakpoint = 'md',
|
|
63
66
|
wrapModifier = null,
|
|
64
67
|
onSelectableRowChange,
|
|
@@ -84,6 +87,7 @@ export const DataListBase: React.FunctionComponent<DataListProps> = ({
|
|
|
84
87
|
className={css(
|
|
85
88
|
styles.dataList,
|
|
86
89
|
isCompact && styles.modifiers.compact,
|
|
90
|
+
isPlain && styles.modifiers.plain,
|
|
87
91
|
gridBreakpointClasses[gridBreakpoint],
|
|
88
92
|
wrapModifier && styles.modifiers[wrapModifier],
|
|
89
93
|
className
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DataList, DataListItem, DataListItemRow, DataListItemCells, DataListCell } from '@patternfly/react-core';
|
|
2
|
+
|
|
3
|
+
export const DataListPlain: React.FunctionComponent = () => (
|
|
4
|
+
<DataList aria-label="Plain data list example" isPlain>
|
|
5
|
+
<DataListItem aria-labelledby="plain-item1">
|
|
6
|
+
<DataListItemRow>
|
|
7
|
+
<DataListItemCells
|
|
8
|
+
dataListCells={[
|
|
9
|
+
<DataListCell key="primary content">
|
|
10
|
+
<span id="plain-item1">Primary content</span>
|
|
11
|
+
</DataListCell>,
|
|
12
|
+
<DataListCell key="secondary content">Secondary content</DataListCell>
|
|
13
|
+
]}
|
|
14
|
+
/>
|
|
15
|
+
</DataListItemRow>
|
|
16
|
+
</DataListItem>
|
|
17
|
+
<DataListItem aria-labelledby="plain-item2">
|
|
18
|
+
<DataListItemRow>
|
|
19
|
+
<DataListItemCells
|
|
20
|
+
dataListCells={[
|
|
21
|
+
<DataListCell isFilled={false} key="secondary content fill">
|
|
22
|
+
<span id="plain-item2">Secondary content (pf-m-no-fill)</span>
|
|
23
|
+
</DataListCell>,
|
|
24
|
+
<DataListCell isFilled={false} alignRight key="secondary content align">
|
|
25
|
+
Secondary content (pf-m-align-right pf-m-no-fill)
|
|
26
|
+
</DataListCell>
|
|
27
|
+
]}
|
|
28
|
+
/>
|
|
29
|
+
</DataListItemRow>
|
|
30
|
+
</DataListItem>
|
|
31
|
+
</DataList>
|
|
32
|
+
);
|
|
@@ -4,6 +4,7 @@ import { css } from '@patternfly/react-styles';
|
|
|
4
4
|
import { Tooltip, TooltipPosition, TooltipProps } from '../Tooltip';
|
|
5
5
|
import { getReferenceElement } from '../../helpers';
|
|
6
6
|
import { getResizeObserver } from '../../helpers/resizeObserver';
|
|
7
|
+
import { debounce } from '../../helpers/util';
|
|
7
8
|
|
|
8
9
|
export enum TruncatePosition {
|
|
9
10
|
start = 'start',
|
|
@@ -130,12 +131,12 @@ const TruncateBase: React.FunctionComponent<TruncateProps> = ({
|
|
|
130
131
|
const totalTextWidth = calculateTotalTextWidth(textElement, trailingNumChars, content);
|
|
131
132
|
const textWidth = position === 'middle' ? totalTextWidth : textElement.scrollWidth;
|
|
132
133
|
|
|
133
|
-
const
|
|
134
|
+
const debouncedHandleResize = debounce(() => {
|
|
134
135
|
const parentWidth = getActualWidth(parentElement);
|
|
135
136
|
setIsTruncated(textWidth >= parentWidth);
|
|
136
|
-
};
|
|
137
|
+
}, 500);
|
|
137
138
|
|
|
138
|
-
const observer = getResizeObserver(parentElement,
|
|
139
|
+
const observer = getResizeObserver(parentElement, debouncedHandleResize);
|
|
139
140
|
|
|
140
141
|
return () => {
|
|
141
142
|
observer();
|
|
@@ -147,7 +148,7 @@ const TruncateBase: React.FunctionComponent<TruncateProps> = ({
|
|
|
147
148
|
if (shouldRenderByMaxChars) {
|
|
148
149
|
setIsTruncated(content.length > maxCharsDisplayed);
|
|
149
150
|
}
|
|
150
|
-
}, [shouldRenderByMaxChars]);
|
|
151
|
+
}, [shouldRenderByMaxChars, content.length, maxCharsDisplayed]);
|
|
151
152
|
|
|
152
153
|
useEffect(() => {
|
|
153
154
|
setShouldRenderByMaxChars(maxCharsDisplayed > 0);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { render, screen,
|
|
2
|
-
import { Truncate
|
|
1
|
+
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
|
|
2
|
+
import { Truncate } from '../Truncate';
|
|
3
3
|
import styles from '@patternfly/react-styles/css/components/Truncate/truncate';
|
|
4
4
|
import '@testing-library/jest-dom';
|
|
5
5
|
|
|
6
6
|
jest.mock('../../Tooltip', () => ({
|
|
7
7
|
Tooltip: ({ content, position, children, triggerRef, ...props }) => (
|
|
8
8
|
<div data-testid="Tooltip-mock" {...props}>
|
|
9
|
-
<div
|
|
9
|
+
<div>Test {content}</div>
|
|
10
10
|
<p>{`position: ${position}`}</p>
|
|
11
11
|
{children}
|
|
12
12
|
</div>
|
|
@@ -242,3 +242,21 @@ describe('Truncation with maxCharsDisplayed', () => {
|
|
|
242
242
|
expect(asFragment()).toMatchSnapshot();
|
|
243
243
|
});
|
|
244
244
|
});
|
|
245
|
+
|
|
246
|
+
test('Tooltip appears on keyboard focus when external triggerRef is provided (ClipboardCopy regression test)', () => {
|
|
247
|
+
const mockTriggerRef = { current: document.createElement('div') };
|
|
248
|
+
|
|
249
|
+
render(
|
|
250
|
+
<Truncate
|
|
251
|
+
content="This is a very long piece of content that should be truncated when the container is too small"
|
|
252
|
+
tooltipProps={{ triggerRef: mockTriggerRef }}
|
|
253
|
+
/>
|
|
254
|
+
);
|
|
255
|
+
|
|
256
|
+
// Simulate keyboard focus on the external trigger element
|
|
257
|
+
fireEvent.focus(mockTriggerRef.current);
|
|
258
|
+
|
|
259
|
+
// The tooltip should be present and visible
|
|
260
|
+
const tooltip = screen.getByTestId('Tooltip-mock');
|
|
261
|
+
expect(tooltip).toBeInTheDocument();
|
|
262
|
+
});
|
|
@@ -5,9 +5,7 @@ exports[`Truncation with maxCharsDisplayed Matches snapshot with default positio
|
|
|
5
5
|
<div
|
|
6
6
|
data-testid="Tooltip-mock"
|
|
7
7
|
>
|
|
8
|
-
<div
|
|
9
|
-
data-testid="Tooltip-mock-content-container"
|
|
10
|
-
>
|
|
8
|
+
<div>
|
|
11
9
|
Test Test truncation content
|
|
12
10
|
</div>
|
|
13
11
|
<p>
|
|
@@ -43,9 +41,7 @@ exports[`renders default truncation 1`] = `
|
|
|
43
41
|
<div
|
|
44
42
|
data-testid="Tooltip-mock"
|
|
45
43
|
>
|
|
46
|
-
<div
|
|
47
|
-
data-testid="Tooltip-mock-content-container"
|
|
48
|
-
>
|
|
44
|
+
<div>
|
|
49
45
|
Test Vestibulum interdum risus et enim faucibus, sit amet molestie est accumsan.
|
|
50
46
|
</div>
|
|
51
47
|
<p>
|
|
@@ -70,9 +66,7 @@ exports[`renders start truncation with ‎ at start and end 1`] = `
|
|
|
70
66
|
<div
|
|
71
67
|
data-testid="Tooltip-mock"
|
|
72
68
|
>
|
|
73
|
-
<div
|
|
74
|
-
data-testid="Tooltip-mock-content-container"
|
|
75
|
-
>
|
|
69
|
+
<div>
|
|
76
70
|
Test Vestibulum interdum risus et enim faucibus, sit amet molestie est accumsan.
|
|
77
71
|
</div>
|
|
78
72
|
<p>
|