@dimailn/vuetify 2.7.2-alpha41 → 2.7.2-alpha42

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/es5/framework.js CHANGED
@@ -79,7 +79,7 @@ var Vuetify = /*#__PURE__*/function () {
79
79
  exports.default = Vuetify;
80
80
  Vuetify.install = _install.install;
81
81
  Vuetify.installed = false;
82
- Vuetify.version = "2.7.2-alpha41";
82
+ Vuetify.version = "2.7.2-alpha42";
83
83
  Vuetify.config = {
84
84
  silent: false
85
85
  };
@@ -13,27 +13,49 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableTo
13
13
 
14
14
  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."); }
15
15
 
16
- 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); }
17
-
18
16
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
19
17
 
20
18
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
21
19
 
20
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
21
+
22
+ 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); }
23
+
22
24
  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; }
23
25
 
24
- function searchChildren(children) {
26
+ function searchVNodeTree(vnodes) {
25
27
  var _a, _b;
26
28
 
27
29
  var results = [];
28
30
 
29
- for (var index = 0; index < children.length; index++) {
30
- var child = children[index];
31
+ var _iterator = _createForOfIteratorHelper(vnodes),
32
+ _step;
31
33
 
32
- if (child.isActive && child.isDependent) {
33
- results.push(child);
34
- } else {
35
- results.push.apply(results, _toConsumableArray(searchChildren(((_b = (_a = child.children) === null || _a === void 0 ? void 0 : _a.default) === null || _b === void 0 ? void 0 : _b.call(_a)) || [])));
34
+ try {
35
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
36
+ var vnode = _step.value;
37
+ var proxy = (_a = vnode.component) === null || _a === void 0 ? void 0 : _a.proxy;
38
+
39
+ if ((proxy === null || proxy === void 0 ? void 0 : proxy.isActive) && (proxy === null || proxy === void 0 ? void 0 : proxy.isDependent)) {
40
+ results.push(proxy);
41
+ } else {
42
+ var subTree = (_b = vnode.component) === null || _b === void 0 ? void 0 : _b.subTree;
43
+
44
+ if (subTree) {
45
+ results.push.apply(results, _toConsumableArray(searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree])));
46
+ }
47
+
48
+ var children = vnode.children;
49
+
50
+ if (Array.isArray(children)) {
51
+ results.push.apply(results, _toConsumableArray(searchVNodeTree(children)));
52
+ }
53
+ }
36
54
  }
55
+ } catch (err) {
56
+ _iterator.e(err);
57
+ } finally {
58
+ _iterator.f();
37
59
  }
38
60
 
39
61
  return results;
@@ -62,12 +84,12 @@ var _default = (0, _mixins.default)().extend({
62
84
  },
63
85
  methods: {
64
86
  getOpenDependents: function getOpenDependents() {
65
- var _a, _b;
87
+ var _a;
66
88
 
67
- var node = (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a);
68
- if (!node) return [];
69
- if (this.closeDependents) return searchChildren(node);
70
- return [];
89
+ if (!this.closeDependents) return [];
90
+ var subTree = (_a = this.$) === null || _a === void 0 ? void 0 : _a.subTree;
91
+ if (!subTree) return [];
92
+ return searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree]);
71
93
  },
72
94
  getOpenDependentElements: function getOpenDependentElements() {
73
95
  var result = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/dependent/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineComponent } from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options {\n $el: HTMLElement\n $refs: {\n content?: HTMLElement\n }\n overlay?: InstanceType<typeof VOverlay>\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n children?: { default?: () => any[] }\n}\n\nfunction searchChildren (children: any[]): DependentInstance[] {\n const results = []\n for (let index = 0; index < children.length; index++) {\n const child = children[index] as DependentInstance\n\n if (child.isActive && child.isDependent) {\n results.push(child)\n } else {\n results.push(...searchChildren(child.children?.default?.() || []))\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n }\n },\n\n methods: {\n getOpenDependents (): any[] {\n const node = this.$slots.default?.()\n\n if (!node) return []\n\n if (this.closeDependents) return searchChildren(node)\n\n return []\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n }\n }\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/dependent/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineComponent } from 'vue'\nimport type { VNode } from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options {\n $el: HTMLElement\n $refs: {\n content?: HTMLElement\n }\n overlay?: InstanceType<typeof VOverlay>\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n getClickableDependentElements?: () => HTMLElement[]\n}\n\nfunction searchVNodeTree (vnodes: VNode[]): DependentInstance[] {\n const results: DependentInstance[] = []\n\n for (const vnode of vnodes) {\n const proxy = (vnode as any).component?.proxy as DependentInstance | undefined\n\n if (proxy?.isActive && proxy?.isDependent) {\n results.push(proxy)\n } else {\n const subTree = (vnode as any).component?.subTree\n if (subTree) {\n results.push(...searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree]))\n }\n\n const children = (vnode as any).children\n if (Array.isArray(children)) {\n results.push(...searchVNodeTree(children))\n }\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n }\n },\n\n methods: {\n getOpenDependents (): any[] {\n if (!this.closeDependents) return []\n\n const subTree = (this.$ as any)?.subTree\n if (!subTree) return []\n\n return searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree])\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n }\n }\n})\n"],"sourceRoot":"","file":"index.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-alpha41";
49
+ Vuetify.version = "2.7.2-alpha42";
50
50
  Vuetify.config = {
51
51
  silent: false
52
52
  };
@@ -1,17 +1,27 @@
1
1
  import mixins from '../../util/mixins';
2
2
 
3
- function searchChildren(children) {
3
+ function searchVNodeTree(vnodes) {
4
4
  var _a, _b;
5
5
 
6
6
  const results = [];
7
7
 
8
- for (let index = 0; index < children.length; index++) {
9
- const child = children[index];
8
+ for (const vnode of vnodes) {
9
+ const proxy = (_a = vnode.component) === null || _a === void 0 ? void 0 : _a.proxy;
10
10
 
11
- if (child.isActive && child.isDependent) {
12
- results.push(child);
11
+ if ((proxy === null || proxy === void 0 ? void 0 : proxy.isActive) && (proxy === null || proxy === void 0 ? void 0 : proxy.isDependent)) {
12
+ results.push(proxy);
13
13
  } else {
14
- results.push(...searchChildren(((_b = (_a = child.children) === null || _a === void 0 ? void 0 : _a.default) === null || _b === void 0 ? void 0 : _b.call(_a)) || []));
14
+ const subTree = (_b = vnode.component) === null || _b === void 0 ? void 0 : _b.subTree;
15
+
16
+ if (subTree) {
17
+ results.push(...searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree]));
18
+ }
19
+
20
+ const children = vnode.children;
21
+
22
+ if (Array.isArray(children)) {
23
+ results.push(...searchVNodeTree(children));
24
+ }
15
25
  }
16
26
  }
17
27
 
@@ -44,12 +54,12 @@ export default mixins().extend({
44
54
  },
45
55
  methods: {
46
56
  getOpenDependents() {
47
- var _a, _b;
57
+ var _a;
48
58
 
49
- const node = (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a);
50
- if (!node) return [];
51
- if (this.closeDependents) return searchChildren(node);
52
- return [];
59
+ if (!this.closeDependents) return [];
60
+ const subTree = (_a = this.$) === null || _a === void 0 ? void 0 : _a.subTree;
61
+ if (!subTree) return [];
62
+ return searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree]);
53
63
  },
54
64
 
55
65
  getOpenDependentElements() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/dependent/index.ts"],"names":[],"mappings":"AAEA,OAAO,MAAP,MAAmB,mBAAnB;;AAiBA,SAAS,cAAT,CAAyB,QAAzB,EAAwC;;;AACtC,QAAM,OAAO,GAAG,EAAhB;;AACA,OAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,QAAQ,CAAC,MAArC,EAA6C,KAAK,EAAlD,EAAsD;AACpD,UAAM,KAAK,GAAG,QAAQ,CAAC,KAAD,CAAtB;;AAEA,QAAI,KAAK,CAAC,QAAN,IAAkB,KAAK,CAAC,WAA5B,EAAyC;AACvC,MAAA,OAAO,CAAC,IAAR,CAAa,KAAb;AACD,KAFD,MAEO;AACL,MAAA,OAAO,CAAC,IAAR,CAAa,GAAG,cAAc,CAAC,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,CAAC,QAAN,MAAc,IAAd,IAAc,EAAA,KAAA,KAAA,CAAd,GAAc,KAAA,CAAd,GAAc,EAAA,CAAE,OAAhB,MAAuB,IAAvB,IAAuB,EAAA,KAAA,KAAA,CAAvB,GAAuB,KAAA,CAAvB,GAAuB,EAAA,CAAA,IAAA,CAAA,EAAA,CAAvB,KAA+B,EAAhC,CAA9B;AACD;AACF;;AAED,SAAO,OAAP;AACD;AAED;;;AACA,eAAe,MAAM,GAAG,MAAT,CAAgB;AAC7B,EAAA,IAAI,EAAE,WADuB;;AAG7B,EAAA,IAAI,GAAA;AACF,WAAO;AACL,MAAA,eAAe,EAAE,IADZ;AAEL,MAAA,QAAQ,EAAE,KAFL;AAGL,MAAA,WAAW,EAAE;AAHR,KAAP;AAKD,GAT4B;;AAW7B,EAAA,KAAK,EAAE;AACL,IAAA,QAAQ,CAAE,GAAF,EAAK;AACX,UAAI,GAAJ,EAAS;AAET,YAAM,cAAc,GAAG,KAAK,iBAAL,EAAvB;;AACA,WAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,cAAc,CAAC,MAA3C,EAAmD,KAAK,EAAxD,EAA4D;AAC1D,QAAA,cAAc,CAAC,KAAD,CAAd,CAAsB,QAAtB,GAAiC,KAAjC;AACD;AACF;;AARI,GAXsB;AAsB7B,EAAA,OAAO,EAAE;AACP,IAAA,iBAAiB,GAAA;;;AACf,YAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,MAAL,EAAY,OAAZ,MAAmB,IAAnB,IAAmB,EAAA,KAAA,KAAA,CAAnB,GAAmB,KAAA,CAAnB,GAAmB,EAAA,CAAA,IAAA,CAAA,EAAA,CAAhC;AAEA,UAAI,CAAC,IAAL,EAAW,OAAO,EAAP;AAEX,UAAI,KAAK,eAAT,EAA0B,OAAO,cAAc,CAAC,IAAD,CAArB;AAE1B,aAAO,EAAP;AACD,KATM;;AAUP,IAAA,wBAAwB,GAAA;AACtB,YAAM,MAAM,GAAG,EAAf;AACA,YAAM,cAAc,GAAG,KAAK,iBAAL,EAAvB;;AAEA,WAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,cAAc,CAAC,MAA3C,EAAmD,KAAK,EAAxD,EAA4D;AAC1D,QAAA,MAAM,CAAC,IAAP,CAAY,GAAG,cAAc,CAAC,KAAD,CAAd,CAAsB,6BAAtB,EAAf;AACD;;AAED,aAAO,MAAP;AACD,KAnBM;;AAoBP,IAAA,6BAA6B,GAAA;AAC3B,YAAM,MAAM,GAAG,CAAC,KAAK,GAAN,CAAf;AACA,UAAI,KAAK,KAAL,CAAW,OAAf,EAAwB,MAAM,CAAC,IAAP,CAAY,KAAK,KAAL,CAAW,OAAvB;AACxB,UAAI,KAAK,OAAT,EAAkB,MAAM,CAAC,IAAP,CAAY,KAAK,OAAL,CAAa,GAAzB;AAClB,MAAA,MAAM,CAAC,IAAP,CAAY,GAAG,KAAK,wBAAL,EAAf;AAEA,aAAO,MAAP;AACD;;AA3BM;AAtBoB,CAAhB,CAAf","sourcesContent":["import { defineComponent } from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options {\n $el: HTMLElement\n $refs: {\n content?: HTMLElement\n }\n overlay?: InstanceType<typeof VOverlay>\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n children?: { default?: () => any[] }\n}\n\nfunction searchChildren (children: any[]): DependentInstance[] {\n const results = []\n for (let index = 0; index < children.length; index++) {\n const child = children[index] as DependentInstance\n\n if (child.isActive && child.isDependent) {\n results.push(child)\n } else {\n results.push(...searchChildren(child.children?.default?.() || []))\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n }\n },\n\n methods: {\n getOpenDependents (): any[] {\n const node = this.$slots.default?.()\n\n if (!node) return []\n\n if (this.closeDependents) return searchChildren(node)\n\n return []\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n }\n }\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/dependent/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineComponent } from 'vue'\nimport type { VNode } from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options {\n $el: HTMLElement\n $refs: {\n content?: HTMLElement\n }\n overlay?: InstanceType<typeof VOverlay>\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n getClickableDependentElements?: () => HTMLElement[]\n}\n\nfunction searchVNodeTree (vnodes: VNode[]): DependentInstance[] {\n const results: DependentInstance[] = []\n\n for (const vnode of vnodes) {\n const proxy = (vnode as any).component?.proxy as DependentInstance | undefined\n\n if (proxy?.isActive && proxy?.isDependent) {\n results.push(proxy)\n } else {\n const subTree = (vnode as any).component?.subTree\n if (subTree) {\n results.push(...searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree]))\n }\n\n const children = (vnode as any).children\n if (Array.isArray(children)) {\n results.push(...searchVNodeTree(children))\n }\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n }\n },\n\n methods: {\n getOpenDependents (): any[] {\n if (!this.closeDependents) return []\n\n const subTree = (this.$ as any)?.subTree\n if (!subTree) return []\n\n return searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree])\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n }\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-alpha41",
4
+ "version": "2.7.2-alpha42",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"
@@ -564,4 +564,58 @@ describe('VSelect.ts', () => {
564
564
  // Confirm dialog is still open (проверяем существование)
565
565
  expect(dialogWrapper.exists()).toBe(true)
566
566
  })
567
+
568
+ it('should not treat click on select item as outside dialog', async () => {
569
+ const items = ['Foo', 'Bar', 'Fizz']
570
+
571
+ const dialogWrapper = mount(VDialog, {
572
+ slots: {
573
+ default: () => h(VSelect, {
574
+ items
575
+ })
576
+ },
577
+ props: {
578
+ modelValue: false,
579
+ fullscreen: true
580
+ },
581
+ global: {
582
+ mocks: {
583
+ $vuetify: {
584
+ lang: {
585
+ t: (val: string) => val
586
+ },
587
+ theme: {
588
+ dark: false
589
+ },
590
+ icons: {
591
+ component: 'mdi'
592
+ },
593
+ breakpoint: {}
594
+ }
595
+ }
596
+ }
597
+ }) as VueWrapper<InstanceType<typeof VDialog>>
598
+
599
+ await dialogWrapper.setProps({ modelValue: true })
600
+ await dialogWrapper.vm.$nextTick()
601
+
602
+ const selectWrapper = dialogWrapper.findComponent(VSelect) as VueWrapper<Instance>
603
+
604
+ const inputSlot = selectWrapper.find('.v-input__slot')
605
+ await inputSlot.trigger('click')
606
+ await selectWrapper.vm.$nextTick()
607
+
608
+ expect(selectWrapper.vm.isMenuActive).toBe(true)
609
+
610
+ const item = document.querySelector('.v-list-item')
611
+ expect(item).toBeTruthy()
612
+ if (item) {
613
+ (item as HTMLElement).click()
614
+ }
615
+ await waitAnimationFrame()
616
+ await selectWrapper.vm.$nextTick()
617
+
618
+ expect(dialogWrapper.emitted('click:outside')).toBeFalsy()
619
+ expect(dialogWrapper.vm.isActive).toBe(true)
620
+ })
567
621
  })
@@ -1,4 +1,5 @@
1
1
  import { defineComponent } from 'vue'
2
+ import type { VNode } from 'vue'
2
3
 
3
4
  import mixins from '../../util/mixins'
4
5
  import { VOverlay } from '../../components/VOverlay'
@@ -14,18 +15,27 @@ interface options {
14
15
  interface DependentInstance extends Vue {
15
16
  isActive?: boolean
16
17
  isDependent?: boolean
17
- children?: { default?: () => any[] }
18
+ getClickableDependentElements?: () => HTMLElement[]
18
19
  }
19
20
 
20
- function searchChildren (children: any[]): DependentInstance[] {
21
- const results = []
22
- for (let index = 0; index < children.length; index++) {
23
- const child = children[index] as DependentInstance
21
+ function searchVNodeTree (vnodes: VNode[]): DependentInstance[] {
22
+ const results: DependentInstance[] = []
24
23
 
25
- if (child.isActive && child.isDependent) {
26
- results.push(child)
24
+ for (const vnode of vnodes) {
25
+ const proxy = (vnode as any).component?.proxy as DependentInstance | undefined
26
+
27
+ if (proxy?.isActive && proxy?.isDependent) {
28
+ results.push(proxy)
27
29
  } else {
28
- results.push(...searchChildren(child.children?.default?.() || []))
30
+ const subTree = (vnode as any).component?.subTree
31
+ if (subTree) {
32
+ results.push(...searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree]))
33
+ }
34
+
35
+ const children = (vnode as any).children
36
+ if (Array.isArray(children)) {
37
+ results.push(...searchVNodeTree(children))
38
+ }
29
39
  }
30
40
  }
31
41
 
@@ -57,13 +67,12 @@ export default mixins().extend({
57
67
 
58
68
  methods: {
59
69
  getOpenDependents (): any[] {
60
- const node = this.$slots.default?.()
61
-
62
- if (!node) return []
70
+ if (!this.closeDependents) return []
63
71
 
64
- if (this.closeDependents) return searchChildren(node)
72
+ const subTree = (this.$ as any)?.subTree
73
+ if (!subTree) return []
65
74
 
66
- return []
75
+ return searchVNodeTree(Array.isArray(subTree) ? subTree : [subTree])
67
76
  },
68
77
  getOpenDependentElements (): HTMLElement[] {
69
78
  const result = []