@patternfly/react-core 6.3.1-prerelease.14 → 6.3.1-prerelease.16

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 (262) hide show
  1. package/CHANGELOG.md +12 -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/Content/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/TimePicker/package.json +1 -1
  74. package/dist/dynamic/components/Timestamp/package.json +1 -1
  75. package/dist/dynamic/components/Title/package.json +1 -1
  76. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  77. package/dist/dynamic/components/Toolbar/package.json +1 -1
  78. package/dist/dynamic/components/Tooltip/package.json +1 -1
  79. package/dist/dynamic/components/TreeView/package.json +1 -1
  80. package/dist/dynamic/components/Truncate/package.json +1 -1
  81. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/package.json +1 -1
  83. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/package.json +1 -1
  90. package/dist/dynamic/helpers/AnimationsProvider/AnimationsProvider/package.json +1 -0
  91. package/dist/dynamic/helpers/AnimationsProvider/package.json +1 -0
  92. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  93. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  94. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  95. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  96. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  97. package/dist/dynamic/helpers/constants/package.json +1 -1
  98. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  99. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  100. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  101. package/dist/dynamic/helpers/package.json +1 -1
  102. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  103. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  104. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  105. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  106. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  107. package/dist/dynamic/helpers/util/package.json +1 -1
  108. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  109. package/dist/dynamic/layouts/Flex/package.json +1 -1
  110. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  111. package/dist/dynamic/layouts/Grid/package.json +1 -1
  112. package/dist/dynamic/layouts/Level/package.json +1 -1
  113. package/dist/dynamic/layouts/Split/package.json +1 -1
  114. package/dist/dynamic/layouts/Stack/package.json +1 -1
  115. package/dist/dynamic/styles/package.json +1 -1
  116. package/dist/dynamic-modules.json +6 -0
  117. package/dist/esm/components/Alert/AlertGroup.d.ts +2 -13
  118. package/dist/esm/components/Alert/AlertGroup.d.ts.map +1 -1
  119. package/dist/esm/components/Alert/AlertGroup.js +33 -38
  120. package/dist/esm/components/Alert/AlertGroup.js.map +1 -1
  121. package/dist/esm/components/Alert/AlertGroupInline.d.ts.map +1 -1
  122. package/dist/esm/components/Alert/AlertGroupInline.js +3 -1
  123. package/dist/esm/components/Alert/AlertGroupInline.js.map +1 -1
  124. package/dist/esm/components/Dropdown/Dropdown.d.ts +4 -19
  125. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  126. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  127. package/dist/esm/components/DualListSelector/DualListSelector.d.ts +2 -9
  128. package/dist/esm/components/DualListSelector/DualListSelector.d.ts.map +1 -1
  129. package/dist/esm/components/DualListSelector/DualListSelector.js +6 -16
  130. package/dist/esm/components/DualListSelector/DualListSelector.js.map +1 -1
  131. package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
  132. package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js +3 -1
  133. package/dist/esm/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
  134. package/dist/esm/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
  135. package/dist/esm/components/Form/FormFieldGroupExpandable.js +3 -1
  136. package/dist/esm/components/Form/FormFieldGroupExpandable.js.map +1 -1
  137. package/dist/esm/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
  138. package/dist/esm/components/Form/InternalFormFieldGroup.js +3 -1
  139. package/dist/esm/components/Form/InternalFormFieldGroup.js.map +1 -1
  140. package/dist/esm/components/Menu/MenuContainer.d.ts +4 -17
  141. package/dist/esm/components/Menu/MenuContainer.d.ts.map +1 -1
  142. package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
  143. package/dist/esm/components/SearchInput/SearchInput.d.ts.map +1 -1
  144. package/dist/esm/components/SearchInput/SearchInput.js +3 -1
  145. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  146. package/dist/esm/components/Select/Select.d.ts +4 -25
  147. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  148. package/dist/esm/components/Select/Select.js.map +1 -1
  149. package/dist/esm/components/Tabs/OverflowTab.d.ts +4 -25
  150. package/dist/esm/components/Tabs/OverflowTab.d.ts.map +1 -1
  151. package/dist/esm/components/Tabs/OverflowTab.js.map +1 -1
  152. package/dist/esm/components/TreeView/TreeView.d.ts.map +1 -1
  153. package/dist/esm/components/TreeView/TreeView.js +3 -1
  154. package/dist/esm/components/TreeView/TreeView.js.map +1 -1
  155. package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  156. package/dist/esm/components/TreeView/TreeViewListItem.js +3 -1
  157. package/dist/esm/components/TreeView/TreeViewListItem.js.map +1 -1
  158. package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.d.ts +76 -0
  159. package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.d.ts.map +1 -0
  160. package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.js +83 -0
  161. package/dist/esm/helpers/AnimationsProvider/AnimationsProvider.js.map +1 -0
  162. package/dist/esm/helpers/AnimationsProvider/index.d.ts +2 -0
  163. package/dist/esm/helpers/AnimationsProvider/index.d.ts.map +1 -0
  164. package/dist/esm/helpers/AnimationsProvider/index.js +2 -0
  165. package/dist/esm/helpers/AnimationsProvider/index.js.map +1 -0
  166. package/dist/esm/helpers/Popper/Popper.d.ts +24 -20
  167. package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
  168. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  169. package/dist/esm/helpers/index.d.ts +1 -0
  170. package/dist/esm/helpers/index.d.ts.map +1 -1
  171. package/dist/esm/helpers/index.js +1 -0
  172. package/dist/esm/helpers/index.js.map +1 -1
  173. package/dist/js/components/Alert/AlertGroup.d.ts +2 -13
  174. package/dist/js/components/Alert/AlertGroup.d.ts.map +1 -1
  175. package/dist/js/components/Alert/AlertGroup.js +33 -37
  176. package/dist/js/components/Alert/AlertGroup.js.map +1 -1
  177. package/dist/js/components/Alert/AlertGroupInline.d.ts.map +1 -1
  178. package/dist/js/components/Alert/AlertGroupInline.js +3 -1
  179. package/dist/js/components/Alert/AlertGroupInline.js.map +1 -1
  180. package/dist/js/components/Dropdown/Dropdown.d.ts +4 -19
  181. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  182. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  183. package/dist/js/components/DualListSelector/DualListSelector.d.ts +2 -9
  184. package/dist/js/components/DualListSelector/DualListSelector.d.ts.map +1 -1
  185. package/dist/js/components/DualListSelector/DualListSelector.js +7 -16
  186. package/dist/js/components/DualListSelector/DualListSelector.js.map +1 -1
  187. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.d.ts.map +1 -1
  188. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js +3 -1
  189. package/dist/js/components/DualListSelector/DualListSelectorTreeItem.js.map +1 -1
  190. package/dist/js/components/Form/FormFieldGroupExpandable.d.ts.map +1 -1
  191. package/dist/js/components/Form/FormFieldGroupExpandable.js +3 -1
  192. package/dist/js/components/Form/FormFieldGroupExpandable.js.map +1 -1
  193. package/dist/js/components/Form/InternalFormFieldGroup.d.ts.map +1 -1
  194. package/dist/js/components/Form/InternalFormFieldGroup.js +3 -1
  195. package/dist/js/components/Form/InternalFormFieldGroup.js.map +1 -1
  196. package/dist/js/components/Menu/MenuContainer.d.ts +4 -17
  197. package/dist/js/components/Menu/MenuContainer.d.ts.map +1 -1
  198. package/dist/js/components/Menu/MenuContainer.js.map +1 -1
  199. package/dist/js/components/SearchInput/SearchInput.d.ts.map +1 -1
  200. package/dist/js/components/SearchInput/SearchInput.js +3 -1
  201. package/dist/js/components/SearchInput/SearchInput.js.map +1 -1
  202. package/dist/js/components/Select/Select.d.ts +4 -25
  203. package/dist/js/components/Select/Select.d.ts.map +1 -1
  204. package/dist/js/components/Select/Select.js.map +1 -1
  205. package/dist/js/components/Tabs/OverflowTab.d.ts +4 -25
  206. package/dist/js/components/Tabs/OverflowTab.d.ts.map +1 -1
  207. package/dist/js/components/Tabs/OverflowTab.js.map +1 -1
  208. package/dist/js/components/TreeView/TreeView.d.ts.map +1 -1
  209. package/dist/js/components/TreeView/TreeView.js +3 -1
  210. package/dist/js/components/TreeView/TreeView.js.map +1 -1
  211. package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
  212. package/dist/js/components/TreeView/TreeViewListItem.js +3 -1
  213. package/dist/js/components/TreeView/TreeViewListItem.js.map +1 -1
  214. package/dist/js/helpers/AnimationsProvider/AnimationsProvider.d.ts +76 -0
  215. package/dist/js/helpers/AnimationsProvider/AnimationsProvider.d.ts.map +1 -0
  216. package/dist/js/helpers/AnimationsProvider/AnimationsProvider.js +89 -0
  217. package/dist/js/helpers/AnimationsProvider/AnimationsProvider.js.map +1 -0
  218. package/dist/js/helpers/AnimationsProvider/index.d.ts +2 -0
  219. package/dist/js/helpers/AnimationsProvider/index.d.ts.map +1 -0
  220. package/dist/js/helpers/AnimationsProvider/index.js +5 -0
  221. package/dist/js/helpers/AnimationsProvider/index.js.map +1 -0
  222. package/dist/js/helpers/Popper/Popper.d.ts +24 -20
  223. package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
  224. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  225. package/dist/js/helpers/index.d.ts +1 -0
  226. package/dist/js/helpers/index.d.ts.map +1 -1
  227. package/dist/js/helpers/index.js +1 -0
  228. package/dist/js/helpers/index.js.map +1 -1
  229. package/dist/umd/assets/{output-BRqYjXqq.css → output-BEUrWWW0.css} +13708 -13708
  230. package/dist/umd/react-core.min.js +3 -3
  231. package/helpers/package.json +1 -1
  232. package/layouts/package.json +1 -1
  233. package/next/package.json +1 -1
  234. package/package.json +2 -2
  235. package/src/components/Alert/AlertGroup.tsx +59 -63
  236. package/src/components/Alert/AlertGroupInline.tsx +3 -1
  237. package/src/components/Alert/__tests__/AlertGroup.test.tsx +55 -4
  238. package/src/components/Dropdown/Dropdown.tsx +4 -20
  239. package/src/components/Dropdown/examples/Dropdown.md +2 -2
  240. package/src/components/DualListSelector/DualListSelector.tsx +32 -39
  241. package/src/components/DualListSelector/DualListSelectorTreeItem.tsx +3 -1
  242. package/src/components/DualListSelector/__tests__/DualListSelector.test.tsx +28 -0
  243. package/src/components/Form/FormFieldGroupExpandable.tsx +3 -1
  244. package/src/components/Form/InternalFormFieldGroup.tsx +3 -1
  245. package/src/components/Form/__tests__/FormFieldGroupExpandable.test.tsx +30 -0
  246. package/src/components/Menu/MenuContainer.tsx +4 -17
  247. package/src/components/Menu/examples/Menu.md +3 -3
  248. package/src/components/SearchInput/SearchInput.tsx +3 -1
  249. package/src/components/SearchInput/__tests__/SearchInput.test.tsx +52 -0
  250. package/src/components/Select/Select.tsx +4 -26
  251. package/src/components/Select/examples/Select.md +1 -1
  252. package/src/components/Tabs/OverflowTab.tsx +4 -26
  253. package/src/components/Tabs/examples/Tabs.md +27 -27
  254. package/src/components/TreeView/TreeView.tsx +3 -1
  255. package/src/components/TreeView/TreeViewListItem.tsx +3 -1
  256. package/src/components/TreeView/__tests__/TreeView.test.tsx +28 -0
  257. package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +1 -1
  258. package/src/helpers/AnimationsProvider/AnimationsProvider.tsx +104 -0
  259. package/src/helpers/AnimationsProvider/__tests__/AnimationsProvider.test.tsx +157 -0
  260. package/src/helpers/AnimationsProvider/index.ts +1 -0
  261. package/src/helpers/Popper/Popper.tsx +25 -20
  262. package/src/helpers/index.ts +1 -0
@@ -0,0 +1,157 @@
1
+ import { render, screen } from '@testing-library/react';
2
+ import '@testing-library/jest-dom';
3
+ import { AnimationsProvider, useAnimationsConfig, useHasAnimations } from '../AnimationsProvider';
4
+
5
+ // Test component that uses the useAnimationsConfig hook
6
+ const TestConfigComponent = () => {
7
+ const { hasAnimations } = useAnimationsConfig();
8
+ return <div data-testid="config">{hasAnimations ? 'animations-enabled' : 'animations-disabled'}</div>;
9
+ };
10
+
11
+ // Test component that uses the useHasAnimations hook with a local prop
12
+ const TestHasAnimationsComponent = ({ hasAnimations: hasAnimationsProp }: { hasAnimations?: boolean }) => {
13
+ const hasAnimations = useHasAnimations(hasAnimationsProp);
14
+ return <div data-testid="has-animations">{hasAnimations ? 'animations-enabled' : 'animations-disabled'}</div>;
15
+ };
16
+
17
+ test('renders children correctly', () => {
18
+ render(
19
+ <AnimationsProvider config={{ hasAnimations: true }}>
20
+ <div data-testid="child">Test Child</div>
21
+ </AnimationsProvider>
22
+ );
23
+
24
+ expect(screen.getByTestId('child')).toBeInTheDocument();
25
+ expect(screen.getByTestId('child')).toHaveTextContent('Test Child');
26
+ });
27
+
28
+ test('provides explicit config', () => {
29
+ render(
30
+ <AnimationsProvider config={{ hasAnimations: false }}>
31
+ <TestConfigComponent />
32
+ </AnimationsProvider>
33
+ );
34
+
35
+ expect(screen.getByTestId('config')).toHaveTextContent('animations-disabled');
36
+ });
37
+
38
+ test('provides animations enabled config', () => {
39
+ render(
40
+ <AnimationsProvider config={{ hasAnimations: true }}>
41
+ <TestConfigComponent />
42
+ </AnimationsProvider>
43
+ );
44
+
45
+ expect(screen.getByTestId('config')).toHaveTextContent('animations-enabled');
46
+ });
47
+
48
+ test('provides animations disabled config', () => {
49
+ render(
50
+ <AnimationsProvider config={{ hasAnimations: false }}>
51
+ <TestConfigComponent />
52
+ </AnimationsProvider>
53
+ );
54
+
55
+ expect(screen.getByTestId('config')).toHaveTextContent('animations-disabled');
56
+ });
57
+
58
+ test('useAnimationsConfig returns default config when no provider', () => {
59
+ render(<TestConfigComponent />);
60
+
61
+ expect(screen.getByTestId('config')).toHaveTextContent('animations-disabled');
62
+ });
63
+
64
+ test('useHasAnimations uses context when no local prop provided', () => {
65
+ render(
66
+ <AnimationsProvider config={{ hasAnimations: true }}>
67
+ <TestHasAnimationsComponent />
68
+ </AnimationsProvider>
69
+ );
70
+
71
+ expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
72
+ });
73
+
74
+ test('useHasAnimations uses local prop when provided (true)', () => {
75
+ render(
76
+ <AnimationsProvider config={{ hasAnimations: false }}>
77
+ <TestHasAnimationsComponent hasAnimations={true} />
78
+ </AnimationsProvider>
79
+ );
80
+
81
+ expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
82
+ });
83
+
84
+ test('useHasAnimations uses local prop when provided (false)', () => {
85
+ render(
86
+ <AnimationsProvider config={{ hasAnimations: true }}>
87
+ <TestHasAnimationsComponent hasAnimations={false} />
88
+ </AnimationsProvider>
89
+ );
90
+
91
+ expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-disabled');
92
+ });
93
+
94
+ test('useHasAnimations works without provider', () => {
95
+ render(<TestHasAnimationsComponent />);
96
+
97
+ expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-disabled');
98
+ });
99
+
100
+ test('useHasAnimations with local prop and no provider', () => {
101
+ render(<TestHasAnimationsComponent hasAnimations={true} />);
102
+
103
+ expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
104
+ });
105
+
106
+ test('works in app-level scenario with multiple components', () => {
107
+ // Simulate realistic app-level usage
108
+ const MockApp = () => (
109
+ <div>
110
+ <header>
111
+ <TestConfigComponent />
112
+ </header>
113
+ <main>
114
+ <TestHasAnimationsComponent />
115
+ <TestHasAnimationsComponent hasAnimations={false} /> {/* Component override */}
116
+ </main>
117
+ </div>
118
+ );
119
+
120
+ render(
121
+ <AnimationsProvider config={{ hasAnimations: true }}>
122
+ <MockApp />
123
+ </AnimationsProvider>
124
+ );
125
+
126
+ const configs = screen.getAllByTestId('config');
127
+ const hasAnimationsComponents = screen.getAllByTestId('has-animations');
128
+
129
+ expect(configs[0]).toHaveTextContent('animations-enabled'); // Header uses provider
130
+ expect(hasAnimationsComponents[0]).toHaveTextContent('animations-enabled'); // Main uses provider
131
+ expect(hasAnimationsComponents[1]).toHaveTextContent('animations-disabled'); // Component override
132
+ });
133
+
134
+ test('handles dynamic context changes', () => {
135
+ const TestComponent = ({ hasAnimations }: { hasAnimations: boolean }) => (
136
+ <AnimationsProvider config={{ hasAnimations }}>
137
+ <TestConfigComponent />
138
+ <TestHasAnimationsComponent />
139
+ </AnimationsProvider>
140
+ );
141
+
142
+ const { rerender } = render(<TestComponent hasAnimations={true} />);
143
+
144
+ // Initially animations enabled
145
+ expect(screen.getByTestId('config')).toHaveTextContent('animations-enabled');
146
+ expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
147
+
148
+ // Change to disabled
149
+ rerender(<TestComponent hasAnimations={false} />);
150
+ expect(screen.getByTestId('config')).toHaveTextContent('animations-disabled');
151
+ expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-disabled');
152
+
153
+ // Change back to enabled
154
+ rerender(<TestComponent hasAnimations={true} />);
155
+ expect(screen.getByTestId('config')).toHaveTextContent('animations-enabled');
156
+ expect(screen.getByTestId('has-animations')).toHaveTextContent('animations-enabled');
157
+ });
@@ -0,0 +1 @@
1
+ export * from './AnimationsProvider';
@@ -47,24 +47,8 @@ const getOppositePlacement = (placement: Placement): any =>
47
47
  export const getOpacityTransition = (animationDuration: number) =>
48
48
  `opacity ${animationDuration}ms cubic-bezier(.54, 1.5, .38, 1.11)`;
49
49
 
50
- export interface PopperProps {
51
- /**
52
- * Trigger reference element to which the popper is relatively placed to.
53
- */
54
- trigger?: React.ReactNode;
55
- /**
56
- * A reference to the trigger reference element that can be passed instead of or along
57
- * with the trigger prop. When passed along with the trigger prop, the div element that
58
- * wraps the trigger will be removed.
59
- */
60
- triggerRef?: HTMLElement | (() => HTMLElement) | React.RefObject<any>;
61
- /** The popper (menu/tooltip/popover) element */
62
- popper: React.ReactElement<any>;
63
- /**
64
- * Reference to the popper (menu/tooltip/popover) element.
65
- * Passing this prop will remove the wrapper div element from the popper.
66
- */
67
- popperRef?: HTMLElement | (() => HTMLElement) | React.RefObject<any>;
50
+ /** Properties of Popper that can be used to customize its behavior. */
51
+ export interface PopperOptions {
68
52
  /** popper direction */
69
53
  direction?: 'up' | 'down';
70
54
  /** popper position */
@@ -81,8 +65,6 @@ export interface PopperProps {
81
65
  appendTo?: HTMLElement | (() => HTMLElement) | 'inline';
82
66
  /** z-index of the popper element */
83
67
  zIndex?: number;
84
- /** True to make the popper visible */
85
- isVisible?: boolean;
86
68
  /**
87
69
  * Map class names to positions, for example:
88
70
  * {
@@ -179,6 +161,29 @@ export interface PopperProps {
179
161
  preventOverflow?: boolean;
180
162
  }
181
163
 
164
+ /** Extends PopperOptions */
165
+ export interface PopperProps extends PopperOptions {
166
+ /**
167
+ * Trigger reference element to which the popper is relatively placed to.
168
+ */
169
+ trigger?: React.ReactNode;
170
+ /**
171
+ * A reference to the trigger reference element that can be passed instead of or along
172
+ * with the trigger prop. When passed along with the trigger prop, the div element that
173
+ * wraps the trigger will be removed.
174
+ */
175
+ triggerRef?: HTMLElement | (() => HTMLElement) | React.RefObject<any>;
176
+ /** The popper (menu/tooltip/popover) element */
177
+ popper: React.ReactElement<any>;
178
+ /**
179
+ * Reference to the popper (menu/tooltip/popover) element.
180
+ * Passing this prop will remove the wrapper div element from the popper.
181
+ */
182
+ popperRef?: HTMLElement | (() => HTMLElement) | React.RefObject<any>;
183
+ /** True to make the popper visible */
184
+ isVisible?: boolean;
185
+ }
186
+
182
187
  export const Popper: React.FunctionComponent<PopperProps> = ({
183
188
  trigger,
184
189
  popper,
@@ -1,3 +1,4 @@
1
+ export * from './AnimationsProvider';
1
2
  export * from './constants';
2
3
  export * from './FocusTrap/FocusTrap';
3
4
  export * from './GenerateId/GenerateId';