From 855ac026221c809a1dad786c43fb619b4d8f9094 Mon Sep 17 00:00:00 2001 From: Vben Date: Wed, 11 Sep 2024 23:10:35 +0800 Subject: [PATCH] fix: select components used in modal pop-ups cannot be selected (#4368) * fix: select components used in modal pop-ups cannot be selected * chore: update ci * chore: update css --- .github/workflows/build.yml | 8 ++++- packages/@core/base/design/src/css/global.css | 5 +++ .../ui-kit/popup-ui/src/modal/modal-api.ts | 1 + .../@core/ui-kit/popup-ui/src/modal/modal.ts | 4 +++ .../@core/ui-kit/popup-ui/src/modal/modal.vue | 9 ++++++ .../src/ui/authentication/code-login.vue | 27 ++++++++++++++-- .../src/ui/authentication/forget-password.vue | 30 ++++++++++++++--- .../common-ui/src/ui/authentication/login.vue | 19 ++++++++--- .../src/ui/authentication/qrcode-login.vue | 32 +++++++++++++++++-- .../src/ui/authentication/register.vue | 29 +++++++++++++++-- .../common-ui/src/ui/authentication/types.ts | 4 +++ .../layouts/src/authentication/toolbar.vue | 4 +-- .../views/examples/modal/form-model-demo.vue | 13 ++++++++ 13 files changed, 163 insertions(+), 22 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 154922b3..b82fee1a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,13 @@ permissions: jobs: post-update: # if: ${{ github.actor == 'dependabot[bot]' }} - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + # - macos-latest + - windows-latest steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/packages/@core/base/design/src/css/global.css b/packages/@core/base/design/src/css/global.css index 9fb8c9c7..f9810e72 100644 --- a/packages/@core/base/design/src/css/global.css +++ b/packages/@core/base/design/src/css/global.css @@ -32,9 +32,13 @@ body, html { @apply size-full overscroll-none; + + /* scrollbar-gutter: stable; */ } body { + @apply !pointer-events-auto; + min-height: 100vh; /* overflow: overlay; */ @@ -90,6 +94,7 @@ } /* 只有非mac下才进行调整,mac下使用默认滚动条 */ + html:not([data-platform='macOs']) { ::-webkit-scrollbar { @apply h-[10px] w-[10px]; diff --git a/packages/@core/ui-kit/popup-ui/src/modal/modal-api.ts b/packages/@core/ui-kit/popup-ui/src/modal/modal-api.ts index e664c52f..eaa0cf84 100644 --- a/packages/@core/ui-kit/popup-ui/src/modal/modal-api.ts +++ b/packages/@core/ui-kit/popup-ui/src/modal/modal-api.ts @@ -41,6 +41,7 @@ export class ModalApi { isOpen: false, loading: false, modal: true, + openAutoFocus: false, showCancelButton: true, showConfirmButton: true, title: '', diff --git a/packages/@core/ui-kit/popup-ui/src/modal/modal.ts b/packages/@core/ui-kit/popup-ui/src/modal/modal.ts index 3ccbacd4..8a5bbf31 100644 --- a/packages/@core/ui-kit/popup-ui/src/modal/modal.ts +++ b/packages/@core/ui-kit/popup-ui/src/modal/modal.ts @@ -75,6 +75,10 @@ export interface ModalProps { * @default true */ modal?: boolean; + /** + * 是否自动聚焦 + */ + openAutoFocus?: boolean; /** * 是否显示取消按钮 * @default true diff --git a/packages/@core/ui-kit/popup-ui/src/modal/modal.vue b/packages/@core/ui-kit/popup-ui/src/modal/modal.vue index 8a5cc4a8..89ea4128 100644 --- a/packages/@core/ui-kit/popup-ui/src/modal/modal.vue +++ b/packages/@core/ui-kit/popup-ui/src/modal/modal.vue @@ -68,6 +68,7 @@ const { header, loading: showLoading, modal, + openAutoFocus, showCancelButton, showConfirmButton, title, @@ -133,6 +134,13 @@ function escapeKeyDown(e: KeyboardEvent) { e.preventDefault(); } } + +function handerOpenAutoFocus(e: Event) { + if (!openAutoFocus.value) { + e?.preventDefault(); + } +} + // pointer-down-outside function pointerDownOutside(e: Event) { const target = e.target as HTMLElement; @@ -166,6 +174,7 @@ function pointerDownOutside(e: Event) { close-class="top-3" @escape-key-down="escapeKeyDown" @interact-outside="interactOutside" + @open-auto-focus="handerOpenAutoFocus" @pointer-down-outside="pointerDownOutside" > (), { loading: false, loginPath: '/auth/login', + submitButtonText: '', + subTitle: '', + title: '', }); const emit = defineEmits<{ @@ -69,16 +84,22 @@ function goToLogin() {