directix 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -13,6 +13,73 @@ export declare function addCleanupVue2(el: Element, fn: () => void): void;
13
13
  */
14
14
  export declare function addCleanupVue3(el: Element, fn: () => void): void;
15
15
 
16
+ /**
17
+ * Directive binding value type
18
+ */
19
+ export declare type CapitalcaseBinding = boolean | CapitalcaseOptions;
20
+
21
+ /**
22
+ * Capitalcase directive options
23
+ */
24
+ export declare interface CapitalcaseOptions {
25
+ /**
26
+ * Whether to capitalize each word or just the first word
27
+ * @default true
28
+ */
29
+ every?: boolean;
30
+ /**
31
+ * Words to keep lowercase (articles, prepositions, etc.)
32
+ * @default ['a', 'an', 'the', 'and', 'but', 'or', 'for', 'nor', 'on', 'at', 'to', 'from', 'by']
33
+ */
34
+ keepLower?: string[];
35
+ /**
36
+ * Whether to transform on input (for input elements)
37
+ * @default true
38
+ */
39
+ onInput?: boolean;
40
+ }
41
+
42
+ /**
43
+ * Directive binding value type
44
+ */
45
+ export declare type ClickDelayBinding = ClickDelayHandler | ClickDelayOptions;
46
+
47
+ /**
48
+ * Click delay handler
49
+ */
50
+ export declare type ClickDelayHandler = (event: MouseEvent | TouchEvent) => void;
51
+
52
+ /**
53
+ * Click delay directive options
54
+ */
55
+ export declare interface ClickDelayOptions {
56
+ /**
57
+ * Click handler
58
+ * @required
59
+ */
60
+ handler: ClickDelayHandler;
61
+ /**
62
+ * Delay time in milliseconds
63
+ * @default 300
64
+ */
65
+ delay?: number;
66
+ /**
67
+ * Whether to disable
68
+ * @default false
69
+ */
70
+ disabled?: boolean;
71
+ /**
72
+ * CSS class to add during delay
73
+ * @default 'v-click-delay--pending'
74
+ */
75
+ pendingClass?: string;
76
+ /**
77
+ * Whether to show visual feedback
78
+ * @default true
79
+ */
80
+ feedback?: boolean;
81
+ }
82
+
16
83
  /**
17
84
  * Directive binding value type
18
85
  */
@@ -111,6 +178,91 @@ export declare interface CopyOptions {
111
178
  */
112
179
  export declare type CopySuccessCallback = (text: string) => void;
113
180
 
181
+ /**
182
+ * Directive binding value type
183
+ */
184
+ export declare type CountdownBinding = CountdownOptions | Date | number | string;
185
+
186
+ /**
187
+ * Countdown complete callback
188
+ */
189
+ export declare type CountdownCompleteCallback = () => void;
190
+
191
+ /**
192
+ * Countdown format function
193
+ */
194
+ export declare type CountdownFormatFunction = (time: CountdownTime) => string;
195
+
196
+ /**
197
+ * Countdown directive options
198
+ */
199
+ export declare interface CountdownOptions {
200
+ /**
201
+ * Target time (Date object, timestamp, or ISO string)
202
+ * @required
203
+ */
204
+ target: Date | number | string;
205
+ /**
206
+ * Format string or custom format function
207
+ * - 'dd:hh:mm:ss' - Days:Hours:Minutes:Seconds
208
+ * - 'hh:mm:ss' - Hours:Minutes:Seconds
209
+ * - 'mm:ss' - Minutes:Seconds
210
+ * - 'ss' - Seconds only
211
+ * @default 'hh:mm:ss'
212
+ */
213
+ format?: string | CountdownFormatFunction;
214
+ /**
215
+ * Callback when countdown completes
216
+ */
217
+ onComplete?: CountdownCompleteCallback;
218
+ /**
219
+ * Callback on each tick
220
+ */
221
+ onTick?: CountdownTickCallback;
222
+ /**
223
+ * Update interval in milliseconds
224
+ * @default 1000
225
+ */
226
+ interval?: number;
227
+ /**
228
+ * Whether to show milliseconds
229
+ * @default false
230
+ */
231
+ showMilliseconds?: boolean;
232
+ /**
233
+ * Whether to auto-start
234
+ * @default true
235
+ */
236
+ autoStart?: boolean;
237
+ /**
238
+ * Custom labels for i18n
239
+ */
240
+ labels?: {
241
+ days?: string;
242
+ hours?: string;
243
+ minutes?: string;
244
+ seconds?: string;
245
+ milliseconds?: string;
246
+ };
247
+ }
248
+
249
+ /**
250
+ * Countdown tick callback
251
+ */
252
+ export declare type CountdownTickCallback = (time: CountdownTime) => void;
253
+
254
+ /**
255
+ * Countdown time object
256
+ */
257
+ export declare interface CountdownTime {
258
+ days: number;
259
+ hours: number;
260
+ minutes: number;
261
+ seconds: number;
262
+ milliseconds: number;
263
+ total: number;
264
+ }
265
+
114
266
  /**
115
267
  * Vue 2 directive adapter
116
268
  * @returns Vue 2 directive object with bind/inserted/update/unbind hooks
@@ -280,6 +432,104 @@ export declare interface DirectiveInstallOptions {
280
432
  */
281
433
  export declare const Directix: Plugin_2;
282
434
 
435
+ /**
436
+ * Draggable axis
437
+ */
438
+ export declare type DraggableAxis = 'x' | 'y' | 'both';
439
+
440
+ /**
441
+ * Directive binding value type
442
+ */
443
+ export declare type DraggableBinding = boolean | DraggableOptions;
444
+
445
+ /**
446
+ * Draggable directive options
447
+ */
448
+ export declare interface DraggableOptions {
449
+ /**
450
+ * Drag axis
451
+ * @default 'both'
452
+ */
453
+ axis?: DraggableAxis;
454
+ /**
455
+ * Constrain to parent element
456
+ * @default false
457
+ */
458
+ constrain?: boolean;
459
+ /**
460
+ * Boundary element selector or element
461
+ */
462
+ boundary?: string | HTMLElement | (() => HTMLElement | null);
463
+ /**
464
+ * Handle element selector
465
+ */
466
+ handle?: string;
467
+ /**
468
+ * Whether dragging is disabled
469
+ * @default false
470
+ */
471
+ disabled?: boolean;
472
+ /**
473
+ * Grid snapping [x, y]
474
+ */
475
+ grid?: [number, number];
476
+ /**
477
+ * Start drag callback
478
+ */
479
+ onStart?: (position: {
480
+ x: number;
481
+ y: number;
482
+ }, event: MouseEvent | TouchEvent) => void;
483
+ /**
484
+ * Drag callback
485
+ */
486
+ onDrag?: (position: {
487
+ x: number;
488
+ y: number;
489
+ }, event: MouseEvent | TouchEvent) => void;
490
+ /**
491
+ * End drag callback
492
+ */
493
+ onEnd?: (position: {
494
+ x: number;
495
+ y: number;
496
+ }, event: MouseEvent | TouchEvent) => void;
497
+ }
498
+
499
+ /**
500
+ * Directive binding value type
501
+ */
502
+ export declare type EllipsisBinding = number | EllipsisOptions;
503
+
504
+ /**
505
+ * Ellipsis directive options
506
+ */
507
+ export declare interface EllipsisOptions {
508
+ /**
509
+ * Number of lines to show before truncating
510
+ * @default 1
511
+ */
512
+ lines?: number;
513
+ /**
514
+ * Custom ellipsis string
515
+ * @default '...'
516
+ */
517
+ ellipsis?: string;
518
+ /**
519
+ * Whether to expand on click
520
+ * @default false
521
+ */
522
+ expandable?: boolean;
523
+ /**
524
+ * Title attribute behavior
525
+ * - 'auto': Show full text as title only when truncated
526
+ * - 'always': Always show full text as title
527
+ * - 'none': Don't show title
528
+ * @default 'auto'
529
+ */
530
+ titleBehavior?: 'auto' | 'always' | 'none';
531
+ }
532
+
283
533
  /**
284
534
  * Directive binding value type
285
535
  */
@@ -330,6 +580,20 @@ export declare function getPermissionConfig(): PermissionConfig | null;
330
580
  */
331
581
  export declare function getVueVersion(): VueVersion;
332
582
 
583
+ export declare type HotkeyBinding = HotkeyHandler | HotkeyDefinition | HotkeyDefinition[] | Record<string, HotkeyHandler | HotkeyDefinition>;
584
+
585
+ export declare interface HotkeyDefinition {
586
+ key: string;
587
+ modifiers?: ModifierKey[];
588
+ handler: HotkeyHandler;
589
+ prevent?: boolean;
590
+ stop?: boolean;
591
+ disabled?: boolean;
592
+ global?: boolean;
593
+ }
594
+
595
+ export declare type HotkeyHandler = (event: KeyboardEvent) => void;
596
+
333
597
  /**
334
598
  * Directive binding value type
335
599
  */
@@ -378,6 +642,48 @@ export declare interface HoverOptions {
378
642
  leaveDelay?: number;
379
643
  }
380
644
 
645
+ export declare type ImagePreviewBinding = string | ImagePreviewOptions;
646
+
647
+ /**
648
+ * Image preview options
649
+ */
650
+ export declare interface ImagePreviewOptions {
651
+ /** Image source URL */
652
+ src?: string;
653
+ /** Preview image source URL (higher resolution) */
654
+ previewSrc?: string;
655
+ /** Alt text for accessibility */
656
+ alt?: string;
657
+ /** Whether preview is disabled @default false */
658
+ disabled?: boolean;
659
+ /** Close on click outside @default true */
660
+ closeOnClickOutside?: boolean;
661
+ /** Close on escape key @default true */
662
+ closeOnEsc?: boolean;
663
+ /** Show close button @default true */
664
+ showCloseButton?: boolean;
665
+ /** Z-index of the preview overlay @default 9999 */
666
+ zIndex?: number;
667
+ /** Custom class for the preview overlay */
668
+ class?: string;
669
+ /** Enable pinch zoom on mobile @default true */
670
+ enablePinchZoom?: boolean;
671
+ /** Enable double tap to zoom @default true */
672
+ enableDoubleTap?: boolean;
673
+ /** Enable swipe up to close @default true */
674
+ enableSwipeClose?: boolean;
675
+ /** Show zoom indicator @default true */
676
+ showZoomIndicator?: boolean;
677
+ /** Minimum zoom scale @default 0.5 */
678
+ minScale?: number;
679
+ /** Maximum zoom scale @default 5 */
680
+ maxScale?: number;
681
+ /** Callback when preview opens */
682
+ onOpen?: () => void;
683
+ /** Callback when preview closes */
684
+ onClose?: () => void;
685
+ }
686
+
381
687
  /**
382
688
  * Directive binding value type
383
689
  */
@@ -539,6 +845,11 @@ export declare function isVue27(): boolean;
539
845
  */
540
846
  export declare function isVue3(): boolean;
541
847
 
848
+ /**
849
+ * Virtual list item size function
850
+ */
851
+ export declare type ItemSizeFunction = (index: number) => number;
852
+
542
853
  /**
543
854
  * Directive binding value type
544
855
  */
@@ -715,6 +1026,27 @@ export declare interface LongPressOptions {
715
1026
  stop?: boolean;
716
1027
  }
717
1028
 
1029
+ /**
1030
+ * Directive binding value type
1031
+ */
1032
+ export declare type LowercaseBinding = boolean | LowercaseOptions;
1033
+
1034
+ /**
1035
+ * Lowercase directive options
1036
+ */
1037
+ export declare interface LowercaseOptions {
1038
+ /**
1039
+ * Transform only the first character
1040
+ * @default false
1041
+ */
1042
+ first?: boolean;
1043
+ /**
1044
+ * Transform on input event (for input elements)
1045
+ * @default true
1046
+ */
1047
+ onInput?: boolean;
1048
+ }
1049
+
718
1050
  export declare type MaskBinding = string | MaskOptions;
719
1051
 
720
1052
  /**
@@ -739,6 +1071,20 @@ export declare interface MaskOptions {
739
1071
  onComplete?: (value: string) => void;
740
1072
  }
741
1073
 
1074
+ export declare type ModifierKey = 'ctrl' | 'alt' | 'shift' | 'meta';
1075
+
1076
+ export declare type MoneyBinding = string | MoneyOptions;
1077
+
1078
+ /**
1079
+ * Money directive options
1080
+ */
1081
+ export declare interface MoneyOptions extends NumberFormatOptions {
1082
+ /** Currency symbol @default '$' */
1083
+ symbol?: string;
1084
+ /** Symbol position @default 'before' */
1085
+ symbolPosition?: 'before' | 'after';
1086
+ }
1087
+
742
1088
  /**
743
1089
  * Directive binding value type
744
1090
  */
@@ -799,6 +1145,39 @@ export declare interface MutationOptions {
799
1145
  disabled?: boolean;
800
1146
  }
801
1147
 
1148
+ export declare type NumberBinding = number | NumberOptions;
1149
+
1150
+ /**
1151
+ * Shared utilities for number and money formatting directives
1152
+ */
1153
+ /**
1154
+ * Base options shared by number and money formatting
1155
+ */
1156
+ declare interface NumberFormatOptions {
1157
+ /** Number of decimal places */
1158
+ precision?: number;
1159
+ /** Thousands separator */
1160
+ separator?: string;
1161
+ /** Decimal separator */
1162
+ decimal?: string;
1163
+ /** Whether to allow negative numbers @default true */
1164
+ allowNegative?: boolean;
1165
+ /** Minimum value */
1166
+ min?: number;
1167
+ /** Maximum value */
1168
+ max?: number;
1169
+ }
1170
+
1171
+ /**
1172
+ * Number directive options
1173
+ */
1174
+ export declare interface NumberOptions extends NumberFormatOptions {
1175
+ /** Prefix string (e.g., '$') */
1176
+ prefix?: string;
1177
+ /** Suffix string (e.g., '%') */
1178
+ suffix?: string;
1179
+ }
1180
+
802
1181
  /**
803
1182
  * Parse time argument
804
1183
  * Supports formats: "300" | "300ms" | "1s"
@@ -848,6 +1227,91 @@ export declare interface PermissionOptions {
848
1227
  onChange?: (hasPermission: boolean) => void;
849
1228
  }
850
1229
 
1230
+ /**
1231
+ * Print before callback
1232
+ */
1233
+ export declare type PrintBeforeCallback = () => boolean | void;
1234
+
1235
+ /**
1236
+ * Directive binding value type
1237
+ */
1238
+ export declare type PrintBinding = PrintOptions | boolean;
1239
+
1240
+ /**
1241
+ * Print complete callback
1242
+ */
1243
+ export declare type PrintCompleteCallback = () => void;
1244
+
1245
+ /**
1246
+ * Print directive options
1247
+ */
1248
+ export declare interface PrintOptions {
1249
+ /**
1250
+ * Title for the printed document
1251
+ */
1252
+ title?: string;
1253
+ /**
1254
+ * Additional CSS styles to inject
1255
+ */
1256
+ styles?: string | string[];
1257
+ /**
1258
+ * Additional CSS URLs to include
1259
+ */
1260
+ cssUrls?: string[];
1261
+ /**
1262
+ * Callback before printing
1263
+ * Return false to cancel printing
1264
+ */
1265
+ onBeforePrint?: PrintBeforeCallback;
1266
+ /**
1267
+ * Callback after printing
1268
+ */
1269
+ onAfterPrint?: PrintCompleteCallback;
1270
+ /**
1271
+ * Whether to print immediately on mount
1272
+ * @default false
1273
+ */
1274
+ immediate?: boolean;
1275
+ /**
1276
+ * Print target selector
1277
+ * If not specified, prints the element itself
1278
+ */
1279
+ target?: string;
1280
+ /**
1281
+ * Whether to print in a new window
1282
+ * @default false
1283
+ */
1284
+ newWindow?: boolean;
1285
+ /**
1286
+ * Custom class for print container
1287
+ */
1288
+ printClass?: string;
1289
+ }
1290
+
1291
+ export declare type PullRefreshBinding = PullRefreshHandler | PullRefreshOptions;
1292
+
1293
+ export declare type PullRefreshHandler = () => Promise<void> | void;
1294
+
1295
+ export declare interface PullRefreshOptions {
1296
+ handler: PullRefreshHandler;
1297
+ distance?: number;
1298
+ maxDistance?: number;
1299
+ disabled?: boolean;
1300
+ indicator?: {
1301
+ idle?: string;
1302
+ pulling?: string;
1303
+ ready?: string;
1304
+ loading?: string;
1305
+ success?: string;
1306
+ error?: string;
1307
+ };
1308
+ successDuration?: number;
1309
+ errorDuration?: number;
1310
+ onStateChange?: (state: PullRefreshState) => void;
1311
+ }
1312
+
1313
+ export declare type PullRefreshState = 'idle' | 'pulling' | 'ready' | 'loading' | 'success' | 'error';
1314
+
851
1315
  /**
852
1316
  * Reset Vue version (useful for testing)
853
1317
  */
@@ -1132,6 +1596,31 @@ export declare const supportsPassive: () => boolean;
1132
1596
  */
1133
1597
  export declare const supportsResizeObserver: () => boolean;
1134
1598
 
1599
+ export declare type SwipeBinding = SwipeHandler | SwipeOptions;
1600
+
1601
+ export declare type SwipeDirection = 'left' | 'right' | 'up' | 'down';
1602
+
1603
+ /**
1604
+ * Swipe direction
1605
+ */
1606
+ declare type SwipeDirection_2 = 'left' | 'right' | 'up' | 'down';
1607
+
1608
+ export declare type SwipeHandler = (direction: SwipeDirection, event: Event) => void;
1609
+
1610
+ export declare interface SwipeOptions {
1611
+ handler?: SwipeHandler;
1612
+ threshold?: number;
1613
+ maxTime?: number;
1614
+ directions?: SwipeDirection[];
1615
+ preventScrollOnSwipe?: boolean;
1616
+ disabled?: boolean;
1617
+ mouse?: boolean;
1618
+ onLeft?: () => void;
1619
+ onRight?: () => void;
1620
+ onUp?: () => void;
1621
+ onDown?: () => void;
1622
+ }
1623
+
1135
1624
  /**
1136
1625
  * Directive binding value type
1137
1626
  */
@@ -1180,24 +1669,254 @@ export declare interface ThrottleOptions<T extends (...args: any[]) => any = any
1180
1669
  trailing?: boolean;
1181
1670
  }
1182
1671
 
1672
+ export declare type TooltipBinding = string | TooltipOptions;
1673
+
1674
+ /**
1675
+ * Tooltip directive options
1676
+ */
1677
+ export declare interface TooltipOptions {
1678
+ /** Tooltip content */
1679
+ content: string;
1680
+ /** Tooltip placement @default 'top' */
1681
+ placement?: TooltipPlacement;
1682
+ /** Trigger type @default 'hover' */
1683
+ trigger?: TooltipTrigger;
1684
+ /** Show delay in milliseconds @default 0 */
1685
+ delay?: number;
1686
+ /** Hide delay in milliseconds @default 0 */
1687
+ hideDelay?: number;
1688
+ /** Offset from the element in pixels @default 8 */
1689
+ offset?: number;
1690
+ /** Custom class for the tooltip */
1691
+ class?: string;
1692
+ /** Whether to show arrow @default true */
1693
+ arrow?: boolean;
1694
+ /** Whether the tooltip is disabled @default false */
1695
+ disabled?: boolean;
1696
+ /** Maximum width of the tooltip */
1697
+ maxWidth?: number | string;
1698
+ /** Z-index of the tooltip @default 9999 */
1699
+ zIndex?: number;
1700
+ /** Callback when tooltip is shown */
1701
+ onShow?: () => void;
1702
+ /** Callback when tooltip is hidden */
1703
+ onHide?: () => void;
1704
+ }
1705
+
1183
1706
  /**
1184
- * v-click-outside directive
1185
- *
1186
- * @example
1187
- * ```vue
1188
- * <template>
1189
- * <div v-click-outside="handleClickOutside">
1190
- * Dropdown menu
1191
- * </div>
1192
- * </template>
1193
- * ```
1194
- */
1195
- declare const vClickOutside: Directive;
1196
- export { vClickOutside as clickOutside }
1197
- export { vClickOutside }
1707
+ * Tooltip placement
1708
+ */
1709
+ export declare type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
1710
+
1711
+ /**
1712
+ * Tooltip trigger
1713
+ */
1714
+ export declare type TooltipTrigger = 'hover' | 'click' | 'focus' | 'manual';
1715
+
1716
+ /**
1717
+ * Touch gesture options
1718
+ */
1719
+ export declare interface TouchOptions {
1720
+ /** Minimum swipe distance in pixels @default 30 */
1721
+ swipeThreshold?: number;
1722
+ /** Maximum time for a swipe in milliseconds @default 500 */
1723
+ swipeTimeout?: number;
1724
+ /** Minimum pinch scale change @default 0.1 */
1725
+ pinchThreshold?: number;
1726
+ /** Enable swipe detection @default true */
1727
+ enableSwipe?: boolean;
1728
+ /** Enable pinch detection @default true */
1729
+ enablePinch?: boolean;
1730
+ /** Enable rotate detection @default true */
1731
+ enableRotate?: boolean;
1732
+ /** Enable tap detection @default true */
1733
+ enableTap?: boolean;
1734
+ /** Maximum time for a tap in milliseconds @default 250 */
1735
+ tapTimeout?: number;
1736
+ /** Maximum movement for a tap in pixels @default 10 */
1737
+ tapThreshold?: number;
1738
+ /** Enable long press detection @default true */
1739
+ enableLongPress?: boolean;
1740
+ /** Long press timeout in milliseconds @default 500 */
1741
+ longPressTimeout?: number;
1742
+ /** Enable mouse event simulation for desktop @default true */
1743
+ enableMouse?: boolean;
1744
+ onSwipe?: (direction: SwipeDirection_2, event: TouchEvent | MouseEvent) => void;
1745
+ onSwipeLeft?: (event: TouchEvent | MouseEvent) => void;
1746
+ onSwipeRight?: (event: TouchEvent | MouseEvent) => void;
1747
+ onSwipeUp?: (event: TouchEvent | MouseEvent) => void;
1748
+ onSwipeDown?: (event: TouchEvent | MouseEvent) => void;
1749
+ onPinch?: (scale: number, event: TouchEvent) => void;
1750
+ onRotate?: (angle: number, event: TouchEvent) => void;
1751
+ onTap?: (event: TouchEvent | MouseEvent) => void;
1752
+ onLongPress?: (event: TouchEvent | MouseEvent) => void;
1753
+ onTouchStart?: (event: TouchEvent | MouseEvent) => void;
1754
+ onTouchMove?: (event: TouchEvent | MouseEvent) => void;
1755
+ onTouchEnd?: (event: TouchEvent | MouseEvent) => void;
1756
+ }
1198
1757
 
1199
1758
  /**
1200
- * v-copy directive
1759
+ * Directive binding value type
1760
+ */
1761
+ export declare type TrimBinding = boolean | TrimPosition | TrimOptions;
1762
+
1763
+ /**
1764
+ * Trim directive options
1765
+ */
1766
+ export declare interface TrimOptions {
1767
+ /**
1768
+ * Trim position
1769
+ * @default 'both'
1770
+ */
1771
+ position?: TrimPosition;
1772
+ /**
1773
+ * Whether to trim on input (for input elements)
1774
+ * @default true
1775
+ */
1776
+ onInput?: boolean;
1777
+ /**
1778
+ * Whether to trim on blur
1779
+ * @default true
1780
+ */
1781
+ onBlur?: boolean;
1782
+ /**
1783
+ * Custom characters to trim (in addition to whitespace)
1784
+ */
1785
+ chars?: string;
1786
+ }
1787
+
1788
+ /**
1789
+ * Trim position
1790
+ */
1791
+ export declare type TrimPosition = 'start' | 'end' | 'both';
1792
+
1793
+ /**
1794
+ * Directive binding value type
1795
+ */
1796
+ export declare type TruncateBinding = number | TruncateOptions;
1797
+
1798
+ /**
1799
+ * Truncate directive options
1800
+ */
1801
+ export declare interface TruncateOptions {
1802
+ /**
1803
+ * Maximum length of text
1804
+ * @default 100
1805
+ */
1806
+ length?: number;
1807
+ /**
1808
+ * Truncation position
1809
+ * @default 'end'
1810
+ */
1811
+ position?: TruncatePosition;
1812
+ /**
1813
+ * Ellipsis string
1814
+ * @default '...'
1815
+ */
1816
+ ellipsis?: string;
1817
+ /**
1818
+ * Whether to use CSS truncation (use text-overflow: ellipsis)
1819
+ * When true, length and position options are ignored
1820
+ * @default false
1821
+ */
1822
+ useCss?: boolean;
1823
+ /**
1824
+ * Show full text on hover (as title attribute)
1825
+ * @default true
1826
+ */
1827
+ showTitle?: boolean;
1828
+ }
1829
+
1830
+ /**
1831
+ * Truncate position
1832
+ */
1833
+ export declare type TruncatePosition = 'start' | 'middle' | 'end';
1834
+
1835
+ /**
1836
+ * Directive binding value type
1837
+ */
1838
+ export declare type UppercaseBinding = boolean | UppercaseOptions;
1839
+
1840
+ /**
1841
+ * Uppercase directive options
1842
+ */
1843
+ export declare interface UppercaseOptions {
1844
+ /**
1845
+ * Transform only the first character
1846
+ * @default false
1847
+ */
1848
+ first?: boolean;
1849
+ /**
1850
+ * Transform on input event (for input elements)
1851
+ * @default true
1852
+ */
1853
+ onInput?: boolean;
1854
+ }
1855
+
1856
+ /**
1857
+ * v-capitalcase directive
1858
+ *
1859
+ * @example
1860
+ * ```vue
1861
+ * <template>
1862
+ * <!-- Simple usage: capitalize each word -->
1863
+ * <input v-capitalcase v-model="title" />
1864
+ *
1865
+ * <!-- Capitalize only first word -->
1866
+ * <span v-capitalcase="{ every: false }">{{ text }}</span>
1867
+ *
1868
+ * <!-- With custom lowercase words -->
1869
+ * <input v-capitalcase="{ keepLower: ['a', 'the'] }" v-model="title" />
1870
+ * </template>
1871
+ * ```
1872
+ */
1873
+ declare const vCapitalcase: Directive;
1874
+ export { vCapitalcase as capitalcase }
1875
+ export { vCapitalcase }
1876
+
1877
+ /**
1878
+ * v-click-delay directive
1879
+ *
1880
+ * Prevents repeated clicks within a specified time period.
1881
+ *
1882
+ * @example
1883
+ * ```vue
1884
+ * <template>
1885
+ * <!-- Basic usage -->
1886
+ * <button v-click-delay="handleClick">Click Me</button>
1887
+ *
1888
+ * <!-- With delay time -->
1889
+ * <button v-click-delay:500="handleClick">Click Me (500ms)</button>
1890
+ *
1891
+ * <!-- With options -->
1892
+ * <button v-click-delay="{ handler: handleClick, delay: 1000 }">
1893
+ * Click Me (1s)
1894
+ * </button>
1895
+ * </template>
1896
+ * ```
1897
+ */
1898
+ declare const vClickDelay: Directive;
1899
+ export { vClickDelay as clickDelay }
1900
+ export { vClickDelay }
1901
+
1902
+ /**
1903
+ * v-click-outside directive
1904
+ *
1905
+ * @example
1906
+ * ```vue
1907
+ * <template>
1908
+ * <div v-click-outside="handleClickOutside">
1909
+ * Dropdown menu
1910
+ * </div>
1911
+ * </template>
1912
+ * ```
1913
+ */
1914
+ declare const vClickOutside: Directive;
1915
+ export { vClickOutside as clickOutside }
1916
+ export { vClickOutside }
1917
+
1918
+ /**
1919
+ * v-copy directive
1201
1920
  *
1202
1921
  * @example
1203
1922
  * ```vue
@@ -1210,6 +1929,39 @@ declare const vCopy: Directive;
1210
1929
  export { vCopy as copy }
1211
1930
  export { vCopy }
1212
1931
 
1932
+ /**
1933
+ * v-countdown directive
1934
+ *
1935
+ * Displays a countdown timer.
1936
+ *
1937
+ * @example
1938
+ * ```vue
1939
+ * <template>
1940
+ * <!-- Basic usage -->
1941
+ * <span v-countdown="targetDate"></span>
1942
+ *
1943
+ * <!-- With timestamp -->
1944
+ * <span v-countdown="Date.now() + 60000"></span>
1945
+ *
1946
+ * <!-- With options -->
1947
+ * <span v-countdown="{
1948
+ * target: targetDate,
1949
+ * format: 'dd:hh:mm:ss',
1950
+ * onComplete: handleComplete
1951
+ * }"></span>
1952
+ *
1953
+ * <!-- With custom format function -->
1954
+ * <span v-countdown="{
1955
+ * target: targetDate,
1956
+ * format: (time) => `${time.days} days ${time.hours}:${time.minutes}:${time.seconds}`
1957
+ * }"></span>
1958
+ * </template>
1959
+ * ```
1960
+ */
1961
+ declare const vCountdown: Directive;
1962
+ export { vCountdown as countdown }
1963
+ export { vCountdown }
1964
+
1213
1965
  /**
1214
1966
  * v-debounce directive
1215
1967
  *
@@ -1228,6 +1980,58 @@ declare const vDebounce: Directive;
1228
1980
  export { vDebounce as debounce }
1229
1981
  export { vDebounce }
1230
1982
 
1983
+ /**
1984
+ * v-draggable directive
1985
+ *
1986
+ * @example
1987
+ * ```vue
1988
+ * <template>
1989
+ * <!-- Simple usage -->
1990
+ * <div v-draggable>Drag me</div>
1991
+ *
1992
+ * <!-- Constrain to parent -->
1993
+ * <div v-draggable="{ constrain: true }">Drag me</div>
1994
+ *
1995
+ * <!-- With handle -->
1996
+ * <div v-draggable="{ handle: '.drag-handle' }">
1997
+ * <div class="drag-handle">Drag here</div>
1998
+ * <div>Content</div>
1999
+ * </div>
2000
+ *
2001
+ * <!-- With callbacks -->
2002
+ * <div v-draggable="{ onDrag: handleDrag }">Drag me</div>
2003
+ * </template>
2004
+ * ```
2005
+ */
2006
+ declare const vDraggable: Directive;
2007
+ export { vDraggable as draggable }
2008
+ export { vDraggable }
2009
+
2010
+ /**
2011
+ * v-ellipsis directive
2012
+ *
2013
+ * Truncates text with ellipsis, supports single and multi-line truncation.
2014
+ *
2015
+ * @example
2016
+ * ```vue
2017
+ * <template>
2018
+ * <!-- Single line ellipsis -->
2019
+ * <p v-ellipsis>Long text here...</p>
2020
+ *
2021
+ * <!-- Multi-line ellipsis (3 lines) -->
2022
+ * <p v-ellipsis="3">Long text here...</p>
2023
+ *
2024
+ * <!-- With options -->
2025
+ * <p v-ellipsis="{ lines: 2, expandable: true }">
2026
+ * Click to expand long text...
2027
+ * </p>
2028
+ * </template>
2029
+ * ```
2030
+ */
2031
+ declare const vEllipsis: Directive;
2032
+ export { vEllipsis as ellipsis }
2033
+ export { vEllipsis }
2034
+
1231
2035
  /**
1232
2036
  * v-focus directive
1233
2037
  *
@@ -1243,6 +2047,10 @@ declare const vFocus: Directive;
1243
2047
  export { vFocus as focus }
1244
2048
  export { vFocus }
1245
2049
 
2050
+ declare const vHotkey: Directive;
2051
+ export { vHotkey as hotkey }
2052
+ export { vHotkey }
2053
+
1246
2054
  /**
1247
2055
  * v-hover directive
1248
2056
  *
@@ -1258,6 +2066,27 @@ declare const vHover: Directive;
1258
2066
  export { vHover as hover }
1259
2067
  export { vHover }
1260
2068
 
2069
+ /**
2070
+ * v-image-preview directive
2071
+ *
2072
+ * @example
2073
+ * ```vue
2074
+ * <template>
2075
+ * <!-- Simple usage -->
2076
+ * <img v-image-preview src="thumbnail.jpg" data-preview="full.jpg" />
2077
+ *
2078
+ * <!-- With options -->
2079
+ * <img v-image-preview="{ src: 'thumbnail.jpg', previewSrc: 'full.jpg' }" />
2080
+ *
2081
+ * <!-- On non-img element -->
2082
+ * <div v-image-preview="{ src: 'image.jpg' }">Click to preview</div>
2083
+ * </template>
2084
+ * ```
2085
+ */
2086
+ declare const vImagePreview: Directive;
2087
+ export { vImagePreview as imagePreview }
2088
+ export { vImagePreview }
2089
+
1261
2090
  /**
1262
2091
  * v-infinite-scroll directive
1263
2092
  *
@@ -1292,6 +2121,60 @@ declare const vIntersect: Directive;
1292
2121
  export { vIntersect as intersect }
1293
2122
  export { vIntersect }
1294
2123
 
2124
+ /**
2125
+ * Directive binding value type
2126
+ */
2127
+ export declare type VirtualListBinding<T = any> = VirtualListOptions<T> | T[];
2128
+
2129
+ /**
2130
+ * Virtual list directive options
2131
+ */
2132
+ export declare interface VirtualListOptions<T = any> {
2133
+ /**
2134
+ * Array of items to render
2135
+ * @required
2136
+ */
2137
+ items: T[];
2138
+ /**
2139
+ * Height of each item (in pixels)
2140
+ * Can be a fixed number or a function
2141
+ * @default 50
2142
+ */
2143
+ itemSize?: number | ItemSizeFunction;
2144
+ /**
2145
+ * Height of the container (in pixels)
2146
+ * @default 400
2147
+ */
2148
+ height?: number | string;
2149
+ /**
2150
+ * Number of extra items to render above/below visible area
2151
+ * @default 3
2152
+ */
2153
+ overscan?: number;
2154
+ /**
2155
+ * Custom render function
2156
+ */
2157
+ render?: VirtualListRenderFunction;
2158
+ /**
2159
+ * Key field name for items
2160
+ * @default 'id'
2161
+ */
2162
+ keyField?: string;
2163
+ /**
2164
+ * Callback when scroll position changes
2165
+ */
2166
+ onScroll?: (scrollTop: number) => void;
2167
+ /**
2168
+ * Callback when visible range changes
2169
+ */
2170
+ onVisibleChange?: (startIndex: number, endIndex: number) => void;
2171
+ }
2172
+
2173
+ /**
2174
+ * Virtual list render function
2175
+ */
2176
+ export declare type VirtualListRenderFunction = (item: any, index: number) => string;
2177
+
1295
2178
  /**
1296
2179
  * Directive binding value type
1297
2180
  */
@@ -1374,6 +2257,24 @@ declare const vLongPress: Directive;
1374
2257
  export { vLongPress as longPress }
1375
2258
  export { vLongPress }
1376
2259
 
2260
+ /**
2261
+ * v-lowercase directive
2262
+ *
2263
+ * @example
2264
+ * ```vue
2265
+ * <template>
2266
+ * <!-- Transform all characters to lowercase -->
2267
+ * <input v-lowercase v-model="text" />
2268
+ *
2269
+ * <!-- Transform only first character -->
2270
+ * <span v-lowercase="{ first: true }">{{ text }}</span>
2271
+ * </template>
2272
+ * ```
2273
+ */
2274
+ declare const vLowercase: Directive;
2275
+ export { vLowercase as lowercase }
2276
+ export { vLowercase }
2277
+
1377
2278
  /**
1378
2279
  * v-mask directive
1379
2280
  *
@@ -1388,6 +2289,10 @@ declare const vMask: Directive;
1388
2289
  export { vMask as mask }
1389
2290
  export { vMask }
1390
2291
 
2292
+ declare const vMoney: Directive;
2293
+ export { vMoney as money }
2294
+ export { vMoney }
2295
+
1391
2296
  /**
1392
2297
  * v-mutation directive
1393
2298
  *
@@ -1414,6 +2319,10 @@ declare const vMutation: Directive;
1414
2319
  export { vMutation as mutation }
1415
2320
  export { vMutation }
1416
2321
 
2322
+ declare const vNumber: Directive;
2323
+ export { vNumber as number }
2324
+ export { vNumber }
2325
+
1417
2326
  /**
1418
2327
  * v-permission directive
1419
2328
  *
@@ -1444,6 +2353,38 @@ declare const vPermission: Directive;
1444
2353
  export { vPermission as permission }
1445
2354
  export { vPermission }
1446
2355
 
2356
+ /**
2357
+ * v-print directive
2358
+ *
2359
+ * Prints the element content when clicked or immediately.
2360
+ *
2361
+ * @example
2362
+ * ```vue
2363
+ * <template>
2364
+ * <!-- Print on click -->
2365
+ * <button v-print>Print Page</button>
2366
+ *
2367
+ * <!-- Print specific element -->
2368
+ * <button v-print="{ target: '#content' }">Print Content</button>
2369
+ *
2370
+ * <!-- Print with custom title -->
2371
+ * <button v-print="{ title: 'My Document', styles: 'body { font-size: 12px }' }">
2372
+ * Print
2373
+ * </button>
2374
+ *
2375
+ * <!-- Print immediately on mount -->
2376
+ * <div v-print="{ immediate: true }">Auto print</div>
2377
+ * </template>
2378
+ * ```
2379
+ */
2380
+ declare const vPrint: Directive;
2381
+ export { vPrint as print }
2382
+ export { vPrint }
2383
+
2384
+ declare const vPullRefresh: Directive;
2385
+ export { vPullRefresh as pullRefresh }
2386
+ export { vPullRefresh }
2387
+
1447
2388
  /**
1448
2389
  * v-resize directive
1449
2390
  *
@@ -1520,6 +2461,10 @@ declare const vSticky: Directive;
1520
2461
  export { vSticky as sticky }
1521
2462
  export { vSticky }
1522
2463
 
2464
+ declare const vSwipe: Directive;
2465
+ export { vSwipe as swipe }
2466
+ export { vSwipe }
2467
+
1523
2468
  /**
1524
2469
  * v-throttle directive
1525
2470
  *
@@ -1537,6 +2482,62 @@ declare const vThrottle: Directive;
1537
2482
  export { vThrottle as throttle }
1538
2483
  export { vThrottle }
1539
2484
 
2485
+ declare const vTooltip: Directive;
2486
+ export { vTooltip as tooltip }
2487
+ export { vTooltip }
2488
+
2489
+ declare const vTouch: Directive;
2490
+ export { vTouch as touch }
2491
+ export { vTouch }
2492
+
2493
+ /**
2494
+ * v-trim directive
2495
+ *
2496
+ * @example
2497
+ * ```vue
2498
+ * <template>
2499
+ * <!-- Simple usage: trim both sides -->
2500
+ * <input v-trim v-model="text" />
2501
+ *
2502
+ * <!-- Trim only start -->
2503
+ * <input v-trim="'start'" v-model="text" />
2504
+ *
2505
+ * <!-- Trim only end -->
2506
+ * <input v-trim="'end'" v-model="text" />
2507
+ *
2508
+ * <!-- With options -->
2509
+ * <input v-trim="{ position: 'both', onBlur: true }" v-model="text" />
2510
+ *
2511
+ * <!-- For display only -->
2512
+ * <span v-trim> Text with spaces </span>
2513
+ * </template>
2514
+ * ```
2515
+ */
2516
+ declare const vTrim: Directive;
2517
+ export { vTrim as trim }
2518
+ export { vTrim }
2519
+
2520
+ /**
2521
+ * v-truncate directive
2522
+ *
2523
+ * @example
2524
+ * ```vue
2525
+ * <template>
2526
+ * <!-- Simple usage: truncate to 50 characters -->
2527
+ * <p v-truncate="50">Long text here...</p>
2528
+ *
2529
+ * <!-- With options -->
2530
+ * <p v-truncate="{ length: 100, position: 'middle' }">Long text here...</p>
2531
+ *
2532
+ * <!-- CSS truncation -->
2533
+ * <p v-truncate="{ useCss: true }">Long text here...</p>
2534
+ * </template>
2535
+ * ```
2536
+ */
2537
+ declare const vTruncate: Directive;
2538
+ export { vTruncate as truncate }
2539
+ export { vTruncate }
2540
+
1540
2541
  /**
1541
2542
  * Vue 2 directive hooks
1542
2543
  */
@@ -1569,6 +2570,48 @@ export declare interface Vue3DirectiveHooks {
1569
2570
  */
1570
2571
  export declare type VueVersion = 2 | 2.7 | 3;
1571
2572
 
2573
+ /**
2574
+ * v-uppercase directive
2575
+ *
2576
+ * @example
2577
+ * ```vue
2578
+ * <template>
2579
+ * <!-- Transform all characters to uppercase -->
2580
+ * <input v-uppercase v-model="text" />
2581
+ *
2582
+ * <!-- Transform only first character -->
2583
+ * <span v-uppercase="{ first: true }">{{ text }}</span>
2584
+ * </template>
2585
+ * ```
2586
+ */
2587
+ declare const vUppercase: Directive;
2588
+ export { vUppercase as uppercase }
2589
+ export { vUppercase }
2590
+
2591
+ /**
2592
+ * v-virtual-list directive
2593
+ *
2594
+ * Renders a large list efficiently using virtualization.
2595
+ *
2596
+ * @example
2597
+ * ```vue
2598
+ * <template>
2599
+ * <div v-virtual-list="{ items: largeList, itemSize: 50 }"></div>
2600
+ *
2601
+ * <div v-virtual-list="{
2602
+ * items: largeList,
2603
+ * itemSize: (index) => index % 10 === 0 ? 100 : 50,
2604
+ * height: 600,
2605
+ * overscan: 5,
2606
+ * render: (item, index) => `<div class="item">${item.name}</div>`
2607
+ * }"></div>
2608
+ * </template>
2609
+ * ```
2610
+ */
2611
+ declare const vVirtualList: Directive;
2612
+ export { vVirtualList }
2613
+ export { vVirtualList as virtualList }
2614
+
1572
2615
  /**
1573
2616
  * v-visible directive
1574
2617
  *
@@ -1585,4 +2628,108 @@ declare const vVisible: Directive;
1585
2628
  export { vVisible }
1586
2629
  export { vVisible as visible }
1587
2630
 
2631
+ /**
2632
+ * v-watermark directive
2633
+ *
2634
+ * Adds a watermark layer to an element.
2635
+ *
2636
+ * @example
2637
+ * ```vue
2638
+ * <template>
2639
+ * <!-- Simple watermark -->
2640
+ * <div v-watermark="'Confidential'">Protected content</div>
2641
+ *
2642
+ * <!-- Multi-line watermark -->
2643
+ * <div v-watermark="{ content: ['Company Name', 'User: John'] }">
2644
+ * Protected content
2645
+ * </div>
2646
+ *
2647
+ * <!-- Customized watermark -->
2648
+ * <div v-watermark="{
2649
+ * content: 'DRAFT',
2650
+ * fontSize: 24,
2651
+ * color: 'rgba(255, 0, 0, 0.2)',
2652
+ * rotate: -30,
2653
+ * gap: 50
2654
+ * }">
2655
+ * Draft document
2656
+ * </div>
2657
+ * </template>
2658
+ * ```
2659
+ */
2660
+ declare const vWatermark: Directive;
2661
+ export { vWatermark }
2662
+ export { vWatermark as watermark }
2663
+
2664
+ /**
2665
+ * Directive binding value type
2666
+ */
2667
+ export declare type WatermarkBinding = string | WatermarkOptions;
2668
+
2669
+ /**
2670
+ * Watermark options
2671
+ */
2672
+ export declare interface WatermarkOptions {
2673
+ /**
2674
+ * Watermark text content
2675
+ * @required
2676
+ */
2677
+ content: string | string[];
2678
+ /**
2679
+ * Width of watermark canvas
2680
+ * @default 300
2681
+ */
2682
+ width?: number;
2683
+ /**
2684
+ * Height of watermark canvas
2685
+ * @default 200
2686
+ */
2687
+ height?: number;
2688
+ /**
2689
+ * Rotation angle in degrees
2690
+ * @default -22
2691
+ */
2692
+ rotate?: number;
2693
+ /**
2694
+ * Font size in pixels
2695
+ * @default 16
2696
+ */
2697
+ fontSize?: number;
2698
+ /**
2699
+ * Font family
2700
+ * @default 'sans-serif'
2701
+ */
2702
+ fontFamily?: string;
2703
+ /**
2704
+ * Font weight
2705
+ * @default 'normal'
2706
+ */
2707
+ fontWeight?: string | number;
2708
+ /**
2709
+ * Font color
2710
+ * @default 'rgba(128, 128, 128, 0.15)'
2711
+ */
2712
+ color?: string;
2713
+ /**
2714
+ * Gap between watermarks in pixels
2715
+ * @default [100, 100]
2716
+ */
2717
+ gap?: [number, number] | number;
2718
+ /**
2719
+ * Z-index of watermark layer
2720
+ * @default 9999
2721
+ */
2722
+ zIndex?: number;
2723
+ /**
2724
+ * Whether to disable watermark (for dynamic control)
2725
+ * @default false
2726
+ */
2727
+ disabled?: boolean;
2728
+ /**
2729
+ * Whether to prevent removal attempts
2730
+ * @default true
2731
+ */
2732
+ protect?: boolean;
2733
+ }
2734
+
1588
2735
  export { }