From 54efcfbdfd3d3e9cbb5ac38a9c7cf9ef98e0639c Mon Sep 17 00:00:00 2001 From: zz <2418184580@qq.com> Date: Tue, 31 May 2022 07:55:03 +0800 Subject: [PATCH] refactor(components): [scrollbar] switch to script-setup syntax (#7986) --- packages/components/scrollbar/src/bar.ts | 13 +- packages/components/scrollbar/src/bar.vue | 42 ++- .../components/scrollbar/src/scrollbar.ts | 14 +- .../components/scrollbar/src/scrollbar.vue | 272 +++++++++--------- packages/components/scrollbar/src/thumb.ts | 3 + packages/components/scrollbar/src/thumb.vue | 267 ++++++++--------- packages/components/scrollbar/src/util.ts | 11 +- packages/tokens/scrollbar.ts | 4 +- 8 files changed, 290 insertions(+), 336 deletions(-) diff --git a/packages/components/scrollbar/src/bar.ts b/packages/components/scrollbar/src/bar.ts index 631f82bf59..f0d1d4a1b8 100644 --- a/packages/components/scrollbar/src/bar.ts +++ b/packages/components/scrollbar/src/bar.ts @@ -1,19 +1,14 @@ import { buildProps } from '@element-plus/utils' import type { ExtractPropTypes } from 'vue' +import type Bar from './bar.vue' export const barProps = buildProps({ always: { type: Boolean, default: true, }, - width: { - type: String, - default: '', - }, - height: { - type: String, - default: '', - }, + width: String, + height: String, ratioX: { type: Number, default: 1, @@ -24,3 +19,5 @@ export const barProps = buildProps({ }, } as const) export type BarProps = ExtractPropTypes + +export type BarInstance = InstanceType diff --git a/packages/components/scrollbar/src/bar.vue b/packages/components/scrollbar/src/bar.vue index e0252fdc44..b673996b01 100644 --- a/packages/components/scrollbar/src/bar.vue +++ b/packages/components/scrollbar/src/bar.vue @@ -8,36 +8,28 @@ :always="always" /> - diff --git a/packages/components/scrollbar/src/scrollbar.ts b/packages/components/scrollbar/src/scrollbar.ts index eaeb0a3d86..c244179678 100644 --- a/packages/components/scrollbar/src/scrollbar.ts +++ b/packages/components/scrollbar/src/scrollbar.ts @@ -1,5 +1,6 @@ import { buildProps, definePropType, isNumber } from '@element-plus/utils' import type { ExtractPropTypes, StyleValue } from 'vue' +import type Scrollbar from './scrollbar.vue' export const scrollbarProps = buildProps({ height: { @@ -10,10 +11,7 @@ export const scrollbarProps = buildProps({ type: [String, Number], default: '', }, - native: { - type: Boolean, - default: false, - }, + native: Boolean, wrapStyle: { type: definePropType([String, Object, Array]), default: '', @@ -35,16 +33,12 @@ export const scrollbarProps = buildProps({ type: String, default: 'div', }, - always: { - type: Boolean, - default: false, - }, + always: Boolean, minSize: { type: Number, default: 20, }, } as const) - export type ScrollbarProps = ExtractPropTypes export const scrollbarEmits = { @@ -57,3 +51,5 @@ export const scrollbarEmits = { }) => isNumber(scrollTop) && isNumber(scrollLeft), } export type ScrollbarEmits = typeof scrollbarEmits + +export type ScrollbarInstance = InstanceType diff --git a/packages/components/scrollbar/src/scrollbar.vue b/packages/components/scrollbar/src/scrollbar.vue index 60ef962fbb..3e78fa6401 100644 --- a/packages/components/scrollbar/src/scrollbar.vue +++ b/packages/components/scrollbar/src/scrollbar.vue @@ -31,10 +31,9 @@ - diff --git a/packages/components/scrollbar/src/thumb.ts b/packages/components/scrollbar/src/thumb.ts index 6a909518c5..d43bed904e 100644 --- a/packages/components/scrollbar/src/thumb.ts +++ b/packages/components/scrollbar/src/thumb.ts @@ -1,5 +1,6 @@ import { buildProps } from '@element-plus/utils' import type { ExtractPropTypes } from 'vue' +import type Thumb from './thumb.vue' export const thumbProps = buildProps({ vertical: Boolean, @@ -12,3 +13,5 @@ export const thumbProps = buildProps({ always: Boolean, } as const) export type ThumbProps = ExtractPropTypes + +export type ThumbInstance = InstanceType diff --git a/packages/components/scrollbar/src/thumb.vue b/packages/components/scrollbar/src/thumb.vue index 7c06fd4a98..2ff4d31398 100644 --- a/packages/components/scrollbar/src/thumb.vue +++ b/packages/components/scrollbar/src/thumb.vue @@ -16,183 +16,154 @@ - diff --git a/packages/components/scrollbar/src/util.ts b/packages/components/scrollbar/src/util.ts index c38efebbd5..363c2a341a 100644 --- a/packages/components/scrollbar/src/util.ts +++ b/packages/components/scrollbar/src/util.ts @@ -1,4 +1,7 @@ import type { CSSProperties } from 'vue' +import type { ThumbProps } from './thumb' + +export const GAP = 4 // top 2 + bottom 2 of bar instance export const BAR_MAP = { vertical: { @@ -23,7 +26,13 @@ export const BAR_MAP = { }, } as const -export const renderThumbStyle = ({ move, size, bar }): CSSProperties => ({ +export const renderThumbStyle = ({ + move, + size, + bar, +}: Pick & { + bar: typeof BAR_MAP[keyof typeof BAR_MAP] +}): CSSProperties => ({ [bar.size]: size, transform: `translate${bar.axis}(${move}%)`, }) diff --git a/packages/tokens/scrollbar.ts b/packages/tokens/scrollbar.ts index cc08f6d07b..646cbbdbc4 100644 --- a/packages/tokens/scrollbar.ts +++ b/packages/tokens/scrollbar.ts @@ -1,10 +1,10 @@ import type { InjectionKey } from 'vue' -export interface scrollbarContext { +export interface ScrollbarContext { scrollbarElement: HTMLDivElement wrapElement: HTMLDivElement } -export const scrollbarContextKey: InjectionKey = Symbol( +export const scrollbarContextKey: InjectionKey = Symbol( 'scrollbarContextKey' )