Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@

<script setup lang="ts">
import { EditorView, keymap } from "@codemirror/view";
import { EditorState, Extension } from "@codemirror/state";
import { EditorState, Extension, Prec } from "@codemirror/state";
import { ref, shallowRef, defineExpose, watch } from "vue";
import { Codemirror } from "vue-codemirror";
import { python } from "@codemirror/lang-python";
import { oneDark } from "@codemirror/theme-one-dark";
import { autocompletion, CompletionSource, acceptCompletion } from "@codemirror/autocomplete";
import { indentMore } from "@codemirror/commands";
import { indentMore, indentLess } from "@codemirror/commands";
import { polarsCompletionVals } from "./pythonEditor/polarsCompletions";

const props = defineProps({
Expand Down Expand Up @@ -63,6 +63,12 @@ const tabKeymap = keymap.of([
return indentMore(view);
},
},
{
key: "Shift-Tab",
run: (view: EditorView): boolean => {
return indentLess(view);
},
},
]);

const insertTextAtCursor = (text: string) => {
Expand All @@ -88,10 +94,10 @@ const extensions: Extension[] = [
EditorState.tabSize.of(4),
autocompletion({
override: [polarsCompletions],
defaultKeymap: false, // Disable default keymap
defaultKeymap: true, // Enable default keymap for arrow navigation
closeOnBlur: false,
}),
tabKeymap,
Prec.highest(tabKeymap), // Tab keymap with highest precedence
];

// Rest of the component code remains the same...
Expand Down
12 changes: 11 additions & 1 deletion flowfile_frontend/src/renderer/app/pages/NodeDesigner.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
<p class="page-description">Design custom nodes visually</p>
</div>
<div class="header-actions">
<button class="btn btn-secondary" @click="showHelpModal = true">
<i class="fa-solid fa-circle-question"></i>
Help
</button>
<button class="btn btn-secondary" @click="nodeBrowser.openNodeBrowser()">
<i class="fa-solid fa-folder-open"></i>
Browse
Expand Down Expand Up @@ -187,11 +191,13 @@
@cancel-delete="nodeBrowser.showDeleteConfirm.value = false"
@delete="nodeBrowser.deleteNode()"
/>

<NodeDesignerHelpModal :show="showHelpModal" @close="showHelpModal = false" />
</div>
</template>

<script setup lang="ts">
import { watch, onMounted, computed } from "vue";
import { ref, watch, onMounted, computed } from "vue";
import axios from "axios";

// Child components
Expand All @@ -202,6 +208,7 @@ import ProcessCodeEditor from "./nodeDesigner/ProcessCodeEditor.vue";
import CodePreviewModal from "./nodeDesigner/CodePreviewModal.vue";
import ValidationModal from "./nodeDesigner/ValidationModal.vue";
import NodeBrowserModal from "./nodeDesigner/NodeBrowserModal.vue";
import NodeDesignerHelpModal from "./nodeDesigner/NodeDesignerHelpModal.vue";
import IconSelector from "./nodeDesigner/IconSelector.vue";

// Composables
Expand Down Expand Up @@ -243,6 +250,9 @@ const autocompletion = usePolarsAutocompletion(() => sections.value);

const storage = useSessionStorage(getState, setState, resetState);

// Help modal state
const showHelpModal = ref(false);

// Setup auto-save and load on mount
watch([() => ({ ...nodeMetadata }), sections, processCode], () => storage.saveToSessionStorage(), {
deep: true,
Expand Down
Loading
Loading