@openfin/workspace-platform 20.0.2 → 20.0.5
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/browser/src/api/color-linking.d.ts +23 -0
- package/browser/src/api/controls.d.ts +23 -0
- package/browser/src/api/pages/attached.d.ts +23 -0
- package/browser/src/api/pages/state.d.ts +10 -0
- package/browser/src/api/panels.d.ts +106 -0
- package/browser/src/api/view.d.ts +22 -0
- package/browser/src/components/ControlBar/LeftControlsContainer/EnterpriseNavigationContainer/AddressBar/AddressBar.d.ts +15 -0
- package/browser/src/components/ControlBar/LeftControlsContainer/EnterpriseNavigationContainer/AddressBar/AddressBarInput.d.ts +18 -0
- package/browser/src/components/ControlBar/RightControlsContainer/ToolbarContainer/menus/menuConfig.d.ts +17 -0
- package/browser/src/components/ControlBar/SearchMenu/CommandBar.d.ts +9 -0
- package/browser/src/components/ControlBar/SearchMenu/Icons.d.ts +23 -0
- package/browser/src/components/ControlBar/SearchMenu/ResultIcon.d.ts +11 -0
- package/browser/src/components/ControlBar/SearchMenu/SecureIcon.d.ts +5 -0
- package/browser/src/components/ControlBar/SearchMenu/UrlInput.d.ts +3 -0
- package/browser/src/components/ControlBar/SearchMenu/useIsPageOpen.d.ts +3 -0
- package/browser/src/components/ControlBar/Tablist/utils.d.ts +8 -0
- package/browser/src/components/ControlBar/utils.d.ts +1 -0
- package/browser/src/components/LandingPage/BrandIcon.d.ts +6 -0
- package/browser/src/components/LayoutContainer/utils.d.ts +10 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/BookmarkItem.d.ts +17 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/BookmarksFolderHeader.d.ts +8 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/BookmarksPanel.d.ts +9 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/BookmarksPanelHeader.d.ts +3 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/BookmarksResults.d.ts +15 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/BookmarksSearchInput.d.ts +7 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/useBookmarkNavigation.d.ts +8 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/useBookmarksSearch.d.ts +16 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/useUpdateBookmarkResultsActions.d.ts +15 -0
- package/browser/src/components/PanelContainer/BookmarksPanel/utils.d.ts +7 -0
- package/browser/src/components/PanelContainer/PanelContainer.d.ts +8 -0
- package/browser/src/hooks/EnterpriseSearchMenu/AdjustSearchMenuDimensions/getDimensions.d.ts +14 -0
- package/browser/src/hooks/EnterpriseSearchMenu/AdjustSearchMenuDimensions/useAdjustSearchMenuViewDimensions.d.ts +29 -0
- package/browser/src/hooks/EnterpriseSearchMenu/useInitChannelToSearchMenuView.d.ts +18 -0
- package/browser/src/hooks/EnterpriseSearchMenu/usePostMessageToSearchMenuView.d.ts +18 -0
- package/browser/src/hooks/EnterpriseSearchMenu/useProcessChildContentBlockEvent.d.ts +3 -0
- package/browser/src/hooks/EnterpriseSearchMenu/useSearchMenuViewLifecycleManager.d.ts +16 -0
- package/browser/src/hooks/EnterpriseSearchMenu/useUpdateInputExpansionState.d.ts +15 -0
- package/browser/src/hooks/EnterpriseSearchMenu/useUpdateViewExpansionState.d.ts +32 -0
- package/browser/src/hooks/useEnterpriseHotkeys.d.ts +4 -0
- package/browser/src/hooks/usePanelBounds.d.ts +4 -0
- package/browser/src/hooks/useSingleViewPage.d.ts +2 -0
- package/browser/src/hooks/useWindowFocusState.d.ts +17 -0
- package/browser/src/slices/menu.d.ts +28 -0
- package/browser/src/slices/modal/close.d.ts +10 -0
- package/browser/src/slices/modal/index.d.ts +8 -0
- package/browser/src/slices/pages/attached.d.ts +83 -0
- package/browser/src/slices/tab-focus.d.ts +85 -0
- package/browser/src/store/index.d.ts +90 -0
- package/client-api-platform/src/api/browser/bookmarks.d.ts +6 -0
- package/client-api-platform/src/api/context-menu/index.d.ts +3 -1
- package/client-api-platform/src/shapes.d.ts +5 -2
- package/common/src/api/pages/internal.d.ts +8 -0
- package/common/src/api/pages/shapes.d.ts +91 -0
- package/common/src/api/protocol/browser.d.ts +3 -1
- package/common/src/api/protocol/workspace-platform.d.ts +1 -0
- package/common/src/api/theming.d.ts +2 -1
- package/common/src/api/workspace-events.d.ts +49 -0
- package/common/src/components/BaseButton/BaseButton.d.ts +55 -0
- package/common/src/components/Icon/CustomIcon.d.ts +15 -0
- package/common/src/hooks/context.d.ts +58 -0
- package/common/src/hooks/usePlatformTheme.d.ts +6 -0
- package/common/src/hooks/useSystemSchemeCheck.d.ts +13 -0
- package/common/src/slices/environment.d.ts +22 -0
- package/common/src/slices/target-theming.d.ts +56 -0
- package/common/src/styles/svg-icons.d.ts +7 -0
- package/common/src/utils/a11y/index.d.ts +3 -0
- package/common/src/utils/bookmark-item-context-menu.d.ts +3 -0
- package/common/src/utils/bookmarks.d.ts +12 -0
- package/common/src/utils/custom-logo.d.ts +16 -0
- package/common/src/utils/enterprise-channels.d.ts +13 -0
- package/common/src/utils/enterpriseBrowser.d.ts +1 -0
- package/common/src/utils/interop.d.ts +30 -0
- package/common/src/utils/layout.d.ts +6 -0
- package/common/src/utils/menu-config.d.ts +1 -0
- package/common/src/utils/modal-bounds.d.ts +0 -8
- package/common/src/utils/navigate.d.ts +8 -0
- package/common/src/utils/popup-window.d.ts +31 -10
- package/common/src/utils/route.d.ts +4 -2
- package/common/src/utils/test-ids.d.ts +70 -0
- package/common/src/utils/url.d.ts +1 -0
- package/common/src/utils/window.d.ts +12 -1
- package/index.js +15 -15
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/common/src/utils/enterprise-context-menu-cahnnels.d.ts +0 -4
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="lodash" />
|
|
2
|
+
import type OpenFin from '@openfin/core';
|
|
3
|
+
export declare enum ColorLinkingUiClass {
|
|
4
|
+
SHOW_INTEROP_GROUPS = "showInteropGroups",
|
|
5
|
+
HIGHLIGHT = "highlight"
|
|
6
|
+
}
|
|
7
|
+
export declare function getContextGroupColorForView(viewIdentity: OpenFin.Identity): Promise<OpenFin.DisplayMetadata | undefined>;
|
|
8
|
+
export declare function isSameGroup(viewIdentity: OpenFin.Identity, groupId: string): Promise<boolean>;
|
|
9
|
+
export declare function findActiveLayout(layoutContainerKey: string): HTMLElement;
|
|
10
|
+
export declare function updateBorderColor(viewIdentity: OpenFin.Identity): Promise<void>;
|
|
11
|
+
export declare const debouncedSetContextHighlighting: import("lodash").DebouncedFunc<(ids: OpenFin.Identity[], layoutContainerKey: string) => Promise<void>>;
|
|
12
|
+
export declare function showBorder(viewIdentity: OpenFin.Identity): Promise<void>;
|
|
13
|
+
export declare function highlightAllInteropViews(): Promise<void>;
|
|
14
|
+
export declare function removeInteropOutlines(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Accepts a group of views and a channelId and updates group membership based on the following rules:
|
|
17
|
+
* - If all selected views are a member of group, remove them.
|
|
18
|
+
* - If one or more view is NOT a member of the group, add all to group.
|
|
19
|
+
* @param views Array of view identities
|
|
20
|
+
* @param channelId id of the channel for the group to be joined / removed from
|
|
21
|
+
* @returns Promise<void>
|
|
22
|
+
*/
|
|
23
|
+
export declare const updateContextGroup: (views: OpenFin.Identity[], channelId: string) => Promise<void>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type OpenFin from '@openfin/core';
|
|
2
|
+
import { ShowBrowserIndicatorPayload } from '../../../common/src/utils/indicators/browser';
|
|
3
|
+
import { AddToChannelRequest } from '../../../common/src/api/protocol/browser';
|
|
4
|
+
import { OpenSaveMenuRequest } from '../../../client-api-platform/src/shapes';
|
|
5
|
+
export declare const requestCloseBrowserWindow: () => Promise<void>;
|
|
6
|
+
export declare const requestClosePage: (arg: import("@browser/slices/modal/close").ClosePageRequestPayload) => Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Opens the save menu with the specified menu type provided and the ID to be saved
|
|
9
|
+
*
|
|
10
|
+
* @param menuType Provide one of the SaveModalType's to define the content to render
|
|
11
|
+
* @id id of the page or workspace to action against
|
|
12
|
+
*/
|
|
13
|
+
export declare const requestOpenSaveModal: ({ menuType, id }: OpenSaveMenuRequest) => Promise<OpenFin.Identity>;
|
|
14
|
+
/**
|
|
15
|
+
* Creates a copy of a page in the same window.
|
|
16
|
+
* @param page The page to be duplicated
|
|
17
|
+
*/
|
|
18
|
+
export declare const requestDuplicatePage: (pageId: string) => Promise<void>;
|
|
19
|
+
export declare const raiseJoinContextGroupAnalytics: (colorName: string, view: OpenFin.Identity) => void;
|
|
20
|
+
export declare const requestAddToChannel: ({ newChannelId, selectedViews }: AddToChannelRequest) => void;
|
|
21
|
+
export declare const raiseLeaveContextGroupAnalytics: (colorName: string, view: OpenFin.Identity) => void;
|
|
22
|
+
export declare const requestRemoveFromChannel: (selectedViews: OpenFin.Identity[]) => void;
|
|
23
|
+
export declare const requestShowBrowserIndicator: ({ type, message, parentBrowserName, secondaryMessage, icon, isEnterprise }: ShowBrowserIndicatorPayload) => Promise<void>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type OpenFin from '@openfin/core';
|
|
2
|
+
import { attachPagesToWindow as AttachPagesToWindowType, detachPagesFromWindow as DetachPagesFromWindowType, getPages as GetPagesType, renamePage as RenamePageType, reorderPagesForWindow as ReorderPagesForWindowType, setActivePageForWindow as SetActivePageForWindowType, updatePageForWindow as UpdatePageForWindowType } from '../../../../common/src/api/pages/attached';
|
|
3
|
+
import type { AttachedPage } from '../../../../common/src/api/pages/shapes';
|
|
4
|
+
/**
|
|
5
|
+
* Save the current attached page state in window options.
|
|
6
|
+
*/
|
|
7
|
+
export declare const updatePagesWindowOptions: () => Promise<void>;
|
|
8
|
+
export declare const setActivePageForWindow: typeof SetActivePageForWindowType;
|
|
9
|
+
export declare const getActivePageForWindow: () => Promise<AttachedPage>;
|
|
10
|
+
export declare const renamePage: typeof RenamePageType;
|
|
11
|
+
export declare const getPages: typeof GetPagesType;
|
|
12
|
+
export declare const attachPagesToWindow: typeof AttachPagesToWindowType;
|
|
13
|
+
export declare const detachPagesFromWindow: typeof DetachPagesFromWindowType;
|
|
14
|
+
export declare const reorderPagesForWindow: typeof ReorderPagesForWindowType;
|
|
15
|
+
export declare const updatePageForWindow: typeof UpdatePageForWindowType;
|
|
16
|
+
export declare const isDetachingPages: () => boolean;
|
|
17
|
+
export declare const isActivePageChanging: () => boolean;
|
|
18
|
+
export declare const handleViewCrashed: ({ viewIdentity }: {
|
|
19
|
+
viewIdentity: OpenFin.Identity;
|
|
20
|
+
}) => void;
|
|
21
|
+
export declare const handleViewAttached: ({ viewIdentity }: {
|
|
22
|
+
viewIdentity: OpenFin.Identity;
|
|
23
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AnyAction } from 'redux';
|
|
2
|
+
import type { ThunkDispatch } from 'redux-thunk';
|
|
3
|
+
import { AttachedPagesRootState } from '../../../../browser/src/slices/pages/attached';
|
|
4
|
+
declare let dispatchInstance: ThunkDispatch<unknown, unknown, AnyAction>;
|
|
5
|
+
declare let getStateInstance: () => AttachedPagesRootState;
|
|
6
|
+
export declare const getState: () => AttachedPagesRootState;
|
|
7
|
+
export declare const dispatch: typeof dispatchInstance;
|
|
8
|
+
export declare const setGetStateInstance: (instance: typeof getStateInstance) => void;
|
|
9
|
+
export declare const setDispatchInstance: (instance: typeof dispatchInstance) => void;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type OpenFin from '@openfin/core';
|
|
2
|
+
import { ExtendedPanelConfig, PanelPosition } from '../../../common/src/api/pages/shapes';
|
|
3
|
+
export declare function attachPanelViews(panels?: ExtendedPanelConfig[]): Promise<void>;
|
|
4
|
+
export declare function setUpPanelViews(panels?: ExtendedPanelConfig[], panelsToReplace?: ExtendedPanelConfig[]): Promise<void>;
|
|
5
|
+
export declare function getPanelsWithViewSnapshots(panels?: ExtendedPanelConfig[]): Promise<({
|
|
6
|
+
viewOptions: {
|
|
7
|
+
uuid: string;
|
|
8
|
+
api?: OpenFin.ApiSettings;
|
|
9
|
+
name: string;
|
|
10
|
+
url: string;
|
|
11
|
+
target: OpenFin.Identity;
|
|
12
|
+
title?: string;
|
|
13
|
+
contentCreation?: OpenFin.ContentCreationOptions;
|
|
14
|
+
customRequestHeaders?: OpenFin.CustomRequestHeaders[];
|
|
15
|
+
bounds?: OpenFin.Bounds;
|
|
16
|
+
permissions?: Partial<OpenFin.Permissions>;
|
|
17
|
+
processAffinity?: string;
|
|
18
|
+
hotkeys?: OpenFin.Hotkey[];
|
|
19
|
+
preloadScripts?: OpenFin.PreloadScript[];
|
|
20
|
+
manifestUrl?: string;
|
|
21
|
+
zoomLevel?: number;
|
|
22
|
+
experimental?: any;
|
|
23
|
+
fdc3InteropApi?: string;
|
|
24
|
+
enableBeforeUnload?: boolean;
|
|
25
|
+
accelerator?: Partial<OpenFin.Accelerator>;
|
|
26
|
+
autoplayPolicy?: OpenFin.AutoplayPolicyOptions;
|
|
27
|
+
closeBehavior?: "hide" | "detach" | "destroy";
|
|
28
|
+
downloadShelf?: {
|
|
29
|
+
enabled: boolean;
|
|
30
|
+
};
|
|
31
|
+
excludeOptions?: OpenFin.ExcludeOptions;
|
|
32
|
+
autoResize?: OpenFin.AutoResizeOptions;
|
|
33
|
+
contextMenu?: boolean;
|
|
34
|
+
contextMenuSettings?: OpenFin.ContextMenuSettings;
|
|
35
|
+
contextMenuOptions?: OpenFin.ContextMenuOptions;
|
|
36
|
+
backgroundColor?: string;
|
|
37
|
+
customData?: any;
|
|
38
|
+
customContext?: any;
|
|
39
|
+
contentNavigation?: OpenFin.NavigationRules;
|
|
40
|
+
contentRedirect?: OpenFin.NavigationRules;
|
|
41
|
+
detachOnClose?: boolean;
|
|
42
|
+
isClosable?: boolean;
|
|
43
|
+
preventDragOut?: boolean;
|
|
44
|
+
interop?: OpenFin.InteropConfig;
|
|
45
|
+
_internalWorkspaceData?: any;
|
|
46
|
+
throttling?: OpenFin.ViewThrottling;
|
|
47
|
+
chromiumPolicies?: OpenFin.ChromiumPolicies;
|
|
48
|
+
componentName: "view";
|
|
49
|
+
initialUrl: string;
|
|
50
|
+
minWidth?: number;
|
|
51
|
+
};
|
|
52
|
+
position: PanelPosition.Top | PanelPosition.Bottom;
|
|
53
|
+
height: string;
|
|
54
|
+
} | {
|
|
55
|
+
viewOptions: {
|
|
56
|
+
uuid: string;
|
|
57
|
+
api?: OpenFin.ApiSettings;
|
|
58
|
+
name: string;
|
|
59
|
+
url: string;
|
|
60
|
+
target: OpenFin.Identity;
|
|
61
|
+
title?: string;
|
|
62
|
+
contentCreation?: OpenFin.ContentCreationOptions;
|
|
63
|
+
customRequestHeaders?: OpenFin.CustomRequestHeaders[];
|
|
64
|
+
bounds?: OpenFin.Bounds;
|
|
65
|
+
permissions?: Partial<OpenFin.Permissions>;
|
|
66
|
+
processAffinity?: string;
|
|
67
|
+
hotkeys?: OpenFin.Hotkey[];
|
|
68
|
+
preloadScripts?: OpenFin.PreloadScript[];
|
|
69
|
+
manifestUrl?: string;
|
|
70
|
+
zoomLevel?: number;
|
|
71
|
+
experimental?: any;
|
|
72
|
+
fdc3InteropApi?: string;
|
|
73
|
+
enableBeforeUnload?: boolean;
|
|
74
|
+
accelerator?: Partial<OpenFin.Accelerator>;
|
|
75
|
+
autoplayPolicy?: OpenFin.AutoplayPolicyOptions;
|
|
76
|
+
closeBehavior?: "hide" | "detach" | "destroy";
|
|
77
|
+
downloadShelf?: {
|
|
78
|
+
enabled: boolean;
|
|
79
|
+
};
|
|
80
|
+
excludeOptions?: OpenFin.ExcludeOptions;
|
|
81
|
+
autoResize?: OpenFin.AutoResizeOptions;
|
|
82
|
+
contextMenu?: boolean;
|
|
83
|
+
contextMenuSettings?: OpenFin.ContextMenuSettings;
|
|
84
|
+
contextMenuOptions?: OpenFin.ContextMenuOptions;
|
|
85
|
+
backgroundColor?: string;
|
|
86
|
+
customData?: any;
|
|
87
|
+
customContext?: any;
|
|
88
|
+
contentNavigation?: OpenFin.NavigationRules;
|
|
89
|
+
contentRedirect?: OpenFin.NavigationRules;
|
|
90
|
+
detachOnClose?: boolean;
|
|
91
|
+
isClosable?: boolean;
|
|
92
|
+
preventDragOut?: boolean;
|
|
93
|
+
interop?: OpenFin.InteropConfig;
|
|
94
|
+
_internalWorkspaceData?: any;
|
|
95
|
+
throttling?: OpenFin.ViewThrottling;
|
|
96
|
+
chromiumPolicies?: OpenFin.ChromiumPolicies;
|
|
97
|
+
componentName: "view";
|
|
98
|
+
initialUrl: string;
|
|
99
|
+
minWidth?: number;
|
|
100
|
+
};
|
|
101
|
+
position: PanelPosition.Left | PanelPosition.Right;
|
|
102
|
+
width: string;
|
|
103
|
+
extendToTop?: boolean;
|
|
104
|
+
extendToBottom?: boolean;
|
|
105
|
+
})[]>;
|
|
106
|
+
export declare const handlePanelViewDetached: (e: OpenFin.WindowEvents.ViewDetachedEvent) => void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type OpenFin from '@openfin/core';
|
|
2
|
+
export declare function getOFView(identity: OpenFin.Identity): OpenFin.View;
|
|
3
|
+
/**
|
|
4
|
+
* Creates a new View to the landing page at the end of the tab strip
|
|
5
|
+
* which includes the currently selected View
|
|
6
|
+
* @param view the currently selected View
|
|
7
|
+
*/
|
|
8
|
+
export declare const makeNewView: (view: OpenFin.View) => Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Duplicates the current View at the end of the tab strip
|
|
11
|
+
* which includes the currently selected View
|
|
12
|
+
* @param view the currently selected View
|
|
13
|
+
*/
|
|
14
|
+
export declare const duplicateView: (view: OpenFin.View) => Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Detaches the given OpenFin view.
|
|
17
|
+
* This allows for view pooling between windows.
|
|
18
|
+
*
|
|
19
|
+
* @param view the View to detach.
|
|
20
|
+
* @returns a promise that resolves when the View is detached.
|
|
21
|
+
*/
|
|
22
|
+
export declare const detachView: (view: OpenFin.View) => Promise<void>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const searchMenuIdentity: {
|
|
3
|
+
uuid: string;
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
export type SearchViewExpansionState = {
|
|
7
|
+
method?: 'click' | 'keystroke';
|
|
8
|
+
shouldExpand: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type SecureIconState = {
|
|
11
|
+
shouldShow: boolean;
|
|
12
|
+
isSecureSite: boolean;
|
|
13
|
+
};
|
|
14
|
+
declare const AddressBar: React.FC;
|
|
15
|
+
export default AddressBar;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Dispatch, MutableRefObject, SetStateAction } from 'react';
|
|
2
|
+
import { OpenFin } from '@openfin/core';
|
|
3
|
+
import { BrowserSearchMenuKeyboardEvent } from '../../../../../../../common/src/utils/popup-window';
|
|
4
|
+
import { SearchViewExpansionState, SecureIconState } from './AddressBar';
|
|
5
|
+
type AddressBarInputProps = {
|
|
6
|
+
addressSearchResultsView: OpenFin.View;
|
|
7
|
+
addressBarInputRef: MutableRefObject<HTMLInputElement>;
|
|
8
|
+
inputContainerRef: MutableRefObject<HTMLDivElement>;
|
|
9
|
+
addressBarWidth: number;
|
|
10
|
+
isSecure: SecureIconState;
|
|
11
|
+
setShouldExpandMenu: Dispatch<SetStateAction<SearchViewExpansionState>>;
|
|
12
|
+
shouldExpandMenu: SearchViewExpansionState;
|
|
13
|
+
setSearchText: Dispatch<SetStateAction<string>>;
|
|
14
|
+
searchText: string;
|
|
15
|
+
sendKeyboardEventToSearchMenuView: (keyboardEvent: BrowserSearchMenuKeyboardEvent) => void;
|
|
16
|
+
};
|
|
17
|
+
export declare const AddressBarInput: React.FC<AddressBarInputProps>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MenuConfig, ResponseModalConfig, RightMenuConfig } from '../../../../../../../common/src/utils/menu-config';
|
|
2
|
+
type PageCloseMenuOptions = {
|
|
3
|
+
textInputOptions: {
|
|
4
|
+
placeholder: string;
|
|
5
|
+
defaultValue: string;
|
|
6
|
+
};
|
|
7
|
+
titlePrefix?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const getPageCloseMenu: ({ textInputOptions, titlePrefix }: PageCloseMenuOptions) => Promise<ResponseModalConfig>;
|
|
10
|
+
type WindowCloseMenuOptions = {
|
|
11
|
+
unsavedPagesCount: number;
|
|
12
|
+
};
|
|
13
|
+
export declare const getBrowserWindowCloseMenu: ({ unsavedPagesCount }: WindowCloseMenuOptions) => Promise<ResponseModalConfig>;
|
|
14
|
+
export declare const getColorLinkingMenu: (title: string) => Promise<RightMenuConfig>;
|
|
15
|
+
export declare const getLayoutsMenu: (title: string) => Promise<RightMenuConfig>;
|
|
16
|
+
export declare const getSaveMenu: () => Promise<MenuConfig>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { AttachedPage, Site } from '../../../../../client-api-platform/src/shapes';
|
|
3
|
+
type CommandBarProps = {
|
|
4
|
+
selectedResult?: Site;
|
|
5
|
+
openPages: AttachedPage[];
|
|
6
|
+
};
|
|
7
|
+
export declare const COMMAND_BAR_HEIGHT = 40;
|
|
8
|
+
export declare const CommandBar: ({ selectedResult, openPages }: CommandBarProps) => JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IconOptionsType } from './ResultIcon';
|
|
3
|
+
export declare const SiteIcon: React.FC<{
|
|
4
|
+
url: string;
|
|
5
|
+
iconOptions?: IconOptionsType;
|
|
6
|
+
isSelected?: boolean;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const PageIcon: React.FC<{
|
|
9
|
+
isSelected?: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const WorkspaceIcon: React.FC<{
|
|
12
|
+
isSelected?: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const FavoriteIcon: React.FC<{
|
|
15
|
+
url: string;
|
|
16
|
+
isSelected: boolean;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const VectorIcon: () => JSX.Element;
|
|
19
|
+
export declare const ReturnIcon: () => JSX.Element;
|
|
20
|
+
export declare const OptionIcon: () => JSX.Element;
|
|
21
|
+
export declare const KeyIcon: ({ text }: {
|
|
22
|
+
text: string;
|
|
23
|
+
}) => JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { AppSite } from '../../../../../client-api-platform/src/shapes';
|
|
3
|
+
export type IconOptionsType = NonNullable<AppSite['options']>['icon'];
|
|
4
|
+
type ResultIconProps = {
|
|
5
|
+
siteType: 'app' | 'website' | 'page' | 'workspace';
|
|
6
|
+
icon: string;
|
|
7
|
+
isSelected: boolean;
|
|
8
|
+
iconOptions?: IconOptionsType;
|
|
9
|
+
};
|
|
10
|
+
export declare const ResultIcon: ({ siteType, icon, isSelected, iconOptions }: ResultIconProps) => JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AttachedPage } from '../../../../../common/src/api/pages/shapes';
|
|
2
|
+
/**
|
|
3
|
+
* Gets the index of the page that should be active once current active page is removed.
|
|
4
|
+
* @param detachedActivePageIndex Index of the active page prior to being removed
|
|
5
|
+
* @param filteredPages Remaining pages
|
|
6
|
+
* @returns page that should be active once current active page is removed
|
|
7
|
+
*/
|
|
8
|
+
export declare const getNextActivePageOnRemoval: (detachedActivePageIndex: number, filteredPages: AttachedPage[]) => AttachedPage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CONTROL_BAR_HEIGHT = 40;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type OpenFin from '@openfin/core';
|
|
2
|
+
import { HTMLElementWithAria } from '../../../../common/src/utils/a11y';
|
|
3
|
+
/**
|
|
4
|
+
* For clicks within a tab hat, returns the name of the attached view.
|
|
5
|
+
* Returns `null` if click is not within a tab hat.
|
|
6
|
+
*/
|
|
7
|
+
export declare const getViewNameFromClickEvent: (event: React.MouseEvent) => string;
|
|
8
|
+
export declare function addViewTabGroupEventListener(tabGroup: HTMLElement, isPageLocked: boolean, shouldRemoveListener?: boolean): void;
|
|
9
|
+
export declare const getViewUrl: (viewIdentity: OpenFin.Identity) => Promise<string>;
|
|
10
|
+
export declare function getViewTabHat(viewName: string, containerRef?: HTMLElement): HTMLElementWithAria;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BookmarkNode } from '../../../../../common/src/api/pages/shapes';
|
|
3
|
+
import { Props as BaseButtonProps } from '../../../../../common/src/components/BaseButton/BaseButton';
|
|
4
|
+
interface BookmarkItemProps {
|
|
5
|
+
bookmark: BookmarkNode;
|
|
6
|
+
isRenaming: boolean;
|
|
7
|
+
handleNavigateToFolder: (folderId: string) => void;
|
|
8
|
+
setRenamingNode: (id?: string) => void;
|
|
9
|
+
}
|
|
10
|
+
declare const _default: import("react").NamedExoticComponent<BookmarkItemProps>;
|
|
11
|
+
export default _default;
|
|
12
|
+
export declare const BookmarkItemButton: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<BaseButtonProps & import("react").HTMLAttributes<HTMLButtonElement> & import("react").RefAttributes<HTMLButtonElement>>, import("styled-components").DefaultTheme, BaseButtonProps & {
|
|
13
|
+
isRenaming?: boolean;
|
|
14
|
+
}, never>;
|
|
15
|
+
export declare const BookmarkItemButtonContent: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
16
|
+
export declare const BookmarkFolderIcon: React.FC;
|
|
17
|
+
export declare const BookmarkFavoritesIcon: React.FC;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BookmarkNode } from '../../../../../common/src/api/pages/shapes';
|
|
3
|
+
interface BookmarksPanelHeaderProps {
|
|
4
|
+
folder: BookmarkNode;
|
|
5
|
+
handleNavigateToFolder: (folderId: string) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const BookmarksFolderHeader: React.FC<BookmarksPanelHeaderProps>;
|
|
8
|
+
export default BookmarksFolderHeader;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare const BookmarksPanel: () => JSX.Element;
|
|
3
|
+
export default BookmarksPanel;
|
|
4
|
+
export declare const TextHelp: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, import("react").HTMLAttributes<HTMLElement> & {
|
|
5
|
+
color?: "background6" | "textDefault";
|
|
6
|
+
children: import("react").ReactNode;
|
|
7
|
+
size?: "small" | "base" | "large" | "xsmall" | "xlarge" | "xxlarge" | "xxxlarge" | "xxxxlarge";
|
|
8
|
+
weight?: "normal" | "bold";
|
|
9
|
+
}, never>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BookmarkNode } from '../../../../../common/src/api/pages/shapes';
|
|
3
|
+
import { CategorizedBookmarkSearchResults } from './utils';
|
|
4
|
+
interface BookmarksResultsProps {
|
|
5
|
+
currentFolder: BookmarkNode;
|
|
6
|
+
bookmarksList: BookmarkNode[];
|
|
7
|
+
categorizedSearchResults: CategorizedBookmarkSearchResults;
|
|
8
|
+
isSearchQueryResults: boolean;
|
|
9
|
+
renamingNodeId: string | undefined;
|
|
10
|
+
handleNavigateToFolder: (folderId: string) => void;
|
|
11
|
+
setRenamingNode: (id?: string) => void;
|
|
12
|
+
}
|
|
13
|
+
declare const BookmarksResults: React.FC<BookmarksResultsProps>;
|
|
14
|
+
export default BookmarksResults;
|
|
15
|
+
export declare const TextHeader: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ChangeEvent } from 'react';
|
|
2
|
+
interface BookmarksSearchInputProps {
|
|
3
|
+
handleSearchInputChange: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
4
|
+
clearSearchInput: () => void;
|
|
5
|
+
}
|
|
6
|
+
declare const BookmarksSearchInput: React.FC<BookmarksSearchInputProps>;
|
|
7
|
+
export default BookmarksSearchInput;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MouseEvent } from 'react';
|
|
2
|
+
import { BookmarkNode } from '../../../../../common/src/api/pages/shapes';
|
|
3
|
+
/**
|
|
4
|
+
* Custom hook that returns function to handle navigation for a click on a bookmark item.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Function} Function to handle bookmark navigation click.
|
|
7
|
+
*/
|
|
8
|
+
export declare const useBookmarkNavigation: () => (bookmark: BookmarkNode, event: MouseEvent<HTMLButtonElement>) => Promise<void>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BookmarkNode } from '../../../../../common/src/api/pages/shapes';
|
|
2
|
+
import { CategorizedBookmarkSearchResults } from './utils';
|
|
3
|
+
/**
|
|
4
|
+
* Custom hook that manages and sorts bookmark search results and returns an object of categorized bookmarks
|
|
5
|
+
* and actions to update the search query.
|
|
6
|
+
*
|
|
7
|
+
* @returns {Object} An object containing the following:
|
|
8
|
+
* - `categorizedSearchResults` : An object containing two arrays, `bookmarksInFolder` and `bookmarksOutsideFolder`.
|
|
9
|
+
* - `handleSearchInputChange` : A function to update the search query phrase to retrieve new search results.
|
|
10
|
+
* - `clearSearchInput` : A function to clear the search query and reset the panel to its previous state.
|
|
11
|
+
*/
|
|
12
|
+
export declare const useBookmarksSearch: (currentFolder: BookmarkNode, setSearchQuery: (query: string) => void, updateBookmarksResults: (folderId?: string, navigateToFolder?: boolean) => void) => {
|
|
13
|
+
categorizedSearchResults: CategorizedBookmarkSearchResults;
|
|
14
|
+
handleSearchInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
15
|
+
clearSearchInput: () => void;
|
|
16
|
+
};
|
package/browser/src/components/PanelContainer/BookmarksPanel/useUpdateBookmarkResultsActions.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BookmarkNode } from '../../../../../common/src/api/pages/shapes';
|
|
2
|
+
/**
|
|
3
|
+
* Custom hook that retrieves the root node corresponding to All Bookmarks on initial render and
|
|
4
|
+
* provides actions to update bookmark results.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Object} An object containing the following:
|
|
7
|
+
* - `bookmarksList` : `BookmarkNode[]` - A sorted list of the current folder's child bookmarks and folders.
|
|
8
|
+
* - `currentFolder` : `BookmarkNode` - The currently active folder.
|
|
9
|
+
* - `deleteBookmark` : A function to update currentFolder and bookmarksList given a specific folderId.
|
|
10
|
+
*/
|
|
11
|
+
export declare const useUpdateBookmarkResultsActions: () => {
|
|
12
|
+
bookmarksList: BookmarkNode[];
|
|
13
|
+
currentFolder: BookmarkNode;
|
|
14
|
+
updateBookmarksResults: (folderId?: string) => Promise<void>;
|
|
15
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BookmarkNode } from '../../../../../common/src/api/pages/shapes';
|
|
2
|
+
export type CategorizedBookmarkSearchResults = {
|
|
3
|
+
bookmarksInFolder: BookmarkNode[];
|
|
4
|
+
bookmarksOutsideFolder: BookmarkNode[];
|
|
5
|
+
};
|
|
6
|
+
export declare const renderBookmarkNodeTitle: (title: string) => string;
|
|
7
|
+
export declare const categorizeSearchResults: (bookmarks: BookmarkNode[], folderId: string) => CategorizedBookmarkSearchResults;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PanelPosition } from '../../../../common/src/api/pages/shapes';
|
|
3
|
+
export declare const getSizeWithoutCSSUnits: (cssValue?: string) => number;
|
|
4
|
+
interface Props {
|
|
5
|
+
position: PanelPosition;
|
|
6
|
+
}
|
|
7
|
+
declare const PanelContainer: React.FC<Props>;
|
|
8
|
+
export default PanelContainer;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Get the width of the search menu based on the parent window width and the expanded state of the menu
|
|
3
|
+
* @param parentWindowWidth - The width of the parent window
|
|
4
|
+
* @returns {number} The calculated width of the search menu
|
|
5
|
+
*/
|
|
6
|
+
export declare const getSearchMenuWidth: (parentWindowWidth: number) => number;
|
|
7
|
+
/**
|
|
8
|
+
* @description Get the height of the search menu based on the parent window height, the expanded state of the menu, and the UI state of the menu
|
|
9
|
+
* @param parentWindowHeight - The height of the parent window
|
|
10
|
+
* @param shouldShowEmptySearchInputContainer - Whether the empty search input UI should be shown
|
|
11
|
+
* @param container - The container for the search menu
|
|
12
|
+
* @returns {number} The calculated height of the search menu
|
|
13
|
+
*/
|
|
14
|
+
export declare const getSearchMenuHeight: (parentWindowHeight: number, shouldShowEmptySearchInputContainer: boolean, container: HTMLElement) => number;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SearchSitesResponse, Site } from '../../../../../client-api-platform/src/index';
|
|
2
|
+
export declare const MENU_BOUNDS: {
|
|
3
|
+
expanded: {
|
|
4
|
+
minWidth: number;
|
|
5
|
+
maxWidth: number;
|
|
6
|
+
};
|
|
7
|
+
emptySearchInputContainer: {
|
|
8
|
+
minHeight: number;
|
|
9
|
+
maxHeight: number;
|
|
10
|
+
};
|
|
11
|
+
percentOfParentWidth: number;
|
|
12
|
+
resultsContainerMaxHeight: number;
|
|
13
|
+
parentWindowHeightOffset: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Custom hook to adjust the dimensions of the search menu view based on various conditions. The search menu will expand and collapse when opened or closed.
|
|
17
|
+
* When open, the search menu will expand to include all of the content (either results or curated content) until the height reaches the maximum.
|
|
18
|
+
* The search menu dimensions are sent to the browser window, where the view is resized accordingly.
|
|
19
|
+
*
|
|
20
|
+
* @param {React.RefObject<HTMLElement>} containerRef - Ref object pointing to the container element of the search menu.
|
|
21
|
+
* @param {boolean} shouldExpand - Boolean indicating if the search results view should expand.
|
|
22
|
+
* @param {React.RefObject<BroadcastChannel>} searchMenuChannel - Ref object for the broadcast channel used to communicate with the browser window.
|
|
23
|
+
* @param {SearchSitesResponse} searchResults - The current search results. (Displayed in the ResultsContainer)
|
|
24
|
+
* @param {string} searchText - String representing the current text in the address input.
|
|
25
|
+
* @param {Site[]} recentlyVisited - Array of recently visited sites. (Displayed in the EmptySearchInputContainer)
|
|
26
|
+
* @param {Site[]} curatedContent - Array of curated content sites. (Displayed in the EmptySearchInputContainer)
|
|
27
|
+
*/
|
|
28
|
+
declare const useAdjustSearchMenuViewDimensions: (containerRef: React.RefObject<HTMLElement>, shouldExpand: boolean, searchMenuChannel: React.RefObject<BroadcastChannel>, searchResults: SearchSitesResponse, recentlyVisited: Site[], curatedContent: Site[], shouldShowEmptySearchContainer: boolean) => void;
|
|
29
|
+
export default useAdjustSearchMenuViewDimensions;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Dispatch, MutableRefObject, SetStateAction } from 'react';
|
|
2
|
+
import { OpenFin } from '@openfin/core';
|
|
3
|
+
import { SearchViewExpansionState } from '../../../../browser/src/components/ControlBar/LeftControlsContainer/EnterpriseNavigationContainer/AddressBar/AddressBar';
|
|
4
|
+
/**
|
|
5
|
+
* Custom hook that initializes a channel between the browser window and the search view to receive communications from the search view.
|
|
6
|
+
* These messages include navigation requests, keyboard events to modify the search text while the search view is focused, and view resize requests,
|
|
7
|
+
*
|
|
8
|
+
* @param {OpenFin.Identity[]} selectedViews - Array of currently selected views in the browser window.
|
|
9
|
+
* @param {MutableRefObject<BroadcastChannel>} searchMenuChannel - Ref object for the broadcast channel used to communicate with the browser window.
|
|
10
|
+
* @param {MutableRefObject<HTMLDivElement>} inputContainerRef - Ref object associated with the address input DOM element.
|
|
11
|
+
* @param {number} offsetTop - Number indicating the offset in pixels from the top of the browser window at which the search results view should be drawn.
|
|
12
|
+
* @param {OpenFin.View} addressSearchResultsView - View object corresponding to the search results view.
|
|
13
|
+
* @param {SearchViewExpansionState} shouldExpandMenu - Object with boolean indicating if the search results view should expand and the method of expansion.
|
|
14
|
+
* @param {Dispatch<SetStateAction<number>>} setAddressBarWidth - Function that updates the width in pixels of the address input bar in its expanded state.
|
|
15
|
+
* @param {Dispatch<SetStateAction<SearchViewExpansionState>>} setShouldExpandMenu - Function that updates whether the menu should expand and the method of expansion.
|
|
16
|
+
* @param {Dispatch<SetStateAction<string>>} setSearchText - Function that updates the search text in the address input.
|
|
17
|
+
*/
|
|
18
|
+
export declare const useInitChannelToSearchMenuView: (selectedViews: OpenFin.Identity[], searchMenuChannel: MutableRefObject<BroadcastChannel>, inputContainerRef: MutableRefObject<HTMLDivElement>, offsetTop: number, addressSearchResultsView: OpenFin.View, shouldExpandMenu: SearchViewExpansionState, setAddressBarWidth: Dispatch<SetStateAction<number>>, setShouldExpandMenu: Dispatch<SetStateAction<SearchViewExpansionState>>, setSearchText: Dispatch<SetStateAction<string>>) => void;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import OpenFin from '@openfin/core';
|
|
2
|
+
import { BrowserSearchMenuKeyboardEvent } from '../../../../common/src/utils/popup-window';
|
|
3
|
+
import type { AttachedPageInternal } from '../../../../common/src/api/pages/shapes';
|
|
4
|
+
import { SearchViewExpansionState } from '../../components/ControlBar/LeftControlsContainer/EnterpriseNavigationContainer/AddressBar/AddressBar';
|
|
5
|
+
/**
|
|
6
|
+
* Custom hook that sends messages to the search view with updates about the browser window's views, search text changes, and whether
|
|
7
|
+
* the address search view should expand.
|
|
8
|
+
*
|
|
9
|
+
* @param {OpenFin.Identity[]} selectedViews - Array of currently selected views in the browser window.
|
|
10
|
+
* @param {BroadcastChannel} searchMenuChannel - The broadcast channel used to communicate with the search results view.
|
|
11
|
+
* @param {AttachedPageInternal} activePage - Object representing the currently active page in the browser window.
|
|
12
|
+
* @param {SearchViewExpansionState} shouldExpandMenu - Object with boolean indicating if the search results view should expand and the method of expansion.
|
|
13
|
+
* @param {string} searchText - String representing the current text in the address input.
|
|
14
|
+
* @returns {{ sendKeyboardEventToSearchMenuView: (keyboardEvent: BrowserSearchMenuKeyboardEvent) => void }} - Object containing a function to send keyboard events to the search menu view.
|
|
15
|
+
*/
|
|
16
|
+
export declare const usePostMessageToSearchMenuView: (selectedViews: OpenFin.Identity[], searchMenuChannel: BroadcastChannel, activePage: AttachedPageInternal, shouldExpandMenu: SearchViewExpansionState, searchText: string) => {
|
|
17
|
+
sendKeyboardEventToSearchMenuView: (keyboardEvent: BrowserSearchMenuKeyboardEvent) => Promise<void>;
|
|
18
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type OpenFin from '@openfin/core';
|
|
2
|
+
import { SecureIconState } from '../../../../browser/src/components/ControlBar/LeftControlsContainer/EnterpriseNavigationContainer/AddressBar/AddressBar';
|
|
3
|
+
/**
|
|
4
|
+
* Custom hook that manages the contents of the address input as users interact with the browser and navigate views.
|
|
5
|
+
* This hook handles the auto-focusing the address input on the landing page, registers handlers for view URL changes,
|
|
6
|
+
* and manages the state of the secure icon displayed next to valid addresses.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} searchText - String representing the current text in the address input.
|
|
9
|
+
* @param {OpenFin.Identity[]} selectedViews - Array of currently selected views in the browser window.
|
|
10
|
+
* @param {React.MutableRefObject<HTMLInputElement>} addressBarInputRef - Ref object associated with the address input DOM element.
|
|
11
|
+
* @param {SecureIconState} isSecure - Object describing whether the currently focused view's site is secure and whether to show an icon in the address bar.
|
|
12
|
+
* @param {Dispatch<SetStateAction<SearchViewExpansionState>>} setShouldExpandMenu - Function that updates whether the menu should expand and the method of expansion.
|
|
13
|
+
* @param {React.Dispatch<React.SetStateAction<SecureIconState>>} setIsSecure - Function that updates whether the currently focused view's site is secure and whether to show an icon in the address bar.
|
|
14
|
+
*/
|
|
15
|
+
declare const useSearchMenuViewLifecycleManager: (searchText: string, selectedViews: OpenFin.Identity[], addressBarInputRef: React.MutableRefObject<HTMLInputElement>, isSecure: SecureIconState, setSearchText: React.Dispatch<React.SetStateAction<string>>, setIsSecure: React.Dispatch<React.SetStateAction<SecureIconState>>) => void;
|
|
16
|
+
export default useSearchMenuViewLifecycleManager;
|