@vuetify/nightly 3.6.13-3.7.0-beta.0.0-dev.2024-07-10 → 3.6.13-3.7.0-beta.0.0-dev.2024-07-24

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.
Files changed (158) hide show
  1. package/CHANGELOG.md +0 -8
  2. package/dist/json/attributes.json +30 -22
  3. package/dist/json/importMap-labs.json +12 -12
  4. package/dist/json/importMap.json +120 -120
  5. package/dist/json/tags.json +2 -0
  6. package/dist/json/web-types.json +53 -42
  7. package/dist/vuetify-labs.css +2160 -2162
  8. package/dist/vuetify-labs.d.ts +12298 -12189
  9. package/dist/vuetify-labs.esm.js +59 -29
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +59 -29
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +871 -873
  14. package/dist/vuetify.d.ts +10357 -10268
  15. package/dist/vuetify.esm.js +51 -25
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +51 -25
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +1043 -1044
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VAlert/index.d.mts +55 -55
  23. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  24. package/lib/components/VAppBar/index.d.mts +169 -169
  25. package/lib/components/VAutocomplete/index.d.mts +615 -609
  26. package/lib/components/VAvatar/index.d.mts +36 -36
  27. package/lib/components/VBadge/index.d.mts +58 -58
  28. package/lib/components/VBanner/index.d.mts +59 -59
  29. package/lib/components/VBottomNavigation/index.d.mts +58 -58
  30. package/lib/components/VBottomSheet/index.d.mts +118 -118
  31. package/lib/components/VBreadcrumbs/index.d.mts +34 -34
  32. package/lib/components/VBtn/VBtn.css +3 -0
  33. package/lib/components/VBtn/VBtn.sass +3 -0
  34. package/lib/components/VBtn/index.d.mts +107 -107
  35. package/lib/components/VBtnGroup/index.d.mts +23 -23
  36. package/lib/components/VBtnToggle/index.d.mts +40 -40
  37. package/lib/components/VCard/index.d.mts +93 -93
  38. package/lib/components/VCarousel/index.d.mts +128 -128
  39. package/lib/components/VCheckbox/index.d.mts +174 -168
  40. package/lib/components/VChip/index.d.mts +86 -86
  41. package/lib/components/VChipGroup/index.d.mts +46 -46
  42. package/lib/components/VColorPicker/index.d.mts +96 -96
  43. package/lib/components/VCombobox/index.d.mts +615 -609
  44. package/lib/components/VConfirmEdit/index.d.mts +2 -2
  45. package/lib/components/VCounter/index.d.mts +27 -27
  46. package/lib/components/VDataIterator/index.d.mts +51 -50
  47. package/lib/components/VDataTable/VDataTable.mjs +10 -3
  48. package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
  49. package/lib/components/VDataTable/VDataTableServer.mjs +6 -2
  50. package/lib/components/VDataTable/VDataTableServer.mjs.map +1 -1
  51. package/lib/components/VDataTable/VDataTableVirtual.mjs +10 -3
  52. package/lib/components/VDataTable/VDataTableVirtual.mjs.map +1 -1
  53. package/lib/components/VDataTable/composables/group.mjs +2 -1
  54. package/lib/components/VDataTable/composables/group.mjs.map +1 -1
  55. package/lib/components/VDataTable/composables/sort.mjs +4 -4
  56. package/lib/components/VDataTable/composables/sort.mjs.map +1 -1
  57. package/lib/components/VDataTable/index.d.mts +275 -274
  58. package/lib/components/VDatePicker/VDatePickerMonth.mjs +3 -0
  59. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  60. package/lib/components/VDatePicker/index.d.mts +134 -134
  61. package/lib/components/VDialog/index.d.mts +353 -353
  62. package/lib/components/VDivider/index.d.mts +15 -15
  63. package/lib/components/VEmptyState/index.d.mts +47 -47
  64. package/lib/components/VExpansionPanel/index.d.mts +134 -134
  65. package/lib/components/VFab/index.d.mts +227 -227
  66. package/lib/components/VField/VField.css +6 -11
  67. package/lib/components/VField/VField.mjs +7 -5
  68. package/lib/components/VField/VField.mjs.map +1 -1
  69. package/lib/components/VField/VField.sass +2 -6
  70. package/lib/components/VField/index.d.mts +58 -52
  71. package/lib/components/VFileInput/index.d.mts +255 -249
  72. package/lib/components/VFooter/index.d.mts +50 -50
  73. package/lib/components/VForm/index.d.mts +9 -9
  74. package/lib/components/VGrid/index.d.mts +150 -150
  75. package/lib/components/VIcon/index.d.mts +24 -24
  76. package/lib/components/VImg/index.d.mts +85 -85
  77. package/lib/components/VInfiniteScroll/index.d.mts +22 -22
  78. package/lib/components/VInput/VInput.css +5 -5
  79. package/lib/components/VInput/VInput.mjs +4 -1
  80. package/lib/components/VInput/VInput.mjs.map +1 -1
  81. package/lib/components/VInput/VInput.sass +1 -1
  82. package/lib/components/VInput/index.d.mts +61 -55
  83. package/lib/components/VItemGroup/index.d.mts +17 -17
  84. package/lib/components/VLabel/index.d.mts +8 -8
  85. package/lib/components/VLayout/index.d.mts +36 -36
  86. package/lib/components/VLazy/index.d.mts +31 -31
  87. package/lib/components/VList/index.d.mts +178 -178
  88. package/lib/components/VLocaleProvider/index.d.mts +7 -7
  89. package/lib/components/VMain/index.d.mts +10 -10
  90. package/lib/components/VMenu/index.d.mts +393 -393
  91. package/lib/components/VMessages/index.d.mts +20 -20
  92. package/lib/components/VNavigationDrawer/index.d.mts +72 -72
  93. package/lib/components/VNavigationDrawer/sticky.mjs.map +1 -1
  94. package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
  95. package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
  96. package/lib/components/VOtpInput/index.d.mts +88 -88
  97. package/lib/components/VOverlay/index.d.mts +97 -97
  98. package/lib/components/VPagination/index.d.mts +55 -55
  99. package/lib/components/VParallax/index.d.mts +7 -7
  100. package/lib/components/VProgressCircular/index.d.mts +24 -24
  101. package/lib/components/VProgressLinear/index.d.mts +52 -52
  102. package/lib/components/VRadio/index.d.mts +41 -41
  103. package/lib/components/VRadioGroup/index.d.mts +105 -99
  104. package/lib/components/VRangeSlider/index.d.mts +102 -96
  105. package/lib/components/VRating/index.d.mts +22 -22
  106. package/lib/components/VResponsive/index.d.mts +23 -23
  107. package/lib/components/VSelect/index.d.mts +615 -609
  108. package/lib/components/VSelectionControl/index.d.mts +43 -43
  109. package/lib/components/VSelectionControlGroup/index.d.mts +39 -39
  110. package/lib/components/VSheet/index.d.mts +34 -34
  111. package/lib/components/VSkeletonLoader/index.d.mts +17 -17
  112. package/lib/components/VSlideGroup/index.d.mts +33 -33
  113. package/lib/components/VSlider/index.d.mts +95 -89
  114. package/lib/components/VSnackbar/index.d.mts +411 -411
  115. package/lib/components/VSparkline/index.d.mts +38 -38
  116. package/lib/components/VSpeedDial/index.d.mts +176 -176
  117. package/lib/components/VStepper/index.d.mts +119 -119
  118. package/lib/components/VSwitch/index.d.mts +108 -102
  119. package/lib/components/VSystemBar/index.d.mts +39 -39
  120. package/lib/components/VTable/index.d.mts +4 -4
  121. package/lib/components/VTabs/index.d.mts +512 -512
  122. package/lib/components/VTextField/VTextField.mjs +1 -1
  123. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  124. package/lib/components/VTextField/index.d.mts +421 -415
  125. package/lib/components/VTextarea/VTextarea.mjs +5 -5
  126. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  127. package/lib/components/VTextarea/index.d.mts +359 -344
  128. package/lib/components/VTimeline/index.d.mts +26 -26
  129. package/lib/components/VToolbar/index.d.mts +53 -53
  130. package/lib/components/VTooltip/index.d.mts +424 -424
  131. package/lib/components/VValidation/index.d.mts +19 -19
  132. package/lib/components/VVirtualScroll/index.d.mts +10 -10
  133. package/lib/components/VWindow/index.d.mts +31 -31
  134. package/lib/components/index.d.mts +10651 -10563
  135. package/lib/components/transitions/index.d.mts +200 -200
  136. package/lib/composables/nested/nested.mjs +0 -1
  137. package/lib/composables/nested/nested.mjs.map +1 -1
  138. package/lib/entry-bundler.mjs +1 -1
  139. package/lib/framework.mjs +1 -1
  140. package/lib/index.d.mts +69 -68
  141. package/lib/labs/VCalendar/index.d.mts +52 -52
  142. package/lib/labs/VDateInput/VDateInput.mjs +6 -3
  143. package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
  144. package/lib/labs/VDateInput/index.d.mts +256 -250
  145. package/lib/labs/VNumberInput/index.d.mts +247 -241
  146. package/lib/labs/VPicker/index.d.mts +45 -45
  147. package/lib/labs/VSnackbarQueue/index.d.mts +611 -611
  148. package/lib/labs/VStepperVertical/index.d.mts +212 -212
  149. package/lib/labs/VTimePicker/VTimePickerClock.mjs +0 -1
  150. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -1
  151. package/lib/labs/VTimePicker/VTimePickerControls.mjs +2 -1
  152. package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -1
  153. package/lib/labs/VTimePicker/index.d.mts +131 -122
  154. package/lib/labs/VTreeview/VTreeviewItem.css +1 -1
  155. package/lib/labs/VTreeview/VTreeviewItem.sass +2 -5
  156. package/lib/labs/VTreeview/index.d.mts +199 -199
  157. package/lib/labs/components.d.mts +1754 -1733
  158. package/package.json +9 -4
@@ -10,9 +10,7 @@ type VMessageSlot = {
10
10
  };
11
11
  declare const VMessages: {
12
12
  new (...args: any[]): vue.CreateComponentPublicInstance<{
13
- style: vue.StyleValue;
14
13
  active: boolean;
15
- messages: string | readonly string[];
16
14
  transition: {
17
15
  component: Component;
18
16
  leaveAbsolute: boolean;
@@ -20,9 +18,11 @@ declare const VMessages: {
20
18
  } | NonNullable<string | boolean | (vue.TransitionProps & {
21
19
  component?: Component | undefined;
22
20
  })>;
21
+ style: vue.StyleValue;
22
+ messages: string | readonly string[];
23
23
  } & {
24
- class?: any;
25
24
  color?: string | undefined;
25
+ class?: any;
26
26
  } & {
27
27
  $children?: {} | vue.VNodeChild | {
28
28
  message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
@@ -33,9 +33,7 @@ declare const VMessages: {
33
33
  } & {
34
34
  "v-slot:message"?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
35
35
  }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
36
- style: vue.StyleValue;
37
36
  active: boolean;
38
- messages: string | readonly string[];
39
37
  transition: {
40
38
  component: Component;
41
39
  leaveAbsolute: boolean;
@@ -43,9 +41,11 @@ declare const VMessages: {
43
41
  } | NonNullable<string | boolean | (vue.TransitionProps & {
44
42
  component?: Component | undefined;
45
43
  })>;
44
+ style: vue.StyleValue;
45
+ messages: string | readonly string[];
46
46
  } & {
47
- class?: any;
48
47
  color?: string | undefined;
48
+ class?: any;
49
49
  } & {
50
50
  $children?: {} | vue.VNodeChild | {
51
51
  message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
@@ -56,9 +56,7 @@ declare const VMessages: {
56
56
  } & {
57
57
  "v-slot:message"?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
58
58
  }, {
59
- style: vue.StyleValue;
60
59
  active: boolean;
61
- messages: string | readonly string[];
62
60
  transition: {
63
61
  component: Component;
64
62
  leaveAbsolute: boolean;
@@ -66,6 +64,8 @@ declare const VMessages: {
66
64
  } | NonNullable<string | boolean | (vue.TransitionProps & {
67
65
  component?: Component | undefined;
68
66
  })>;
67
+ style: vue.StyleValue;
68
+ messages: string | readonly string[];
69
69
  }, true, {}, vue.SlotsType<Partial<{
70
70
  message: (arg: VMessageSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
71
71
  [key: string]: any;
@@ -78,9 +78,7 @@ declare const VMessages: {
78
78
  M: {};
79
79
  Defaults: {};
80
80
  }, {
81
- style: vue.StyleValue;
82
81
  active: boolean;
83
- messages: string | readonly string[];
84
82
  transition: {
85
83
  component: Component;
86
84
  leaveAbsolute: boolean;
@@ -88,9 +86,11 @@ declare const VMessages: {
88
86
  } | NonNullable<string | boolean | (vue.TransitionProps & {
89
87
  component?: Component | undefined;
90
88
  })>;
89
+ style: vue.StyleValue;
90
+ messages: string | readonly string[];
91
91
  } & {
92
- class?: any;
93
92
  color?: string | undefined;
93
+ class?: any;
94
94
  } & {
95
95
  $children?: {} | vue.VNodeChild | {
96
96
  message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
@@ -101,9 +101,7 @@ declare const VMessages: {
101
101
  } & {
102
102
  "v-slot:message"?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
103
103
  }, {}, {}, {}, {}, {
104
- style: vue.StyleValue;
105
104
  active: boolean;
106
- messages: string | readonly string[];
107
105
  transition: {
108
106
  component: Component;
109
107
  leaveAbsolute: boolean;
@@ -111,14 +109,14 @@ declare const VMessages: {
111
109
  } | NonNullable<string | boolean | (vue.TransitionProps & {
112
110
  component?: Component | undefined;
113
111
  })>;
112
+ style: vue.StyleValue;
113
+ messages: string | readonly string[];
114
114
  }>;
115
115
  __isFragment?: undefined;
116
116
  __isTeleport?: undefined;
117
117
  __isSuspense?: undefined;
118
118
  } & vue.ComponentOptionsBase<{
119
- style: vue.StyleValue;
120
119
  active: boolean;
121
- messages: string | readonly string[];
122
120
  transition: {
123
121
  component: Component;
124
122
  leaveAbsolute: boolean;
@@ -126,9 +124,11 @@ declare const VMessages: {
126
124
  } | NonNullable<string | boolean | (vue.TransitionProps & {
127
125
  component?: Component | undefined;
128
126
  })>;
127
+ style: vue.StyleValue;
128
+ messages: string | readonly string[];
129
129
  } & {
130
- class?: any;
131
130
  color?: string | undefined;
131
+ class?: any;
132
132
  } & {
133
133
  $children?: {} | vue.VNodeChild | {
134
134
  message?: ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
@@ -139,9 +139,7 @@ declare const VMessages: {
139
139
  } & {
140
140
  "v-slot:message"?: false | ((arg: VMessageSlot) => vue.VNodeChild) | undefined;
141
141
  }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
142
- style: vue.StyleValue;
143
142
  active: boolean;
144
- messages: string | readonly string[];
145
143
  transition: {
146
144
  component: Component;
147
145
  leaveAbsolute: boolean;
@@ -149,6 +147,8 @@ declare const VMessages: {
149
147
  } | NonNullable<string | boolean | (vue.TransitionProps & {
150
148
  component?: Component | undefined;
151
149
  })>;
150
+ style: vue.StyleValue;
151
+ messages: string | readonly string[];
152
152
  }, {}, string, vue.SlotsType<Partial<{
153
153
  message: (arg: VMessageSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
154
154
  [key: string]: any;
@@ -160,7 +160,7 @@ declare const VMessages: {
160
160
  })>;
161
161
  default: string;
162
162
  validator: (val: unknown) => boolean;
163
- }, "default" | "type"> & {
163
+ }, "type" | "default"> & {
164
164
  type: PropType<{
165
165
  component: Component;
166
166
  leaveAbsolute: boolean;
@@ -194,7 +194,7 @@ declare const VMessages: {
194
194
  })>;
195
195
  default: string;
196
196
  validator: (val: unknown) => boolean;
197
- }, "default" | "type"> & {
197
+ }, "type" | "default"> & {
198
198
  type: PropType<{
199
199
  component: Component;
200
200
  leaveAbsolute: boolean;
@@ -14,17 +14,18 @@ type VNavigationDrawerImageSlot = {
14
14
  };
15
15
  declare const VNavigationDrawer: {
16
16
  new (...args: any[]): vue.CreateComponentPublicInstance<{
17
- style: vue.StyleValue;
17
+ absolute: boolean;
18
+ location: "end" | "start" | "left" | "top" | "bottom" | "right";
18
19
  width: string | number;
19
- tag: string;
20
- mobile: NonNullable<boolean | null> | null;
21
20
  order: string | number;
22
- absolute: boolean;
21
+ style: vue.StyleValue;
22
+ mobile: NonNullable<boolean | null> | null;
23
+ temporary: boolean;
24
+ tag: string;
23
25
  sticky: boolean;
24
26
  modelValue: boolean | null;
25
27
  tile: boolean;
26
28
  floating: boolean;
27
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
28
29
  persistent: boolean;
29
30
  scrim: string | boolean;
30
31
  touchless: boolean;
@@ -34,17 +35,16 @@ declare const VNavigationDrawer: {
34
35
  permanent: boolean;
35
36
  rail: boolean | null;
36
37
  railWidth: string | number;
37
- temporary: boolean;
38
38
  } & {
39
- class?: any;
39
+ name?: string | undefined;
40
+ border?: string | number | boolean | undefined;
41
+ color?: string | undefined;
40
42
  image?: string | undefined;
43
+ class?: any;
44
+ elevation?: string | number | undefined;
41
45
  theme?: string | undefined;
42
- color?: string | undefined;
43
- name?: string | undefined;
44
46
  mobileBreakpoint?: number | DisplayBreakpoint | undefined;
45
- border?: string | number | boolean | undefined;
46
47
  rounded?: string | number | boolean | undefined;
47
- elevation?: string | number | undefined;
48
48
  closeDelay?: string | number | undefined;
49
49
  openDelay?: string | number | undefined;
50
50
  } & {
@@ -74,17 +74,18 @@ declare const VNavigationDrawer: {
74
74
  'update:modelValue': (val: boolean) => true;
75
75
  'update:rail': (val: boolean) => true;
76
76
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
77
- style: vue.StyleValue;
77
+ absolute: boolean;
78
+ location: "end" | "start" | "left" | "top" | "bottom" | "right";
78
79
  width: string | number;
79
- tag: string;
80
- mobile: NonNullable<boolean | null> | null;
81
80
  order: string | number;
82
- absolute: boolean;
81
+ style: vue.StyleValue;
82
+ mobile: NonNullable<boolean | null> | null;
83
+ temporary: boolean;
84
+ tag: string;
83
85
  sticky: boolean;
84
86
  modelValue: boolean | null;
85
87
  tile: boolean;
86
88
  floating: boolean;
87
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
88
89
  persistent: boolean;
89
90
  scrim: string | boolean;
90
91
  touchless: boolean;
@@ -94,17 +95,16 @@ declare const VNavigationDrawer: {
94
95
  permanent: boolean;
95
96
  rail: boolean | null;
96
97
  railWidth: string | number;
97
- temporary: boolean;
98
98
  } & {
99
- class?: any;
99
+ name?: string | undefined;
100
+ border?: string | number | boolean | undefined;
101
+ color?: string | undefined;
100
102
  image?: string | undefined;
103
+ class?: any;
104
+ elevation?: string | number | undefined;
101
105
  theme?: string | undefined;
102
- color?: string | undefined;
103
- name?: string | undefined;
104
106
  mobileBreakpoint?: number | DisplayBreakpoint | undefined;
105
- border?: string | number | boolean | undefined;
106
107
  rounded?: string | number | boolean | undefined;
107
- elevation?: string | number | undefined;
108
108
  closeDelay?: string | number | undefined;
109
109
  openDelay?: string | number | undefined;
110
110
  } & {
@@ -129,18 +129,19 @@ declare const VNavigationDrawer: {
129
129
  "onUpdate:modelValue"?: ((val: boolean) => any) | undefined;
130
130
  "onUpdate:rail"?: ((val: boolean) => any) | undefined;
131
131
  }, {
132
- style: vue.StyleValue;
132
+ absolute: boolean;
133
+ location: "end" | "start" | "left" | "top" | "bottom" | "right";
133
134
  width: string | number;
134
- tag: string;
135
- mobile: NonNullable<boolean | null> | null;
136
135
  order: string | number;
137
- absolute: boolean;
136
+ style: vue.StyleValue;
137
+ mobile: NonNullable<boolean | null> | null;
138
+ temporary: boolean;
139
+ tag: string;
138
140
  sticky: boolean;
139
141
  modelValue: boolean | null;
140
142
  rounded: string | number | boolean;
141
143
  tile: boolean;
142
144
  floating: boolean;
143
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
144
145
  persistent: boolean;
145
146
  scrim: string | boolean;
146
147
  touchless: boolean;
@@ -150,7 +151,6 @@ declare const VNavigationDrawer: {
150
151
  permanent: boolean;
151
152
  rail: boolean | null;
152
153
  railWidth: string | number;
153
- temporary: boolean;
154
154
  }, true, {}, vue.SlotsType<Partial<{
155
155
  default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
156
156
  [key: string]: any;
@@ -172,17 +172,18 @@ declare const VNavigationDrawer: {
172
172
  M: {};
173
173
  Defaults: {};
174
174
  }, {
175
- style: vue.StyleValue;
175
+ absolute: boolean;
176
+ location: "end" | "start" | "left" | "top" | "bottom" | "right";
176
177
  width: string | number;
177
- tag: string;
178
- mobile: NonNullable<boolean | null> | null;
179
178
  order: string | number;
180
- absolute: boolean;
179
+ style: vue.StyleValue;
180
+ mobile: NonNullable<boolean | null> | null;
181
+ temporary: boolean;
182
+ tag: string;
181
183
  sticky: boolean;
182
184
  modelValue: boolean | null;
183
185
  tile: boolean;
184
186
  floating: boolean;
185
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
186
187
  persistent: boolean;
187
188
  scrim: string | boolean;
188
189
  touchless: boolean;
@@ -192,17 +193,16 @@ declare const VNavigationDrawer: {
192
193
  permanent: boolean;
193
194
  rail: boolean | null;
194
195
  railWidth: string | number;
195
- temporary: boolean;
196
196
  } & {
197
- class?: any;
197
+ name?: string | undefined;
198
+ border?: string | number | boolean | undefined;
199
+ color?: string | undefined;
198
200
  image?: string | undefined;
201
+ class?: any;
202
+ elevation?: string | number | undefined;
199
203
  theme?: string | undefined;
200
- color?: string | undefined;
201
- name?: string | undefined;
202
204
  mobileBreakpoint?: number | DisplayBreakpoint | undefined;
203
- border?: string | number | boolean | undefined;
204
205
  rounded?: string | number | boolean | undefined;
205
- elevation?: string | number | undefined;
206
206
  closeDelay?: string | number | undefined;
207
207
  openDelay?: string | number | undefined;
208
208
  } & {
@@ -229,18 +229,19 @@ declare const VNavigationDrawer: {
229
229
  }, {
230
230
  isStuck: vue.ShallowRef<boolean | "top" | "bottom">;
231
231
  }, {}, {}, {}, {
232
- style: vue.StyleValue;
232
+ absolute: boolean;
233
+ location: "end" | "start" | "left" | "top" | "bottom" | "right";
233
234
  width: string | number;
234
- tag: string;
235
- mobile: NonNullable<boolean | null> | null;
236
235
  order: string | number;
237
- absolute: boolean;
236
+ style: vue.StyleValue;
237
+ mobile: NonNullable<boolean | null> | null;
238
+ temporary: boolean;
239
+ tag: string;
238
240
  sticky: boolean;
239
241
  modelValue: boolean | null;
240
242
  rounded: string | number | boolean;
241
243
  tile: boolean;
242
244
  floating: boolean;
243
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
244
245
  persistent: boolean;
245
246
  scrim: string | boolean;
246
247
  touchless: boolean;
@@ -250,23 +251,23 @@ declare const VNavigationDrawer: {
250
251
  permanent: boolean;
251
252
  rail: boolean | null;
252
253
  railWidth: string | number;
253
- temporary: boolean;
254
254
  }>;
255
255
  __isFragment?: undefined;
256
256
  __isTeleport?: undefined;
257
257
  __isSuspense?: undefined;
258
258
  } & vue.ComponentOptionsBase<{
259
- style: vue.StyleValue;
259
+ absolute: boolean;
260
+ location: "end" | "start" | "left" | "top" | "bottom" | "right";
260
261
  width: string | number;
261
- tag: string;
262
- mobile: NonNullable<boolean | null> | null;
263
262
  order: string | number;
264
- absolute: boolean;
263
+ style: vue.StyleValue;
264
+ mobile: NonNullable<boolean | null> | null;
265
+ temporary: boolean;
266
+ tag: string;
265
267
  sticky: boolean;
266
268
  modelValue: boolean | null;
267
269
  tile: boolean;
268
270
  floating: boolean;
269
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
270
271
  persistent: boolean;
271
272
  scrim: string | boolean;
272
273
  touchless: boolean;
@@ -276,17 +277,16 @@ declare const VNavigationDrawer: {
276
277
  permanent: boolean;
277
278
  rail: boolean | null;
278
279
  railWidth: string | number;
279
- temporary: boolean;
280
280
  } & {
281
- class?: any;
281
+ name?: string | undefined;
282
+ border?: string | number | boolean | undefined;
283
+ color?: string | undefined;
282
284
  image?: string | undefined;
285
+ class?: any;
286
+ elevation?: string | number | undefined;
283
287
  theme?: string | undefined;
284
- color?: string | undefined;
285
- name?: string | undefined;
286
288
  mobileBreakpoint?: number | DisplayBreakpoint | undefined;
287
- border?: string | number | boolean | undefined;
288
289
  rounded?: string | number | boolean | undefined;
289
- elevation?: string | number | undefined;
290
290
  closeDelay?: string | number | undefined;
291
291
  openDelay?: string | number | undefined;
292
292
  } & {
@@ -316,18 +316,19 @@ declare const VNavigationDrawer: {
316
316
  'update:modelValue': (val: boolean) => true;
317
317
  'update:rail': (val: boolean) => true;
318
318
  }, string, {
319
- style: vue.StyleValue;
319
+ absolute: boolean;
320
+ location: "end" | "start" | "left" | "top" | "bottom" | "right";
320
321
  width: string | number;
321
- tag: string;
322
- mobile: NonNullable<boolean | null> | null;
323
322
  order: string | number;
324
- absolute: boolean;
323
+ style: vue.StyleValue;
324
+ mobile: NonNullable<boolean | null> | null;
325
+ temporary: boolean;
326
+ tag: string;
325
327
  sticky: boolean;
326
328
  modelValue: boolean | null;
327
329
  rounded: string | number | boolean;
328
330
  tile: boolean;
329
331
  floating: boolean;
330
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
331
332
  persistent: boolean;
332
333
  scrim: string | boolean;
333
334
  touchless: boolean;
@@ -337,7 +338,6 @@ declare const VNavigationDrawer: {
337
338
  permanent: boolean;
338
339
  rail: boolean | null;
339
340
  railWidth: string | number;
340
- temporary: boolean;
341
341
  }, {}, string, vue.SlotsType<Partial<{
342
342
  default: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
343
343
  [key: string]: any;
@@ -356,12 +356,12 @@ declare const VNavigationDrawer: {
356
356
  tag: Omit<{
357
357
  type: StringConstructor;
358
358
  default: string;
359
- }, "default" | "type"> & {
359
+ }, "type" | "default"> & {
360
360
  type: PropType<string>;
361
361
  default: string;
362
362
  };
363
363
  rounded: {
364
- type: (StringConstructor | NumberConstructor | BooleanConstructor)[];
364
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
365
365
  default: undefined;
366
366
  };
367
367
  tile: BooleanConstructor;
@@ -380,7 +380,7 @@ declare const VNavigationDrawer: {
380
380
  mobile: Omit<{
381
381
  type: PropType<boolean | null>;
382
382
  default: boolean;
383
- }, "default" | "type"> & {
383
+ }, "type" | "default"> & {
384
384
  type: PropType<NonNullable<boolean | null> | null>;
385
385
  default: NonNullable<boolean | null> | null;
386
386
  };
@@ -392,7 +392,7 @@ declare const VNavigationDrawer: {
392
392
  type: PropType<vue.StyleValue>;
393
393
  default: null;
394
394
  };
395
- border: (StringConstructor | NumberConstructor | BooleanConstructor)[];
395
+ border: (StringConstructor | BooleanConstructor | NumberConstructor)[];
396
396
  color: StringConstructor;
397
397
  disableResizeWatcher: BooleanConstructor;
398
398
  disableRouteWatcher: BooleanConstructor;
@@ -424,7 +424,7 @@ declare const VNavigationDrawer: {
424
424
  default: number;
425
425
  };
426
426
  location: {
427
- type: PropType<"left" | "right" | "end" | "top" | "bottom" | "start">;
427
+ type: PropType<"end" | "start" | "left" | "top" | "bottom" | "right">;
428
428
  default: string;
429
429
  validator: (value: any) => boolean;
430
430
  };
@@ -434,12 +434,12 @@ declare const VNavigationDrawer: {
434
434
  tag: Omit<{
435
435
  type: StringConstructor;
436
436
  default: string;
437
- }, "default" | "type"> & {
437
+ }, "type" | "default"> & {
438
438
  type: PropType<string>;
439
439
  default: string;
440
440
  };
441
441
  rounded: {
442
- type: (StringConstructor | NumberConstructor | BooleanConstructor)[];
442
+ type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
443
443
  default: undefined;
444
444
  };
445
445
  tile: BooleanConstructor;
@@ -458,7 +458,7 @@ declare const VNavigationDrawer: {
458
458
  mobile: Omit<{
459
459
  type: PropType<boolean | null>;
460
460
  default: boolean;
461
- }, "default" | "type"> & {
461
+ }, "type" | "default"> & {
462
462
  type: PropType<NonNullable<boolean | null> | null>;
463
463
  default: NonNullable<boolean | null> | null;
464
464
  };
@@ -470,7 +470,7 @@ declare const VNavigationDrawer: {
470
470
  type: PropType<vue.StyleValue>;
471
471
  default: null;
472
472
  };
473
- border: (StringConstructor | NumberConstructor | BooleanConstructor)[];
473
+ border: (StringConstructor | BooleanConstructor | NumberConstructor)[];
474
474
  color: StringConstructor;
475
475
  disableResizeWatcher: BooleanConstructor;
476
476
  disableRouteWatcher: BooleanConstructor;
@@ -502,7 +502,7 @@ declare const VNavigationDrawer: {
502
502
  default: number;
503
503
  };
504
504
  location: {
505
- type: PropType<"left" | "right" | "end" | "top" | "bottom" | "start">;
505
+ type: PropType<"end" | "start" | "left" | "top" | "bottom" | "right">;
506
506
  default: string;
507
507
  validator: (value: any) => boolean;
508
508
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sticky.mjs","names":["computed","onBeforeUnmount","onMounted","shallowRef","watch","convertToUnit","useSticky","_ref","rootEl","isSticky","layoutItemStyles","isStuck","stuckPosition","stickyStyles","side","value","top","bottom","height","undefined","val","window","addEventListener","onScroll","passive","removeEventListener","immediate","lastScrollTop","direction","scrollY","rect","getBoundingClientRect","layoutTop","parseFloat","Math","max","innerHeight","bodyScroll","getComputedStyle","getPropertyValue"],"sources":["../../../src/components/VNavigationDrawer/sticky.ts"],"sourcesContent":["// Utilities\nimport { computed, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue'\nimport { convertToUnit } from '@/util'\n\n// Types\nimport type { CSSProperties, Ref } from 'vue'\n\ninterface StickyProps {\n rootEl: Ref<HTMLElement | undefined>\n isSticky: Ref<boolean>\n layoutItemStyles: Ref<CSSProperties>\n}\n\nexport function useSticky ({ rootEl, isSticky, layoutItemStyles }: StickyProps) {\n const isStuck = shallowRef<boolean | 'top' | 'bottom'>(false)\n const stuckPosition = shallowRef(0)\n\n const stickyStyles = computed(() => {\n const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value\n return [\n isSticky.value ? { top: 'auto', bottom: 'auto', height: undefined } : undefined,\n isStuck.value\n ? { [side]: convertToUnit(stuckPosition.value) }\n : { top: layoutItemStyles.value.top },\n ]\n })\n\n onMounted(() => {\n watch(isSticky, val => {\n if (val) {\n window.addEventListener('scroll', onScroll, { passive: true })\n } else {\n window.removeEventListener('scroll', onScroll)\n }\n }, { immediate: true })\n })\n\n onBeforeUnmount(() => {\n window.removeEventListener('scroll', onScroll)\n })\n\n let lastScrollTop = 0\n function onScroll () {\n const direction = lastScrollTop > window.scrollY ? 'up' : 'down'\n const rect = rootEl.value!.getBoundingClientRect()\n const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0)\n const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop)\n const bottom =\n rect.height +\n Math.max(stuckPosition.value, layoutTop) -\n window.scrollY -\n window.innerHeight\n const bodyScroll = parseFloat(getComputedStyle(rootEl.value!).getPropertyValue('--v-body-scroll-y')) || 0\n\n if (rect.height < window.innerHeight - layoutTop) {\n isStuck.value = 'top'\n stuckPosition.value = layoutTop\n } else if (\n (direction === 'up' && isStuck.value === 'bottom') ||\n (direction === 'down' && isStuck.value === 'top')\n ) {\n stuckPosition.value = window.scrollY + rect.top - bodyScroll\n isStuck.value = true\n } else if (direction === 'down' && bottom <= 0) {\n stuckPosition.value = 0\n isStuck.value = 'bottom'\n } else if (direction === 'up' && top <= 0) {\n if (!bodyScroll) {\n stuckPosition.value = rect.top + top\n isStuck.value = 'top'\n } else if (isStuck.value !== 'top') {\n stuckPosition.value = -top + bodyScroll + layoutTop\n isStuck.value = 'top'\n }\n }\n\n lastScrollTop = window.scrollY\n }\n\n return { isStuck, stickyStyles }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"sticky.mjs","names":["computed","onBeforeUnmount","onMounted","shallowRef","watch","convertToUnit","useSticky","_ref","rootEl","isSticky","layoutItemStyles","isStuck","stuckPosition","stickyStyles","side","value","top","bottom","height","undefined","val","window","addEventListener","onScroll","passive","removeEventListener","immediate","lastScrollTop","direction","scrollY","rect","getBoundingClientRect","layoutTop","parseFloat","Math","max","innerHeight","bodyScroll","getComputedStyle","getPropertyValue"],"sources":["../../../src/components/VNavigationDrawer/sticky.ts"],"sourcesContent":["// Utilities\nimport { computed, onBeforeUnmount, onMounted, shallowRef, watch } from 'vue'\nimport { convertToUnit } from '@/util'\n\n// Types\nimport type { CSSProperties, Ref, StyleValue } from 'vue'\n\ninterface StickyProps {\n rootEl: Ref<HTMLElement | undefined>\n isSticky: Ref<boolean>\n layoutItemStyles: Ref<CSSProperties>\n}\n\nexport function useSticky ({ rootEl, isSticky, layoutItemStyles }: StickyProps) {\n const isStuck = shallowRef<boolean | 'top' | 'bottom'>(false)\n const stuckPosition = shallowRef(0)\n\n const stickyStyles = computed<StyleValue>(() => {\n const side = typeof isStuck.value === 'boolean' ? 'top' : isStuck.value\n return [\n isSticky.value ? { top: 'auto', bottom: 'auto', height: undefined } : undefined,\n isStuck.value\n ? { [side]: convertToUnit(stuckPosition.value) }\n : { top: layoutItemStyles.value.top },\n ]\n })\n\n onMounted(() => {\n watch(isSticky, val => {\n if (val) {\n window.addEventListener('scroll', onScroll, { passive: true })\n } else {\n window.removeEventListener('scroll', onScroll)\n }\n }, { immediate: true })\n })\n\n onBeforeUnmount(() => {\n window.removeEventListener('scroll', onScroll)\n })\n\n let lastScrollTop = 0\n function onScroll () {\n const direction = lastScrollTop > window.scrollY ? 'up' : 'down'\n const rect = rootEl.value!.getBoundingClientRect()\n const layoutTop = parseFloat(layoutItemStyles.value.top ?? 0)\n const top = window.scrollY - Math.max(0, stuckPosition.value - layoutTop)\n const bottom =\n rect.height +\n Math.max(stuckPosition.value, layoutTop) -\n window.scrollY -\n window.innerHeight\n const bodyScroll = parseFloat(getComputedStyle(rootEl.value!).getPropertyValue('--v-body-scroll-y')) || 0\n\n if (rect.height < window.innerHeight - layoutTop) {\n isStuck.value = 'top'\n stuckPosition.value = layoutTop\n } else if (\n (direction === 'up' && isStuck.value === 'bottom') ||\n (direction === 'down' && isStuck.value === 'top')\n ) {\n stuckPosition.value = window.scrollY + rect.top - bodyScroll\n isStuck.value = true\n } else if (direction === 'down' && bottom <= 0) {\n stuckPosition.value = 0\n isStuck.value = 'bottom'\n } else if (direction === 'up' && top <= 0) {\n if (!bodyScroll) {\n stuckPosition.value = rect.top + top\n isStuck.value = 'top'\n } else if (isStuck.value !== 'top') {\n stuckPosition.value = -top + bodyScroll + layoutTop\n isStuck.value = 'top'\n }\n }\n\n lastScrollTop = window.scrollY\n }\n\n return { isStuck, stickyStyles }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -122,7 +122,7 @@ export const VOtpInput = genericComponent()({
122
122
  function onPaste(index, e) {
123
123
  e.preventDefault();
124
124
  e.stopPropagation();
125
- const clipboardText = e?.clipboardData?.getData('Text') ?? '';
125
+ const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
126
126
  if (isValidNumber(clipboardText)) return;
127
127
  model.value = clipboardText.split('');
128
128
  inputRef.value?.[index].blur();
@@ -1 +1 @@
1
- {"version":3,"file":"VOtpInput.mjs","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useLocale","useProxiedModel","computed","nextTick","ref","watch","filterInputAttrs","focusChild","genericComponent","only","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","onInput","isValidNumber","array","slice","target","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardText","clipboardData","getData","reset","onFocus","onBlur","test","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createVNode","_mergeProps","class","style","map","_","i","_Fragment","loader","event","loading","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...only(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text') ?? ''\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n inputRef.value?.[index].blur()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: computed(() => props.color),\n bgColor: computed(() => props.color),\n baseColor: computed(() => props.baseColor),\n disabled: computed(() => props.disabled),\n error: computed(() => props.error),\n variant: computed(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''))\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength=\"1\"\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n content-class=\"v-otp-input__loader\"\n model-value={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VOtpInput.mjs","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useLocale","useProxiedModel","computed","nextTick","ref","watch","filterInputAttrs","focusChild","genericComponent","only","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","onInput","isValidNumber","array","slice","target","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardText","clipboardData","getData","reset","onFocus","onBlur","test","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createVNode","_mergeProps","class","style","map","_","i","_Fragment","loader","event","loading","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...only(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? ''\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n inputRef.value?.[index].blur()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: computed(() => props.color),\n bgColor: computed(() => props.color),\n baseColor: computed(() => props.baseColor),\n disabled: computed(() => props.disabled),\n error: computed(() => props.error),\n variant: computed(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''))\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength=\"1\"\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n content-class=\"v-otp-input__loader\"\n model-value={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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","ignoreList":[]}