@dimailn/vuetify 2.7.2-alpha15 → 2.7.2-alpha17

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 (43) hide show
  1. package/dist/vuetify.js +87 -46
  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/VCheckbox/VSimpleCheckbox.js +66 -35
  6. package/es5/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
  7. package/es5/components/VDataTable/VDataTable.js +1 -1
  8. package/es5/components/VDataTable/VDataTable.js.map +1 -1
  9. package/es5/components/VDataTable/VDataTableHeader.js +4 -3
  10. package/es5/components/VDataTable/VDataTableHeader.js.map +1 -1
  11. package/es5/components/VDataTable/VDataTableHeaderDesktop.js +4 -2
  12. package/es5/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
  13. package/es5/components/VDataTable/mixins/header.js +1 -1
  14. package/es5/components/VDataTable/mixins/header.js.map +1 -1
  15. package/es5/components/VSelect/VSelectList.js +1 -1
  16. package/es5/components/VSelect/VSelectList.js.map +1 -1
  17. package/es5/framework.js +1 -1
  18. package/es5/mixins/selectable/index.js +9 -1
  19. package/es5/mixins/selectable/index.js.map +1 -1
  20. package/lib/components/VCheckbox/VSimpleCheckbox.js +72 -36
  21. package/lib/components/VCheckbox/VSimpleCheckbox.js.map +1 -1
  22. package/lib/components/VDataTable/VDataTable.js +1 -1
  23. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  24. package/lib/components/VDataTable/VDataTableHeader.js +4 -3
  25. package/lib/components/VDataTable/VDataTableHeader.js.map +1 -1
  26. package/lib/components/VDataTable/VDataTableHeaderDesktop.js +3 -1
  27. package/lib/components/VDataTable/VDataTableHeaderDesktop.js.map +1 -1
  28. package/lib/components/VDataTable/mixins/header.js +1 -1
  29. package/lib/components/VDataTable/mixins/header.js.map +1 -1
  30. package/lib/components/VSelect/VSelectList.js +1 -1
  31. package/lib/components/VSelect/VSelectList.js.map +1 -1
  32. package/lib/framework.js +1 -1
  33. package/lib/mixins/selectable/index.js +9 -1
  34. package/lib/mixins/selectable/index.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/components/VCheckbox/VSimpleCheckbox.ts +84 -42
  37. package/src/components/VCheckbox/__tests__/VSimpleCheckbox.spec.ts +46 -13
  38. package/src/components/VDataTable/VDataTable.ts +1 -1
  39. package/src/components/VDataTable/VDataTableHeader.ts +5 -4
  40. package/src/components/VDataTable/VDataTableHeaderDesktop.ts +1 -1
  41. package/src/components/VDataTable/mixins/header.ts +4 -4
  42. package/src/components/VSelect/VSelectList.ts +1 -1
  43. package/src/mixins/selectable/index.ts +9 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VSelect/VSelectList.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport { getPropertyFromItem } from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren, h } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator<any[]>,\n itemDisabled: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType<any>,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator<any[]>,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n role: undefined,\n onMousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n }\n\n return h(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return h(VListItemAction, [\n h(VSimpleCheckbox, {\n color: this.color,\n value: inputValue,\n ripple: false,\n onInput: () => this.$emit('select', item)\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return h(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return text\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return [start, this.genHighlight(middle), end]\n },\n genHeader (props: { [key: string]: any }): VNode {\n return h(VSubheader, { props }, props.header)\n },\n genHighlight (text: string) {\n return h('span', { class: 'v-list-item__mask' }, text)\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n onMousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n onClick: () => disabled || this.$emit('select', item),\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n }\n\n if (!this.$slots.item) {\n return h(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$slots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? h(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n return h(VListItemContent, [\n h(VListItemTitle, [\n this.genFilteredText(this.getText(item)),\n ]),\n ])\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data']?.() || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item']())\n\n this.$slots['append-item'] && children.push(this.$slots['append-item']())\n\n return h(VList, {\n class: ['v-select-list', this.themeClasses],\n role: 'listbox',\n tabindex: -1,\n onMousedown: (e: Event) => {\n e.preventDefault()\n },\n dense: this.dense,\n }, children)\n },\n})\n"],"sourceRoot":"","file":"VSelectList.js"}
1
+ {"version":3,"sources":["../../../src/components/VSelect/VSelectList.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport { getPropertyFromItem } from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren, h } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator<any[]>,\n itemDisabled: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType<any>,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator<any[]>,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n role: undefined,\n onMousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n }\n\n return h(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return h(VListItemAction, [\n h(VSimpleCheckbox, {\n color: this.color,\n modelValue: inputValue,\n ripple: false,\n onInput: () => this.$emit('select', item)\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return h(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return text\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return [start, this.genHighlight(middle), end]\n },\n genHeader (props: { [key: string]: any }): VNode {\n return h(VSubheader, { props }, props.header)\n },\n genHighlight (text: string) {\n return h('span', { class: 'v-list-item__mask' }, text)\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n onMousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n onClick: () => disabled || this.$emit('select', item),\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n }\n\n if (!this.$slots.item) {\n return h(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$slots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? h(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n return h(VListItemContent, [\n h(VListItemTitle, [\n this.genFilteredText(this.getText(item)),\n ]),\n ])\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data']?.() || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item']())\n\n this.$slots['append-item'] && children.push(this.$slots['append-item']())\n\n return h(VList, {\n class: ['v-select-list', this.themeClasses],\n role: 'listbox',\n tabindex: -1,\n onMousedown: (e: Event) => {\n e.preventDefault()\n },\n dense: this.dense,\n }, children)\n },\n})\n"],"sourceRoot":"","file":"VSelectList.js"}
package/lib/framework.js CHANGED
@@ -46,7 +46,7 @@ export default class Vuetify {
46
46
  }
47
47
  Vuetify.install = install;
48
48
  Vuetify.installed = false;
49
- Vuetify.version = "2.7.2-alpha15";
49
+ Vuetify.version = "2.7.2-alpha17";
50
50
  Vuetify.config = {
51
51
  silent: false
52
52
  };
@@ -105,7 +105,15 @@ export default mixins(VInput, Rippleable, Comparable).extend({
105
105
  },
106
106
 
107
107
  onClick(e) {
108
- this.onChange();
108
+ // тут задваиваются клики
109
+ const target = e.target;
110
+ const isCurrentClick = target.id === this.computedId;
111
+ const isRippleClick = target.classList.contains('v-input--selection-controls__ripple');
112
+
113
+ if (isCurrentClick || isRippleClick || !this.computedId) {
114
+ this.onChange();
115
+ }
116
+
109
117
  this.$emit('click', e);
110
118
  },
111
119
 
@@ -1 +1 @@
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}\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"}
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}\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 // тут задваиваются клики\n const target = e.target as HTMLElement\n const isCurrentClick = target.id === this.computedId\n const isRippleClick = target.classList.contains('v-input--selection-controls__ripple')\n\n if (isCurrentClick || isRippleClick || !this.computedId) {\n this.onChange();\n }\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,7 +1,7 @@
1
1
  {
2
2
  "name": "@dimailn/vuetify",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "2.7.2-alpha15",
4
+ "version": "2.7.2-alpha17",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"
@@ -2,8 +2,7 @@ import './VSimpleCheckbox.sass'
2
2
 
3
3
  import Ripple from '../../directives/ripple'
4
4
 
5
- import { VNode, VNodeDirective, h } from 'vue'
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
- value: Boolean,
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 props = this.$props
117
+ const { disabled } = this.$props
53
118
  const data = this.$attrs
54
119
 
55
- const children = []
56
- let icon = props.offIcon
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': props.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
- h('div', { class: 'v-input--selection-controls__input' }, children),
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
- Wrapper,
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?: MountOptions<Instance>) => Wrapper<Instance>
9
+ let mountFunction: (options?: any) => VueWrapper<Instance>
10
+
11
11
  beforeEach(() => {
12
- mountFunction = (options?: MountOptions<Instance>) => {
13
- return mount(VSimpleCheckbox, options)
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 pass down listeners', () => {
18
- const mouseleave = jest.fn()
26
+ it('should render simple checkbox', () => {
19
27
  const wrapper = mountFunction({
20
- propsData: { disabled: true },
21
- listeners: {
22
- mouseleave,
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
- element.trigger('mouseleave')
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(mouseleave).toHaveBeenCalledTimes(1)
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
- value: data.isSelected,
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 = this.$attrs
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 (this.mobile) {
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.map(header => this.genHeader(header))),
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 options extends Vue {
13
+ interface HeaderOptions {
14
14
  dataTable: VDataTableInstance
15
15
  }
16
16
 
17
- export default mixins<options>().extend({
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
- value: this.everyItem,
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)
@@ -90,7 +90,7 @@ export default mixins(Colorable, Themeable).extend({
90
90
  return h(VListItemAction, [
91
91
  h(VSimpleCheckbox, {
92
92
  color: this.color,
93
- value: inputValue,
93
+ modelValue: inputValue,
94
94
  ripple: false,
95
95
  onInput: () => this.$emit('select', item)
96
96
  }),
@@ -7,7 +7,7 @@ import Comparable from '../comparable'
7
7
 
8
8
  // Utilities
9
9
  import mixins from '../../util/mixins'
10
- import {h} from 'vue'
10
+ import { h } from 'vue'
11
11
 
12
12
  export function prevent (e: Event) {
13
13
  e.preventDefault()
@@ -116,7 +116,14 @@ export default mixins(
116
116
  })
117
117
  },
118
118
  onClick (e: Event) {
119
- this.onChange()
119
+ // тут задваиваются клики
120
+ const target = e.target as HTMLElement
121
+ const isCurrentClick = target.id === this.computedId
122
+ const isRippleClick = target.classList.contains('v-input--selection-controls__ripple')
123
+
124
+ if (isCurrentClick || isRippleClick || !this.computedId) {
125
+ this.onChange();
126
+ }
120
127
  this.$emit('click', e)
121
128
  },
122
129
  onChange () {