From 9df8317ece7517a72da19a0ea1c90ffb7a552a1b Mon Sep 17 00:00:00 2001 From: tangjinzhou <415800467@qq.com> Date: Mon, 20 Feb 2023 00:05:54 +0800 Subject: [PATCH] refactor: segmented #6286 --- components/_util/type.ts | 14 +- components/segmented/demo/basic.vue | 6 +- components/segmented/demo/block.vue | 6 +- components/segmented/demo/controlled.vue | 35 --- components/segmented/demo/custom.vue | 133 ++++++----- components/segmented/demo/disabled.vue | 10 +- components/segmented/demo/dynamic.vue | 8 +- components/segmented/demo/icon.vue | 49 ---- components/segmented/demo/index.vue | 6 +- components/segmented/demo/size.vue | 14 +- components/segmented/index.en-US.md | 31 ++- components/segmented/index.ts | 8 +- components/segmented/index.zh-CN.md | 29 ++- components/segmented/src/MotionThumb.tsx | 161 +++++++++++++ components/segmented/src/segmented.tsx | 273 ++++++++++++----------- components/segmented/style/index.ts | 85 +++---- typings/global.d.ts | 2 + 17 files changed, 527 insertions(+), 343 deletions(-) delete mode 100644 components/segmented/demo/controlled.vue delete mode 100644 components/segmented/demo/icon.vue create mode 100644 components/segmented/src/MotionThumb.tsx diff --git a/components/_util/type.ts b/components/_util/type.ts index 5bed7f248..a48ad6f66 100644 --- a/components/_util/type.ts +++ b/components/_util/type.ts @@ -59,8 +59,18 @@ export function functionType {}>(defaultVal?: T) { return { type: Function as PropType, default: defaultVal as T }; } -export function anyType(defaultVal?: T) { - return { validator: () => true, default: defaultVal as T } as unknown as { type: PropType }; +export function anyType(defaultVal?: T, required?: boolean) { + const type = { validator: () => true, default: defaultVal as T } as unknown; + return required + ? (type as { + type: PropType; + default: T; + required: true; + }) + : (type as { + default: T; + type: PropType; + }); } export function vNodeType() { return { validator: () => true } as unknown as { type: PropType }; diff --git a/components/segmented/demo/basic.vue b/components/segmented/demo/basic.vue index 229460011..a6c24ae96 100644 --- a/components/segmented/demo/basic.vue +++ b/components/segmented/demo/basic.vue @@ -15,17 +15,19 @@ The most basic usage. diff --git a/components/segmented/demo/custom.vue b/components/segmented/demo/custom.vue index 09165d99d..02787cf76 100644 --- a/components/segmented/demo/custom.vue +++ b/components/segmented/demo/custom.vue @@ -14,80 +14,103 @@ title: Custom each Segmented Item.