From 1e029dbc9afb2ff3ce0fb27ca16742d7b95f5eda Mon Sep 17 00:00:00 2001 From: vent <101112169+ventupx@users.noreply.github.com> Date: Tue, 30 Sep 2025 05:09:33 +0800 Subject: [PATCH 01/64] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=9C=BA=E6=99=AF=20echarts=20=E5=9C=A8=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=20v-show=20=E6=97=B6=E8=8E=B7=E5=8F=96=E4=B8=8D?= =?UTF-8?q?=E5=88=B0=20width=20=E7=9A=84=E9=97=AE=E9=A2=98=20(#6776)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/src/echarts/use-echarts.ts | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/effects/plugins/src/echarts/use-echarts.ts b/packages/effects/plugins/src/echarts/use-echarts.ts index d2e96ebb6..b5ff6d42f 100644 --- a/packages/effects/plugins/src/echarts/use-echarts.ts +++ b/packages/effects/plugins/src/echarts/use-echarts.ts @@ -32,6 +32,21 @@ function useEcharts(chartRef: Ref) { const { height, width } = useWindowSize(); const resizeHandler: () => void = useDebounceFn(resize, 200); + const getChartEl = (): HTMLElement | null => { + const refValue = chartRef?.value as unknown; + if (!refValue) return null; + if (refValue instanceof HTMLElement) { + return refValue; + } + const maybeComponent = refValue as { $el?: HTMLElement }; + return maybeComponent.$el ?? null; + }; + + const isElHidden = (el: HTMLElement | null): boolean => { + if (!el) return true; + return el.offsetHeight === 0 || el.offsetWidth === 0; + }; + const getOptions = computed((): EChartsOption => { if (!isDark.value) { return {}; @@ -54,7 +69,7 @@ function useEcharts(chartRef: Ref) { const renderEcharts = ( options: EChartsOption, - clear = true, + clear = true ): Promise> => { cacheOptions = options; const currentOptions = { @@ -69,6 +84,13 @@ function useEcharts(chartRef: Ref) { return; } nextTick(() => { + const el = getChartEl(); + if (isElHidden(el)) { + useTimeoutFn(async () => { + resolve(await renderEcharts(currentOptions)); + }, 30); + return; + } useTimeoutFn(() => { if (!chartInstance) { const instance = initCharts(); @@ -83,6 +105,10 @@ function useEcharts(chartRef: Ref) { }; function resize() { + const el = getChartEl(); + if (isElHidden(el)) { + return; + } chartInstance?.resize({ animation: { duration: 300, -- Gitee From 42e3de9e2cafd3a94d0ff0785fd0acf9a5299c40 Mon Sep 17 00:00:00 2001 From: shierd Date: Tue, 30 Sep 2025 05:10:39 +0800 Subject: [PATCH 02/64] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E8=A1=A8=E5=8D=95=E5=80=BC=E6=97=B6=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=AD=90=E5=AF=B9=E8=B1=A1=E7=9A=84=E9=94=99=E8=AF=AF=20(#6780?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: shier --- packages/@core/ui-kit/form-ui/src/form-api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@core/ui-kit/form-ui/src/form-api.ts b/packages/@core/ui-kit/form-ui/src/form-api.ts index aa1486296..401748c36 100644 --- a/packages/@core/ui-kit/form-ui/src/form-api.ts +++ b/packages/@core/ui-kit/form-ui/src/form-api.ts @@ -342,7 +342,7 @@ export class FormApi { isObject(obj[key]) && !isDayjsObject(obj[key]) && !isDate(obj[key]) - ? fieldMergeFn(obj[key], value) + ? fieldMergeFn(value, obj[key]) : value; } return true; -- Gitee From 713281a8baff7504688aca82f7eb54c7ab52f0c3 Mon Sep 17 00:00:00 2001 From: HaHa <110732547+bprag@users.noreply.github.com> Date: Tue, 30 Sep 2025 05:10:51 +0800 Subject: [PATCH 03/64] fix(theme-button): fix flicker during theme switch (#6782) --- .../layouts/src/widgets/theme-toggle/theme-button.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/effects/layouts/src/widgets/theme-toggle/theme-button.vue b/packages/effects/layouts/src/widgets/theme-toggle/theme-button.vue index 9ee4bceb5..b007caca8 100644 --- a/packages/effects/layouts/src/widgets/theme-toggle/theme-button.vue +++ b/packages/effects/layouts/src/widgets/theme-toggle/theme-button.vue @@ -64,7 +64,7 @@ function toggleTheme(event: MouseEvent) { `circle(0px at ${x}px ${y}px)`, `circle(${endRadius}px at ${x}px ${y}px)`, ]; - document.documentElement.animate( + const animate = document.documentElement.animate( { clipPath: isDark.value ? [...clipPath].reverse() : clipPath, }, @@ -76,6 +76,9 @@ function toggleTheme(event: MouseEvent) { : '::view-transition-new(root)', }, ); + animate.onfinish = () => { + transition.skipTransition(); + }; }); } -- Gitee From 6e03de50113a5f6d1aba8aaa1b2a4674b67ff845 Mon Sep 17 00:00:00 2001 From: lw567 <535847787@qq.com> Date: Tue, 30 Sep 2025 19:53:09 +0800 Subject: [PATCH 04/64] fix: watermark create error #6788 (#6789) Co-authored-by: liwei567 --- playground/src/views/demos/features/watermark/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playground/src/views/demos/features/watermark/index.vue b/playground/src/views/demos/features/watermark/index.vue index 77b3f1799..27875fcc2 100644 --- a/playground/src/views/demos/features/watermark/index.vue +++ b/playground/src/views/demos/features/watermark/index.vue @@ -8,7 +8,7 @@ const { destroyWatermark, updateWatermark, watermark } = useWatermark(); async function recreateWaterMark() { destroyWatermark(); - await updateWatermark({}); + await createWaterMark(); } async function createWaterMark() { -- Gitee From 33306a5aff6108868fe0c67cec6dd45cecae1e93 Mon Sep 17 00:00:00 2001 From: zouawen <846027729@qq.com> Date: Mon, 6 Oct 2025 06:56:54 +0800 Subject: [PATCH 05/64] =?UTF-8?q?chore:=20=E6=9B=B4=E6=8D=A2=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E7=99=BB=E5=BD=95=E6=96=B9=E5=BC=8F=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E4=B8=BA=E5=BD=A9=E8=89=B2=E5=9B=BE=E6=A0=87=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=85=B6=E4=BB=96=E7=99=BB=E5=BD=95=E6=96=B9=E5=BC=8F?= =?UTF-8?q?tooltip=E6=96=87=E5=AD=97=E6=8F=90=E7=A4=BA=20(#6799)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/layouts/basic.vue | 4 ++-- apps/web-ele/src/layouts/basic.vue | 4 ++-- apps/web-naive/src/layouts/basic.vue | 4 ++-- .../src/ui/authentication/dingding-login.vue | 4 ++-- .../src/ui/authentication/third-party-login.vue | 15 ++++++++++----- packages/icons/src/iconify/index.ts | 10 ---------- packages/icons/src/svg/icons/dingding.svg | 1 + packages/icons/src/svg/icons/github.svg | 1 + packages/icons/src/svg/icons/google.svg | 1 + packages/icons/src/svg/icons/qqchat.svg | 1 + packages/icons/src/svg/icons/wechat.svg | 1 + packages/icons/src/svg/index.ts | 10 ++++++++++ .../locales/src/langs/en-US/authentication.json | 4 ++++ .../locales/src/langs/zh-CN/authentication.json | 4 ++++ playground/src/layouts/basic.vue | 4 ++-- .../src/views/demos/features/icons/index.vue | 16 ++++++++-------- 16 files changed, 51 insertions(+), 33 deletions(-) create mode 100644 packages/icons/src/svg/icons/dingding.svg create mode 100644 packages/icons/src/svg/icons/github.svg create mode 100644 packages/icons/src/svg/icons/google.svg create mode 100644 packages/icons/src/svg/icons/qqchat.svg create mode 100644 packages/icons/src/svg/icons/wechat.svg diff --git a/apps/web-antd/src/layouts/basic.vue b/apps/web-antd/src/layouts/basic.vue index 1481dc5a8..5608e39b0 100644 --- a/apps/web-antd/src/layouts/basic.vue +++ b/apps/web-antd/src/layouts/basic.vue @@ -6,7 +6,7 @@ import { computed, ref, watch } from 'vue'; import { AuthenticationLoginExpiredModal } from '@vben/common-ui'; import { VBEN_DOC_URL, VBEN_GITHUB_URL } from '@vben/constants'; import { useWatermark } from '@vben/hooks'; -import { BookOpenText, CircleHelp, MdiGithub } from '@vben/icons'; +import { BookOpenText, CircleHelp, SvgGithubIcon } from '@vben/icons'; import { BasicLayout, LockScreen, @@ -76,7 +76,7 @@ const menus = computed(() => [ target: '_blank', }); }, - icon: MdiGithub, + icon: SvgGithubIcon, text: 'GitHub', }, { diff --git a/apps/web-ele/src/layouts/basic.vue b/apps/web-ele/src/layouts/basic.vue index 1481dc5a8..5608e39b0 100644 --- a/apps/web-ele/src/layouts/basic.vue +++ b/apps/web-ele/src/layouts/basic.vue @@ -6,7 +6,7 @@ import { computed, ref, watch } from 'vue'; import { AuthenticationLoginExpiredModal } from '@vben/common-ui'; import { VBEN_DOC_URL, VBEN_GITHUB_URL } from '@vben/constants'; import { useWatermark } from '@vben/hooks'; -import { BookOpenText, CircleHelp, MdiGithub } from '@vben/icons'; +import { BookOpenText, CircleHelp, SvgGithubIcon } from '@vben/icons'; import { BasicLayout, LockScreen, @@ -76,7 +76,7 @@ const menus = computed(() => [ target: '_blank', }); }, - icon: MdiGithub, + icon: SvgGithubIcon, text: 'GitHub', }, { diff --git a/apps/web-naive/src/layouts/basic.vue b/apps/web-naive/src/layouts/basic.vue index 691893841..c46d14f8c 100644 --- a/apps/web-naive/src/layouts/basic.vue +++ b/apps/web-naive/src/layouts/basic.vue @@ -6,7 +6,7 @@ import { computed, ref, watch } from 'vue'; import { AuthenticationLoginExpiredModal } from '@vben/common-ui'; import { VBEN_DOC_URL, VBEN_GITHUB_URL } from '@vben/constants'; import { useWatermark } from '@vben/hooks'; -import { BookOpenText, CircleHelp, MdiGithub } from '@vben/icons'; +import { BookOpenText, CircleHelp, SvgGithubIcon } from '@vben/icons'; import { BasicLayout, LockScreen, @@ -76,7 +76,7 @@ const menus = computed(() => [ target: '_blank', }); }, - icon: MdiGithub, + icon: SvgGithubIcon, text: 'GitHub', }, { diff --git a/packages/effects/common-ui/src/ui/authentication/dingding-login.vue b/packages/effects/common-ui/src/ui/authentication/dingding-login.vue index 4c63301ee..80b123c1b 100644 --- a/packages/effects/common-ui/src/ui/authentication/dingding-login.vue +++ b/packages/effects/common-ui/src/ui/authentication/dingding-login.vue @@ -1,7 +1,7 @@ diff --git a/packages/effects/layouts/src/widgets/preferences/preferences-button.vue b/packages/effects/layouts/src/widgets/preferences/preferences-button.vue index 125ab8163..8598bb270 100644 --- a/packages/effects/layouts/src/widgets/preferences/preferences-button.vue +++ b/packages/effects/layouts/src/widgets/preferences/preferences-button.vue @@ -13,7 +13,7 @@ function clearPreferencesAndLogout() {