@patternfly/react-core 5.0.0-alpha.33 → 5.0.0-alpha.35
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.
- package/CHANGELOG.md +12 -0
- package/components/Dropdown/Dropdown.d.ts +2 -0
- package/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/components/Dropdown/Dropdown.js +3 -3
- package/components/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/DropdownWithContext.d.ts.map +1 -1
- package/components/Dropdown/DropdownWithContext.js +2 -2
- package/components/Dropdown/DropdownWithContext.js.map +1 -1
- package/components/Pagination/PaginationOptionsMenu.d.ts +2 -0
- package/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
- package/components/Pagination/PaginationOptionsMenu.js +2 -2
- package/components/Pagination/PaginationOptionsMenu.js.map +1 -1
- package/components/Popover/Popover.js +1 -1
- package/components/Popover/Popover.js.map +1 -1
- package/components/Tabs/OverflowTab.js +1 -1
- package/components/Tabs/OverflowTab.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +2 -0
- package/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/components/Tooltip/Tooltip.js +3 -3
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.d.ts +2 -0
- package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js +3 -3
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/Dropdown/DropdownWithContext.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/DropdownWithContext.js +2 -2
- package/dist/esm/components/Dropdown/DropdownWithContext.js.map +1 -1
- package/dist/esm/components/Pagination/PaginationOptionsMenu.d.ts +2 -0
- package/dist/esm/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
- package/dist/esm/components/Pagination/PaginationOptionsMenu.js +2 -2
- package/dist/esm/components/Pagination/PaginationOptionsMenu.js.map +1 -1
- package/dist/esm/components/Popover/Popover.js +1 -1
- package/dist/esm/components/Popover/Popover.js.map +1 -1
- package/dist/esm/components/Tabs/OverflowTab.js +1 -1
- package/dist/esm/components/Tabs/OverflowTab.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.d.ts +2 -0
- package/dist/esm/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +3 -3
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/helpers/Popper/Popper.d.ts +6 -2
- package/dist/esm/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/esm/helpers/Popper/Popper.js +26 -8
- package/dist/esm/helpers/Popper/Popper.js.map +1 -1
- package/dist/esm/next/components/Dropdown/Dropdown.d.ts +1 -3
- package/dist/esm/next/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/next/components/Dropdown/Dropdown.js +2 -6
- package/dist/esm/next/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/next/components/Select/Select.d.ts +3 -2
- package/dist/esm/next/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/next/components/Select/Select.js +3 -7
- package/dist/esm/next/components/Select/Select.js.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.d.ts +2 -0
- package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.js +3 -3
- package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/js/components/Dropdown/DropdownWithContext.d.ts.map +1 -1
- package/dist/js/components/Dropdown/DropdownWithContext.js +2 -2
- package/dist/js/components/Dropdown/DropdownWithContext.js.map +1 -1
- package/dist/js/components/Pagination/PaginationOptionsMenu.d.ts +2 -0
- package/dist/js/components/Pagination/PaginationOptionsMenu.d.ts.map +1 -1
- package/dist/js/components/Pagination/PaginationOptionsMenu.js +2 -2
- package/dist/js/components/Pagination/PaginationOptionsMenu.js.map +1 -1
- package/dist/js/components/Popover/Popover.js +1 -1
- package/dist/js/components/Popover/Popover.js.map +1 -1
- package/dist/js/components/Tabs/OverflowTab.js +1 -1
- package/dist/js/components/Tabs/OverflowTab.js.map +1 -1
- package/dist/js/components/Tooltip/Tooltip.d.ts +2 -0
- package/dist/js/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/js/components/Tooltip/Tooltip.js +3 -3
- package/dist/js/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/js/helpers/Popper/Popper.d.ts +6 -2
- package/dist/js/helpers/Popper/Popper.d.ts.map +1 -1
- package/dist/js/helpers/Popper/Popper.js +26 -8
- package/dist/js/helpers/Popper/Popper.js.map +1 -1
- package/dist/js/next/components/Dropdown/Dropdown.d.ts +1 -3
- package/dist/js/next/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/js/next/components/Dropdown/Dropdown.js +2 -6
- package/dist/js/next/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/js/next/components/Select/Select.d.ts +3 -2
- package/dist/js/next/components/Select/Select.d.ts.map +1 -1
- package/dist/js/next/components/Select/Select.js +3 -7
- package/dist/js/next/components/Select/Select.js.map +1 -1
- package/dist/umd/react-core.min.js +2 -2
- package/helpers/Popper/Popper.d.ts +6 -2
- package/helpers/Popper/Popper.d.ts.map +1 -1
- package/helpers/Popper/Popper.js +26 -8
- package/helpers/Popper/Popper.js.map +1 -1
- package/next/components/Dropdown/Dropdown.d.ts +1 -3
- package/next/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/next/components/Dropdown/Dropdown.js +2 -6
- package/next/components/Dropdown/Dropdown.js.map +1 -1
- package/next/components/Select/Select.d.ts +3 -2
- package/next/components/Select/Select.d.ts.map +1 -1
- package/next/components/Select/Select.js +3 -7
- package/next/components/Select/Select.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Dropdown/Dropdown.tsx +5 -1
- package/src/components/Dropdown/DropdownWithContext.tsx +2 -1
- package/src/components/LabelGroup/examples/LabelGroupEditableAddDropdown.tsx +1 -8
- package/src/components/LabelGroup/examples/LabelGroupEditableAddModal.tsx +0 -2
- package/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap +1 -1
- package/src/components/Pagination/PaginationOptionsMenu.tsx +4 -1
- package/src/components/Popover/Popover.tsx +1 -1
- package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +1 -1
- package/src/components/Tabs/OverflowTab.tsx +1 -1
- package/src/components/Tabs/__tests__/OverflowTab.test.tsx +12 -20
- package/src/components/Tabs/__tests__/__snapshots__/OverflowTab.test.tsx.snap +0 -6
- package/src/components/Tooltip/Tooltip.tsx +4 -1
- package/src/demos/Card/Card.md +34 -31
- package/src/demos/ComposableMenu/examples/ComposableActionsMenu.tsx +1 -15
- package/src/demos/ComposableMenu/examples/ComposableApplicationLauncher.tsx +1 -10
- package/src/demos/ComposableMenu/examples/ComposableContextSelector.tsx +2 -21
- package/src/demos/ComposableMenu/examples/ComposableDateSelect.tsx +1 -10
- package/src/demos/ComposableMenu/examples/ComposableDrilldownMenu.tsx +1 -15
- package/src/demos/ComposableMenu/examples/ComposableDropdwnVariants.tsx +1 -8
- package/src/demos/ComposableMenu/examples/ComposableFlyout.tsx +1 -10
- package/src/demos/ComposableMenu/examples/ComposableTreeViewMenu.tsx +1 -10
- package/src/demos/Filters/examples/FilterAttributeSearch.tsx +0 -1
- package/src/demos/Filters/examples/FilterCheckboxSelect.tsx +0 -1
- package/src/demos/Filters/examples/FilterFaceted.tsx +0 -1
- package/src/demos/Filters/examples/FilterMixedSelectGroup.tsx +0 -1
- package/src/demos/Filters/examples/FilterSameSelectGroup.tsx +0 -1
- package/src/demos/Filters/examples/FilterSearchInput.tsx +0 -1
- package/src/demos/Filters/examples/FilterSingleSelect.tsx +0 -1
- package/src/helpers/Popper/Popper.tsx +39 -10
- package/src/next/components/Dropdown/Dropdown.tsx +1 -9
- package/src/next/components/Dropdown/__tests__/Dropdown.test.tsx +18 -38
- package/src/next/components/Dropdown/examples/DropdownWithDescriptions.tsx +3 -4
- package/src/next/components/Dropdown/examples/DropdownWithKebabToggle.tsx +3 -4
- package/src/next/components/Select/Select.tsx +5 -9
package/src/demos/Card/Card.md
CHANGED
|
@@ -560,36 +560,6 @@ class CardViewBasic extends React.Component {
|
|
|
560
560
|
swaggerIcon
|
|
561
561
|
};
|
|
562
562
|
|
|
563
|
-
const headerActions = (
|
|
564
|
-
<>
|
|
565
|
-
<Dropdown
|
|
566
|
-
isPlain
|
|
567
|
-
position="right"
|
|
568
|
-
onSelect={(e) => this.onCardKebabDropdownSelect(key, e)}
|
|
569
|
-
toggle={
|
|
570
|
-
<KebabToggle
|
|
571
|
-
onToggle={(_event, isCardKebabDropdownOpen) =>
|
|
572
|
-
this.onCardKebabDropdownToggle(key, isCardKebabDropdownOpen)
|
|
573
|
-
}
|
|
574
|
-
/>
|
|
575
|
-
}
|
|
576
|
-
isOpen={this.state[key]}
|
|
577
|
-
dropdownItems={[
|
|
578
|
-
<DropdownItem key="trash" onClick={this.deleteItem(product)} position="right">
|
|
579
|
-
<TrashIcon />
|
|
580
|
-
Delete
|
|
581
|
-
</DropdownItem>
|
|
582
|
-
]}
|
|
583
|
-
/>
|
|
584
|
-
<Checkbox
|
|
585
|
-
checked={isChecked}
|
|
586
|
-
value={product.id}
|
|
587
|
-
isChecked={selectedItems.includes(product.id)}
|
|
588
|
-
aria-label="card checkbox example"
|
|
589
|
-
id={`check-${product.id}`}
|
|
590
|
-
/>
|
|
591
|
-
</>
|
|
592
|
-
);
|
|
593
563
|
return (
|
|
594
564
|
<React.Fragment>
|
|
595
565
|
<DashboardWrapper mainContainerId="main-content-card-view-default-nav" breadcrumb={null}>
|
|
@@ -631,7 +601,40 @@ class CardViewBasic extends React.Component {
|
|
|
631
601
|
onSelectableInputChange={() => this.onClick(product.id)}
|
|
632
602
|
isSelected={selectedItems.includes(product.id)}
|
|
633
603
|
>
|
|
634
|
-
<CardHeader
|
|
604
|
+
<CardHeader
|
|
605
|
+
actions={{
|
|
606
|
+
actions: (
|
|
607
|
+
<>
|
|
608
|
+
<Dropdown
|
|
609
|
+
isPlain
|
|
610
|
+
position="right"
|
|
611
|
+
onSelect={(e) => this.onCardKebabDropdownSelect(key, e)}
|
|
612
|
+
toggle={
|
|
613
|
+
<KebabToggle
|
|
614
|
+
onToggle={(_event, isCardKebabDropdownOpen) =>
|
|
615
|
+
this.onCardKebabDropdownToggle(key, isCardKebabDropdownOpen)
|
|
616
|
+
}
|
|
617
|
+
/>
|
|
618
|
+
}
|
|
619
|
+
isOpen={this.state[key]}
|
|
620
|
+
dropdownItems={[
|
|
621
|
+
<DropdownItem key="trash" onClick={this.deleteItem(product)} position="right">
|
|
622
|
+
<TrashIcon />
|
|
623
|
+
Delete
|
|
624
|
+
</DropdownItem>
|
|
625
|
+
]}
|
|
626
|
+
/>
|
|
627
|
+
<Checkbox
|
|
628
|
+
checked={isChecked}
|
|
629
|
+
value={product.id}
|
|
630
|
+
isChecked={selectedItems.includes(product.id)}
|
|
631
|
+
aria-label="card checkbox example"
|
|
632
|
+
id={`check-${product.id}`}
|
|
633
|
+
/>
|
|
634
|
+
</>
|
|
635
|
+
)
|
|
636
|
+
}}
|
|
637
|
+
>
|
|
635
638
|
<img src={icons[product.icon]} alt={`${product.name} icon`} style={{ maxWidth: '60px' }} />
|
|
636
639
|
</CardHeader>
|
|
637
640
|
<CardTitle>{product.name}</CardTitle>
|
|
@@ -69,11 +69,6 @@ export const ComposableActionsMenu: React.FunctionComponent = () => {
|
|
|
69
69
|
// eslint-disable-next-line no-console
|
|
70
70
|
onActionClick={(event, itemId, actionId) => console.log(`clicked on ${itemId} - ${actionId}`)}
|
|
71
71
|
onSelect={onSelect}
|
|
72
|
-
style={
|
|
73
|
-
{
|
|
74
|
-
'--pf-c-menu--Width': '300px'
|
|
75
|
-
} as React.CSSProperties
|
|
76
|
-
}
|
|
77
72
|
>
|
|
78
73
|
<MenuGroup label="Actions">
|
|
79
74
|
<MenuList>
|
|
@@ -122,14 +117,5 @@ export const ComposableActionsMenu: React.FunctionComponent = () => {
|
|
|
122
117
|
</Menu>
|
|
123
118
|
);
|
|
124
119
|
|
|
125
|
-
return
|
|
126
|
-
<Popper
|
|
127
|
-
trigger={toggle}
|
|
128
|
-
triggerRef={toggleRef}
|
|
129
|
-
popper={menu}
|
|
130
|
-
popperRef={menuRef}
|
|
131
|
-
isVisible={isOpen}
|
|
132
|
-
popperMatchesTriggerWidth={false}
|
|
133
|
-
/>
|
|
134
|
-
);
|
|
120
|
+
return <Popper trigger={toggle} triggerRef={toggleRef} popper={menu} popperRef={menuRef} isVisible={isOpen} />;
|
|
135
121
|
};
|
|
@@ -265,14 +265,5 @@ export const ComposableApplicationLauncher: React.FunctionComponent = () => {
|
|
|
265
265
|
</MenuContent>
|
|
266
266
|
</Menu>
|
|
267
267
|
);
|
|
268
|
-
return
|
|
269
|
-
<Popper
|
|
270
|
-
trigger={toggle}
|
|
271
|
-
triggerRef={toggleRef}
|
|
272
|
-
popper={menu}
|
|
273
|
-
popperRef={menuRef}
|
|
274
|
-
isVisible={isOpen}
|
|
275
|
-
popperMatchesTriggerWidth={false}
|
|
276
|
-
/>
|
|
277
|
-
);
|
|
268
|
+
return <Popper trigger={toggle} triggerRef={toggleRef} popper={menu} popperRef={menuRef} isVisible={isOpen} />;
|
|
278
269
|
};
|
|
@@ -146,17 +146,7 @@ export const ComposableContextSelector: React.FunctionComponent = () => {
|
|
|
146
146
|
};
|
|
147
147
|
|
|
148
148
|
const menu = (
|
|
149
|
-
<Menu
|
|
150
|
-
ref={menuRef}
|
|
151
|
-
id="context-selector"
|
|
152
|
-
onSelect={onSelect}
|
|
153
|
-
isScrollable
|
|
154
|
-
style={
|
|
155
|
-
{
|
|
156
|
-
'--pf-c-menu--Width': '300px'
|
|
157
|
-
} as React.CSSProperties
|
|
158
|
-
}
|
|
159
|
-
>
|
|
149
|
+
<Menu ref={menuRef} id="context-selector" onSelect={onSelect} isScrollable>
|
|
160
150
|
<MenuInput>
|
|
161
151
|
<InputGroup>
|
|
162
152
|
<SearchInput
|
|
@@ -198,14 +188,5 @@ export const ComposableContextSelector: React.FunctionComponent = () => {
|
|
|
198
188
|
</MenuFooter>
|
|
199
189
|
</Menu>
|
|
200
190
|
);
|
|
201
|
-
return
|
|
202
|
-
<Popper
|
|
203
|
-
trigger={toggle}
|
|
204
|
-
triggerRef={toggleRef}
|
|
205
|
-
popper={menu}
|
|
206
|
-
popperRef={menuRef}
|
|
207
|
-
isVisible={isOpen}
|
|
208
|
-
popperMatchesTriggerWidth={false}
|
|
209
|
-
/>
|
|
210
|
-
);
|
|
191
|
+
return <Popper trigger={toggle} triggerRef={toggleRef} popper={menu} popperRef={menuRef} isVisible={isOpen} />;
|
|
211
192
|
};
|
|
@@ -109,14 +109,5 @@ export const ComposableSimpleDropdown: React.FunctionComponent = () => {
|
|
|
109
109
|
</MenuContent>
|
|
110
110
|
</Menu>
|
|
111
111
|
);
|
|
112
|
-
return
|
|
113
|
-
<Popper
|
|
114
|
-
trigger={toggle}
|
|
115
|
-
triggerRef={toggleRef}
|
|
116
|
-
popper={menu}
|
|
117
|
-
popperRef={menuRef}
|
|
118
|
-
isVisible={isOpen}
|
|
119
|
-
popperMatchesTriggerWidth={false}
|
|
120
|
-
/>
|
|
121
|
-
);
|
|
112
|
+
return <Popper trigger={toggle} triggerRef={toggleRef} popper={menu} popperRef={menuRef} isVisible={isOpen} />;
|
|
122
113
|
};
|
|
@@ -107,11 +107,6 @@ export const ComposableDrilldownMenu: React.FunctionComponent = () => {
|
|
|
107
107
|
onDrillOut={drillOut}
|
|
108
108
|
onGetMenuHeight={setHeight}
|
|
109
109
|
ref={menuRef}
|
|
110
|
-
style={
|
|
111
|
-
{
|
|
112
|
-
'--pf-c-menu--Width': '300px'
|
|
113
|
-
} as React.CSSProperties
|
|
114
|
-
}
|
|
115
110
|
>
|
|
116
111
|
<MenuContent menuHeight={`${menuHeights[activeMenu]}px`}>
|
|
117
112
|
<MenuList>
|
|
@@ -247,14 +242,5 @@ export const ComposableDrilldownMenu: React.FunctionComponent = () => {
|
|
|
247
242
|
</MenuContent>
|
|
248
243
|
</Menu>
|
|
249
244
|
);
|
|
250
|
-
return
|
|
251
|
-
<Popper
|
|
252
|
-
trigger={toggle}
|
|
253
|
-
triggerRef={toggleRef}
|
|
254
|
-
popper={menu}
|
|
255
|
-
popperRef={menuRef}
|
|
256
|
-
isVisible={isOpen}
|
|
257
|
-
popperMatchesTriggerWidth={false}
|
|
258
|
-
/>
|
|
259
|
-
);
|
|
245
|
+
return <Popper trigger={toggle} triggerRef={toggleRef} popper={menu} popperRef={menuRef} isVisible={isOpen} />;
|
|
260
246
|
};
|
|
@@ -226,14 +226,7 @@ export const ComposableDropdwnVariants: React.FunctionComponent = () => {
|
|
|
226
226
|
/>
|
|
227
227
|
</ToggleGroup>
|
|
228
228
|
<br />
|
|
229
|
-
<Popper
|
|
230
|
-
trigger={buildToggle()}
|
|
231
|
-
triggerRef={toggleRef}
|
|
232
|
-
popper={menu}
|
|
233
|
-
popperRef={menuRef}
|
|
234
|
-
isVisible={isOpen}
|
|
235
|
-
popperMatchesTriggerWidth={['image', 'checkbox'].includes(toggleSelected)}
|
|
236
|
-
/>
|
|
229
|
+
<Popper trigger={buildToggle()} triggerRef={toggleRef} popper={menu} popperRef={menuRef} isVisible={isOpen} />
|
|
237
230
|
</React.Fragment>
|
|
238
231
|
);
|
|
239
232
|
};
|
|
@@ -100,14 +100,5 @@ export const ComposableFlyout: React.FunctionComponent = () => {
|
|
|
100
100
|
</Menu>
|
|
101
101
|
);
|
|
102
102
|
|
|
103
|
-
return
|
|
104
|
-
<Popper
|
|
105
|
-
trigger={toggle}
|
|
106
|
-
triggerRef={toggleRef}
|
|
107
|
-
popper={menu}
|
|
108
|
-
popperRef={menuRef}
|
|
109
|
-
isVisible={isOpen}
|
|
110
|
-
popperMatchesTriggerWidth={false}
|
|
111
|
-
/>
|
|
112
|
-
);
|
|
103
|
+
return <Popper trigger={toggle} triggerRef={toggleRef} popper={menu} popperRef={menuRef} isVisible={isOpen} />;
|
|
113
104
|
};
|
|
@@ -267,14 +267,5 @@ export const ComposableTreeViewMenu: React.FunctionComponent = () => {
|
|
|
267
267
|
</PanelMain>
|
|
268
268
|
</Panel>
|
|
269
269
|
);
|
|
270
|
-
return
|
|
271
|
-
<Popper
|
|
272
|
-
trigger={toggle}
|
|
273
|
-
triggerRef={toggleRef}
|
|
274
|
-
popper={menu}
|
|
275
|
-
popperRef={menuRef}
|
|
276
|
-
isVisible={isOpen}
|
|
277
|
-
popperMatchesTriggerWidth={false}
|
|
278
|
-
/>
|
|
279
|
-
);
|
|
270
|
+
return <Popper trigger={toggle} triggerRef={toggleRef} popper={menu} popperRef={menuRef} isVisible={isOpen} />;
|
|
280
271
|
};
|
|
@@ -256,7 +256,6 @@ export const FilterAttributeSearch: React.FunctionComponent = () => {
|
|
|
256
256
|
popperRef={bulkSelectMenuRef}
|
|
257
257
|
appendTo={bulkSelectContainerRef.current || undefined}
|
|
258
258
|
isVisible={isBulkSelectOpen}
|
|
259
|
-
popperMatchesTriggerWidth={false}
|
|
260
259
|
/>
|
|
261
260
|
</div>
|
|
262
261
|
);
|
|
@@ -231,7 +231,6 @@ export const FilterCheckboxSelect: React.FunctionComponent = () => {
|
|
|
231
231
|
popperRef={bulkSelectMenuRef}
|
|
232
232
|
appendTo={bulkSelectContainerRef.current || undefined}
|
|
233
233
|
isVisible={isBulkSelectOpen}
|
|
234
|
-
popperMatchesTriggerWidth={false}
|
|
235
234
|
/>
|
|
236
235
|
</div>
|
|
237
236
|
);
|
|
@@ -236,7 +236,6 @@ export const FilterMixedSelectGroup: React.FunctionComponent = () => {
|
|
|
236
236
|
popperRef={bulkSelectMenuRef}
|
|
237
237
|
appendTo={bulkSelectContainerRef.current || undefined}
|
|
238
238
|
isVisible={isBulkSelectOpen}
|
|
239
|
-
popperMatchesTriggerWidth={false}
|
|
240
239
|
/>
|
|
241
240
|
</div>
|
|
242
241
|
);
|
|
@@ -237,7 +237,6 @@ export const FilterSameSelectGroup: React.FunctionComponent = () => {
|
|
|
237
237
|
popperRef={bulkSelectMenuRef}
|
|
238
238
|
appendTo={bulkSelectContainerRef.current || undefined}
|
|
239
239
|
isVisible={isBulkSelectOpen}
|
|
240
|
-
popperMatchesTriggerWidth={false}
|
|
241
240
|
/>
|
|
242
241
|
</div>
|
|
243
242
|
);
|
|
@@ -240,7 +240,6 @@ export const FilterSearchInput: React.FunctionComponent = () => {
|
|
|
240
240
|
popperRef={bulkSelectMenuRef}
|
|
241
241
|
appendTo={bulkSelectContainerRef.current || undefined}
|
|
242
242
|
isVisible={isBulkSelectOpen}
|
|
243
|
-
popperMatchesTriggerWidth={false}
|
|
244
243
|
/>
|
|
245
244
|
</div>
|
|
246
245
|
);
|
|
@@ -226,7 +226,6 @@ export const FilterSingleSelect: React.FunctionComponent = () => {
|
|
|
226
226
|
popperRef={bulkSelectMenuRef}
|
|
227
227
|
appendTo={bulkSelectContainerRef.current || undefined}
|
|
228
228
|
isVisible={isBulkSelectOpen}
|
|
229
|
-
popperMatchesTriggerWidth={false}
|
|
230
229
|
/>
|
|
231
230
|
</div>
|
|
232
231
|
);
|
|
@@ -62,14 +62,18 @@ export interface PopperProps {
|
|
|
62
62
|
* Passing this prop will remove the wrapper div element from the popper.
|
|
63
63
|
*/
|
|
64
64
|
popperRef?: HTMLElement | (() => HTMLElement) | React.RefObject<any>;
|
|
65
|
-
/** True to set the width of the popper element to the trigger element's width */
|
|
66
|
-
popperMatchesTriggerWidth?: boolean;
|
|
67
65
|
/** popper direction */
|
|
68
66
|
direction?: 'up' | 'down';
|
|
69
67
|
/** popper position */
|
|
70
68
|
position?: 'right' | 'left' | 'center';
|
|
71
69
|
/** Instead of direction and position can set the placement of the popper */
|
|
72
70
|
placement?: Placement;
|
|
71
|
+
/** Custsom width of the popper. If the value is "trigger", it will set the width to the trigger element's width */
|
|
72
|
+
width?: string | 'trigger';
|
|
73
|
+
/** Minimum width of the popper. If the value is "trigger", it will set the min width to the trigger element's width */
|
|
74
|
+
minWidth?: string | 'trigger';
|
|
75
|
+
/** Maximum width of the popper. If the value is "trigger", it will set the max width to the trigger element's width */
|
|
76
|
+
maxWidth?: string | 'trigger';
|
|
73
77
|
/** The container to append the popper to. Defaults to 'inline'. */
|
|
74
78
|
appendTo?: HTMLElement | (() => HTMLElement) | 'inline';
|
|
75
79
|
/** z-index of the popper element */
|
|
@@ -147,10 +151,12 @@ export interface PopperProps {
|
|
|
147
151
|
export const Popper: React.FunctionComponent<PopperProps> = ({
|
|
148
152
|
trigger,
|
|
149
153
|
popper,
|
|
150
|
-
popperMatchesTriggerWidth = true,
|
|
151
154
|
direction = 'down',
|
|
152
155
|
position = 'left',
|
|
153
156
|
placement,
|
|
157
|
+
width,
|
|
158
|
+
minWidth = 'trigger',
|
|
159
|
+
maxWidth,
|
|
154
160
|
appendTo = 'inline',
|
|
155
161
|
zIndex = 9999,
|
|
156
162
|
isVisible = true,
|
|
@@ -279,21 +285,44 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
|
|
|
279
285
|
() => getOppositePlacement(getPlacement()),
|
|
280
286
|
[direction, position, placement]
|
|
281
287
|
);
|
|
282
|
-
|
|
288
|
+
|
|
289
|
+
const widthMods: Modifier<'widthMods', {}> = React.useMemo(
|
|
283
290
|
() => ({
|
|
284
|
-
name: '
|
|
285
|
-
enabled:
|
|
291
|
+
name: 'widthMods',
|
|
292
|
+
enabled: width !== undefined || minWidth !== undefined || maxWidth !== undefined,
|
|
286
293
|
phase: 'beforeWrite',
|
|
287
294
|
requires: ['computeStyles'],
|
|
288
295
|
fn: ({ state }) => {
|
|
289
|
-
|
|
296
|
+
const triggerWidth = state.rects.reference.width;
|
|
297
|
+
if (width) {
|
|
298
|
+
state.styles.popper.width = width === 'trigger' ? `${triggerWidth}px` : width;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (minWidth) {
|
|
302
|
+
state.styles.popper.minWidth = minWidth === 'trigger' ? `${triggerWidth}px` : minWidth;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (maxWidth) {
|
|
306
|
+
state.styles.popper.maxWidth = maxWidth === 'trigger' ? `${triggerWidth}px` : maxWidth;
|
|
307
|
+
}
|
|
290
308
|
},
|
|
291
309
|
effect: ({ state }) => {
|
|
292
|
-
|
|
310
|
+
const triggerWidth = (state.elements.reference as HTMLElement).offsetWidth;
|
|
311
|
+
if (width) {
|
|
312
|
+
state.elements.popper.style.width = width === 'trigger' ? `${triggerWidth}px` : width;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if (minWidth) {
|
|
316
|
+
state.elements.popper.style.minWidth = minWidth === 'trigger' ? `${triggerWidth}px` : minWidth;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
if (maxWidth) {
|
|
320
|
+
state.elements.popper.style.maxWidth = maxWidth === 'trigger' ? `${triggerWidth}px` : maxWidth;
|
|
321
|
+
}
|
|
293
322
|
return () => {};
|
|
294
323
|
}
|
|
295
324
|
}),
|
|
296
|
-
[
|
|
325
|
+
[width, minWidth, maxWidth]
|
|
297
326
|
);
|
|
298
327
|
|
|
299
328
|
const {
|
|
@@ -326,7 +355,7 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
|
|
|
326
355
|
fallbackPlacements: flipBehavior === 'flip' ? [getOppositePlacementMemo] : flipBehavior
|
|
327
356
|
}
|
|
328
357
|
},
|
|
329
|
-
|
|
358
|
+
widthMods
|
|
330
359
|
]
|
|
331
360
|
});
|
|
332
361
|
|
|
@@ -22,8 +22,6 @@ export interface DropdownProps extends MenuProps, OUIAProps {
|
|
|
22
22
|
isPlain?: boolean;
|
|
23
23
|
/** Indicates if the menu should be scrollable. */
|
|
24
24
|
isScrollable?: boolean;
|
|
25
|
-
/** Min width of the menu. */
|
|
26
|
-
minWidth?: string;
|
|
27
25
|
/** @hide Forwarded ref */
|
|
28
26
|
innerRef?: React.Ref<any>;
|
|
29
27
|
/** Value to overwrite the randomly generated data-ouia-component-id.*/
|
|
@@ -33,7 +31,7 @@ export interface DropdownProps extends MenuProps, OUIAProps {
|
|
|
33
31
|
/** z-index of the dropdown menu */
|
|
34
32
|
zIndex?: number;
|
|
35
33
|
/** Additional properties to pass to the Popper */
|
|
36
|
-
popperProps?: PopperProps
|
|
34
|
+
popperProps?: Partial<PopperProps>;
|
|
37
35
|
}
|
|
38
36
|
|
|
39
37
|
const DropdownBase: React.FunctionComponent<DropdownProps> = ({
|
|
@@ -45,7 +43,6 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
|
|
|
45
43
|
onOpenChange,
|
|
46
44
|
isPlain,
|
|
47
45
|
isScrollable,
|
|
48
|
-
minWidth,
|
|
49
46
|
innerRef,
|
|
50
47
|
ouiaId,
|
|
51
48
|
ouiaSafe = true,
|
|
@@ -106,11 +103,6 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
|
|
|
106
103
|
onSelect={(event, itemId) => onSelect && onSelect(event, itemId)}
|
|
107
104
|
isPlain={isPlain}
|
|
108
105
|
isScrollable={isScrollable}
|
|
109
|
-
{...(minWidth && {
|
|
110
|
-
style: {
|
|
111
|
-
'--pf-c-menu--MinWidth': minWidth
|
|
112
|
-
} as React.CSSProperties
|
|
113
|
-
})}
|
|
114
106
|
{...props}
|
|
115
107
|
>
|
|
116
108
|
<MenuContent>{children}</MenuContent>
|
|
@@ -14,7 +14,7 @@ const dropdownChildren = <div>Dropdown children</div>;
|
|
|
14
14
|
test('renders dropdown', () => {
|
|
15
15
|
render(
|
|
16
16
|
<div data-testid="dropdown">
|
|
17
|
-
<Dropdown toggle={toggleRef => toggle(toggleRef)}>{dropdownChildren}</Dropdown>
|
|
17
|
+
<Dropdown toggle={(toggleRef) => toggle(toggleRef)}>{dropdownChildren}</Dropdown>
|
|
18
18
|
</div>
|
|
19
19
|
);
|
|
20
20
|
|
|
@@ -22,20 +22,20 @@ test('renders dropdown', () => {
|
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
test('passes children', () => {
|
|
25
|
-
render(<Dropdown toggle={toggleRef => toggle(toggleRef)}>{dropdownChildren}</Dropdown>);
|
|
25
|
+
render(<Dropdown toggle={(toggleRef) => toggle(toggleRef)}>{dropdownChildren}</Dropdown>);
|
|
26
26
|
|
|
27
27
|
expect(screen.getByText('Dropdown children')).toBeVisible();
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
test('renders passed toggle element', () => {
|
|
31
|
-
render(<Dropdown toggle={toggleRef => toggle(toggleRef)}>{dropdownChildren}</Dropdown>);
|
|
31
|
+
render(<Dropdown toggle={(toggleRef) => toggle(toggleRef)}>{dropdownChildren}</Dropdown>);
|
|
32
32
|
|
|
33
33
|
expect(screen.getByRole('button', { name: 'Dropdown' })).toBeVisible();
|
|
34
34
|
});
|
|
35
35
|
|
|
36
36
|
test('passes no class name by default', () => {
|
|
37
37
|
render(
|
|
38
|
-
<Dropdown isOpen={true} toggle={toggleRef => toggle(toggleRef)}>
|
|
38
|
+
<Dropdown isOpen={true} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
39
39
|
{dropdownChildren}
|
|
40
40
|
</Dropdown>
|
|
41
41
|
);
|
|
@@ -45,7 +45,7 @@ test('passes no class name by default', () => {
|
|
|
45
45
|
|
|
46
46
|
test('passes custom class name', () => {
|
|
47
47
|
render(
|
|
48
|
-
<Dropdown className="custom-class" isOpen={true} toggle={toggleRef => toggle(toggleRef)}>
|
|
48
|
+
<Dropdown className="custom-class" isOpen={true} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
49
49
|
{dropdownChildren}
|
|
50
50
|
</Dropdown>
|
|
51
51
|
);
|
|
@@ -55,7 +55,7 @@ test('passes custom class name', () => {
|
|
|
55
55
|
|
|
56
56
|
test('does not pass isPlain to Menu by default', () => {
|
|
57
57
|
render(
|
|
58
|
-
<Dropdown isOpen={true} toggle={toggleRef => toggle(toggleRef)}>
|
|
58
|
+
<Dropdown isOpen={true} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
59
59
|
{dropdownChildren}
|
|
60
60
|
</Dropdown>
|
|
61
61
|
);
|
|
@@ -65,7 +65,7 @@ test('does not pass isPlain to Menu by default', () => {
|
|
|
65
65
|
|
|
66
66
|
test('passes isPlain to Menu', () => {
|
|
67
67
|
render(
|
|
68
|
-
<Dropdown isPlain isOpen={true} toggle={toggleRef => toggle(toggleRef)}>
|
|
68
|
+
<Dropdown isPlain isOpen={true} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
69
69
|
{dropdownChildren}
|
|
70
70
|
</Dropdown>
|
|
71
71
|
);
|
|
@@ -75,7 +75,7 @@ test('passes isPlain to Menu', () => {
|
|
|
75
75
|
|
|
76
76
|
test('does not pass isScrollable to Menu by default', () => {
|
|
77
77
|
render(
|
|
78
|
-
<Dropdown isOpen={true} toggle={toggleRef => toggle(toggleRef)}>
|
|
78
|
+
<Dropdown isOpen={true} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
79
79
|
{dropdownChildren}
|
|
80
80
|
</Dropdown>
|
|
81
81
|
);
|
|
@@ -85,7 +85,7 @@ test('does not pass isScrollable to Menu by default', () => {
|
|
|
85
85
|
|
|
86
86
|
test('passes isScrollable to Menu', () => {
|
|
87
87
|
render(
|
|
88
|
-
<Dropdown isScrollable isOpen={true} toggle={toggleRef => toggle(toggleRef)}>
|
|
88
|
+
<Dropdown isScrollable isOpen={true} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
89
89
|
{dropdownChildren}
|
|
90
90
|
</Dropdown>
|
|
91
91
|
);
|
|
@@ -93,35 +93,15 @@ test('passes isScrollable to Menu', () => {
|
|
|
93
93
|
expect(screen.getByText('isScrollable: true')).toBeVisible();
|
|
94
94
|
});
|
|
95
95
|
|
|
96
|
-
test('does not pass minWidth to Menu by default', () => {
|
|
97
|
-
render(
|
|
98
|
-
<Dropdown isOpen={true} toggle={toggleRef => toggle(toggleRef)}>
|
|
99
|
-
{dropdownChildren}
|
|
100
|
-
</Dropdown>
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
expect(screen.getByText('minWidth: undefined')).toBeVisible();
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
test('passes minWidth to Menu', () => {
|
|
107
|
-
render(
|
|
108
|
-
<Dropdown minWidth="100px" isOpen={true} toggle={toggleRef => toggle(toggleRef)}>
|
|
109
|
-
{dropdownChildren}
|
|
110
|
-
</Dropdown>
|
|
111
|
-
);
|
|
112
|
-
|
|
113
|
-
expect(screen.getByText('minWidth: 100px')).toBeVisible();
|
|
114
|
-
});
|
|
115
|
-
|
|
116
96
|
test('passes default zIndex to popper', () => {
|
|
117
|
-
render(<Dropdown toggle={toggleRef => toggle(toggleRef)}>{dropdownChildren}</Dropdown>);
|
|
97
|
+
render(<Dropdown toggle={(toggleRef) => toggle(toggleRef)}>{dropdownChildren}</Dropdown>);
|
|
118
98
|
|
|
119
99
|
expect(screen.getByText('zIndex: 9999')).toBeVisible();
|
|
120
100
|
});
|
|
121
101
|
|
|
122
102
|
test('passes zIndex to popper', () => {
|
|
123
103
|
render(
|
|
124
|
-
<Dropdown zIndex={100} toggle={toggleRef => toggle(toggleRef)}>
|
|
104
|
+
<Dropdown zIndex={100} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
125
105
|
{dropdownChildren}
|
|
126
106
|
</Dropdown>
|
|
127
107
|
);
|
|
@@ -130,14 +110,14 @@ test('passes zIndex to popper', () => {
|
|
|
130
110
|
});
|
|
131
111
|
|
|
132
112
|
test('does not pass isOpen to popper by default', () => {
|
|
133
|
-
render(<Dropdown toggle={toggleRef => toggle(toggleRef)}>{dropdownChildren}</Dropdown>);
|
|
113
|
+
render(<Dropdown toggle={(toggleRef) => toggle(toggleRef)}>{dropdownChildren}</Dropdown>);
|
|
134
114
|
|
|
135
115
|
expect(screen.getByText('isOpen: undefined')).toBeVisible();
|
|
136
116
|
});
|
|
137
117
|
|
|
138
118
|
test('passes isOpen to popper', () => {
|
|
139
119
|
render(
|
|
140
|
-
<Dropdown isOpen toggle={toggleRef => toggle(toggleRef)}>
|
|
120
|
+
<Dropdown isOpen toggle={(toggleRef) => toggle(toggleRef)}>
|
|
141
121
|
{dropdownChildren}
|
|
142
122
|
</Dropdown>
|
|
143
123
|
);
|
|
@@ -154,7 +134,7 @@ test('passes onSelect callback', async () => {
|
|
|
154
134
|
|
|
155
135
|
const onSelect = jest.fn();
|
|
156
136
|
render(
|
|
157
|
-
<Dropdown onSelect={onSelect} toggle={toggleRef => toggle(toggleRef)}>
|
|
137
|
+
<Dropdown onSelect={onSelect} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
158
138
|
{dropdownChildren}
|
|
159
139
|
</Dropdown>
|
|
160
140
|
);
|
|
@@ -170,7 +150,7 @@ test('onOpenChange is called when passed and user clicks outside of dropdown', a
|
|
|
170
150
|
const onOpenChange = jest.fn();
|
|
171
151
|
|
|
172
152
|
render(
|
|
173
|
-
<Dropdown isOpen={true} onOpenChange={onOpenChange} toggle={toggleRef => toggle(toggleRef)}>
|
|
153
|
+
<Dropdown isOpen={true} onOpenChange={onOpenChange} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
174
154
|
{dropdownChildren}
|
|
175
155
|
</Dropdown>
|
|
176
156
|
);
|
|
@@ -187,7 +167,7 @@ test('onOpenChange is called when passed and user presses tab key', async () =>
|
|
|
187
167
|
const onOpenChange = jest.fn();
|
|
188
168
|
|
|
189
169
|
render(
|
|
190
|
-
<Dropdown isOpen={true} onOpenChange={onOpenChange} toggle={toggleRef => toggle(toggleRef)}>
|
|
170
|
+
<Dropdown isOpen={true} onOpenChange={onOpenChange} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
191
171
|
{dropdownChildren}
|
|
192
172
|
</Dropdown>
|
|
193
173
|
);
|
|
@@ -205,7 +185,7 @@ test('onOpenChange is called when passed and user presses esc key', async () =>
|
|
|
205
185
|
const onOpenChange = jest.fn();
|
|
206
186
|
|
|
207
187
|
render(
|
|
208
|
-
<Dropdown isOpen={true} onOpenChange={onOpenChange} toggle={toggleRef => toggle(toggleRef)}>
|
|
188
|
+
<Dropdown isOpen={true} onOpenChange={onOpenChange} toggle={(toggleRef) => toggle(toggleRef)}>
|
|
209
189
|
{dropdownChildren}
|
|
210
190
|
</Dropdown>
|
|
211
191
|
);
|
|
@@ -226,7 +206,7 @@ test('match snapshot', () => {
|
|
|
226
206
|
isScrollable
|
|
227
207
|
isPlain
|
|
228
208
|
className={'customClass'}
|
|
229
|
-
toggle={toggleRef => toggle(toggleRef)}
|
|
209
|
+
toggle={(toggleRef) => toggle(toggleRef)}
|
|
230
210
|
>
|
|
231
211
|
{dropdownChildren}
|
|
232
212
|
</Dropdown>
|
|
@@ -19,9 +19,8 @@ export const DropdownWithDescriptions: React.FunctionComponent = () => {
|
|
|
19
19
|
<Dropdown
|
|
20
20
|
isOpen={isOpen}
|
|
21
21
|
onSelect={onSelect}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
toggle={toggleRef => (
|
|
22
|
+
onOpenChange={(isOpen) => setIsOpen(isOpen)}
|
|
23
|
+
toggle={(toggleRef) => (
|
|
25
24
|
<MenuToggle ref={toggleRef} isFullWidth onClick={onToggleClick} isExpanded={isOpen}>
|
|
26
25
|
Dropdown
|
|
27
26
|
</MenuToggle>
|
|
@@ -36,7 +35,7 @@ export const DropdownWithDescriptions: React.FunctionComponent = () => {
|
|
|
36
35
|
key="action"
|
|
37
36
|
description="This is a very long description that describes the menu item"
|
|
38
37
|
to="#default-link2"
|
|
39
|
-
onClick={ev => ev.preventDefault()}
|
|
38
|
+
onClick={(ev) => ev.preventDefault()}
|
|
40
39
|
>
|
|
41
40
|
Action
|
|
42
41
|
</DropdownItem>
|
|
@@ -20,9 +20,8 @@ export const DropdownWithKebab: React.FunctionComponent = () => {
|
|
|
20
20
|
<Dropdown
|
|
21
21
|
isOpen={isOpen}
|
|
22
22
|
onSelect={onSelect}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
toggle={toggleRef => (
|
|
23
|
+
onOpenChange={(isOpen) => setIsOpen(isOpen)}
|
|
24
|
+
toggle={(toggleRef) => (
|
|
26
25
|
<MenuToggle
|
|
27
26
|
ref={toggleRef}
|
|
28
27
|
aria-label="kebab dropdown toggle"
|
|
@@ -38,7 +37,7 @@ export const DropdownWithKebab: React.FunctionComponent = () => {
|
|
|
38
37
|
<DropdownItem itemId={0} key="link">
|
|
39
38
|
Link
|
|
40
39
|
</DropdownItem>
|
|
41
|
-
<DropdownItem itemId={1} key="action" to="#default-link2" onClick={ev => ev.preventDefault()}>
|
|
40
|
+
<DropdownItem itemId={1} key="action" to="#default-link2" onClick={(ev) => ev.preventDefault()}>
|
|
42
41
|
Action
|
|
43
42
|
</DropdownItem>
|
|
44
43
|
<DropdownItem itemId={2} isDisabled key="disabled link">
|