Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/graphiql-react/src/components/operation-editor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ interface OperationEditorProps extends EditorProps {
export const OperationEditor: FC<OperationEditorProps> = ({
onClickReference,
onEdit,
editorOverrides,
...props
}) => {
const {
Expand Down Expand Up @@ -231,6 +232,7 @@ export const OperationEditor: FC<OperationEditorProps> = ({
const editor = createEditor(ref, {
model,
theme: monacoTheme,
...editorOverrides,
});
setEditor({ queryEditor: editor });

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ interface RequestHeadersEditorProps extends EditorProps {

export const RequestHeadersEditor: FC<RequestHeadersEditorProps> = ({
onEdit,
editorOverrides,
...props
}) => {
const { setEditor, run, prettifyEditors, mergeQuery } = useGraphiQLActions();
Expand All @@ -44,7 +45,7 @@ export const RequestHeadersEditor: FC<RequestHeadersEditorProps> = ({
uri: `${uriInstanceId}${URI_NAME.requestHeaders}`,
value: initialHeaders,
});
const editor = createEditor(ref, { model });
const editor = createEditor(ref, { model, ...editorOverrides });
setEditor({ headerEditor: editor });
const disposables = [
editor.addAction({ ...KEY_BINDINGS.runQuery, run }),
Expand Down
2 changes: 2 additions & 0 deletions packages/graphiql-react/src/components/response-editor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ interface ResponseEditorProps extends EditorProps {

export const ResponseEditor: FC<ResponseEditorProps> = ({
responseTooltip: ResponseTooltip,
editorOverrides,
...props
}) => {
const { setEditor, run } = useGraphiQLActions();
Expand Down Expand Up @@ -69,6 +70,7 @@ export const ResponseEditor: FC<ResponseEditorProps> = ({
lineNumbers: 'off',
wordWrap: 'on', // Toggle word wrap on resizing editors
contextmenu: false, // Disable the right-click context menu
...editorOverrides,
});
setEditor({ responseEditor: editor });

Expand Down
3 changes: 2 additions & 1 deletion packages/graphiql-react/src/components/variables-editor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ interface VariablesEditorProps extends EditorProps {

export const VariablesEditor: FC<VariablesEditorProps> = ({
onEdit,
editorOverrides,
...props
}) => {
const { setEditor, run, prettifyEditors, mergeQuery } = useGraphiQLActions();
Expand All @@ -40,7 +41,7 @@ export const VariablesEditor: FC<VariablesEditorProps> = ({
uri: `${uriInstanceId}${URI_NAME.variables}`,
value: initialVariables,
});
const editor = createEditor(ref, { model });
const editor = createEditor(ref, { model, ...editorOverrides });
setEditor({ variableEditor: editor });
const disposables = [
editor.addAction({ ...KEY_BINDINGS.runQuery, run }),
Expand Down
11 changes: 10 additions & 1 deletion packages/graphiql-react/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,16 @@ import type {
} from './stores';
import type { RuleKind } from 'graphql-language-service';

export type EditorProps = ComponentPropsWithoutRef<'div'>;
export type EditorProps = ComponentPropsWithoutRef<'div'> & {
/**
* for customizing editor options. Here are
* some options that may be useful to some users:
* - suggest: { showWords: false }
* - hover: { above: false }
* - scrollbar: { alwaysConsumeMouseWheel: false }
*/
editorOverrides?: monaco.editor.IStandaloneEditorConstructionOptions;
};

export interface SchemaReference {
kind: RuleKind;
Expand Down
12 changes: 10 additions & 2 deletions packages/graphiql/src/GraphiQL.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ const GraphiQL_: FC<GraphiQLProps> = ({
forcedTheme,
confirmCloseTab,
className,

editorOverrides,
children,
...props
}) => {
Expand Down Expand Up @@ -111,6 +111,7 @@ const GraphiQL_: FC<GraphiQLProps> = ({
forcedTheme,
confirmCloseTab,
className,
editorOverrides,
};
const hasHistoryPlugin = plugins.includes(HISTORY_PLUGIN);
const HistoryToUse = hasHistoryPlugin ? HistoryStore : Fragment;
Expand Down Expand Up @@ -202,6 +203,7 @@ export const GraphiQLInterface: FC<GraphiQLInterfaceProps> = ({
onEditHeaders,
responseTooltip,
showPersistHeadersSettings,
editorOverrides,
}) => {
const { addTab, moveTab, closeTab, changeTab, setVisiblePlugin } =
useGraphiQLActions();
Expand Down Expand Up @@ -359,6 +361,7 @@ export const GraphiQLInterface: FC<GraphiQLInterfaceProps> = ({
<QueryEditor
onClickReference={onClickReference}
onEdit={onEditQuery}
editorOverrides={editorOverrides}
/>
) : (
<Spinner />
Expand Down Expand Up @@ -427,11 +430,13 @@ export const GraphiQLInterface: FC<GraphiQLInterfaceProps> = ({
<VariableEditor
className={activeSecondaryEditor === 'variables' ? '' : 'hidden'}
onEdit={onEditVariables}
editorOverrides={editorOverrides}
/>
{isHeadersEditorEnabled && (
<HeaderEditor
className={activeSecondaryEditor === 'headers' ? '' : 'hidden'}
onEdit={onEditHeaders}
editorOverrides={editorOverrides}
/>
)}
</section>
Expand Down Expand Up @@ -519,7 +524,10 @@ export const GraphiQLInterface: FC<GraphiQLInterfaceProps> = ({
/>
<div className="graphiql-response" ref={editorResize.secondRef}>
{isFetching && <Spinner />}
<ResponseEditor responseTooltip={responseTooltip} />
<ResponseEditor
responseTooltip={responseTooltip}
editorOverrides={editorOverrides}
/>
{footer}
</div>
</div>
Expand Down