components-type.d.ts 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. import type { Component, RendererNode, VNode, CSSProperties } from 'vue'
  2. declare global {
  3. // BfForm types start
  4. declare type ComponentName =
  5. | 'Radio'
  6. | 'Checkbox'
  7. | 'Input'
  8. | 'Autocomplete'
  9. | 'InputNumber'
  10. | 'Select'
  11. | 'Cascader'
  12. | 'Switch'
  13. | 'Slider'
  14. | 'TimePicker'
  15. | 'DatePicker'
  16. | 'Rate'
  17. | 'ColorPicker'
  18. | 'Transfer'
  19. | 'Divider'
  20. | 'TimeSelect'
  21. | 'SelectV2'
  22. declare type ColProps = {
  23. span?: number
  24. xs?: number
  25. sm?: number
  26. md?: number
  27. lg?: number
  28. xl?: number
  29. tag?: string
  30. }
  31. declare type FormValueTypes = string | number | string[] | number[] | boolean | undefined
  32. declare type FormRules = {
  33. required?: boolean
  34. message?: string
  35. type?: string
  36. trigger?: 'blur' | 'change' | ['change', 'blur']
  37. validator?: (rule: any, value: FormValueTypes, callback: Fn) => void | boolean
  38. }
  39. declare type FormItemProps = {
  40. labelWidth?: string | number
  41. required?: boolean
  42. rules?: FormRules | FormRules[]
  43. error?: string
  44. showMessage?: boolean
  45. inlineMessage?: boolean
  46. style?: CSSProperties
  47. }
  48. declare type FormOptions = {
  49. label?: string
  50. value?: FormValueTypes
  51. disabled?: boolean
  52. key?: string | number
  53. children?: FormOptions[]
  54. [key: string]: any
  55. }
  56. declare type FormOptionsAlias = {
  57. labelField?: string
  58. valueField?: string
  59. }
  60. declare type BlurOrFocusEvent = (e: Event) => viod
  61. declare type ChangeEvent = (data: {
  62. value: FormValueTypes
  63. field: string
  64. model: Recordable
  65. }) => viod
  66. declare type RadioProps = {
  67. border?: boolean
  68. name?: string
  69. disabled?: boolean
  70. onChange?: ChangeEvent
  71. }
  72. declare type CheckboxProps = {
  73. border?: boolean
  74. name?: string
  75. indeterminate?: boolean
  76. disabled?: boolean
  77. checked?: boolean
  78. onChange?: ChangeEvent
  79. }
  80. declare type InputProps = {
  81. type?: 'text' | 'textarea'
  82. maxlength?: string | number
  83. minlength?: string | number
  84. showWordLimit?: boolean
  85. placeholder?: string
  86. clearable?: boolean
  87. disabled?: boolean
  88. showPassword?: boolean
  89. prefixIcon?: string | Component
  90. suffixIcon?: string | Component
  91. rows?: number = 5
  92. autosize?:
  93. | boolean
  94. | {
  95. minRows?: number
  96. maxRows?: number
  97. }
  98. autocomplete?: string
  99. name?: string
  100. readonly?: boolean
  101. onBlur?: BlurOrFocusEvent
  102. onFocus?: BlurOrFocusEvent
  103. onChange?: ChangeEvent
  104. onInput?: ChangeEvent
  105. onClear?: Fn
  106. slots?: {
  107. prefix?: boolean
  108. suffix?: boolean
  109. prepend?: boolean
  110. append?: boolean
  111. }
  112. }
  113. declare type AutocompleteProps = {
  114. placeholder?: string
  115. clearable?: boolean
  116. valueKey?: string
  117. disabled?: boolean
  118. icon?: string | Component
  119. debounce?: number
  120. placement?: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end'
  121. fetchSuggestions?: (query: string, callback: Fn) => void
  122. popperClass?: string
  123. triggerOnFocus?: boolean
  124. name?: string
  125. selectWhenUnmatched?: boolean
  126. label?: boolean
  127. prefixIcon?: string
  128. suffixIcon?: string
  129. hideLoading?: boolean
  130. popperAppendToBody?: boolean
  131. highlightFirstItem?: boolean
  132. onSelect?: ChangeEvent
  133. change?: ChangeEvent
  134. slots?: {
  135. prefix?: boolean
  136. suffix?: boolean
  137. prepend?: boolean
  138. append?: boolean
  139. }
  140. }
  141. declare type InputNumberProps = {
  142. min?: number
  143. max?: number
  144. step?: number
  145. stepStrictly?: boolean
  146. precision?: number
  147. controls?: boolean
  148. controlsPosition?: 'top' | 'right'
  149. name?: string
  150. label?: string
  151. disabled?: boolean
  152. placeholder?: string
  153. }
  154. declare type SelectProps = {
  155. multiple?: boolean
  156. valueKey?: string
  157. clearable?: boolean
  158. collapseTags?: boolean
  159. disabled?: boolean
  160. multipleLimit?: number
  161. name?: string
  162. autocomplete?: string
  163. placeholder?: string
  164. filterable?: boolean
  165. allowCreate?: boolean
  166. filterMethod?: Fn
  167. remote?: boolean
  168. remoteMethod?: Fn
  169. loading?: boolean
  170. loadingText?: string
  171. noMatchText?: string
  172. noDataText?: string
  173. popperClass?: string
  174. reserveKeyword?: boolean
  175. defaultFirstOption?: boolean
  176. popperAppendToBody?: boolean
  177. automaticDropdown?: boolean
  178. clearIcon?: string | Component
  179. fitInputWidth?: boolean
  180. suffixIcon?: string | Component
  181. tagType?: ElementPlusInfoType
  182. onChange?: ChangeEvent
  183. onVisibleChange?: (val: boolean) => void
  184. onRemoveTag?: (val: string | number) => void
  185. onClear?: Fn
  186. onBlur?: BlurOrFocusEvent
  187. onFocus?: BlurOrFocusEvent
  188. slots?: {
  189. prefix?: boolean
  190. empty?: boolean
  191. }
  192. optionGroup?:
  193. | boolean
  194. | {
  195. label?: string
  196. disabled?: boolean
  197. }
  198. }
  199. declare type CascaderProps = {
  200. props?: {
  201. expandTrigger?: 'click' | 'hover'
  202. multiple?: boolean
  203. checkStrictly?: boolean
  204. emitPath?: boolean
  205. lazy?: boolean
  206. lazyLoad?: (node: Recordable, resolve: Fn) => void
  207. value?: string
  208. label?: string
  209. children?: string
  210. disabled?: string
  211. leaf?: string
  212. }
  213. placeholder?: string
  214. disabled?: boolean
  215. clearable?: boolean
  216. showAllLevels?: boolean
  217. collapseTags?: boolean
  218. separator?: string
  219. filterable?: boolean
  220. filterMethod?: (node: Recordable, keyword: string | number) => boolean
  221. debounce?: number
  222. beforeFilter?: (value: string) => boolean | PromiseRejectedResult
  223. popperClass?: string
  224. popperAppendToBody?: boolean
  225. onChange?: ChangeEvent
  226. onExpandChange?: (parents: Recordable) => viod
  227. onBlur?: BlurOrFocusEvent
  228. onFocus?: BlurOrFocusEvent
  229. onVisiblechange?: (val: boolean) => void
  230. onRemoveTag?: (data: Recordable) => viod
  231. slots?: {
  232. default?: boolean
  233. empty?: boolean
  234. }
  235. }
  236. declare type SwitchProps = {
  237. disabled?: boolean
  238. loading?: boolean
  239. width?: number
  240. inlinePrompt?: boolean
  241. activeIcon?: string | Component
  242. inactiveIcon?: string | Component
  243. activeText?: string
  244. inactiveText?: string
  245. activeValue?: boolean | string | number
  246. inactiveValue?: boolean | string | number
  247. activeColor?: string
  248. inactiveColor?: string
  249. borderColor?: string
  250. string?: string
  251. beforeChange?: () => boolean | PromiseRejectedResult
  252. onChange?: ChangeEvent
  253. }
  254. declare type SliderProps = {
  255. min?: number
  256. max?: number
  257. disabled?: boolean
  258. step?: number
  259. showInput?: boolean
  260. showInputControls?: boolean
  261. showStops?: boolean
  262. showTooltip?: boolean
  263. formatTooltip?: (value: number) => string
  264. range?: boolean
  265. vertical?: boolean
  266. height?: string
  267. label?: string
  268. debounce?: number
  269. tooltipClass?: string
  270. marks?: Recordable
  271. onChange?: ChangeEvent
  272. }
  273. declare type TimePickerProps = {
  274. readonly?: boolean
  275. disabled?: boolean
  276. editable?: boolean
  277. clearable?: boolean
  278. placeholder?: string
  279. startPlaceholder?: string
  280. endPlaceholder?: string
  281. isRange?: boolean
  282. arrowControl?: boolean
  283. align?: 'left' | 'center' | 'right'
  284. popperClass?: string
  285. rangeSeparator?: string
  286. format?: string
  287. defaultValue?: Date | string
  288. name?: string
  289. prefixIcon?: string | Component
  290. clearIcon?: string | Component
  291. disabledHours?: Fn
  292. disabledMinutes?: Fn
  293. disabledSeconds?: Fn
  294. onChange?: ChangeEvent
  295. onBlur?: BlurOrFocusEvent
  296. onFocus?: BlurOrFocusEvent
  297. }
  298. declare type DatePickerProps = {
  299. readonly?: boolean
  300. disabled?: boolean
  301. editable?: boolean
  302. clearable?: boolean
  303. placeholder?: string
  304. startPlaceholder?: string
  305. endPlaceholder?: string
  306. type?:
  307. | 'year'
  308. | 'month'
  309. | 'date'
  310. | 'dates'
  311. | 'datetime'
  312. | 'week'
  313. | 'datetimerange'
  314. | 'daterange'
  315. | 'monthrange'
  316. format?: string
  317. popperClass?: string
  318. rangeSeparator?: string
  319. defaultValue?: Date
  320. defaultTime?: Date[]
  321. valueFormat?: string
  322. name?: string
  323. unlinkPanels?: boolean
  324. prefixIcon?: string | Component
  325. clearIcon?: string | Component
  326. disabledDate?: (date: Date) => boolean
  327. shortcuts?: Recordable
  328. onChange?: ChangeEvent
  329. onBlur?: BlurOrFocusEvent
  330. onFocus?: BlurOrFocusEvent
  331. onCalendarChange?: (dates: [Date, Date]) => void
  332. slots?: {
  333. default?: boolean
  334. rangeSeparator?: boolean
  335. }
  336. }
  337. declare type RateProps = {
  338. max?: number
  339. disabled?: boolean
  340. allowHalf?: boolean
  341. lowThreshold?: number
  342. highThreshold?: number
  343. colors?: [string, string, string] | Recordable
  344. voidColor?: string
  345. disabledVoidColor?: string
  346. icons?: [string, string, string] | Recordable
  347. voidIcon?: string | Component
  348. disabledVoidIcon?: string | Component
  349. showText?: boolean
  350. showScore?: boolean
  351. textColor?: string
  352. texts?: string[]
  353. scoreTemplate?: string
  354. onChange?: ChangeEvent
  355. }
  356. declare type ColorPickerProps = {
  357. disabled?: boolean
  358. showAlpha?: boolean
  359. colorFormat?: 'hsl' | 'hsv' | 'hex' | 'rgb'
  360. popperClass?: string | Component
  361. predefine?: Recordable
  362. onChange?: ChangeEvent
  363. onActiveChange?: (color: string) => void
  364. }
  365. declare type TransferProps = {
  366. data?: {
  367. key?: string | number
  368. label?: string
  369. disabled?: boolean
  370. }[]
  371. filterable?: boolean
  372. filterPlaceholder?: string
  373. filterMethod?: Fn
  374. targetOrder?: 'original' | 'push' | 'unshift'
  375. titles?: [string, string]
  376. buttonTexts?: [string, string]
  377. renderContent?: (h: RendererNode, option: Recordable) => VNode | VNode[] | string
  378. format?: {
  379. noChecked?: string
  380. hasChecked?: string
  381. }
  382. props?: {
  383. key?: string
  384. label?: string
  385. disabled?: string
  386. }
  387. leftDefaultChecked?: Recordable
  388. rightDefaultChecked?: Recordable
  389. slots?: {
  390. leftFooter?: boolean
  391. rightFooter?: boolean
  392. }
  393. onChange?: ChangeEvent
  394. onLeftCheckChange?: (arr: string[] | number[]) => void
  395. onRightCheckChange?: (arr: string[] | number[]) => void
  396. }
  397. declare type DividerProps = {
  398. direction?: 'horizontal' | 'vertical'
  399. borderStyle?: CSSProperties
  400. contentPosition?: 'left' | 'right' | 'center'
  401. }
  402. declare type TimeSelectProps = {
  403. disabled?: boolean
  404. editable?: boolean
  405. clearable?: boolean
  406. placeholder?: string
  407. name?: string
  408. prefixIcon?: string | Component
  409. clearIcon?: string | Component
  410. start?: string
  411. end?: string
  412. step?: string
  413. minTime?: string
  414. maxTime?: string
  415. }
  416. declare type SelectV2Props = {
  417. multiple?: boolean
  418. disabled?: boolean
  419. valueKey?: string
  420. clearable?: boolean
  421. collapsetags?: boolean
  422. multiplelimit?: number
  423. name?: string
  424. autocomplete?: string
  425. placeholder?: string
  426. filterable?: boolean
  427. allowCreate?: boolean
  428. noDataText?: string
  429. popperClass?: string
  430. popperAppendToBody?: boolean
  431. popperOptions?: Recordable
  432. automaticDropdown?: boolean
  433. clearIcon?: string | Component
  434. height?: number
  435. scrollbarAlwaysOn?: boolean
  436. onChange?: ChangeEvent
  437. onVisibleChange?: (val: boolean) => void
  438. onRemoveTag?: (val: string | number) => void
  439. onClear?: () => void
  440. onBlur?: BlurOrFocusEvent
  441. onFocus?: BlurOrFocusEvent
  442. slots?: {
  443. default?: boolean
  444. empty?: boolean
  445. }
  446. }
  447. declare type FormSchema = {
  448. /**
  449. * @field form model key
  450. */
  451. field: string
  452. /**
  453. * @label form-item label
  454. */
  455. label?: string
  456. /**
  457. * @colProps ElCol props
  458. */
  459. colProps?: ColProps
  460. /**
  461. * @componentProps El Components props
  462. */
  463. componentProps?:
  464. | RadioProps
  465. | CheckboxProps
  466. | InputProps
  467. | AutocompleteProps
  468. | InputNumberProps
  469. | SelectProps
  470. | CascaderProps
  471. | SwitchProps
  472. | SliderProps
  473. | TimePickerProps
  474. | DatePickerProps
  475. | RateProps
  476. | ColorPickerProps
  477. | TransferProps
  478. | DividerProps
  479. | TimeSelectProps
  480. | SelectV2Props
  481. /**
  482. * @formItemProps form-item props
  483. */
  484. formItemProps?: FormItemProps
  485. /**
  486. * @component Component
  487. */
  488. component?: ComponentName
  489. /**
  490. * @value form model value
  491. */
  492. value?: FormValueTypes
  493. /**
  494. * @options Component options
  495. */
  496. options?: FormOptions[]
  497. /**
  498. * @optionsField option alias
  499. */
  500. optionsField?: FormOptionsAlias
  501. /**
  502. * @hidden form-item hidden
  503. */
  504. hidden?: boolean
  505. }
  506. // BfForm types end
  507. declare type BfFormSchema = FormSchema[]
  508. }