Skip to content

Commit bee7f06

Browse files
committed
CONSOLE-4701: Add fontsize+theme to YAML editor
1 parent 86c7b34 commit bee7f06

File tree

5 files changed

+303
-94
lines changed

5 files changed

+303
-94
lines changed

frontend/packages/console-shared/src/components/editor/BasicCodeEditor.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as React from 'react';
1+
import { FC, useContext } from 'react';
22
import { loader } from '@monaco-editor/react';
33
import { CodeEditor } from '@patternfly/react-code-editor';
44
import { css } from '@patternfly/react-styles';
@@ -20,9 +20,9 @@ loader.config({ monaco });
2020
* Note that it is important that this is the only component that imports
2121
* monaco-editor, to avoid fetching files from a 3rd-party CDN.
2222
*/
23-
export const BasicCodeEditor: React.FC<BasicCodeEditorProps> = (props) => {
23+
export const BasicCodeEditor: FC<BasicCodeEditorProps> = (props) => {
2424
const { t } = useTranslation('console-shared');
25-
const theme = React.useContext(ThemeContext);
25+
const theme = useContext(ThemeContext);
2626

2727
return (
2828
<ErrorBoundaryInline>
@@ -42,17 +42,17 @@ export const BasicCodeEditor: React.FC<BasicCodeEditorProps> = (props) => {
4242
{...props}
4343
className={css('co-code-editor', props.className)}
4444
editorProps={{
45-
...props?.editorProps,
4645
theme: `console-${theme}`,
46+
...props?.editorProps,
4747
beforeMount: (monacoInstance) => {
4848
defineThemes(monacoInstance?.editor);
4949
window.monaco = monacoInstance; // for e2e tests
5050
props?.editorProps?.beforeMount?.(monacoInstance);
5151
},
5252
}}
5353
options={{
54-
...props?.options,
5554
fontFamily: 'var(--pf-t--global--font--family--mono)',
55+
...props?.options,
5656
}}
5757
/>
5858
</ErrorBoundaryInline>

frontend/packages/console-shared/src/constants/common.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ export const COMMUNITY_PROVIDERS_WARNING_USERSETTINGS_KEY = `${USERSETTINGS_PREF
4646
export const PINNED_RESOURCES_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/pinned-resources`;
4747
export const COLUMN_MANAGEMENT_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/table-columns`;
4848
export const LOG_WRAP_LINES_USERSETTINGS_KEY = `${USERSETTINGS_PREFIX}.log.wrapLines`;
49+
export const OVERRIDE_YAML_EDITOR_THEME_USER_SETTING_KEY = `${USERSETTINGS_PREFIX}.overrideYAMLEditorTheme`;
50+
export const OVERRIDE_YAML_EDITOR_THEME_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/overrideYAMLEditorTheme`;
51+
export const CUSTOM_YAML_EDITOR_FONT_SIZE_USER_SETTING_KEY = `${USERSETTINGS_PREFIX}.customYAMLEditorFontSize`;
52+
export const CUSTOM_YAML_EDITOR_FONT_SIZE_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/customYAMLEditorFontSize`;
4953
export const SHOW_YAML_EDITOR_TOOLTIPS_USER_SETTING_KEY = `${USERSETTINGS_PREFIX}.showYAMLEditorTooltips`;
5054
export const SHOW_YAML_EDITOR_TOOLTIPS_LOCAL_STORAGE_KEY = `${STORAGE_PREFIX}/showYAMLEditorTooltips`;
5155
export const SHOW_YAML_EDITOR_STICKY_SCROLL_USER_SETTING_KEY = `${USERSETTINGS_PREFIX}.showYAMLEditorStickyScroll`;

frontend/public/components/edit-yaml.tsx

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,10 @@ import { ActionGroup, Alert, Button } from '@patternfly/react-core';
99
import { DownloadIcon } from '@patternfly/react-icons/dist/esm/icons/download-icon';
1010
import { Trans, useTranslation } from 'react-i18next';
1111
import { useNavigate } from 'react-router-dom-v5-compat';
12-
import {
13-
FLAGS,
14-
ALL_NAMESPACES_KEY,
15-
SHOW_YAML_EDITOR_TOOLTIPS_USER_SETTING_KEY,
16-
SHOW_YAML_EDITOR_TOOLTIPS_LOCAL_STORAGE_KEY,
17-
SHOW_YAML_EDITOR_STICKY_SCROLL_USER_SETTING_KEY,
18-
SHOW_YAML_EDITOR_STICKY_SCROLL_LOCAL_STORAGE_KEY,
19-
} from '@console/shared/src/constants/common';
12+
import { FLAGS, ALL_NAMESPACES_KEY } from '@console/shared/src/constants/common';
2013
import { getBadgeFromType } from '@console/shared/src/components/badges/badge-factory';
2114
import { getResourceSidebarSamples } from '@console/shared/src/utils/sample-utils';
2215
import { useTelemetry } from '@console/shared/src/hooks/useTelemetry';
23-
import { useUserSettingsCompatibility } from '@console/shared/src/hooks/useUserSettingsCompatibility';
2416
import { useResourceConnectionHandler } from '@console/shared/src/hooks/useResourceConnectionHandler';
2517

2618
import PageBody from '@console/shared/src/components/layout/PageBody';
@@ -64,7 +56,7 @@ import { findOwner } from '../module/k8s/managed-by';
6456
import { ClusterServiceVersionModel } from '@console/operator-lifecycle-manager/src/models';
6557
import { definitionFor } from '../module/k8s/swagger';
6658
import { ImportYAMLResults } from './import-yaml-results';
67-
import { EditYamlSettingsModal } from './modals/edit-yaml-settings-modal';
59+
import { EditYamlSettingsModal, useEditYamlSettings } from './modals/edit-yaml-settings-modal';
6860
import { CodeEditorControl } from '@patternfly/react-code-editor';
6961
import { CompressIcon } from '@patternfly/react-icons/dist/js/icons/compress-icon';
7062
import { ExpandIcon } from '@patternfly/react-icons/dist/js/icons/expand-icon';
@@ -73,6 +65,7 @@ import { RootState } from '@console/internal/redux';
7365
import { getActiveNamespace } from '@console/internal/reducers/ui';
7466
import { useOverlay } from '@console/dynamic-plugin-sdk/src/app/modal-support/useOverlay';
7567
import { ErrorModal } from './modals/error-modal';
68+
import type { CodeEditorProps } from '@console/dynamic-plugin-sdk/src/extensions/console-types';
7669

7770
const generateObjToLoad = (
7871
templateExtensions: Parameters<typeof getYAMLTemplates>[0],
@@ -189,19 +182,7 @@ const EditYAMLInner: React.FC<EditYAMLInnerProps> = (props) => {
189182
),
190183
);
191184

192-
const [showTooltips] = useUserSettingsCompatibility(
193-
SHOW_YAML_EDITOR_TOOLTIPS_USER_SETTING_KEY,
194-
SHOW_YAML_EDITOR_TOOLTIPS_LOCAL_STORAGE_KEY,
195-
true,
196-
true,
197-
);
198-
199-
const [stickyScrollEnabled] = useUserSettingsCompatibility(
200-
SHOW_YAML_EDITOR_STICKY_SCROLL_USER_SETTING_KEY,
201-
SHOW_YAML_EDITOR_STICKY_SCROLL_LOCAL_STORAGE_KEY,
202-
true,
203-
true,
204-
);
185+
const { theme, fontSize, showTooltips, stickyScrollEnabled } = useEditYamlSettings();
205186

206187
const [callbackCommand, setCallbackCommand] = React.useState('');
207188
const [showReplaceCodeModal, setShowReplaceCodeModal] = React.useState(false);
@@ -803,7 +784,7 @@ const EditYAMLInner: React.FC<EditYAMLInnerProps> = (props) => {
803784
}
804785

805786
const readOnly = props.readOnly || notAllowed;
806-
const options = { readOnly, scrollBeyondLastLine: false };
787+
const options: CodeEditorProps['options'] = { fontSize, readOnly, scrollBeyondLastLine: false };
807788
const model = getModel(props.obj);
808789
const { samples, snippets } = model
809790
? getResourceSidebarSamples(model, yamlSamplesList, t)
@@ -876,9 +857,10 @@ const EditYAMLInner: React.FC<EditYAMLInnerProps> = (props) => {
876857
<div className={css('yaml-editor', customClass)} ref={editor}>
877858
{showReplaceCodeModal && <ReplaceCodeModal handleCodeReplace={handleCodeReplace} />}
878859
<CodeEditor
860+
editorProps={theme === 'default' ? undefined : { theme: `console-${theme}` }}
861+
options={options}
879862
isCopyEnabled={canDownload}
880863
ref={monacoRef}
881-
options={options}
882864
showShortcuts={!genericYAML && !isFullscreen}
883865
toolbarLinks={
884866
sidebarSwitch

0 commit comments

Comments
 (0)