From 385069682f389a3033d9cc06f6b4e2f3d5ee2085 Mon Sep 17 00:00:00 2001 From: dante01yoon Date: Tue, 12 May 2026 15:53:52 +0900 Subject: [PATCH] feat(dialog): migrate Settings dialog to Reka-UI (Phase 3) Closes the parity gap in the Reka renderer (maximize affordance, headless layout mode, overlay class plumbing), then flips useSettingsDialog onto the Reka path. - dialog.variants: new `maximized` variant (centered+sized vs. inset-2 fullscreen) plus a DialogMaximize button wired through GlobalDialog when `maximizable` is set - GlobalDialog: when `headless: true`, skip the inner padding wrapper so layout dialogs control their own chrome; forward `overlayClass` to DialogOverlay - useSettingsDialog: renderer 'reka', size 'full', explicit contentClass matching BaseModalLayout sm (960px x 80vh), overlayClass 'p-8' when isCloud + teamWorkspacesEnabled - Drop the now-dead workspace mask special-case + orphan .settings-dialog-workspace CSS from GlobalDialog --- src/components/dialog/GlobalDialog.vue | 98 ++++++++----------- src/components/ui/dialog/DialogContent.vue | 4 +- src/components/ui/dialog/DialogMaximize.vue | 25 +++++ src/components/ui/dialog/dialog.variants.ts | 9 +- src/locales/en/main.json | 2 + .../composables/useSettingsDialog.test.ts | 92 +++++++++++++++++ .../settings/composables/useSettingsDialog.ts | 13 +++ src/stores/dialogStore.ts | 5 + 8 files changed, 188 insertions(+), 60 deletions(-) create mode 100644 src/components/ui/dialog/DialogMaximize.vue create mode 100644 src/platform/settings/composables/useSettingsDialog.test.ts diff --git a/src/components/dialog/GlobalDialog.vue b/src/components/dialog/GlobalDialog.vue index 67f21481d7..6abf62db22 100644 --- a/src/components/dialog/GlobalDialog.vue +++ b/src/components/dialog/GlobalDialog.vue @@ -8,9 +8,10 @@ @update:open="(open) => onRekaOpenChange(item.key, open)" > - + - - - - {{ item.title || ' ' }} - - - -
+ + @@ -55,7 +74,6 @@ v-model:visible="item.visible" class="global-dialog" v-bind="item.dialogComponentProps" - :pt="getDialogPt(item)" :aria-labelledby="item.key" > @@ -163,19 +160,6 @@ function getDialogPt(item: { } } -/* Workspace mode: wider settings dialog */ -.settings-dialog-workspace { - width: 100%; - max-width: 1440px; - height: 100%; -} - -.settings-dialog-workspace .p-dialog-content { - width: 100%; - height: 100%; - overflow-y: auto; -} - .manager-dialog { height: 80vh; max-width: 1724px; diff --git a/src/components/ui/dialog/DialogContent.vue b/src/components/ui/dialog/DialogContent.vue index 4d89e5c0a2..c318107642 100644 --- a/src/components/ui/dialog/DialogContent.vue +++ b/src/components/ui/dialog/DialogContent.vue @@ -10,11 +10,13 @@ import { dialogContentVariants } from './dialog.variants' const { size, + maximized = false, class: customClass = '', ...restProps } = defineProps< DialogContentProps & { size?: DialogContentSize + maximized?: boolean class?: HTMLAttributes['class'] } >() @@ -26,7 +28,7 @@ const forwarded = useForwardPropsEmits(restProps, emits)