mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
* refactor(style): adjust component size to large/default/small * refactor(components): avatar size & use flex instead of block * refactor(components): adjust check button size * refactor(components): adjust tag size * refactor(components): adjust size doc * fix(components): datetime-picker demo style width * refactor(components): color-picker size & block to flex * refactor(components): adjust slider input size * refactor(components): adjust radio input size for demo * refactor(components): adjust select size & docs * refactor(components): adjust form radio size & docs * refactor(components): add windicss for docs * refactor(components): adjust skeleton avatar size to css var * refactor(components): simplify typography size demo * refactor(components): adjust dropdown size & demo * refactor(components): adjust descriptions size * fix(components): datetime-picker showcase class pollute global button * chore(ci): upgrade docs dependencies to fix ci * fix(ci): add highlight because vitepress not export it * fix(ci): disable line for no-console * fix(ci): remove mini to fix test * fix(style): code font size * fix(style): button span flex style * fix(style): button padding horizontal default 15px * refactor(components): adjust tag padding size & demo * refactor(components): adjust form line-height for input * refactor(components): adjust dropdown menu size & button padding * fix(style): picker separator block to flex center * fix: dropdown button span items-center * style: adjust input-with-icon & size demo & fix input vitepress load * chore: upgrade dependencies * chore: upgrade dependencies * ci: fix website build * ci: regenerate pnpm-lock.yaml * ci: use dev pnpm-lock * ci: update pnpm-lock.yaml
63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
import { useSizeProp } from '@element-plus/hooks'
|
|
import { buildProps, definePropType } from '@element-plus/utils/props'
|
|
import type { ExtractPropTypes, Component } from 'vue'
|
|
import type button from './button.vue'
|
|
|
|
export const buttonType = [
|
|
'default',
|
|
'primary',
|
|
'success',
|
|
'warning',
|
|
'info',
|
|
'danger',
|
|
'text',
|
|
'',
|
|
] as const
|
|
export const buttonSize = ['', 'large', 'default', 'small'] as const
|
|
export const buttonNativeType = ['button', 'submit', 'reset'] as const
|
|
|
|
export const buttonProps = buildProps({
|
|
size: useSizeProp,
|
|
disabled: Boolean,
|
|
type: {
|
|
type: String,
|
|
values: buttonType,
|
|
default: '',
|
|
},
|
|
icon: {
|
|
type: definePropType<string | Component>([String, Object]),
|
|
default: '',
|
|
},
|
|
nativeType: {
|
|
type: String,
|
|
values: buttonNativeType,
|
|
default: 'button',
|
|
},
|
|
loading: Boolean,
|
|
plain: Boolean,
|
|
autofocus: Boolean,
|
|
round: Boolean,
|
|
circle: Boolean,
|
|
color: String,
|
|
autoInsertSpace: {
|
|
type: Boolean,
|
|
default: undefined,
|
|
},
|
|
} as const)
|
|
|
|
export interface ButtonConfigContext {
|
|
autoInsertSpace?: boolean
|
|
}
|
|
|
|
export const buttonEmits = {
|
|
click: (evt: MouseEvent) => evt instanceof MouseEvent,
|
|
}
|
|
|
|
export type ButtonProps = ExtractPropTypes<typeof buttonProps>
|
|
export type ButtonEmits = typeof buttonEmits
|
|
|
|
export type ButtonType = ButtonProps['type']
|
|
export type ButtonNativeType = ButtonProps['nativeType']
|
|
|
|
export type ButtonInstance = InstanceType<typeof button>
|