{
);
}
+ @computed get templateOptions(): GroupSelectOption[] {
+ return Object.entries(createResourceStore.templateGroups).map(([sourceFolder, group]) => {
+ return {
+ label: group.label,
+ options: Object.entries(group.templates).map(([fileName]) => {
+ return {
+ label: fileName,
+ value: { fileName, sourceFolder },
+ };
+ }),
+ };
+ });
+ }
+
+ onSelectTemplate = async ({ value }: SelectOptionTemplate) => {
+ const { fileName, sourceFolder, content } = value;
+ const templateContent = content ?? await createResourceStore.loadTemplate({ fileName, sourceFolder });
+
+ createResourceStore.setData(this.tabId, templateContent); // update draft
+ };
+
render() {
- const { tabId, data, error, create } = this;
+ const { tabId, draft, error, create } = this;
const { className } = this.props;
return (
@@ -153,7 +161,7 @@ export class CreateResource extends React.Component {
/>
diff --git a/src/renderer/components/monaco-editor/monaco-editor.tsx b/src/renderer/components/monaco-editor/monaco-editor.tsx
index f38031b1de..d2adbc68ef 100644
--- a/src/renderer/components/monaco-editor/monaco-editor.tsx
+++ b/src/renderer/components/monaco-editor/monaco-editor.tsx
@@ -65,8 +65,6 @@ export const defaultEditorProps: Partial = {
}
};
-// FIXME: apply changes of props.options and globalOptions.editor to active editor
-
@observer
export class MonacoEditor extends React.Component {
static defaultProps = defaultEditorProps as object;
@@ -186,6 +184,10 @@ export class MonacoEditor extends React.Component {
this.disposeOnUnmount.push(
reaction(() => this.model, this.onModelChange),
+ reaction(() => this.props.theme, editor.setTheme),
+ reaction(() => this.props.value, value => this.setValue(value)),
+ reaction(() => toJS(this.props.options), opts => this.editor.updateOptions(opts)),
+
() => onDidLayoutChangeDisposer.dispose(),
() => onValueChangeDisposer.dispose(),
() => onContentSizeChangeDisposer.dispose(),
@@ -237,6 +239,8 @@ export class MonacoEditor extends React.Component {
}
setValue(value: string) {
+ if (value == this.getValue()) return;
+
this.editor.setValue(value);
}