components.d.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. import { CSSProperties } from 'vue'
  2. import {
  3. InputProps,
  4. AutocompleteProps,
  5. InputNumberProps,
  6. CascaderProps,
  7. CascaderNode,
  8. CascaderValue
  9. } from 'element-plus'
  10. import { ElementPlusSize, ElementPlusInfoType } from './elementPlus.d'
  11. export enum ComponentNameEnum {
  12. RADIO = 'Radio',
  13. RADIO_BUTTON = 'RadioButton',
  14. CHECKBOX = 'Checkbox',
  15. CHECKBOX_BUTTON = 'CheckboxButton',
  16. INPUT = 'Input',
  17. AUTOCOMPLETE = 'Autocomplete',
  18. INPUT_NUMBER = 'InputNumber',
  19. SELECT = 'Select',
  20. CASCADER = 'Cascader',
  21. SWITCH = 'Switch',
  22. SLIDER = 'Slider',
  23. TIME_PICKER = 'TimePicker',
  24. DATE_PICKER = 'DatePicker',
  25. RATE = 'Rate',
  26. COLOR_PICKER = 'ColorPicker',
  27. TRANSFER = 'Transfer',
  28. DIVIDER = 'Divider',
  29. TIME_SELECT = 'TimeSelect',
  30. SELECT_V2 = 'SelectV2',
  31. INPUT_PASSWORD = 'InputPassword',
  32. EDITOR = 'Editor'
  33. }
  34. type CamelCaseComponentName = keyof typeof ComponentNameEnum extends infer K
  35. ? K extends string
  36. ? K extends `${infer A}_${infer B}`
  37. ? `${Capitalize<Lowercase<A>>}${Capitalize<Lowercase<B>>}`
  38. : Capitalize<Lowercase<K>>
  39. : never
  40. : never
  41. export type ComponentName = CamelCaseComponentName
  42. export interface InputComponentProps {
  43. value?: string | number
  44. maxlength?: number | string
  45. minlength?: number | string
  46. showWordLimit?: boolean
  47. placeholder?: string
  48. clearable?: boolean
  49. formatter?: (value: string | number) => string
  50. parser?: (value: string) => string
  51. showPassword?: boolean
  52. disabled?: boolean
  53. size?: ElementPlusSize
  54. prefixIcon?: string | JSX.Element
  55. suffixIcon?: string | JSX.Element
  56. type?: InputProps['type']
  57. rows?: number
  58. autosize?: boolean | { Pows?: numer; maxRows?: number }
  59. autocomplete?: string
  60. name?: string
  61. readonly?: boolean
  62. max?: number | string
  63. min?: number | string
  64. step?: number | string
  65. resize?: InputProps['resize']
  66. autofocus?: boolean
  67. form?: string
  68. label?: string
  69. tabindex?: string | number
  70. validateEvent?: boolean
  71. inputStyle?: string | CSSProperties | CSSProperties[] | string[]
  72. on?: {
  73. blur?: (event: FocusEvent) => void
  74. focus?: (event: FocusEvent) => void
  75. change?: (value: string | number) => void
  76. clear?: () => void
  77. input?: (value: string | number) => void
  78. }
  79. slots?: {
  80. prefix?: (...args: any[]) => JSX.Element | null
  81. suffix?: (...args: any[]) => JSX.Element | null
  82. prepend?: (...args: any[]) => JSX.Element | null
  83. append?: (...args: any[]) => JSX.Element | null
  84. }
  85. style?: CSSProperties
  86. }
  87. export interface AutocompleteComponentProps {
  88. value?: string
  89. placeholder?: string
  90. clearable?: boolean
  91. disabled?: boolean
  92. valueKey?: string
  93. debounce?: number
  94. placement?: AutocompleteProps['placement']
  95. fetchSuggestions?: (queryString: string, callback: (data: string[]) => void) => void
  96. triggerOnFocus?: boolean
  97. selectWhenUnmatched?: boolean
  98. name?: string
  99. label?: string
  100. hideLoading?: boolean
  101. popperClass?: string
  102. popperAppendToBody?: boolean
  103. teleported?: boolean
  104. highlightFirstItem?: boolean
  105. fitInputWidth?: boolean
  106. on?: {
  107. select?: (item: any) => void
  108. change?: (value: string | number) => void
  109. }
  110. slots?: {
  111. default?: (...args: any[]) => JSX.Element | null
  112. prefix?: (...args: any[]) => JSX.Element | null
  113. suffix?: (...args: any[]) => JSX.Element | null
  114. prepend?: (...args: any[]) => JSX.Element | null
  115. append?: (...args: any[]) => JSX.Element | null
  116. }
  117. style?: CSSProperties
  118. }
  119. export interface InputNumberComponentProps {
  120. value?: number
  121. min?: number
  122. max?: number
  123. step?: number
  124. stepStrictly?: boolean
  125. precision?: number
  126. size?: ElementPlusSize
  127. readonly?: boolean
  128. disabled?: boolean
  129. controls?: boolean
  130. controlsPosition?: InputNumberProps['controlsPosition']
  131. name?: string
  132. label?: string
  133. placeholder?: string
  134. id?: string
  135. valueOnClear?: number | null | 'min' | 'max'
  136. validateEvent?: boolean
  137. on?: {
  138. change?: (currentValue: number | undefined, oldValue: number | undefined) => void
  139. blur?: (event: FocusEvent) => void
  140. focus?: (event: FocusEvent) => void
  141. }
  142. style?: CSSProperties
  143. }
  144. interface SelectOption {
  145. label?: string
  146. disabled?: boolean
  147. value?: any
  148. key?: string | number
  149. options?: SelectOption[]
  150. [key: string]: any
  151. }
  152. export interface SelectComponentProps {
  153. value?: string | number | boolean | Object
  154. multiple?: boolean
  155. disabled?: boolean
  156. valueKey?: string
  157. size?: ElementPlusSize
  158. clearable?: boolean
  159. collapseTags?: boolean
  160. collapseTagsTooltip?: number
  161. multipleLimit?: number
  162. name?: string
  163. effect?: string
  164. autocomplete?: string
  165. placeholder?: string
  166. filterable?: boolean
  167. allowCreate?: boolean
  168. filterMethod?: (query: string, item: any) => boolean
  169. remote?: boolean
  170. remoteMethod?: (query: string) => void
  171. remoteShowSuffix?: boolean
  172. loading?: boolean
  173. loadingText?: string
  174. noMatchText?: string
  175. noDataText?: string
  176. popperClass?: string
  177. reserveKeyword?: boolean
  178. defaultFirstOption?: boolean
  179. popperAppendToBody?: boolean
  180. teleported?: boolean
  181. persistent?: boolean
  182. automaticDropdown?: boolean
  183. clearIcon?: string | JSX.Element | null
  184. fitInputWidth?: boolean
  185. suffixIcon?: string | JSX.Element | null
  186. tagType?: 'success' | 'info' | 'warning' | 'danger'
  187. validateEvent?: boolean
  188. placement?:
  189. | 'top'
  190. | 'top-start'
  191. | 'top-end'
  192. | 'bottom'
  193. | 'bottom-start'
  194. | 'bottom-end'
  195. | 'left'
  196. | 'left-start'
  197. | 'left-end'
  198. | 'right'
  199. | 'right-start'
  200. | 'right-end'
  201. maxCollapseTags?: number
  202. /**
  203. * label别名
  204. */
  205. labelAlias?: string
  206. /**
  207. * value别名
  208. */
  209. valueAlias?: string
  210. /**
  211. * key别名
  212. */
  213. keyAlias?: string
  214. on?: {
  215. change?: (value: string | number | boolean | Object) => void
  216. visibleChange?: (visible: boolean) => void
  217. removeTag?: (tag: any) => void
  218. clear?: () => void
  219. blur?: (event: FocusEvent) => void
  220. focus?: (event: FocusEvent) => void
  221. }
  222. slots?: {
  223. default?: (options: SelectOption[]) => JSX.Element[] | null
  224. optionGroupDefault?: (item: SelectOption) => JSX.Element
  225. optionDefault?: (option: SelectOption) => JSX.Element | null
  226. prefix?: (...args: any[]) => JSX.Element | null
  227. empty?: (...args: any[]) => JSX.Element | null
  228. }
  229. options?: SelectOption[]
  230. style?: CSSProperties
  231. }
  232. export interface SelectV2ComponentProps {
  233. value?: string | number | boolean | Object
  234. multiple?: boolean
  235. disabled?: boolean
  236. valueKey?: string
  237. size?: ElementPlusSize
  238. clearable?: boolean
  239. clearIcon?: string | JSX.Element | null
  240. collapseTags?: boolean
  241. multipleLimit?: number
  242. name?: string
  243. effect?: string
  244. autocomplete?: string
  245. placeholder?: string
  246. filterable?: boolean
  247. allowCreate?: boolean
  248. reserveKeyword?: boolean
  249. noDataText?: string
  250. popperClass?: string
  251. teleported?: boolean
  252. persistent?: boolean
  253. popperOptions?: any
  254. automaticDropdown?: boolean
  255. height?: number
  256. scrollbarAlwaysOn?: boolean
  257. remote?: boolean
  258. remoteMethod?: (query: string) => void
  259. validateEvent?: boolean
  260. placement?: AutocompleteProps['placement']
  261. collapseTagsTooltip?: boolean
  262. on?: {
  263. change?: (value: string | number | boolean | Object) => void
  264. visibleChange?: (visible: boolean) => void
  265. removeTag?: (tag: any) => void
  266. clear?: () => void
  267. blur?: (event: FocusEvent) => void
  268. focus?: (event: FocusEvent) => void
  269. }
  270. options?: SelectOption[]
  271. slots?: {
  272. default?: (option: SelectOption) => JSX.Element | null
  273. }
  274. style?: CSSProperties
  275. }
  276. export interface CascaderComponentProps {
  277. value?: string | number | string[] | number[] | any
  278. options?: Record<string, unknown>[]
  279. props?: CascaderProps
  280. size?: ElementPlusSize
  281. placeholder?: string
  282. disabled?: boolean
  283. clearable?: boolean
  284. showAllLevels?: boolean
  285. collapseTags?: boolean
  286. collapseTagsTooltip?: boolean
  287. separator?: string
  288. filterable?: boolean
  289. filterMethod?: (node: CascaderNode, keyword: string) => boolean
  290. debounce?: number
  291. beforeFilter?: (value: string) => boolean
  292. popperClass?: string
  293. teleported?: boolean
  294. tagType?: ElementPlusInfoType
  295. validateEvent?: boolean
  296. on?: {
  297. change?: (value: CascaderValue) => void
  298. expandChange?: (value: CascaderValue) => void
  299. blur?: (event: FocusEvent) => void
  300. focus?: (event: FocusEvent) => void
  301. visibleChange?: (value: boolean) => void
  302. removeTag?: (value: CascaderNode['valueByOption']) => void
  303. }
  304. slots?: {
  305. default?: (...args: any[]) => JSX.Element | null
  306. empty?: (...args: any[]) => JSX.Element | null
  307. }
  308. style?: CSSProperties
  309. }
  310. export interface SwitchComponentProps {
  311. value?: boolean | string | number
  312. disabled?: boolean
  313. loading?: boolean
  314. size?: ElementPlusSize
  315. width?: number | string
  316. inlinePrompt?: boolean
  317. activeIcon?: string | JSX.Element | null
  318. inactiveIcon?: string | JSX.Element | null
  319. activeText?: string
  320. inactiveText?: string
  321. activeValue?: boolean | string | number
  322. inactiveValue?: boolean | string | number
  323. name?: string
  324. validateEvent?: boolean
  325. beforeChange?: (value: boolean) => boolean | Promise<boolean>
  326. on?: {
  327. change?: (value: boolean | string | number) => void
  328. }
  329. style?: CSSProperties
  330. }
  331. export interface RateComponentProps {
  332. value?: number
  333. max?: number
  334. size?: ElementPlusSize
  335. disabled?: boolean
  336. allowHalf?: boolean
  337. lowThreshold?: number
  338. highThreshold?: number
  339. colors?: string[] | Record<number, string>
  340. voidColor?: string
  341. disabledVoidColor?: string
  342. icons?: string[] | JSX.Element[] | Record<number, string | JSX.Element>
  343. voidIcon?: string | JSX.Element
  344. disabledVoidIcon?: string | JSX.Element
  345. showText?: boolean
  346. showScore?: boolean
  347. textColor?: string
  348. texts?: string[]
  349. scoreTemplate?: string
  350. clearable?: boolean
  351. id?: string
  352. label?: string
  353. on?: {
  354. change?: (value: number) => void
  355. }
  356. style?: CSSProperties
  357. }
  358. export interface ColorPickerComponentProps {
  359. value?: string
  360. disabled?: boolean
  361. size?: ElementPlusSize
  362. showAlpha?: boolean
  363. colorFormat?: 'hsl' | 'hsv' | 'hex' | 'rgb' | 'hex' | 'rgb'
  364. predefine?: string[]
  365. validateEvent?: boolean
  366. tabindex?: number | string
  367. label?: string
  368. id?: string
  369. on?: {
  370. change?: (value: string) => void
  371. activeChange?: (value: string) => void
  372. }
  373. style?: CSSProperties
  374. }
  375. export interface TransferComponentProps {
  376. value?: any[]
  377. data?: Array<{ key; label; disabled }>
  378. filterable?: boolean
  379. filterPlaceholder?: string
  380. filterMethod?: (query: string, item: any) => boolean
  381. targetOrder?: string
  382. titles?: string[]
  383. buttonTexts?: string[]
  384. renderContent?: (h: any, option: any) => JSX.Element
  385. format?: {
  386. noChecked?: string
  387. hasChecked?: string
  388. }
  389. props?: {
  390. label?: string
  391. key?: string
  392. disabled?: string
  393. }
  394. leftDefaultChecked?: any[]
  395. rightDefaultChecked?: any[]
  396. validateEvent?: boolean
  397. on?: {
  398. change?: (value: any[]) => void
  399. leftCheckChange?: (value: any[]) => void
  400. rightCheckChange?: (value: any[]) => void
  401. }
  402. slots?: {
  403. default?: (...args: any[]) => JSX.Element | null
  404. leftFooter?: (...args: any[]) => JSX.Element | null
  405. rightFooter?: (...args: any[]) => JSX.Element | null
  406. }
  407. style?: CSSProperties
  408. }
  409. export interface ColProps {
  410. span?: number
  411. xs?: number
  412. sm?: number
  413. md?: number
  414. lg?: number
  415. xl?: number
  416. tag?: string
  417. }
  418. export interface ComponentOptions extends Recordable {
  419. label?: string
  420. value?: any
  421. disabled?: boolean
  422. key?: string | number
  423. children?: ComponentOptions[]
  424. options?: ComponentOptions[]
  425. }
  426. export interface ComponentOptionsAlias {
  427. labelField?: string
  428. valueField?: string
  429. }
  430. export interface ComponentProps extends Recordable {
  431. optionsAlias?: ComponentOptionsAlias
  432. options?: ComponentOptions[]
  433. optionsSlot?: boolean
  434. }