mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
import {
|
|
buildProps,
|
|
definePropType,
|
|
isNumber,
|
|
isString,
|
|
mutable,
|
|
} from '@element-plus/utils'
|
|
import { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'
|
|
import type { ExtractPropTypes } from 'vue'
|
|
import type Collapse from './collapse.vue'
|
|
import type { Arrayable } from '@element-plus/utils'
|
|
|
|
export type CollapseActiveName = string | number
|
|
export type CollapseModelValue = Arrayable<CollapseActiveName>
|
|
|
|
export const emitChangeFn = (value: CollapseModelValue) =>
|
|
typeof isNumber(value) || isString(value) || Array.isArray(value)
|
|
|
|
export const collapseProps = buildProps({
|
|
accordion: Boolean,
|
|
modelValue: {
|
|
type: definePropType<CollapseModelValue>([Array, String, Number]),
|
|
default: () => mutable([] as const),
|
|
},
|
|
} as const)
|
|
export type CollapseProps = ExtractPropTypes<typeof collapseProps>
|
|
|
|
export const collapseEmits = {
|
|
[UPDATE_MODEL_EVENT]: emitChangeFn,
|
|
[CHANGE_EVENT]: emitChangeFn,
|
|
}
|
|
export type CollapseEmits = typeof collapseEmits
|
|
|
|
export type CollapseInstance = InstanceType<typeof Collapse>
|