// we assume v-model directives are always parsed
// (not artificially created by a transform)
- const rawExp = exp.loc.source
+ const rawExp = exp.loc.source.trim()
const expString =
exp.type === NodeTypes.SIMPLE_EXPRESSION ? exp.content : rawExp
}"
`;
+exports[`SFC compile <script setup> > inlineTemplate mode > v-model w/ newlines codegen 1`] = `
+"import { unref as _unref, isRef as _isRef, vModelText as _vModelText, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue"
+
+
+export default {
+ setup(__props) {
+
+ const count = ref(0)
+
+return (_ctx, _cache) => {
+ return _withDirectives((_openBlock(), _createElementBlock("input", {
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (_isRef(count) ? (count).value = $event : null))
+ }, null, 512 /* NEED_PATCH */)), [
+ [_vModelText,
+ _unref(count)
+ ]
+ ])
+}
+}
+
+}"
+`;
+
exports[`SFC compile <script setup> > inlineTemplate mode > with defineExpose() 1`] = `
"
export default {
assertCode(content)
})
+ test('v-model w/ newlines codegen', () => {
+ const { content } = compile(
+ `<script setup>
+ const count = ref(0)
+ </script>
+ <template>
+ <input v-model="
+ count
+ ">
+ </template>
+ `,
+ { inlineTemplate: true },
+ )
+ expect(content).toMatch(`_isRef(count) ? (count).value = $event : null`)
+ assertCode(content)
+ })
+
test('v-model should not generate ref assignment code for non-setup bindings', () => {
const { content } = compile(
`<script setup>