@patternfly/react-core 4.201.1 → 4.202.1

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 (73) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/esm/components/DescriptionList/DescriptionList.d.ts +13 -3
  3. package/dist/esm/components/DescriptionList/DescriptionList.d.ts.map +1 -1
  4. package/dist/esm/components/DescriptionList/DescriptionList.js +10 -6
  5. package/dist/esm/components/DescriptionList/DescriptionList.js.map +1 -1
  6. package/dist/esm/components/Menu/MenuContent.d.ts.map +1 -1
  7. package/dist/esm/components/Menu/MenuContent.js +21 -2
  8. package/dist/esm/components/Menu/MenuContent.js.map +1 -1
  9. package/dist/esm/components/Popover/Popover.d.ts +1 -1
  10. package/dist/esm/components/Select/Select.d.ts +5 -3
  11. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  12. package/dist/esm/components/Select/Select.js +36 -17
  13. package/dist/esm/components/Select/Select.js.map +1 -1
  14. package/dist/esm/components/Select/SelectOption.d.ts.map +1 -1
  15. package/dist/esm/components/Select/SelectOption.js +3 -3
  16. package/dist/esm/components/Select/SelectOption.js.map +1 -1
  17. package/dist/esm/components/Select/SelectToggle.d.ts +1 -1
  18. package/dist/esm/components/Select/SelectToggle.d.ts.map +1 -1
  19. package/dist/esm/components/Select/SelectToggle.js +14 -14
  20. package/dist/esm/components/Select/SelectToggle.js.map +1 -1
  21. package/dist/esm/components/Select/selectConstants.d.ts +1 -0
  22. package/dist/esm/components/Select/selectConstants.d.ts.map +1 -1
  23. package/dist/esm/components/Select/selectConstants.js.map +1 -1
  24. package/dist/esm/components/TimePicker/TimePicker.d.ts +6 -4
  25. package/dist/esm/components/TimePicker/TimePicker.d.ts.map +1 -1
  26. package/dist/esm/components/TimePicker/TimePicker.js +15 -8
  27. package/dist/esm/components/TimePicker/TimePicker.js.map +1 -1
  28. package/dist/js/components/DescriptionList/DescriptionList.d.ts +13 -3
  29. package/dist/js/components/DescriptionList/DescriptionList.d.ts.map +1 -1
  30. package/dist/js/components/DescriptionList/DescriptionList.js +10 -6
  31. package/dist/js/components/DescriptionList/DescriptionList.js.map +1 -1
  32. package/dist/js/components/Menu/MenuContent.d.ts.map +1 -1
  33. package/dist/js/components/Menu/MenuContent.js +21 -2
  34. package/dist/js/components/Menu/MenuContent.js.map +1 -1
  35. package/dist/js/components/Popover/Popover.d.ts +1 -1
  36. package/dist/js/components/Select/Select.d.ts +5 -3
  37. package/dist/js/components/Select/Select.d.ts.map +1 -1
  38. package/dist/js/components/Select/Select.js +36 -17
  39. package/dist/js/components/Select/Select.js.map +1 -1
  40. package/dist/js/components/Select/SelectOption.d.ts.map +1 -1
  41. package/dist/js/components/Select/SelectOption.js +3 -3
  42. package/dist/js/components/Select/SelectOption.js.map +1 -1
  43. package/dist/js/components/Select/SelectToggle.d.ts +1 -1
  44. package/dist/js/components/Select/SelectToggle.d.ts.map +1 -1
  45. package/dist/js/components/Select/SelectToggle.js +14 -14
  46. package/dist/js/components/Select/SelectToggle.js.map +1 -1
  47. package/dist/js/components/Select/selectConstants.d.ts +1 -0
  48. package/dist/js/components/Select/selectConstants.d.ts.map +1 -1
  49. package/dist/js/components/Select/selectConstants.js.map +1 -1
  50. package/dist/js/components/TimePicker/TimePicker.d.ts +6 -4
  51. package/dist/js/components/TimePicker/TimePicker.d.ts.map +1 -1
  52. package/dist/js/components/TimePicker/TimePicker.js +15 -8
  53. package/dist/js/components/TimePicker/TimePicker.js.map +1 -1
  54. package/dist/umd/react-core.css +31 -2
  55. package/dist/umd/react-core.js +106 -52
  56. package/dist/umd/react-core.min.css +31 -2
  57. package/dist/umd/react-core.min.js +2 -2
  58. package/package.json +6 -6
  59. package/src/components/CodeBlock/examples/CodeBlock.md +2 -195
  60. package/src/components/CodeBlock/examples/CodeBlockBasic.tsx +59 -0
  61. package/src/components/CodeBlock/examples/CodeBlockExpandable.tsx +88 -0
  62. package/src/components/DescriptionList/DescriptionList.tsx +52 -31
  63. package/src/components/DescriptionList/examples/DescriptionList.md +87 -28
  64. package/src/components/Menu/MenuContent.tsx +27 -2
  65. package/src/components/Popover/Popover.tsx +1 -1
  66. package/src/components/Select/Select.tsx +39 -18
  67. package/src/components/Select/SelectOption.tsx +7 -4
  68. package/src/components/Select/SelectToggle.tsx +15 -15
  69. package/src/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +2 -0
  70. package/src/components/Select/examples/Select.md +93 -40
  71. package/src/components/Select/selectConstants.tsx +1 -0
  72. package/src/components/TimePicker/TimePicker.tsx +20 -11
  73. package/src/components/TimePicker/examples/TimePicker.md +2 -0
@@ -49,13 +49,14 @@ export interface TimePickerProps
49
49
  id?: string;
50
50
  /** Width of the time picker. */
51
51
  width?: string;
52
- /** The container to append the menu to. Defaults to 'inline'
52
+ /** The container to append the menu to. Defaults to 'inline'.
53
53
  * If your menu is being cut off you can append it to an element higher up the DOM tree.
54
54
  * Some examples:
55
+ * menuAppendTo="parent"
55
56
  * menuAppendTo={() => document.body}
56
57
  * menuAppendTo={document.getElementById('target')}
57
58
  */
58
- menuAppendTo?: HTMLElement | (() => HTMLElement) | 'inline';
59
+ menuAppendTo?: HTMLElement | (() => HTMLElement) | 'inline' | 'parent';
59
60
  /** Size of step between time options in minutes.*/
60
61
  stepMinutes?: number;
61
62
  /** Additional props for input field */
@@ -81,7 +82,7 @@ interface TimePickerState {
81
82
 
82
83
  export class TimePicker extends React.Component<TimePickerProps, TimePickerState> {
83
84
  static displayName = 'TimePicker';
84
- private parentRef = React.createRef<HTMLDivElement>();
85
+ private baseComponentRef = React.createRef<any>();
85
86
  private toggleRef = React.createRef<HTMLDivElement>();
86
87
  private inputRef = React.createRef<HTMLInputElement>();
87
88
  private menuRef = React.createRef<HTMLDivElement>();
@@ -97,6 +98,7 @@ export class TimePicker extends React.Component<TimePickerProps, TimePickerState
97
98
  delimiter: ':',
98
99
  'aria-label': 'Time picker',
99
100
  width: '150px',
101
+ menuAppendTo: 'inline',
100
102
  stepMinutes: 30,
101
103
  inputProps: {},
102
104
  minTime: '',
@@ -141,7 +143,7 @@ export class TimePicker extends React.Component<TimePickerProps, TimePickerState
141
143
  }
142
144
 
143
145
  onDocClick = (event: MouseEvent | TouchEvent) => {
144
- const clickedOnToggle = this.parentRef?.current?.contains(event.target as Node);
146
+ const clickedOnToggle = this.toggleRef?.current?.contains(event.target as Node);
145
147
  const clickedWithinMenu = this.menuRef?.current?.contains(event.target as Node);
146
148
  if (this.state.isOpen && !(clickedOnToggle || clickedWithinMenu)) {
147
149
  this.onToggle(false);
@@ -362,7 +364,7 @@ export class TimePicker extends React.Component<TimePickerProps, TimePickerState
362
364
  });
363
365
  };
364
366
 
365
- onInputFocus = (e: any) => {
367
+ onInputClick = (e: any) => {
366
368
  if (!this.state.isOpen) {
367
369
  this.onToggle(true);
368
370
  }
@@ -429,10 +431,17 @@ export class TimePicker extends React.Component<TimePickerProps, TimePickerState
429
431
  const isValidFormat = this.isValidFormat(timeState);
430
432
  const randomId = id || getUniqueId('time-picker');
431
433
 
434
+ const getParentElement = () => {
435
+ if (this.baseComponentRef && this.baseComponentRef.current) {
436
+ return this.baseComponentRef.current.parentElement;
437
+ }
438
+ return null;
439
+ };
440
+
432
441
  const menuContainer = (
433
442
  <Menu ref={this.menuRef} isScrollable>
434
443
  <MenuContent maxMenuHeight="200px">
435
- <MenuList aria-labelledby={`${randomId}-input`}>
444
+ <MenuList aria-label={ariaLabel}>
436
445
  {options.map((option, index) => (
437
446
  <MenuItem onClick={this.onSelect} key={option} id={`${randomId}-option-${index}`}>
438
447
  {option}
@@ -445,6 +454,7 @@ export class TimePicker extends React.Component<TimePickerProps, TimePickerState
445
454
 
446
455
  const textInput = (
447
456
  <TextInput
457
+ aria-haspopup="menu"
448
458
  className={css(formStyles.formControl)}
449
459
  id={`${randomId}-input`}
450
460
  aria-label={ariaLabel}
@@ -453,8 +463,7 @@ export class TimePicker extends React.Component<TimePickerProps, TimePickerState
453
463
  value={timeState || ''}
454
464
  type="text"
455
465
  iconVariant="clock"
456
- onClick={this.onInputFocus}
457
- onFocus={this.onInputFocus}
466
+ onClick={this.onInputClick}
458
467
  onChange={this.onInputChange}
459
468
  onBlur={this.onBlur}
460
469
  autoComplete="off"
@@ -465,14 +474,14 @@ export class TimePicker extends React.Component<TimePickerProps, TimePickerState
465
474
  );
466
475
 
467
476
  return (
468
- <div className={css(datePickerStyles.datePicker, className)}>
477
+ <div ref={this.baseComponentRef} className={css(datePickerStyles.datePicker, className)}>
469
478
  <div className={css(datePickerStyles.datePickerInput)} style={style} {...props}>
470
479
  <InputGroup>
471
- <div id={randomId} ref={this.parentRef}>
480
+ <div id={randomId}>
472
481
  <div ref={this.toggleRef} style={{ paddingLeft: '0' }}>
473
482
  {menuAppendTo !== 'inline' ? (
474
483
  <Popper
475
- appendTo={this.parentRef.current}
484
+ appendTo={menuAppendTo === 'parent' ? getParentElement() : menuAppendTo}
476
485
  trigger={textInput}
477
486
  popper={menuContainer}
478
487
  isVisible={isOpen}
@@ -10,6 +10,8 @@ import { TimePicker } from '@patternfly/react-core';
10
10
 
11
11
  ## Examples
12
12
 
13
+ Appending the TimePicker to the `document.body` may cause accessibility issues, including being unable to navigate into the menu via keyboard or other assistive technologies. Instead, appending to the `"parent"` is recommended.
14
+
13
15
  ### Basic 12 hour
14
16
 
15
17
  ```js