@patternfly/react-core 5.0.0-alpha.87 → 5.0.0-alpha.89
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 +11 -0
- package/dist/esm/components/AboutModal/package.json +1 -1
- package/dist/esm/components/Accordion/package.json +1 -1
- package/dist/esm/components/ActionList/package.json +1 -1
- package/dist/esm/components/Alert/package.json +1 -1
- package/dist/esm/components/Avatar/package.json +1 -1
- package/dist/esm/components/BackToTop/package.json +1 -1
- package/dist/esm/components/Backdrop/package.json +1 -1
- package/dist/esm/components/BackgroundImage/package.json +1 -1
- package/dist/esm/components/Badge/package.json +1 -1
- package/dist/esm/components/Banner/package.json +1 -1
- package/dist/esm/components/Brand/package.json +1 -1
- package/dist/esm/components/Breadcrumb/package.json +1 -1
- package/dist/esm/components/Button/package.json +1 -1
- package/dist/esm/components/CalendarMonth/package.json +1 -1
- package/dist/esm/components/Card/package.json +1 -1
- package/dist/esm/components/Checkbox/package.json +1 -1
- package/dist/esm/components/Chip/package.json +1 -1
- package/dist/esm/components/ClipboardCopy/package.json +1 -1
- package/dist/esm/components/CodeBlock/package.json +1 -1
- package/dist/esm/components/DataList/package.json +1 -1
- package/dist/esm/components/DatePicker/package.json +1 -1
- package/dist/esm/components/DescriptionList/package.json +1 -1
- package/dist/esm/components/Divider/package.json +1 -1
- package/dist/esm/components/DragDrop/package.json +1 -1
- package/dist/esm/components/Drawer/package.json +1 -1
- package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js +2 -4
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/Dropdown/package.json +1 -1
- package/dist/esm/components/DualListSelector/package.json +1 -1
- package/dist/esm/components/EmptyState/package.json +1 -1
- package/dist/esm/components/ExpandableSection/package.json +1 -1
- package/dist/esm/components/FileUpload/package.json +1 -1
- package/dist/esm/components/Form/package.json +1 -1
- package/dist/esm/components/FormSelect/package.json +1 -1
- package/dist/esm/components/HelperText/package.json +1 -1
- package/dist/esm/components/Hint/package.json +1 -1
- package/dist/esm/components/Icon/package.json +1 -1
- package/dist/esm/components/InputGroup/package.json +1 -1
- package/dist/esm/components/JumpLinks/package.json +1 -1
- package/dist/esm/components/Label/package.json +1 -1
- package/dist/esm/components/LabelGroup/package.json +1 -1
- package/dist/esm/components/List/package.json +1 -1
- package/dist/esm/components/LoginPage/package.json +1 -1
- package/dist/esm/components/Masthead/package.json +1 -1
- package/dist/esm/components/Menu/package.json +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts +3 -1
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.js +1 -3
- package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/esm/components/MenuToggle/package.json +1 -1
- package/dist/esm/components/Modal/package.json +1 -1
- package/dist/esm/components/MultipleFileUpload/package.json +1 -1
- package/dist/esm/components/Nav/Nav.d.ts +4 -6
- package/dist/esm/components/Nav/Nav.d.ts.map +1 -1
- package/dist/esm/components/Nav/Nav.js +3 -4
- package/dist/esm/components/Nav/Nav.js.map +1 -1
- package/dist/esm/components/Nav/NavItem.js +1 -1
- package/dist/esm/components/Nav/NavItem.js.map +1 -1
- package/dist/esm/components/Nav/package.json +1 -1
- package/dist/esm/components/NotificationBadge/package.json +1 -1
- package/dist/esm/components/NotificationDrawer/package.json +1 -1
- package/dist/esm/components/NumberInput/package.json +1 -1
- package/dist/esm/components/OverflowMenu/package.json +1 -1
- package/dist/esm/components/Page/package.json +1 -1
- package/dist/esm/components/Pagination/package.json +1 -1
- package/dist/esm/components/Panel/package.json +1 -1
- package/dist/esm/components/Popover/package.json +1 -1
- package/dist/esm/components/Progress/package.json +1 -1
- package/dist/esm/components/ProgressStepper/package.json +1 -1
- package/dist/esm/components/Radio/package.json +1 -1
- package/dist/esm/components/SearchInput/package.json +1 -1
- package/dist/esm/components/Select/package.json +1 -1
- package/dist/esm/components/Sidebar/package.json +1 -1
- package/dist/esm/components/SimpleList/package.json +1 -1
- package/dist/esm/components/Skeleton/package.json +1 -1
- package/dist/esm/components/SkipToContent/package.json +1 -1
- package/dist/esm/components/Slider/package.json +1 -1
- package/dist/esm/components/Spinner/package.json +1 -1
- package/dist/esm/components/Switch/package.json +1 -1
- package/dist/esm/components/Tabs/package.json +1 -1
- package/dist/esm/components/Text/package.json +1 -1
- package/dist/esm/components/TextArea/package.json +1 -1
- package/dist/esm/components/TextInput/package.json +1 -1
- package/dist/esm/components/TextInputGroup/package.json +1 -1
- package/dist/esm/components/Tile/package.json +1 -1
- package/dist/esm/components/TimePicker/package.json +1 -1
- package/dist/esm/components/Timestamp/package.json +1 -1
- package/dist/esm/components/Title/package.json +1 -1
- package/dist/esm/components/ToggleGroup/package.json +1 -1
- package/dist/esm/components/Toolbar/package.json +1 -1
- package/dist/esm/components/Tooltip/package.json +1 -1
- package/dist/esm/components/TreeView/package.json +1 -1
- package/dist/esm/components/Truncate/package.json +1 -1
- package/dist/esm/components/Wizard/hooks/package.json +1 -1
- package/dist/esm/components/Wizard/package.json +1 -1
- package/dist/esm/components/package.json +1 -1
- package/dist/esm/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/esm/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/esm/deprecated/components/Dropdown/package.json +1 -1
- package/dist/esm/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/esm/deprecated/components/PageHeader/package.json +1 -1
- package/dist/esm/deprecated/components/Select/package.json +1 -1
- package/dist/esm/deprecated/components/Wizard/package.json +1 -1
- package/dist/esm/deprecated/components/package.json +1 -1
- package/dist/esm/deprecated/package.json +1 -1
- package/dist/esm/helpers/Popper/thirdparty/popper-core/package.json +1 -1
- package/dist/esm/helpers/package.json +1 -1
- package/dist/esm/layouts/Bullseye/package.json +1 -1
- package/dist/esm/layouts/Flex/package.json +1 -1
- package/dist/esm/layouts/Gallery/package.json +1 -1
- package/dist/esm/layouts/Grid/package.json +1 -1
- package/dist/esm/layouts/Level/package.json +1 -1
- package/dist/esm/layouts/Split/package.json +1 -1
- package/dist/esm/layouts/Stack/package.json +1 -1
- package/dist/esm/layouts/package.json +1 -1
- package/dist/esm/next/components/package.json +1 -1
- package/dist/esm/next/package.json +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/js/components/AboutModal/package.json +1 -1
- package/dist/js/components/Accordion/package.json +1 -1
- package/dist/js/components/ActionList/package.json +1 -1
- package/dist/js/components/Alert/package.json +1 -1
- package/dist/js/components/Avatar/package.json +1 -1
- package/dist/js/components/BackToTop/package.json +1 -1
- package/dist/js/components/Backdrop/package.json +1 -1
- package/dist/js/components/BackgroundImage/package.json +1 -1
- package/dist/js/components/Badge/package.json +1 -1
- package/dist/js/components/Banner/package.json +1 -1
- package/dist/js/components/Brand/package.json +1 -1
- package/dist/js/components/Breadcrumb/package.json +1 -1
- package/dist/js/components/Button/package.json +1 -1
- package/dist/js/components/CalendarMonth/package.json +1 -1
- package/dist/js/components/Card/package.json +1 -1
- package/dist/js/components/Checkbox/package.json +1 -1
- package/dist/js/components/Chip/package.json +1 -1
- package/dist/js/components/ClipboardCopy/package.json +1 -1
- package/dist/js/components/CodeBlock/package.json +1 -1
- package/dist/js/components/DataList/package.json +1 -1
- package/dist/js/components/DatePicker/package.json +1 -1
- package/dist/js/components/DescriptionList/package.json +1 -1
- package/dist/js/components/Divider/package.json +1 -1
- package/dist/js/components/DragDrop/package.json +1 -1
- package/dist/js/components/Drawer/package.json +1 -1
- package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/js/components/Dropdown/Dropdown.js +2 -4
- package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/js/components/Dropdown/package.json +1 -1
- package/dist/js/components/DualListSelector/package.json +1 -1
- package/dist/js/components/EmptyState/package.json +1 -1
- package/dist/js/components/ExpandableSection/package.json +1 -1
- package/dist/js/components/FileUpload/package.json +1 -1
- package/dist/js/components/Form/package.json +1 -1
- package/dist/js/components/FormSelect/package.json +1 -1
- package/dist/js/components/HelperText/package.json +1 -1
- package/dist/js/components/Hint/package.json +1 -1
- package/dist/js/components/Icon/package.json +1 -1
- package/dist/js/components/InputGroup/package.json +1 -1
- package/dist/js/components/JumpLinks/package.json +1 -1
- package/dist/js/components/Label/package.json +1 -1
- package/dist/js/components/LabelGroup/package.json +1 -1
- package/dist/js/components/List/package.json +1 -1
- package/dist/js/components/LoginPage/package.json +1 -1
- package/dist/js/components/Masthead/package.json +1 -1
- package/dist/js/components/Menu/package.json +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.d.ts +3 -1
- package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.js +1 -3
- package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/js/components/MenuToggle/package.json +1 -1
- package/dist/js/components/Modal/package.json +1 -1
- package/dist/js/components/MultipleFileUpload/package.json +1 -1
- package/dist/js/components/Nav/Nav.d.ts +4 -6
- package/dist/js/components/Nav/Nav.d.ts.map +1 -1
- package/dist/js/components/Nav/Nav.js +3 -4
- package/dist/js/components/Nav/Nav.js.map +1 -1
- package/dist/js/components/Nav/NavItem.js +1 -1
- package/dist/js/components/Nav/NavItem.js.map +1 -1
- package/dist/js/components/Nav/package.json +1 -1
- package/dist/js/components/NotificationBadge/package.json +1 -1
- package/dist/js/components/NotificationDrawer/package.json +1 -1
- package/dist/js/components/NumberInput/package.json +1 -1
- package/dist/js/components/OverflowMenu/package.json +1 -1
- package/dist/js/components/Page/package.json +1 -1
- package/dist/js/components/Pagination/package.json +1 -1
- package/dist/js/components/Panel/package.json +1 -1
- package/dist/js/components/Popover/package.json +1 -1
- package/dist/js/components/Progress/package.json +1 -1
- package/dist/js/components/ProgressStepper/package.json +1 -1
- package/dist/js/components/Radio/package.json +1 -1
- package/dist/js/components/SearchInput/package.json +1 -1
- package/dist/js/components/Select/package.json +1 -1
- package/dist/js/components/Sidebar/package.json +1 -1
- package/dist/js/components/SimpleList/package.json +1 -1
- package/dist/js/components/Skeleton/package.json +1 -1
- package/dist/js/components/SkipToContent/package.json +1 -1
- package/dist/js/components/Slider/package.json +1 -1
- package/dist/js/components/Spinner/package.json +1 -1
- package/dist/js/components/Switch/package.json +1 -1
- package/dist/js/components/Tabs/package.json +1 -1
- package/dist/js/components/Text/package.json +1 -1
- package/dist/js/components/TextArea/package.json +1 -1
- package/dist/js/components/TextInput/package.json +1 -1
- package/dist/js/components/TextInputGroup/package.json +1 -1
- package/dist/js/components/Tile/package.json +1 -1
- package/dist/js/components/TimePicker/package.json +1 -1
- package/dist/js/components/Timestamp/package.json +1 -1
- package/dist/js/components/Title/package.json +1 -1
- package/dist/js/components/ToggleGroup/package.json +1 -1
- package/dist/js/components/Toolbar/package.json +1 -1
- package/dist/js/components/Tooltip/package.json +1 -1
- package/dist/js/components/TreeView/package.json +1 -1
- package/dist/js/components/Truncate/package.json +1 -1
- package/dist/js/components/Wizard/hooks/package.json +1 -1
- package/dist/js/components/Wizard/package.json +1 -1
- package/dist/js/components/package.json +1 -1
- package/dist/js/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/js/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/js/deprecated/components/Dropdown/package.json +1 -1
- package/dist/js/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/js/deprecated/components/PageHeader/package.json +1 -1
- package/dist/js/deprecated/components/Select/package.json +1 -1
- package/dist/js/deprecated/components/Wizard/package.json +1 -1
- package/dist/js/deprecated/components/package.json +1 -1
- package/dist/js/deprecated/package.json +1 -1
- package/dist/js/helpers/Popper/thirdparty/popper-core/package.json +1 -1
- package/dist/js/helpers/package.json +1 -1
- package/dist/js/layouts/Bullseye/package.json +1 -1
- package/dist/js/layouts/Flex/package.json +1 -1
- package/dist/js/layouts/Gallery/package.json +1 -1
- package/dist/js/layouts/Grid/package.json +1 -1
- package/dist/js/layouts/Level/package.json +1 -1
- package/dist/js/layouts/Split/package.json +1 -1
- package/dist/js/layouts/Stack/package.json +1 -1
- package/dist/js/layouts/package.json +1 -1
- package/dist/js/next/components/package.json +1 -1
- package/dist/js/next/package.json +1 -1
- package/dist/js/package.json +1 -1
- package/dist/umd/react-core.min.js +1 -1
- package/package.json +2 -2
- package/src/components/ActionList/examples/ActionList.md +1 -6
- package/src/components/ActionList/examples/ActionListSingleGroup.tsx +50 -38
- package/src/components/Breadcrumb/examples/Breadcrumb.md +1 -5
- package/src/components/Breadcrumb/examples/BreadcrumbDropdown.tsx +34 -21
- package/src/components/Card/examples/Card.md +9 -14
- package/src/components/Card/examples/CardExpandable.tsx +44 -31
- package/src/components/Card/examples/CardExpandableWithIcon.tsx +50 -29
- package/src/components/Card/examples/CardHeaderInCardHead.tsx +50 -29
- package/src/components/Card/examples/CardLegacySelectable.tsx +52 -33
- package/src/components/Card/examples/CardOnlyActionsInCardHead.tsx +48 -29
- package/src/components/Card/examples/CardSelectable.tsx +52 -36
- package/src/components/Card/examples/CardWithImageAndActions.tsx +51 -29
- package/src/components/DataList/__tests__/DataList.test.tsx +10 -11
- package/src/components/DataList/__tests__/__snapshots__/DataList.test.tsx.snap +86 -19
- package/src/components/DataList/examples/DataList.md +1 -6
- package/src/components/DataList/examples/DataListActions.tsx +39 -23
- package/src/components/DataList/examples/DataListCheckboxes.tsx +106 -61
- package/src/components/DataList/examples/DataListExpandable.tsx +103 -55
- package/src/components/DataList/examples/DataListMixedExpandable.tsx +105 -57
- package/src/components/DataList/examples/DataListSelectableRows.tsx +71 -39
- package/src/components/DataList/examples/DataListWidthModifiers.tsx +81 -39
- package/src/components/Dropdown/Dropdown.tsx +10 -13
- package/src/components/Dropdown/__tests__/__snapshots__/Dropdown.test.tsx.snap +29 -32
- package/src/components/Dropdown/examples/Dropdown.md +0 -1
- package/src/components/Dropdown/examples/DropdownBasic.tsx +22 -16
- package/src/components/Dropdown/examples/DropdownWithDescriptions.tsx +13 -18
- package/src/components/Dropdown/examples/DropdownWithGroups.tsx +30 -16
- package/src/components/Dropdown/examples/DropdownWithKebabToggle.tsx +22 -16
- package/src/components/DualListSelector/examples/DualListSelector.md +1 -5
- package/src/components/DualListSelector/examples/DualListSelectorComplexOptionsActions.tsx +60 -36
- package/src/components/Hint/examples/Hint.md +1 -6
- package/src/components/Hint/examples/HintBasicWithTitle.tsx +58 -32
- package/src/components/Hint/examples/HintBasicWithoutTitle.tsx +57 -32
- package/src/components/InputGroup/examples/InputGroup.md +0 -5
- package/src/components/InputGroup/examples/InputGroupWithDropdown.tsx +32 -24
- package/src/components/Menu/examples/Menu.md +1 -5
- package/src/components/Menu/examples/MenuWithDrilldownBreadcrumbs.tsx +120 -89
- package/src/components/MenuToggle/MenuToggle.tsx +4 -3
- package/src/components/MenuToggle/__tests__/__snapshots__/MenuToggle.test.tsx.snap +10 -18
- package/src/components/MenuToggle/examples/MenuToggle.md +35 -5
- package/src/components/Modal/examples/Modal.md +0 -5
- package/src/components/Modal/examples/ModalWithDropdown.tsx +40 -34
- package/src/components/Nav/Nav.tsx +20 -23
- package/src/components/Nav/NavItem.tsx +1 -1
- package/src/components/Nav/examples/Nav.md +24 -0
- package/src/components/Nav/examples/NavDefault.tsx +1 -1
- package/src/components/Nav/examples/NavExpandable.tsx +8 -2
- package/src/components/Nav/examples/NavExpandableThirdLevel.tsx +8 -2
- package/src/components/Nav/examples/NavFlyout.tsx +1 -1
- package/src/components/Nav/examples/NavGrouped.tsx +1 -1
- package/src/components/Nav/examples/NavHorizontalSubNav.tsx +2 -2
- package/src/components/Nav/examples/NavLegacyTertiary.tsx +2 -2
- package/src/components/Nav/examples/NavMixed.tsx +4 -1
- package/src/components/NotificationDrawer/examples/NotificationDrawer.md +1 -8
- package/src/components/NotificationDrawer/examples/NotificationDrawerBasic.tsx +145 -72
- package/src/components/NotificationDrawer/examples/NotificationDrawerGroups.tsx +187 -131
- package/src/components/Toolbar/examples/Toolbar.md +0 -9
- package/src/components/Toolbar/examples/ToolbarStacked.tsx +75 -58
- package/src/components/Toolbar/examples/ToolbarWithFilters.tsx +57 -88
- package/src/components/TreeView/examples/TreeView.md +42 -30
- package/src/demos/AlertGroup.md +1 -6
- package/src/demos/Card/Card.md +75 -80
- package/src/demos/CardDemos.md +40 -34
- package/src/demos/DataListDemo.md +130 -70
- package/src/demos/DatePicker/DatePicker.md +1 -89
- package/src/demos/DateTimePicker.md +90 -5
- package/src/demos/Masthead.md +1 -7
- package/src/demos/Nav.md +225 -167
- package/src/demos/NotificationDrawer/NotificationDrawer.md +487 -357
- package/src/demos/Page.md +1 -7
- package/src/demos/PrimaryDetail.md +193 -211
- package/src/demos/SearchInput/SearchInput.md +165 -124
- package/src/demos/Tabs.md +0 -1
- package/src/demos/Toolbar.md +169 -190
- package/src/demos/Wizard/WizardDemo.md +2 -2
- package/src/demos/examples/AlertGroup/AlertGroupToastWithNotificationDrawer.tsx +61 -49
- package/src/demos/examples/DashboardHeader.js +96 -81
- package/src/demos/examples/DashboardWrapper.js +1 -1
- package/src/demos/examples/DateTimePicker/DateTimePicker.tsx +29 -26
- package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +85 -71
- package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +91 -76
- package/src/demos/examples/Page/PageStickySectionGroup.tsx +91 -76
- package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +91 -76
- package/src/demos/examples/Tabs/TabsAndTable.tsx +12 -6
|
@@ -3,24 +3,25 @@ id: Search input
|
|
|
3
3
|
section: components
|
|
4
4
|
beta: true
|
|
5
5
|
---
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
Button,
|
|
9
|
+
Card,
|
|
10
|
+
CardBody,
|
|
11
|
+
CardFooter,
|
|
12
|
+
DatePicker,
|
|
13
|
+
Form,
|
|
14
|
+
FormGroup,
|
|
15
|
+
Grid,
|
|
16
|
+
GridItem,
|
|
17
|
+
Menu,
|
|
18
|
+
MenuContent,
|
|
19
|
+
MenuItem,
|
|
20
|
+
MenuList,
|
|
21
|
+
MenuToggle,
|
|
22
|
+
Popper,
|
|
23
|
+
SearchInput,
|
|
24
|
+
TextInput
|
|
24
25
|
} from '@patternfly/react-core';
|
|
25
26
|
import { words } from './words.js';
|
|
26
27
|
|
|
@@ -31,17 +32,9 @@ import { words } from './words.js';
|
|
|
31
32
|
This demo handles building the advanced search form using the composable Menu, and the `SearchInput`'s `hint` prop.
|
|
32
33
|
It also demonstrates wiring up the appropriate keyboard interactions, focus management, and general event handling.
|
|
33
34
|
|
|
34
|
-
|
|
35
35
|
```js
|
|
36
36
|
import React from 'react';
|
|
37
|
-
import {
|
|
38
|
-
Menu,
|
|
39
|
-
MenuContent,
|
|
40
|
-
MenuItem,
|
|
41
|
-
MenuList,
|
|
42
|
-
Popper,
|
|
43
|
-
SearchInput
|
|
44
|
-
} from '@patternfly/react-core';
|
|
37
|
+
import { Menu, MenuContent, MenuItem, MenuList, Popper, SearchInput } from '@patternfly/react-core';
|
|
45
38
|
|
|
46
39
|
import { words } from './words.js';
|
|
47
40
|
|
|
@@ -49,32 +42,52 @@ SearchAutocomplete = () => {
|
|
|
49
42
|
const [value, setValue] = React.useState('');
|
|
50
43
|
const [hint, setHint] = React.useState('');
|
|
51
44
|
const [autocompleteOptions, setAutocompleteOptions] = React.useState([]);
|
|
52
|
-
|
|
45
|
+
|
|
53
46
|
const [isAutocompleteOpen, setIsAutocompleteOpen] = React.useState(false);
|
|
54
|
-
|
|
47
|
+
|
|
55
48
|
const searchInputRef = React.useRef(null);
|
|
56
49
|
const autocompleteRef = React.useRef(null);
|
|
57
|
-
|
|
50
|
+
|
|
58
51
|
const onClear = () => {
|
|
59
52
|
setValue('');
|
|
60
53
|
};
|
|
61
|
-
|
|
62
|
-
const onChange = (newValue) => {
|
|
63
|
-
if (
|
|
54
|
+
|
|
55
|
+
const onChange = (_event, newValue) => {
|
|
56
|
+
if (
|
|
57
|
+
newValue !== '' &&
|
|
58
|
+
searchInputRef &&
|
|
59
|
+
searchInputRef.current &&
|
|
60
|
+
searchInputRef.current.contains(document.activeElement)
|
|
61
|
+
) {
|
|
64
62
|
setIsAutocompleteOpen(true);
|
|
65
|
-
|
|
63
|
+
|
|
66
64
|
// When the value of the search input changes, build a list of no more than 10 autocomplete options.
|
|
67
65
|
// Options which start with the search input value are listed first, followed by options which contain
|
|
68
66
|
// the search input value.
|
|
69
|
-
let options = words
|
|
67
|
+
let options = words
|
|
68
|
+
.filter((option) => option.startsWith(newValue.toLowerCase()))
|
|
69
|
+
.map((option) => (
|
|
70
|
+
<MenuItem itemId={option} key={option}>
|
|
71
|
+
{option}
|
|
72
|
+
</MenuItem>
|
|
73
|
+
));
|
|
70
74
|
if (options.length > 10) {
|
|
71
|
-
options = options.slice(0,10);
|
|
75
|
+
options = options.slice(0, 10);
|
|
72
76
|
} else {
|
|
73
|
-
options = [
|
|
77
|
+
options = [
|
|
78
|
+
...options,
|
|
79
|
+
...words
|
|
80
|
+
.filter((option) => !option.startsWith(newValue.toLowerCase()) && option.includes(newValue.toLowerCase()))
|
|
81
|
+
.map((option) => (
|
|
82
|
+
<MenuItem itemId={option} key={option}>
|
|
83
|
+
{option}
|
|
84
|
+
</MenuItem>
|
|
85
|
+
))
|
|
86
|
+
].slice(0, 10);
|
|
74
87
|
}
|
|
75
|
-
|
|
88
|
+
|
|
76
89
|
// The hint is set whenever there is only one autocomplete option left.
|
|
77
|
-
setHint(options.length === 1? options[0].props.itemId : '');
|
|
90
|
+
setHint(options.length === 1 ? options[0].props.itemId : '');
|
|
78
91
|
// The menu is hidden if there are no options
|
|
79
92
|
setIsAutocompleteOpen(options.length > 0);
|
|
80
93
|
setAutocompleteOptions(options);
|
|
@@ -83,7 +96,7 @@ SearchAutocomplete = () => {
|
|
|
83
96
|
}
|
|
84
97
|
setValue(newValue);
|
|
85
98
|
};
|
|
86
|
-
|
|
99
|
+
|
|
87
100
|
// Whenever an autocomplete option is selected, set the search input value, close the menu, and put the browser
|
|
88
101
|
// focus back on the search input
|
|
89
102
|
const onSelect = (e, itemId) => {
|
|
@@ -92,53 +105,57 @@ SearchAutocomplete = () => {
|
|
|
92
105
|
setIsAutocompleteOpen(false);
|
|
93
106
|
searchInputRef.current.focus();
|
|
94
107
|
};
|
|
95
|
-
|
|
96
|
-
const handleMenuKeys = event => {
|
|
97
|
-
// If there is a hint while the browser focus is on the search input, tab or right arrow will 'accept' the hint value
|
|
108
|
+
|
|
109
|
+
const handleMenuKeys = (event) => {
|
|
110
|
+
// If there is a hint while the browser focus is on the search input, tab or right arrow will 'accept' the hint value
|
|
98
111
|
// and set it as the search input value
|
|
99
112
|
if (hint && (event.key === 'Tab' || event.key === 'ArrowRight') && searchInputRef.current === event.target) {
|
|
100
113
|
setValue(hint);
|
|
101
114
|
setHint('');
|
|
102
115
|
setIsAutocompleteOpen(false);
|
|
103
116
|
if (event.key === 'ArrowRight') {
|
|
104
|
-
event.preventDefault();
|
|
117
|
+
event.preventDefault();
|
|
105
118
|
}
|
|
106
|
-
|
|
119
|
+
// if the autocomplete is open and the browser focus is on the search input,
|
|
107
120
|
} else if (isAutocompleteOpen && searchInputRef.current && searchInputRef.current === event.target) {
|
|
108
121
|
// the escape key closes the autocomplete menu and keeps the focus on the search input.
|
|
109
122
|
if (event.key === 'Escape') {
|
|
110
123
|
setIsAutocompleteOpen(false);
|
|
111
124
|
searchInputRef.current.focus();
|
|
112
|
-
|
|
125
|
+
// the up and down arrow keys move browser focus into the autocomplete menu
|
|
113
126
|
} else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
|
114
127
|
const firstElement = autocompleteRef.current.querySelector('li > button:not(:disabled)');
|
|
115
128
|
firstElement && firstElement.focus();
|
|
116
129
|
event.preventDefault(); // by default, the up and down arrow keys scroll the window
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
130
|
+
// the tab, enter, and space keys will close the menu, and the tab key will move browser
|
|
131
|
+
// focus forward one element (by default)
|
|
132
|
+
} else if (event.key === 'Tab' || event.key === 'Enter' || event.key === 'Space') {
|
|
120
133
|
setIsAutocompleteOpen(false);
|
|
121
|
-
if (event.key ===
|
|
134
|
+
if (event.key === 'Enter' || event.key === 'Space') {
|
|
122
135
|
event.preventDefault();
|
|
123
136
|
}
|
|
124
137
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
} else if (isAutocompleteOpen && autocompleteRef.current.contains(event.target) &&
|
|
138
|
+
// If the autocomplete is open and the browser focus is in the autocomplete menu
|
|
139
|
+
// hitting tab will close the autocomplete and but browser focus back on the search input.
|
|
140
|
+
} else if (isAutocompleteOpen && autocompleteRef.current.contains(event.target) && event.key === 'Tab') {
|
|
128
141
|
event.preventDefault();
|
|
129
142
|
setIsAutocompleteOpen(false);
|
|
130
143
|
searchInputRef.current.focus();
|
|
131
144
|
}
|
|
132
|
-
|
|
133
145
|
};
|
|
134
|
-
|
|
146
|
+
|
|
135
147
|
// The autocomplete menu should close if the user clicks outside the menu.
|
|
136
|
-
const handleClickOutside = event => {
|
|
137
|
-
if (
|
|
148
|
+
const handleClickOutside = (event) => {
|
|
149
|
+
if (
|
|
150
|
+
isAutocompleteOpen &&
|
|
151
|
+
autocompleteRef &&
|
|
152
|
+
autocompleteRef.current &&
|
|
153
|
+
!autocompleteRef.current.contains(event.target)
|
|
154
|
+
) {
|
|
138
155
|
setIsAutocompleteOpen(false);
|
|
139
156
|
}
|
|
140
157
|
};
|
|
141
|
-
|
|
158
|
+
|
|
142
159
|
React.useEffect(() => {
|
|
143
160
|
window.addEventListener('keydown', handleMenuKeys);
|
|
144
161
|
window.addEventListener('click', handleClickOutside);
|
|
@@ -147,7 +164,7 @@ SearchAutocomplete = () => {
|
|
|
147
164
|
window.removeEventListener('click', handleClickOutside);
|
|
148
165
|
};
|
|
149
166
|
}, [isAutocompleteOpen, hint, searchInputRef.current]);
|
|
150
|
-
|
|
167
|
+
|
|
151
168
|
const searchInput = (
|
|
152
169
|
<SearchInput
|
|
153
170
|
value={value}
|
|
@@ -158,17 +175,14 @@ SearchAutocomplete = () => {
|
|
|
158
175
|
id="autocomplete-search"
|
|
159
176
|
/>
|
|
160
177
|
);
|
|
161
|
-
|
|
178
|
+
|
|
162
179
|
const autocomplete = (
|
|
163
180
|
<Menu ref={autocompleteRef} onSelect={onSelect}>
|
|
164
181
|
<MenuContent>
|
|
165
|
-
<MenuList>
|
|
166
|
-
{autocompleteOptions}
|
|
167
|
-
</MenuList>
|
|
182
|
+
<MenuList>{autocompleteOptions}</MenuList>
|
|
168
183
|
</MenuContent>
|
|
169
184
|
</Menu>
|
|
170
185
|
);
|
|
171
|
-
|
|
172
186
|
|
|
173
187
|
return (
|
|
174
188
|
<Popper
|
|
@@ -187,7 +201,7 @@ SearchAutocomplete = () => {
|
|
|
187
201
|
|
|
188
202
|
### Composable advanced search
|
|
189
203
|
|
|
190
|
-
This demo handles building the advanced search form using the composable Menu, as well as wiring up a
|
|
204
|
+
This demo handles building the advanced search form using the composable Menu, as well as wiring up a
|
|
191
205
|
select using the composable Menu and MenuToggle components. This demo also demonstrates wiring up the appropriate
|
|
192
206
|
keyboard interactions, focus management, and general event handling.
|
|
193
207
|
|
|
@@ -195,14 +209,14 @@ Note: This demo and its handling of 'date within' and a date picker is modeled a
|
|
|
195
209
|
|
|
196
210
|
```js
|
|
197
211
|
import React from 'react';
|
|
198
|
-
import {
|
|
212
|
+
import {
|
|
199
213
|
ActionGroup,
|
|
200
|
-
Button,
|
|
214
|
+
Button,
|
|
201
215
|
DatePicker,
|
|
202
|
-
Form,
|
|
216
|
+
Form,
|
|
203
217
|
FormGroup,
|
|
204
218
|
Grid,
|
|
205
|
-
GridItem,
|
|
219
|
+
GridItem,
|
|
206
220
|
isValidDate,
|
|
207
221
|
Menu,
|
|
208
222
|
MenuContent,
|
|
@@ -212,8 +226,8 @@ import {
|
|
|
212
226
|
Panel,
|
|
213
227
|
PanelMain,
|
|
214
228
|
PanelMainBody,
|
|
215
|
-
Popper,
|
|
216
|
-
SearchInput,
|
|
229
|
+
Popper,
|
|
230
|
+
SearchInput,
|
|
217
231
|
TextInput,
|
|
218
232
|
yyyyMMddFormat
|
|
219
233
|
} from '@patternfly/react-core';
|
|
@@ -223,25 +237,25 @@ AdvancedComposableSearchInput = () => {
|
|
|
223
237
|
const [hasWords, setHasWords] = React.useState('');
|
|
224
238
|
const [dateWithin, setDateWithin] = React.useState('1 day');
|
|
225
239
|
const [date, setDate] = React.useState();
|
|
226
|
-
|
|
240
|
+
|
|
227
241
|
const [isAdvancedSearchOpen, setIsAdvancedSearchOpen] = React.useState(false);
|
|
228
242
|
const [isDateWithinOpen, setIsDateWithinOpen] = React.useState(false);
|
|
229
|
-
|
|
243
|
+
|
|
230
244
|
const isInitialMount = React.useRef(true);
|
|
231
245
|
const firstAttrRef = React.useRef(null);
|
|
232
246
|
const searchInputRef = React.useRef(null);
|
|
233
247
|
const advancedSearchPaneRef = React.useRef(null);
|
|
234
248
|
const dateWithinToggleRef = React.useRef();
|
|
235
249
|
const dateWithinMenuRef = React.useRef();
|
|
236
|
-
|
|
250
|
+
|
|
237
251
|
const onClear = () => {
|
|
238
252
|
setValue('');
|
|
239
253
|
setHasWords('');
|
|
240
254
|
setDateWithin('');
|
|
241
255
|
setDate('');
|
|
242
256
|
};
|
|
243
|
-
|
|
244
|
-
const onChange = (value) => {
|
|
257
|
+
|
|
258
|
+
const onChange = (_event, value) => {
|
|
245
259
|
if (value.length <= hasWords.length + 1) {
|
|
246
260
|
setValue(value);
|
|
247
261
|
setHasWords(value);
|
|
@@ -249,7 +263,7 @@ AdvancedComposableSearchInput = () => {
|
|
|
249
263
|
setValue(hasWords);
|
|
250
264
|
}
|
|
251
265
|
};
|
|
252
|
-
|
|
266
|
+
|
|
253
267
|
// After initial page load, whenever the advanced search menu is opened, the browser focus should be placed on the
|
|
254
268
|
// first advanced search form input. Whenever the advanced search menu is closed, the browser focus should
|
|
255
269
|
// be returned to the search input.
|
|
@@ -264,38 +278,51 @@ AdvancedComposableSearchInput = () => {
|
|
|
264
278
|
}
|
|
265
279
|
}
|
|
266
280
|
}, [isAdvancedSearchOpen]);
|
|
267
|
-
|
|
268
|
-
// If a menu is open and has browser focus, then the escape key closes them and puts the browser focus onto their
|
|
281
|
+
|
|
282
|
+
// If a menu is open and has browser focus, then the escape key closes them and puts the browser focus onto their
|
|
269
283
|
// respective toggle. The 'date within' menu also needs to close when the 'tab' key is hit. However, hitting tab while
|
|
270
284
|
// focus is in the advanced search form should move the focus to the next form input, not close the advanced search
|
|
271
285
|
// menu.
|
|
272
|
-
const handleMenuKeys = event => {
|
|
286
|
+
const handleMenuKeys = (event) => {
|
|
273
287
|
if (isDateWithinOpen && dateWithinMenuRef.current && dateWithinMenuRef.current.contains(event.target)) {
|
|
274
288
|
if (event.key === 'Escape' || event.key === 'Tab') {
|
|
275
289
|
setIsDateWithinOpen(!isDateWithinOpen);
|
|
276
290
|
dateWithinToggleRef.current.focus();
|
|
277
291
|
}
|
|
278
|
-
}
|
|
292
|
+
}
|
|
279
293
|
if (isAdvancedSearchOpen && advancedSearchPaneRef.current && advancedSearchPaneRef.current.contains(event.target)) {
|
|
280
|
-
if (
|
|
281
|
-
|
|
294
|
+
if (
|
|
295
|
+
event.key === 'Escape' ||
|
|
296
|
+
(event.key === 'Tab' &&
|
|
297
|
+
!event.shiftKey &&
|
|
298
|
+
advancedSearchPaneRef.current.querySelector('button[type=reset]') === event.target)
|
|
282
299
|
) {
|
|
283
300
|
setIsAdvancedSearchOpen(!isAdvancedSearchOpen);
|
|
284
301
|
searchInputRef.current.focus();
|
|
285
302
|
}
|
|
286
|
-
}
|
|
303
|
+
}
|
|
287
304
|
};
|
|
288
|
-
|
|
305
|
+
|
|
289
306
|
// If a menu is open and has browser focus, then clicking outside the menu should close it.
|
|
290
|
-
const handleClickOutside = event => {
|
|
291
|
-
if (
|
|
307
|
+
const handleClickOutside = (event) => {
|
|
308
|
+
if (
|
|
309
|
+
isDateWithinOpen &&
|
|
310
|
+
dateWithinMenuRef &&
|
|
311
|
+
dateWithinMenuRef.current &&
|
|
312
|
+
!dateWithinMenuRef.current.contains(event.target)
|
|
313
|
+
) {
|
|
292
314
|
setIsDateWithinOpen(false);
|
|
293
|
-
}
|
|
294
|
-
if (
|
|
315
|
+
}
|
|
316
|
+
if (
|
|
317
|
+
isAdvancedSearchOpen &&
|
|
318
|
+
advancedSearchPaneRef &&
|
|
319
|
+
advancedSearchPaneRef.current &&
|
|
320
|
+
!advancedSearchPaneRef.current.contains(event.target)
|
|
321
|
+
) {
|
|
295
322
|
setIsAdvancedSearchOpen(false);
|
|
296
323
|
}
|
|
297
324
|
};
|
|
298
|
-
|
|
325
|
+
|
|
299
326
|
React.useEffect(() => {
|
|
300
327
|
window.addEventListener('keydown', handleMenuKeys);
|
|
301
328
|
window.addEventListener('click', handleClickOutside);
|
|
@@ -304,12 +331,11 @@ AdvancedComposableSearchInput = () => {
|
|
|
304
331
|
window.removeEventListener('click', handleClickOutside);
|
|
305
332
|
};
|
|
306
333
|
}, [dateWithinMenuRef.current, advancedSearchPaneRef.current, isAdvancedSearchOpen, isDateWithinOpen]);
|
|
307
|
-
|
|
308
|
-
|
|
334
|
+
|
|
309
335
|
// This demo and its handling of 'date within' and a date picker is modeled after the gmail advanced search form.
|
|
310
336
|
const onSubmit = (event, value) => {
|
|
311
337
|
event.preventDefault();
|
|
312
|
-
|
|
338
|
+
|
|
313
339
|
if (isValidDate(new Date(date)) && dateWithin) {
|
|
314
340
|
let afterDate = new Date(date);
|
|
315
341
|
let toDate = new Date(date);
|
|
@@ -355,21 +381,21 @@ AdvancedComposableSearchInput = () => {
|
|
|
355
381
|
toDate.setDate(toDate.getDate() + 1);
|
|
356
382
|
break;
|
|
357
383
|
}
|
|
358
|
-
setValue(`${hasWords &&
|
|
384
|
+
setValue(`${hasWords && hasWords + ' '}after:${yyyyMMddFormat(afterDate)} to:${yyyyMMddFormat(toDate)}`);
|
|
359
385
|
} else {
|
|
360
386
|
setValue(hasWords);
|
|
361
387
|
}
|
|
362
|
-
|
|
388
|
+
|
|
363
389
|
setIsAdvancedSearchOpen(false);
|
|
364
390
|
};
|
|
365
|
-
|
|
391
|
+
|
|
366
392
|
const searchInput = (
|
|
367
393
|
<SearchInput
|
|
368
394
|
value={value}
|
|
369
|
-
onChange={
|
|
395
|
+
onChange={onChange}
|
|
370
396
|
onToggleAdvancedSearch={(e, isOpen) => {
|
|
371
397
|
e.stopPropagation();
|
|
372
|
-
setIsAdvancedSearchOpen(isOpen)
|
|
398
|
+
setIsAdvancedSearchOpen(isOpen);
|
|
373
399
|
}}
|
|
374
400
|
isAdvancedSearchOpen={isAdvancedSearchOpen}
|
|
375
401
|
onClear={onClear}
|
|
@@ -378,10 +404,10 @@ AdvancedComposableSearchInput = () => {
|
|
|
378
404
|
id="custom-advanced-search"
|
|
379
405
|
/>
|
|
380
406
|
);
|
|
381
|
-
|
|
382
|
-
// Clicking the 'date within' toggle should open its associated menu and then place the browser
|
|
383
|
-
// focus on the first menu item.
|
|
384
|
-
const toggleDateWithinMenu = ev => {
|
|
407
|
+
|
|
408
|
+
// Clicking the 'date within' toggle should open its associated menu and then place the browser
|
|
409
|
+
// focus on the first menu item.
|
|
410
|
+
const toggleDateWithinMenu = (ev) => {
|
|
385
411
|
ev.stopPropagation(); // Stop handleClickOutside from handling
|
|
386
412
|
setTimeout(() => {
|
|
387
413
|
if (dateWithinMenuRef.current) {
|
|
@@ -391,7 +417,7 @@ AdvancedComposableSearchInput = () => {
|
|
|
391
417
|
}, 0);
|
|
392
418
|
setIsDateWithinOpen(!isDateWithinOpen);
|
|
393
419
|
};
|
|
394
|
-
|
|
420
|
+
|
|
395
421
|
// Selecting a date within option closes the menu, sets the value of date within, and puts browser focus back
|
|
396
422
|
// on the date within toggle.
|
|
397
423
|
const onDateWithinSelect = (e, itemId) => {
|
|
@@ -402,7 +428,7 @@ AdvancedComposableSearchInput = () => {
|
|
|
402
428
|
dateWithinToggleRef.current.focus();
|
|
403
429
|
}
|
|
404
430
|
};
|
|
405
|
-
|
|
431
|
+
|
|
406
432
|
const dateWithinOptions = (
|
|
407
433
|
<Menu ref={dateWithinMenuRef} selected={dateWithin} onSelect={onDateWithinSelect}>
|
|
408
434
|
<MenuContent>
|
|
@@ -419,25 +445,30 @@ AdvancedComposableSearchInput = () => {
|
|
|
419
445
|
</MenuContent>
|
|
420
446
|
</Menu>
|
|
421
447
|
);
|
|
422
|
-
|
|
448
|
+
|
|
423
449
|
const dateWithinToggle = (
|
|
424
|
-
<MenuToggle
|
|
450
|
+
<MenuToggle
|
|
451
|
+
ref={dateWithinToggleRef}
|
|
452
|
+
onClick={toggleDateWithinMenu}
|
|
453
|
+
isExpanded={isDateWithinOpen}
|
|
454
|
+
style={{ width: '100%' }}
|
|
455
|
+
>
|
|
425
456
|
{dateWithin}
|
|
426
457
|
</MenuToggle>
|
|
427
458
|
);
|
|
428
|
-
|
|
459
|
+
|
|
429
460
|
const advancedForm = (
|
|
430
461
|
<div ref={advancedSearchPaneRef} role="dialog" aria-label="Advanced search form">
|
|
431
|
-
<Panel variant=
|
|
462
|
+
<Panel variant="raised">
|
|
432
463
|
<PanelMain>
|
|
433
464
|
<PanelMainBody>
|
|
434
465
|
<Form>
|
|
435
|
-
<FormGroup label=
|
|
466
|
+
<FormGroup label="Has the words" fieldId="has-words" key="has-words">
|
|
436
467
|
<TextInput
|
|
437
|
-
type=
|
|
438
|
-
id=
|
|
468
|
+
type="text"
|
|
469
|
+
id="has-words"
|
|
439
470
|
value={hasWords}
|
|
440
|
-
onChange={value => {
|
|
471
|
+
onChange={(value) => {
|
|
441
472
|
setHasWords(value);
|
|
442
473
|
setValue(value);
|
|
443
474
|
}}
|
|
@@ -446,26 +477,36 @@ AdvancedComposableSearchInput = () => {
|
|
|
446
477
|
</FormGroup>
|
|
447
478
|
<Grid hasGutter md={6}>
|
|
448
479
|
<GridItem>
|
|
449
|
-
<FormGroup label=
|
|
450
|
-
<Popper
|
|
480
|
+
<FormGroup label="Date within" fieldId="date-within" key="date-within">
|
|
481
|
+
<Popper
|
|
482
|
+
trigger={dateWithinToggle}
|
|
483
|
+
triggerRef={dateWithinToggleRef}
|
|
484
|
+
popper={dateWithinOptions}
|
|
485
|
+
popperRef={dateWithinMenuRef}
|
|
486
|
+
isVisible={isDateWithinOpen}
|
|
487
|
+
/>
|
|
451
488
|
</FormGroup>
|
|
452
489
|
</GridItem>
|
|
453
490
|
<GridItem>
|
|
454
|
-
<FormGroup label=
|
|
455
|
-
<DatePicker
|
|
456
|
-
id="datePicker"
|
|
457
|
-
style={{width:
|
|
458
|
-
value={date}
|
|
459
|
-
onChange={setDate}
|
|
460
|
-
appendTo={() => document.querySelector(
|
|
491
|
+
<FormGroup label="Of date" fieldId="date" key="date">
|
|
492
|
+
<DatePicker
|
|
493
|
+
id="datePicker"
|
|
494
|
+
style={{ width: '100%' }}
|
|
495
|
+
value={date}
|
|
496
|
+
onChange={setDate}
|
|
497
|
+
appendTo={() => document.querySelector('#datePicker')}
|
|
461
498
|
/>
|
|
462
499
|
</FormGroup>
|
|
463
500
|
</GridItem>
|
|
464
501
|
</Grid>
|
|
465
502
|
<ActionGroup>
|
|
466
|
-
<Button variant="primary" type="submit" onClick={(e) => onSubmit(null, e)}>
|
|
503
|
+
<Button variant="primary" type="submit" onClick={(e) => onSubmit(null, e)}>
|
|
504
|
+
Submit
|
|
505
|
+
</Button>
|
|
467
506
|
{!!onClear && (
|
|
468
|
-
<Button variant="link" type="reset" onClick={onClear}>
|
|
507
|
+
<Button variant="link" type="reset" onClick={onClear}>
|
|
508
|
+
Reset
|
|
509
|
+
</Button>
|
|
469
510
|
)}
|
|
470
511
|
</ActionGroup>
|
|
471
512
|
</Form>
|
|
@@ -484,7 +525,7 @@ AdvancedComposableSearchInput = () => {
|
|
|
484
525
|
popperRef={advancedSearchPaneRef}
|
|
485
526
|
isVisible={isAdvancedSearchOpen}
|
|
486
527
|
enableFlip={false}
|
|
487
|
-
appendTo={() => document.querySelector(
|
|
528
|
+
appendTo={() => document.querySelector('#custom-advanced-search')}
|
|
488
529
|
/>
|
|
489
530
|
);
|
|
490
531
|
};
|
package/src/demos/Tabs.md
CHANGED
|
@@ -12,7 +12,6 @@ import CubeIcon from '@patternfly/react-icons/dist/esm/icons/cube-icon';
|
|
|
12
12
|
import FilterIcon from '@patternfly/react-icons/dist/esm/icons/filter-icon';
|
|
13
13
|
import SortAmountDownIcon from '@patternfly/react-icons/dist/esm/icons/sort-amount-down-icon';
|
|
14
14
|
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
15
|
-
import { KebabToggle } from '@patternfly/react-core/deprecated';
|
|
16
15
|
|
|
17
16
|
## Demos
|
|
18
17
|
|