From 1bfc79cb3356ca24c4cec190141ab1ebff9d4285 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Sep 2026 13:28:58 +0800 Subject: [PATCH 1/5] chore(deps): update dependency lint-staged to v17.6.0 (#24931) * chore(deps): update dependency lint-staged to v17.6.0 * fix: dep --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: thinkasany <480968828@qq.com> --- package.json | 2 +- pnpm-lock.yaml | 48 ++++++++++++++++++++++++++++-------------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 2ea10963b81d7..7bafc26243cfc 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "happy-dom": "^20.14.5", "husky": "^9.1.7", "jsdom": "16.4.0", - "lint-staged": "17.5.1", + "lint-staged": "17.6.0", "prettier": "catalog:", "puppeteer": "^25.9.0", "resize-observer-polyfill": "^1.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c91c02c1438b5..d35498ca828e1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -371,8 +371,8 @@ importers: specifier: 16.4.0 version: 16.4.0 lint-staged: - specifier: 17.5.1 - version: 17.5.1 + specifier: 17.6.0 + version: 17.6.0 prettier: specifier: 'catalog:' version: 3.9.9 @@ -5312,8 +5312,8 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - lint-staged@17.5.1: - resolution: {integrity: sha512-7EDuco1xnBMeVpvAbeMq1U5KXwJGLmY8q6l+Ye78r36C4mPc+Vg1Z2SK8gHyRTyvPro90A0q5/FAZ+Au23d6QQ==} + lint-staged@17.6.0: + resolution: {integrity: sha512-nOhBfYkZEwkFtNzD5pK9s9LkcWoxJ+whLzEnhqi9nl7zTB5n7tg8+9iYgMGx2Wm3VlLu8cbNj0RACzY+nWi5iQ==} engines: {node: '>=22.22.1'} hasBin: true @@ -7566,6 +7566,11 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@22.0.0: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} @@ -9860,7 +9865,7 @@ snapshots: '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.0)(supports-color@10.2.2) '@rolldown/pluginutils': 1.0.1 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0)(supports-color@10.2.2) - vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0) + vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) vue: 3.5.25(typescript@6.0.3) transitivePeerDependencies: - supports-color @@ -9873,7 +9878,7 @@ snapshots: '@vitejs/plugin-vue@6.0.9(vite@8.3.1)(vue@3.5.25)': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0) + vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) vue: 3.5.25(typescript@6.0.3) '@vitest/coverage-v8@5.0.1(vitest@5.0.1)': @@ -9901,7 +9906,7 @@ snapshots: estree-walker: 3.0.3 magic-string: 1.2.3 optionalDependencies: - vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0) + vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) '@vitest/pretty-format@5.0.1': dependencies: @@ -12027,13 +12032,13 @@ snapshots: dependencies: uc.micro: 2.1.0 - lint-staged@17.5.1: + lint-staged@17.6.0: dependencies: picomatch: 4.0.7 string-argv: 0.3.2 tinyexec: 1.3.1 optionalDependencies: - yaml: 2.9.0 + yaml: 2.9.1 load-json-file@6.2.0: dependencies: @@ -14249,7 +14254,7 @@ snapshots: esbuild: 0.28.0 rolldown: 1.2.5 rollup: 4.55.1 - vite: 8.2.2(@types/node@24.13.6)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0) + vite: 8.2.2(@types/node@24.13.6)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) unplugin@3.3.0(esbuild@0.28.0)(rolldown@1.2.5)(rollup@4.55.1)(vite@8.3.1): dependencies: @@ -14260,7 +14265,7 @@ snapshots: esbuild: 0.28.0 rolldown: 1.2.5 rollup: 4.55.1 - vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0) + vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) untyped@2.0.0: dependencies: @@ -14360,7 +14365,7 @@ snapshots: sass: 1.104.0 sass-embedded: 1.104.0 - vite@8.2.2(@types/node@24.13.6)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0): + vite@8.2.2(@types/node@24.13.6)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -14375,7 +14380,7 @@ snapshots: sass: 1.105.0 sass-embedded: 1.105.0 tsx: 4.23.15 - yaml: 2.9.0 + yaml: 2.9.1 optional: true vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.104.0)(sass@1.104.0)(tsx@4.23.15)(yaml@2.9.0): @@ -14395,7 +14400,7 @@ snapshots: tsx: 4.23.15 yaml: 2.9.0 - vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.104.0)(tsx@4.23.15)(yaml@2.9.0): + vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.104.0)(tsx@4.23.15)(yaml@2.9.1): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -14410,9 +14415,9 @@ snapshots: sass: 1.104.0 sass-embedded: 1.105.0 tsx: 4.23.15 - yaml: 2.9.0 + yaml: 2.9.1 - vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0): + vite@8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -14427,7 +14432,7 @@ snapshots: sass: 1.105.0 sass-embedded: 1.105.0 tsx: 4.23.15 - yaml: 2.9.0 + yaml: 2.9.1 vitepress-plugin-group-icons@1.7.6(vite@5.4.21): dependencies: @@ -14500,7 +14505,7 @@ snapshots: tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0) + vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.19.0 @@ -14550,7 +14555,7 @@ snapshots: vue: 3.5.25(typescript@6.0.3) optionalDependencies: '@vue/compiler-sfc': 3.5.35 - vite: 8.2.2(@types/node@24.13.6)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0) + vite: 8.2.2(@types/node@24.13.6)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -14582,7 +14587,7 @@ snapshots: vue: 3.5.25(typescript@6.0.3) optionalDependencies: '@vue/compiler-sfc': 3.5.35 - vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.0) + vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -14768,6 +14773,9 @@ snapshots: yaml@2.9.0: optional: true + yaml@2.9.1: + optional: true + yargs-parser@22.0.0: {} yargs@18.0.0: From 06efb57b842f7d3b89deb9a6ceaf4020a27379fa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Sep 2026 05:32:14 +0000 Subject: [PATCH 2/5] chore(deps): update pnpm to v12.8.1 (#24937) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 122 ++++++++++++++++++++++++------------------------- 2 files changed, 62 insertions(+), 62 deletions(-) diff --git a/package.json b/package.json index 7bafc26243cfc..87224f6680930 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "packageManager": "pnpm@12.6.0", + "packageManager": "pnpm@12.8.1", "workspaces": [ "packages/*", "play", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d35498ca828e1..9349a8a414f20 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.6.0 - version: 12.6.0 + specifier: 12.8.1 + version: 12.8.1 packages: - '@pnpm/exe.android-arm64@12.6.0': - resolution: {integrity: sha512-kviIHft9h02q+7N2In7tSL9T/HRUSGwYmU74YPtsWU5ee7vgqPyC0JT6RRX6miW+NxX1CvHgQxg69qq1qTLJYQ==} + '@pnpm/exe.android-arm64@12.8.1': + resolution: {integrity: sha512-siDxcidfz5eM6L2tJfik+i2bbUEw8UC7MZ3Yl2HYdRmqbdhHGAOQACtOOu6QVW4Jul4/w5wVKm+wM8ACtgh1Pg==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.6.0': - resolution: {integrity: sha512-CT8aJKLq2mtZFE71pr4E5Z2xHL8uGnRGr+NclDqsXlVF4SVcQ2QAs14mWi0C8gjT4hbmi+Q0lJRRIkMAWfjjng==} + '@pnpm/exe.android-x64@12.8.1': + resolution: {integrity: sha512-0F/uqPRc3aN4vLHsa0f+6fTtmsigFQ9/yxEU43fionF//pNHEd5e97b3w/nKIgqYMCUQCJphmBRMA9Q8/wlo9Q==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.6.0': - resolution: {integrity: sha512-rafpVkjzugKBMxSvGQd5wK1x5eOTkD/+lcJIFHeQhvd+BJ8kDisOOvwhQDrpGd4vd2Fx+hhW0P2Ptt638OlhFg==} + '@pnpm/exe.darwin-arm64@12.8.1': + resolution: {integrity: sha512-/rwavvMQJsl2RIxOHBnDF+4Gk+fhQFAY4M3PQZoKskJOEnaJcygG9p1xby6wcQcbS4d9dIubv09CQhufTgfmpw==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.6.0': - resolution: {integrity: sha512-72Jpuv1m24gI8zUNcaylYpBWEhBzz1VPhnDIU2GYM2eRP+KsOqVLwV78i+JrihI39zY2NNXmaN4eAKX1inpaDQ==} + '@pnpm/exe.darwin-x64@12.8.1': + resolution: {integrity: sha512-htYt2gN7zqJKLhC99Ft6EUiO7myjZAZXfmGCTJUL1v+o7vE9hZdE1+fAkk4Oj1ZHNRti6b2woOxEkRkAusi8OQ==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.6.0': - resolution: {integrity: sha512-LON4QgNy1w/XF4uySZIyC/5hEB0oGdelXsY9tSKqstER+2j2X2oHz67skD11RRd/HWFRtMr64shQZ4I9ZoZ0zg==} + '@pnpm/exe.freebsd-x64@12.8.1': + resolution: {integrity: sha512-PB5BULNgytxvExoOXUUeseS/DcpPENs+cg3iA6xHHeaLT4ctEGKSGXEbuj7USeqvo8JBpAx039hivnbzGqDwnA==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.6.0': - resolution: {integrity: sha512-BdDpX+DeaMUc5x6WNcE6FkmFy36NwrBbBvwsZU737Zt3u1fTY+iKFPchjEQNCM4rT6q6xvF2oN3ZwExGsJCkxQ==} + '@pnpm/exe.linux-arm64-musl@12.8.1': + resolution: {integrity: sha512-kKeyC/ArjrgdciQRBrOL0j9HtOI4gDRgoyP+eJ1CQKyadpKlf/DhDDyspXe07R3B9KagTVLUF2nlt6Dr5quFIg==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.6.0': - resolution: {integrity: sha512-8h2sNoIhHDpHDYqZZCh9PXr6krqW10btb0GHVGuw710muDHlFAHMtUG2ogmaHge6zJG1xgY4Y7mwX5g/LWvrYg==} + '@pnpm/exe.linux-arm64@12.8.1': + resolution: {integrity: sha512-q4s9a9X2O3N9aeUFooW24orNrxvu20+jyVUFR5RanPCqOKKPBrgs2iywMkBBx1aXkkzdWT54/mfz8Be8sJlWEw==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.6.0': - resolution: {integrity: sha512-ld6xgcEhFCFrsVsJhbmdmR714PnsEspO/Ij8w0/D7OSiz2hYGu3fZd5tKRxOI5m6H6Gl0/RRFAPncTHbsgXVjQ==} + '@pnpm/exe.linux-ppc64@12.8.1': + resolution: {integrity: sha512-F7XSjKJthwCh/L6abZiMpAfo2Cm61SZIT3e4dfgiIjESndlWaXCnfLKngSgZ/SEMsdmHT6dud3+kWIB3tw0/xQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.6.0': - resolution: {integrity: sha512-HIbImydoC3J8NFt+8MXfhTCf5rO6NjCMyinSAHac0VmV8uCHw+kbQkyAzxV84rzz9ZOzmBOnj0b1N461UIYGsw==} + '@pnpm/exe.linux-riscv64@12.8.1': + resolution: {integrity: sha512-z1ecpIK/ZY08Unk69KWWE9867oaKUytGUjrHnBoGFAAhsK+q+0cfvBH+f5fWobJ7FX97leMlLO+gkJolddM45Q==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.6.0': - resolution: {integrity: sha512-DjSqT7+BZ/lWcDHwNMuzsRVfyxUimh+D54Xw4tSWbdVVQhtWtNMUyI93LVnwCmsoEpar2gC3SFeAgywx37svKQ==} + '@pnpm/exe.linux-s390x@12.8.1': + resolution: {integrity: sha512-KU6tnrBfu4uKXTq6N5qJwSm8FSrs9Wc8b5AUEsHK9bRXwNdsZ1/lRxG1++X29SKRW9OSNuDSjxASv5mAvGo1gA==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.6.0': - resolution: {integrity: sha512-31lKeGPmRE6xfV6I3VjaEGVFRei14pl/zgoFDK4w+UkbJqOuNl2Ht3O1GuqNIg3Gl14qTEb4kZRAYFHXifDx9A==} + '@pnpm/exe.linux-x64-musl@12.8.1': + resolution: {integrity: sha512-eUE8BWJkDr2tJb/yrk0yVnszlmNqFarVxUlqiZ9BAkct28Nq/5g2H0tvMDmPA7fAQW3STNj+omJPPRVT+4s5sQ==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.6.0': - resolution: {integrity: sha512-qFWBneHJAJ73W4whtbaFOL1M/7DBC6ILHXuxc7ZPtEhfPuT1zeZiGrmKHoMAfJA+mcm6xhOFljqVTUS+00Jabw==} + '@pnpm/exe.linux-x64@12.8.1': + resolution: {integrity: sha512-8bDZ0lZlCdi2rvnFul7EYgcC7zKeWSe76y8JV2oXobaS8p9i9d6PSf6LgLtTM0fI7R9Oh4eLCbveXyNDMmvZ+g==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.6.0': - resolution: {integrity: sha512-OhfefXEEykZlslSUhR8PPRe6MVPV3Oink/dVfIecE5velpc7j80cZYsHlaDrtRDcm3TPwQHkaRW1SJ1efX9oFg==} + '@pnpm/exe.win32-arm64@12.8.1': + resolution: {integrity: sha512-MsT0dlrRxnCRCHCaosNbhWpEiAFnFuMEu3KuDJDU41BXgTwiINxU8goloUSUDejWZUqKaUqNC/qUTihl9nFtqg==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.6.0': - resolution: {integrity: sha512-L2tuyrD2+Imgxs3VK/ST/2L3xD6vDP0ktJQxM0TaGw7TbAQEMq+RMc8iK6Ew7Id579uzjJe8jSfJID2ZGsOHCA==} + '@pnpm/exe.win32-x64@12.8.1': + resolution: {integrity: sha512-SWtPe0PsbTTk//gJND10tMdOfCYjrkq5+qV49hzVhY7xz2iJ339Rc+xwASlcvbwTfrvH39YNqpKYibD+CRGLwA==} cpu: [x64] os: [win32] - pnpm@12.6.0: - resolution: {integrity: sha512-PvaPlRyxEawgS0paFvCy3fDaVqluBBPoHYVdnwtV75JnFHCQKOHNAMQFwsX7e56OxNxGd3yAXQNzwvL/AP0g7A==} + pnpm@12.8.1: + resolution: {integrity: sha512-9kupB1B/XOr+BsjTjmBS0BeURFgOwSed3Vv8EctIqoomRLZlmOB+dh2oSHKp/FfV+QK4f6SdAkGY1VhhKqu+RQ==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.6.0': + '@pnpm/exe.android-arm64@12.8.1': optional: true - '@pnpm/exe.android-x64@12.6.0': + '@pnpm/exe.android-x64@12.8.1': optional: true - '@pnpm/exe.darwin-arm64@12.6.0': + '@pnpm/exe.darwin-arm64@12.8.1': optional: true - '@pnpm/exe.darwin-x64@12.6.0': + '@pnpm/exe.darwin-x64@12.8.1': optional: true - '@pnpm/exe.freebsd-x64@12.6.0': + '@pnpm/exe.freebsd-x64@12.8.1': optional: true - '@pnpm/exe.linux-arm64-musl@12.6.0': + '@pnpm/exe.linux-arm64-musl@12.8.1': optional: true - '@pnpm/exe.linux-arm64@12.6.0': + '@pnpm/exe.linux-arm64@12.8.1': optional: true - '@pnpm/exe.linux-ppc64@12.6.0': + '@pnpm/exe.linux-ppc64@12.8.1': optional: true - '@pnpm/exe.linux-riscv64@12.6.0': + '@pnpm/exe.linux-riscv64@12.8.1': optional: true - '@pnpm/exe.linux-s390x@12.6.0': + '@pnpm/exe.linux-s390x@12.8.1': optional: true - '@pnpm/exe.linux-x64-musl@12.6.0': + '@pnpm/exe.linux-x64-musl@12.8.1': optional: true - '@pnpm/exe.linux-x64@12.6.0': + '@pnpm/exe.linux-x64@12.8.1': optional: true - '@pnpm/exe.win32-arm64@12.6.0': + '@pnpm/exe.win32-arm64@12.8.1': optional: true - '@pnpm/exe.win32-x64@12.6.0': + '@pnpm/exe.win32-x64@12.8.1': optional: true - pnpm@12.6.0: + pnpm@12.8.1: optionalDependencies: - '@pnpm/exe.android-arm64': 12.6.0 - '@pnpm/exe.android-x64': 12.6.0 - '@pnpm/exe.darwin-arm64': 12.6.0 - '@pnpm/exe.darwin-x64': 12.6.0 - '@pnpm/exe.freebsd-x64': 12.6.0 - '@pnpm/exe.linux-arm64': 12.6.0 - '@pnpm/exe.linux-arm64-musl': 12.6.0 - '@pnpm/exe.linux-ppc64': 12.6.0 - '@pnpm/exe.linux-riscv64': 12.6.0 - '@pnpm/exe.linux-s390x': 12.6.0 - '@pnpm/exe.linux-x64': 12.6.0 - '@pnpm/exe.linux-x64-musl': 12.6.0 - '@pnpm/exe.win32-arm64': 12.6.0 - '@pnpm/exe.win32-x64': 12.6.0 + '@pnpm/exe.android-arm64': 12.8.1 + '@pnpm/exe.android-x64': 12.8.1 + '@pnpm/exe.darwin-arm64': 12.8.1 + '@pnpm/exe.darwin-x64': 12.8.1 + '@pnpm/exe.freebsd-x64': 12.8.1 + '@pnpm/exe.linux-arm64': 12.8.1 + '@pnpm/exe.linux-arm64-musl': 12.8.1 + '@pnpm/exe.linux-ppc64': 12.8.1 + '@pnpm/exe.linux-riscv64': 12.8.1 + '@pnpm/exe.linux-s390x': 12.8.1 + '@pnpm/exe.linux-x64': 12.8.1 + '@pnpm/exe.linux-x64-musl': 12.8.1 + '@pnpm/exe.win32-arm64': 12.8.1 + '@pnpm/exe.win32-x64': 12.8.1 --- lockfileVersion: '9.0' From 95b63f3901026f0e07af02ea3403f6bcd54c8695 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Sep 2026 05:34:28 +0000 Subject: [PATCH 3/5] chore(deps): update dawidd6/action-download-artifact action to v27 (#24938) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/lint-commit-message-post.yml | 6 +++--- .github/workflows/pr-docs-deploy.yml | 6 +++--- .github/workflows/publish-size-report-comment.yml | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/lint-commit-message-post.yml b/.github/workflows/lint-commit-message-post.yml index 1339bd9e30d89..8d5bd063e21df 100644 --- a/.github/workflows/lint-commit-message-post.yml +++ b/.github/workflows/lint-commit-message-post.yml @@ -19,21 +19,21 @@ jobs: steps: - name: Download result - uses: dawidd6/action-download-artifact@634d83b91986fcec9be314054943fa5c976aeb0e # v25 + uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27 with: workflow: ${{ github.event.workflow.id }} run_id: ${{ github.event.workflow_run.id }} name: commit-lint-result - name: Derive PR number - uses: dawidd6/action-download-artifact@634d83b91986fcec9be314054943fa5c976aeb0e # v25 + uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27 with: workflow: ${{ github.event.workflow.id }} run_id: ${{ github.event.workflow_run.id }} name: pr-number - name: Download PR author - uses: dawidd6/action-download-artifact@634d83b91986fcec9be314054943fa5c976aeb0e # v25 + uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27 with: workflow: ${{ github.event.workflow.id }} run_id: ${{ github.event.workflow_run.id }} diff --git a/.github/workflows/pr-docs-deploy.yml b/.github/workflows/pr-docs-deploy.yml index d2c4df6a0eb53..2bc1b6971dc14 100644 --- a/.github/workflows/pr-docs-deploy.yml +++ b/.github/workflows/pr-docs-deploy.yml @@ -18,7 +18,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: - name: Download pr number - uses: dawidd6/action-download-artifact@634d83b91986fcec9be314054943fa5c976aeb0e # v25 + uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27 with: workflow: ${{ github.event.workflow.id }} run_id: ${{ github.event.workflow_run.id }} @@ -29,7 +29,7 @@ jobs: run: echo "id=$(> $GITHUB_OUTPUT - name: Download artifact - uses: dawidd6/action-download-artifact@634d83b91986fcec9be314054943fa5c976aeb0e # v25 + uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27 with: workflow: ${{ github.event.workflow.id }} run_id: ${{ github.event.workflow_run.id }} @@ -89,7 +89,7 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'failure' }} steps: - name: Download pr number - uses: dawidd6/action-download-artifact@634d83b91986fcec9be314054943fa5c976aeb0e # v25 + uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27 with: workflow: ${{ github.event.workflow.id }} run_id: ${{ github.event.workflow_run.id }} diff --git a/.github/workflows/publish-size-report-comment.yml b/.github/workflows/publish-size-report-comment.yml index aeb975a8208fc..8d4efaec0622e 100644 --- a/.github/workflows/publish-size-report-comment.yml +++ b/.github/workflows/publish-size-report-comment.yml @@ -23,14 +23,14 @@ jobs: steps: - name: Download comment body - uses: dawidd6/action-download-artifact@634d83b91986fcec9be314054943fa5c976aeb0e # v25 + uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27 with: workflow: ${{ github.event.workflow.id }} run_id: ${{ github.event.workflow_run.id }} name: compressed-size-comment - name: Derive PR number - uses: dawidd6/action-download-artifact@634d83b91986fcec9be314054943fa5c976aeb0e # v25 + uses: dawidd6/action-download-artifact@eab87c9830c39eff17e5a6eadb20bfb4bc880477 # v27 with: workflow: ${{ github.event.workflow.id }} run_id: ${{ github.event.workflow_run.id }} From f78ce0af34c1a98dfdfd0cbc7e25d187e78935c3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Sep 2026 13:38:46 +0800 Subject: [PATCH 4/5] chore(deps): update all patch devdependencies to ^5.0.2 (#24925) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 6 +-- pnpm-lock.yaml | 111 ++++++++++++++++++++++--------------------------- 2 files changed, 52 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index 87224f6680930..deb3729280a76 100644 --- a/package.json +++ b/package.json @@ -79,8 +79,8 @@ "@types/node": "^24.19.0", "@vitejs/plugin-vue": "catalog:", "@vitejs/plugin-vue-jsx": "catalog:", - "@vitest/coverage-v8": "^5.0.1", - "@vitest/ui": "^5.0.1", + "@vitest/coverage-v8": "^5.0.2", + "@vitest/ui": "^5.0.2", "@vue/server-renderer": "catalog:", "@vue/shared": "catalog:", "@vue/test-utils": "catalog:", @@ -101,7 +101,7 @@ "tinyglobby": "^0.2.17", "tsx": "catalog:", "typescript": "catalog:", - "vitest": "^5.0.1", + "vitest": "^5.0.2", "vue": "catalog:", "vue-router": "^5.3.1", "vue-tsc": "=3.1.5" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9349a8a414f20..e045e37df1704 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -329,11 +329,11 @@ importers: specifier: 'catalog:' version: 5.1.6(supports-color@10.2.2)(vite@8.3.1)(vue@3.5.25) '@vitest/coverage-v8': - specifier: ^5.0.1 - version: 5.0.1(vitest@5.0.1) + specifier: ^5.0.2 + version: 5.0.2(vitest@5.0.2) '@vitest/ui': - specifier: ^5.0.1 - version: 5.0.1(vitest@5.0.1) + specifier: ^5.0.2 + version: 5.0.2(vitest@5.0.2) '@vue/server-renderer': specifier: 'catalog:' version: 3.5.25(vue@3.5.25) @@ -395,8 +395,8 @@ importers: specifier: ~6.0.3 version: 6.0.3 vitest: - specifier: ^5.0.1 - version: 5.0.1(@types/node@24.19.0)(@vitest/coverage-v8@5.0.1)(@vitest/ui@5.0.1)(happy-dom@20.14.5)(jsdom@16.4.0)(vite@8.3.1) + specifier: ^5.0.2 + version: 5.0.2(@types/node@24.19.0)(@vitest/coverage-v8@5.0.2)(@vitest/ui@5.0.2)(happy-dom@20.14.5)(jsdom@16.4.0)(vite@8.3.1) vue: specifier: 'catalog:' version: 3.5.25(typescript@6.0.3) @@ -3387,11 +3387,11 @@ packages: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 vue: ^3.2.25 - '@vitest/coverage-v8@5.0.1': - resolution: {integrity: sha512-FRC8ACiudC3dI6MTplzRSYWHDRnIv2IPfbzs4FdoJNsMal/35sWV8hwIfV8ZcqzSPy+uXHeMVONt9CEqtOU17w==} + '@vitest/coverage-v8@5.0.2': + resolution: {integrity: sha512-3ffHBEi8DOOBLwIGBhOBZbRfYFYWjMUuxZicONdhuFEFEG5AVsMOSrVeuROskqnqpbOmEJwxM2eTVZ9N3a1t+A==} peerDependencies: - '@vitest/browser': 5.0.1 - vitest: 5.0.1 + '@vitest/browser': 5.0.2 + vitest: 5.0.2 peerDependenciesMeta: '@vitest/browser': optional: true @@ -3404,8 +3404,8 @@ packages: resolution: {integrity: sha512-1EOLRfsTMnyAr3+kEAsP4o9dhaDlGPpD7H5iLBBeq//YpNB1VIahkPhB+eRp9N2Dkfw8oySROjE3yf9XDeaIkQ==} engines: {node: '>=22'} - '@vitest/mocker@5.0.1': - resolution: {integrity: sha512-6K1DoBNAPGvuOcSsGA4D6x+5zEEff/KmOOP3uetT2TrGpVfI+HRHRnJJfKi5ib/g1vx8IYHQD8s0pbJz8WQI7Q==} + '@vitest/mocker@5.0.2': + resolution: {integrity: sha512-Z5FS00Q1SJHkB35xATsmWGdQ5WA1/0MV3CDjqyv7GavHv1OfOj145MNfHOlHk7QLes21dKFDHr8EO2zvL+9WGA==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3415,19 +3415,19 @@ packages: vite: optional: true - '@vitest/pretty-format@5.0.1': - resolution: {integrity: sha512-6guWwj5d9bguuefTOvJoq387tfpkzSv554YdUEGzjJH2PnnmvzTLQ1UQSuAk5wBFVhf2CUmy/S/palOcb6dmpA==} + '@vitest/pretty-format@5.0.2': + resolution: {integrity: sha512-YHM+mQQ7N1ROHMugJ7P/M+fC/q1G4zs/iAMZZCvhHcY8WkwPQcXBHD+z18oz+808Cfa12K7jOr3XPQMcLIovjw==} - '@vitest/spy@5.0.1': - resolution: {integrity: sha512-rbto/mF/SGERxEgYOek7Xm6B9b+y+mVoo+f4b2LymYO8zM1b7uB5nHuhVMTP2hxdzgxvGiZYGxGIaMvL5y180Q==} + '@vitest/spy@5.0.2': + resolution: {integrity: sha512-Ijc7T1nT9efNb5LxvjaBrEqw3f/QwUv5EE0nKqZxgqsaV/FxAAZ8baGylA8X/Z2oS4Lp+K74Jr6dTJsDKxJDeg==} - '@vitest/ui@5.0.1': - resolution: {integrity: sha512-7PvQu/X9/pQoHYfNLAYL22qsD4/+sx2k7zpUA7XvjW0sc40r3/r0lGZ2fsEyOHMuO8Q1KjiO1QQVjJdnWUy/WQ==} + '@vitest/ui@5.0.2': + resolution: {integrity: sha512-FRGWhLK/S+aaAtty/5d+jTtY5l+9pGNcjz6IHbyUiP3VWs6a+zIgU4lc1SzWCR7H+OXgetAI06i/VpCWQmVorQ==} peerDependencies: - vitest: 5.0.1 + vitest: 5.0.2 - '@vitest/utils@5.0.1': - resolution: {integrity: sha512-E9+yEA+jsfaoxZcUHFzEqUrQcoNh2EwrPT5efIqkUPUwD5Ua2Li9BRWaYeRwvzvdLgTSVrre8oKNeyrfg7KkdQ==} + '@vitest/utils@5.0.2': + resolution: {integrity: sha512-mgpUtxFhKeOKVaArBVHNJGdYHAeRh135o59l13uVmPUCS1OUtis5pBqXEgE25iqRgFqEBwXvJlkhknRsYnMeqg==} '@volar/language-core@2.4.23': resolution: {integrity: sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==} @@ -6670,9 +6670,6 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -6711,9 +6708,6 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - stacktracey@2.1.8: resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} @@ -7315,20 +7309,20 @@ packages: postcss: optional: true - vitest@5.0.1: - resolution: {integrity: sha512-iA95lQbKEkvrtTkdAgnWbXfbipWiiWe/hDl2P5tMi6WFwD76G0NxXAGp/M9EOcYupeGJRr6wppMc7CoA41TQjg==} + vitest@5.0.2: + resolution: {integrity: sha512-7MQrx9pDv5aHiUcovIb/70Ys3tgtkUVgCtledvKdCmEO+/1Dicq5ZqoSxOW034m03oqC+oHOKui2dM6qtMLoJg==} engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 5.0.1 - '@vitest/browser-preview': 5.0.1 + '@vitest/browser-playwright': 5.0.2 + '@vitest/browser-preview': 5.0.2 '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0 - '@vitest/coverage-istanbul': 5.0.1 - '@vitest/coverage-v8': 5.0.1 - '@vitest/ui': 5.0.1 + '@vitest/coverage-istanbul': 5.0.2 + '@vitest/coverage-v8': 5.0.2 + '@vitest/ui': 5.0.2 happy-dom: '*' jsdom: '*' vite: ^6.4.0 || ^7.0.0 || ^8.0.0 @@ -7483,9 +7477,9 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} + why-is-node-running@3.2.2: + resolution: {integrity: sha512-NKUzAelcoCXhXL4dJzKIwXeR8iEVqsA0Lq6Vnd0UXvgaKbzVo4ZTHROF2Jidrv+SgxOQ03fMinnNhzZATxOD3A==} + engines: {node: '>=20.11'} hasBin: true widest-line@3.1.0: @@ -9881,7 +9875,7 @@ snapshots: vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) vue: 3.5.25(typescript@6.0.3) - '@vitest/coverage-v8@5.0.1(vitest@5.0.1)': + '@vitest/coverage-v8@5.0.2(vitest@5.0.2)': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/istanbul-lib-coverage': 1.0.1 @@ -9891,7 +9885,7 @@ snapshots: obug: 2.2.1 std-env: 4.2.0 tinyrainbow: 3.1.1 - vitest: 5.0.1(@types/node@24.19.0)(@vitest/coverage-v8@5.0.1)(@vitest/ui@5.0.1)(happy-dom@20.14.5)(jsdom@16.4.0)(vite@8.3.1) + vitest: 5.0.2(@types/node@24.19.0)(@vitest/coverage-v8@5.0.2)(@vitest/ui@5.0.2)(happy-dom@20.14.5)(jsdom@16.4.0)(vite@8.3.1) '@vitest/istanbul-lib-coverage@1.0.1': {} @@ -9899,34 +9893,34 @@ snapshots: dependencies: '@vitest/istanbul-lib-coverage': 1.0.1 - '@vitest/mocker@5.0.1(vite@8.3.1)': + '@vitest/mocker@5.0.2(vite@8.3.1)': dependencies: '@jridgewell/trace-mapping': 0.3.31 - '@vitest/spy': 5.0.1 + '@vitest/spy': 5.0.2 estree-walker: 3.0.3 magic-string: 1.2.3 optionalDependencies: vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) - '@vitest/pretty-format@5.0.1': + '@vitest/pretty-format@5.0.2': dependencies: tinyrainbow: 3.1.1 - '@vitest/spy@5.0.1': {} + '@vitest/spy@5.0.2': {} - '@vitest/ui@5.0.1(vitest@5.0.1)': + '@vitest/ui@5.0.2(vitest@5.0.2)': dependencies: - '@vitest/utils': 5.0.1 + '@vitest/utils': 5.0.2 fflate: 0.8.3 flatted: 3.4.4 pathe: 2.0.3 sirv: 3.0.2 tinyrainbow: 3.1.1 - vitest: 5.0.1(@types/node@24.19.0)(@vitest/coverage-v8@5.0.1)(@vitest/ui@5.0.1)(happy-dom@20.14.5)(jsdom@16.4.0)(vite@8.3.1) + vitest: 5.0.2(@types/node@24.19.0)(@vitest/coverage-v8@5.0.2)(@vitest/ui@5.0.2)(happy-dom@20.14.5)(jsdom@16.4.0)(vite@8.3.1) - '@vitest/utils@5.0.1': + '@vitest/utils@5.0.2': dependencies: - '@vitest/pretty-format': 5.0.1 + '@vitest/pretty-format': 5.0.2 convert-source-map: 2.0.0 tinyrainbow: 3.1.1 @@ -13712,8 +13706,6 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 - siginfo@2.0.0: {} - signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -13752,8 +13744,6 @@ snapshots: safer-buffer: 2.1.2 tweetnacl: 0.14.5 - stackback@0.0.2: {} - stacktracey@2.1.8: dependencies: as-table: 1.0.55 @@ -14491,10 +14481,10 @@ snapshots: - typescript - universal-cookie - vitest@5.0.1(@types/node@24.19.0)(@vitest/coverage-v8@5.0.1)(@vitest/ui@5.0.1)(happy-dom@20.14.5)(jsdom@16.4.0)(vite@8.3.1): + vitest@5.0.2(@types/node@24.19.0)(@vitest/coverage-v8@5.0.2)(@vitest/ui@5.0.2)(happy-dom@20.14.5)(jsdom@16.4.0)(vite@8.3.1): dependencies: '@types/chai': 5.2.3 - '@vitest/mocker': 5.0.1(vite@8.3.1) + '@vitest/mocker': 5.0.2(vite@8.3.1) chai: 6.2.2 es-module-lexer: 2.3.2 expect-type: 1.4.0 @@ -14503,14 +14493,14 @@ snapshots: picomatch: 4.0.7 std-env: 4.2.0 tinybench: 6.1.4 - tinyexec: 1.3.0 + tinyexec: 1.3.1 tinyglobby: 0.2.17 vite: 8.3.1(@types/node@24.19.0)(esbuild@0.28.0)(jiti@2.7.0)(sass-embedded@1.105.0)(sass@1.105.0)(tsx@4.23.15)(yaml@2.9.1) - why-is-node-running: 2.3.0 + why-is-node-running: 3.2.2 optionalDependencies: '@types/node': 24.19.0 - '@vitest/coverage-v8': 5.0.1(vitest@5.0.1) - '@vitest/ui': 5.0.1(vitest@5.0.1) + '@vitest/coverage-v8': 5.0.2(vitest@5.0.2) + '@vitest/ui': 5.0.2(vitest@5.0.2) happy-dom: 20.14.5 jsdom: 16.4.0 transitivePeerDependencies: @@ -14713,10 +14703,7 @@ snapshots: dependencies: isexe: 2.0.0 - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 + why-is-node-running@3.2.2: {} widest-line@3.1.0: dependencies: From 307b91c09b5b880121104f204eaf7cd05af26881 Mon Sep 17 00:00:00 2001 From: patienry Date: Wed, 30 Sep 2026 14:30:45 +0800 Subject: [PATCH 5/5] fix(components): [time-picker] avoid triggering `change` twice when clearing (#24841) * fix: avoid triggering change twice when clearing * fix: update * fix: update * test: move to time-picker.test.tsx --------- Co-authored-by: btea <2356281422@qq.com> --- .../__tests__/time-picker.test.tsx | 99 ++++++++++++++++++- .../time-picker/src/common/picker.vue | 28 +++++- 2 files changed, 123 insertions(+), 4 deletions(-) diff --git a/packages/components/time-picker/__tests__/time-picker.test.tsx b/packages/components/time-picker/__tests__/time-picker.test.tsx index 1e83f301b25d6..4960d6bc07207 100644 --- a/packages/components/time-picker/__tests__/time-picker.test.tsx +++ b/packages/components/time-picker/__tests__/time-picker.test.tsx @@ -1,6 +1,6 @@ // @ts-nocheck import { computed, nextTick, ref } from 'vue' -import { mount } from '@vue/test-utils' +import { flushPromises, mount } from '@vue/test-utils' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import dayjs from 'dayjs' import { CircleClose } from '@element-plus/icons-vue' @@ -585,6 +585,103 @@ describe('TimePicker', () => { vi.useRealTimers() }) + + describe('clear with externally normalized empty value (#24826)', () => { + const mountWithNormalizedClear = (onChange: ReturnType) => { + const date = ref(new Date()) + return mount( + () => ( + (date.value = val ?? '')} + onChange={onChange} + /> + ), + { attachTo: document.body } + ) + } + + it('does not open the panel when the clear icon is clicked while unfocused', async () => { + const onChange = vi.fn() + const wrapper = mountWithNormalizedClear(onChange) + await nextTick() + + await wrapper.find('.el-input').trigger('mouseenter') + const clearIcon = wrapper.find('.clear-icon') + expect(clearIcon.exists()).toBe(true) + + await clearIcon.trigger('mousedown') + // in real browsers ElInput's capture-phase click listener focuses the + // input here, and a microtask checkpoint runs before the clear icon's + // own click handler + wrapper.find('input').element.focus() + await nextTick() + await nextTick() + await rAF() + const popperEl = document.querySelector( + '.el-picker__popper' + ) as HTMLElement + expect(popperEl.style.display).toBe('none') + + await clearIcon.trigger('click') + await flushPromises() + + expect(onChange).toHaveBeenCalledTimes(1) + expect(onChange).toHaveBeenCalledWith(null) + }) + + it('emits change only once when clearing while the panel is open', async () => { + const onChange = vi.fn() + const wrapper = mountWithNormalizedClear(onChange) + await nextTick() + + await wrapper.find('input').trigger('focus') + await nextTick() + await nextTick() + await wrapper.find('.el-input').trigger('mouseenter') + await wrapper.find('.clear-icon').trigger('click') + await flushPromises() + + expect(onChange).toHaveBeenCalledTimes(1) + expect(onChange).toHaveBeenCalledWith(null) + }) + + it('still opens the panel on focus after a canceled clear gesture', async () => { + const date = ref(new Date()) + const wrapper = mount( + () => , + { + attachTo: document.body, + } + ) + await nextTick() + + const input = wrapper.find('input') + input.element.focus() + await nextTick() + await nextTick() + await rAF() + const popperEl = document.querySelector( + '.el-picker__popper' + ) as HTMLElement + expect(popperEl.style.display).not.toBe('none') + + // press the clear icon but release over the wrapper (canceled gesture): + // neither onClear nor onMouseLeave runs + await wrapper.find('.el-input').trigger('mouseenter') + await wrapper.find('.clear-icon').trigger('mousedown') + await wrapper.find('.el-input__wrapper').trigger('click') + await nextTick() + + input.element.blur() + await nextTick() + input.element.focus() + await nextTick() + await nextTick() + await rAF() + expect(popperEl.style.display).not.toBe('none') + }) + }) }) describe('TimePicker(range)', () => { diff --git a/packages/components/time-picker/src/common/picker.vue b/packages/components/time-picker/src/common/picker.vue index 6c8325363e330..3cfdb91a049b9 100644 --- a/packages/components/time-picker/src/common/picker.vue +++ b/packages/components/time-picker/src/common/picker.vue @@ -86,7 +86,7 @@ @@ -145,7 +145,7 @@ @@ -264,6 +264,7 @@ const refPopper = ref() const inputRef = ref() const valueOnOpen = ref(null) let hasJustTabExitedInput = false +let isClearIconMousedown = false const pickerDisabled = useFormDisabled() @@ -289,6 +290,11 @@ const { isFocused, handleFocus, handleBlur } = useFocusController(inputRef, { }, afterFocus() { if (!props.automaticDropdown) return + // Clicking the clear icon focuses the input, which must not open the panel (#24826) + if (isClearIconMousedown) { + isClearIconMousedown = false + return + } pickerVisible.value = true }, beforeBlur(event) { @@ -306,6 +312,7 @@ const { isFocused, handleFocus, handleBlur } = useFocusController(inputRef, { } pickerVisible.value = false hasJustTabExitedInput = false + isClearIconMousedown = false props.validateEvent && formItem?.validate('blur').catch(NOOP) }, }) @@ -348,7 +355,16 @@ const emitChange = ( isClear?: boolean ) => { // determine user real change only - if (isClear || !valueEquals(val, valueOnOpen.value)) { + if ( + isClear || + !( + valueEquals(val, valueOnOpen.value) || + // the parent may normalize the cleared value to another empty + // representation, e.g. `null` to '' (#24826) + (emptyValues.isEmptyValue(val) && + emptyValues.isEmptyValue(valueOnOpen.value)) + ) + ) { emit(CHANGE_EVENT, val) // Set the value of valueOnOpen when clearing to avoid triggering change events multiple times. isClear && (valueOnOpen.value = val) @@ -452,8 +468,13 @@ const showClearBtn = computed( (hovering.value || isFocused.value) ) +const onClearIconMousedown = () => { + isClearIconMousedown = true +} + const onClear = (event?: MouseEvent) => { if (props.readonly || pickerDisabled.value) return + isClearIconMousedown = false if (showClearBtn.value) { event?.stopPropagation() // When the handleClear Function was provided, emit null will be executed inside it @@ -487,6 +508,7 @@ const onMouseEnter = () => { } const onMouseLeave = () => { hovering.value = false + isClearIconMousedown = false } const onTouchStartInput = (event: TouchEvent) => {