@dimailn/vuetify 2.7.2-alpha14 → 2.7.2-alpha16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/vuetify.js +196 -161
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +1 -1
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VAppBar/VAppBar.js +7 -12
- package/es5/components/VAppBar/VAppBar.js.map +1 -1
- package/es5/components/VCheckbox/VSimpleCheckbox.js +66 -35
- package/es5/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
- package/es5/components/VDataTable/VDataTable.js +1 -1
- package/es5/components/VDataTable/VDataTable.js.map +1 -1
- package/es5/components/VDataTable/VDataTableHeader.js +4 -3
- package/es5/components/VDataTable/VDataTableHeader.js.map +1 -1
- package/es5/components/VDataTable/VDataTableHeaderDesktop.js +4 -2
- package/es5/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
- package/es5/components/VDataTable/mixins/header.js +1 -1
- package/es5/components/VDataTable/mixins/header.js.map +1 -1
- package/es5/components/VGrid/VContainer.js +3 -1
- package/es5/components/VGrid/VContainer.js.map +1 -1
- package/es5/components/VItemGroup/VItem.js +17 -18
- package/es5/components/VItemGroup/VItem.js.map +1 -1
- package/es5/components/VSelect/VSelectList.js +1 -1
- package/es5/components/VSelect/VSelectList.js.map +1 -1
- package/es5/components/VTextField/VTextField.js +4 -1
- package/es5/components/VTextField/VTextField.js.map +1 -1
- package/es5/components/VToolbar/VToolbar.js +2 -3
- package/es5/components/VToolbar/VToolbar.js.map +1 -1
- package/es5/directives/intersect/index.js +20 -7
- package/es5/directives/intersect/index.js.map +1 -1
- package/es5/directives/mutate/index.js +13 -13
- package/es5/directives/mutate/index.js.map +1 -1
- package/es5/directives/resize/index.js +8 -8
- package/es5/directives/resize/index.js.map +1 -1
- package/es5/directives/scroll/index.js +10 -9
- package/es5/directives/scroll/index.js.map +1 -1
- package/es5/directives/touch/index.js +4 -4
- package/es5/directives/touch/index.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/mixins/selectable/index.js +3 -1
- package/es5/mixins/selectable/index.js.map +1 -1
- package/lib/components/VAppBar/VAppBar.js +7 -11
- package/lib/components/VAppBar/VAppBar.js.map +1 -1
- package/lib/components/VCheckbox/VSimpleCheckbox.js +72 -36
- package/lib/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.js +1 -1
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeader.js +4 -3
- package/lib/components/VDataTable/VDataTableHeader.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaderDesktop.js +3 -1
- package/lib/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
- package/lib/components/VDataTable/mixins/header.js +1 -1
- package/lib/components/VDataTable/mixins/header.js.map +1 -1
- package/lib/components/VGrid/VContainer.js +3 -1
- package/lib/components/VGrid/VContainer.js.map +1 -1
- package/lib/components/VItemGroup/VItem.js +20 -18
- package/lib/components/VItemGroup/VItem.js.map +1 -1
- package/lib/components/VSelect/VSelectList.js +1 -1
- package/lib/components/VSelect/VSelectList.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +4 -1
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VToolbar/VToolbar.js +4 -3
- package/lib/components/VToolbar/VToolbar.js.map +1 -1
- package/lib/directives/intersect/index.js +20 -7
- package/lib/directives/intersect/index.js.map +1 -1
- package/lib/directives/mutate/index.js +13 -13
- package/lib/directives/mutate/index.js.map +1 -1
- package/lib/directives/resize/index.js +8 -8
- package/lib/directives/resize/index.js.map +1 -1
- package/lib/directives/scroll/index.js +10 -9
- package/lib/directives/scroll/index.js.map +1 -1
- package/lib/directives/touch/index.js +4 -4
- package/lib/directives/touch/index.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/mixins/selectable/index.js +3 -1
- package/lib/mixins/selectable/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/VAppBar/VAppBar.ts +11 -13
- package/src/components/VCheckbox/VSimpleCheckbox.ts +84 -42
- package/src/components/VCheckbox/__tests__/VSimpleCheckbox.spec.ts +46 -13
- package/src/components/VDataTable/VDataTable.ts +1 -1
- package/src/components/VDataTable/VDataTableHeader.ts +5 -4
- package/src/components/VDataTable/VDataTableHeaderDesktop.ts +1 -1
- package/src/components/VDataTable/mixins/header.ts +4 -4
- package/src/components/VGrid/VContainer.ts +1 -1
- package/src/components/VItemGroup/VItem.ts +25 -23
- package/src/components/VSelect/VSelectList.ts +1 -1
- package/src/components/VTextField/VTextField.ts +3 -2
- package/src/components/VToolbar/VToolbar.ts +4 -5
- package/src/directives/intersect/index.ts +81 -42
- package/src/directives/mutate/index.ts +58 -49
- package/src/directives/resize/index.ts +33 -14
- package/src/directives/scroll/index.ts +36 -20
- package/src/directives/touch/index.ts +37 -27
- package/src/mixins/selectable/index.ts +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mixins/selectable/index.ts"],"names":[],"mappings":"AAAA;AACA,OAAO,MAAP,MAAmB,yBAAnB,C,CAEA;;AACA,OAAO,UAAP,MAAuB,eAAvB;AACA,OAAO,UAAP,MAAuB,eAAvB,C,CAEA;;AACA,OAAO,MAAP,MAAmB,mBAAnB;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../src/mixins/selectable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { h } from 'vue'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n // всплытие провоцирует двойной onChange\n e.stopPropagation()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n props: {\n id: String,\n value: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.modelValue,\n lazyValue: this.modelValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n modelValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.methods.genLabel.call(this)\n\n if (!label) return label\n\n // Label shouldn't cause the input to focus\n label!.onClick = prevent\n\n return label\n },\n genInput (type: string, attrs: object) {\n return h('input', {\n ...Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n value: this.value,\n checked: this.isActive,\n onBlur: this.onBlur,\n onChange: this.onChange,\n onFocus: this.onFocus,\n onKeydown: this.onKeydown,\n onClick: prevent,\n ref: 'input'\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":"","file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import {h} from 'vue'
|
|
2
1
|
// Styles
|
|
3
2
|
import './VAppBar.sass'
|
|
4
3
|
|
|
@@ -16,10 +15,11 @@ import Toggleable from '../../mixins/toggleable'
|
|
|
16
15
|
|
|
17
16
|
// Utilities
|
|
18
17
|
import { convertToUnit } from '../../util/helpers'
|
|
18
|
+
import { mergeProps, withDirectives } from 'vue'
|
|
19
19
|
import mixins from '../../util/mixins'
|
|
20
20
|
|
|
21
21
|
// Types
|
|
22
|
-
import { VNode } from 'vue'
|
|
22
|
+
import type { VNode } from 'vue'
|
|
23
23
|
|
|
24
24
|
const baseMixins = mixins(
|
|
25
25
|
VToolbar,
|
|
@@ -239,8 +239,8 @@ export default baseMixins.extend({
|
|
|
239
239
|
genBackground () {
|
|
240
240
|
const render = VToolbar.methods.genBackground.call(this)
|
|
241
241
|
|
|
242
|
-
render.
|
|
243
|
-
style: { opacity: this.computedOpacity }
|
|
242
|
+
render.props = mergeProps(render.props || {}, {
|
|
243
|
+
style: { opacity: this.computedOpacity }
|
|
244
244
|
})
|
|
245
245
|
|
|
246
246
|
return render
|
|
@@ -268,19 +268,17 @@ export default baseMixins.extend({
|
|
|
268
268
|
},
|
|
269
269
|
|
|
270
270
|
render (): VNode {
|
|
271
|
-
const render = VToolbar.render.call(this
|
|
272
|
-
|
|
273
|
-
render.data = render.data || {}
|
|
271
|
+
const render = VToolbar.render.call(this)
|
|
274
272
|
|
|
275
273
|
if (this.canScroll) {
|
|
276
|
-
render.
|
|
277
|
-
render
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
value: this.onScroll,
|
|
281
|
-
})
|
|
274
|
+
render.key = 'v-app-bar-scroll'
|
|
275
|
+
return withDirectives(render, [
|
|
276
|
+
[Scroll, this.onScroll, this.scrollTarget],
|
|
277
|
+
])
|
|
282
278
|
}
|
|
283
279
|
|
|
280
|
+
render.key = 'v-app-bar-no-scroll'
|
|
281
|
+
|
|
284
282
|
return render
|
|
285
283
|
},
|
|
286
284
|
})
|
|
@@ -2,8 +2,7 @@ import './VSimpleCheckbox.sass'
|
|
|
2
2
|
|
|
3
3
|
import Ripple from '../../directives/ripple'
|
|
4
4
|
|
|
5
|
-
import { VNode,
|
|
6
|
-
import {defineComponent} from 'vue'
|
|
5
|
+
import { VNode, h, defineComponent, withDirectives } from 'vue'
|
|
7
6
|
|
|
8
7
|
import { VIcon } from '../VIcon'
|
|
9
8
|
|
|
@@ -18,8 +17,6 @@ import { wrapInArray } from '../../util/helpers'
|
|
|
18
17
|
export default defineComponent({
|
|
19
18
|
name: 'v-simple-checkbox',
|
|
20
19
|
|
|
21
|
-
functional: true,
|
|
22
|
-
|
|
23
20
|
directives: {
|
|
24
21
|
Ripple,
|
|
25
22
|
},
|
|
@@ -32,7 +29,7 @@ export default defineComponent({
|
|
|
32
29
|
type: Boolean,
|
|
33
30
|
default: true,
|
|
34
31
|
},
|
|
35
|
-
|
|
32
|
+
modelValue: Boolean,
|
|
36
33
|
indeterminate: Boolean,
|
|
37
34
|
indeterminateIcon: {
|
|
38
35
|
type: String,
|
|
@@ -48,49 +45,94 @@ export default defineComponent({
|
|
|
48
45
|
},
|
|
49
46
|
},
|
|
50
47
|
|
|
48
|
+
emits: ['input', 'update:modelValue'],
|
|
49
|
+
|
|
50
|
+
methods: {
|
|
51
|
+
getIcon (): string {
|
|
52
|
+
const { indeterminate, modelValue, indeterminateIcon, onIcon, offIcon } = this.$props
|
|
53
|
+
|
|
54
|
+
if (indeterminate) return indeterminateIcon
|
|
55
|
+
if (modelValue) return onIcon
|
|
56
|
+
return offIcon
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
createIcon (): VNode {
|
|
60
|
+
const { modelValue, disabled, dark, light, color } = this.$props
|
|
61
|
+
|
|
62
|
+
return h(
|
|
63
|
+
VIcon,
|
|
64
|
+
Colorable.methods.setTextColor(modelValue && color, {
|
|
65
|
+
disabled,
|
|
66
|
+
dark,
|
|
67
|
+
light,
|
|
68
|
+
}),
|
|
69
|
+
() => this.getIcon()
|
|
70
|
+
)
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
createRipple (): VNode | null {
|
|
74
|
+
const { ripple, disabled, color } = this.$props
|
|
75
|
+
|
|
76
|
+
if (!ripple || disabled) return null
|
|
77
|
+
|
|
78
|
+
return withDirectives(
|
|
79
|
+
h(
|
|
80
|
+
'div',
|
|
81
|
+
Colorable.methods.setTextColor(color, {
|
|
82
|
+
class: 'v-input--selection-controls__ripple',
|
|
83
|
+
})
|
|
84
|
+
),
|
|
85
|
+
[
|
|
86
|
+
[Ripple, { center: true }],
|
|
87
|
+
]
|
|
88
|
+
)
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
handleClick (e: MouseEvent): void {
|
|
92
|
+
e.stopPropagation()
|
|
93
|
+
|
|
94
|
+
if (this.$props.disabled) return
|
|
95
|
+
|
|
96
|
+
const newValue = !this.modelValue
|
|
97
|
+
const attrs = this.$attrs
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
this.$emit("input", newValue);
|
|
101
|
+
this.$emit('update:modelValue', newValue)
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
createChildren (): VNode[] {
|
|
105
|
+
const children = [this.createIcon()]
|
|
106
|
+
|
|
107
|
+
const ripple = this.createRipple()
|
|
108
|
+
if (ripple) {
|
|
109
|
+
children.push(ripple)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return children
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
|
|
51
116
|
render (): VNode {
|
|
52
|
-
const
|
|
117
|
+
const { disabled } = this.$props
|
|
53
118
|
const data = this.$attrs
|
|
54
119
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (props.indeterminate) icon = props.indeterminateIcon
|
|
58
|
-
else if (props.value) icon = props.onIcon
|
|
59
|
-
|
|
60
|
-
children.push(h(VIcon, Colorable.methods.setTextColor(props.value && props.color, {
|
|
61
|
-
disabled: props.disabled,
|
|
62
|
-
dark: props.dark,
|
|
63
|
-
light: props.light
|
|
64
|
-
}), icon))
|
|
65
|
-
|
|
66
|
-
if (props.ripple && !props.disabled) {
|
|
67
|
-
const ripple = h('div', Colorable.methods.setTextColor(props.color, {
|
|
68
|
-
class: 'v-input--selection-controls__ripple',
|
|
69
|
-
directives: [{
|
|
70
|
-
def: Ripple,
|
|
71
|
-
name: 'ripple',
|
|
72
|
-
value: { center: true },
|
|
73
|
-
}] as VNodeDirective[],
|
|
74
|
-
}))
|
|
75
|
-
|
|
76
|
-
children.push(ripple)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return h('div',
|
|
120
|
+
return h(
|
|
121
|
+
'div',
|
|
80
122
|
mergeData(data, {
|
|
81
123
|
class: {
|
|
82
124
|
'v-simple-checkbox': true,
|
|
83
|
-
'v-simple-checkbox--disabled':
|
|
84
|
-
},
|
|
85
|
-
onClick: (e: MouseEvent) => {
|
|
86
|
-
e.stopPropagation()
|
|
87
|
-
|
|
88
|
-
if (data.on && data.on.input && !props.disabled) {
|
|
89
|
-
data.onInput && data.onInput(!props.value)
|
|
90
|
-
}
|
|
125
|
+
'v-simple-checkbox--disabled': disabled,
|
|
91
126
|
},
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
127
|
+
onClick: this.handleClick,
|
|
128
|
+
}),
|
|
129
|
+
[
|
|
130
|
+
h(
|
|
131
|
+
'div',
|
|
132
|
+
{ class: 'v-input--selection-controls__input' },
|
|
133
|
+
this.createChildren()
|
|
134
|
+
)
|
|
135
|
+
]
|
|
136
|
+
)
|
|
95
137
|
},
|
|
96
138
|
})
|
|
@@ -1,32 +1,65 @@
|
|
|
1
1
|
import {
|
|
2
2
|
mount,
|
|
3
|
-
|
|
4
|
-
MountOptions,
|
|
3
|
+
VueWrapper,
|
|
5
4
|
} from '@vue/test-utils'
|
|
6
5
|
import VSimpleCheckbox from '../VSimpleCheckbox'
|
|
7
6
|
|
|
8
7
|
describe('VSimpleCheckbox.ts', () => {
|
|
9
8
|
type Instance = InstanceType<typeof VSimpleCheckbox>
|
|
10
|
-
let mountFunction: (options?:
|
|
9
|
+
let mountFunction: (options?: any) => VueWrapper<Instance>
|
|
10
|
+
|
|
11
11
|
beforeEach(() => {
|
|
12
|
-
mountFunction = (options
|
|
13
|
-
return mount(VSimpleCheckbox,
|
|
12
|
+
mountFunction = (options = {}) => {
|
|
13
|
+
return mount(VSimpleCheckbox, {
|
|
14
|
+
global: {
|
|
15
|
+
stubs: {
|
|
16
|
+
VIcon: {
|
|
17
|
+
template: '<span class="v-icon"></span>',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
...options,
|
|
22
|
+
})
|
|
14
23
|
}
|
|
15
24
|
})
|
|
16
25
|
|
|
17
|
-
it('should
|
|
18
|
-
const mouseleave = jest.fn()
|
|
26
|
+
it('should render simple checkbox', () => {
|
|
19
27
|
const wrapper = mountFunction({
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
props: { modelValue: false },
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
expect(wrapper.find('.v-simple-checkbox').exists()).toBe(true)
|
|
32
|
+
expect(wrapper.find('.v-input--selection-controls__input').exists()).toBe(true)
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it('should emit update:modelValue event on click', async () => {
|
|
36
|
+
const wrapper = mountFunction({
|
|
37
|
+
props: { modelValue: false },
|
|
24
38
|
})
|
|
25
39
|
|
|
26
40
|
const element = wrapper.find('.v-simple-checkbox')
|
|
41
|
+
await element.trigger('click')
|
|
42
|
+
|
|
43
|
+
expect(wrapper.emitted()['update:modelValue']).toBeTruthy()
|
|
44
|
+
expect(wrapper.emitted()['update:modelValue'][0]).toEqual([true])
|
|
45
|
+
})
|
|
27
46
|
|
|
28
|
-
|
|
47
|
+
it('should not emit update:modelValue when disabled', async () => {
|
|
48
|
+
const wrapper = mountFunction({
|
|
49
|
+
props: { modelValue: false, disabled: true },
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
const element = wrapper.find('.v-simple-checkbox')
|
|
53
|
+
await element.trigger('click')
|
|
54
|
+
|
|
55
|
+
expect(wrapper.emitted()['update:modelValue']).toBeFalsy()
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('should apply disabled class when disabled', () => {
|
|
59
|
+
const wrapper = mountFunction({
|
|
60
|
+
props: { disabled: true },
|
|
61
|
+
})
|
|
29
62
|
|
|
30
|
-
expect(
|
|
63
|
+
expect(wrapper.find('.v-simple-checkbox--disabled').exists()).toBe(true)
|
|
31
64
|
})
|
|
32
65
|
})
|
|
@@ -511,7 +511,7 @@ export default mixins(
|
|
|
511
511
|
isMobile: this.isMobile,
|
|
512
512
|
}) : () => h(VSimpleCheckbox, {
|
|
513
513
|
class: 'v-data-table__checkbox',
|
|
514
|
-
|
|
514
|
+
modelValue: data.isSelected,
|
|
515
515
|
disabled: !this.isSelectable(item),
|
|
516
516
|
color: this.checkboxColor ?? '',
|
|
517
517
|
onInput: (val: boolean) => data.select(val),
|
|
@@ -20,8 +20,6 @@ import {defineComponent, h} from 'vue'
|
|
|
20
20
|
export default defineComponent({
|
|
21
21
|
name: 'v-data-table-header',
|
|
22
22
|
|
|
23
|
-
functional: true,
|
|
24
|
-
|
|
25
23
|
props: {
|
|
26
24
|
...header.props,
|
|
27
25
|
mobile: Boolean,
|
|
@@ -29,12 +27,15 @@ export default defineComponent({
|
|
|
29
27
|
|
|
30
28
|
render () {
|
|
31
29
|
const props = this.$props
|
|
32
|
-
let data =
|
|
30
|
+
let data = {
|
|
31
|
+
...this.$attrs,
|
|
32
|
+
...props,
|
|
33
|
+
}
|
|
33
34
|
|
|
34
35
|
// dedupeModelListeners(data)
|
|
35
36
|
const children = rebuildSlots(this.$slots, h)
|
|
36
37
|
|
|
37
|
-
if (
|
|
38
|
+
if (props.mobile) {
|
|
38
39
|
return h(VDataTableHeaderMobile, data, children)
|
|
39
40
|
} else {
|
|
40
41
|
return h(VDataTableHeaderDesktop, data, children)
|
|
@@ -110,7 +110,7 @@ export default mixins(header).extend({
|
|
|
110
110
|
return h('thead', {
|
|
111
111
|
class: 'v-data-table-header',
|
|
112
112
|
}, [
|
|
113
|
-
h('tr', this.headers
|
|
113
|
+
h('tr', this.headers?.map(header => this.genHeader(header)) || []),
|
|
114
114
|
])
|
|
115
115
|
},
|
|
116
116
|
})
|
|
@@ -3,18 +3,18 @@ import VIcon from '../../VIcon'
|
|
|
3
3
|
import VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'
|
|
4
4
|
import ripple from '../../../directives/ripple'
|
|
5
5
|
|
|
6
|
-
import {defineComponent, h} from 'vue'
|
|
6
|
+
import { defineComponent, h } from 'vue'
|
|
7
7
|
import { PropValidator } from 'vue/types/options'
|
|
8
8
|
import mixins from '../../../util/mixins'
|
|
9
9
|
import { DataOptions, DataTableHeader } from 'vuetify/types'
|
|
10
10
|
|
|
11
11
|
type VDataTableInstance = InstanceType<typeof VDataTable>
|
|
12
12
|
|
|
13
|
-
interface
|
|
13
|
+
interface HeaderOptions {
|
|
14
14
|
dataTable: VDataTableInstance
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export default mixins<
|
|
17
|
+
export default mixins<HeaderOptions>().extend({
|
|
18
18
|
// https://github.com/vuejs/vue/issues/6872
|
|
19
19
|
directives: {
|
|
20
20
|
ripple,
|
|
@@ -53,7 +53,7 @@ export default mixins<options>().extend({
|
|
|
53
53
|
methods: {
|
|
54
54
|
genSelectAll () {
|
|
55
55
|
const data = {
|
|
56
|
-
|
|
56
|
+
modelValue: this.everyItem,
|
|
57
57
|
indeterminate: !this.everyItem && this.someItems,
|
|
58
58
|
color: this.checkboxColor ?? '',
|
|
59
59
|
onInput: (v: boolean) => this.$emit('toggle-select-all', v)
|
|
@@ -7,10 +7,9 @@ import { factory as GroupableFactory } from '../../mixins/groupable'
|
|
|
7
7
|
// Utilities
|
|
8
8
|
import mixins from '../../util/mixins'
|
|
9
9
|
import { consoleWarn } from '../../util/console'
|
|
10
|
+
import { defineComponent, mergeProps } from "vue"
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
import {defineComponent} from 'vue'
|
|
13
|
-
import { VNode, ScopedSlotChildren } from 'vue/types/vnode'
|
|
12
|
+
import type { VNode } from 'vue'
|
|
14
13
|
|
|
15
14
|
/* @vue/component */
|
|
16
15
|
export const BaseItem = defineComponent({
|
|
@@ -32,42 +31,45 @@ export const BaseItem = defineComponent({
|
|
|
32
31
|
},
|
|
33
32
|
},
|
|
34
33
|
|
|
35
|
-
render (): VNode {
|
|
34
|
+
render (): VNode | null {
|
|
36
35
|
if (!this.$slots.default) {
|
|
37
36
|
consoleWarn('v-item is missing a default scopedSlot', this)
|
|
38
|
-
|
|
39
|
-
return null as any
|
|
37
|
+
return null
|
|
40
38
|
}
|
|
41
39
|
|
|
42
|
-
|
|
40
|
+
const slotContent = this.$slots.default({
|
|
41
|
+
active: this.isActive,
|
|
42
|
+
toggle: this.toggle,
|
|
43
|
+
})
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
active: this.isActive,
|
|
48
|
-
toggle: this.toggle,
|
|
49
|
-
})
|
|
45
|
+
if (!slotContent || slotContent.length === 0) {
|
|
46
|
+
consoleWarn('v-item slot returned empty content', this)
|
|
47
|
+
return null
|
|
50
48
|
}
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
element = element[0]
|
|
54
|
-
}
|
|
50
|
+
let element = slotContent[0]
|
|
55
51
|
|
|
56
|
-
if (!element
|
|
57
|
-
consoleWarn('v-item should
|
|
52
|
+
if (!element) {
|
|
53
|
+
consoleWarn('v-item should contain at least one element', this)
|
|
54
|
+
return null
|
|
55
|
+
}
|
|
58
56
|
|
|
59
|
-
|
|
57
|
+
if (!element.type) {
|
|
58
|
+
consoleWarn('v-item should only contain valid VNode elements', this)
|
|
59
|
+
return element
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
element.
|
|
62
|
+
element.props = mergeProps(element.props || {}, {
|
|
63
63
|
class: {
|
|
64
64
|
[this.activeClass]: this.isActive,
|
|
65
|
-
|
|
66
|
-
}
|
|
65
|
+
"v-item--disabled": this.disabled
|
|
66
|
+
}
|
|
67
67
|
})
|
|
68
68
|
|
|
69
69
|
if (this.disabled) {
|
|
70
|
-
element.
|
|
70
|
+
element.props = mergeProps(element.props || {}, {
|
|
71
|
+
tabindex: -1
|
|
72
|
+
})
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
return element
|
|
@@ -355,6 +355,7 @@ export default baseMixins.extend({
|
|
|
355
355
|
if (!this.showLabel) return null
|
|
356
356
|
|
|
357
357
|
const data = {
|
|
358
|
+
ref: "label",
|
|
358
359
|
absolute: true,
|
|
359
360
|
color: this.validationState,
|
|
360
361
|
dark: this.dark,
|
|
@@ -500,8 +501,8 @@ export default baseMixins.extend({
|
|
|
500
501
|
setLabelWidth () {
|
|
501
502
|
if (!this.outlined) return
|
|
502
503
|
|
|
503
|
-
this.labelWidth = this.$refs
|
|
504
|
-
? Math.min(this.$refs
|
|
504
|
+
this.labelWidth = this.$refs?.label?.$el
|
|
505
|
+
? Math.min(this.$refs?.label?.$el.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)
|
|
505
506
|
: 0
|
|
506
507
|
},
|
|
507
508
|
setPrefixWidth () {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {h} from 'vue'
|
|
1
|
+
import { h } from 'vue'
|
|
2
2
|
// Styles
|
|
3
3
|
import './VToolbar.sass'
|
|
4
4
|
|
|
@@ -156,13 +156,12 @@ export default defineComponent({
|
|
|
156
156
|
const children = [this.genContent()]
|
|
157
157
|
const data = this.setBackgroundColor(this.color, {
|
|
158
158
|
class: this.classes,
|
|
159
|
-
style: this.styles
|
|
160
|
-
on: this.$listeners,
|
|
159
|
+
style: this.styles
|
|
161
160
|
})
|
|
162
161
|
|
|
163
162
|
if (this.isExtended) children.push(this.genExtension())
|
|
164
163
|
if (this.src || this.$slots.img) children.unshift(this.genBackground())
|
|
165
164
|
|
|
166
|
-
return h(this.tag, data, children)
|
|
167
|
-
}
|
|
165
|
+
return h(this.tag, {...this.attrs$, ...data}, children)
|
|
166
|
+
}
|
|
168
167
|
})
|