@patternfly/react-core 6.5.0-prerelease.4 → 6.5.0-prerelease.6

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.
Files changed (152) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Compass/package.json +1 -1
  23. package/dist/dynamic/components/Content/package.json +1 -1
  24. package/dist/dynamic/components/DataList/package.json +1 -1
  25. package/dist/dynamic/components/DatePicker/package.json +1 -1
  26. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  27. package/dist/dynamic/components/Divider/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hint/package.json +1 -1
  38. package/dist/dynamic/components/Icon/package.json +1 -1
  39. package/dist/dynamic/components/InputGroup/package.json +1 -1
  40. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  41. package/dist/dynamic/components/Label/package.json +1 -1
  42. package/dist/dynamic/components/List/package.json +1 -1
  43. package/dist/dynamic/components/LoginPage/package.json +1 -1
  44. package/dist/dynamic/components/Masthead/package.json +1 -1
  45. package/dist/dynamic/components/Menu/package.json +1 -1
  46. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  47. package/dist/dynamic/components/Modal/package.json +1 -1
  48. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  49. package/dist/dynamic/components/Nav/package.json +1 -1
  50. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  51. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  52. package/dist/dynamic/components/NumberInput/package.json +1 -1
  53. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  54. package/dist/dynamic/components/Page/package.json +1 -1
  55. package/dist/dynamic/components/Pagination/package.json +1 -1
  56. package/dist/dynamic/components/Panel/package.json +1 -1
  57. package/dist/dynamic/components/Popover/package.json +1 -1
  58. package/dist/dynamic/components/Progress/package.json +1 -1
  59. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  60. package/dist/dynamic/components/Radio/package.json +1 -1
  61. package/dist/dynamic/components/SearchInput/package.json +1 -1
  62. package/dist/dynamic/components/Select/package.json +1 -1
  63. package/dist/dynamic/components/Sidebar/package.json +1 -1
  64. package/dist/dynamic/components/SimpleList/package.json +1 -1
  65. package/dist/dynamic/components/Skeleton/package.json +1 -1
  66. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  67. package/dist/dynamic/components/Slider/package.json +1 -1
  68. package/dist/dynamic/components/Spinner/package.json +1 -1
  69. package/dist/dynamic/components/Switch/package.json +1 -1
  70. package/dist/dynamic/components/Tabs/package.json +1 -1
  71. package/dist/dynamic/components/TextArea/package.json +1 -1
  72. package/dist/dynamic/components/TextInput/package.json +1 -1
  73. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  74. package/dist/dynamic/components/TimePicker/package.json +1 -1
  75. package/dist/dynamic/components/Timestamp/package.json +1 -1
  76. package/dist/dynamic/components/Title/package.json +1 -1
  77. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  78. package/dist/dynamic/components/Toolbar/package.json +1 -1
  79. package/dist/dynamic/components/Tooltip/package.json +1 -1
  80. package/dist/dynamic/components/TreeView/package.json +1 -1
  81. package/dist/dynamic/components/Truncate/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/package.json +1 -1
  91. package/dist/dynamic/helpers/AnimationsProvider/AnimationsProvider/package.json +1 -1
  92. package/dist/dynamic/helpers/AnimationsProvider/package.json +1 -1
  93. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  94. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  95. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  96. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  97. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  98. package/dist/dynamic/helpers/constants/package.json +1 -1
  99. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  100. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  102. package/dist/dynamic/helpers/package.json +1 -1
  103. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  104. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  105. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  106. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  107. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  108. package/dist/dynamic/helpers/util/package.json +1 -1
  109. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  110. package/dist/dynamic/layouts/Flex/package.json +1 -1
  111. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  112. package/dist/dynamic/layouts/Grid/package.json +1 -1
  113. package/dist/dynamic/layouts/Level/package.json +1 -1
  114. package/dist/dynamic/layouts/Split/package.json +1 -1
  115. package/dist/dynamic/layouts/Stack/package.json +1 -1
  116. package/dist/dynamic/styles/package.json +1 -1
  117. package/dist/esm/components/DataList/DataList.d.ts +2 -0
  118. package/dist/esm/components/DataList/DataList.d.ts.map +1 -1
  119. package/dist/esm/components/DataList/DataList.js +2 -2
  120. package/dist/esm/components/DataList/DataList.js.map +1 -1
  121. package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
  122. package/dist/esm/components/Tabs/Tabs.js +2 -2
  123. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  124. package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
  125. package/dist/esm/components/Truncate/Truncate.js +5 -4
  126. package/dist/esm/components/Truncate/Truncate.js.map +1 -1
  127. package/dist/js/components/DataList/DataList.d.ts +2 -0
  128. package/dist/js/components/DataList/DataList.d.ts.map +1 -1
  129. package/dist/js/components/DataList/DataList.js +2 -2
  130. package/dist/js/components/DataList/DataList.js.map +1 -1
  131. package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
  132. package/dist/js/components/Tabs/Tabs.js +2 -2
  133. package/dist/js/components/Tabs/Tabs.js.map +1 -1
  134. package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
  135. package/dist/js/components/Truncate/Truncate.js +5 -4
  136. package/dist/js/components/Truncate/Truncate.js.map +1 -1
  137. package/dist/umd/assets/{output-TagVdL0S.css → output-DHHQhDXH.css} +14259 -14259
  138. package/dist/umd/react-core.min.js +1 -1
  139. package/helpers/package.json +1 -1
  140. package/layouts/package.json +1 -1
  141. package/next/package.json +1 -1
  142. package/package.json +2 -2
  143. package/src/components/ClipboardCopy/__tests__/ClipboardCopyTruncateIntegration.test.tsx +32 -0
  144. package/src/components/DataList/DataList.tsx +4 -0
  145. package/src/components/DataList/examples/DataList.md +5 -0
  146. package/src/components/DataList/examples/DataListPlain.tsx +32 -0
  147. package/src/components/Tabs/Tabs.tsx +2 -2
  148. package/src/components/Tabs/examples/Tabs.md +8 -0
  149. package/src/components/Tabs/examples/TabsSiteNav.tsx +40 -0
  150. package/src/components/Truncate/Truncate.tsx +5 -4
  151. package/src/components/Truncate/__tests__/Truncate.test.tsx +21 -3
  152. package/src/components/Truncate/__tests__/__snapshots__/Truncate.test.tsx.snap +3 -9
@@ -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.3","private":true}
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.5","private":true}
@@ -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.3","private":true}
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.5","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.3","private":true}
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.5","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "6.5.0-prerelease.4",
3
+ "version": "6.5.0-prerelease.6",
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": "912729437db337b5e576adbe8d06bdf2bc04b189"
66
+ "gitHead": "070b384f310888ebad56fff18677a08c49d35883"
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
@@ -38,6 +38,11 @@ import { DragDropSort, DragDropContainer, Droppable as NewDroppable } from '@pat
38
38
 
39
39
  ```ts file="./DataListCompact.tsx"
40
40
 
41
+ ```
42
+ ### Plain
43
+
44
+ ```ts file="./DataListPlain.tsx"
45
+
41
46
  ```
42
47
 
43
48
  ### Checkboxes, actions and additional cells
@@ -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
+ );
@@ -206,7 +206,6 @@ class Tabs extends Component<TabsProps, TabsState> {
206
206
  backScrollAriaLabel: 'Scroll back',
207
207
  rightScrollAriaLabel: 'Scroll right',
208
208
  forwardScrollAriaLabel: 'Scroll forward',
209
- component: TabsComponent.div,
210
209
  mountOnEnter: false,
211
210
  unmountOnExit: false,
212
211
  ouiaSafe: true,
@@ -529,7 +528,8 @@ class Tabs extends Component<TabsProps, TabsState> {
529
528
  const overflowingTabProps = filteredChildrenOverflowing.map((child: React.ReactElement<TabProps>) => child.props);
530
529
 
531
530
  const uniqueId = id || getUniqueId();
532
- const Component: any = component === TabsComponent.nav ? 'nav' : 'div';
531
+ const defaultComponent = isNav && !component ? 'nav' : 'div';
532
+ const Component: any = component !== undefined ? component : defaultComponent;
533
533
  const localActiveKey = defaultActiveKey !== undefined ? uncontrolledActiveKey : activeKey;
534
534
 
535
535
  const isExpandedLocal = defaultIsExpanded !== undefined ? uncontrolledIsExpandedLocal : isExpanded;
@@ -189,6 +189,14 @@ Subtabs can also link to nav elements.
189
189
 
190
190
  ```
191
191
 
192
+ ### Tabs used for site navigation
193
+
194
+ Site navigation tabs
195
+
196
+ ```ts file="./TabsSiteNav.tsx"
197
+
198
+ ```
199
+
192
200
  ### With separate content
193
201
 
194
202
  If a `<TabContent>` component is defined outside of a `<Tabs>` component, use the `tabContentRef` and `tabContentId` properties. The `hidden` property is used on `TabContent` to set the initial visible content.
@@ -0,0 +1,40 @@
1
+ import { useState } from 'react';
2
+ import { Tabs, Tab, TabTitleText } from '@patternfly/react-core';
3
+
4
+ export const TabsSiteNav: React.FunctionComponent = () => {
5
+ const [activeTabKey, setActiveTabKey] = useState<string | number>(0);
6
+ // Toggle currently active tab
7
+ const handleTabClick = (
8
+ event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,
9
+ tabIndex: string | number
10
+ ) => {
11
+ setActiveTabKey(tabIndex);
12
+ };
13
+ return (
14
+ <Tabs
15
+ activeKey={activeTabKey}
16
+ onSelect={handleTabClick}
17
+ isNav={true}
18
+ aria-label="Site navigation with nav styling example"
19
+ >
20
+ <Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} href="#users" aria-label="Nav element content users">
21
+ Users
22
+ </Tab>
23
+ <Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>} href="#containers">
24
+ Containers
25
+ </Tab>
26
+ <Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>} href="#database">
27
+ Database
28
+ </Tab>
29
+ <Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled href="#disabled">
30
+ Disabled
31
+ </Tab>
32
+ <Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled href="#aria-disabled">
33
+ ARIA Disabled
34
+ </Tab>
35
+ <Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>} href="#network">
36
+ Network
37
+ </Tab>
38
+ </Tabs>
39
+ );
40
+ };
@@ -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 handleResize = () => {
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, handleResize);
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, within } from '@testing-library/react';
2
- import { Truncate, TruncatePosition } from '../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 data-testid="Tooltip-mock-content-container">Test {content}</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 &lrm; 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>