@vue/runtime-dom
Advanced tools
Comparing version 3.4.14 to 3.4.15
/** | ||
* @vue/runtime-dom v3.4.14 | ||
* @vue/runtime-dom v3.4.15 | ||
* (c) 2018-present Yuxi (Evan) You and Vue contributors | ||
@@ -1215,2 +1215,6 @@ * @license MIT | ||
); | ||
el._assigning = true; | ||
runtimeCore.nextTick(() => { | ||
el._assigning = false; | ||
}); | ||
}); | ||
@@ -1221,4 +1225,4 @@ el[assignKey] = getModelAssigner(vnode); | ||
// <option>s. | ||
mounted(el, { value }) { | ||
setSelected(el, value); | ||
mounted(el, { value, oldValue, modifiers: { number } }) { | ||
setSelected(el, value, oldValue, number); | ||
}, | ||
@@ -1228,9 +1232,12 @@ beforeUpdate(el, _binding, vnode) { | ||
}, | ||
updated(el, { value }) { | ||
setSelected(el, value); | ||
updated(el, { value, oldValue, modifiers: { number } }) { | ||
if (!el._assigning) { | ||
setSelected(el, value, oldValue, number); | ||
} | ||
} | ||
}; | ||
function setSelected(el, value) { | ||
function setSelected(el, value, oldValue, number) { | ||
const isMultiple = el.multiple; | ||
if (isMultiple && !shared.isArray(value) && !shared.isSet(value)) { | ||
const isArrayValue = shared.isArray(value); | ||
if (isMultiple && !isArrayValue && !shared.isSet(value)) { | ||
runtimeCore.warn( | ||
@@ -1241,2 +1248,5 @@ `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.` | ||
} | ||
if (isArrayValue && shared.looseEqual(value, oldValue)) { | ||
return; | ||
} | ||
for (let i = 0, l = el.options.length; i < l; i++) { | ||
@@ -1246,4 +1256,11 @@ const option = el.options[i]; | ||
if (isMultiple) { | ||
if (shared.isArray(value)) { | ||
option.selected = shared.looseIndexOf(value, optionValue) > -1; | ||
if (isArrayValue) { | ||
const optionType = typeof optionValue; | ||
if (optionType === "string" || optionType === "number") { | ||
option.selected = value.includes( | ||
number ? shared.looseToNumber(optionValue) : optionValue | ||
); | ||
} else { | ||
option.selected = shared.looseIndexOf(value, optionValue) > -1; | ||
} | ||
} else { | ||
@@ -1250,0 +1267,0 @@ option.selected = value.has(optionValue); |
/** | ||
* @vue/runtime-dom v3.4.14 | ||
* @vue/runtime-dom v3.4.15 | ||
* (c) 2018-present Yuxi (Evan) You and Vue contributors | ||
@@ -1171,2 +1171,6 @@ * @license MIT | ||
); | ||
el._assigning = true; | ||
runtimeCore.nextTick(() => { | ||
el._assigning = false; | ||
}); | ||
}); | ||
@@ -1177,4 +1181,4 @@ el[assignKey] = getModelAssigner(vnode); | ||
// <option>s. | ||
mounted(el, { value }) { | ||
setSelected(el, value); | ||
mounted(el, { value, oldValue, modifiers: { number } }) { | ||
setSelected(el, value, oldValue, number); | ||
}, | ||
@@ -1184,11 +1188,17 @@ beforeUpdate(el, _binding, vnode) { | ||
}, | ||
updated(el, { value }) { | ||
setSelected(el, value); | ||
updated(el, { value, oldValue, modifiers: { number } }) { | ||
if (!el._assigning) { | ||
setSelected(el, value, oldValue, number); | ||
} | ||
} | ||
}; | ||
function setSelected(el, value) { | ||
function setSelected(el, value, oldValue, number) { | ||
const isMultiple = el.multiple; | ||
if (isMultiple && !shared.isArray(value) && !shared.isSet(value)) { | ||
const isArrayValue = shared.isArray(value); | ||
if (isMultiple && !isArrayValue && !shared.isSet(value)) { | ||
return; | ||
} | ||
if (isArrayValue && shared.looseEqual(value, oldValue)) { | ||
return; | ||
} | ||
for (let i = 0, l = el.options.length; i < l; i++) { | ||
@@ -1198,4 +1208,11 @@ const option = el.options[i]; | ||
if (isMultiple) { | ||
if (shared.isArray(value)) { | ||
option.selected = shared.looseIndexOf(value, optionValue) > -1; | ||
if (isArrayValue) { | ||
const optionType = typeof optionValue; | ||
if (optionType === "string" || optionType === "number") { | ||
option.selected = value.includes( | ||
number ? shared.looseToNumber(optionValue) : optionValue | ||
); | ||
} else { | ||
option.selected = shared.looseIndexOf(value, optionValue) > -1; | ||
} | ||
} else { | ||
@@ -1202,0 +1219,0 @@ option.selected = value.has(optionValue); |
@@ -95,2 +95,3 @@ import { SetupContext, RenderFunction, ComputedOptions, MethodOptions, ComponentOptionsMixin, EmitsOptions, ComponentInjectOptions, SlotsType, ComponentOptionsWithoutProps, ComponentOptionsWithArrayProps, ComponentPropsOptions, ComponentOptionsWithObjectProps, ExtractPropTypes, DefineComponent, RootHydrateFunction, ConcreteComponent, BaseTransitionProps, FunctionalComponent, ObjectDirective, VNodeRef, RootRenderFunction, CreateAppFunction } from '@vue/runtime-core'; | ||
[assignKey]: AssignerFn; | ||
_assigning?: boolean; | ||
}>; | ||
@@ -97,0 +98,0 @@ export declare const vModelText: ModelDirective<HTMLInputElement | HTMLTextAreaElement>; |
/** | ||
* @vue/runtime-dom v3.4.14 | ||
* @vue/runtime-dom v3.4.15 | ||
* (c) 2018-present Yuxi (Evan) You and Vue contributors | ||
@@ -1270,2 +1270,6 @@ * @license MIT | ||
); | ||
el._assigning = true; | ||
nextTick(() => { | ||
el._assigning = false; | ||
}); | ||
}); | ||
@@ -1276,4 +1280,4 @@ el[assignKey] = getModelAssigner(vnode); | ||
// <option>s. | ||
mounted(el, { value }) { | ||
setSelected(el, value); | ||
mounted(el, { value, oldValue, modifiers: { number } }) { | ||
setSelected(el, value, oldValue, number); | ||
}, | ||
@@ -1283,9 +1287,12 @@ beforeUpdate(el, _binding, vnode) { | ||
}, | ||
updated(el, { value }) { | ||
setSelected(el, value); | ||
updated(el, { value, oldValue, modifiers: { number } }) { | ||
if (!el._assigning) { | ||
setSelected(el, value, oldValue, number); | ||
} | ||
} | ||
}; | ||
function setSelected(el, value) { | ||
function setSelected(el, value, oldValue, number) { | ||
const isMultiple = el.multiple; | ||
if (isMultiple && !isArray(value) && !isSet(value)) { | ||
const isArrayValue = isArray(value); | ||
if (isMultiple && !isArrayValue && !isSet(value)) { | ||
!!(process.env.NODE_ENV !== "production") && warn( | ||
@@ -1296,2 +1303,5 @@ `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.` | ||
} | ||
if (isArrayValue && looseEqual(value, oldValue)) { | ||
return; | ||
} | ||
for (let i = 0, l = el.options.length; i < l; i++) { | ||
@@ -1301,4 +1311,11 @@ const option = el.options[i]; | ||
if (isMultiple) { | ||
if (isArray(value)) { | ||
option.selected = looseIndexOf(value, optionValue) > -1; | ||
if (isArrayValue) { | ||
const optionType = typeof optionValue; | ||
if (optionType === "string" || optionType === "number") { | ||
option.selected = value.includes( | ||
number ? looseToNumber(optionValue) : optionValue | ||
); | ||
} else { | ||
option.selected = looseIndexOf(value, optionValue) > -1; | ||
} | ||
} else { | ||
@@ -1305,0 +1322,0 @@ option.selected = value.has(optionValue); |
{ | ||
"name": "@vue/runtime-dom", | ||
"version": "3.4.14", | ||
"version": "3.4.15", | ||
"description": "@vue/runtime-dom", | ||
@@ -53,5 +53,5 @@ "main": "index.js", | ||
"csstype": "^3.1.3", | ||
"@vue/shared": "3.4.14", | ||
"@vue/runtime-core": "3.4.14" | ||
"@vue/shared": "3.4.15", | ||
"@vue/runtime-core": "3.4.15" | ||
} | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1045715
28712
11
2
+ Added@vue/reactivity@3.4.15(transitive)
+ Added@vue/runtime-core@3.4.15(transitive)
+ Added@vue/shared@3.4.15(transitive)
- Removed@vue/reactivity@3.4.14(transitive)
- Removed@vue/runtime-core@3.4.14(transitive)
- Removed@vue/shared@3.4.14(transitive)
Updated@vue/runtime-core@3.4.15
Updated@vue/shared@3.4.15