import type { ExtractPropTypes } from 'vue'
import { makeStringProp, makeArrayProp, type Looser, makeBooleanProp } from '../utils'

export type TreeSelectOption = Looser<{
  label: string
  value: number | string
  children?: TreeSelectOption[]
}>

export const horTreeSelectPopupProps = {
  title: makeStringProp('请选择'),
  confirmText: makeStringProp('保存'),
  modelValue: makeArrayProp<TreeSelectOption>(),
  options: makeArrayProp<TreeSelectOption | TreeSelectOption[]>(),
  deepSelect: makeBooleanProp(false),
  autoSelect: makeBooleanProp(false),
}

export type HorTreeSelectPopupProps = ExtractPropTypes<typeof horTreeSelectPopupProps>
