index.d.mts 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  1. import * as vue from 'vue';
  2. import { ComponentPropsOptions, ExtractPropTypes, VNodeChild, VNode, PropType, ComponentPublicInstance, FunctionalComponent, Ref } from 'vue';
  3. type SlotsToProps<U extends RawSlots, T = MakeInternalSlots<U>> = {
  4. $children?: (VNodeChild | (T extends {
  5. default: infer V;
  6. } ? V : {}) | {
  7. [K in keyof T]?: T[K];
  8. });
  9. 'v-slots'?: {
  10. [K in keyof T]?: T[K] | false;
  11. };
  12. } & {
  13. [K in keyof T as `v-slot:${K & string}`]?: T[K] | false;
  14. };
  15. type RawSlots = Record<string, unknown>;
  16. type Slot<T> = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild;
  17. type VueSlot<T> = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[];
  18. type MakeInternalSlots<T extends RawSlots> = {
  19. [K in keyof T]: Slot<T[K]>;
  20. };
  21. type MakeSlots<T extends RawSlots> = {
  22. [K in keyof T]: VueSlot<T[K]>;
  23. };
  24. type GenericProps<Props, Slots extends Record<string, unknown>> = {
  25. $props: Props & SlotsToProps<Slots>;
  26. $slots: MakeSlots<Slots>;
  27. };
  28. interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
  29. filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
  30. }
  31. type ClassValue = any;
  32. type JSXComponent<Props = any> = {
  33. new (): ComponentPublicInstance<Props>;
  34. } | FunctionalComponent<Props>;
  35. type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
  36. declare const IconValue: PropType<IconValue>;
  37. interface LoaderSlotProps {
  38. color: string | undefined;
  39. isActive: boolean;
  40. }
  41. declare const allowedVariants: readonly ["underlined", "outlined", "filled", "solo", "solo-inverted", "solo-filled", "plain"];
  42. type Variant = typeof allowedVariants[number];
  43. interface DefaultInputSlot {
  44. isActive: Ref<boolean>;
  45. isFocused: Ref<boolean>;
  46. controlRef: Ref<HTMLElement | undefined>;
  47. focus: () => void;
  48. blur: () => void;
  49. }
  50. interface VFieldSlot extends DefaultInputSlot {
  51. props: Record<string, unknown>;
  52. }
  53. type VFieldSlots = {
  54. clear: DefaultInputSlot & {
  55. props: Record<string, any>;
  56. };
  57. 'prepend-inner': DefaultInputSlot;
  58. 'append-inner': DefaultInputSlot;
  59. label: DefaultInputSlot & {
  60. label: string | undefined;
  61. props: Record<string, any>;
  62. };
  63. loader: LoaderSlotProps;
  64. default: VFieldSlot;
  65. };
  66. declare const VField: {
  67. new (...args: any[]): vue.CreateComponentPublicInstance<{
  68. flat: boolean;
  69. reverse: boolean;
  70. variant: "filled" | "underlined" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
  71. error: boolean;
  72. active: boolean;
  73. style: vue.StyleValue;
  74. disabled: boolean;
  75. focused: boolean;
  76. tile: boolean;
  77. clearIcon: IconValue;
  78. clearable: boolean;
  79. dirty: boolean;
  80. persistentClear: boolean;
  81. singleLine: boolean;
  82. } & {
  83. id?: string | undefined;
  84. color?: string | undefined;
  85. loading?: string | boolean | undefined;
  86. label?: string | undefined;
  87. class?: any;
  88. theme?: string | undefined;
  89. 'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
  90. rounded?: string | number | boolean | undefined;
  91. baseColor?: string | undefined;
  92. bgColor?: string | undefined;
  93. appendInnerIcon?: IconValue | undefined;
  94. prependInnerIcon?: IconValue | undefined;
  95. 'onClick:clear'?: ((args_0: MouseEvent) => void) | undefined;
  96. 'onClick:appendInner'?: ((args_0: MouseEvent) => void) | undefined;
  97. 'onClick:prependInner'?: ((args_0: MouseEvent) => void) | undefined;
  98. centerAffix?: boolean | undefined;
  99. } & {
  100. "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
  101. }, {
  102. controlRef: Ref<HTMLElement | undefined>;
  103. }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
  104. 'update:focused': (focused: boolean) => true;
  105. 'update:modelValue': (value: any) => true;
  106. }, "$children" | "v-slots" | "v-slot:default" | "modelValue" | "update:modelValue" | "v-slot:loader" | "v-slot:label" | "v-slot:clear" | "v-slot:prepend-inner" | "v-slot:append-inner">, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
  107. flat: boolean;
  108. reverse: boolean;
  109. variant: "filled" | "underlined" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
  110. error: boolean;
  111. active: boolean;
  112. style: vue.StyleValue;
  113. disabled: boolean;
  114. focused: boolean;
  115. tile: boolean;
  116. clearIcon: IconValue;
  117. clearable: boolean;
  118. dirty: boolean;
  119. persistentClear: boolean;
  120. singleLine: boolean;
  121. } & {
  122. id?: string | undefined;
  123. color?: string | undefined;
  124. loading?: string | boolean | undefined;
  125. label?: string | undefined;
  126. class?: any;
  127. theme?: string | undefined;
  128. 'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
  129. rounded?: string | number | boolean | undefined;
  130. baseColor?: string | undefined;
  131. bgColor?: string | undefined;
  132. appendInnerIcon?: IconValue | undefined;
  133. prependInnerIcon?: IconValue | undefined;
  134. 'onClick:clear'?: ((args_0: MouseEvent) => void) | undefined;
  135. 'onClick:appendInner'?: ((args_0: MouseEvent) => void) | undefined;
  136. 'onClick:prependInner'?: ((args_0: MouseEvent) => void) | undefined;
  137. centerAffix?: boolean | undefined;
  138. } & {
  139. "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
  140. }, {
  141. flat: boolean;
  142. reverse: boolean;
  143. variant: "filled" | "underlined" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
  144. error: boolean;
  145. active: boolean;
  146. style: vue.StyleValue;
  147. disabled: boolean;
  148. focused: boolean;
  149. rounded: string | number | boolean;
  150. tile: boolean;
  151. clearIcon: IconValue;
  152. centerAffix: boolean;
  153. clearable: boolean;
  154. dirty: boolean;
  155. persistentClear: boolean;
  156. singleLine: boolean;
  157. }, true, {}, vue.SlotsType<Partial<{
  158. clear: (arg: DefaultInputSlot & {
  159. props: Record<string, any>;
  160. }) => vue.VNode[];
  161. 'prepend-inner': (arg: DefaultInputSlot) => vue.VNode[];
  162. 'append-inner': (arg: DefaultInputSlot) => vue.VNode[];
  163. label: (arg: DefaultInputSlot & {
  164. label: string | undefined;
  165. props: Record<string, any>;
  166. }) => vue.VNode[];
  167. loader: (arg: LoaderSlotProps) => vue.VNode[];
  168. default: (arg: VFieldSlot) => vue.VNode[];
  169. }>>, {
  170. P: {};
  171. B: {};
  172. D: {};
  173. C: {};
  174. M: {};
  175. Defaults: {};
  176. }, {
  177. flat: boolean;
  178. reverse: boolean;
  179. variant: "filled" | "underlined" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
  180. error: boolean;
  181. active: boolean;
  182. style: vue.StyleValue;
  183. disabled: boolean;
  184. focused: boolean;
  185. tile: boolean;
  186. clearIcon: IconValue;
  187. clearable: boolean;
  188. dirty: boolean;
  189. persistentClear: boolean;
  190. singleLine: boolean;
  191. } & {
  192. id?: string | undefined;
  193. color?: string | undefined;
  194. loading?: string | boolean | undefined;
  195. label?: string | undefined;
  196. class?: any;
  197. theme?: string | undefined;
  198. 'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
  199. rounded?: string | number | boolean | undefined;
  200. baseColor?: string | undefined;
  201. bgColor?: string | undefined;
  202. appendInnerIcon?: IconValue | undefined;
  203. prependInnerIcon?: IconValue | undefined;
  204. 'onClick:clear'?: ((args_0: MouseEvent) => void) | undefined;
  205. 'onClick:appendInner'?: ((args_0: MouseEvent) => void) | undefined;
  206. 'onClick:prependInner'?: ((args_0: MouseEvent) => void) | undefined;
  207. centerAffix?: boolean | undefined;
  208. } & {
  209. "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
  210. }, {
  211. controlRef: Ref<HTMLElement | undefined>;
  212. }, {}, {}, {}, {
  213. flat: boolean;
  214. reverse: boolean;
  215. variant: "filled" | "underlined" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
  216. error: boolean;
  217. active: boolean;
  218. style: vue.StyleValue;
  219. disabled: boolean;
  220. focused: boolean;
  221. rounded: string | number | boolean;
  222. tile: boolean;
  223. clearIcon: IconValue;
  224. centerAffix: boolean;
  225. clearable: boolean;
  226. dirty: boolean;
  227. persistentClear: boolean;
  228. singleLine: boolean;
  229. }>;
  230. __isFragment?: never;
  231. __isTeleport?: never;
  232. __isSuspense?: never;
  233. } & vue.ComponentOptionsBase<{
  234. flat: boolean;
  235. reverse: boolean;
  236. variant: "filled" | "underlined" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
  237. error: boolean;
  238. active: boolean;
  239. style: vue.StyleValue;
  240. disabled: boolean;
  241. focused: boolean;
  242. tile: boolean;
  243. clearIcon: IconValue;
  244. clearable: boolean;
  245. dirty: boolean;
  246. persistentClear: boolean;
  247. singleLine: boolean;
  248. } & {
  249. id?: string | undefined;
  250. color?: string | undefined;
  251. loading?: string | boolean | undefined;
  252. label?: string | undefined;
  253. class?: any;
  254. theme?: string | undefined;
  255. 'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
  256. rounded?: string | number | boolean | undefined;
  257. baseColor?: string | undefined;
  258. bgColor?: string | undefined;
  259. appendInnerIcon?: IconValue | undefined;
  260. prependInnerIcon?: IconValue | undefined;
  261. 'onClick:clear'?: ((args_0: MouseEvent) => void) | undefined;
  262. 'onClick:appendInner'?: ((args_0: MouseEvent) => void) | undefined;
  263. 'onClick:prependInner'?: ((args_0: MouseEvent) => void) | undefined;
  264. centerAffix?: boolean | undefined;
  265. } & {
  266. "onUpdate:focused"?: ((focused: boolean) => any) | undefined;
  267. }, {
  268. controlRef: Ref<HTMLElement | undefined>;
  269. }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
  270. 'update:focused': (focused: boolean) => true;
  271. 'update:modelValue': (value: any) => true;
  272. }, "$children" | "v-slots" | "v-slot:default" | "modelValue" | "update:modelValue" | "v-slot:loader" | "v-slot:label" | "v-slot:clear" | "v-slot:prepend-inner" | "v-slot:append-inner">, string, {
  273. flat: boolean;
  274. reverse: boolean;
  275. variant: "filled" | "underlined" | "outlined" | "plain" | "solo" | "solo-inverted" | "solo-filled";
  276. error: boolean;
  277. active: boolean;
  278. style: vue.StyleValue;
  279. disabled: boolean;
  280. focused: boolean;
  281. rounded: string | number | boolean;
  282. tile: boolean;
  283. clearIcon: IconValue;
  284. centerAffix: boolean;
  285. clearable: boolean;
  286. dirty: boolean;
  287. persistentClear: boolean;
  288. singleLine: boolean;
  289. }, {}, string, vue.SlotsType<Partial<{
  290. clear: (arg: DefaultInputSlot & {
  291. props: Record<string, any>;
  292. }) => vue.VNode[];
  293. 'prepend-inner': (arg: DefaultInputSlot) => vue.VNode[];
  294. 'append-inner': (arg: DefaultInputSlot) => vue.VNode[];
  295. label: (arg: DefaultInputSlot & {
  296. label: string | undefined;
  297. props: Record<string, any>;
  298. }) => vue.VNode[];
  299. loader: (arg: LoaderSlotProps) => vue.VNode[];
  300. default: (arg: VFieldSlot) => vue.VNode[];
  301. }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T>(props: {
  302. modelValue?: T;
  303. "onUpdate:modelValue"?: (value: T) => void;
  304. }, slots: VFieldSlots) => GenericProps<typeof props, typeof slots>) & FilterPropsOptions<{
  305. theme: StringConstructor;
  306. rounded: {
  307. type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
  308. default: undefined;
  309. };
  310. tile: BooleanConstructor;
  311. loading: (StringConstructor | BooleanConstructor)[];
  312. class: PropType<ClassValue>;
  313. style: {
  314. type: PropType<vue.StyleValue>;
  315. default: null;
  316. };
  317. appendInnerIcon: PropType<IconValue>;
  318. bgColor: StringConstructor;
  319. clearable: BooleanConstructor;
  320. clearIcon: {
  321. type: PropType<IconValue>;
  322. default: string;
  323. };
  324. active: BooleanConstructor;
  325. centerAffix: {
  326. type: BooleanConstructor;
  327. default: undefined;
  328. };
  329. color: StringConstructor;
  330. baseColor: StringConstructor;
  331. dirty: BooleanConstructor;
  332. disabled: {
  333. type: BooleanConstructor;
  334. default: null;
  335. };
  336. error: BooleanConstructor;
  337. flat: BooleanConstructor;
  338. label: StringConstructor;
  339. persistentClear: BooleanConstructor;
  340. prependInnerIcon: PropType<IconValue>;
  341. reverse: BooleanConstructor;
  342. singleLine: BooleanConstructor;
  343. variant: {
  344. type: PropType<Variant>;
  345. default: string;
  346. validator: (v: any) => boolean;
  347. };
  348. 'onClick:clear': PropType<(args_0: MouseEvent) => void>;
  349. 'onClick:appendInner': PropType<(args_0: MouseEvent) => void>;
  350. 'onClick:prependInner': PropType<(args_0: MouseEvent) => void>;
  351. focused: BooleanConstructor;
  352. 'onUpdate:focused': PropType<(args_0: boolean) => void>;
  353. id: StringConstructor;
  354. }, vue.ExtractPropTypes<{
  355. theme: StringConstructor;
  356. rounded: {
  357. type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
  358. default: undefined;
  359. };
  360. tile: BooleanConstructor;
  361. loading: (StringConstructor | BooleanConstructor)[];
  362. class: PropType<ClassValue>;
  363. style: {
  364. type: PropType<vue.StyleValue>;
  365. default: null;
  366. };
  367. appendInnerIcon: PropType<IconValue>;
  368. bgColor: StringConstructor;
  369. clearable: BooleanConstructor;
  370. clearIcon: {
  371. type: PropType<IconValue>;
  372. default: string;
  373. };
  374. active: BooleanConstructor;
  375. centerAffix: {
  376. type: BooleanConstructor;
  377. default: undefined;
  378. };
  379. color: StringConstructor;
  380. baseColor: StringConstructor;
  381. dirty: BooleanConstructor;
  382. disabled: {
  383. type: BooleanConstructor;
  384. default: null;
  385. };
  386. error: BooleanConstructor;
  387. flat: BooleanConstructor;
  388. label: StringConstructor;
  389. persistentClear: BooleanConstructor;
  390. prependInnerIcon: PropType<IconValue>;
  391. reverse: BooleanConstructor;
  392. singleLine: BooleanConstructor;
  393. variant: {
  394. type: PropType<Variant>;
  395. default: string;
  396. validator: (v: any) => boolean;
  397. };
  398. 'onClick:clear': PropType<(args_0: MouseEvent) => void>;
  399. 'onClick:appendInner': PropType<(args_0: MouseEvent) => void>;
  400. 'onClick:prependInner': PropType<(args_0: MouseEvent) => void>;
  401. focused: BooleanConstructor;
  402. 'onUpdate:focused': PropType<(args_0: boolean) => void>;
  403. id: StringConstructor;
  404. }>>;
  405. type VField = InstanceType<typeof VField>;
  406. declare const VFieldLabel: {
  407. new (...args: any[]): vue.CreateComponentPublicInstance<{
  408. style: vue.StyleValue;
  409. floating: boolean;
  410. } & {
  411. class?: any;
  412. } & {
  413. $children?: vue.VNodeChild | {
  414. default?: (() => vue.VNodeChild) | undefined;
  415. } | (() => vue.VNodeChild);
  416. 'v-slots'?: {
  417. default?: false | (() => vue.VNodeChild) | undefined;
  418. } | undefined;
  419. } & {
  420. "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
  421. }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
  422. style: vue.StyleValue;
  423. floating: boolean;
  424. } & {
  425. class?: any;
  426. } & {
  427. $children?: vue.VNodeChild | {
  428. default?: (() => vue.VNodeChild) | undefined;
  429. } | (() => vue.VNodeChild);
  430. 'v-slots'?: {
  431. default?: false | (() => vue.VNodeChild) | undefined;
  432. } | undefined;
  433. } & {
  434. "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
  435. }, {
  436. style: vue.StyleValue;
  437. floating: boolean;
  438. }, true, {}, vue.SlotsType<Partial<{
  439. default: () => vue.VNode[];
  440. }>>, {
  441. P: {};
  442. B: {};
  443. D: {};
  444. C: {};
  445. M: {};
  446. Defaults: {};
  447. }, {
  448. style: vue.StyleValue;
  449. floating: boolean;
  450. } & {
  451. class?: any;
  452. } & {
  453. $children?: vue.VNodeChild | {
  454. default?: (() => vue.VNodeChild) | undefined;
  455. } | (() => vue.VNodeChild);
  456. 'v-slots'?: {
  457. default?: false | (() => vue.VNodeChild) | undefined;
  458. } | undefined;
  459. } & {
  460. "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
  461. }, {}, {}, {}, {}, {
  462. style: vue.StyleValue;
  463. floating: boolean;
  464. }>;
  465. __isFragment?: never;
  466. __isTeleport?: never;
  467. __isSuspense?: never;
  468. } & vue.ComponentOptionsBase<{
  469. style: vue.StyleValue;
  470. floating: boolean;
  471. } & {
  472. class?: any;
  473. } & {
  474. $children?: vue.VNodeChild | {
  475. default?: (() => vue.VNodeChild) | undefined;
  476. } | (() => vue.VNodeChild);
  477. 'v-slots'?: {
  478. default?: false | (() => vue.VNodeChild) | undefined;
  479. } | undefined;
  480. } & {
  481. "v-slot:default"?: false | (() => vue.VNodeChild) | undefined;
  482. }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
  483. style: vue.StyleValue;
  484. floating: boolean;
  485. }, {}, string, vue.SlotsType<Partial<{
  486. default: () => vue.VNode[];
  487. }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
  488. class: vue.PropType<ClassValue>;
  489. style: {
  490. type: vue.PropType<vue.StyleValue>;
  491. default: null;
  492. };
  493. floating: BooleanConstructor;
  494. }, vue.ExtractPropTypes<{
  495. class: vue.PropType<ClassValue>;
  496. style: {
  497. type: vue.PropType<vue.StyleValue>;
  498. default: null;
  499. };
  500. floating: BooleanConstructor;
  501. }>>;
  502. type VFieldLabel = InstanceType<typeof VFieldLabel>;
  503. export { VField, VFieldLabel };