@patternfly/react-core 4.262.0 → 4.264.0

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 (102) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/esm/components/Button/Button.d.ts.map +1 -1
  3. package/dist/esm/components/Button/Button.js +1 -1
  4. package/dist/esm/components/Button/Button.js.map +1 -1
  5. package/dist/esm/components/NumberInput/NumberInput.d.ts +1 -1
  6. package/dist/esm/components/NumberInput/NumberInput.d.ts.map +1 -1
  7. package/dist/esm/components/NumberInput/NumberInput.js +0 -1
  8. package/dist/esm/components/NumberInput/NumberInput.js.map +1 -1
  9. package/dist/esm/components/Spinner/Spinner.d.ts +2 -0
  10. package/dist/esm/components/Spinner/Spinner.d.ts.map +1 -1
  11. package/dist/esm/components/Spinner/Spinner.js +2 -2
  12. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  13. package/dist/esm/components/Tabs/Tab.d.ts +4 -2
  14. package/dist/esm/components/Tabs/Tab.d.ts.map +1 -1
  15. package/dist/esm/components/Tabs/Tab.js +6 -7
  16. package/dist/esm/components/Tabs/Tab.js.map +1 -1
  17. package/dist/esm/components/Tabs/TabAction.d.ts +20 -0
  18. package/dist/esm/components/Tabs/TabAction.d.ts.map +1 -0
  19. package/dist/esm/components/Tabs/TabAction.js +17 -0
  20. package/dist/esm/components/Tabs/TabAction.js.map +1 -0
  21. package/dist/esm/components/Tabs/Tabs.d.ts +1 -1
  22. package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
  23. package/dist/esm/components/Tabs/index.d.ts +1 -0
  24. package/dist/esm/components/Tabs/index.d.ts.map +1 -1
  25. package/dist/esm/components/Tabs/index.js +1 -0
  26. package/dist/esm/components/Tabs/index.js.map +1 -1
  27. package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
  28. package/dist/esm/helpers/Popper/Popper.js +6 -3
  29. package/dist/esm/helpers/Popper/Popper.js.map +1 -1
  30. package/dist/js/components/Button/Button.d.ts.map +1 -1
  31. package/dist/js/components/Button/Button.js +1 -1
  32. package/dist/js/components/Button/Button.js.map +1 -1
  33. package/dist/js/components/NumberInput/NumberInput.d.ts +1 -1
  34. package/dist/js/components/NumberInput/NumberInput.d.ts.map +1 -1
  35. package/dist/js/components/NumberInput/NumberInput.js +0 -1
  36. package/dist/js/components/NumberInput/NumberInput.js.map +1 -1
  37. package/dist/js/components/Spinner/Spinner.d.ts +2 -0
  38. package/dist/js/components/Spinner/Spinner.d.ts.map +1 -1
  39. package/dist/js/components/Spinner/Spinner.js +2 -2
  40. package/dist/js/components/Spinner/Spinner.js.map +1 -1
  41. package/dist/js/components/Tabs/Tab.d.ts +4 -2
  42. package/dist/js/components/Tabs/Tab.d.ts.map +1 -1
  43. package/dist/js/components/Tabs/Tab.js +6 -7
  44. package/dist/js/components/Tabs/Tab.js.map +1 -1
  45. package/dist/js/components/Tabs/TabAction.d.ts +20 -0
  46. package/dist/js/components/Tabs/TabAction.d.ts.map +1 -0
  47. package/dist/js/components/Tabs/TabAction.js +20 -0
  48. package/dist/js/components/Tabs/TabAction.js.map +1 -0
  49. package/dist/js/components/Tabs/Tabs.d.ts +1 -1
  50. package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
  51. package/dist/js/components/Tabs/index.d.ts +1 -0
  52. package/dist/js/components/Tabs/index.d.ts.map +1 -1
  53. package/dist/js/components/Tabs/index.js +1 -0
  54. package/dist/js/components/Tabs/index.js.map +1 -1
  55. package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
  56. package/dist/js/helpers/Popper/Popper.js +6 -3
  57. package/dist/js/helpers/Popper/Popper.js.map +1 -1
  58. package/dist/styles/assets/pficon/pficon.scss +12 -0
  59. package/dist/styles/assets/pficon/pficon.woff +0 -0
  60. package/dist/styles/assets/pficon/pficon.woff2 +0 -0
  61. package/dist/styles/base-no-reset.css +10 -0
  62. package/dist/styles/base.css +10 -0
  63. package/dist/umd/react-core.min.css +1331 -1162
  64. package/dist/umd/react-core.min.js +2 -2
  65. package/package.json +6 -6
  66. package/src/components/Button/Button.tsx +1 -0
  67. package/src/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +1 -1
  68. package/src/components/NumberInput/NumberInput.tsx +1 -2
  69. package/src/components/NumberInput/__tests__/NumberInput.test.tsx +4 -4
  70. package/src/components/NumberInput/examples/NumberInput.md +2 -0
  71. package/src/components/NumberInput/examples/NumberInputCustomStep.tsx +4 -4
  72. package/src/components/NumberInput/examples/NumberInputCustomStepAndThreshold.tsx +4 -5
  73. package/src/components/NumberInput/examples/NumberInputDefault.tsx +5 -5
  74. package/src/components/NumberInput/examples/NumberInputDisabled.tsx +5 -5
  75. package/src/components/NumberInput/examples/NumberInputUnit.tsx +10 -10
  76. package/src/components/NumberInput/examples/NumberInputUnitThreshold.tsx +16 -6
  77. package/src/components/NumberInput/examples/NumberInputVaryingSizes.tsx +11 -11
  78. package/src/components/NumberInput/examples/NumberInputWithStatus.tsx +5 -6
  79. package/src/components/Popover/__tests__/__snapshots__/Popover.test.tsx.snap +3 -1
  80. package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +3 -1
  81. package/src/components/Spinner/Spinner.tsx +4 -1
  82. package/src/components/Spinner/examples/Spinner.md +4 -0
  83. package/src/components/Spinner/examples/SpinnerInline.tsx +29 -0
  84. package/src/components/Tabs/Tab.tsx +17 -16
  85. package/src/components/Tabs/TabAction.tsx +57 -0
  86. package/src/components/Tabs/Tabs.tsx +1 -1
  87. package/src/components/Tabs/__tests__/Tab.test.tsx +10 -0
  88. package/src/components/Tabs/__tests__/__snapshots__/Tab.test.tsx.snap +45 -0
  89. package/src/components/Tabs/examples/Tabs.md +64 -20
  90. package/src/components/Tabs/examples/TabsHelp.tsx +61 -0
  91. package/src/components/Tabs/examples/TabsHelpAndClose.tsx +84 -0
  92. package/src/components/Tabs/index.ts +1 -0
  93. package/src/components/Tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +3 -1
  94. package/src/demos/Tabs.md +0 -10
  95. package/src/demos/examples/DashboardWrapper.js +1 -0
  96. package/src/demos/examples/Tabs/ModalTabs.tsx +3 -3
  97. package/src/demos/examples/Tabs/NestedTabs.tsx +11 -3
  98. package/src/demos/examples/Tabs/NestedUnindentedTabs.tsx +25 -40
  99. package/src/demos/examples/Tabs/TabsAndTable.tsx +9 -52
  100. package/src/helpers/Popper/Popper.tsx +13 -3
  101. package/src/demos/examples/Tabs/GrayTabs.tsx +0 -152
  102. package/src/demos/examples/Tabs/TabsAndTablesAutoWidthTabs.tsx +0 -442
@@ -26,8 +26,6 @@ import {
26
26
  OverflowMenuItem,
27
27
  PageSection,
28
28
  PageSectionVariants,
29
- Pagination,
30
- PaginationVariant,
31
29
  Progress,
32
30
  ProgressSize,
33
31
  Select,
@@ -70,13 +68,6 @@ interface Repository {
70
68
  }
71
69
 
72
70
  export const TablesAndTabs = () => {
73
- // tab properties
74
- const [activeTabKey, setActiveTabKey] = React.useState<number>(0);
75
- // Toggle currently active tab
76
- const handleTabClick = (tabIndex: number) => {
77
- setActiveTabKey(tabIndex);
78
- };
79
-
80
71
  // secondary tab properties
81
72
  const [secondaryActiveTabKey, setSecondaryActiveTabKey] = React.useState<number>(10);
82
73
  const handleSecondaryTabClick = (tabIndex: number) => {
@@ -84,7 +75,7 @@ export const TablesAndTabs = () => {
84
75
  };
85
76
 
86
77
  // drawer properties
87
- const [isExpanded, setIsExpanded] = React.useState<boolean>(false);
78
+ const [isExpanded, setIsExpanded] = React.useState<boolean>(true);
88
79
 
89
80
  // table properties
90
81
  // In real usage, this data would come from some external source like an API via props.
@@ -116,7 +107,7 @@ export const TablesAndTabs = () => {
116
107
  const allRowsSelected = selectedRepoNames.length === repositories.length;
117
108
  const isRepoSelected = (repo: Repository) => selectedRepoNames.includes(repo.name);
118
109
 
119
- const [rowClicked, setRowClicked] = React.useState<string>(null);
110
+ const [rowClicked, setRowClicked] = React.useState<string>('Node 1');
120
111
  const isRowClicked = (repo: Repository) => rowClicked === repo.name;
121
112
 
122
113
  const defaultActions: IAction[] = [
@@ -204,15 +195,6 @@ export const TablesAndTabs = () => {
204
195
  />
205
196
  </OverflowMenuControl>
206
197
  </OverflowMenu>
207
- <ToolbarItem variant="pagination">
208
- <Pagination
209
- itemCount={36}
210
- widgetId="pagination-options-menu-bottom"
211
- page={1}
212
- variant={PaginationVariant.top}
213
- isCompact
214
- />
215
- </ToolbarItem>
216
198
  </ToolbarContent>
217
199
  </Toolbar>
218
200
  );
@@ -239,8 +221,8 @@ export const TablesAndTabs = () => {
239
221
  <Tr
240
222
  key={repo.name}
241
223
  onRowClick={event => {
242
- if ((event.target as HTMLInputElement).type !== 'checkbox') {
243
- setRowClicked(rowClicked === repo.name ? null : repo.name);
224
+ if ((event?.target as HTMLInputElement).type !== 'checkbox') {
225
+ setRowClicked(rowClicked === repo.name ? '' : repo.name);
244
226
  setIsExpanded(!isRowClicked(repo));
245
227
  }
246
228
  }}
@@ -301,7 +283,7 @@ export const TablesAndTabs = () => {
301
283
  <DrawerActions>
302
284
  <DrawerCloseButton
303
285
  onClick={() => {
304
- setRowClicked(null);
286
+ setRowClicked('');
305
287
  setIsExpanded(false);
306
288
  }}
307
289
  />
@@ -383,18 +365,7 @@ export const TablesAndTabs = () => {
383
365
  const tabContent = (
384
366
  <Drawer isExpanded={isExpanded} isInline>
385
367
  <DrawerContent panelContent={panelContent}>
386
- <DrawerContentBody>
387
- {toolbar}
388
- <Divider />
389
- {tableComposable}
390
- <Pagination
391
- id="page-layout-table-column-management-action-toolbar-bottom"
392
- itemCount={36}
393
- widgetId="pagination-options-menu-bottom"
394
- page={1}
395
- variant={PaginationVariant.bottom}
396
- />
397
- </DrawerContentBody>
368
+ <DrawerContentBody>{tableComposable}</DrawerContentBody>
398
369
  </DrawerContent>
399
370
  </Drawer>
400
371
  );
@@ -407,24 +378,10 @@ export const TablesAndTabs = () => {
407
378
  Nodes
408
379
  </Title>
409
380
  </PageSection>
410
- <PageSection type="tabs" variant={PageSectionVariants.light} padding={{ default: 'noPadding' }}>
411
- <Tabs
412
- activeKey={activeTabKey}
413
- onSelect={(_event, tabIndex) => handleTabClick(Number(tabIndex))}
414
- usePageInsets
415
- id="tabs-table-tabs-list"
416
- >
417
- <Tab eventKey={0} title={<TabTitleText>Nodes</TabTitleText>} tabContentId={`tabContent${0}`} />
418
- <Tab eventKey={1} title={<TabTitleText>Node connectors</TabTitleText>} tabContentId={`tabContent${1}`} />
419
- </Tabs>
420
- </PageSection>
421
381
  <PageSection variant={PageSectionVariants.light} padding={{ default: 'noPadding' }}>
422
- <TabContent key={0} eventKey={0} id={`tabContent${0}`} activeKey={activeTabKey} hidden={0 !== activeTabKey}>
423
- <TabContentBody>{tabContent}</TabContentBody>
424
- </TabContent>
425
- <TabContent key={1} eventKey={1} id={`tabContent${1}`} activeKey={activeTabKey} hidden={1 !== activeTabKey}>
426
- <TabContentBody>Node connectors panel</TabContentBody>
427
- </TabContent>
382
+ {toolbar}
383
+ <Divider />
384
+ {tabContent}
428
385
  </PageSection>
429
386
  </React.Fragment>
430
387
  </DashboardWrapper>
@@ -311,7 +311,7 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
311
311
  [popperMatchesTriggerWidth]
312
312
  );
313
313
 
314
- const { styles: popperStyles, attributes, update } = usePopper(refOrTrigger, popperElement, {
314
+ const { styles: popperStyles, attributes, update, forceUpdate } = usePopper(refOrTrigger, popperElement, {
315
315
  placement: getPlacementMemo,
316
316
  modifiers: [
317
317
  {
@@ -340,6 +340,10 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
340
340
  ]
341
341
  });
342
342
 
343
+ React.useEffect(() => {
344
+ forceUpdate && forceUpdate();
345
+ }, [popper]);
346
+
343
347
  // Returns the CSS modifier class in order to place the Popper's arrow properly
344
348
  // Depends on the position of the Popper relative to the reference element
345
349
  const modifierFromPopperPosition = () => {
@@ -383,7 +387,11 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
383
387
  let popperPortal;
384
388
  if (removeFindDomNode) {
385
389
  // If removeFindDomNode is passed, use the removeFindDomNode method of wrapping divs
386
- popperPortal = <div ref={node => setPopperElement(node?.firstElementChild as HTMLElement)}>{menuWithPopper}</div>;
390
+ popperPortal = (
391
+ <div style={{ display: 'contents' }} ref={node => setPopperElement(node?.firstElementChild as HTMLElement)}>
392
+ {menuWithPopper}
393
+ </div>
394
+ );
387
395
  } else if (popperRef) {
388
396
  // If removeFindDomNode is not passed and popperRef is passed, use the popperRef method
389
397
  popperPortal = menuWithPopper;
@@ -400,7 +408,9 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
400
408
  <FindRefWrapper onFoundRef={(foundRef: any) => setTriggerElement(foundRef)}>{trigger}</FindRefWrapper>
401
409
  )}
402
410
  {!reference && trigger && React.isValidElement(trigger) && removeFindDomNode && (
403
- <div ref={node => setTriggerElement(node?.firstElementChild as HTMLElement)}>{trigger}</div>
411
+ <div style={{ display: 'contents' }} ref={node => setTriggerElement(node?.firstElementChild as HTMLElement)}>
412
+ {trigger}
413
+ </div>
404
414
  )}
405
415
  {ready && isVisible && ReactDOM.createPortal(popperPortal, getTarget())}
406
416
  </>
@@ -1,152 +0,0 @@
1
- import React from 'react';
2
- import {
3
- PageSection,
4
- Tabs,
5
- Tab,
6
- TabContent,
7
- TabContentBody,
8
- TabTitleText,
9
- Title,
10
- Grid,
11
- GridItem,
12
- Flex,
13
- FlexItem,
14
- Card,
15
- CardBody,
16
- CardHeader
17
- } from '@patternfly/react-core';
18
- import DashboardWrapper from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
19
-
20
- export const GrayTabsDemo: React.FunctionComponent = () => {
21
- const [activeTabKey, setActiveTabKey] = React.useState<string | number>(0);
22
- const [activeNestedTabKey, setActiveNestedTabKey] = React.useState<string | number>(0);
23
-
24
- // Toggle currently active tab
25
- const handleTabClick = (_: React.MouseEvent, tabIndex: string | number) => setActiveTabKey(tabIndex);
26
-
27
- // Toggle currently active nested tab
28
- const handleNestedTabClick = (_: React.MouseEvent, tabIndex: string | number) => setActiveNestedTabKey(tabIndex);
29
-
30
- const tabContent = (
31
- <Grid hasGutter>
32
- <GridItem xl={8} md={6}>
33
- <Card>
34
- <CardHeader>
35
- <Title headingLevel="h2">Status</Title>
36
- </CardHeader>
37
- <CardBody>
38
- <Flex direction={{ default: 'column' }}>
39
- <FlexItem>
40
- <Tabs
41
- activeKey={activeNestedTabKey}
42
- isSecondary
43
- onSelect={handleNestedTabClick}
44
- id="nested-tabs-example-tabs-list"
45
- >
46
- <Tab eventKey={10} title={<TabTitleText>Cluster</TabTitleText>} tabContentId={`tabContent${10}`} />
47
- <Tab
48
- eventKey={11}
49
- title={<TabTitleText>Control plane</TabTitleText>}
50
- tabContentId={`tabContent${11}`}
51
- />
52
- <Tab eventKey={12} title={<TabTitleText>Operators</TabTitleText>} tabContentId={`tabContent${12}`} />
53
- <Tab
54
- eventKey={13}
55
- title={<TabTitleText>Virtualization</TabTitleText>}
56
- tabContentId={`tabContent${13}`}
57
- />
58
- </Tabs>
59
- </FlexItem>
60
- <FlexItem>
61
- <TabContent
62
- key={10}
63
- eventKey={10}
64
- id={`tabContent${10}`}
65
- activeKey={activeNestedTabKey}
66
- hidden={10 !== activeNestedTabKey}
67
- >
68
- <TabContentBody>
69
- {
70
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce in odio porttitor, feugiat risus in, feugiat arcu. Nullam euismod enim eget fringilla condimentum. Maecenas tincidunt et metus id aliquet. Integer et fermentum purus. Nulla tempor velit arcu, vitae semper purus iaculis at. Sed malesuada auctor luctus. Pellentesque et leo urna. Aliquam vitae felis congue lacus mattis fringilla. Nullam et ultricies erat, sed dignissim elit. Cras mattis pulvinar aliquam. In ac est nulla. Pellentesque fermentum nibh ac sapien porta, ut congue orci aliquam. Sed nisl est, tempor eu pharetra eget, ullamcorper ut augue. Vestibulum eleifend libero eu nulla cursus lacinia.'
71
- }
72
- </TabContentBody>
73
- </TabContent>
74
- <TabContent
75
- key={11}
76
- eventKey={11}
77
- id={`tabContent${11}`}
78
- activeKey={activeNestedTabKey}
79
- hidden={11 !== activeNestedTabKey}
80
- >
81
- <TabContentBody>Control plane panel</TabContentBody>
82
- </TabContent>
83
- <TabContent
84
- key={12}
85
- eventKey={12}
86
- id={`tabContent${12}`}
87
- activeKey={activeNestedTabKey}
88
- hidden={12 !== activeNestedTabKey}
89
- >
90
- <TabContentBody>Operators panel</TabContentBody>
91
- </TabContent>
92
- <TabContent
93
- key={13}
94
- eventKey={13}
95
- id={`tabContent${13}`}
96
- activeKey={activeNestedTabKey}
97
- hidden={13 !== activeNestedTabKey}
98
- >
99
- <TabContentBody>Virtualization panel</TabContentBody>
100
- </TabContent>
101
- </FlexItem>
102
- </Flex>
103
- </CardBody>
104
- </Card>
105
- </GridItem>
106
- <GridItem xl={4} md={6}>
107
- <Flex direction={{ default: 'column' }} className="pf-u-h-100">
108
- <FlexItem flex={{ default: 'flex_1' }}>
109
- <Card isFullHeight>
110
- <CardHeader>
111
- <Title headingLevel="h2">Title of Card</Title>
112
- </CardHeader>
113
- </Card>
114
- </FlexItem>
115
- <FlexItem flex={{ default: 'flex_1' }}>
116
- <Card isFullHeight>
117
- <CardHeader>
118
- <Title headingLevel="h2">Title of Card</Title>
119
- </CardHeader>
120
- </Card>
121
- </FlexItem>
122
- </Flex>
123
- </GridItem>
124
- </Grid>
125
- );
126
-
127
- return (
128
- <DashboardWrapper hasPageTemplateTitle>
129
- <PageSection type="tabs" isWidthLimited>
130
- <Tabs
131
- activeKey={activeTabKey}
132
- onSelect={handleTabClick}
133
- usePageInsets
134
- isBox
135
- variant="light300"
136
- id="open-tabs-example-tabs-list"
137
- >
138
- <Tab eventKey={0} title={<TabTitleText>Cluster 1</TabTitleText>} tabContentId={`tabContent${0}`} />
139
- <Tab eventKey={1} title={<TabTitleText>Cluster 2</TabTitleText>} tabContentId={`tabContent${1}`} />
140
- </Tabs>
141
- </PageSection>
142
- <PageSection isWidthLimited>
143
- <TabContent key={0} eventKey={0} id={`tabContent${0}`} activeKey={activeTabKey} hidden={0 !== activeTabKey}>
144
- <TabContentBody>{tabContent}</TabContentBody>
145
- </TabContent>
146
- <TabContent key={1} eventKey={1} id={`tabContent${1}`} activeKey={activeTabKey} hidden={1 !== activeTabKey}>
147
- <TabContentBody>Cluster 2 panel</TabContentBody>
148
- </TabContent>
149
- </PageSection>
150
- </DashboardWrapper>
151
- );
152
- };