@dimailn/vuetify 2.7.2-alpha27 → 2.7.2-alpha28

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 (127) hide show
  1. package/dist/vuetify.js +78 -22
  2. package/dist/vuetify.js.map +1 -1
  3. package/dist/vuetify.min.css +1 -1
  4. package/dist/vuetify.min.js +2 -2
  5. package/es5/components/VAlert/VAlert.js +0 -1
  6. package/es5/components/VAlert/VAlert.js.map +1 -1
  7. package/es5/components/VChip/VChip.js +1 -0
  8. package/es5/components/VChip/VChip.js.map +1 -1
  9. package/es5/components/VList/VListItem.js +4 -2
  10. package/es5/components/VList/VListItem.js.map +1 -1
  11. package/es5/components/VMenu/VMenu.js +1 -1
  12. package/es5/components/VMenu/VMenu.js.map +1 -1
  13. package/es5/components/VOtpInput/VOtpInput.js +36 -0
  14. package/es5/components/VOtpInput/VOtpInput.js.map +1 -1
  15. package/es5/components/VSelect/VSelectList.js +15 -2
  16. package/es5/components/VSelect/VSelectList.js.map +1 -1
  17. package/es5/components/VTooltip/VTooltip.js +3 -3
  18. package/es5/components/VTooltip/VTooltip.js.map +1 -1
  19. package/es5/components/VTreeview/VTreeview.js +0 -7
  20. package/es5/components/VTreeview/VTreeview.js.map +1 -1
  21. package/es5/framework.js +1 -1
  22. package/es5/mixins/routable/index.js +5 -2
  23. package/es5/mixins/routable/index.js.map +1 -1
  24. package/lib/components/VAlert/VAlert.js +0 -1
  25. package/lib/components/VAlert/VAlert.js.map +1 -1
  26. package/lib/components/VChip/VChip.js +1 -0
  27. package/lib/components/VChip/VChip.js.map +1 -1
  28. package/lib/components/VList/VListItem.js +4 -2
  29. package/lib/components/VList/VListItem.js.map +1 -1
  30. package/lib/components/VMenu/VMenu.js +1 -1
  31. package/lib/components/VMenu/VMenu.js.map +1 -1
  32. package/lib/components/VOtpInput/VOtpInput.js +48 -0
  33. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  34. package/lib/components/VSelect/VSelectList.js +11 -5
  35. package/lib/components/VSelect/VSelectList.js.map +1 -1
  36. package/lib/components/VTooltip/VTooltip.js +3 -3
  37. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  38. package/lib/components/VTreeview/VTreeview.js +0 -6
  39. package/lib/components/VTreeview/VTreeview.js.map +1 -1
  40. package/lib/framework.js +1 -1
  41. package/lib/mixins/routable/index.js +5 -2
  42. package/lib/mixins/routable/index.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/components/VAlert/VAlert.ts +0 -1
  45. package/src/components/VApp/__tests__/VApp.spec.ts +24 -18
  46. package/src/components/VApp/__tests__/__snapshots__/VApp.spec.ts.snap +4 -4
  47. package/src/components/VAppBar/__tests__/VAppBar.spec.ts +256 -74
  48. package/src/components/VAppBar/__tests__/VAppBarNavIcon.spec.ts +2 -6
  49. package/src/components/VAppBar/__tests__/__snapshots__/VAppBar.spec.ts.snap +13 -4
  50. package/src/components/VAppBar/__tests__/__snapshots__/VAppBarNavIcon.spec.ts.snap +3 -4
  51. package/src/components/VBanner/__tests__/VBanner.spec.ts +35 -36
  52. package/src/components/VBanner/__tests__/__snapshots__/VBanner.spec.ts.snap +1 -1
  53. package/src/components/VBtn/__tests__/VBtn.spec.ts +1 -1
  54. package/src/components/VCard/__tests__/VCard.spec.ts +46 -28
  55. package/src/components/VCard/__tests__/__snapshots__/VCard.spec.ts.snap +2 -2
  56. package/src/components/VCheckbox/__tests__/VCheckbox.spec.ts +157 -152
  57. package/src/components/VChip/VChip.ts +1 -0
  58. package/src/components/VChip/__tests__/VChip.spec.ts +50 -50
  59. package/src/components/VChip/__tests__/__snapshots__/VChip.spec.ts.snap +4 -4
  60. package/src/components/VChipGroup/__tests__/VChipGroup.spec.ts +14 -21
  61. package/src/components/VColorPicker/__tests__/__snapshots__/VColorPicker.spec.ts.snap +35 -35
  62. package/src/components/VColorPicker/__tests__/__snapshots__/VColorPickerEdit.spec.ts.snap +10 -10
  63. package/src/components/VData/__tests__/VData.spec.ts +69 -90
  64. package/src/components/VDataTable/__tests__/MobileRow.spec.ts +55 -66
  65. package/src/components/VDataTable/__tests__/Row.spec.ts +64 -73
  66. package/src/components/VDataTable/__tests__/RowGroup.spec.ts +7 -5
  67. package/src/components/VDataTable/__tests__/VDataTable.spec.ts +910 -988
  68. package/src/components/VDataTable/__tests__/VEditDialog.spec.ts +26 -22
  69. package/src/components/VDataTable/__tests__/VSimpleTable.spec.ts +60 -29
  70. package/src/components/VDataTable/__tests__/VVirtualTable.spec.ts +13 -15
  71. package/src/components/VDataTable/__tests__/__snapshots__/Row.spec.ts.snap +30 -0
  72. package/src/components/VDataTable/__tests__/__snapshots__/VEditDialog.spec.ts.snap +18 -10
  73. package/src/components/VDataTable/mixins/__tests__/__snapshots__/header.spec.ts.snap +1 -1
  74. package/src/components/VDivider/__tests__/VDivider.spec.ts +11 -15
  75. package/src/components/VDivider/__tests__/__snapshots__/VDivider.spec.ts.snap +2 -2
  76. package/src/components/VGrid/__tests__/VCol.spec.ts +17 -17
  77. package/src/components/VGrid/__tests__/VContainer.spec.ts +58 -3
  78. package/src/components/VGrid/__tests__/VFlex.spec.ts +3 -3
  79. package/src/components/VGrid/__tests__/VGrid.spec.ts +12 -10
  80. package/src/components/VGrid/__tests__/VLayout.spec.ts +3 -3
  81. package/src/components/VIcon/__tests__/VIcon.spec.ts +176 -70
  82. package/src/components/VImg/__tests__/__snapshots__/VImg.spec.ts.snap +55 -55
  83. package/src/components/VItemGroup/__tests__/VItem.spec.ts +22 -37
  84. package/src/components/VItemGroup/__tests__/VItemGroup.spec.ts +96 -124
  85. package/src/components/VItemGroup/__tests__/__snapshots__/VItem.spec.ts.snap +2 -0
  86. package/src/components/VLabel/__tests__/VLabel.spec.ts +240 -14
  87. package/src/components/VLazy/__tests__/VLazy.spec.ts +5 -4
  88. package/src/components/VLazy/__tests__/__snapshots__/VLazy.spec.ts.snap +2 -1
  89. package/src/components/VList/VListItem.ts +9 -3
  90. package/src/components/VList/__tests__/VList.spec.ts +13 -12
  91. package/src/components/VList/__tests__/VListGroup.spec.ts +59 -51
  92. package/src/components/VList/__tests__/VListItem.spec.ts +142 -63
  93. package/src/components/VList/__tests__/VListItemAvatar.spec.ts +5 -2
  94. package/src/components/VList/__tests__/VListItemGroup.spec.ts +5 -2
  95. package/src/components/VList/__tests__/__snapshots__/VList.spec.ts.snap +10 -10
  96. package/src/components/VList/__tests__/__snapshots__/VListGroup.spec.ts.snap +5 -6
  97. package/src/components/VList/__tests__/__snapshots__/VListItem.spec.ts.snap +1 -1
  98. package/src/components/VMain/__tests__/VMain.spec.ts +71 -17
  99. package/src/components/VMenu/VMenu.ts +1 -1
  100. package/src/components/VMessages/__tests__/VMessages.spec.ts +14 -13
  101. package/src/components/VOtpInput/VOtpInput.ts +37 -1
  102. package/src/components/VParallax/__tests__/__snapshots__/VParallax.spec.ts.snap +8 -8
  103. package/src/components/VPicker/__tests__/__snapshots__/VPicker.spec.ts.snap +2 -2
  104. package/src/components/VResponsive/__tests__/__snapshots__/VResponsive.spec.ts.snap +2 -2
  105. package/src/components/VSelect/VSelectList.ts +9 -9
  106. package/src/components/VSelect/__tests__/VSelect.spec.ts +166 -125
  107. package/src/components/VSelect/__tests__/VSelect2.spec.ts +127 -111
  108. package/src/components/VSelect/__tests__/VSelect3.spec.ts +109 -91
  109. package/src/components/VSelect/__tests__/VSelect4.spec.ts +79 -68
  110. package/src/components/VSelect/__tests__/VSelectList.spec.ts +23 -31
  111. package/src/components/VSelect/__tests__/__snapshots__/VSelect.spec.ts.snap +58 -62
  112. package/src/components/VSelect/__tests__/__snapshots__/VSelect2.spec.ts.snap +50 -62
  113. package/src/components/VSelect/__tests__/__snapshots__/VSelect3.spec.ts.snap +10 -14
  114. package/src/components/VSparkline/__tests__/VSparkline.spec.ts +33 -35
  115. package/src/components/VStepper/__tests__/VStepper.spec.ts +4 -1
  116. package/src/components/VStepper/__tests__/VStepperContent.spec.ts +104 -110
  117. package/src/components/VStepper/__tests__/VStepperStep.spec.ts +51 -44
  118. package/src/components/VSwitch/__tests__/VSwitch.spec.ts +30 -37
  119. package/src/components/VTabs/__tests__/VTabs.spec.ts +0 -7
  120. package/src/components/VTextField/__tests__/VTextField.spec.ts +342 -246
  121. package/src/components/VTextarea/__tests__/VTextarea.spec.ts +112 -35
  122. package/src/components/VTimePicker/__tests__/__snapshots__/VTimePicker.spec.ts.snap +0 -40
  123. package/src/components/VToolbar/__tests__/VToolbar.spec.ts +49 -25
  124. package/src/components/VTooltip/VTooltip.ts +3 -3
  125. package/src/components/VTooltip/__tests__/__snapshots__/VTooltip.spec.ts.snap +34 -18
  126. package/src/components/VTreeview/VTreeview.ts +0 -5
  127. package/src/mixins/routable/index.ts +6 -4
@@ -1,93 +1,85 @@
1
1
  import {
2
2
  mount,
3
- Wrapper,
4
- MountOptions,
3
+ VueWrapper,
4
+ enableAutoUnmount,
5
5
  } from '@vue/test-utils'
6
6
  import VCheckbox from '../VCheckbox'
7
7
 
8
8
  describe('VCheckbox.ts', () => { // eslint-disable-line max-statements
9
- type Instance = InstanceType<typeof VCheckbox>
10
- let mountFunction: (options?: MountOptions<Instance>) => Wrapper<Instance>
9
+ let mountFunction: (options?: any) => VueWrapper<any>
10
+
11
+ enableAutoUnmount(afterEach)
12
+
11
13
  beforeEach(() => {
12
- mountFunction = (options?: MountOptions<Instance>) => {
14
+ mountFunction = (options?: any) => {
13
15
  return mount(VCheckbox, options)
14
16
  }
15
17
  })
16
18
 
17
- it('should return true when clicked', () => {
19
+ it('should return true when clicked', async () => {
18
20
  const wrapper = mountFunction({
19
- propsData: {
20
- inputValue: false,
21
- },
21
+ props: {
22
+ modelValue: false,
23
+ } as any,
22
24
  })
23
25
 
24
26
  const input = wrapper.find('input')
25
27
 
26
- const change = jest.fn()
27
- wrapper.vm.$on('change', change)
28
-
29
- input.trigger('click')
30
- expect(change).toHaveBeenCalledTimes(1)
31
- expect(change).toHaveBeenCalledWith(true)
28
+ await input.trigger('click')
29
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
30
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([true])
32
31
  })
33
32
 
34
- it('should return a value when toggled on with a specified value', () => {
33
+ it('should return a value when toggled on with a specified value', async () => {
35
34
  const wrapper = mountFunction({
36
- propsData: {
35
+ props: {
37
36
  value: 'John',
38
- inputValue: null,
39
- },
37
+ modelValue: null,
38
+ } as any,
40
39
  })
41
40
 
42
41
  const input = wrapper.find('input')
43
42
 
44
- const change = jest.fn()
45
- wrapper.vm.$on('change', change)
46
-
47
- input.trigger('click')
48
- expect(change).toHaveBeenCalledWith('John')
43
+ await input.trigger('click')
44
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
45
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual(['John'])
49
46
  })
50
47
 
51
- it('should return null when toggled off with a specified value', () => {
48
+ it('should return null when toggled off with a specified value', async () => {
52
49
  const wrapper = mountFunction({
53
- propsData: {
50
+ props: {
54
51
  value: 'John',
55
- inputValue: 'John',
56
- },
52
+ modelValue: 'John',
53
+ } as any,
57
54
  })
58
55
 
59
56
  const ripple = wrapper.find('input')
60
57
 
61
- const change = jest.fn()
62
- wrapper.vm.$on('change', change)
63
-
64
- ripple.trigger('click')
65
- expect(change).toHaveBeenCalledWith(null)
58
+ await ripple.trigger('click')
59
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
60
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([null])
66
61
  })
67
62
 
68
- it('should toggle when label is clicked', () => {
63
+ it('should toggle when label is clicked', async () => {
69
64
  const wrapper = mountFunction({
70
- propsData: {
65
+ props: {
71
66
  label: 'Label',
72
67
  value: null,
73
- },
68
+ } as any,
74
69
  attrs: {},
75
70
  })
76
71
 
77
72
  const label = wrapper.find('label')
78
73
 
79
- const change = jest.fn()
80
- wrapper.vm.$on('change', change)
81
-
82
- label.trigger('click')
83
- expect(change).toHaveBeenCalled()
74
+ await label.trigger('click')
75
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
84
76
  })
85
77
 
86
78
  it('should render role and aria-checked attributes on input group', async () => {
87
79
  const wrapper = mountFunction({
88
- propsData: {
89
- inputValue: false,
90
- },
80
+ props: {
81
+ modelValue: false,
82
+ } as any,
91
83
  })
92
84
 
93
85
  const input = wrapper.find('input')
@@ -95,41 +87,41 @@ describe('VCheckbox.ts', () => { // eslint-disable-line max-statements
95
87
  expect(input.element.getAttribute('role')).toBe('checkbox')
96
88
  expect(input.element.getAttribute('aria-checked')).toBe('false')
97
89
 
98
- wrapper.setProps({ inputValue: true })
90
+ await wrapper.setProps({ modelValue: true } as any)
99
91
  expect(input.element.getAttribute('aria-checked')).toBe('true')
100
92
 
101
- wrapper.setProps({ indeterminate: true })
93
+ await wrapper.setProps({ indeterminate: true } as any)
102
94
  await wrapper.vm.$nextTick()
103
95
  expect(input.element.getAttribute('aria-checked')).toBe('mixed')
104
96
  })
105
97
 
106
98
  it('should toggle on keypress', async () => {
107
99
  const wrapper = mountFunction({
108
- propsData: {
109
- inputValue: false,
110
- },
100
+ props: {
101
+ modelValue: false,
102
+ } as any,
111
103
  })
112
104
 
113
- const change = jest.fn()
114
- wrapper.vm.$on('change', change)
115
105
  const input = wrapper.find('input')
116
106
 
117
- input.trigger('focus')
107
+ await input.trigger('focus')
118
108
  await wrapper.vm.$nextTick()
119
109
 
120
- input.trigger('change')
110
+ await input.trigger('change')
121
111
  await wrapper.vm.$nextTick()
122
- input.trigger('change')
112
+ await input.trigger('change')
123
113
 
124
- expect(change.mock.calls).toEqual([[true], [false]])
114
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
115
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([true])
116
+ expect(wrapper.emitted('update:modelValue')![1]).toEqual([false])
125
117
  })
126
118
 
127
- it('should enable ripple', () => {
119
+ it('should enable ripple', async () => {
128
120
  const wrapper = mountFunction({
129
- propsData: {
130
- inputValue: false,
121
+ props: {
122
+ modelValue: false,
131
123
  disabled: false,
132
- },
124
+ } as any,
133
125
  })
134
126
 
135
127
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
@@ -137,29 +129,29 @@ describe('VCheckbox.ts', () => { // eslint-disable-line max-statements
137
129
  expect((ripple.element as any)._ripple.enabled).toBeTruthy()
138
130
  expect((ripple.element as any)._ripple.centered).toBeTruthy()
139
131
 
140
- wrapper.setProps({ disabled: true })
132
+ await wrapper.setProps({ disabled: true } as any)
141
133
 
142
- expect(wrapper.contains('.v-input--selection-controls__ripple')).toBeTruthy()
134
+ expect(wrapper.find('.v-input--selection-controls__ripple').exists()).toBeTruthy()
143
135
  })
144
136
 
145
137
  it('should not render ripple when ripple prop is false', () => {
146
138
  const wrapper = mountFunction({
147
- propsData: {
148
- inputValue: false,
139
+ props: {
140
+ modelValue: false,
149
141
  ripple: false,
150
- },
142
+ } as any,
151
143
  })
152
144
 
153
145
  const ripple = wrapper.findAll('.v-input--selection-controls__ripple')
154
146
 
155
- expect(ripple.wrappers).toHaveLength(0)
147
+ expect(ripple).toHaveLength(0)
156
148
  })
157
149
 
158
150
  it('should render ripple when ripple prop is true', () => {
159
151
  const wrapper = mountFunction({
160
- propsData: {
152
+ props: {
161
153
  ripple: true,
162
- },
154
+ } as any,
163
155
  })
164
156
 
165
157
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
@@ -168,182 +160,167 @@ describe('VCheckbox.ts', () => { // eslint-disable-line max-statements
168
160
  expect((ripple.element as any)._ripple.centered).toBeTruthy()
169
161
  })
170
162
 
171
- it('should return a value when toggled on with a specified object value', () => {
163
+ it('should return a value when toggled on with a specified object value', async () => {
172
164
  const wrapper = mountFunction({
173
- propsData: {
165
+ props: {
174
166
  value: { x: 1, y: 2 },
175
- inputValue: null,
176
- },
167
+ modelValue: null,
168
+ } as any,
177
169
  })
178
170
 
179
171
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
180
172
 
181
- const change = jest.fn()
182
- wrapper.vm.$on('change', change)
183
-
184
- ripple.trigger('click')
185
- expect(change).toHaveBeenCalledWith({ x: 1, y: 2 })
173
+ await ripple.trigger('click')
174
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
175
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([{ x: 1, y: 2 }])
186
176
  })
187
177
 
188
- it('should return a value when toggled on with a specified array value', () => {
178
+ it('should return a value when toggled on with a specified array value', async () => {
189
179
  const wrapper = mountFunction({
190
- propsData: {
180
+ props: {
191
181
  value: [1, '2', { x: 1, y: 2 }],
192
- inputValue: null,
193
- },
182
+ modelValue: null,
183
+ } as any,
194
184
  })
195
185
 
196
186
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
197
187
 
198
- const change = jest.fn()
199
- wrapper.vm.$on('change', change)
200
-
201
- ripple.trigger('click')
202
- expect(change).toHaveBeenCalledWith([1, '2', { x: 1, y: 2 }])
188
+ await ripple.trigger('click')
189
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
190
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([[1, '2', { x: 1, y: 2 }]])
203
191
  })
204
192
 
205
- it('should push value to array when toggled on and is multiple', () => {
193
+ it('should push value to array when toggled on and is multiple', async () => {
206
194
  const wrapper = mountFunction({
207
- propsData: {
195
+ props: {
208
196
  value: 'John',
209
- inputValue: [],
210
- },
197
+ modelValue: [],
198
+ } as any,
211
199
  })
212
200
 
213
201
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
214
202
 
215
- const change = jest.fn()
216
- wrapper.vm.$on('change', change)
217
-
218
- ripple.trigger('click')
219
- expect(change).toHaveBeenCalledWith(['John'])
203
+ await ripple.trigger('click')
204
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
205
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([['John']])
220
206
  })
221
207
 
222
- it('should push array value to array when toggled on and is multiple', () => {
208
+ it('should push array value to array when toggled on and is multiple', async () => {
223
209
  const wrapper = mountFunction({
224
- propsData: {
210
+ props: {
225
211
  value: [1, 2, { x: 1, y: 2 }],
226
- inputValue: ['Existing'],
227
- },
212
+ modelValue: ['Existing'],
213
+ } as any,
228
214
  })
229
215
 
230
216
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
231
217
 
232
- const change = jest.fn()
233
- wrapper.vm.$on('change', change)
234
-
235
- ripple.trigger('click')
236
- expect(change).toHaveBeenCalledWith(['Existing', [1, 2, { x: 1, y: 2 }]])
218
+ await ripple.trigger('click')
219
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
220
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([['Existing', [1, 2, { x: 1, y: 2 }]]])
237
221
  })
238
222
 
239
- it('should return null when toggled off with a specified array value', () => {
223
+ it('should return null when toggled off with a specified array value', async () => {
240
224
  const wrapper = mountFunction({
241
- propsData: {
225
+ props: {
242
226
  multiple: false, // must use multiple flag for array values
243
227
  value: ['John'],
244
- inputValue: ['John'],
245
- },
228
+ modelValue: ['John'],
229
+ } as any,
246
230
  })
247
231
 
248
232
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
249
233
 
250
- const change = jest.fn()
251
- wrapper.vm.$on('change', change)
252
-
253
- ripple.trigger('click')
254
- expect(change).toHaveBeenCalledWith(null)
234
+ await ripple.trigger('click')
235
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
236
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([null])
255
237
  })
256
238
 
257
- it('should remove value(s) from array when toggled off and multiple', () => {
239
+ it('should remove value(s) from array when toggled off and multiple', async () => {
258
240
  const wrapper = mountFunction({
259
- propsData: {
241
+ props: {
260
242
  value: 1,
261
- inputValue: [1, 2, 1, 3],
262
- },
243
+ modelValue: [1, 2, 1, 3],
244
+ } as any,
263
245
  })
264
246
 
265
247
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
266
248
 
267
- const change = jest.fn()
268
- wrapper.vm.$on('change', change)
269
-
270
- ripple.trigger('click')
271
- expect(change).toHaveBeenCalledWith([2, 3])
249
+ await ripple.trigger('click')
250
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
251
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([[2, 3]])
272
252
  })
273
253
 
274
- it('should remove value(s) from array when toggled off and multiple - with objects', () => {
254
+ it('should remove value(s) from array when toggled off and multiple - with objects', async () => {
275
255
  const wrapper = mountFunction({
276
- propsData: {
256
+ props: {
277
257
  value: { a: 1 },
278
- inputValue: [{ a: 1 }, { b: 1 }, { a: 1 }, { c: 1 }],
279
- },
258
+ modelValue: [{ a: 1 }, { b: 1 }, { a: 1 }, { c: 1 }],
259
+ } as any,
280
260
  })
281
261
 
282
262
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
283
263
 
284
- const change = jest.fn()
285
- wrapper.vm.$on('change', change)
286
-
287
- ripple.trigger('click')
288
- expect(change).toHaveBeenCalledWith([{ b: 1 }, { c: 1 }])
264
+ await ripple.trigger('click')
265
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
266
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual([[{ b: 1 }, { c: 1 }]])
289
267
  })
290
268
 
291
- it('should work with custom true- and false-value', () => {
269
+ it('should work with custom true- and false-value', async () => {
292
270
  const wrapper = mountFunction({
293
- propsData: {
271
+ props: {
294
272
  trueValue: 'on',
295
273
  falseValue: 'off',
296
- inputValue: null,
297
- },
274
+ modelValue: null,
275
+ } as any,
298
276
  })
299
277
 
300
278
  const ripple = wrapper.find('.v-input--selection-controls__ripple')
301
279
 
302
- const change = jest.fn()
303
- wrapper.vm.$on('change', change)
304
-
305
- ripple.trigger('click')
306
- expect(change).toHaveBeenCalledWith('on')
280
+ await ripple.trigger('click')
281
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
282
+ expect(wrapper.emitted('update:modelValue')![0]).toEqual(['on'])
307
283
 
308
- ripple.trigger('click')
309
- expect(change).toHaveBeenCalledWith('off')
284
+ await ripple.trigger('click')
285
+ expect(wrapper.emitted('update:modelValue')).toBeTruthy()
286
+ expect(wrapper.emitted('update:modelValue')![1]).toEqual(['off'])
310
287
 
311
- expect(change).toHaveBeenCalledTimes(2)
288
+ expect(wrapper.emitted('update:modelValue')).toHaveLength(2)
312
289
  })
313
290
 
314
291
  // https://github.com/vuetifyjs/vuetify/issues/2119
315
292
  it('should put id on internal input', () => {
316
293
  const wrapper = mountFunction({
317
- propsData: { id: 'foo' },
294
+ props: { id: 'foo' } as any,
318
295
  })
319
296
 
320
297
  const input = wrapper.find('input')
321
298
  expect(input.element.id).toBe('foo')
322
299
  })
323
300
 
324
- it('should use custom icons', () => {
301
+ it('should use custom icons', async () => {
325
302
  const wrapper = mountFunction({
326
- propsData: {
303
+ props: {
327
304
  indeterminateIcon: 'fizzbuzz',
328
305
  onIcon: 'foo',
329
306
  offIcon: 'bar',
330
307
  indeterminate: true,
331
308
  value: 'fizz',
332
- },
309
+ } as any,
333
310
  })
334
311
 
335
312
  expect(wrapper.html()).toMatchSnapshot()
336
- wrapper.setProps({ inputValue: true })
313
+ await wrapper.setProps({ modelValue: true } as any)
337
314
  expect(wrapper.html()).toMatchSnapshot()
338
- wrapper.setProps({ inputValue: false })
315
+ await wrapper.setProps({ modelValue: false } as any)
339
316
  expect(wrapper.html()).toMatchSnapshot()
340
317
  })
341
318
 
342
319
  it('should render themed component', () => {
343
320
  const wrapper = mountFunction({
344
- propsData: {
321
+ props: {
345
322
  light: true,
346
- },
323
+ } as any,
347
324
  })
348
325
 
349
326
  expect(wrapper.html()).toMatchSnapshot()
@@ -351,7 +328,7 @@ describe('VCheckbox.ts', () => { // eslint-disable-line max-statements
351
328
 
352
329
  it('should be disabled', () => {
353
330
  const wrapper = mountFunction({
354
- propsData: { disabled: true },
331
+ props: { disabled: true } as any,
355
332
  })
356
333
  const input = wrapper.find('input')
357
334
 
@@ -360,9 +337,37 @@ describe('VCheckbox.ts', () => { // eslint-disable-line max-statements
360
337
 
361
338
  it('should be render colored checkbox', () => {
362
339
  const wrapper = mountFunction({
363
- propsData: { color: 'yellow' },
340
+ props: { color: 'yellow' } as any,
364
341
  })
365
342
 
366
343
  expect(wrapper.html()).toMatchSnapshot()
367
344
  })
345
+
346
+ it('should apply classes to root element', () => {
347
+ const wrapper = mountFunction({
348
+ props: {
349
+ modelValue: true,
350
+ class: 'shrink mr-2 mt-0',
351
+ } as any,
352
+ })
353
+
354
+ const rootElement = wrapper.element
355
+
356
+ // Проверяем что корневой элемент имеет основные классы VInput
357
+ expect(rootElement.classList.contains('v-input')).toBe(true)
358
+ expect(rootElement.classList.contains('v-input--selection-controls')).toBe(true)
359
+ expect(rootElement.classList.contains('v-input--checkbox')).toBe(true)
360
+ expect(rootElement.classList.contains('v-input--is-dirty')).toBe(true)
361
+
362
+ // Проверяем что переданные классы применены к корневому элементу
363
+ expect(rootElement.classList.contains('shrink')).toBe(true)
364
+ expect(rootElement.classList.contains('mr-2')).toBe(true)
365
+ expect(rootElement.classList.contains('mt-0')).toBe(true)
366
+
367
+ // Проверяем что HTML input НЕ содержит эти классы
368
+ const input = wrapper.find('input')
369
+ expect(input.element.classList.contains('shrink')).toBe(false)
370
+ expect(input.element.classList.contains('mr-2')).toBe(false)
371
+ expect(input.element.classList.contains('mt-0')).toBe(false)
372
+ })
368
373
  })
@@ -44,6 +44,7 @@ export default mixins(
44
44
  type: String,
45
45
  } as any as PropValidator<string>,
46
46
  close: Boolean,
47
+ onClick: Function as PropType<(e: MouseEvent) => void>,
47
48
  closeIcon: {
48
49
  type: String,
49
50
  default: '$delete',