-
Notifications
You must be signed in to change notification settings - Fork 8.3k
/
Copy pathhelp_menu.component.tsx
72 lines (64 loc) · 2.1 KB
/
help_menu.component.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import React, { FC, lazy, Suspense, useCallback } from 'react';
import { EuiButtonEmpty, EuiSpacer } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { ChromeHelpMenuActions } from '@kbn/core/public';
import { ExpressionFunction } from '@kbn/expressions-plugin';
import { CanvasPluginServices } from '../../services';
let FunctionReferenceGenerator: null | React.LazyExoticComponent<any> = null;
if (process.env.NODE_ENV === 'development') {
FunctionReferenceGenerator = lazy(() =>
import('../function_reference_generator').then((module) => ({
default: module.FunctionReferenceGenerator,
}))
);
}
const strings = {
getKeyboardShortcutsLinkLabel: () =>
i18n.translate('xpack.canvas.helpMenu.keyboardShortcutsLinkLabel', {
defaultMessage: 'Keyboard shortcuts',
}),
};
interface Props {
functionRegistry: Record<string, ExpressionFunction>;
notifyService: CanvasPluginServices['notify'];
showKeyboardShortcutsDocFlyout: () => void;
hideHelpMenu: ChromeHelpMenuActions['hideHelpMenu'];
}
export const HelpMenu: FC<Props> = ({
functionRegistry,
notifyService,
hideHelpMenu,
showKeyboardShortcutsDocFlyout,
}) => {
const onKeyboardShortcutButtonClick = useCallback(() => {
hideHelpMenu();
showKeyboardShortcutsDocFlyout();
}, [hideHelpMenu, showKeyboardShortcutsDocFlyout]);
return (
<>
<EuiButtonEmpty
size="s"
flush="left"
iconType="keyboardShortcut"
onClick={onKeyboardShortcutButtonClick}
>
{strings.getKeyboardShortcutsLinkLabel()}
</EuiButtonEmpty>
{FunctionReferenceGenerator ? (
<Suspense fallback={null}>
<EuiSpacer size="xs" />
<FunctionReferenceGenerator
functionRegistry={functionRegistry}
notifyService={notifyService}
/>
</Suspense>
) : null}
</>
);
};