Files
element-plus/packages/components/message/src/message.ts
表弟 b81bf53f0a feat(components): [el-message] merge the same content messages(#3836) (#3988)
* style(components): [el-message-box] string does not wrap(#3856)

* feat(components): [el-message] merge the same content messages(#3836)

* feat(components): [el-message] merge the same content messages(#3836)

* feat(components): [el-message] merge the same content messages(#3836)

* refactor(components): el-swtich custom texts and icons

* fix: test

* fix: font size

* fix: example margin

* feat(components): el-switch add inline-prompt support

* revert: paly

* docs: update icons

* feat: add inner text

* fix: switch test

* refactor: icon inline

* feat(components): [el-message] merge the same content messages(#3836)

* feat(components): [el-message] merge the same content messages(#3836)

Co-authored-by: Aex <adaex@qq.com>
2021-11-05 18:55:40 +08:00

102 lines
2.1 KiB
TypeScript

import { buildProps, definePropType } from '@element-plus/utils/props'
import type { VNode, ExtractPropTypes, Component } from 'vue'
export const messageTypes = ['success', 'info', 'warning', 'error'] as const
export const messageProps = buildProps({
customClass: {
type: String,
default: '',
},
center: {
type: Boolean,
default: false,
},
dangerouslyUseHTMLString: {
type: Boolean,
default: false,
},
duration: {
type: Number,
default: 3000,
},
icon: {
type: definePropType<string | Component>([String, Object]),
default: '',
},
id: {
type: String,
default: '',
},
message: {
type: definePropType<string | VNode>([String, Object]),
default: '',
},
onClose: {
type: definePropType<() => void>(Function),
required: false,
},
showClose: {
type: Boolean,
default: false,
},
type: {
type: String,
values: messageTypes,
default: 'info',
},
offset: {
type: Number,
default: 20,
},
zIndex: {
type: Number,
default: 0,
},
grouping: {
type: Boolean,
default: false,
},
repeatNum: {
type: Number,
default: 1,
},
} as const)
export type MessageProps = ExtractPropTypes<typeof messageProps>
export const messageEmits = {
destroy: () => true,
}
export type MessageEmits = typeof messageEmits
export type MessageOptions = Omit<MessageProps, 'id'> & {
appendTo?: HTMLElement | string
}
export type MessageOptionsTyped = Omit<MessageOptions, 'type'>
export interface MessageHandle {
close: () => void
}
export type MessageParams = Partial<MessageOptions> | string | VNode
export type MessageParamsTyped = Partial<MessageOptionsTyped> | string | VNode
export type MessageFn = ((options?: MessageParams) => MessageHandle) & {
closeAll(): void
}
export type MessageTypedFn = (options?: MessageParamsTyped) => MessageHandle
export interface Message extends MessageFn {
success: MessageTypedFn
warning: MessageTypedFn
info: MessageTypedFn
error: MessageTypedFn
}
type MessageQueueItem = {
vm: VNode
}
export type MessageQueue = MessageQueueItem[]