directix 1.1.0 → 1.2.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,32 @@ 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
+
16
42
  /**
17
43
  * Directive binding value type
18
44
  */
@@ -280,6 +306,70 @@ export declare interface DirectiveInstallOptions {
280
306
  */
281
307
  export declare const Directix: Plugin_2;
282
308
 
309
+ /**
310
+ * Draggable axis
311
+ */
312
+ export declare type DraggableAxis = 'x' | 'y' | 'both';
313
+
314
+ /**
315
+ * Directive binding value type
316
+ */
317
+ export declare type DraggableBinding = boolean | DraggableOptions;
318
+
319
+ /**
320
+ * Draggable directive options
321
+ */
322
+ export declare interface DraggableOptions {
323
+ /**
324
+ * Drag axis
325
+ * @default 'both'
326
+ */
327
+ axis?: DraggableAxis;
328
+ /**
329
+ * Constrain to parent element
330
+ * @default false
331
+ */
332
+ constrain?: boolean;
333
+ /**
334
+ * Boundary element selector or element
335
+ */
336
+ boundary?: string | HTMLElement | (() => HTMLElement | null);
337
+ /**
338
+ * Handle element selector
339
+ */
340
+ handle?: string;
341
+ /**
342
+ * Whether dragging is disabled
343
+ * @default false
344
+ */
345
+ disabled?: boolean;
346
+ /**
347
+ * Grid snapping [x, y]
348
+ */
349
+ grid?: [number, number];
350
+ /**
351
+ * Start drag callback
352
+ */
353
+ onStart?: (position: {
354
+ x: number;
355
+ y: number;
356
+ }, event: MouseEvent | TouchEvent) => void;
357
+ /**
358
+ * Drag callback
359
+ */
360
+ onDrag?: (position: {
361
+ x: number;
362
+ y: number;
363
+ }, event: MouseEvent | TouchEvent) => void;
364
+ /**
365
+ * End drag callback
366
+ */
367
+ onEnd?: (position: {
368
+ x: number;
369
+ y: number;
370
+ }, event: MouseEvent | TouchEvent) => void;
371
+ }
372
+
283
373
  /**
284
374
  * Directive binding value type
285
375
  */
@@ -378,6 +468,48 @@ export declare interface HoverOptions {
378
468
  leaveDelay?: number;
379
469
  }
380
470
 
471
+ export declare type ImagePreviewBinding = string | ImagePreviewOptions;
472
+
473
+ /**
474
+ * Image preview options
475
+ */
476
+ export declare interface ImagePreviewOptions {
477
+ /** Image source URL */
478
+ src?: string;
479
+ /** Preview image source URL (higher resolution) */
480
+ previewSrc?: string;
481
+ /** Alt text for accessibility */
482
+ alt?: string;
483
+ /** Whether preview is disabled @default false */
484
+ disabled?: boolean;
485
+ /** Close on click outside @default true */
486
+ closeOnClickOutside?: boolean;
487
+ /** Close on escape key @default true */
488
+ closeOnEsc?: boolean;
489
+ /** Show close button @default true */
490
+ showCloseButton?: boolean;
491
+ /** Z-index of the preview overlay @default 9999 */
492
+ zIndex?: number;
493
+ /** Custom class for the preview overlay */
494
+ class?: string;
495
+ /** Enable pinch zoom on mobile @default true */
496
+ enablePinchZoom?: boolean;
497
+ /** Enable double tap to zoom @default true */
498
+ enableDoubleTap?: boolean;
499
+ /** Enable swipe up to close @default true */
500
+ enableSwipeClose?: boolean;
501
+ /** Show zoom indicator @default true */
502
+ showZoomIndicator?: boolean;
503
+ /** Minimum zoom scale @default 0.5 */
504
+ minScale?: number;
505
+ /** Maximum zoom scale @default 5 */
506
+ maxScale?: number;
507
+ /** Callback when preview opens */
508
+ onOpen?: () => void;
509
+ /** Callback when preview closes */
510
+ onClose?: () => void;
511
+ }
512
+
381
513
  /**
382
514
  * Directive binding value type
383
515
  */
@@ -715,6 +847,27 @@ export declare interface LongPressOptions {
715
847
  stop?: boolean;
716
848
  }
717
849
 
850
+ /**
851
+ * Directive binding value type
852
+ */
853
+ export declare type LowercaseBinding = boolean | LowercaseOptions;
854
+
855
+ /**
856
+ * Lowercase directive options
857
+ */
858
+ export declare interface LowercaseOptions {
859
+ /**
860
+ * Transform only the first character
861
+ * @default false
862
+ */
863
+ first?: boolean;
864
+ /**
865
+ * Transform on input event (for input elements)
866
+ * @default true
867
+ */
868
+ onInput?: boolean;
869
+ }
870
+
718
871
  export declare type MaskBinding = string | MaskOptions;
719
872
 
720
873
  /**
@@ -739,6 +892,18 @@ export declare interface MaskOptions {
739
892
  onComplete?: (value: string) => void;
740
893
  }
741
894
 
895
+ export declare type MoneyBinding = string | MoneyOptions;
896
+
897
+ /**
898
+ * Money directive options
899
+ */
900
+ export declare interface MoneyOptions extends NumberFormatOptions {
901
+ /** Currency symbol @default '$' */
902
+ symbol?: string;
903
+ /** Symbol position @default 'before' */
904
+ symbolPosition?: 'before' | 'after';
905
+ }
906
+
742
907
  /**
743
908
  * Directive binding value type
744
909
  */
@@ -799,6 +964,39 @@ export declare interface MutationOptions {
799
964
  disabled?: boolean;
800
965
  }
801
966
 
967
+ export declare type NumberBinding = number | NumberOptions;
968
+
969
+ /**
970
+ * Shared utilities for number and money formatting directives
971
+ */
972
+ /**
973
+ * Base options shared by number and money formatting
974
+ */
975
+ declare interface NumberFormatOptions {
976
+ /** Number of decimal places */
977
+ precision?: number;
978
+ /** Thousands separator */
979
+ separator?: string;
980
+ /** Decimal separator */
981
+ decimal?: string;
982
+ /** Whether to allow negative numbers @default true */
983
+ allowNegative?: boolean;
984
+ /** Minimum value */
985
+ min?: number;
986
+ /** Maximum value */
987
+ max?: number;
988
+ }
989
+
990
+ /**
991
+ * Number directive options
992
+ */
993
+ export declare interface NumberOptions extends NumberFormatOptions {
994
+ /** Prefix string (e.g., '$') */
995
+ prefix?: string;
996
+ /** Suffix string (e.g., '%') */
997
+ suffix?: string;
998
+ }
999
+
802
1000
  /**
803
1001
  * Parse time argument
804
1002
  * Supports formats: "300" | "300ms" | "1s"
@@ -1132,6 +1330,11 @@ export declare const supportsPassive: () => boolean;
1132
1330
  */
1133
1331
  export declare const supportsResizeObserver: () => boolean;
1134
1332
 
1333
+ /**
1334
+ * Swipe direction
1335
+ */
1336
+ export declare type SwipeDirection = 'left' | 'right' | 'up' | 'down';
1337
+
1135
1338
  /**
1136
1339
  * Directive binding value type
1137
1340
  */
@@ -1180,6 +1383,211 @@ export declare interface ThrottleOptions<T extends (...args: any[]) => any = any
1180
1383
  trailing?: boolean;
1181
1384
  }
1182
1385
 
1386
+ export declare type TooltipBinding = string | TooltipOptions;
1387
+
1388
+ /**
1389
+ * Tooltip directive options
1390
+ */
1391
+ export declare interface TooltipOptions {
1392
+ /** Tooltip content */
1393
+ content: string;
1394
+ /** Tooltip placement @default 'top' */
1395
+ placement?: TooltipPlacement;
1396
+ /** Trigger type @default 'hover' */
1397
+ trigger?: TooltipTrigger;
1398
+ /** Show delay in milliseconds @default 0 */
1399
+ delay?: number;
1400
+ /** Hide delay in milliseconds @default 0 */
1401
+ hideDelay?: number;
1402
+ /** Offset from the element in pixels @default 8 */
1403
+ offset?: number;
1404
+ /** Custom class for the tooltip */
1405
+ class?: string;
1406
+ /** Whether to show arrow @default true */
1407
+ arrow?: boolean;
1408
+ /** Whether the tooltip is disabled @default false */
1409
+ disabled?: boolean;
1410
+ /** Maximum width of the tooltip */
1411
+ maxWidth?: number | string;
1412
+ /** Z-index of the tooltip @default 9999 */
1413
+ zIndex?: number;
1414
+ /** Callback when tooltip is shown */
1415
+ onShow?: () => void;
1416
+ /** Callback when tooltip is hidden */
1417
+ onHide?: () => void;
1418
+ }
1419
+
1420
+ /**
1421
+ * Tooltip placement
1422
+ */
1423
+ export declare type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
1424
+
1425
+ /**
1426
+ * Tooltip trigger
1427
+ */
1428
+ export declare type TooltipTrigger = 'hover' | 'click' | 'focus' | 'manual';
1429
+
1430
+ /**
1431
+ * Touch gesture options
1432
+ */
1433
+ export declare interface TouchOptions {
1434
+ /** Minimum swipe distance in pixels @default 30 */
1435
+ swipeThreshold?: number;
1436
+ /** Maximum time for a swipe in milliseconds @default 500 */
1437
+ swipeTimeout?: number;
1438
+ /** Minimum pinch scale change @default 0.1 */
1439
+ pinchThreshold?: number;
1440
+ /** Enable swipe detection @default true */
1441
+ enableSwipe?: boolean;
1442
+ /** Enable pinch detection @default true */
1443
+ enablePinch?: boolean;
1444
+ /** Enable rotate detection @default true */
1445
+ enableRotate?: boolean;
1446
+ /** Enable tap detection @default true */
1447
+ enableTap?: boolean;
1448
+ /** Maximum time for a tap in milliseconds @default 250 */
1449
+ tapTimeout?: number;
1450
+ /** Maximum movement for a tap in pixels @default 10 */
1451
+ tapThreshold?: number;
1452
+ /** Enable long press detection @default true */
1453
+ enableLongPress?: boolean;
1454
+ /** Long press timeout in milliseconds @default 500 */
1455
+ longPressTimeout?: number;
1456
+ /** Enable mouse event simulation for desktop @default true */
1457
+ enableMouse?: boolean;
1458
+ onSwipe?: (direction: SwipeDirection, event: TouchEvent | MouseEvent) => void;
1459
+ onSwipeLeft?: (event: TouchEvent | MouseEvent) => void;
1460
+ onSwipeRight?: (event: TouchEvent | MouseEvent) => void;
1461
+ onSwipeUp?: (event: TouchEvent | MouseEvent) => void;
1462
+ onSwipeDown?: (event: TouchEvent | MouseEvent) => void;
1463
+ onPinch?: (scale: number, event: TouchEvent) => void;
1464
+ onRotate?: (angle: number, event: TouchEvent) => void;
1465
+ onTap?: (event: TouchEvent | MouseEvent) => void;
1466
+ onLongPress?: (event: TouchEvent | MouseEvent) => void;
1467
+ onTouchStart?: (event: TouchEvent | MouseEvent) => void;
1468
+ onTouchMove?: (event: TouchEvent | MouseEvent) => void;
1469
+ onTouchEnd?: (event: TouchEvent | MouseEvent) => void;
1470
+ }
1471
+
1472
+ /**
1473
+ * Directive binding value type
1474
+ */
1475
+ export declare type TrimBinding = boolean | TrimPosition | TrimOptions;
1476
+
1477
+ /**
1478
+ * Trim directive options
1479
+ */
1480
+ export declare interface TrimOptions {
1481
+ /**
1482
+ * Trim position
1483
+ * @default 'both'
1484
+ */
1485
+ position?: TrimPosition;
1486
+ /**
1487
+ * Whether to trim on input (for input elements)
1488
+ * @default true
1489
+ */
1490
+ onInput?: boolean;
1491
+ /**
1492
+ * Whether to trim on blur
1493
+ * @default true
1494
+ */
1495
+ onBlur?: boolean;
1496
+ /**
1497
+ * Custom characters to trim (in addition to whitespace)
1498
+ */
1499
+ chars?: string;
1500
+ }
1501
+
1502
+ /**
1503
+ * Trim position
1504
+ */
1505
+ export declare type TrimPosition = 'start' | 'end' | 'both';
1506
+
1507
+ /**
1508
+ * Directive binding value type
1509
+ */
1510
+ export declare type TruncateBinding = number | TruncateOptions;
1511
+
1512
+ /**
1513
+ * Truncate directive options
1514
+ */
1515
+ export declare interface TruncateOptions {
1516
+ /**
1517
+ * Maximum length of text
1518
+ * @default 100
1519
+ */
1520
+ length?: number;
1521
+ /**
1522
+ * Truncation position
1523
+ * @default 'end'
1524
+ */
1525
+ position?: TruncatePosition;
1526
+ /**
1527
+ * Ellipsis string
1528
+ * @default '...'
1529
+ */
1530
+ ellipsis?: string;
1531
+ /**
1532
+ * Whether to use CSS truncation (use text-overflow: ellipsis)
1533
+ * When true, length and position options are ignored
1534
+ * @default false
1535
+ */
1536
+ useCss?: boolean;
1537
+ /**
1538
+ * Show full text on hover (as title attribute)
1539
+ * @default true
1540
+ */
1541
+ showTitle?: boolean;
1542
+ }
1543
+
1544
+ /**
1545
+ * Truncate position
1546
+ */
1547
+ export declare type TruncatePosition = 'start' | 'middle' | 'end';
1548
+
1549
+ /**
1550
+ * Directive binding value type
1551
+ */
1552
+ export declare type UppercaseBinding = boolean | UppercaseOptions;
1553
+
1554
+ /**
1555
+ * Uppercase directive options
1556
+ */
1557
+ export declare interface UppercaseOptions {
1558
+ /**
1559
+ * Transform only the first character
1560
+ * @default false
1561
+ */
1562
+ first?: boolean;
1563
+ /**
1564
+ * Transform on input event (for input elements)
1565
+ * @default true
1566
+ */
1567
+ onInput?: boolean;
1568
+ }
1569
+
1570
+ /**
1571
+ * v-capitalcase directive
1572
+ *
1573
+ * @example
1574
+ * ```vue
1575
+ * <template>
1576
+ * <!-- Simple usage: capitalize each word -->
1577
+ * <input v-capitalcase v-model="title" />
1578
+ *
1579
+ * <!-- Capitalize only first word -->
1580
+ * <span v-capitalcase="{ every: false }">{{ text }}</span>
1581
+ *
1582
+ * <!-- With custom lowercase words -->
1583
+ * <input v-capitalcase="{ keepLower: ['a', 'the'] }" v-model="title" />
1584
+ * </template>
1585
+ * ```
1586
+ */
1587
+ declare const vCapitalcase: Directive;
1588
+ export { vCapitalcase as capitalcase }
1589
+ export { vCapitalcase }
1590
+
1183
1591
  /**
1184
1592
  * v-click-outside directive
1185
1593
  *
@@ -1228,6 +1636,33 @@ declare const vDebounce: Directive;
1228
1636
  export { vDebounce as debounce }
1229
1637
  export { vDebounce }
1230
1638
 
1639
+ /**
1640
+ * v-draggable directive
1641
+ *
1642
+ * @example
1643
+ * ```vue
1644
+ * <template>
1645
+ * <!-- Simple usage -->
1646
+ * <div v-draggable>Drag me</div>
1647
+ *
1648
+ * <!-- Constrain to parent -->
1649
+ * <div v-draggable="{ constrain: true }">Drag me</div>
1650
+ *
1651
+ * <!-- With handle -->
1652
+ * <div v-draggable="{ handle: '.drag-handle' }">
1653
+ * <div class="drag-handle">Drag here</div>
1654
+ * <div>Content</div>
1655
+ * </div>
1656
+ *
1657
+ * <!-- With callbacks -->
1658
+ * <div v-draggable="{ onDrag: handleDrag }">Drag me</div>
1659
+ * </template>
1660
+ * ```
1661
+ */
1662
+ declare const vDraggable: Directive;
1663
+ export { vDraggable as draggable }
1664
+ export { vDraggable }
1665
+
1231
1666
  /**
1232
1667
  * v-focus directive
1233
1668
  *
@@ -1258,6 +1693,27 @@ declare const vHover: Directive;
1258
1693
  export { vHover as hover }
1259
1694
  export { vHover }
1260
1695
 
1696
+ /**
1697
+ * v-image-preview directive
1698
+ *
1699
+ * @example
1700
+ * ```vue
1701
+ * <template>
1702
+ * <!-- Simple usage -->
1703
+ * <img v-image-preview src="thumbnail.jpg" data-preview="full.jpg" />
1704
+ *
1705
+ * <!-- With options -->
1706
+ * <img v-image-preview="{ src: 'thumbnail.jpg', previewSrc: 'full.jpg' }" />
1707
+ *
1708
+ * <!-- On non-img element -->
1709
+ * <div v-image-preview="{ src: 'image.jpg' }">Click to preview</div>
1710
+ * </template>
1711
+ * ```
1712
+ */
1713
+ declare const vImagePreview: Directive;
1714
+ export { vImagePreview as imagePreview }
1715
+ export { vImagePreview }
1716
+
1261
1717
  /**
1262
1718
  * v-infinite-scroll directive
1263
1719
  *
@@ -1374,6 +1830,24 @@ declare const vLongPress: Directive;
1374
1830
  export { vLongPress as longPress }
1375
1831
  export { vLongPress }
1376
1832
 
1833
+ /**
1834
+ * v-lowercase directive
1835
+ *
1836
+ * @example
1837
+ * ```vue
1838
+ * <template>
1839
+ * <!-- Transform all characters to lowercase -->
1840
+ * <input v-lowercase v-model="text" />
1841
+ *
1842
+ * <!-- Transform only first character -->
1843
+ * <span v-lowercase="{ first: true }">{{ text }}</span>
1844
+ * </template>
1845
+ * ```
1846
+ */
1847
+ declare const vLowercase: Directive;
1848
+ export { vLowercase as lowercase }
1849
+ export { vLowercase }
1850
+
1377
1851
  /**
1378
1852
  * v-mask directive
1379
1853
  *
@@ -1388,6 +1862,10 @@ declare const vMask: Directive;
1388
1862
  export { vMask as mask }
1389
1863
  export { vMask }
1390
1864
 
1865
+ declare const vMoney: Directive;
1866
+ export { vMoney as money }
1867
+ export { vMoney }
1868
+
1391
1869
  /**
1392
1870
  * v-mutation directive
1393
1871
  *
@@ -1414,6 +1892,10 @@ declare const vMutation: Directive;
1414
1892
  export { vMutation as mutation }
1415
1893
  export { vMutation }
1416
1894
 
1895
+ declare const vNumber: Directive;
1896
+ export { vNumber as number }
1897
+ export { vNumber }
1898
+
1417
1899
  /**
1418
1900
  * v-permission directive
1419
1901
  *
@@ -1537,6 +2019,62 @@ declare const vThrottle: Directive;
1537
2019
  export { vThrottle as throttle }
1538
2020
  export { vThrottle }
1539
2021
 
2022
+ declare const vTooltip: Directive;
2023
+ export { vTooltip as tooltip }
2024
+ export { vTooltip }
2025
+
2026
+ declare const vTouch: Directive;
2027
+ export { vTouch as touch }
2028
+ export { vTouch }
2029
+
2030
+ /**
2031
+ * v-trim directive
2032
+ *
2033
+ * @example
2034
+ * ```vue
2035
+ * <template>
2036
+ * <!-- Simple usage: trim both sides -->
2037
+ * <input v-trim v-model="text" />
2038
+ *
2039
+ * <!-- Trim only start -->
2040
+ * <input v-trim="'start'" v-model="text" />
2041
+ *
2042
+ * <!-- Trim only end -->
2043
+ * <input v-trim="'end'" v-model="text" />
2044
+ *
2045
+ * <!-- With options -->
2046
+ * <input v-trim="{ position: 'both', onBlur: true }" v-model="text" />
2047
+ *
2048
+ * <!-- For display only -->
2049
+ * <span v-trim> Text with spaces </span>
2050
+ * </template>
2051
+ * ```
2052
+ */
2053
+ declare const vTrim: Directive;
2054
+ export { vTrim as trim }
2055
+ export { vTrim }
2056
+
2057
+ /**
2058
+ * v-truncate directive
2059
+ *
2060
+ * @example
2061
+ * ```vue
2062
+ * <template>
2063
+ * <!-- Simple usage: truncate to 50 characters -->
2064
+ * <p v-truncate="50">Long text here...</p>
2065
+ *
2066
+ * <!-- With options -->
2067
+ * <p v-truncate="{ length: 100, position: 'middle' }">Long text here...</p>
2068
+ *
2069
+ * <!-- CSS truncation -->
2070
+ * <p v-truncate="{ useCss: true }">Long text here...</p>
2071
+ * </template>
2072
+ * ```
2073
+ */
2074
+ declare const vTruncate: Directive;
2075
+ export { vTruncate as truncate }
2076
+ export { vTruncate }
2077
+
1540
2078
  /**
1541
2079
  * Vue 2 directive hooks
1542
2080
  */
@@ -1569,6 +2107,24 @@ export declare interface Vue3DirectiveHooks {
1569
2107
  */
1570
2108
  export declare type VueVersion = 2 | 2.7 | 3;
1571
2109
 
2110
+ /**
2111
+ * v-uppercase directive
2112
+ *
2113
+ * @example
2114
+ * ```vue
2115
+ * <template>
2116
+ * <!-- Transform all characters to uppercase -->
2117
+ * <input v-uppercase v-model="text" />
2118
+ *
2119
+ * <!-- Transform only first character -->
2120
+ * <span v-uppercase="{ first: true }">{{ text }}</span>
2121
+ * </template>
2122
+ * ```
2123
+ */
2124
+ declare const vUppercase: Directive;
2125
+ export { vUppercase as uppercase }
2126
+ export { vUppercase }
2127
+
1572
2128
  /**
1573
2129
  * v-visible directive
1574
2130
  *