@patternfly/react-core 5.2.0-prerelease.16 → 5.2.0-prerelease.18

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 (199) hide show
  1. package/CHANGELOG.md +13 -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/Chip/package.json +1 -1
  21. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  22. package/dist/dynamic/components/CodeBlock/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/DragDrop/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/Text/package.json +1 -1
  72. package/dist/dynamic/components/TextArea/package.json +1 -1
  73. package/dist/dynamic/components/TextInput/package.json +1 -1
  74. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  75. package/dist/dynamic/components/Tile/package.json +1 -1
  76. package/dist/dynamic/components/TimePicker/package.json +1 -1
  77. package/dist/dynamic/components/Timestamp/package.json +1 -1
  78. package/dist/dynamic/components/Title/package.json +1 -1
  79. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  80. package/dist/dynamic/components/Toolbar/package.json +1 -1
  81. package/dist/dynamic/components/Tooltip/package.json +1 -1
  82. package/dist/dynamic/components/TreeView/package.json +1 -1
  83. package/dist/dynamic/components/Truncate/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  85. package/dist/dynamic/components/Wizard/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/favorites/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  110. package/dist/dynamic/helpers/util/package.json +1 -1
  111. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  112. package/dist/dynamic/layouts/Flex/package.json +1 -1
  113. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  114. package/dist/dynamic/layouts/Grid/package.json +1 -1
  115. package/dist/dynamic/layouts/Level/package.json +1 -1
  116. package/dist/dynamic/layouts/Split/package.json +1 -1
  117. package/dist/dynamic/layouts/Stack/package.json +1 -1
  118. package/dist/dynamic/next/components/package.json +1 -1
  119. package/dist/esm/components/Drawer/DrawerPanelContent.js +4 -4
  120. package/dist/esm/components/Drawer/DrawerPanelContent.js.map +1 -1
  121. package/dist/esm/components/Dropdown/Dropdown.d.ts +2 -0
  122. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  123. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  124. package/dist/esm/components/ExpandableSection/ExpandableSection.js +1 -1
  125. package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
  126. package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
  127. package/dist/esm/components/Menu/Menu.js +2 -1
  128. package/dist/esm/components/Menu/Menu.js.map +1 -1
  129. package/dist/esm/components/Menu/MenuContainer.d.ts +2 -0
  130. package/dist/esm/components/Menu/MenuContainer.d.ts.map +1 -1
  131. package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
  132. package/dist/esm/components/Nav/NavList.js +3 -3
  133. package/dist/esm/components/Nav/NavList.js.map +1 -1
  134. package/dist/esm/components/Select/Select.d.ts +2 -0
  135. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  136. package/dist/esm/components/Select/Select.js.map +1 -1
  137. package/dist/esm/components/Slider/Slider.d.ts.map +1 -1
  138. package/dist/esm/components/Slider/Slider.js +2 -1
  139. package/dist/esm/components/Slider/Slider.js.map +1 -1
  140. package/dist/esm/components/Tabs/Tabs.js +3 -3
  141. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  142. package/dist/esm/helpers/Popper/Popper.d.ts +2 -1
  143. package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
  144. package/dist/esm/helpers/Popper/Popper.js +3 -13
  145. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  146. package/dist/esm/helpers/util.d.ts +9 -0
  147. package/dist/esm/helpers/util.d.ts.map +1 -1
  148. package/dist/esm/helpers/util.js +18 -0
  149. package/dist/esm/helpers/util.js.map +1 -1
  150. package/dist/js/components/Drawer/DrawerPanelContent.js +3 -3
  151. package/dist/js/components/Drawer/DrawerPanelContent.js.map +1 -1
  152. package/dist/js/components/Dropdown/Dropdown.d.ts +2 -0
  153. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  154. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  155. package/dist/js/components/ExpandableSection/ExpandableSection.js +1 -1
  156. package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
  157. package/dist/js/components/Menu/Menu.d.ts.map +1 -1
  158. package/dist/js/components/Menu/Menu.js +2 -1
  159. package/dist/js/components/Menu/Menu.js.map +1 -1
  160. package/dist/js/components/Menu/MenuContainer.d.ts +2 -0
  161. package/dist/js/components/Menu/MenuContainer.d.ts.map +1 -1
  162. package/dist/js/components/Menu/MenuContainer.js.map +1 -1
  163. package/dist/js/components/Nav/NavList.js +2 -2
  164. package/dist/js/components/Nav/NavList.js.map +1 -1
  165. package/dist/js/components/Select/Select.d.ts +2 -0
  166. package/dist/js/components/Select/Select.d.ts.map +1 -1
  167. package/dist/js/components/Select/Select.js.map +1 -1
  168. package/dist/js/components/Slider/Slider.d.ts.map +1 -1
  169. package/dist/js/components/Slider/Slider.js +2 -1
  170. package/dist/js/components/Slider/Slider.js.map +1 -1
  171. package/dist/js/components/Tabs/Tabs.js +2 -2
  172. package/dist/js/components/Tabs/Tabs.js.map +1 -1
  173. package/dist/js/helpers/Popper/Popper.d.ts +2 -1
  174. package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
  175. package/dist/js/helpers/Popper/Popper.js +5 -16
  176. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  177. package/dist/js/helpers/util.d.ts +9 -0
  178. package/dist/js/helpers/util.d.ts.map +1 -1
  179. package/dist/js/helpers/util.js +20 -1
  180. package/dist/js/helpers/util.js.map +1 -1
  181. package/dist/umd/react-core.min.js +1 -1
  182. package/helpers/package.json +1 -1
  183. package/layouts/package.json +1 -1
  184. package/next/package.json +1 -1
  185. package/package.json +2 -2
  186. package/src/components/Checkbox/__tests__/Checkbox.test.tsx +223 -69
  187. package/src/components/Checkbox/__tests__/__snapshots__/Checkbox.test.tsx.snap +3 -198
  188. package/src/components/Drawer/DrawerPanelContent.tsx +4 -4
  189. package/src/components/Dropdown/Dropdown.tsx +2 -0
  190. package/src/components/ExpandableSection/ExpandableSection.tsx +1 -1
  191. package/src/components/Menu/Menu.tsx +2 -1
  192. package/src/components/Menu/MenuContainer.tsx +2 -0
  193. package/src/components/Nav/NavList.tsx +3 -3
  194. package/src/components/Select/Select.tsx +2 -0
  195. package/src/components/Slider/Slider.tsx +2 -1
  196. package/src/components/Tabs/Tabs.tsx +3 -3
  197. package/src/helpers/Popper/Popper.tsx +6 -17
  198. package/src/helpers/__mocks__/util.ts +2 -0
  199. package/src/helpers/util.ts +22 -0
@@ -25,6 +25,8 @@ export interface SelectPopperProps {
25
25
  * appendTo={document.getElementById('target')}
26
26
  */
27
27
  appendTo?: HTMLElement | (() => HTMLElement) | 'inline';
28
+ /** Flag to prevent the popper from overflowing its container and becoming partially obscured. */
29
+ preventOverflow?: boolean;
28
30
  }
29
31
 
30
32
  export interface SelectToggleProps {
@@ -8,6 +8,7 @@ import { TextInput } from '../TextInput';
8
8
  import { Tooltip } from '../Tooltip';
9
9
  import cssSliderValue from '@patternfly/react-tokens/dist/esm/c_slider_value';
10
10
  import cssFormControlWidthChars from '@patternfly/react-tokens/dist/esm/c_slider__value_c_form_control_width_chars';
11
+ import { getLanguageDirection } from '../../helpers/util';
11
12
 
12
13
  /** Properties for creating custom steps in a slider. These properties should be passed in as
13
14
  * an object within an array to the slider component's customSteps property.
@@ -125,7 +126,7 @@ export const Slider: React.FunctionComponent<SliderProps> = ({
125
126
  let isRTL: boolean;
126
127
 
127
128
  React.useEffect(() => {
128
- isRTL = window.getComputedStyle(sliderRailRef.current).getPropertyValue('direction') === 'rtl';
129
+ isRTL = getLanguageDirection(sliderRailRef.current) === 'rtl';
129
130
  });
130
131
 
131
132
  React.useEffect(() => {
@@ -6,7 +6,7 @@ import { PickOptional } from '../../helpers/typeUtils';
6
6
  import AngleLeftIcon from '@patternfly/react-icons/dist/esm/icons/angle-left-icon';
7
7
  import AngleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-right-icon';
8
8
  import PlusIcon from '@patternfly/react-icons/dist/esm/icons/plus-icon';
9
- import { getUniqueId, isElementInView, formatBreakpointMods } from '../../helpers/util';
9
+ import { getUniqueId, isElementInView, formatBreakpointMods, getLanguageDirection } from '../../helpers/util';
10
10
  import { TabContent } from './TabContent';
11
11
  import { TabProps } from './Tab';
12
12
  import { TabsContextProvider } from './TabsContext';
@@ -333,7 +333,7 @@ class Tabs extends React.Component<TabsProps, TabsState> {
333
333
  if (canUseDOM) {
334
334
  window.addEventListener('resize', this.handleScrollButtons, false);
335
335
  }
336
- this.direction = getComputedStyle(this.tabList.current).getPropertyValue('direction');
336
+ this.direction = getLanguageDirection(this.tabList.current);
337
337
  // call the handle resize function to check if scroll buttons should be shown
338
338
  this.handleScrollButtons();
339
339
  }
@@ -381,7 +381,7 @@ class Tabs extends React.Component<TabsProps, TabsState> {
381
381
  this.setState({ showScrollButtons: false });
382
382
  }
383
383
 
384
- this.direction = getComputedStyle(this.tabList.current).getPropertyValue('direction');
384
+ this.direction = getLanguageDirection(this.tabList.current);
385
385
  }
386
386
 
387
387
  render() {
@@ -5,6 +5,7 @@ import { Placement, Modifier } from './thirdparty/popper-core';
5
5
  import { clearTimeouts } from '../util';
6
6
  import { css } from '@patternfly/react-styles';
7
7
  import '@patternfly/react-styles/css/components/Popper/Popper.css';
8
+ import { getLanguageDirection } from '../util';
8
9
 
9
10
  const hash = {
10
11
  left: 'right',
@@ -45,21 +46,6 @@ const getOppositePlacement = (placement: Placement): any =>
45
46
  export const getOpacityTransition = (animationDuration: number) =>
46
47
  `opacity ${animationDuration}ms cubic-bezier(.54, 1.5, .38, 1.11)`;
47
48
 
48
- export const getLanguageDirection = (targetElement: HTMLElement) => {
49
- const defaultDirection = 'ltr';
50
- let direction = defaultDirection;
51
-
52
- if (targetElement) {
53
- direction = getComputedStyle(targetElement).getPropertyValue('direction');
54
- }
55
-
56
- if (['ltr', 'rtl'].includes(direction)) {
57
- return direction as 'ltr' | 'rtl';
58
- }
59
-
60
- return defaultDirection;
61
- };
62
-
63
49
  export interface PopperProps {
64
50
  /**
65
51
  * Trigger reference element to which the popper is relatively placed to.
@@ -186,6 +172,8 @@ export interface PopperProps {
186
172
  * Lifecycle function invoked when the popper has fully transitioned in.
187
173
  */
188
174
  onShown?: () => void;
175
+ /** Flag to prevent the popper from overflowing its container and becoming partially obscured. */
176
+ preventOverflow?: boolean;
189
177
  }
190
178
 
191
179
  export const Popper: React.FunctionComponent<PopperProps> = ({
@@ -224,7 +212,8 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
224
212
  onHide = () => {},
225
213
  onMount = () => {},
226
214
  onShow = () => {},
227
- onShown = () => {}
215
+ onShown = () => {},
216
+ preventOverflow = false
228
217
  }) => {
229
218
  const [triggerElement, setTriggerElement] = React.useState(null);
230
219
  const [refElement, setRefElement] = React.useState<HTMLElement>(null);
@@ -436,7 +425,7 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
436
425
  },
437
426
  {
438
427
  name: 'preventOverflow',
439
- enabled: false
428
+ enabled: preventOverflow
440
429
  },
441
430
  {
442
431
  // adds attribute [data-popper-reference-hidden] to the popper element which can be used to hide it using CSS
@@ -1,3 +1,5 @@
1
1
  export const getUniqueId = () => 'unique_id_mock';
2
2
 
3
3
  export const clearTimeouts = () => {};
4
+
5
+ export const getLanguageDirection = () => 'ltr';
@@ -522,3 +522,25 @@ export const clearTimeouts = (timeoutRefs: React.RefObject<any>[]) => {
522
522
  }
523
523
  });
524
524
  };
525
+
526
+ /**
527
+ * Helper function to get the language direction of a given element, useful for figuring out if left-to-right
528
+ * or right-to-left specific logic should be applied.
529
+ *
530
+ * @param {HTMLElement} targetElement - Element the helper will get the language direction of
531
+ * @param {'ltr' | 'rtl'} defaultDirection - Language direction to assume if one can't be determined, defaults to 'ltr'
532
+ * @returns {'ltr' | 'rtl'} - The language direction of the target element
533
+ */
534
+ export const getLanguageDirection = (targetElement: HTMLElement, defaultDirection: 'ltr' | 'rtl' = 'ltr') => {
535
+ if (!targetElement) {
536
+ return defaultDirection;
537
+ }
538
+
539
+ const computedDirection = getComputedStyle(targetElement).getPropertyValue('direction');
540
+
541
+ if (['ltr', 'rtl'].includes(computedDirection)) {
542
+ return computedDirection as 'ltr' | 'rtl';
543
+ }
544
+
545
+ return defaultDirection;
546
+ };