wot-design-uni
Version:
一个基于Vue3+TS开发的uni-app组件库,提供70+高质量组件,支持暗黑模式、国际化和自定义主题。
59 lines (51 loc) • 1.57 kB
text/typescript
import { type ComponentPublicInstance, type ExtractPropTypes, type InjectionKey, type PropType } from 'vue'
import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
export type CollapseToggleAllOptions =
| boolean
| {
expanded?: boolean
skipDisabled?: boolean
}
export type CollapseProvide = {
props: Partial<CollapseProps>
toggle: (name: string, expanded: boolean) => void
}
export const COLLAPSE_KEY: InjectionKey<CollapseProvide> = Symbol('wd-collapse')
export const collapseProps = {
...baseProps,
/**
* 查看更多模式下的插槽外部自定义样式
*/
customMoreSlotClass: makeStringProp(''),
/**
* 绑定值
*/
modelValue: {
type: [String, Array, Boolean] as PropType<string | Array<string> | boolean>
},
/**
* 手风琴模式
*/
accordion: makeBooleanProp(false),
/**
* 查看更多的折叠面板
*/
viewmore: makeBooleanProp(false),
/**
* 查看更多的自定义插槽使用标志
*/
useMoreSlot: makeBooleanProp(false),
/**
* 查看更多的折叠面板,收起时的显示行数
*/
lineNum: makeNumberProp(2)
}
export type CollapseProps = ExtractPropTypes<typeof collapseProps>
export type CollapseExpose = {
/**
* 切换所有面板展开状态,传 true 为全部展开,false 为全部收起,不传参为全部切换
* @param options 面板状态
*/
toggleAll: (options?: CollapseToggleAllOptions) => void
}
export type CollapseInstance = ComponentPublicInstance<CollapseProps, CollapseExpose>