vuetify 2.5.13 → 2.6.1

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 (225) hide show
  1. package/dist/json/attributes.json +188 -0
  2. package/dist/json/tags.json +86 -20
  3. package/dist/json/web-types.json +697 -139
  4. package/dist/vuetify.css +136 -5
  5. package/dist/vuetify.css.map +1 -1
  6. package/dist/vuetify.js +927 -304
  7. package/dist/vuetify.js.map +1 -1
  8. package/dist/vuetify.min.css +2 -2
  9. package/dist/vuetify.min.js +2 -2
  10. package/es5/components/VAutocomplete/VAutocomplete.js +1 -0
  11. package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
  12. package/es5/components/VBanner/VBanner.js +3 -2
  13. package/es5/components/VBanner/VBanner.js.map +1 -1
  14. package/es5/components/VBottomSheet/VBottomSheet.js +1 -4
  15. package/es5/components/VBottomSheet/VBottomSheet.js.map +1 -1
  16. package/es5/components/VCalendar/VCalendar.js +2 -2
  17. package/es5/components/VCalendar/VCalendar.js.map +1 -1
  18. package/es5/components/VCalendar/VCalendarDaily.js +16 -8
  19. package/es5/components/VCalendar/VCalendarDaily.js.map +1 -1
  20. package/es5/components/VCalendar/VCalendarWeekly.js +14 -10
  21. package/es5/components/VCalendar/VCalendarWeekly.js.map +1 -1
  22. package/es5/components/VCalendar/mixins/calendar-with-events.js +19 -20
  23. package/es5/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
  24. package/es5/components/VCalendar/mixins/mouse.js +13 -4
  25. package/es5/components/VCalendar/mixins/mouse.js.map +1 -1
  26. package/es5/components/VDataTable/MobileRow.js +2 -2
  27. package/es5/components/VDataTable/MobileRow.js.map +1 -1
  28. package/es5/components/VDataTable/Row.js +25 -9
  29. package/es5/components/VDataTable/Row.js.map +1 -1
  30. package/es5/components/VDataTable/VDataTableHeaderDesktop.js +1 -1
  31. package/es5/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
  32. package/es5/components/VDatePicker/mixins/date-picker-table.js +13 -3
  33. package/es5/components/VDatePicker/mixins/date-picker-table.js.map +1 -1
  34. package/es5/components/VDialog/VDialog.js +4 -10
  35. package/es5/components/VDialog/VDialog.js.map +1 -1
  36. package/es5/components/VInput/VInput.js +3 -1
  37. package/es5/components/VInput/VInput.js.map +1 -1
  38. package/es5/components/VItemGroup/VItemGroup.js +8 -4
  39. package/es5/components/VItemGroup/VItemGroup.js.map +1 -1
  40. package/es5/components/VMenu/VMenu.js +1 -1
  41. package/es5/components/VMenu/VMenu.js.map +1 -1
  42. package/es5/components/VOtpInput/VOtpInput.js +375 -0
  43. package/es5/components/VOtpInput/VOtpInput.js.map +1 -0
  44. package/es5/components/VOtpInput/index.js +20 -0
  45. package/es5/components/VOtpInput/index.js.map +1 -0
  46. package/es5/components/VRadioGroup/VRadioGroup.js +1 -3
  47. package/es5/components/VRadioGroup/VRadioGroup.js.map +1 -1
  48. package/es5/components/VSlideGroup/VSlideGroup.js +8 -1
  49. package/es5/components/VSlideGroup/VSlideGroup.js.map +1 -1
  50. package/es5/components/VSnackbar/VSnackbar.js +4 -8
  51. package/es5/components/VSnackbar/VSnackbar.js.map +1 -1
  52. package/es5/components/VTabs/VTab.js +3 -2
  53. package/es5/components/VTabs/VTab.js.map +1 -1
  54. package/es5/components/VTextField/VTextField.js +6 -1
  55. package/es5/components/VTextField/VTextField.js.map +1 -1
  56. package/es5/components/VTooltip/VTooltip.js +0 -1
  57. package/es5/components/VTooltip/VTooltip.js.map +1 -1
  58. package/es5/components/VTreeview/VTreeview.js +2 -1
  59. package/es5/components/VTreeview/VTreeview.js.map +1 -1
  60. package/es5/components/VTreeview/VTreeviewNode.js +3 -1
  61. package/es5/components/VTreeview/VTreeviewNode.js.map +1 -1
  62. package/es5/components/index.js +13 -0
  63. package/es5/components/index.js.map +1 -1
  64. package/es5/directives/click-outside/index.js +3 -1
  65. package/es5/directives/click-outside/index.js.map +1 -1
  66. package/es5/directives/intersect/index.js +8 -5
  67. package/es5/directives/intersect/index.js.map +1 -1
  68. package/es5/directives/mutate/index.js +3 -2
  69. package/es5/directives/mutate/index.js.map +1 -1
  70. package/es5/directives/resize/index.js +3 -1
  71. package/es5/directives/resize/index.js.map +1 -1
  72. package/es5/directives/ripple/index.js +0 -7
  73. package/es5/directives/ripple/index.js.map +1 -1
  74. package/es5/directives/scroll/index.js.map +1 -1
  75. package/es5/framework.js +1 -1
  76. package/es5/locale/da.js +77 -0
  77. package/es5/locale/da.js.map +1 -0
  78. package/es5/locale/index.js +8 -0
  79. package/es5/locale/index.js.map +1 -1
  80. package/es5/locale/it.js +6 -6
  81. package/es5/locale/it.js.map +1 -1
  82. package/es5/mixins/intersectable/index.js +6 -0
  83. package/es5/mixins/intersectable/index.js.map +1 -1
  84. package/es5/mixins/routable/index.js +2 -5
  85. package/es5/mixins/routable/index.js.map +1 -1
  86. package/es5/util/helpers.js +13 -6
  87. package/es5/util/helpers.js.map +1 -1
  88. package/lib/components/VAutocomplete/VAutocomplete.js +1 -0
  89. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  90. package/lib/components/VBanner/VBanner.js +3 -2
  91. package/lib/components/VBanner/VBanner.js.map +1 -1
  92. package/lib/components/VBottomSheet/VBottomSheet.js +1 -4
  93. package/lib/components/VBottomSheet/VBottomSheet.js.map +1 -1
  94. package/lib/components/VCalendar/VCalendar.js +2 -2
  95. package/lib/components/VCalendar/VCalendar.js.map +1 -1
  96. package/lib/components/VCalendar/VCalendarDaily.js +20 -8
  97. package/lib/components/VCalendar/VCalendarDaily.js.map +1 -1
  98. package/lib/components/VCalendar/VCalendarWeekly.js +10 -2
  99. package/lib/components/VCalendar/VCalendarWeekly.js.map +1 -1
  100. package/lib/components/VCalendar/mixins/calendar-with-events.js +6 -3
  101. package/lib/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
  102. package/lib/components/VCalendar/mixins/mouse.js +9 -4
  103. package/lib/components/VCalendar/mixins/mouse.js.map +1 -1
  104. package/lib/components/VDataTable/MobileRow.js +2 -2
  105. package/lib/components/VDataTable/MobileRow.js.map +1 -1
  106. package/lib/components/VDataTable/Row.js +15 -8
  107. package/lib/components/VDataTable/Row.js.map +1 -1
  108. package/lib/components/VDataTable/VDataTableHeaderDesktop.js +1 -1
  109. package/lib/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
  110. package/lib/components/VDatePicker/mixins/date-picker-table.js +12 -2
  111. package/lib/components/VDatePicker/mixins/date-picker-table.js.map +1 -1
  112. package/lib/components/VDialog/VDialog.js +4 -10
  113. package/lib/components/VDialog/VDialog.js.map +1 -1
  114. package/lib/components/VInput/VInput.js +2 -0
  115. package/lib/components/VInput/VInput.js.map +1 -1
  116. package/lib/components/VItemGroup/VItemGroup.js +7 -5
  117. package/lib/components/VItemGroup/VItemGroup.js.map +1 -1
  118. package/lib/components/VMenu/VMenu.js +1 -1
  119. package/lib/components/VMenu/VMenu.js.map +1 -1
  120. package/lib/components/VOtpInput/VOtpInput.js +342 -0
  121. package/lib/components/VOtpInput/VOtpInput.js.map +1 -0
  122. package/lib/components/VOtpInput/index.js +4 -0
  123. package/lib/components/VOtpInput/index.js.map +1 -0
  124. package/lib/components/VRadioGroup/VRadioGroup.js +2 -4
  125. package/lib/components/VRadioGroup/VRadioGroup.js.map +1 -1
  126. package/lib/components/VSlideGroup/VSlideGroup.js +9 -1
  127. package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
  128. package/lib/components/VSnackbar/VSnackbar.js +4 -8
  129. package/lib/components/VSnackbar/VSnackbar.js.map +1 -1
  130. package/lib/components/VTabs/VTab.js +3 -2
  131. package/lib/components/VTabs/VTab.js.map +1 -1
  132. package/lib/components/VTextField/VTextField.js +8 -1
  133. package/lib/components/VTextField/VTextField.js.map +1 -1
  134. package/lib/components/VTooltip/VTooltip.js +0 -1
  135. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  136. package/lib/components/VTreeview/VTreeview.js +2 -1
  137. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  138. package/lib/components/VTreeview/VTreeviewNode.js +3 -1
  139. package/lib/components/VTreeview/VTreeviewNode.js.map +1 -1
  140. package/lib/components/index.js +1 -0
  141. package/lib/components/index.js.map +1 -1
  142. package/lib/directives/click-outside/index.js +3 -1
  143. package/lib/directives/click-outside/index.js.map +1 -1
  144. package/lib/directives/intersect/index.js +7 -5
  145. package/lib/directives/intersect/index.js.map +1 -1
  146. package/lib/directives/mutate/index.js +3 -2
  147. package/lib/directives/mutate/index.js.map +1 -1
  148. package/lib/directives/resize/index.js +3 -1
  149. package/lib/directives/resize/index.js.map +1 -1
  150. package/lib/directives/ripple/index.js +0 -7
  151. package/lib/directives/ripple/index.js.map +1 -1
  152. package/lib/directives/scroll/index.js.map +1 -1
  153. package/lib/framework.js +1 -1
  154. package/lib/locale/da.js +70 -0
  155. package/lib/locale/da.js.map +1 -0
  156. package/lib/locale/index.js +1 -0
  157. package/lib/locale/index.js.map +1 -1
  158. package/lib/locale/it.js +6 -6
  159. package/lib/locale/it.js.map +1 -1
  160. package/lib/mixins/intersectable/index.js +4 -0
  161. package/lib/mixins/intersectable/index.js.map +1 -1
  162. package/lib/mixins/routable/index.js +3 -5
  163. package/lib/mixins/routable/index.js.map +1 -1
  164. package/lib/util/helpers.js +13 -6
  165. package/lib/util/helpers.js.map +1 -1
  166. package/package.json +2 -2
  167. package/src/components/VAutocomplete/VAutocomplete.ts +2 -0
  168. package/src/components/VAutocomplete/__tests__/VAutocomplete3.spec.ts +16 -0
  169. package/src/components/VBanner/VBanner.ts +16 -10
  170. package/src/components/VBottomSheet/VBottomSheet.ts +1 -4
  171. package/src/components/VCalendar/VCalendar.ts +3 -2
  172. package/src/components/VCalendar/VCalendarCategory.sass +67 -0
  173. package/src/components/VCalendar/VCalendarDaily.ts +9 -8
  174. package/src/components/VCalendar/VCalendarWeekly.ts +4 -2
  175. package/src/components/VCalendar/_variables.scss +4 -0
  176. package/src/components/VCalendar/mixins/calendar-with-events.ts +4 -3
  177. package/src/components/VCalendar/mixins/mouse.ts +10 -4
  178. package/src/components/VDataTable/MobileRow.ts +2 -2
  179. package/src/components/VDataTable/Row.ts +23 -16
  180. package/src/components/VDataTable/VDataTableHeaderDesktop.ts +1 -1
  181. package/src/components/VDatePicker/__tests__/VDatePicker.date.spec.ts +16 -0
  182. package/src/components/VDatePicker/__tests__/VDatePicker.month.spec.ts +16 -0
  183. package/src/components/VDatePicker/mixins/date-picker-table.ts +24 -2
  184. package/src/components/VDialog/VDialog.ts +4 -10
  185. package/src/components/VInput/VInput.sass +8 -0
  186. package/src/components/VInput/VInput.ts +2 -0
  187. package/src/components/VItemGroup/VItemGroup.ts +5 -3
  188. package/src/components/VItemGroup/__tests__/VItemGroup.spec.ts +19 -2
  189. package/src/components/VMenu/VMenu.ts +1 -1
  190. package/src/components/VOtpInput/VOtpInput.sass +37 -0
  191. package/src/components/VOtpInput/VOtpInput.ts +322 -0
  192. package/src/components/VOtpInput/__tests__/VOtpInput.spec.ts +294 -0
  193. package/src/components/VOtpInput/_variables.scss +4 -0
  194. package/src/components/VOtpInput/index.ts +4 -0
  195. package/src/components/VRadioGroup/VRadioGroup.ts +0 -4
  196. package/src/components/VSlideGroup/VSlideGroup.ts +14 -1
  197. package/src/components/VSnackbar/VSnackbar.ts +3 -7
  198. package/src/components/VSnackbar/__tests__/VSnackbar.spec.ts +4 -1
  199. package/src/components/VStepper/VStepper.sass +4 -4
  200. package/src/components/VTabs/VTab.ts +10 -2
  201. package/src/components/VTextField/VTextField.ts +8 -3
  202. package/src/components/VTooltip/VTooltip.sass +4 -1
  203. package/src/components/VTooltip/VTooltip.ts +0 -1
  204. package/src/components/VTooltip/_variables.scss +1 -0
  205. package/src/components/VTreeview/VTreeview.ts +2 -1
  206. package/src/components/VTreeview/VTreeviewNode.ts +3 -1
  207. package/src/components/index.ts +1 -0
  208. package/src/directives/click-outside/index.ts +2 -2
  209. package/src/directives/intersect/index.ts +6 -5
  210. package/src/directives/mutate/index.ts +2 -3
  211. package/src/directives/resize/index.ts +2 -2
  212. package/src/directives/ripple/VRipple.sass +4 -1
  213. package/src/directives/ripple/index.ts +0 -7
  214. package/src/directives/scroll/index.ts +1 -1
  215. package/src/globals.d.ts +5 -5
  216. package/src/locale/da.ts +69 -0
  217. package/src/locale/index.ts +1 -0
  218. package/src/locale/it.ts +6 -6
  219. package/src/mixins/intersectable/index.ts +6 -0
  220. package/src/mixins/routable/index.ts +1 -4
  221. package/src/styles/settings/_variables.scss +4 -3
  222. package/src/util/__tests__/__snapshots__/helpers.spec.ts.snap +11 -0
  223. package/src/util/__tests__/helpers.spec.ts +17 -0
  224. package/src/util/helpers.ts +14 -7
  225. package/src/directives/ripple/_variables.scss +0 -6
@@ -0,0 +1,375 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ require("../../../src/components/VTextField/VTextField.sass");
9
+
10
+ require("../../../src/components/VOtpInput/VOtpInput.sass");
11
+
12
+ var _VInput = _interopRequireDefault(require("../VInput"));
13
+
14
+ var _VTextField2 = _interopRequireDefault(require("../VTextField/VTextField"));
15
+
16
+ var _ripple = _interopRequireDefault(require("../../directives/ripple"));
17
+
18
+ var _helpers = require("../../util/helpers");
19
+
20
+ var _console = require("../../util/console");
21
+
22
+ var _mixins = _interopRequireDefault(require("../../util/mixins"));
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
27
+
28
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
29
+
30
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
31
+
32
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
33
+
34
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
35
+
36
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
37
+
38
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
39
+
40
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
41
+
42
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
43
+
44
+ var baseMixins = (0, _mixins.default)(_VInput.default);
45
+ /* @vue/component */
46
+
47
+ var _default = baseMixins.extend().extend({
48
+ name: 'v-otp-input',
49
+ directives: {
50
+ ripple: _ripple.default
51
+ },
52
+ inheritAttrs: false,
53
+ props: {
54
+ length: {
55
+ type: [Number, String],
56
+ default: 6
57
+ },
58
+ type: {
59
+ type: String,
60
+ default: 'text'
61
+ },
62
+ plain: Boolean
63
+ },
64
+ data: function data() {
65
+ return {
66
+ badInput: false,
67
+ initialValue: null,
68
+ isBooted: false,
69
+ otp: []
70
+ };
71
+ },
72
+ computed: {
73
+ outlined: function outlined() {
74
+ return !this.plain;
75
+ },
76
+ classes: function classes() {
77
+ return _objectSpread(_objectSpread(_objectSpread({}, _VInput.default.options.computed.classes.call(this)), _VTextField2.default.options.computed.classes.call(this)), {}, {
78
+ 'v-otp-input--plain': this.plain
79
+ });
80
+ },
81
+ isDirty: function isDirty() {
82
+ return _VInput.default.options.computed.isDirty.call(this) || this.badInput;
83
+ }
84
+ },
85
+ watch: {
86
+ isFocused: 'updateValue',
87
+ value: function value(val) {
88
+ this.lazyValue = val;
89
+ }
90
+ },
91
+ created: function created() {
92
+ var _this$internalValue;
93
+
94
+ /* istanbul ignore next */
95
+ if (this.$attrs.hasOwnProperty('browser-autocomplete')) {
96
+ (0, _console.breaking)('browser-autocomplete', 'autocomplete', this);
97
+ }
98
+
99
+ this.otp = ((_this$internalValue = this.internalValue) == null ? void 0 : _this$internalValue.split('')) || [];
100
+ },
101
+ mounted: function mounted() {
102
+ var _this = this;
103
+
104
+ requestAnimationFrame(function () {
105
+ return _this.isBooted = true;
106
+ });
107
+ },
108
+ methods: {
109
+ /** @public */
110
+ focus: function focus(e, otpIdx) {
111
+ this.onFocus(e, otpIdx || 0);
112
+ },
113
+ genInputSlot: function genInputSlot(otpIdx) {
114
+ var _this2 = this;
115
+
116
+ return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {
117
+ staticClass: 'v-input__slot',
118
+ style: {
119
+ height: (0, _helpers.convertToUnit)(this.height)
120
+ },
121
+ on: {
122
+ click: function click() {
123
+ return _this2.onClick(otpIdx);
124
+ },
125
+ mousedown: function mousedown(e) {
126
+ return _this2.onMouseDown(e, otpIdx);
127
+ },
128
+ mouseup: function mouseup(e) {
129
+ return _this2.onMouseUp(e, otpIdx);
130
+ }
131
+ }
132
+ }), [this.genDefaultSlot(otpIdx)]);
133
+ },
134
+ genControl: function genControl(otpIdx) {
135
+ return this.$createElement('div', {
136
+ staticClass: 'v-input__control'
137
+ }, [this.genInputSlot(otpIdx)]);
138
+ },
139
+ genDefaultSlot: function genDefaultSlot(otpIdx) {
140
+ return [this.genFieldset(), this.genTextFieldSlot(otpIdx)];
141
+ },
142
+ genContent: function genContent() {
143
+ var _this3 = this;
144
+
145
+ return Array.from({
146
+ length: +this.length
147
+ }, function (_, i) {
148
+ return _this3.$createElement('div', _this3.setTextColor(_this3.validationState, {
149
+ staticClass: 'v-input',
150
+ class: _this3.classes
151
+ }), [_this3.genControl(i)]);
152
+ });
153
+ },
154
+ genFieldset: function genFieldset() {
155
+ return this.$createElement('fieldset', {
156
+ attrs: {
157
+ 'aria-hidden': true
158
+ }
159
+ }, [this.genLegend()]);
160
+ },
161
+ genLegend: function genLegend() {
162
+ var span = this.$createElement('span', {
163
+ domProps: {
164
+ innerHTML: '&#8203;'
165
+ }
166
+ });
167
+ return this.$createElement('legend', {
168
+ style: {
169
+ width: '0px'
170
+ }
171
+ }, [span]);
172
+ },
173
+ genInput: function genInput(otpIdx) {
174
+ var _this4 = this;
175
+
176
+ var listeners = Object.assign({}, this.listeners$);
177
+ delete listeners.change; // Change should not be bound externally
178
+
179
+ return this.$createElement('input', {
180
+ style: {},
181
+ domProps: {
182
+ value: this.otp[otpIdx],
183
+ min: this.type === 'number' ? 0 : null
184
+ },
185
+ attrs: _objectSpread(_objectSpread({}, this.attrs$), {}, {
186
+ disabled: this.isDisabled,
187
+ readonly: this.isReadonly,
188
+ type: this.type,
189
+ id: "".concat(this.computedId, "--").concat(otpIdx),
190
+ class: "otp-field-box--".concat(otpIdx),
191
+ maxlength: 1
192
+ }),
193
+ on: Object.assign(listeners, {
194
+ blur: this.onBlur,
195
+ input: function input(e) {
196
+ return _this4.onInput(e, otpIdx);
197
+ },
198
+ focus: function focus(e) {
199
+ return _this4.onFocus(e, otpIdx);
200
+ },
201
+ paste: function paste(e) {
202
+ return _this4.onPaste(e, otpIdx);
203
+ },
204
+ keydown: this.onKeyDown,
205
+ keyup: function keyup(e) {
206
+ return _this4.onKeyUp(e, otpIdx);
207
+ }
208
+ }),
209
+ ref: 'input',
210
+ refInFor: true
211
+ });
212
+ },
213
+ genTextFieldSlot: function genTextFieldSlot(otpIdx) {
214
+ return this.$createElement('div', {
215
+ staticClass: 'v-text-field__slot'
216
+ }, [this.genInput(otpIdx)]);
217
+ },
218
+ onBlur: function onBlur(e) {
219
+ var _this5 = this;
220
+
221
+ this.isFocused = false;
222
+ e && this.$nextTick(function () {
223
+ return _this5.$emit('blur', e);
224
+ });
225
+ },
226
+ onClick: function onClick(otpIdx) {
227
+ if (this.isFocused || this.isDisabled || !this.$refs.input[otpIdx]) return;
228
+ this.onFocus(undefined, otpIdx);
229
+ },
230
+ onFocus: function onFocus(e, otpIdx) {
231
+ e == null ? void 0 : e.preventDefault();
232
+ e == null ? void 0 : e.stopPropagation();
233
+ var elements = this.$refs.input;
234
+ var ref = this.$refs.input && elements[otpIdx || 0];
235
+ if (!ref) return;
236
+
237
+ if (document.activeElement !== ref) {
238
+ ref.focus();
239
+ return ref.select();
240
+ }
241
+
242
+ if (!this.isFocused) {
243
+ this.isFocused = true;
244
+ ref.select();
245
+ e && this.$emit('focus', e);
246
+ }
247
+ },
248
+ onInput: function onInput(e, otpIdx) {
249
+ var _this6 = this;
250
+
251
+ var target = e.target;
252
+ var value = target.value;
253
+ this.applyValue(otpIdx, target.value, function () {
254
+ _this6.internalValue = _this6.otp.join('');
255
+ });
256
+ this.badInput = target.validity && target.validity.badInput;
257
+ var nextIndex = otpIdx + 1;
258
+
259
+ if (value) {
260
+ if (nextIndex < +this.length) {
261
+ this.changeFocus(nextIndex);
262
+ } else {
263
+ this.clearFocus(otpIdx);
264
+ this.onCompleted();
265
+ }
266
+ }
267
+ },
268
+ clearFocus: function clearFocus(index) {
269
+ var input = this.$refs.input[index];
270
+ input.blur();
271
+ },
272
+ onKeyDown: function onKeyDown(e) {
273
+ if (e.keyCode === _helpers.keyCodes.enter) {
274
+ this.$emit('change', this.internalValue);
275
+ }
276
+
277
+ this.$emit('keydown', e);
278
+ },
279
+ onMouseDown: function onMouseDown(e, otpIdx) {
280
+ // Prevent input from being blurred
281
+ if (e.target !== this.$refs.input[otpIdx]) {
282
+ e.preventDefault();
283
+ e.stopPropagation();
284
+ }
285
+
286
+ _VInput.default.options.methods.onMouseDown.call(this, e);
287
+ },
288
+ onMouseUp: function onMouseUp(e, otpIdx) {
289
+ if (this.hasMouseDown) this.focus(e, otpIdx);
290
+
291
+ _VInput.default.options.methods.onMouseUp.call(this, e);
292
+ },
293
+ onPaste: function onPaste(event, index) {
294
+ var _event$clipboardData;
295
+
296
+ var maxCursor = +this.length - 1;
297
+ var inputVal = event == null ? void 0 : (_event$clipboardData = event.clipboardData) == null ? void 0 : _event$clipboardData.getData('Text');
298
+ var inputDataArray = (inputVal == null ? void 0 : inputVal.split('')) || [];
299
+ event.preventDefault();
300
+
301
+ var newOtp = _toConsumableArray(this.otp);
302
+
303
+ for (var i = 0; i < inputDataArray.length; i++) {
304
+ var appIdx = index + i;
305
+ if (appIdx > maxCursor) break;
306
+ newOtp[appIdx] = inputDataArray[i].toString();
307
+ }
308
+
309
+ this.otp = newOtp;
310
+ var targetFocus = Math.min(index + inputDataArray.length, maxCursor);
311
+ this.changeFocus(targetFocus);
312
+
313
+ if (newOtp.length === +this.length) {
314
+ this.onCompleted();
315
+ this.clearFocus(targetFocus);
316
+ }
317
+ },
318
+ applyValue: function applyValue(index, inputVal, next) {
319
+ var newOtp = _toConsumableArray(this.otp);
320
+
321
+ newOtp[index] = inputVal;
322
+ this.otp = newOtp;
323
+ next();
324
+ },
325
+ changeFocus: function changeFocus(index) {
326
+ this.onFocus(undefined, index || 0);
327
+ },
328
+ updateValue: function updateValue(val) {
329
+ // Sets validationState from validatable
330
+ this.hasColor = val;
331
+
332
+ if (val) {
333
+ this.initialValue = this.lazyValue;
334
+ } else if (this.initialValue !== this.lazyValue) {
335
+ this.$emit('change', this.lazyValue);
336
+ }
337
+ },
338
+ onKeyUp: function onKeyUp(event, index) {
339
+ event.preventDefault();
340
+ var eventKey = event.key;
341
+
342
+ if (['Tab', 'Shift', 'Meta', 'Control', 'Alt'].includes(eventKey)) {
343
+ return;
344
+ }
345
+
346
+ if (['Delete'].includes(eventKey)) {
347
+ return;
348
+ }
349
+
350
+ if (eventKey === 'ArrowLeft' || eventKey === 'Backspace' && !this.otp[index]) {
351
+ return index > 0 && this.changeFocus(index - 1);
352
+ }
353
+
354
+ if (eventKey === 'ArrowRight') {
355
+ return index + 1 < +this.length && this.changeFocus(index + 1);
356
+ }
357
+ },
358
+ onCompleted: function onCompleted() {
359
+ var rsp = this.otp.join('');
360
+
361
+ if (rsp.length === +this.length) {
362
+ this.$emit('finish', rsp);
363
+ }
364
+ }
365
+ },
366
+ render: function render(h) {
367
+ return h('div', {
368
+ staticClass: 'v-otp-input',
369
+ class: this.themeClasses
370
+ }, this.genContent());
371
+ }
372
+ });
373
+
374
+ exports.default = _default;
375
+ //# sourceMappingURL=VOtpInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/VOtpInput/VOtpInput.ts"],"names":[],"mappings":";;;;;;;AACA;;AACA;;AAGA;;AACA;;AAEA;;AAGA;;AACA;;AAGA;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAM,UAAU,GAAG,qBACjB,eADiB,CAAnB;AAUA;;eACe,UAAU,CAAC,MAAX,GAA6B,MAA7B,CAAoC;AACjD,EAAA,IAAI,EAAE,aAD2C;AAGjD,EAAA,UAAU,EAAE;AACV,IAAA,MAAM,EAAN;AADU,GAHqC;AAOjD,EAAA,YAAY,EAAE,KAPmC;AASjD,EAAA,KAAK,EAAE;AACL,IAAA,MAAM,EAAE;AACN,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADA;AAEN,MAAA,OAAO,EAAE;AAFH,KADH;AAKL,IAAA,IAAI,EAAE;AACJ,MAAA,IAAI,EAAE,MADF;AAEJ,MAAA,OAAO,EAAE;AAFL,KALD;AASL,IAAA,KAAK,EAAE;AATF,GAT0C;AAqBjD,EAAA,IAAI,EAAE;AAAA,WAAO;AACX,MAAA,QAAQ,EAAE,KADC;AAEX,MAAA,YAAY,EAAE,IAFH;AAGX,MAAA,QAAQ,EAAE,KAHC;AAIX,MAAA,GAAG,EAAE;AAJM,KAAP;AAAA,GArB2C;AA4BjD,EAAA,QAAQ,EAAE;AACR,IAAA,QADQ,sBACA;AACN,aAAO,CAAC,KAAK,KAAb;AACD,KAHO;AAIR,IAAA,OAJQ,qBAID;AACL,2DACK,gBAAO,OAAP,CAAe,QAAf,CAAwB,OAAxB,CAAgC,IAAhC,CAAqC,IAArC,CADL,GAEK,qBAAW,OAAX,CAAmB,QAAnB,CAA4B,OAA5B,CAAoC,IAApC,CAAyC,IAAzC,CAFL;AAGE,8BAAsB,KAAK;AAH7B;AAKD,KAVO;AAWR,IAAA,OAXQ,qBAWD;AACL,aAAO,gBAAO,OAAP,CAAe,QAAf,CAAwB,OAAxB,CAAgC,IAAhC,CAAqC,IAArC,KAA8C,KAAK,QAA1D;AACD;AAbO,GA5BuC;AA4CjD,EAAA,KAAK,EAAE;AACL,IAAA,SAAS,EAAE,aADN;AAEL,IAAA,KAFK,iBAEE,GAFF,EAEK;AACR,WAAK,SAAL,GAAiB,GAAjB;AACD;AAJI,GA5C0C;AAmDjD,EAAA,OAnDiD,qBAmD1C;AAAA;;AACL;AACA,QAAI,KAAK,MAAL,CAAY,cAAZ,CAA2B,sBAA3B,CAAJ,EAAwD;AACtD,6BAAS,sBAAT,EAAiC,cAAjC,EAAiD,IAAjD;AACD;;AAED,SAAK,GAAL,GAAW,6BAAK,aAAL,yCAAoB,KAApB,CAA0B,EAA1B,MAAiC,EAA5C;AACD,GA1DgD;AA4DjD,EAAA,OA5DiD,qBA4D1C;AAAA;;AACL,IAAA,qBAAqB,CAAC;AAAA,aAAO,KAAI,CAAC,QAAL,GAAgB,IAAvB;AAAA,KAAD,CAArB;AACD,GA9DgD;AAgEjD,EAAA,OAAO,EAAE;AACP;AACA,IAAA,KAFO,iBAEA,CAFA,EAEU,MAFV,EAEwB;AAC7B,WAAK,OAAL,CAAa,CAAb,EAAgB,MAAM,IAAI,CAA1B;AACD,KAJM;AAKP,IAAA,YALO,wBAKO,MALP,EAKqB;AAAA;;AAC1B,aAAO,KAAK,cAAL,CAAoB,KAApB,EAA2B,KAAK,kBAAL,CAAwB,KAAK,eAA7B,EAA8C;AAC9E,QAAA,WAAW,EAAE,eADiE;AAE9E,QAAA,KAAK,EAAE;AAAE,UAAA,MAAM,EAAE,4BAAc,KAAK,MAAnB;AAAV,SAFuE;AAG9E,QAAA,EAAE,EAAE;AACF,UAAA,KAAK,EAAE;AAAA,mBAAM,MAAI,CAAC,OAAL,CAAa,MAAb,CAAN;AAAA,WADL;AAEF,UAAA,SAAS,EAAE,mBAAC,CAAD;AAAA,mBAAc,MAAI,CAAC,WAAL,CAAiB,CAAjB,EAAoB,MAApB,CAAd;AAAA,WAFT;AAGF,UAAA,OAAO,EAAE,iBAAC,CAAD;AAAA,mBAAc,MAAI,CAAC,SAAL,CAAe,CAAf,EAAkB,MAAlB,CAAd;AAAA;AAHP;AAH0E,OAA9C,CAA3B,EAQH,CAAC,KAAK,cAAL,CAAoB,MAApB,CAAD,CARG,CAAP;AASD,KAfM;AAgBP,IAAA,UAhBO,sBAgBK,MAhBL,EAgBmB;AACxB,aAAO,KAAK,cAAL,CAAoB,KAApB,EAA2B;AAChC,QAAA,WAAW,EAAE;AADmB,OAA3B,EAEJ,CACD,KAAK,YAAL,CAAkB,MAAlB,CADC,CAFI,CAAP;AAKD,KAtBM;AAuBP,IAAA,cAvBO,0BAuBS,MAvBT,EAuBuB;AAC5B,aAAO,CACL,KAAK,WAAL,EADK,EAEL,KAAK,gBAAL,CAAsB,MAAtB,CAFK,CAAP;AAID,KA5BM;AA6BP,IAAA,UA7BO,wBA6BG;AAAA;;AACR,aAAO,KAAK,CAAC,IAAN,CAAW;AAAE,QAAA,MAAM,EAAE,CAAC,KAAK;AAAhB,OAAX,EAAqC,UAAC,CAAD,EAAI,CAAJ,EAAS;AACnD,eAAO,MAAI,CAAC,cAAL,CAAoB,KAApB,EAA2B,MAAI,CAAC,YAAL,CAAkB,MAAI,CAAC,eAAvB,EAAwC;AACxE,UAAA,WAAW,EAAE,SAD2D;AAExE,UAAA,KAAK,EAAE,MAAI,CAAC;AAF4D,SAAxC,CAA3B,EAGH,CAAC,MAAI,CAAC,UAAL,CAAgB,CAAhB,CAAD,CAHG,CAAP;AAID,OALM,CAAP;AAMD,KApCM;AAqCP,IAAA,WArCO,yBAqCI;AACT,aAAO,KAAK,cAAL,CAAoB,UAApB,EAAgC;AACrC,QAAA,KAAK,EAAE;AACL,yBAAe;AADV;AAD8B,OAAhC,EAIJ,CAAC,KAAK,SAAL,EAAD,CAJI,CAAP;AAKD,KA3CM;AA4CP,IAAA,SA5CO,uBA4CE;AACP,UAAM,IAAI,GAAG,KAAK,cAAL,CAAoB,MAApB,EAA4B;AACvC,QAAA,QAAQ,EAAE;AAAE,UAAA,SAAS,EAAE;AAAb;AAD6B,OAA5B,CAAb;AAIA,aAAO,KAAK,cAAL,CAAoB,QAApB,EAA8B;AACnC,QAAA,KAAK,EAAE;AACL,UAAA,KAAK,EAAE;AADF;AAD4B,OAA9B,EAIJ,CAAC,IAAD,CAJI,CAAP;AAKD,KAtDM;AAuDP,IAAA,QAvDO,oBAuDG,MAvDH,EAuDiB;AAAA;;AACtB,UAAM,SAAS,GAAG,MAAM,CAAC,MAAP,CAAc,EAAd,EAAkB,KAAK,UAAvB,CAAlB;AACA,aAAO,SAAS,CAAC,MAAjB,CAFsB,CAEE;;AAExB,aAAO,KAAK,cAAL,CAAoB,OAApB,EAA6B;AAClC,QAAA,KAAK,EAAE,EAD2B;AAElC,QAAA,QAAQ,EAAE;AACR,UAAA,KAAK,EAAE,KAAK,GAAL,CAAS,MAAT,CADC;AAER,UAAA,GAAG,EAAE,KAAK,IAAL,KAAc,QAAd,GAAyB,CAAzB,GAA6B;AAF1B,SAFwB;AAMlC,QAAA,KAAK,kCACA,KAAK,MADL;AAEH,UAAA,QAAQ,EAAE,KAAK,UAFZ;AAGH,UAAA,QAAQ,EAAE,KAAK,UAHZ;AAIH,UAAA,IAAI,EAAE,KAAK,IAJR;AAKH,UAAA,EAAE,YAAK,KAAK,UAAV,eAAyB,MAAzB,CALC;AAMH,UAAA,KAAK,2BAAoB,MAApB,CANF;AAOH,UAAA,SAAS,EAAE;AAPR,UAN6B;AAelC,QAAA,EAAE,EAAE,MAAM,CAAC,MAAP,CAAc,SAAd,EAAyB;AAC3B,UAAA,IAAI,EAAE,KAAK,MADgB;AAE3B,UAAA,KAAK,EAAE,eAAC,CAAD;AAAA,mBAAc,MAAI,CAAC,OAAL,CAAa,CAAb,EAAgB,MAAhB,CAAd;AAAA,WAFoB;AAG3B,UAAA,KAAK,EAAE,eAAC,CAAD;AAAA,mBAAc,MAAI,CAAC,OAAL,CAAa,CAAb,EAAgB,MAAhB,CAAd;AAAA,WAHoB;AAI3B,UAAA,KAAK,EAAE,eAAC,CAAD;AAAA,mBAAuB,MAAI,CAAC,OAAL,CAAa,CAAb,EAAgB,MAAhB,CAAvB;AAAA,WAJoB;AAK3B,UAAA,OAAO,EAAE,KAAK,SALa;AAM3B,UAAA,KAAK,EAAE,eAAC,CAAD;AAAA,mBAAsB,MAAI,CAAC,OAAL,CAAa,CAAb,EAAgB,MAAhB,CAAtB;AAAA;AANoB,SAAzB,CAf8B;AAuBlC,QAAA,GAAG,EAAE,OAvB6B;AAwBlC,QAAA,QAAQ,EAAE;AAxBwB,OAA7B,CAAP;AA0BD,KArFM;AAsFP,IAAA,gBAtFO,4BAsFW,MAtFX,EAsFyB;AAC9B,aAAO,KAAK,cAAL,CAAoB,KAApB,EAA2B;AAChC,QAAA,WAAW,EAAE;AADmB,OAA3B,EAEJ,CACD,KAAK,QAAL,CAAc,MAAd,CADC,CAFI,CAAP;AAKD,KA5FM;AA6FP,IAAA,MA7FO,kBA6FC,CA7FD,EA6FU;AAAA;;AACf,WAAK,SAAL,GAAiB,KAAjB;AACA,MAAA,CAAC,IAAI,KAAK,SAAL,CAAe;AAAA,eAAM,MAAI,CAAC,KAAL,CAAW,MAAX,EAAmB,CAAnB,CAAN;AAAA,OAAf,CAAL;AACD,KAhGM;AAiGP,IAAA,OAjGO,mBAiGE,MAjGF,EAiGgB;AACrB,UAAI,KAAK,SAAL,IAAkB,KAAK,UAAvB,IAAqC,CAAC,KAAK,KAAL,CAAW,KAAX,CAAiB,MAAjB,CAA1C,EAAoE;AAEpE,WAAK,OAAL,CAAa,SAAb,EAAwB,MAAxB;AACD,KArGM;AAsGP,IAAA,OAtGO,mBAsGE,CAtGF,EAsGa,MAtGb,EAsG4B;AACjC,MAAA,CAAC,QAAD,YAAA,CAAC,CAAE,cAAH;AACA,MAAA,CAAC,QAAD,YAAA,CAAC,CAAE,eAAH;AACA,UAAM,QAAQ,GAAG,KAAK,KAAL,CAAW,KAA5B;AACA,UAAM,GAAG,GAAG,KAAK,KAAL,CAAW,KAAX,IAAoB,QAAQ,CAAC,MAAM,IAAI,CAAX,CAAxC;AACA,UAAI,CAAC,GAAL,EAAU;;AAEV,UAAI,QAAQ,CAAC,aAAT,KAA2B,GAA/B,EAAoC;AAClC,QAAA,GAAG,CAAC,KAAJ;AACA,eAAO,GAAG,CAAC,MAAJ,EAAP;AACD;;AAED,UAAI,CAAC,KAAK,SAAV,EAAqB;AACnB,aAAK,SAAL,GAAiB,IAAjB;AACA,QAAA,GAAG,CAAC,MAAJ;AACA,QAAA,CAAC,IAAI,KAAK,KAAL,CAAW,OAAX,EAAoB,CAApB,CAAL;AACD;AACF,KAvHM;AAwHP,IAAA,OAxHO,mBAwHE,CAxHF,EAwHY,MAxHZ,EAwH0B;AAAA;;AAC/B,UAAM,MAAM,GAAG,CAAC,CAAC,MAAjB;AACA,UAAM,KAAK,GAAG,MAAM,CAAC,KAArB;AACA,WAAK,UAAL,CAAgB,MAAhB,EAAwB,MAAM,CAAC,KAA/B,EAAsC,YAAK;AACzC,QAAA,MAAI,CAAC,aAAL,GAAqB,MAAI,CAAC,GAAL,CAAS,IAAT,CAAc,EAAd,CAArB;AACD,OAFD;AAGA,WAAK,QAAL,GAAgB,MAAM,CAAC,QAAP,IAAmB,MAAM,CAAC,QAAP,CAAgB,QAAnD;AAEA,UAAM,SAAS,GAAG,MAAM,GAAG,CAA3B;;AACA,UAAI,KAAJ,EAAW;AACT,YAAI,SAAS,GAAG,CAAC,KAAK,MAAtB,EAA8B;AAC5B,eAAK,WAAL,CAAiB,SAAjB;AACD,SAFD,MAEO;AACL,eAAK,UAAL,CAAgB,MAAhB;AACA,eAAK,WAAL;AACD;AACF;AACF,KAzIM;AA0IP,IAAA,UA1IO,sBA0IK,KA1IL,EA0IkB;AACvB,UAAM,KAAK,GAAG,KAAK,KAAL,CAAW,KAAX,CAAiB,KAAjB,CAAd;AACA,MAAA,KAAK,CAAC,IAAN;AACD,KA7IM;AA8IP,IAAA,SA9IO,qBA8II,CA9IJ,EA8IoB;AACzB,UAAI,CAAC,CAAC,OAAF,KAAc,kBAAS,KAA3B,EAAkC;AAChC,aAAK,KAAL,CAAW,QAAX,EAAqB,KAAK,aAA1B;AACD;;AAED,WAAK,KAAL,CAAW,SAAX,EAAsB,CAAtB;AACD,KApJM;AAqJP,IAAA,WArJO,uBAqJM,CArJN,EAqJgB,MArJhB,EAqJ8B;AACnC;AACA,UAAI,CAAC,CAAC,MAAF,KAAa,KAAK,KAAL,CAAW,KAAX,CAAiB,MAAjB,CAAjB,EAA2C;AACzC,QAAA,CAAC,CAAC,cAAF;AACA,QAAA,CAAC,CAAC,eAAF;AACD;;AAED,sBAAO,OAAP,CAAe,OAAf,CAAuB,WAAvB,CAAmC,IAAnC,CAAwC,IAAxC,EAA8C,CAA9C;AACD,KA7JM;AA8JP,IAAA,SA9JO,qBA8JI,CA9JJ,EA8Jc,MA9Jd,EA8J4B;AACjC,UAAI,KAAK,YAAT,EAAuB,KAAK,KAAL,CAAW,CAAX,EAAc,MAAd;;AAEvB,sBAAO,OAAP,CAAe,OAAf,CAAuB,SAAvB,CAAiC,IAAjC,CAAsC,IAAtC,EAA4C,CAA5C;AACD,KAlKM;AAmKP,IAAA,OAnKO,mBAmKE,KAnKF,EAmKyB,KAnKzB,EAmKsC;AAAA;;AAC3C,UAAM,SAAS,GAAG,CAAC,KAAK,MAAN,GAAe,CAAjC;AACA,UAAM,QAAQ,GAAG,KAAH,4CAAG,KAAK,CAAE,aAAV,qBAAG,qBAAsB,OAAtB,CAA8B,MAA9B,CAAjB;AACA,UAAM,cAAc,GAAG,CAAA,QAAQ,QAAR,YAAA,QAAQ,CAAE,KAAV,CAAgB,EAAhB,MAAuB,EAA9C;AACA,MAAA,KAAK,CAAC,cAAN;;AACA,UAAM,MAAM,sBAAiB,KAAK,GAAtB,CAAZ;;AACA,WAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,cAAc,CAAC,MAAnC,EAA2C,CAAC,EAA5C,EAAgD;AAC9C,YAAM,MAAM,GAAG,KAAK,GAAG,CAAvB;AACA,YAAI,MAAM,GAAG,SAAb,EAAwB;AACxB,QAAA,MAAM,CAAC,MAAD,CAAN,GAAiB,cAAc,CAAC,CAAD,CAAd,CAAkB,QAAlB,EAAjB;AACD;;AACD,WAAK,GAAL,GAAW,MAAX;AACA,UAAM,WAAW,GAAG,IAAI,CAAC,GAAL,CAAS,KAAK,GAAG,cAAc,CAAC,MAAhC,EAAwC,SAAxC,CAApB;AACA,WAAK,WAAL,CAAiB,WAAjB;;AAEA,UAAI,MAAM,CAAC,MAAP,KAAkB,CAAC,KAAK,MAA5B,EAAoC;AAAE,aAAK,WAAL;AAAoB,aAAK,UAAL,CAAgB,WAAhB;AAA8B;AACzF,KAnLM;AAoLP,IAAA,UApLO,sBAoLK,KApLL,EAoLoB,QApLpB,EAoLsC,IApLtC,EAoLoD;AACzD,UAAM,MAAM,sBAAiB,KAAK,GAAtB,CAAZ;;AACA,MAAA,MAAM,CAAC,KAAD,CAAN,GAAgB,QAAhB;AACA,WAAK,GAAL,GAAW,MAAX;AACA,MAAA,IAAI;AACL,KAzLM;AA0LP,IAAA,WA1LO,uBA0LM,KA1LN,EA0LmB;AACxB,WAAK,OAAL,CAAa,SAAb,EAAwB,KAAK,IAAI,CAAjC;AACD,KA5LM;AA6LP,IAAA,WA7LO,uBA6LM,GA7LN,EA6LkB;AACvB;AACA,WAAK,QAAL,GAAgB,GAAhB;;AAEA,UAAI,GAAJ,EAAS;AACP,aAAK,YAAL,GAAoB,KAAK,SAAzB;AACD,OAFD,MAEO,IAAI,KAAK,YAAL,KAAsB,KAAK,SAA/B,EAA0C;AAC/C,aAAK,KAAL,CAAW,QAAX,EAAqB,KAAK,SAA1B;AACD;AACF,KAtMM;AAuMP,IAAA,OAvMO,mBAuME,KAvMF,EAuMwB,KAvMxB,EAuMqC;AAC1C,MAAA,KAAK,CAAC,cAAN;AACA,UAAM,QAAQ,GAAG,KAAK,CAAC,GAAvB;;AACA,UAAI,CAAC,KAAD,EAAQ,OAAR,EAAiB,MAAjB,EAAyB,SAAzB,EAAoC,KAApC,EAA2C,QAA3C,CAAoD,QAApD,CAAJ,EAAmE;AACjE;AACD;;AACD,UAAI,CAAC,QAAD,EAAW,QAAX,CAAoB,QAApB,CAAJ,EAAmC;AACjC;AACD;;AACD,UAAI,QAAQ,KAAK,WAAb,IAA6B,QAAQ,KAAK,WAAb,IAA4B,CAAC,KAAK,GAAL,CAAS,KAAT,CAA9D,EAAgF;AAC9E,eAAO,KAAK,GAAG,CAAR,IAAa,KAAK,WAAL,CAAiB,KAAK,GAAG,CAAzB,CAApB;AACD;;AACD,UAAI,QAAQ,KAAK,YAAjB,EAA+B;AAC7B,eAAO,KAAK,GAAG,CAAR,GAAY,CAAC,KAAK,MAAlB,IAA4B,KAAK,WAAL,CAAiB,KAAK,GAAG,CAAzB,CAAnC;AACD;AACF,KAtNM;AAuNP,IAAA,WAvNO,yBAuNI;AACT,UAAM,GAAG,GAAG,KAAK,GAAL,CAAS,IAAT,CAAc,EAAd,CAAZ;;AACA,UAAI,GAAG,CAAC,MAAJ,KAAe,CAAC,KAAK,MAAzB,EAAiC;AAC/B,aAAK,KAAL,CAAW,QAAX,EAAqB,GAArB;AACD;AACF;AA5NM,GAhEwC;AA8RjD,EAAA,MA9RiD,kBA8RzC,CA9RyC,EA8RxC;AACP,WAAO,CAAC,CAAC,KAAD,EAAQ;AACd,MAAA,WAAW,EAAE,aADC;AAEd,MAAA,KAAK,EAAE,KAAK;AAFE,KAAR,EAGL,KAAK,UAAL,EAHK,CAAR;AAID;AAnSgD,CAApC,C","sourcesContent":["// Styles\nimport '../VTextField/VTextField.sass'\nimport './VOtpInput.sass'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n VInput,\n)\n\ninterface options extends InstanceType<typeof baseMixins> {\n $refs: {\n input: HTMLInputElement[]\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n name: 'v-otp-input',\n\n directives: {\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n length: {\n type: [Number, String],\n default: 6,\n },\n type: {\n type: String,\n default: 'text',\n },\n plain: Boolean,\n },\n\n data: () => ({\n badInput: false,\n initialValue: null,\n isBooted: false,\n otp: [] as string[],\n }),\n\n computed: {\n outlined (): Boolean {\n return !this.plain\n },\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n ...VTextField.options.computed.classes.call(this),\n 'v-otp-input--plain': this.plain,\n }\n },\n isDirty (): boolean {\n return VInput.options.computed.isDirty.call(this) || this.badInput\n },\n },\n\n watch: {\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n this.otp = this.internalValue?.split('') || []\n },\n\n mounted () {\n requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n /** @public */\n focus (e: Event, otpIdx: number) {\n this.onFocus(e, otpIdx || 0)\n },\n genInputSlot (otpIdx: number) {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: () => this.onClick(otpIdx),\n mousedown: (e: Event) => this.onMouseDown(e, otpIdx),\n mouseup: (e: Event) => this.onMouseUp(e, otpIdx),\n },\n }), [this.genDefaultSlot(otpIdx)])\n },\n genControl (otpIdx: number) {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n }, [\n this.genInputSlot(otpIdx),\n ])\n },\n genDefaultSlot (otpIdx: number) {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(otpIdx),\n ]\n },\n genContent () {\n return Array.from({ length: +this.length }, (_, i) => {\n return this.$createElement('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), [this.genControl(i)])\n })\n },\n genFieldset () {\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLegend () {\n const span = this.$createElement('span', {\n domProps: { innerHTML: '&#8203;' },\n })\n\n return this.$createElement('legend', {\n style: {\n width: '0px',\n },\n }, [span])\n },\n genInput (otpIdx: number) {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: this.otp[otpIdx],\n min: this.type === 'number' ? 0 : null,\n },\n attrs: {\n ...this.attrs$,\n disabled: this.isDisabled,\n readonly: this.isReadonly,\n type: this.type,\n id: `${this.computedId}--${otpIdx}`,\n class: `otp-field-box--${otpIdx}`,\n maxlength: 1,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: (e: Event) => this.onInput(e, otpIdx),\n focus: (e: Event) => this.onFocus(e, otpIdx),\n paste: (e: ClipboardEvent) => this.onPaste(e, otpIdx),\n keydown: this.onKeyDown,\n keyup: (e: KeyboardEvent) => this.onKeyUp(e, otpIdx),\n }),\n ref: 'input',\n refInFor: true,\n })\n },\n genTextFieldSlot (otpIdx: number): VNode {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genInput(otpIdx),\n ])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick (otpIdx: number) {\n if (this.isFocused || this.isDisabled || !this.$refs.input[otpIdx]) return\n\n this.onFocus(undefined, otpIdx)\n },\n onFocus (e?: Event, otpIdx?: number) {\n e?.preventDefault()\n e?.stopPropagation()\n const elements = this.$refs.input as HTMLInputElement[]\n const ref = this.$refs.input && elements[otpIdx || 0]\n if (!ref) return\n\n if (document.activeElement !== ref) {\n ref.focus()\n return ref.select()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n ref.select()\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event, otpIdx: number) {\n const target = e.target as HTMLInputElement\n const value = target.value\n this.applyValue(otpIdx, target.value, () => {\n this.internalValue = this.otp.join('')\n })\n this.badInput = target.validity && target.validity.badInput\n\n const nextIndex = otpIdx + 1\n if (value) {\n if (nextIndex < +this.length) {\n this.changeFocus(nextIndex)\n } else {\n this.clearFocus(otpIdx)\n this.onCompleted()\n }\n }\n },\n clearFocus (index: number) {\n const input = this.$refs.input[index] as HTMLInputElement\n input.blur()\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.enter) {\n this.$emit('change', this.internalValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event, otpIdx: number) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input[otpIdx]) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event, otpIdx: number) {\n if (this.hasMouseDown) this.focus(e, otpIdx)\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n onPaste (event: ClipboardEvent, index: number) {\n const maxCursor = +this.length - 1\n const inputVal = event?.clipboardData?.getData('Text')\n const inputDataArray = inputVal?.split('') || []\n event.preventDefault()\n const newOtp: string[] = [...this.otp]\n for (let i = 0; i < inputDataArray.length; i++) {\n const appIdx = index + i\n if (appIdx > maxCursor) break\n newOtp[appIdx] = inputDataArray[i].toString()\n }\n this.otp = newOtp\n const targetFocus = Math.min(index + inputDataArray.length, maxCursor)\n this.changeFocus(targetFocus)\n\n if (newOtp.length === +this.length) { this.onCompleted(); this.clearFocus(targetFocus) }\n },\n applyValue (index: number, inputVal: string, next: Function) {\n const newOtp: string[] = [...this.otp]\n newOtp[index] = inputVal\n this.otp = newOtp\n next()\n },\n changeFocus (index: number) {\n this.onFocus(undefined, index || 0)\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onKeyUp (event: KeyboardEvent, index: number) {\n event.preventDefault()\n const eventKey = event.key\n if (['Tab', 'Shift', 'Meta', 'Control', 'Alt'].includes(eventKey)) {\n return\n }\n if (['Delete'].includes(eventKey)) {\n return\n }\n if (eventKey === 'ArrowLeft' || (eventKey === 'Backspace' && !this.otp[index])) {\n return index > 0 && this.changeFocus(index - 1)\n }\n if (eventKey === 'ArrowRight') {\n return index + 1 < +this.length && this.changeFocus(index + 1)\n }\n },\n onCompleted () {\n const rsp = this.otp.join('')\n if (rsp.length === +this.length) {\n this.$emit('finish', rsp)\n }\n },\n },\n render (h): VNode {\n return h('div', {\n staticClass: 'v-otp-input',\n class: this.themeClasses,\n }, this.genContent())\n },\n})\n"],"sourceRoot":"","file":"VOtpInput.js"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "VOtpInput", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _VOtpInput.default;
10
+ }
11
+ });
12
+ exports.default = void 0;
13
+
14
+ var _VOtpInput = _interopRequireDefault(require("./VOtpInput"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ var _default = _VOtpInput.default;
19
+ exports.default = _default;
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/VOtpInput/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;;;eAGe,kB","sourcesContent":["import VOtpInput from './VOtpInput'\n\nexport { VOtpInput }\nexport default VOtpInput\n"],"sourceRoot":"","file":"index.js"}
@@ -13,8 +13,6 @@ var _VInput = _interopRequireDefault(require("../VInput"));
13
13
 
14
14
  var _VItemGroup = require("../VItemGroup/VItemGroup");
15
15
 
16
- var _comparable = _interopRequireDefault(require("../../mixins/comparable"));
17
-
18
16
  var _mixins = _interopRequireDefault(require("../../util/mixins"));
19
17
 
20
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -25,7 +23,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
25
23
 
26
24
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
25
 
28
- var baseMixins = (0, _mixins.default)(_comparable.default, _VItemGroup.BaseItemGroup, _VInput.default);
26
+ var baseMixins = (0, _mixins.default)(_VItemGroup.BaseItemGroup, _VInput.default);
29
27
  /* @vue/component */
30
28
 
31
29
  var _default = baseMixins.extend({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VRadioGroup/VRadioGroup.ts"],"names":[],"mappings":";;;;;;;AACA;;AACA;;AAGA;;AACA;;AAGA;;AAGA;;;;;;;;;;AAGA,IAAM,UAAU,GAAG,qBACjB,mBADiB,EAEjB,yBAFiB,EAGjB,eAHiB,CAAnB;AAMA;;eACe,UAAU,CAAC,MAAX,CAAkB;AAC/B,EAAA,IAAI,EAAE,eADyB;AAG/B,EAAA,OAH+B,qBAGxB;AACL,WAAO;AACL,MAAA,UAAU,EAAE;AADP,KAAP;AAGD,GAP8B;AAS/B,EAAA,KAAK,EAAE;AACL,IAAA,MAAM,EAAE;AACN,MAAA,IAAI,EAAE,OADA;AAEN,MAAA,OAAO,EAAE;AAFH,KADH;AAKL,IAAA,MAAM,EAAE;AACN,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADA;AAEN,MAAA,OAAO,EAAE;AAFH,KALH;AASL,IAAA,IAAI,EAAE,MATD;AAUL,IAAA,GAAG,EAAE,OAVA;AAWL;AACA;AACA;AACA,IAAA,KAAK,EAAE;AAdF,GATwB;AA0B/B,EAAA,QAAQ,EAAE;AACR,IAAA,OADQ,qBACD;AACL,6CACK,gBAAO,OAAP,CAAe,QAAf,CAAwB,OAAxB,CAAgC,IAAhC,CAAqC,IAArC,CADL;AAEE,4DAAoD,IAFtD;AAGE,wCAAgC,KAAK,MAAL,IAAe,CAAC,KAAK,GAHvD;AAIE,qCAA6B,KAAK;AAJpC;AAMD;AARO,GA1BqB;AAqC/B,EAAA,OAAO,EAAE;AACP,IAAA,cADO,4BACO;AACZ,aAAO,KAAK,cAAL,CAAoB,KAApB,EAA2B;AAChC,QAAA,WAAW,EAAE,6BADmB;AAEhC,QAAA,KAAK,EAAE;AACL,UAAA,EAAE,EAAE,KAAK,EADJ;AAEL,UAAA,IAAI,EAAE,YAFD;AAGL,6BAAmB,KAAK;AAHnB;AAFyB,OAA3B,EAOJ,gBAAO,OAAP,CAAe,OAAf,CAAuB,cAAvB,CAAsC,IAAtC,CAA2C,IAA3C,CAPI,CAAP;AAQD,KAVM;AAWP,IAAA,YAXO,0BAWK;AACV,UAAM,MAAM,GAAG,gBAAO,OAAP,CAAe,OAAf,CAAuB,YAAvB,CAAoC,IAApC,CAAyC,IAAzC,CAAf;;AAEA,aAAO,MAAM,CAAC,IAAP,CAAa,EAAb,CAAiB,KAAxB;AAEA,aAAO,MAAP;AACD,KAjBM;AAkBP,IAAA,QAlBO,sBAkBC;AACN,UAAM,KAAK,GAAG,gBAAO,OAAP,CAAe,OAAf,CAAuB,QAAvB,CAAgC,IAAhC,CAAqC,IAArC,CAAd;;AAEA,UAAI,CAAC,KAAL,EAAY,OAAO,IAAP;AAEZ,MAAA,KAAK,CAAC,IAAN,CAAY,KAAZ,CAAmB,EAAnB,GAAwB,KAAK,UAA7B,CALM,CAMN;;AACA,aAAO,KAAK,CAAC,IAAN,CAAY,KAAZ,CAAmB,GAA1B;AACA,MAAA,KAAK,CAAC,GAAN,GAAY,QAAZ;AAEA,aAAO,KAAP;AACD,KA7BM;AA8BP,IAAA,OAAO,EAAE,0BAAc,OAAd,CAAsB,OAAtB,CAA8B;AA9BhC,GArCsB;AAsE/B,EAAA,MAtE+B,kBAsEvB,CAtEuB,EAsEtB;AACP,QAAM,KAAK,GAAG,gBAAO,OAAP,CAAe,MAAf,CAAsB,IAAtB,CAA2B,IAA3B,EAAiC,CAAjC,CAAd;;AAEA,SAAK,EAAL,CAAQ,KAAK,CAAC,IAAd,EAAqB,KAArB,EAA4B,KAAK,MAAjC;;AAEA,WAAO,KAAP;AACD;AA5E8B,CAAlB,C","sourcesContent":["// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VRadioGroup.sass'\n\n// Extensions\nimport VInput from '../VInput'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { PropType } from 'vue'\n\nconst baseMixins = mixins(\n Comparable,\n BaseItemGroup,\n VInput\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-radio-group',\n\n provide () {\n return {\n radioGroup: this,\n }\n },\n\n props: {\n column: {\n type: Boolean,\n default: true,\n },\n height: {\n type: [Number, String],\n default: 'auto',\n },\n name: String,\n row: Boolean,\n // If no value set on VRadio\n // will match valueComparator\n // force default to null\n value: null as unknown as PropType<any>,\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--radio-group': true,\n 'v-input--radio-group--column': this.column && !this.row,\n 'v-input--radio-group--row': this.row,\n }\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$createElement('div', {\n staticClass: 'v-input--radio-group__input',\n attrs: {\n id: this.id,\n role: 'radiogroup',\n 'aria-labelledby': this.computedId,\n },\n }, VInput.options.methods.genDefaultSlot.call(this))\n },\n genInputSlot () {\n const render = VInput.options.methods.genInputSlot.call(this)\n\n delete render.data!.on!.click\n\n return render\n },\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return null\n\n label.data!.attrs!.id = this.computedId\n // WAI considers this an orphaned label\n delete label.data!.attrs!.for\n label.tag = 'legend'\n\n return label\n },\n onClick: BaseItemGroup.options.methods.onClick,\n },\n\n render (h) {\n const vnode = VInput.options.render.call(this, h)\n\n this._b(vnode.data!, 'div', this.attrs$)\n\n return vnode\n },\n})\n"],"sourceRoot":"","file":"VRadioGroup.js"}
1
+ {"version":3,"sources":["../../../src/components/VRadioGroup/VRadioGroup.ts"],"names":[],"mappings":";;;;;;;AACA;;AACA;;AAGA;;AACA;;AAGA;;;;;;;;;;AAGA,IAAM,UAAU,GAAG,qBACjB,yBADiB,EAEjB,eAFiB,CAAnB;AAKA;;eACe,UAAU,CAAC,MAAX,CAAkB;AAC/B,EAAA,IAAI,EAAE,eADyB;AAG/B,EAAA,OAH+B,qBAGxB;AACL,WAAO;AACL,MAAA,UAAU,EAAE;AADP,KAAP;AAGD,GAP8B;AAS/B,EAAA,KAAK,EAAE;AACL,IAAA,MAAM,EAAE;AACN,MAAA,IAAI,EAAE,OADA;AAEN,MAAA,OAAO,EAAE;AAFH,KADH;AAKL,IAAA,MAAM,EAAE;AACN,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADA;AAEN,MAAA,OAAO,EAAE;AAFH,KALH;AASL,IAAA,IAAI,EAAE,MATD;AAUL,IAAA,GAAG,EAAE,OAVA;AAWL;AACA;AACA;AACA,IAAA,KAAK,EAAE;AAdF,GATwB;AA0B/B,EAAA,QAAQ,EAAE;AACR,IAAA,OADQ,qBACD;AACL,6CACK,gBAAO,OAAP,CAAe,QAAf,CAAwB,OAAxB,CAAgC,IAAhC,CAAqC,IAArC,CADL;AAEE,4DAAoD,IAFtD;AAGE,wCAAgC,KAAK,MAAL,IAAe,CAAC,KAAK,GAHvD;AAIE,qCAA6B,KAAK;AAJpC;AAMD;AARO,GA1BqB;AAqC/B,EAAA,OAAO,EAAE;AACP,IAAA,cADO,4BACO;AACZ,aAAO,KAAK,cAAL,CAAoB,KAApB,EAA2B;AAChC,QAAA,WAAW,EAAE,6BADmB;AAEhC,QAAA,KAAK,EAAE;AACL,UAAA,EAAE,EAAE,KAAK,EADJ;AAEL,UAAA,IAAI,EAAE,YAFD;AAGL,6BAAmB,KAAK;AAHnB;AAFyB,OAA3B,EAOJ,gBAAO,OAAP,CAAe,OAAf,CAAuB,cAAvB,CAAsC,IAAtC,CAA2C,IAA3C,CAPI,CAAP;AAQD,KAVM;AAWP,IAAA,YAXO,0BAWK;AACV,UAAM,MAAM,GAAG,gBAAO,OAAP,CAAe,OAAf,CAAuB,YAAvB,CAAoC,IAApC,CAAyC,IAAzC,CAAf;;AAEA,aAAO,MAAM,CAAC,IAAP,CAAa,EAAb,CAAiB,KAAxB;AAEA,aAAO,MAAP;AACD,KAjBM;AAkBP,IAAA,QAlBO,sBAkBC;AACN,UAAM,KAAK,GAAG,gBAAO,OAAP,CAAe,OAAf,CAAuB,QAAvB,CAAgC,IAAhC,CAAqC,IAArC,CAAd;;AAEA,UAAI,CAAC,KAAL,EAAY,OAAO,IAAP;AAEZ,MAAA,KAAK,CAAC,IAAN,CAAY,KAAZ,CAAmB,EAAnB,GAAwB,KAAK,UAA7B,CALM,CAMN;;AACA,aAAO,KAAK,CAAC,IAAN,CAAY,KAAZ,CAAmB,GAA1B;AACA,MAAA,KAAK,CAAC,GAAN,GAAY,QAAZ;AAEA,aAAO,KAAP;AACD,KA7BM;AA8BP,IAAA,OAAO,EAAE,0BAAc,OAAd,CAAsB,OAAtB,CAA8B;AA9BhC,GArCsB;AAsE/B,EAAA,MAtE+B,kBAsEvB,CAtEuB,EAsEtB;AACP,QAAM,KAAK,GAAG,gBAAO,OAAP,CAAe,MAAf,CAAsB,IAAtB,CAA2B,IAA3B,EAAiC,CAAjC,CAAd;;AAEA,SAAK,EAAL,CAAQ,KAAK,CAAC,IAAd,EAAqB,KAArB,EAA4B,KAAK,MAAjC;;AAEA,WAAO,KAAP;AACD;AA5E8B,CAAlB,C","sourcesContent":["// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VRadioGroup.sass'\n\n// Extensions\nimport VInput from '../VInput'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { PropType } from 'vue'\n\nconst baseMixins = mixins(\n BaseItemGroup,\n VInput\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-radio-group',\n\n provide () {\n return {\n radioGroup: this,\n }\n },\n\n props: {\n column: {\n type: Boolean,\n default: true,\n },\n height: {\n type: [Number, String],\n default: 'auto',\n },\n name: String,\n row: Boolean,\n // If no value set on VRadio\n // will match valueComparator\n // force default to null\n value: null as unknown as PropType<any>,\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--radio-group': true,\n 'v-input--radio-group--column': this.column && !this.row,\n 'v-input--radio-group--row': this.row,\n }\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$createElement('div', {\n staticClass: 'v-input--radio-group__input',\n attrs: {\n id: this.id,\n role: 'radiogroup',\n 'aria-labelledby': this.computedId,\n },\n }, VInput.options.methods.genDefaultSlot.call(this))\n },\n genInputSlot () {\n const render = VInput.options.methods.genInputSlot.call(this)\n\n delete render.data!.on!.click\n\n return render\n },\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return null\n\n label.data!.attrs!.id = this.computedId\n // WAI considers this an orphaned label\n delete label.data!.attrs!.for\n label.tag = 'legend'\n\n return label\n },\n onClick: BaseItemGroup.options.methods.onClick,\n },\n\n render (h) {\n const vnode = VInput.options.render.call(this, h)\n\n this._b(vnode.data!, 'div', this.attrs$)\n\n return vnode\n },\n})\n"],"sourceRoot":"","file":"VRadioGroup.js"}
@@ -39,6 +39,12 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
39
39
 
40
40
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
41
41
 
42
+ function bias(val) {
43
+ var c = 0.501;
44
+ var x = Math.abs(val);
45
+ return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1));
46
+ }
47
+
42
48
  function calculateUpdatedOffset(selectedElement, widths, rtl, currentScrollOffset) {
43
49
  var clientWidth = selectedElement.clientWidth;
44
50
  var offsetLeft = rtl ? widths.content - selectedElement.offsetLeft - clientWidth : selectedElement.offsetLeft;
@@ -178,7 +184,8 @@ var BaseSlideGroup = (0, _mixins.default)(_VItemGroup.BaseItemGroup, _mobile.def
178
184
  // and need to be recalculated
179
185
  isOverflowing: 'setWidths',
180
186
  scrollOffset: function scrollOffset(val) {
181
- this.$refs.content.style.transform = "translateX(".concat(-val, "px)");
187
+ var scroll = val <= 0 ? bias(-val) : val > this.widths.content - this.widths.wrapper ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val) : -val;
188
+ this.$refs.content.style.transform = "translateX(".concat(scroll, "px)");
182
189
  }
183
190
  },
184
191
  beforeUpdate: function beforeUpdate() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VSlideGroup/VSlideGroup.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins<options &\n/* eslint-disable indent */\n ExtractVue<[\n typeof BaseItemGroup,\n typeof Mobile,\n ]>\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n this.$refs.content.style.transform = `translateX(${-val}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths /* istanbul ignore next */ () {\n window.requestAnimationFrame(() => {\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n"],"sourceRoot":"","file":"VSlideGroup.js"}
1
+ {"version":3,"sources":["../../../src/components/VSlideGroup/VSlideGroup.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nfunction bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins<options &\n/* eslint-disable indent */\n ExtractVue<[\n typeof BaseItemGroup,\n typeof Mobile,\n ]>\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n const scroll =\n val <= 0\n ? bias(-val)\n : val > this.widths.content - this.widths.wrapper\n ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val)\n : -val\n\n this.$refs.content.style.transform = `translateX(${scroll}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths /* istanbul ignore next */ () {\n window.requestAnimationFrame(() => {\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n"],"sourceRoot":"","file":"VSlideGroup.js"}