From 0ca1570aa128dbf15afa94a14970d3f2842e442b Mon Sep 17 00:00:00 2001 From: dopamine Date: Tue, 16 Dec 2025 09:34:03 +0800 Subject: [PATCH] chore: upgrade to Vue 3.5 (#22096) * chore: upgrade deps * chore: replace __ExtractPublicPropTypes with ExtractPublicPropTypes * fix: get rid of type errors * fix: resolve test errors with @vue/test-utils v2.4.6 * fix: resolve test errors with Vue 3.5.22 * ci: set pnpm flag * chore: update the Vue peer dependency version * Apply suggestion from @tolking Co-authored-by: qiang * docs: update example code Co-authored-by: warmthsea <2586244885@qq.com> * chore: remove csstype (#22487) * chore: fix merge code type error * chore: fix test:ssr error - Cannot read properties of undefined (reading 'getSSRProps') * chore: fix typecheck:vitest error * chore: update pnpm yaml file * test: fix collapse accordion error * chore: update deps * chore: fix type error * chore: lock file * chore: sync change sync with the remove of vue macro * refactor: use computed instead of eagerComputed * fix: timeline.test.tsx typecheck * chore: clean lock file try dont throw CodeFactor issues in ci did: - rm pnpm-lock.yaml - rm -rf ./**/node_modules - pnpm store prune - pnpm cache delete - pnpm install Also stay in 3.1.0 for vue-tsc in order to avoid the warnings of template refs, see https://github.com/vuejs/language-tools/issues/5815 * chore: format code --------- Co-authored-by: Dsaquel <291874700n@gmail.com> Co-authored-by: qiang Co-authored-by: warmthsea <2586244885@qq.com> Co-authored-by: Noblet Ouways <91417411+Dsaquel@users.noreply.github.com> Co-authored-by: sea <45450994+warmthsea@users.noreply.github.com> Co-authored-by: btea <2356281422@qq.com> --- .github/renovate.json5 | 1 - docs/.vitepress/config/index.mts | 2 - docs/.vitepress/config/vue-compiler.ts | 9 - docs/en-US/component/tooltip.md | 2 +- docs/examples/avatar/fit.vue | 4 +- docs/examples/tree/customized-node.vue | 8 +- docs/package.json | 6 +- internal/build/package.json | 9 +- internal/build/src/tasks/full-bundle.ts | 19 +- internal/build/src/tasks/modules.ts | 19 +- package.json | 16 +- packages/components/affix/src/affix.ts | 11 +- packages/components/alert/src/alert.ts | 4 +- .../anchor/__tests__/anchor.test.tsx | 25 +- packages/components/anchor/src/anchor-link.ts | 4 +- packages/components/anchor/src/anchor.ts | 4 +- .../__tests__/autocomplete.test.tsx | 12 +- .../autocomplete/src/autocomplete.ts | 4 +- packages/components/avatar/src/avatar.ts | 11 +- packages/components/backtop/src/backtop.ts | 4 +- packages/components/badge/src/badge.ts | 8 +- .../breadcrumb/__tests__/breadcrumb.test.tsx | 1 + .../breadcrumb/src/breadcrumb-item.ts | 4 +- .../components/breadcrumb/src/breadcrumb.ts | 4 +- .../button/__tests__/button.test.tsx | 6 +- .../components/button/src/button-group.ts | 4 +- packages/components/button/src/button.ts | 4 +- .../calendar/__tests__/calendar.test.tsx | 82 +- packages/components/calendar/src/calendar.ts | 4 +- .../components/calendar/src/date-table.ts | 6 +- packages/components/card/src/card.ts | 4 +- .../components/carousel/src/carousel-item.ts | 4 +- packages/components/carousel/src/carousel.ts | 4 +- .../components/cascader-panel/src/types.ts | 2 +- packages/components/cascader/src/cascader.vue | 7 +- .../check-tag/__tests__/check-tag.test.tsx | 59 +- .../components/check-tag/src/check-tag.ts | 4 +- .../components/checkbox/src/checkbox-group.ts | 4 +- packages/components/checkbox/src/checkbox.ts | 4 +- packages/components/col/src/col.ts | 4 +- .../collapse/__tests__/collapse.test.tsx | 288 +- .../components/collapse/src/collapse-item.ts | 4 +- packages/components/collapse/src/collapse.ts | 4 +- .../components/collection/src/collection.ts | 14 +- .../src/color-picker-panel.ts | 4 +- .../src/composables/use-slider.ts | 9 +- .../color-picker-panel/src/props/predefine.ts | 6 +- .../color-picker-panel/src/props/slider.ts | 4 +- .../color-picker-panel/src/props/sv-panel.ts | 4 +- .../color-picker/src/color-picker.ts | 4 +- .../color-picker/src/color-picker.vue | 2 +- .../src/config-provider-props.ts | 4 +- .../container/__tests__/container.test.tsx | 29 +- .../components/countdown/src/countdown.ts | 10 +- .../date-picker-panel/src/props/basic-cell.ts | 6 +- .../src/props/basic-date-table.ts | 4 +- .../src/props/basic-month-table.ts | 4 +- .../src/props/basic-year-table.ts | 4 +- .../src/props/date-picker-panel.ts | 4 +- .../src/props/panel-date-pick.ts | 4 +- .../src/props/panel-date-range.ts | 4 +- .../src/props/panel-month-range.ts | 4 +- .../src/props/panel-year-range.ts | 4 +- .../date-picker-panel/src/props/shared.ts | 4 +- packages/components/date-picker/src/props.ts | 4 +- .../descriptions/src/description-item.ts | 9 +- .../descriptions/src/description.ts | 4 +- packages/components/dialog/src/dialog.ts | 4 +- packages/components/divider/src/divider.ts | 4 +- packages/components/drawer/src/drawer.ts | 4 +- packages/components/empty/src/empty.ts | 4 +- packages/components/form/src/constants.ts | 2 +- packages/components/form/src/form-item.ts | 4 +- packages/components/form/src/form.ts | 6 +- packages/components/icon/src/icon.ts | 4 +- .../__tests__/image-viewer.test.tsx | 6 +- .../image-viewer/src/image-viewer.ts | 4 +- .../components/image/__tests__/image.test.tsx | 15 +- packages/components/image/src/image.ts | 4 +- .../__tests__/input-number.test.tsx | 16 +- .../input-number/src/input-number.ts | 6 +- .../src/composables/use-input-tag-dom.ts | 3 +- .../components/input-tag/src/input-tag.ts | 4 +- packages/components/input/src/input.ts | 4 +- packages/components/link/src/link.ts | 4 +- .../loading/__tests__/loading.test.tsx | 4 +- packages/components/mention/src/mention.ts | 4 +- packages/components/mention/src/mention.vue | 2 +- .../components/menu/src/menu-item-group.ts | 4 +- packages/components/menu/src/menu-item.ts | 4 +- packages/components/menu/src/menu.ts | 4 +- packages/components/menu/src/sub-menu.ts | 4 +- .../message-box/src/message-box.type.ts | 2 +- .../message/__tests__/message.test.ts | 50 +- packages/components/message/src/message.ts | 4 +- .../__tests__/notification.test.tsx | 10 +- .../notification/src/notification.ts | 4 +- packages/components/overlay/src/overlay.ts | 7 +- packages/components/package.json | 1 - .../components/page-header/src/page-header.ts | 4 +- .../pagination/src/components/jumper.ts | 4 +- .../pagination/src/components/next.ts | 4 +- .../pagination/src/components/pager.ts | 4 +- .../pagination/src/components/prev.ts | 4 +- .../pagination/src/components/sizes.ts | 4 +- .../pagination/src/components/total.ts | 4 +- .../components/pagination/src/pagination.ts | 4 +- .../components/popconfirm/src/popconfirm.ts | 4 +- .../popover/__tests__/popover.test.tsx | 6 +- packages/components/popover/src/popover.ts | 4 +- .../popper/__tests__/arrow.test.tsx | 2 +- .../popper/__tests__/content.test.tsx | 14 +- .../popper/__tests__/popper.test.tsx | 7 +- .../popper/__tests__/trigger.test.tsx | 14 +- packages/components/popper/src/arrow.ts | 4 +- packages/components/popper/src/content.ts | 10 +- packages/components/popper/src/popper.ts | 4 +- packages/components/popper/src/trigger.ts | 14 +- packages/components/popper/src/trigger.vue | 4 + packages/components/progress/src/progress.ts | 4 +- packages/components/radio/src/radio-button.ts | 4 +- packages/components/radio/src/radio-group.ts | 4 +- packages/components/radio/src/radio.ts | 4 +- packages/components/rate/src/rate.ts | 4 +- packages/components/result/src/result.ts | 4 +- .../src/roving-focus-group.ts | 4 +- packages/components/row/src/row.ts | 4 +- packages/components/scrollbar/src/bar.ts | 4 +- .../components/scrollbar/src/constants.ts | 4 +- .../components/scrollbar/src/scrollbar.ts | 10 +- packages/components/scrollbar/src/thumb.ts | 4 +- packages/components/scrollbar/src/thumb.vue | 8 +- .../components/segmented/src/segmented.ts | 6 +- packages/components/select-v2/src/defaults.ts | 6 +- .../select/__tests__/options.test.tsx | 4 +- .../select/__tests__/select.test.ts | 4 +- packages/components/select/src/select.ts | 4 +- packages/components/select/src/type.ts | 4 +- .../skeleton/__tests__/skeleton.test.tsx | 10 +- .../components/skeleton/src/skeleton-item.ts | 4 +- packages/components/skeleton/src/skeleton.ts | 4 +- packages/components/slider/src/button.ts | 4 +- packages/components/slider/src/marker.ts | 4 +- packages/components/slider/src/slider.ts | 4 +- .../slot/__tests__/only-child.test.tsx | 8 +- packages/components/space/src/item.ts | 6 +- packages/components/space/src/space.ts | 8 +- .../splitter/__tests__/splitter.test.tsx | 4 +- .../components/splitter/src/split-panel.ts | 4 +- packages/components/splitter/src/splitter.ts | 4 +- .../components/statistic/src/statistic.ts | 10 +- .../components/steps/__tests__/steps.test.tsx | 4 +- packages/components/steps/src/item.ts | 4 +- packages/components/steps/src/steps.ts | 4 +- packages/components/switch/src/switch.ts | 4 +- .../components/table-v2/src/auto-resizer.ts | 4 +- packages/components/table-v2/src/cell.ts | 8 +- packages/components/table-v2/src/grid.ts | 4 +- .../components/table-v2/src/header-cell.ts | 4 +- .../components/table-v2/src/header-row.ts | 4 +- packages/components/table-v2/src/header.ts | 4 +- packages/components/table-v2/src/row.ts | 4 +- packages/components/table-v2/src/table.ts | 4 +- packages/components/table-v2/src/utils.ts | 1 + packages/components/table/src/store/helper.ts | 1 - .../components/table/src/table/defaults.ts | 2 +- packages/components/table/src/util.ts | 6 +- packages/components/tabs/src/tab-bar.ts | 4 +- packages/components/tabs/src/tab-nav.tsx | 4 +- packages/components/tabs/src/tab-pane.ts | 4 +- packages/components/tabs/src/tab-pane.vue | 5 +- packages/components/tabs/src/tabs.tsx | 4 +- packages/components/tag/src/tag.ts | 4 +- packages/components/teleport/src/teleport.ts | 4 +- packages/components/text/src/text.ts | 4 +- .../time-picker/src/common/picker.vue | 3 - .../time-picker/src/common/props.ts | 4 +- .../src/props/basic-time-spinner.ts | 4 +- .../src/props/panel-time-picker.ts | 4 +- .../time-picker/src/props/panel-time-range.ts | 4 +- .../time-picker/src/props/shared.ts | 6 +- .../components/time-select/src/time-select.ts | 4 +- .../timeline/__tests__/timeline.test.tsx | 11 +- .../components/timeline/src/timeline-item.ts | 4 +- .../tooltip/__tests__/tooltip.test.tsx | 6 +- packages/components/tooltip/src/content.ts | 4 +- packages/components/tooltip/src/tooltip.ts | 4 +- packages/components/tooltip/src/trigger.ts | 4 +- .../components/tour/__tests__/tour.test.tsx | 34 +- packages/components/tour/src/content.ts | 4 +- packages/components/tour/src/mask.ts | 4 +- packages/components/tour/src/step.ts | 4 +- packages/components/tour/src/tour.ts | 4 +- .../components/transfer/src/transfer-panel.ts | 4 +- packages/components/transfer/src/transfer.ts | 4 +- .../__tests__/tree-select.test.tsx | 17 +- .../tree-select/src/tree-select.vue | 8 +- packages/components/tree-v2/src/types.ts | 4 +- .../components/tree/src/model/useDragNode.ts | 2 +- packages/components/tree/src/tree.ts | 94 +- packages/components/tree/src/tree.vue | 89 +- packages/components/upload/src/constants.ts | 4 +- .../components/upload/src/upload-content.ts | 4 +- .../components/upload/src/upload-dragger.ts | 4 +- packages/components/upload/src/upload-list.ts | 4 +- packages/components/upload/src/upload.ts | 4 +- .../__tests__/dynamic-size-grid.test.ts | 52 +- .../__tests__/fixed-size-grid.test.ts | 53 +- .../virtual-list/src/components/scrollbar.ts | 5 +- packages/components/virtual-list/src/props.ts | 14 +- .../components/watermark/src/watermark.ts | 6 +- packages/directives/click-outside/index.ts | 8 +- packages/element-plus/package.json | 6 +- packages/hooks/__tests__/use-attrs.test.tsx | 26 +- .../hooks/__tests__/use-floating.test.tsx | 100 +- packages/hooks/__tests__/use-locale.test.tsx | 7 +- .../hooks/__tests__/use-model-toggle.test.tsx | 1 + .../hooks/__tests__/use-namespace.test.tsx | 9 +- .../__tests__/use-popper-container.test.tsx | 4 +- packages/hooks/__tests__/use-popper.test.tsx | 32 +- packages/hooks/__tests__/use-timeout.test.ts | 19 +- packages/hooks/use-forward-ref/index.ts | 4 +- packages/hooks/use-model-toggle/index.ts | 4 +- packages/utils/__tests__/vue/props.test.ts | 7 +- packages/utils/vue/icon.ts | 3 + packages/utils/vue/typescript.ts | 4 +- packages/utils/vue3.3.polyfill.ts | 56 - play/package.json | 5 +- play/vite.config.mts | 11 +- pnpm-lock.yaml | 12668 ++++++++-------- pnpm-workspace.yaml | 11 +- scripts/gc.sh | 4 +- ssr-testing/vitest.config.ts | 12 +- tsconfig.play.json | 1 - tsconfig.vitest.json | 9 +- tsconfig.web.json | 9 +- vitest.config.mts | 12 +- 237 files changed, 7685 insertions(+), 7249 deletions(-) delete mode 100644 docs/.vitepress/config/vue-compiler.ts delete mode 100644 packages/utils/vue3.3.polyfill.ts diff --git a/.github/renovate.json5 b/.github/renovate.json5 index b4004a2270..be1ae8f8a6 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -10,7 +10,6 @@ ], ignoreDeps: [ 'node', - 'csstype', // pure esm 'chalk', diff --git a/docs/.vitepress/config/index.mts b/docs/.vitepress/config/index.mts index 55acff2ffe..376705c210 100644 --- a/docs/.vitepress/config/index.mts +++ b/docs/.vitepress/config/index.mts @@ -8,7 +8,6 @@ import { nav } from './nav' import { mdPlugin } from './plugins' import { sidebars } from './sidebars' import { getViteConfig } from './vite' -import { vueCompiler } from './vue-compiler' import type { UserConfig } from 'vitepress' @@ -83,7 +82,6 @@ const setupConfig = (configEnv) => { config: (md) => mdPlugin(md), }, vue: { - compiler: vueCompiler, template: { compilerOptions: { hoistStatic: false, diff --git a/docs/.vitepress/config/vue-compiler.ts b/docs/.vitepress/config/vue-compiler.ts deleted file mode 100644 index 779c3b5bbd..0000000000 --- a/docs/.vitepress/config/vue-compiler.ts +++ /dev/null @@ -1,9 +0,0 @@ -// TODO: delete this file after upgrading vue in root package.json -import { createRequire } from 'node:module' - -const _require = createRequire(import.meta.url) -const vitepressPath = _require.resolve('vitepress') - -export const vueCompiler = _require( - _require.resolve('vue/compiler-sfc', { paths: [vitepressPath] }) -) diff --git a/docs/en-US/component/tooltip.md b/docs/en-US/component/tooltip.md index d49da2a6ff..c995560af8 100644 --- a/docs/en-US/component/tooltip.md +++ b/docs/en-US/component/tooltip.md @@ -182,7 +182,7 @@ tooltip/append-to | popper-style | custom style for Tooltip's popper | ^[string] / ^[object] | — | | enterable | whether the mouse can enter the tooltip | ^[boolean] | true | | teleported | whether tooltip content is teleported, if `true` it will be teleported to where `append-to` sets | ^[boolean] | true | -| trigger | How should the tooltip be triggered (to show), not valid in controlled mode | ^[enum]`'hover' \| 'click' \| 'focus' \| 'contextmenu'` / ^[array]`Array<'click' \| 'focus' \| 'hover' \| 'contextmenu'>` | hover | +| trigger | How should the tooltip be triggered (to show), not valid in controlled mode | ^[enum]`'hover' \| 'click' \| 'focus' \| 'contextmenu'` / ^[array]`Array<'click' \| 'focus' \| 'hover' \| 'contextmenu'>` | hover | | virtual-triggering | Indicates whether virtual triggering is enabled | ^[boolean] | — | | virtual-ref | Indicates the reference element to which the tooltip is attached | ^[HTMLElement] | — | | trigger-keys | When you click the mouse to focus on the trigger element, you can define a set of keyboard codes to control the display of tooltip through the keyboard, not valid in controlled mode | ^[Array] | ['Enter','Space'] | diff --git a/docs/examples/avatar/fit.vue b/docs/examples/avatar/fit.vue index 8b532f327e..cb0616c389 100644 --- a/docs/examples/avatar/fit.vue +++ b/docs/examples/avatar/fit.vue @@ -10,7 +10,7 @@