From 84f49de955848301b7c057bd443c69d83c3d2d1c Mon Sep 17 00:00:00 2001 From: wzc520pyfm <1528857653@qq.com> Date: Sun, 14 Apr 2024 11:35:04 +0800 Subject: [PATCH 01/16] test(hooks): [use-teleport] add no-client test (#16498) --- .../hooks/__tests__/use-teleport.test.tsx | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/hooks/__tests__/use-teleport.test.tsx b/packages/hooks/__tests__/use-teleport.test.tsx index 52a664446e5e9..a5efd31c06213 100644 --- a/packages/hooks/__tests__/use-teleport.test.tsx +++ b/packages/hooks/__tests__/use-teleport.test.tsx @@ -1,6 +1,7 @@ import { defineComponent, h, nextTick, ref } from 'vue' import { mount } from '@vue/test-utils' -import { afterEach, beforeEach, describe, expect, it } from 'vitest' +import { NOOP } from '@vue/shared' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { useTeleport } from '../use-teleport' import type { VueWrapper } from '@vue/test-utils' @@ -13,6 +14,7 @@ const Comp = defineComponent({ () => h('div', AXIOM), appendToBody ) + showTeleport() return () => ( <> @@ -73,3 +75,29 @@ describe('useTeleport', () => { expect(wrapper.text()).toContain(AXIOM) }) }) + +describe('useTeleport when isClient is false', () => { + const mockIsClient = false + + beforeEach(() => { + vi.resetModules() + vi.doMock('@element-plus/utils', () => ({ + isClient: mockIsClient, + })) + }) + afterEach(() => { + vi.doUnmock('@element-plus/utils') + }) + + it('should get default value when isClient is false', async () => { + const { useTeleport: mockUseTeleport } = await import('../use-teleport') + const appendToBody = ref(true) + const { isTeleportVisible, showTeleport, hideTeleport, renderTeleport } = + mockUseTeleport(() => h('div', AXIOM), appendToBody) + + expect(isTeleportVisible.value).toBeFalsy() + expect(showTeleport).toEqual(NOOP) + expect(hideTeleport).toEqual(NOOP) + expect(renderTeleport).toEqual(NOOP) + }) +}) From e4306b2eb1666093ecbaa50556c7b14892354711 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Mon, 15 Apr 2024 09:27:12 +0800 Subject: [PATCH 02/16] fix(hooks): [empty-values] warning on modifying computead value (#16508) * fix(hooks): [empty-values] warning on modifying computead value * chore: update * fix: update * fix: update --- packages/hooks/use-empty-values/index.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/hooks/use-empty-values/index.ts b/packages/hooks/use-empty-values/index.ts index 0818716cd5d72..133258ea0c2a0 100644 --- a/packages/hooks/use-empty-values/index.ts +++ b/packages/hooks/use-empty-values/index.ts @@ -1,4 +1,4 @@ -import { computed } from 'vue' +import { computed, ref } from 'vue' import { useGlobalConfig } from '@element-plus/components/config-provider' import { buildProps, debugWarn, isFunction } from '@element-plus/utils' @@ -27,8 +27,10 @@ export const useEmptyValues = ( props: ExtractPropTypes, defaultValue?: null | undefined ) => { - const config = useGlobalConfig() - config.value = config.value || {} + let config = useGlobalConfig() + if (!config.value) { + config = ref({}) + } const emptyValues = computed( () => props.emptyValues || config.value.emptyValues || DEFAULT_EMPTY_VALUES From ade87f67297bb2a49dec48c4f8ef4d4f77136022 Mon Sep 17 00:00:00 2001 From: sea <45450994+warmthsea@users.noreply.github.com> Date: Mon, 15 Apr 2024 16:29:21 +0800 Subject: [PATCH 03/16] docs(examples): standardize unified code format and fix some type (#16370) * docs: standardize unified example code format and fix some example type * docs: update some example type * Update docs/examples/descriptions/sizes.vue Co-authored-by: kooriookami <38392315+kooriookami@users.noreply.github.com> * docs: update example-page-header * docs: update example-page-header --------- Co-authored-by: kooriookami <38392315+kooriookami@users.noreply.github.com> --- docs/examples/avatar/fit.vue | 9 ++++++- docs/examples/breadcrumb/basic.vue | 6 ++--- docs/examples/button/custom.vue | 6 ++--- docs/examples/button/link.vue | 6 +++-- docs/examples/button/text.vue | 9 ++++--- docs/examples/carousel/basic.vue | 6 ++--- docs/examples/cascader/multiple-selection.vue | 2 +- docs/examples/checkbox/button-style.vue | 15 ++++++------ docs/examples/checkbox/intermediate.vue | 13 ++++------ docs/examples/checkbox/limitation.vue | 10 +++----- docs/examples/config-provider/button.vue | 6 ++--- docs/examples/container/example.vue | 6 ++--- .../examples/datetime-picker/default-time.vue | 6 ++--- docs/examples/descriptions/basic-usage.vue | 7 +++--- .../descriptions/customized-style.vue | 22 ++++++++--------- docs/examples/descriptions/sizes.vue | 8 ++++--- docs/examples/descriptions/vertical-list.vue | 12 ++++++---- docs/examples/divider/basic-usage.vue | 16 ++++++------- docs/examples/divider/custom-content.vue | 8 +++---- docs/examples/drawer/basic-usage.vue | 15 ++++++------ .../examples/drawer/customization-content.vue | 14 ++++++----- docs/examples/form/custom-validation.vue | 6 ++--- docs/examples/form/form-items.vue | 6 ++--- docs/examples/form/validation.vue | 4 ++-- docs/examples/image/basic-usage.vue | 10 +++++++- docs/examples/layout/column-offset.vue | 24 +++++++++---------- docs/examples/message-box/customization.vue | 1 + .../distinguishable-close-cancel.vue | 1 + docs/examples/page-header/complete.vue | 22 ++++++++--------- docs/examples/popover/basic-usage.vue | 6 ++--- docs/examples/popover/directive-usage.vue | 6 ++--- docs/examples/popover/nested-operation.vue | 6 ++--- docs/examples/popover/virtual-triggering.vue | 7 +++--- .../progress/circular-progress-bar.vue | 1 + docs/examples/progress/custom-color.vue | 1 + .../progress/dashboard-progress-bar.vue | 1 + .../progress/indeterminate-progress.vue | 1 + docs/examples/radio/disabled.vue | 6 ++--- docs/examples/rate/basic-usage.vue | 4 ++-- docs/examples/rate/sizes.vue | 2 +- docs/examples/select-v2/custom-footer.vue | 4 ++-- docs/examples/select-v2/custom-tag.vue | 4 ++-- docs/examples/select/custom-tag.vue | 4 ++-- docs/examples/select/custom-template.vue | 3 ++- docs/examples/slider/placement.vue | 1 + docs/examples/slider/range-selection.vue | 1 + docs/examples/slider/show-marks.vue | 1 + .../examples/slider/slider-with-input-box.vue | 1 + docs/examples/slider/vertical-mode.vue | 1 + docs/examples/space/control-size.vue | 4 +++- docs/examples/space/fill-ratio.vue | 3 ++- docs/examples/switch/custom-action-icon.vue | 1 + docs/examples/switch/custom-action-slot.vue | 1 + docs/examples/switch/custom-icons.vue | 1 + docs/examples/table/custom-column.vue | 9 +++---- docs/examples/table/custom-header.vue | 9 +++---- docs/examples/table/fixed-column.vue | 6 ++--- .../table/fixed-header-with-fluid-header.vue | 6 ++--- docs/examples/table/multi-select.vue | 6 ++--- docs/examples/table/table-layout.vue | 3 ++- docs/examples/tabs/basic.vue | 1 + docs/examples/tabs/card-style.vue | 2 ++ docs/examples/tabs/custom-tab.vue | 1 + .../tabs/customized-add-button-icon.vue | 2 ++ docs/examples/tabs/customized-trigger.vue | 2 ++ docs/examples/tabs/dynamic-tabs.vue | 2 ++ docs/examples/tabs/tab-position.vue | 5 +++- docs/examples/tag/removable.vue | 8 ++++++- docs/examples/tooltip-v2/a11y.vue | 7 +++--- docs/examples/tooltip-v2/arrow.vue | 6 ++--- docs/examples/tooltip-v2/basic-usage.vue | 6 ++--- docs/examples/tooltip-v2/full-transition.vue | 6 ++--- docs/examples/tooltip-v2/transition.vue | 6 ++--- docs/examples/tooltip/advanced-usage.vue | 6 ++--- docs/examples/upload/custom-thumbnail.vue | 1 + docs/examples/upload/manual.vue | 1 + 76 files changed, 256 insertions(+), 192 deletions(-) diff --git a/docs/examples/avatar/fit.vue b/docs/examples/avatar/fit.vue index b1a81a36bc4f1..7ff0cd310db7c 100644 --- a/docs/examples/avatar/fit.vue +++ b/docs/examples/avatar/fit.vue @@ -8,9 +8,16 @@ diff --git a/docs/examples/layout/column-offset.vue b/docs/examples/layout/column-offset.vue index 913ac4c44f9d2..7b9c97851a92c 100644 --- a/docs/examples/layout/column-offset.vue +++ b/docs/examples/layout/column-offset.vue @@ -1,22 +1,22 @@ diff --git a/docs/examples/message-box/customization.vue b/docs/examples/message-box/customization.vue index 5008245b1a033..3f4e78c0403e8 100644 --- a/docs/examples/message-box/customization.vue +++ b/docs/examples/message-box/customization.vue @@ -5,6 +5,7 @@ +