diff --git a/cypress/e2e/45-ai-assistant.cy.ts b/cypress/e2e/45-ai-assistant.cy.ts
index 008d224f78..d82b673ead 100644
--- a/cypress/e2e/45-ai-assistant.cy.ts
+++ b/cypress/e2e/45-ai-assistant.cy.ts
@@ -244,6 +244,9 @@ describe('AI Assistant::enabled', () => {
ndv.getters.nodeExecuteButton().click();
+ // Wait for a message from AI to be shown
+ aiAssistant.getters.chatMessagesAssistant().should('have.length', 3);
+
getEditor()
.type('{selectall}')
.paste(
diff --git a/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/N8nPopoverReka.test.ts b/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/N8nPopoverReka.test.ts
index 9193501729..67faa8c94f 100644
--- a/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/N8nPopoverReka.test.ts
+++ b/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/N8nPopoverReka.test.ts
@@ -113,4 +113,32 @@ describe('N8nPopoverReka', () => {
expect(wrapper.props('maxHeight')).toBeUndefined();
});
+
+ describe('auto-focus behavior', () => {
+ it('should focus an element in the content slot by default', async () => {
+ const wrapper = render(N8nPopoverReka, {
+ props: { open: true },
+ slots: {
+ trigger: '',
+ content: '',
+ },
+ });
+ const popover = await wrapper.findByRole('dialog');
+
+ expect(popover.contains(document.activeElement)).toBe(true);
+ });
+
+ it('should suppress auto-focus when suppressAutoFocus is true', async () => {
+ const wrapper = render(N8nPopoverReka, {
+ props: { open: true, suppressAutoFocus: true },
+ slots: {
+ trigger: '',
+ content: '',
+ },
+ });
+ const popover = await wrapper.findByRole('dialog');
+
+ expect(popover.contains(document.activeElement)).toBe(false);
+ });
+ });
});
diff --git a/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/N8nPopoverReka.vue b/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/N8nPopoverReka.vue
index 1842650e3a..883b027e6d 100644
--- a/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/N8nPopoverReka.vue
+++ b/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/N8nPopoverReka.vue
@@ -1,14 +1,31 @@
@@ -49,21 +79,29 @@ const emit = defineEmits();
-
+
-
-
-
-
-
-
+
+
+
+
@@ -77,10 +115,12 @@ const emit = defineEmits();
box-shadow:
rgba(0, 0, 0, 0.1) 0 10px 15px -3px,
rgba(0, 0, 0, 0.05) 0 4px 6px -2px;
- animation-duration: 400ms;
- animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
will-change: transform, opacity;
- z-index: 999;
+
+ &.enableSlideIn {
+ animation-duration: 400ms;
+ animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
+ }
}
.popoverContent[data-state='open'][data-side='top'] {
diff --git a/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/__snapshots__/N8nPopoverReka.test.ts.snap b/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/__snapshots__/N8nPopoverReka.test.ts.snap
index c471dbc4c4..702e1a9521 100644
--- a/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/__snapshots__/N8nPopoverReka.test.ts.snap
+++ b/packages/frontend/@n8n/design-system/src/components/N8nPopoverReka/__snapshots__/N8nPopoverReka.test.ts.snap
@@ -4,13 +4,11 @@ exports[`N8nPopoverReka > should render correctly with default props 1`] = `
"
-
+