Files
element-plus/packages/components/collapse/src/collapse.ts
Jeremy 4ff8f28ebc refactor(components): [collapse] (#10289)
* refactor(components): [collapse]

* Extract logic code out of component file.
* Extract DOM code out of component file.
* Reorganize code for better readabilities.

* chore: apply suggestions

Co-authored-by: JeremyWuuuuu <15975785+JeremyWuuuuu@users.noreply.github.com>
2022-11-01 00:27:47 +08:00

32 lines
948 B
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 { 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