BaseSelect.d.ts 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586
  1. import type { Key, VueNode } from '../_util/type';
  2. import type { KeyboardEventHandler } from '../_util/EventInterface';
  3. import type { ScrollConfig, ScrollTo } from '../vc-virtual-list/List';
  4. import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';
  5. import type { BaseOptionType } from './Select';
  6. import type { AlignType } from '../vc-trigger/interface';
  7. export type RenderNode = VueNode | ((props: any) => VueNode);
  8. export type RenderDOMFunc = (props: any) => HTMLElement;
  9. export type Mode = 'multiple' | 'tags' | 'combobox';
  10. export type Placement = 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';
  11. export type RawValueType = string | number;
  12. export interface RefOptionListProps {
  13. onKeydown: KeyboardEventHandler;
  14. onKeyup: KeyboardEventHandler;
  15. scrollTo?: (index: number | ScrollConfig) => void;
  16. }
  17. export type CustomTagProps = {
  18. label: any;
  19. value: any;
  20. disabled: boolean;
  21. onClose: (event?: MouseEvent) => void;
  22. closable: boolean;
  23. option: BaseOptionType;
  24. };
  25. export interface DisplayValueType {
  26. key?: Key;
  27. value?: RawValueType;
  28. label?: any;
  29. disabled?: boolean;
  30. option?: BaseOptionType;
  31. }
  32. export type BaseSelectRef = {
  33. focus: () => void;
  34. blur: () => void;
  35. scrollTo: ScrollTo;
  36. };
  37. declare const baseSelectPrivateProps: () => {
  38. prefixCls: StringConstructor;
  39. id: StringConstructor;
  40. omitDomProps: PropType<string[]>;
  41. displayValues: PropType<DisplayValueType[]>;
  42. onDisplayValuesChange: PropType<(values: DisplayValueType[], info: {
  43. type: 'add' | 'remove' | 'clear';
  44. values: DisplayValueType[];
  45. }) => void>;
  46. /** Current dropdown list active item string value */
  47. activeValue: StringConstructor;
  48. /** Link search input with target element */
  49. activeDescendantId: StringConstructor;
  50. onActiveValueChange: PropType<(value: string | null) => void>;
  51. searchValue: StringConstructor;
  52. /** Trigger onSearch, return false to prevent trigger open event */
  53. onSearch: PropType<(searchValue: string, info: {
  54. source: 'typing' | 'effect' | 'submit' | 'blur';
  55. }) => void>;
  56. /** Trigger when search text match the `tokenSeparators`. Will provide split content */
  57. onSearchSplit: PropType<(words: string[]) => void>;
  58. maxLength: NumberConstructor;
  59. OptionList: import("vue-types").VueTypeValidableDef<any>;
  60. /** Tell if provided `options` is empty */
  61. emptyOptions: BooleanConstructor;
  62. };
  63. export type DropdownObject = {
  64. menuNode?: VueNode;
  65. props?: Record<string, any>;
  66. };
  67. export type DropdownRender = (opt?: DropdownObject) => VueNode;
  68. export declare const baseSelectPropsWithoutPrivate: () => {
  69. showSearch: {
  70. type: BooleanConstructor;
  71. default: any;
  72. };
  73. tagRender: {
  74. type: PropType<(props: CustomTagProps) => any>;
  75. };
  76. optionLabelRender: {
  77. type: PropType<(option: Record<string, any>) => any>;
  78. };
  79. direction: {
  80. type: PropType<"rtl" | "ltr">;
  81. };
  82. tabindex: NumberConstructor;
  83. autofocus: BooleanConstructor;
  84. notFoundContent: import("vue-types").VueTypeValidableDef<any>;
  85. placeholder: import("vue-types").VueTypeValidableDef<any>;
  86. onClear: PropType<() => void>;
  87. choiceTransitionName: StringConstructor;
  88. mode: PropType<Mode>;
  89. disabled: {
  90. type: BooleanConstructor;
  91. default: any;
  92. };
  93. loading: {
  94. type: BooleanConstructor;
  95. default: any;
  96. };
  97. open: {
  98. type: BooleanConstructor;
  99. default: any;
  100. };
  101. defaultOpen: {
  102. type: BooleanConstructor;
  103. default: any;
  104. };
  105. onDropdownVisibleChange: {
  106. type: PropType<(open: boolean) => void>;
  107. };
  108. /** @private Internal usage. Do not use in your production. */
  109. getInputElement: {
  110. type: PropType<() => any>;
  111. };
  112. /** @private Internal usage. Do not use in your production. */
  113. getRawInputElement: {
  114. type: PropType<() => any>;
  115. };
  116. maxTagTextLength: NumberConstructor;
  117. maxTagCount: {
  118. type: PropType<number | "responsive">;
  119. };
  120. maxTagPlaceholder: import("vue-types").VueTypeValidableDef<any>;
  121. tokenSeparators: {
  122. type: PropType<string[]>;
  123. };
  124. allowClear: {
  125. type: BooleanConstructor;
  126. default: any;
  127. };
  128. showArrow: {
  129. type: BooleanConstructor;
  130. default: any;
  131. };
  132. inputIcon: import("vue-types").VueTypeValidableDef<any>;
  133. /** Clear all icon */
  134. clearIcon: import("vue-types").VueTypeValidableDef<any>;
  135. /** Selector remove icon */
  136. removeIcon: import("vue-types").VueTypeValidableDef<any>;
  137. animation: StringConstructor;
  138. transitionName: StringConstructor;
  139. dropdownStyle: {
  140. type: PropType<CSSProperties>;
  141. };
  142. dropdownClassName: StringConstructor;
  143. dropdownMatchSelectWidth: {
  144. type: PropType<number | boolean>;
  145. default: any;
  146. };
  147. dropdownRender: {
  148. type: PropType<DropdownRender>;
  149. };
  150. dropdownAlign: PropType<AlignType>;
  151. placement: {
  152. type: PropType<Placement>;
  153. };
  154. getPopupContainer: {
  155. type: PropType<RenderDOMFunc>;
  156. };
  157. showAction: {
  158. type: PropType<("click" | "focus")[]>;
  159. };
  160. onBlur: {
  161. type: PropType<(e: FocusEvent) => void>;
  162. };
  163. onFocus: {
  164. type: PropType<(e: FocusEvent) => void>;
  165. };
  166. onKeyup: PropType<(e: KeyboardEvent) => void>;
  167. onKeydown: PropType<(e: KeyboardEvent) => void>;
  168. onMousedown: PropType<(e: MouseEvent) => void>;
  169. onPopupScroll: PropType<(e: UIEvent) => void>;
  170. onInputKeyDown: PropType<(e: KeyboardEvent) => void>;
  171. onMouseenter: PropType<(e: MouseEvent) => void>;
  172. onMouseleave: PropType<(e: MouseEvent) => void>;
  173. onClick: PropType<(e: MouseEvent) => void>;
  174. };
  175. declare const baseSelectProps: () => {
  176. showSearch: {
  177. type: BooleanConstructor;
  178. default: any;
  179. };
  180. tagRender: {
  181. type: PropType<(props: CustomTagProps) => any>;
  182. };
  183. optionLabelRender: {
  184. type: PropType<(option: Record<string, any>) => any>;
  185. };
  186. direction: {
  187. type: PropType<"rtl" | "ltr">;
  188. };
  189. tabindex: NumberConstructor;
  190. autofocus: BooleanConstructor;
  191. notFoundContent: import("vue-types").VueTypeValidableDef<any>;
  192. placeholder: import("vue-types").VueTypeValidableDef<any>;
  193. onClear: PropType<() => void>;
  194. choiceTransitionName: StringConstructor;
  195. mode: PropType<Mode>;
  196. disabled: {
  197. type: BooleanConstructor;
  198. default: any;
  199. };
  200. loading: {
  201. type: BooleanConstructor;
  202. default: any;
  203. };
  204. open: {
  205. type: BooleanConstructor;
  206. default: any;
  207. };
  208. defaultOpen: {
  209. type: BooleanConstructor;
  210. default: any;
  211. };
  212. onDropdownVisibleChange: {
  213. type: PropType<(open: boolean) => void>;
  214. };
  215. /** @private Internal usage. Do not use in your production. */
  216. getInputElement: {
  217. type: PropType<() => any>;
  218. };
  219. /** @private Internal usage. Do not use in your production. */
  220. getRawInputElement: {
  221. type: PropType<() => any>;
  222. };
  223. maxTagTextLength: NumberConstructor;
  224. maxTagCount: {
  225. type: PropType<number | "responsive">;
  226. };
  227. maxTagPlaceholder: import("vue-types").VueTypeValidableDef<any>;
  228. tokenSeparators: {
  229. type: PropType<string[]>;
  230. };
  231. allowClear: {
  232. type: BooleanConstructor;
  233. default: any;
  234. };
  235. showArrow: {
  236. type: BooleanConstructor;
  237. default: any;
  238. };
  239. inputIcon: import("vue-types").VueTypeValidableDef<any>;
  240. /** Clear all icon */
  241. clearIcon: import("vue-types").VueTypeValidableDef<any>;
  242. /** Selector remove icon */
  243. removeIcon: import("vue-types").VueTypeValidableDef<any>;
  244. animation: StringConstructor;
  245. transitionName: StringConstructor;
  246. dropdownStyle: {
  247. type: PropType<CSSProperties>;
  248. };
  249. dropdownClassName: StringConstructor;
  250. dropdownMatchSelectWidth: {
  251. type: PropType<number | boolean>;
  252. default: any;
  253. };
  254. dropdownRender: {
  255. type: PropType<DropdownRender>;
  256. };
  257. dropdownAlign: PropType<AlignType>;
  258. placement: {
  259. type: PropType<Placement>;
  260. };
  261. getPopupContainer: {
  262. type: PropType<RenderDOMFunc>;
  263. };
  264. showAction: {
  265. type: PropType<("click" | "focus")[]>;
  266. };
  267. onBlur: {
  268. type: PropType<(e: FocusEvent) => void>;
  269. };
  270. onFocus: {
  271. type: PropType<(e: FocusEvent) => void>;
  272. };
  273. onKeyup: PropType<(e: KeyboardEvent) => void>;
  274. onKeydown: PropType<(e: KeyboardEvent) => void>;
  275. onMousedown: PropType<(e: MouseEvent) => void>;
  276. onPopupScroll: PropType<(e: UIEvent) => void>;
  277. onInputKeyDown: PropType<(e: KeyboardEvent) => void>;
  278. onMouseenter: PropType<(e: MouseEvent) => void>;
  279. onMouseleave: PropType<(e: MouseEvent) => void>;
  280. onClick: PropType<(e: MouseEvent) => void>;
  281. prefixCls: StringConstructor;
  282. id: StringConstructor;
  283. omitDomProps: PropType<string[]>;
  284. displayValues: PropType<DisplayValueType[]>;
  285. onDisplayValuesChange: PropType<(values: DisplayValueType[], info: {
  286. type: 'add' | 'remove' | 'clear';
  287. values: DisplayValueType[];
  288. }) => void>;
  289. /** Current dropdown list active item string value */
  290. activeValue: StringConstructor;
  291. /** Link search input with target element */
  292. activeDescendantId: StringConstructor;
  293. onActiveValueChange: PropType<(value: string | null) => void>;
  294. searchValue: StringConstructor;
  295. /** Trigger onSearch, return false to prevent trigger open event */
  296. onSearch: PropType<(searchValue: string, info: {
  297. source: 'typing' | 'effect' | 'submit' | 'blur';
  298. }) => void>;
  299. /** Trigger when search text match the `tokenSeparators`. Will provide split content */
  300. onSearchSplit: PropType<(words: string[]) => void>;
  301. maxLength: NumberConstructor;
  302. OptionList: import("vue-types").VueTypeValidableDef<any>;
  303. /** Tell if provided `options` is empty */
  304. emptyOptions: BooleanConstructor;
  305. };
  306. export type BaseSelectPrivateProps = Partial<ExtractPropTypes<ReturnType<typeof baseSelectPrivateProps>>>;
  307. export type BaseSelectProps = Partial<ExtractPropTypes<ReturnType<typeof baseSelectProps>>>;
  308. export type BaseSelectPropsWithoutPrivate = Omit<BaseSelectProps, keyof BaseSelectPrivateProps>;
  309. export declare function isMultiple(mode: Mode): boolean;
  310. declare const _default: import("vue").DefineComponent<{
  311. showSearch: {
  312. type: BooleanConstructor;
  313. default: any;
  314. };
  315. tagRender: {
  316. type: PropType<(props: CustomTagProps) => any>;
  317. };
  318. optionLabelRender: {
  319. type: PropType<(option: Record<string, any>) => any>;
  320. };
  321. direction: {
  322. type: PropType<"rtl" | "ltr">;
  323. };
  324. tabindex: NumberConstructor;
  325. autofocus: BooleanConstructor;
  326. notFoundContent: import("vue-types").VueTypeValidableDef<any>;
  327. placeholder: import("vue-types").VueTypeValidableDef<any>;
  328. onClear: PropType<() => void>;
  329. choiceTransitionName: StringConstructor;
  330. mode: PropType<Mode>;
  331. disabled: {
  332. type: BooleanConstructor;
  333. default: any;
  334. };
  335. loading: {
  336. type: BooleanConstructor;
  337. default: any;
  338. };
  339. open: {
  340. type: BooleanConstructor;
  341. default: any;
  342. };
  343. defaultOpen: {
  344. type: BooleanConstructor;
  345. default: any;
  346. };
  347. onDropdownVisibleChange: {
  348. type: PropType<(open: boolean) => void>;
  349. };
  350. /** @private Internal usage. Do not use in your production. */
  351. getInputElement: {
  352. type: PropType<() => any>;
  353. };
  354. /** @private Internal usage. Do not use in your production. */
  355. getRawInputElement: {
  356. type: PropType<() => any>;
  357. };
  358. maxTagTextLength: NumberConstructor;
  359. maxTagCount: {
  360. type: PropType<number | "responsive">;
  361. };
  362. maxTagPlaceholder: import("vue-types").VueTypeValidableDef<any>;
  363. tokenSeparators: {
  364. type: PropType<string[]>;
  365. };
  366. allowClear: {
  367. type: BooleanConstructor;
  368. default: any;
  369. };
  370. showArrow: {
  371. type: BooleanConstructor;
  372. default: any;
  373. };
  374. inputIcon: import("vue-types").VueTypeValidableDef<any>;
  375. /** Clear all icon */
  376. clearIcon: import("vue-types").VueTypeValidableDef<any>;
  377. /** Selector remove icon */
  378. removeIcon: import("vue-types").VueTypeValidableDef<any>;
  379. animation: StringConstructor;
  380. transitionName: StringConstructor;
  381. dropdownStyle: {
  382. type: PropType<CSSProperties>;
  383. };
  384. dropdownClassName: StringConstructor;
  385. dropdownMatchSelectWidth: {
  386. type: PropType<number | boolean>;
  387. default: any;
  388. };
  389. dropdownRender: {
  390. type: PropType<DropdownRender>;
  391. };
  392. dropdownAlign: PropType<AlignType>;
  393. placement: {
  394. type: PropType<Placement>;
  395. };
  396. getPopupContainer: {
  397. type: PropType<RenderDOMFunc>;
  398. };
  399. showAction: {
  400. type: PropType<("click" | "focus")[]>;
  401. };
  402. onBlur: {
  403. type: PropType<(e: FocusEvent) => void>;
  404. };
  405. onFocus: {
  406. type: PropType<(e: FocusEvent) => void>;
  407. };
  408. onKeyup: PropType<(e: KeyboardEvent) => void>;
  409. onKeydown: PropType<(e: KeyboardEvent) => void>;
  410. onMousedown: PropType<(e: MouseEvent) => void>;
  411. onPopupScroll: PropType<(e: UIEvent) => void>;
  412. onInputKeyDown: PropType<(e: KeyboardEvent) => void>;
  413. onMouseenter: PropType<(e: MouseEvent) => void>;
  414. onMouseleave: PropType<(e: MouseEvent) => void>;
  415. onClick: PropType<(e: MouseEvent) => void>;
  416. prefixCls: StringConstructor;
  417. id: StringConstructor;
  418. omitDomProps: PropType<string[]>;
  419. displayValues: PropType<DisplayValueType[]>;
  420. onDisplayValuesChange: PropType<(values: DisplayValueType[], info: {
  421. type: "clear" | "add" | "remove";
  422. values: DisplayValueType[];
  423. }) => void>;
  424. /** Current dropdown list active item string value */
  425. activeValue: StringConstructor;
  426. /** Link search input with target element */
  427. activeDescendantId: StringConstructor;
  428. onActiveValueChange: PropType<(value: string) => void>;
  429. searchValue: StringConstructor;
  430. /** Trigger onSearch, return false to prevent trigger open event */
  431. onSearch: PropType<(searchValue: string, info: {
  432. source: "blur" | "submit" | "typing" | "effect";
  433. }) => void>;
  434. /** Trigger when search text match the `tokenSeparators`. Will provide split content */
  435. onSearchSplit: PropType<(words: string[]) => void>;
  436. maxLength: NumberConstructor;
  437. OptionList: import("vue-types").VueTypeValidableDef<any>;
  438. /** Tell if provided `options` is empty */
  439. emptyOptions: BooleanConstructor;
  440. }, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
  441. [key: string]: any;
  442. }> | import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
  443. [key: string]: any;
  444. }>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<{
  445. showSearch: {
  446. type: BooleanConstructor;
  447. default: any;
  448. };
  449. tagRender: {
  450. type: PropType<(props: CustomTagProps) => any>;
  451. };
  452. optionLabelRender: {
  453. type: PropType<(option: Record<string, any>) => any>;
  454. };
  455. direction: {
  456. type: PropType<"rtl" | "ltr">;
  457. };
  458. tabindex: NumberConstructor;
  459. autofocus: BooleanConstructor;
  460. notFoundContent: import("vue-types").VueTypeValidableDef<any>;
  461. placeholder: import("vue-types").VueTypeValidableDef<any>;
  462. onClear: PropType<() => void>;
  463. choiceTransitionName: StringConstructor;
  464. mode: PropType<Mode>;
  465. disabled: {
  466. type: BooleanConstructor;
  467. default: any;
  468. };
  469. loading: {
  470. type: BooleanConstructor;
  471. default: any;
  472. };
  473. open: {
  474. type: BooleanConstructor;
  475. default: any;
  476. };
  477. defaultOpen: {
  478. type: BooleanConstructor;
  479. default: any;
  480. };
  481. onDropdownVisibleChange: {
  482. type: PropType<(open: boolean) => void>;
  483. };
  484. /** @private Internal usage. Do not use in your production. */
  485. getInputElement: {
  486. type: PropType<() => any>;
  487. };
  488. /** @private Internal usage. Do not use in your production. */
  489. getRawInputElement: {
  490. type: PropType<() => any>;
  491. };
  492. maxTagTextLength: NumberConstructor;
  493. maxTagCount: {
  494. type: PropType<number | "responsive">;
  495. };
  496. maxTagPlaceholder: import("vue-types").VueTypeValidableDef<any>;
  497. tokenSeparators: {
  498. type: PropType<string[]>;
  499. };
  500. allowClear: {
  501. type: BooleanConstructor;
  502. default: any;
  503. };
  504. showArrow: {
  505. type: BooleanConstructor;
  506. default: any;
  507. };
  508. inputIcon: import("vue-types").VueTypeValidableDef<any>;
  509. /** Clear all icon */
  510. clearIcon: import("vue-types").VueTypeValidableDef<any>;
  511. /** Selector remove icon */
  512. removeIcon: import("vue-types").VueTypeValidableDef<any>;
  513. animation: StringConstructor;
  514. transitionName: StringConstructor;
  515. dropdownStyle: {
  516. type: PropType<CSSProperties>;
  517. };
  518. dropdownClassName: StringConstructor;
  519. dropdownMatchSelectWidth: {
  520. type: PropType<number | boolean>;
  521. default: any;
  522. };
  523. dropdownRender: {
  524. type: PropType<DropdownRender>;
  525. };
  526. dropdownAlign: PropType<AlignType>;
  527. placement: {
  528. type: PropType<Placement>;
  529. };
  530. getPopupContainer: {
  531. type: PropType<RenderDOMFunc>;
  532. };
  533. showAction: {
  534. type: PropType<("click" | "focus")[]>;
  535. };
  536. onBlur: {
  537. type: PropType<(e: FocusEvent) => void>;
  538. };
  539. onFocus: {
  540. type: PropType<(e: FocusEvent) => void>;
  541. };
  542. onKeyup: PropType<(e: KeyboardEvent) => void>;
  543. onKeydown: PropType<(e: KeyboardEvent) => void>;
  544. onMousedown: PropType<(e: MouseEvent) => void>;
  545. onPopupScroll: PropType<(e: UIEvent) => void>;
  546. onInputKeyDown: PropType<(e: KeyboardEvent) => void>;
  547. onMouseenter: PropType<(e: MouseEvent) => void>;
  548. onMouseleave: PropType<(e: MouseEvent) => void>;
  549. onClick: PropType<(e: MouseEvent) => void>;
  550. prefixCls: StringConstructor;
  551. id: StringConstructor;
  552. omitDomProps: PropType<string[]>;
  553. displayValues: PropType<DisplayValueType[]>;
  554. onDisplayValuesChange: PropType<(values: DisplayValueType[], info: {
  555. type: "clear" | "add" | "remove";
  556. values: DisplayValueType[];
  557. }) => void>;
  558. /** Current dropdown list active item string value */
  559. activeValue: StringConstructor;
  560. /** Link search input with target element */
  561. activeDescendantId: StringConstructor;
  562. onActiveValueChange: PropType<(value: string) => void>;
  563. searchValue: StringConstructor;
  564. /** Trigger onSearch, return false to prevent trigger open event */
  565. onSearch: PropType<(searchValue: string, info: {
  566. source: "blur" | "submit" | "typing" | "effect";
  567. }) => void>;
  568. /** Trigger when search text match the `tokenSeparators`. Will provide split content */
  569. onSearchSplit: PropType<(words: string[]) => void>;
  570. maxLength: NumberConstructor;
  571. OptionList: import("vue-types").VueTypeValidableDef<any>;
  572. /** Tell if provided `options` is empty */
  573. emptyOptions: BooleanConstructor;
  574. }>>, {
  575. open: boolean;
  576. disabled: boolean;
  577. autofocus: boolean;
  578. dropdownMatchSelectWidth: number | boolean;
  579. loading: boolean;
  580. allowClear: boolean;
  581. showSearch: boolean;
  582. defaultOpen: boolean;
  583. showArrow: boolean;
  584. emptyOptions: boolean;
  585. }, {}>;
  586. export default _default;