diff --git a/packages/compiler-dom/__tests__/transforms/__snapshots__/vModel.spec.ts.snap b/packages/compiler-dom/__tests__/transforms/__snapshots__/vModel.spec.ts.snap
index b357ac15a1b..4cece4060cd 100644
--- a/packages/compiler-dom/__tests__/transforms/__snapshots__/vModel.spec.ts.snap
+++ b/packages/compiler-dom/__tests__/transforms/__snapshots__/vModel.spec.ts.snap
@@ -143,6 +143,22 @@ return function render(_ctx, _cache) {
}"
`;
+exports[`compiler: transform v-model > simple expression for details 1`] = `
+"const _Vue = Vue
+
+return function render(_ctx, _cache) {
+ with (_ctx) {
+ const { vModelDetails: _vModelDetails, withDirectives: _withDirectives, openBlock: _openBlock, createElementBlock: _createElementBlock } = _Vue
+
+ return _withDirectives((_openBlock(), _createElementBlock("details", {
+ "onUpdate:modelValue": $event => ((model) = $event)
+ }, null, 8 /* PROPS */, ["onUpdate:modelValue"])), [
+ [_vModelDetails, model]
+ ])
+ }
+}"
+`;
+
exports[`compiler: transform v-model > simple expression for input (checkbox) 1`] = `
"const _Vue = Vue
diff --git a/packages/compiler-dom/__tests__/transforms/vModel.spec.ts b/packages/compiler-dom/__tests__/transforms/vModel.spec.ts
index 6fe39900ca8..3a466e3f7f7 100644
--- a/packages/compiler-dom/__tests__/transforms/vModel.spec.ts
+++ b/packages/compiler-dom/__tests__/transforms/vModel.spec.ts
@@ -10,6 +10,7 @@ import { transformElement } from '../../../compiler-core/src/transforms/transfor
import { DOMErrorCodes } from '../../src/errors'
import {
V_MODEL_CHECKBOX,
+ V_MODEL_DETAILS,
V_MODEL_DYNAMIC,
V_MODEL_RADIO,
V_MODEL_SELECT,
@@ -99,6 +100,12 @@ describe('compiler: transform v-model', () => {
expect(generate(root).code).toMatchSnapshot()
})
+ test('simple expression for details', () => {
+ const root = transformWithModel(' ')
+ expect(root.helpers).toContain(V_MODEL_DETAILS)
+ expect(generate(root).code).toMatchSnapshot()
+ })
+
describe('errors', () => {
test('plain elements with argument', () => {
const onError = vi.fn()
diff --git a/packages/compiler-dom/src/errors.ts b/packages/compiler-dom/src/errors.ts
index 788de930699..99afd0756da 100644
--- a/packages/compiler-dom/src/errors.ts
+++ b/packages/compiler-dom/src/errors.ts
@@ -53,7 +53,7 @@ export const DOMErrorMessages: Record = {
[DOMErrorCodes.X_V_HTML_WITH_CHILDREN]: `v-html will override element children.`,
[DOMErrorCodes.X_V_TEXT_NO_EXPRESSION]: `v-text is missing expression.`,
[DOMErrorCodes.X_V_TEXT_WITH_CHILDREN]: `v-text will override element children.`,
- [DOMErrorCodes.X_V_MODEL_ON_INVALID_ELEMENT]: `v-model can only be used on ,