mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
* refactor(style): Update Eslint to V9 and Prettier to V3 * fix: vscode color * fix: vscode color * chore: remove Useless dependence and old config file * chore: format * Merge branch 'dev' into eslintV9 * fix: fix * fix: ssr test * fix: ssr test * fix: use defineConfig * fix: prettier format and ignore docs dist * fix: index.mjs => index.js * fix: Vscode color * fix: prettier ignore global.d.ts * fix: format --------- Co-authored-by: 2586740555 <15972343+CYJ090915@user.noreply.gitee.com>
237 lines
5.2 KiB
TypeScript
237 lines
5.2 KiB
TypeScript
import {
|
|
buildProps,
|
|
definePropType,
|
|
iconPropType,
|
|
isClient,
|
|
mutable,
|
|
} from '@element-plus/utils'
|
|
|
|
import type {
|
|
AppContext,
|
|
ExtractPropTypes,
|
|
VNode,
|
|
__ExtractPublicPropTypes,
|
|
} from 'vue'
|
|
import type { Mutable } from '@element-plus/utils'
|
|
import type MessageConstructor from './message.vue'
|
|
|
|
export const messageTypes = [
|
|
'primary',
|
|
'success',
|
|
'info',
|
|
'warning',
|
|
'error',
|
|
] as const
|
|
|
|
export const messagePlacement = [
|
|
'top',
|
|
'top-left',
|
|
'top-right',
|
|
'bottom',
|
|
'bottom-left',
|
|
'bottom-right',
|
|
] as const
|
|
|
|
export const MESSAGE_DEFAULT_PLACEMENT = 'top'
|
|
|
|
export type MessageType = (typeof messageTypes)[number]
|
|
export type MessagePlacement = (typeof messagePlacement)[number]
|
|
/** @deprecated please use `MessageType` instead */
|
|
export type messageType = MessageType // will be removed in 3.0.0.
|
|
|
|
export interface MessageConfigContext {
|
|
max?: number
|
|
grouping?: boolean
|
|
duration?: number
|
|
offset?: number
|
|
showClose?: boolean
|
|
plain?: boolean
|
|
placement?: string
|
|
}
|
|
|
|
export const messageDefaults = mutable({
|
|
customClass: '',
|
|
dangerouslyUseHTMLString: false,
|
|
duration: 3000,
|
|
icon: undefined,
|
|
id: '',
|
|
message: '',
|
|
onClose: undefined,
|
|
showClose: false,
|
|
type: 'info',
|
|
plain: false,
|
|
offset: 16,
|
|
placement: undefined,
|
|
zIndex: 0,
|
|
grouping: false,
|
|
repeatNum: 1,
|
|
appendTo: isClient ? document.body : (undefined as never),
|
|
} as const)
|
|
|
|
export const messageProps = buildProps({
|
|
/**
|
|
* @description custom class name for Message
|
|
*/
|
|
customClass: {
|
|
type: String,
|
|
default: messageDefaults.customClass,
|
|
},
|
|
/**
|
|
* @description whether `message` is treated as HTML string
|
|
*/
|
|
dangerouslyUseHTMLString: {
|
|
type: Boolean,
|
|
default: messageDefaults.dangerouslyUseHTMLString,
|
|
},
|
|
/**
|
|
* @description display duration, millisecond. If set to 0, it will not turn off automatically
|
|
*/
|
|
duration: {
|
|
type: Number,
|
|
default: messageDefaults.duration,
|
|
},
|
|
/**
|
|
* @description custom icon component, overrides `type`
|
|
*/
|
|
icon: {
|
|
type: iconPropType,
|
|
default: messageDefaults.icon,
|
|
},
|
|
/**
|
|
* @description message dom id
|
|
*/
|
|
id: {
|
|
type: String,
|
|
default: messageDefaults.id,
|
|
},
|
|
/**
|
|
* @description message text
|
|
*/
|
|
message: {
|
|
type: definePropType<string | VNode | (() => VNode)>([
|
|
String,
|
|
Object,
|
|
Function,
|
|
]),
|
|
default: messageDefaults.message,
|
|
},
|
|
/**
|
|
* @description callback function when closed with the message instance as the parameter
|
|
*/
|
|
onClose: {
|
|
type: definePropType<() => void>(Function),
|
|
default: messageDefaults.onClose,
|
|
},
|
|
/**
|
|
* @description whether to show a close button
|
|
*/
|
|
showClose: {
|
|
type: Boolean,
|
|
default: messageDefaults.showClose,
|
|
},
|
|
/**
|
|
* @description message type
|
|
*/
|
|
type: {
|
|
type: String,
|
|
values: messageTypes,
|
|
default: messageDefaults.type,
|
|
},
|
|
/**
|
|
* @description whether message is plain
|
|
*/
|
|
plain: {
|
|
type: Boolean,
|
|
default: messageDefaults.plain,
|
|
},
|
|
/**
|
|
* @description set the distance to the top of viewport
|
|
*/
|
|
offset: {
|
|
type: Number,
|
|
default: messageDefaults.offset,
|
|
},
|
|
/**
|
|
* @description message placement position
|
|
*/
|
|
placement: {
|
|
type: String,
|
|
values: messagePlacement,
|
|
default: messageDefaults.placement,
|
|
},
|
|
/**
|
|
* @description input box size
|
|
*/
|
|
zIndex: {
|
|
type: Number,
|
|
default: messageDefaults.zIndex,
|
|
},
|
|
/**
|
|
* @description merge messages with the same content, type of VNode message is not supported
|
|
*/
|
|
grouping: {
|
|
type: Boolean,
|
|
default: messageDefaults.grouping,
|
|
},
|
|
/**
|
|
* @description The number of repetitions, similar to badge, is used as the initial number when used with `grouping`
|
|
*/
|
|
repeatNum: {
|
|
type: Number,
|
|
default: messageDefaults.repeatNum,
|
|
},
|
|
} as const)
|
|
export type MessageProps = ExtractPropTypes<typeof messageProps>
|
|
export type MessagePropsPublic = __ExtractPublicPropTypes<typeof messageProps>
|
|
|
|
export const messageEmits = {
|
|
destroy: () => true,
|
|
}
|
|
export type MessageEmits = typeof messageEmits
|
|
|
|
export type MessageInstance = InstanceType<typeof MessageConstructor> & unknown
|
|
|
|
export type MessageOptions = Partial<
|
|
Mutable<
|
|
Omit<MessageProps, 'id'> & {
|
|
appendTo?: HTMLElement | string
|
|
}
|
|
>
|
|
>
|
|
export type MessageParams = MessageOptions | MessageOptions['message']
|
|
export type MessageParamsNormalized = Omit<MessageProps, 'id'> & {
|
|
/**
|
|
* @description set the root element for the message, default to `document.body`
|
|
*/
|
|
appendTo: HTMLElement
|
|
}
|
|
export type MessageOptionsWithType = Omit<MessageOptions, 'type'>
|
|
export type MessageParamsWithType =
|
|
| MessageOptionsWithType
|
|
| MessageOptions['message']
|
|
|
|
export interface MessageHandler {
|
|
/**
|
|
* @description close the Message
|
|
*/
|
|
close: () => void
|
|
}
|
|
|
|
export type MessageFn = {
|
|
(options?: MessageParams, appContext?: null | AppContext): MessageHandler
|
|
closeAll(type?: MessageType): void
|
|
closeAllByPlacement(position: MessagePlacement): void
|
|
}
|
|
export type MessageTypedFn = (
|
|
options?: MessageParamsWithType,
|
|
appContext?: null | AppContext
|
|
) => MessageHandler
|
|
|
|
export type Message = MessageFn & {
|
|
primary: MessageTypedFn
|
|
success: MessageTypedFn
|
|
warning: MessageTypedFn
|
|
info: MessageTypedFn
|
|
error: MessageTypedFn
|
|
}
|