Skip to content

Commit d60ed74

Browse files
authored
fix(editor): Autofocus Search in Move Folder Dialog (#14378)
1 parent e8a7acd commit d60ed74

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

cypress/composables/folders.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,9 +448,9 @@ function moveFolder(folderName: string, destinationName: string) {
448448
cy.intercept('PATCH', '/rest/projects/**').as('moveFolder');
449449
getMoveFolderModal().should('be.visible');
450450
getMoveFolderModal().find('h1').first().contains(`Move "${folderName}" to another folder`);
451-
getMoveToFolderDropdown().click();
452451
// Try to find current folder in the dropdown
453-
getMoveToFolderInput().type(folderName, { delay: 50 });
452+
// This tests that auto-focus worked as expected
453+
cy.focused().type(folderName, { delay: 50 });
454454
// Should not be available
455455
getEmptyFolderDropdownMessage('No folders found').should('exist');
456456
// Select destination folder

packages/frontend/@n8n/design-system/src/components/N8nSelect/Select.vue

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,11 @@ const blur = () => {
9898
const focusOnInput = () => {
9999
if (!innerSelect.value) return;
100100
101-
const inputRef = innerSelect.value.$refs.input as HTMLInputElement | undefined;
102-
inputRef?.focus();
101+
const inputRef = innerSelect.value.$refs.selectWrapper as HTMLInputElement;
102+
103+
const inputElement = inputRef?.querySelector('input');
104+
if (inputElement) inputElement.focus();
105+
else inputRef?.focus();
103106
};
104107
105108
defineExpose({

packages/frontend/editor-ui/src/components/Folders/MoveToFolderDropdown.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useFoldersStore } from '@/stores/folders.store';
55
import { useProjectsStore } from '@/stores/projects.store';
66
import { type ProjectIcon as ItemProjectIcon, ProjectTypes } from '@/types/projects.types';
77
import { N8nSelect } from '@n8n/design-system';
8-
import { computed, ref } from 'vue';
8+
import { computed, onMounted, ref } from 'vue';
99
1010
/**
1111
* This component is used to select a folder to move a resource (folder or workflow) to.
@@ -108,6 +108,10 @@ const onFolderSelected = (folderId: string) => {
108108
type: selectedFolder.resource,
109109
});
110110
};
111+
112+
onMounted(() => {
113+
void setTimeout(() => moveFolderDropdown.value?.focusOnInput());
114+
});
111115
</script>
112116

113117
<template>

0 commit comments

Comments
 (0)