-
Notifications
You must be signed in to change notification settings - Fork 384
Expand file tree
/
Copy pathCodeEditorBasic.tsx
More file actions
98 lines (91 loc) · 2.95 KB
/
CodeEditorBasic.tsx
File metadata and controls
98 lines (91 loc) · 2.95 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import { useState } from 'react';
import { CodeEditor, Language } from '@patternfly/react-code-editor';
import { Checkbox } from '@patternfly/react-core';
export const CodeEditorBasic: React.FunctionComponent = () => {
const [isDarkTheme, setIsDarkTheme] = useState(false);
const [isHighContrastTheme, setIsHighContrastTheme] = useState(false);
const [isLineNumbersVisible, setIsLineNumbersVisible] = useState(true);
const [isReadOnly, setIsReadOnly] = useState(false);
const [isMinimapVisible, setIsMinimapVisible] = useState(false);
const toggleDarkTheme = (checked) => {
setIsDarkTheme(checked);
};
const toggleHighContrastTheme = (checked) => {
setIsHighContrastTheme(checked);
};
const toggleLineNumbers = (checked) => {
setIsLineNumbersVisible(checked);
};
const toggleReadOnly = (checked) => {
setIsReadOnly(checked);
};
const toggleMinimap = (checked) => {
setIsMinimapVisible(checked);
};
const onEditorDidMount = (editor, monaco) => {
editor.layout();
editor.focus();
monaco.editor.getModels()[0].updateOptions({ tabSize: 5 });
};
const onChange = (value) => {
// eslint-disable-next-line no-console
console.log(value);
};
return (
<>
<Checkbox
label="Dark theme"
isChecked={isDarkTheme}
onChange={(_event, checked) => toggleDarkTheme(checked)}
aria-label="dark theme checkbox"
id="toggle-theme"
name="toggle-theme"
/>
<Checkbox
label="High contrast theme"
isChecked={isHighContrastTheme}
onChange={(_event, checked) => toggleHighContrastTheme(checked)}
aria-label="high contrast theme checkbox"
id="toggle-high-contrast-theme"
name="toggle-high-contrast-theme"
/>
<Checkbox
label="Line numbers"
isChecked={isLineNumbersVisible}
onChange={(_event, checked) => toggleLineNumbers(checked)}
aria-label="line numbers checkbox"
id="toggle-line-numbers"
name="toggle-line-numbers"
/>
<Checkbox
label="Read only"
isChecked={isReadOnly}
onChange={(_event, checked) => toggleReadOnly(checked)}
aria-label="read only checkbox"
id="toggle-read-only"
name="toggle-read-only"
/>
<Checkbox
label="Minimap"
isChecked={isMinimapVisible}
onChange={(_event, checked) => toggleMinimap(checked)}
aria-label="display minimap checkbox"
id="toggle-minimap"
name="toggle-minimap"
/>
<CodeEditor
isDarkTheme={isDarkTheme}
isHighContrastTheme={isHighContrastTheme}
isLineNumbersVisible={isLineNumbersVisible}
isReadOnly={isReadOnly}
isMinimapVisible={isMinimapVisible}
isLanguageLabelVisible
code="Some example content"
onChange={onChange}
language={Language.javascript}
onEditorDidMount={onEditorDidMount}
height="400px"
/>
</>
);
};