From b20b793501ca93c83a6dc4872350456918c6604d Mon Sep 17 00:00:00 2001 From: Steve-Mcl Date: Wed, 18 Mar 2026 19:59:09 +0000 Subject: [PATCH 1/6] Persist expert drawer state in local storage --- frontend/src/stores/ux-drawers.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/frontend/src/stores/ux-drawers.js b/frontend/src/stores/ux-drawers.js index b3325a8ce1..9bf6e45529 100644 --- a/frontend/src/stores/ux-drawers.js +++ b/frontend/src/stores/ux-drawers.js @@ -21,6 +21,10 @@ export const useUxDrawersStore = defineStore('ux-drawers', { }, rightDrawer: { state: false, + expertState: { + pinned: true, + open: true + }, component: null, header: null, wider: false, @@ -59,6 +63,11 @@ export const useUxDrawersStore = defineStore('ux-drawers', { if (this.rightDrawer.state && component.name === this.rightDrawer.component?.name) return const openDrawer = () => { + if (component.name === 'ExpertDrawer') { + // save the ExpertDrawer pinned/open state (expertState is persistent) + this.rightDrawer.expertState.pinned = fixed + this.rightDrawer.expertState.open = true + } this.rightDrawer.state = true this.rightDrawer.wider = wider this.rightDrawer.fixed = fixed @@ -84,6 +93,11 @@ export const useUxDrawersStore = defineStore('ux-drawers', { }, closeRightDrawer () { + if (this.rightDrawer.component?.name === 'ExpertDrawer') { + // save the ExpertDrawer pinned/open state (expertState is persistent) + this.rightDrawer.expertState.open = false + this.rightDrawer.expertState.pinned = this.rightDrawer.fixed + } // Set closing flag to prevent reopens during transition this.rightDrawer.closing = true @@ -167,8 +181,12 @@ export const useUxDrawersStore = defineStore('ux-drawers', { const newFixedState = !this.rightDrawer.fixed this.rightDrawer.fixed = newFixedState this.rightDrawer.pinned = newFixedState - // When fixed, prevent close on click outside this.rightDrawer.closeOnClickOutside = !newFixedState + if (this.rightDrawer.component?.name === 'ExpertDrawer') { + // save the ExpertDrawer pinned/open state (expertState is persistent) + this.rightDrawer.expertState.open = this.rightDrawer.state + this.rightDrawer.expertState.pinned = newFixedState + } // Always close overlay when toggling (whether fixing or unfixing) const uxStore = useUxStore() @@ -192,5 +210,9 @@ export const useUxDrawersStore = defineStore('ux-drawers', { setLeftDrawer (component) { this.leftDrawer.component = component ? markRaw(component) : null } + }, + persist: { + pick: ['rightDrawer.expertState'], + storage: localStorage } }) From 05ffa90e48d287a8f820e5b6a775579310156bfd Mon Sep 17 00:00:00 2001 From: Steve-Mcl Date: Wed, 18 Mar 2026 20:01:59 +0000 Subject: [PATCH 2/6] accept pinned state option for drawer opening --- frontend/src/components/ExpertButton.vue | 5 ++++- frontend/src/store/modules/product/expert/index.js | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/ExpertButton.vue b/frontend/src/components/ExpertButton.vue index 52dca479db..7feb889520 100644 --- a/frontend/src/components/ExpertButton.vue +++ b/frontend/src/components/ExpertButton.vue @@ -30,7 +30,10 @@ export default { methods: { ...mapActions('product/expert', ['openAssistantDrawer']), onClick () { - this.openAssistantDrawer() + const openOptions = { + openPinned: this.rightDrawer.expertState.pinned + } + this.openAssistantDrawer(openOptions) } } } diff --git a/frontend/src/store/modules/product/expert/index.js b/frontend/src/store/modules/product/expert/index.js index 4f92ea1954..16e22aa1cc 100644 --- a/frontend/src/store/modules/product/expert/index.js +++ b/frontend/src/store/modules/product/expert/index.js @@ -350,12 +350,17 @@ const actions = { return expertApi.chat(payload) }, - openAssistantDrawer ({ dispatch, rootGetters }) { + openAssistantDrawer ({ dispatch, rootGetters }, options = {}) { if (rootGetters['account/featuresCheck'].isExpertAssistantFeatureEnabled === false) return dispatch(`product/expert/${OPERATOR_AGENT}/getCapabilities`, null, { root: true }) - return useUxDrawersStore().openRightDrawer({ component: markRaw(ExpertDrawer) }) + const openOptions = { + component: markRaw(ExpertDrawer), + fixed: options?.openPinned === true, + closeOnClickOutside: options?.openPinned !== true + } + return useUxDrawersStore().openRightDrawer(openOptions) }, addWelcomeMessageIfNeeded ({ dispatch, state }) { From 4d52fc9f0cebfa8789f4f1fbe990606c0e40367f Mon Sep 17 00:00:00 2001 From: Steve-Mcl Date: Wed, 18 Mar 2026 20:03:24 +0000 Subject: [PATCH 3/6] Auto open expert to pinned --- .../src/components/drawers/RightDrawer.vue | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/drawers/RightDrawer.vue b/frontend/src/components/drawers/RightDrawer.vue index 7a592200c9..09a83266f9 100644 --- a/frontend/src/components/drawers/RightDrawer.vue +++ b/frontend/src/components/drawers/RightDrawer.vue @@ -2,7 +2,7 @@
@@ -43,6 +43,7 @@