From 1572e8543cf4f738e1c437fdc2c245f7a5e4088b Mon Sep 17 00:00:00 2001 From: Rebecca Alpert Date: Tue, 17 Sep 2024 14:16:01 -0400 Subject: [PATCH 1/3] fix(CodeEditor): Set default height The docs state that the default height is 100%. However, the examples just break if you don't pass in a height. This should help. --- .../src/components/CodeEditor/CodeEditor.tsx | 26 +++++++-- .../CodeEditor/examples/CodeEditor.md | 6 ++ .../CodeEditor/examples/CodeEditorModal.tsx | 57 +++++++++++++++++++ 3 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 packages/react-code-editor/src/components/CodeEditor/examples/CodeEditorModal.tsx diff --git a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx index ac7fc3f5d4b..7866e08bad7 100644 --- a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx +++ b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx @@ -250,7 +250,6 @@ class CodeEditor extends React.Component { onEditorDidMount: () => {}, language: Language.plaintext, isDarkTheme: false, - height: '', width: '', isLineNumbersVisible: true, isReadOnly: false, @@ -641,7 +640,13 @@ class CodeEditor extends React.Component { ); const editor = ( -
+
{ ); return ( -
+
{isUploadEnabled || providedEmptyState ? (
{ className={css(isLoading && fileUploadStyles.modifiers.loading)} > {editorHeader} -
+
{(showEmptyState || providedEmptyState) && !value ? emptyState : editor} @@ -677,7 +689,11 @@ class CodeEditor extends React.Component { ) : ( <> {editorHeader} - {showEditor &&
{editor}
} + {showEditor && ( +
+ {editor} +
+ )} )}
diff --git a/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditor.md b/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditor.md index 62c95d96cd1..a02f7d36e76 100644 --- a/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditor.md +++ b/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditor.md @@ -43,3 +43,9 @@ These examples below are the shortcuts that we recommend describing in the popov ```ts file="CodeEditorCustomControl.tsx" ``` + +### With 100% height + +```ts file="CodeEditorModal.tsx" + +``` diff --git a/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditorModal.tsx b/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditorModal.tsx new file mode 100644 index 00000000000..531b61bb396 --- /dev/null +++ b/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditorModal.tsx @@ -0,0 +1,57 @@ +import React from 'react'; +import { CodeEditor, Language } from '@patternfly/react-code-editor'; +import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@patternfly/react-core'; + +export const CodeEditorFullHeight: React.FunctionComponent = () => { + const [isModalOpen, setIsModalOpen] = React.useState(false); + + const onEditorDidMount = (editor, monaco) => { + editor.layout(); + editor.focus(); + monaco.editor.getModels()[0].updateOptions({ tabSize: 5 }); + }; + + const handleModalToggle = (_event: KeyboardEvent | React.MouseEvent) => { + setIsModalOpen(!isModalOpen); + }; + + const onChange = (value) => { + // eslint-disable-next-line no-console + console.log(value); + }; + + return ( + + + + + + + + + + + + + + ); +}; From 4b7c7123e09dce654fe540c97e4648034c42e498 Mon Sep 17 00:00:00 2001 From: Rebecca Alpert Date: Wed, 18 Sep 2024 14:05:30 -0400 Subject: [PATCH 2/3] Switch to modifier classes --- .../src/components/CodeEditor/CodeEditor.tsx | 27 ++++++++++++------- .../CodeEditor/examples/CodeEditorModal.tsx | 1 + 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx index 7866e08bad7..38d0f122dbc 100644 --- a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx +++ b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx @@ -149,7 +149,7 @@ export interface CodeEditorProps extends Omit, ' emptyStateTitle?: React.ReactNode; /** Editor header main content title. */ headerMainContent?: string; - /** Height of code editor. Defaults to 100%. 'sizeToFit' will automatically change the height + /** Height of code editor. 'sizeToFit' will automatically change the height * to the height of the content. */ height?: string | 'sizeToFit'; @@ -157,6 +157,8 @@ export interface CodeEditorProps extends Omit, ' isCopyEnabled?: boolean; /** Flag indicating the editor is styled using monaco's dark theme. */ isDarkTheme?: boolean; + /** Flag that enables component to consume the available height of its container */ + isFullHeight?: boolean; /** Flag indicating the editor has a plain header. */ isHeaderPlain?: boolean; /** Flag to add download button to code editor actions. */ @@ -520,6 +522,7 @@ class CodeEditor extends React.Component { }, ...optionsProp }; + const isFullHeight = this.props.height === '100%' ? true : this.props.isFullHeight; return ( @@ -641,14 +644,13 @@ class CodeEditor extends React.Component { const editor = (
{ return (
{isUploadEnabled || providedEmptyState ? ( @@ -677,8 +683,11 @@ class CodeEditor extends React.Component { > {editorHeader}
@@ -690,7 +699,7 @@ class CodeEditor extends React.Component { <> {editorHeader} {showEditor && ( -
+
{editor}
)} diff --git a/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditorModal.tsx b/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditorModal.tsx index 531b61bb396..f048c4eed1a 100644 --- a/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditorModal.tsx +++ b/packages/react-code-editor/src/components/CodeEditor/examples/CodeEditorModal.tsx @@ -41,6 +41,7 @@ export const CodeEditorFullHeight: React.FunctionComponent = () => { onChange={onChange} language={Language.javascript} onEditorDidMount={onEditorDidMount} + isFullHeight /> From 7dfb53cee9477ec0700214fdb0ca68df902e1366 Mon Sep 17 00:00:00 2001 From: Rebecca Alpert Date: Wed, 18 Sep 2024 16:44:14 -0400 Subject: [PATCH 3/3] Adjust to Coker's new suggestions --- .../src/components/CodeEditor/CodeEditor.tsx | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx index 38d0f122dbc..c9a0b444c5c 100644 --- a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx +++ b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx @@ -644,10 +644,11 @@ class CodeEditor extends React.Component { const editor = (
{ return (
{isUploadEnabled || providedEmptyState ? (
{ onClick: (event) => event.stopPropagation() // Prevents clicking TextArea from opening file dialog })} className={css(isLoading && fileUploadStyles.modifiers.loading)} + style={{ display: 'flex', flexDirection: 'column', flexGrow: '1' }} > {editorHeader}
@@ -699,7 +698,7 @@ class CodeEditor extends React.Component { <> {editorHeader} {showEditor && ( -
+
{editor}
)}