diff --git a/.github/workflows/lint-commit-message.yml b/.github/workflows/lint-commit-message.yml index fdb3e5f440..95e66baab5 100644 --- a/.github/workflows/lint-commit-message.yml +++ b/.github/workflows/lint-commit-message.yml @@ -20,16 +20,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/.github/workflows/pr-docs-build.yml b/.github/workflows/pr-docs-build.yml index e6409fc85a..a306b03dce 100644 --- a/.github/workflows/pr-docs-build.yml +++ b/.github/workflows/pr-docs-build.yml @@ -13,13 +13,11 @@ jobs: strategy: matrix: - node-version: [18] + node-version: [20] os: [ubuntu-latest, windows-latest] include: - - node-version: 18 + - node-version: 20 node-name: LTS - # - node-version: 18 - # node-name: Current fail-fast: false @@ -34,7 +32,7 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} @@ -44,7 +42,7 @@ jobs: echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT echo "pnpm_cache_dir=$(pnpm store path)" >> $env:GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/.github/workflows/publish-build-product.yml b/.github/workflows/publish-build-product.yml index e0b6571b7e..cc8c8dd850 100644 --- a/.github/workflows/publish-build-product.yml +++ b/.github/workflows/publish-build-product.yml @@ -23,16 +23,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/.github/workflows/publish-docs-deploy-manual.yml b/.github/workflows/publish-docs-deploy-manual.yml index c0f2c35ce5..d4ff432c71 100644 --- a/.github/workflows/publish-docs-deploy-manual.yml +++ b/.github/workflows/publish-docs-deploy-manual.yml @@ -14,16 +14,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/.github/workflows/publish-docs-deploy.yml b/.github/workflows/publish-docs-deploy.yml index da56032eeb..a8d0fa81db 100644 --- a/.github/workflows/publish-docs-deploy.yml +++ b/.github/workflows/publish-docs-deploy.yml @@ -21,16 +21,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/.github/workflows/publish-npm-nightly.yml b/.github/workflows/publish-npm-nightly.yml index adfd172c96..3061e93666 100644 --- a/.github/workflows/publish-npm-nightly.yml +++ b/.github/workflows/publish-npm-nightly.yml @@ -20,16 +20,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} @@ -56,9 +56,9 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: - node-version: '18' + node-version: 20 registry-url: https://registry.npmjs.com/ - name: Setup pnpm diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index 2ff6e83354..f38122b193 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -19,9 +19,9 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 registry-url: https://registry.npmjs.com/ - name: Get pnpm store directory @@ -29,7 +29,7 @@ jobs: run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} @@ -55,9 +55,9 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 registry-url: https://registry.npmjs.com/ - name: Setup pnpm diff --git a/.github/workflows/publish-pr-commit-pkg.yml b/.github/workflows/publish-pr-commit-pkg.yml index 0cbb680b11..a150316f17 100644 --- a/.github/workflows/publish-pr-commit-pkg.yml +++ b/.github/workflows/publish-pr-commit-pkg.yml @@ -21,7 +21,7 @@ jobs: - run: corepack enable - uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: 'pnpm' - name: Setup pnpm diff --git a/.github/workflows/publish-size-report.yml b/.github/workflows/publish-size-report.yml index 4e177017ff..4f15ccc015 100644 --- a/.github/workflows/publish-size-report.yml +++ b/.github/workflows/publish-size-report.yml @@ -20,16 +20,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/.github/workflows/staging-docs.yml b/.github/workflows/staging-docs.yml index 55a136e393..6f8e51450b 100644 --- a/.github/workflows/staging-docs.yml +++ b/.github/workflows/staging-docs.yml @@ -23,16 +23,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/.github/workflows/test-coverage.yml b/.github/workflows/test-coverage.yml index 4a59a078ac..d99ed94ead 100644 --- a/.github/workflows/test-coverage.yml +++ b/.github/workflows/test-coverage.yml @@ -25,16 +25,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/.github/workflows/test-ssr.yml b/.github/workflows/test-ssr.yml index 0c708c8d07..2103c7c7bd 100644 --- a/.github/workflows/test-ssr.yml +++ b/.github/workflows/test-ssr.yml @@ -23,16 +23,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/.github/workflows/test-unit.yml b/.github/workflows/test-unit.yml index 87c87c6904..eedd0d1242 100644 --- a/.github/workflows/test-unit.yml +++ b/.github/workflows/test-unit.yml @@ -25,16 +25,16 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 - name: Get pnpm store directory id: pnpm-cache run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} @@ -57,12 +57,12 @@ jobs: strategy: matrix: - node-version: [18, 20] + node-version: [20, 22] include: - - node-version: 18 - node-name: LTS - node-version: 20 - node-name: LTS-20 + node-name: LTS + - node-version: 22 + node-name: Current steps: - uses: actions/checkout@v4 @@ -71,7 +71,7 @@ jobs: uses: pnpm/action-setup@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} @@ -80,7 +80,7 @@ jobs: run: | echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Setup pnpm cache with: path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md index e948225f0c..4f368e26d5 100644 --- a/CHANGELOG.en-US.md +++ b/CHANGELOG.en-US.md @@ -1,5 +1,49 @@ ## Changelog +### 2.8.6 + +_2024-10-18_ + +#### Features + +- Components [input] show pwd visible icon when the input is readonly (#18458 by @LoTwT) + +#### Bug fixes + +- Components [dropdown-item] remove redundant attributes (#18340 by @betavs) +- Components [select-v2] data echo abnormality (#18334 by @betavs) +- Components [segmented] no option to not render (#18509 by @btea) +- Progress bar get stuck when navigating between routes (#18586 by @makedopamine) +- Revert(components): [table-v2] #18179 & fix header checkbox z-index (#18554 by @warmthsea) + +### 2.8.5 + +_2024-10-11_ + +#### Features + +- I18n update germany translations (#18447 by @MaikoTan) +- Components [mention] explicit export dropdownVisible (#18460 by @SorrowX) +- Components [select & select-v2] explicit export `selectedLabel` (#18350 by @warmthsea) + +#### Bug fixes + +- Play dayjs cahce miss (#18381 by @makedopamine) +- Theme-chalk upgrade SASS version and fix deprecated color function (#18376 by @lvzhenbo) +- Components [transfer] render the option's label correctly when there's only an empty comment in the default slot (#18416 by @LoTwT) +- Components [table] cancel layout update when component unmount (#18440 by @btea) +- Hooks [lockscreen] compatible with document non-existence (#18445 by @btea) +- Components [mention] native event triggered twice (#18453 by @SorrowX) +- Components [select] use `blur` in the tooltip slot has no effect (#18335 by @warmthsea) +- Hooks rendering multiple popper container DOM in SSR/SSG (#18482 by @tolking) +- Components [select] the blur not triggered when click the outside (#18478 by @tolking) +- Components [table] the last column shuld not allow drag (#18444 by @btea) + +#### Refactors + +- Components [badge] show-zero implement (#18360 by @warmthsea) +- Docs remove Vite (#18383 by @makedopamine) + ### 2.8.4 _2024-09-27_ diff --git a/README.md b/README.md index 2b1264106a..c0008bf1b9 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,11 @@ You can also try Element Plus out with the components built-in playground. + + + + + diff --git a/docs/.vitepress/config/sponsors.ts b/docs/.vitepress/config/sponsors.ts index e9bed6f677..ef3b1c5a29 100644 --- a/docs/.vitepress/config/sponsors.ts +++ b/docs/.vitepress/config/sponsors.ts @@ -29,6 +29,14 @@ export const rightLogoSmallSponsors = [ slogan: 'Fast and elegant low-code dev platform', slogan_cn: '快速且优雅的低代码平台', }, + { + name: 'Fantastic-admin', + img: '/images/sponsors/fantastic-admin.png', + imgL: '/images/sponsors/fantastic-admin-l.png', + url: 'https://fantastic-admin.github.io/', + slogan: 'Out-of-the-box Vue3 management system framework', + slogan_cn: '一款开箱即用的 Vue3 中后台管理系统框架', + }, { name: 'bit', img: '/images/bit.svg', diff --git a/docs/.vitepress/config/vite.ts b/docs/.vitepress/config/vite.ts index 924682ba18..7906075805 100644 --- a/docs/.vitepress/config/vite.ts +++ b/docs/.vitepress/config/vite.ts @@ -43,20 +43,27 @@ const alias: AliasOptions = [ ...(process.env.DOC_ENV === 'production' ? [] : [ - { - find: /^element-plus(\/(es|lib))?$/, - replacement: path.resolve(projRoot, 'packages/element-plus/index.ts'), - }, - { - find: /^element-plus\/(es|lib)\/(.*)$/, - replacement: `${path.resolve(projRoot, 'packages')}/$2`, - }, - ]), + { + find: /^element-plus(\/(es|lib))?$/, + replacement: path.resolve(projRoot, 'packages/element-plus/index.ts'), + }, + { + find: /^element-plus\/(es|lib)\/(.*)$/, + replacement: `${path.resolve(projRoot, 'packages')}/$2`, + }, + ]), ] export const getViteConfig = ({ mode }: { mode: string }): ViteConfig => { const env = loadEnv(mode, process.cwd(), '') return { + css: { + preprocessorOptions: { + scss: { + silenceDeprecations: ['legacy-js-api'], + }, + }, + }, server: { host: true, fs: { diff --git a/docs/.vitepress/lang.js b/docs/.vitepress/lang.js index 11c385cefd..e4cfefddd4 100644 --- a/docs/.vitepress/lang.js +++ b/docs/.vitepress/lang.js @@ -2,18 +2,15 @@ const supportedLangs = window.supportedLangs const cacheKey = 'preferred_lang' const defaultLang = 'en-US' - // docs supported languages - const langAlias = { - en: 'en-US', - fr: 'fr-FR', - es: 'es-ES', + const handleNavigatorLang = (navLang) => { + const { language, region } = new Intl.Locale(navLang).maximize() + return `${language}-${region}` } - let userPreferredLang = localStorage.getItem(cacheKey) || navigator.language - const language = - langAlias[userPreferredLang] || - (supportedLangs.includes(userPreferredLang) - ? userPreferredLang - : defaultLang) + let userPreferredLang = + localStorage.getItem(cacheKey) || handleNavigatorLang(navigator.language) + const language = supportedLangs.includes(userPreferredLang) + ? userPreferredLang + : defaultLang localStorage.setItem(cacheKey, language) userPreferredLang = language if (!location.pathname.startsWith(`/${userPreferredLang}`)) { diff --git a/docs/.vitepress/vitepress/components/home/svg/guide-svg.vue b/docs/.vitepress/vitepress/components/home/svg/guide-svg.vue index 0f6f2c32ab..191ece001d 100644 --- a/docs/.vitepress/vitepress/components/home/svg/guide-svg.vue +++ b/docs/.vitepress/vitepress/components/home/svg/guide-svg.vue @@ -13,10 +13,6 @@ d="M53 19C53 16.7909 54.7909 15 57 15H96L106.054 26.8815C106.665 27.6037 107 28.5191 107 29.4652V61C107 63.2091 105.209 65 103 65H57C54.7909 65 53 63.2091 53 61V19Z" fill="var(--guide-c-1)" /> - -import { computed, nextTick, onUpdated, ref, watch } from 'vue' +import { computed, nextTick, watch } from 'vue' import nprogress from 'nprogress' import { useData, useRoute } from 'vitepress' import { useSidebar } from '../composables/sidebar' @@ -16,23 +16,26 @@ const { hasSidebar } = useSidebar() const props = defineProps<{ isSidebarOpen: boolean }>() -const shouldUpdateProgress = ref(true) +let shouldUpdateProgress = true watch( () => props.isSidebarOpen, (val) => { // delay the flag update since watch is called before onUpdated nextTick(() => { - shouldUpdateProgress.value = !val + shouldUpdateProgress = !val }) } ) - -onUpdated(() => { - if (shouldUpdateProgress.value) { - nprogress.done() +watch( + () => route.path, + () => { + if (shouldUpdateProgress) nprogress.done() + }, + { + flush: 'post', } -}) +)