@ithinkdt/naive
Version:
iThinkDT Naive UI
55 lines (47 loc) • 2.09 kB
TypeScript
/* eslint-disable @typescript-eslint/no-explicit-any */
import { HTMLAttributes } from 'vue'
import { TransferProps } from 'ithinkdt-ui'
import { PublicProps, GenericCtx, GenericReturn, GenericExposed } from '@ithinkdt/common'
import { UserInfo } from '@ithinkdt/core'
export interface UserGroupOption {
code: string
name: string
}
export interface DeptOption {
code: string
name: string
children?: DeptOption[]
}
declare interface _UserDeptProps<Multiple extends boolean> {
type?: 'user' | 'dept'
selectType?: 'dropdown' | 'dialog' | 'transfer'
value?: Multiple extends true ? string[] : string
placeholder?: string
menuProps?: HTMLAttributes
multiple?: boolean
defaultExpandAll?: boolean
filterable?: boolean
disabled?: boolean
size?: TransferProps['size']
users?: UserInfo[]
groups?: UserGroupOption[]
depts?: DeptOption[]
getUsersByGroup?: (code: string) => Promise<UserInfo[]>
getUsersByDept?: (code: string) => Promise<UserInfo[]>
'onUpdate:value'?: (value: Multiple extends true ? string[] : string) => any
onUpdateValue?: (value: Multiple extends true ? string[] : string) => any
}
declare interface _UserDeptEmits<Multiple extends boolean> {
(e: 'update:value', value: Multiple extends true ? string[] : string): void
(e: 'update-value', value: Multiple extends true ? string[] : string): void
}
export declare const DtUserDept: <Multiple extends boolean>(
props: _UserDeptProps<Multiple> & PublicProps,
ctx?: Pick<GenericCtx<_UserDeptProps<Multiple>, _UserDeptEmits<Multiple>>, 'attrs' | 'emit' | 'slots'>,
expose?: (exposed?: GenericExposed) => void,
setup?: GenericCtx<_UserDeptProps<Multiple>, _UserDeptEmits<Multiple>>,
) => GenericReturn<_UserDeptProps<Multiple>, _UserDeptEmits<Multiple>>
export declare interface UserDeptProps<Multiple extends boolean = false> extends _UserDeptProps<Multiple> {
'onUpdate:value'?(value: Multiple extends true ? string[] : string): void
onUpdateValue?(value: Multiple extends true ? string[] : string): void
}