Commit Graph

591 Commits

Author SHA1 Message Date
Evan You
61edb700d7 wip: only generate non-scope slot flag when compatConfig is present 2021-05-05 16:36:16 -04:00
Evan You
7a8cee8688 wip: remove v-if key warning as there are legit use cases 2021-05-05 16:35:44 -04:00
Evan You
7f93c76b96 wip: exclude legacy slots from $scopedSlots 2021-05-05 11:06:15 -04:00
Evan You
ae0fb14305 wip: fix native template compat 2021-05-04 18:26:28 -04:00
Evan You
bd3cc4d2c7 wip: tests for compiler compat 2021-04-30 15:50:32 -04:00
Evan You
b4c92ccf6b wip: move compat test cases + filter tests 2021-04-29 16:58:14 -04:00
Evan You
e486254431 fix(compiler-core): preserve comment content in production when comments option is enabled 2021-04-28 11:22:16 -04:00
Evan You
86703c23a6 wip: ref v-for compat 2021-04-26 17:35:41 -04:00
Evan You
b047a0864c refactor(compiler): improve whitespace: 'preserve' behavior from #1600
- discard leading/ending whitespace inside an element
- condense preserved whitesapce into single space
2021-04-26 11:46:17 -04:00
CodeDaraW
dee3d6ab8b feat(compiler-core): whitespace handling strategy 2021-04-26 09:44:27 -04:00
Evan You
7dc681c196 wip: filters compat 2021-04-19 12:29:55 -04:00
Evan You
3ea68691e2 wip: inline-template compat 2021-04-17 23:19:40 -04:00
Evan You
1390ece04f wip: refactor 2021-04-17 22:50:16 -04:00
Evan You
505269405e wip: plain template tag compat 2021-04-17 22:16:48 -04:00
Evan You
048ac299f3 perf(compiler): skip unncessary checks when parsing end tag 2021-04-17 22:05:18 -04:00
Evan You
2c31227e7c wip: warn v-bind object ordering 2021-04-17 20:53:55 -04:00
Evan You
bf41354abd wip: remove unncessary deprecation messages 2021-04-17 16:13:57 -04:00
Evan You
c5c304af14 wip: compiler should default to v3 behavior 2021-04-17 15:55:14 -04:00
Evan You
3528ced0b4 wip: warn key usage of v-if branches 2021-04-17 15:35:44 -04:00
Evan You
ab21468982 wip: warn v-if/v-for co-usage 2021-04-17 14:38:30 -04:00
Evan You
7ceb873783 wip: v-bind.sync compat 2021-04-16 17:11:44 -04:00
Evan You
ad97bbab85 wip: invert compiler compat behavior default during tests 2021-04-16 12:26:17 -04:00
Evan You
bbf708dbe9 wip: support configuring compiler deprecations at runtime + warn invalid deprecation configs 2021-04-16 12:19:12 -04:00
Evan You
79cbf21c3e wip: generate codeframe for compiler deprecations 2021-04-16 11:51:47 -04:00
Evan You
d974adb327 wip: is usage compat 2021-04-16 11:43:05 -04:00
Evan You
e130c7db23 wip: compiler deprecation config 2021-04-12 19:43:53 -04:00
Evan You
af9e6999e1 feat: support casting plain element to component via is="vue:xxx"
In Vue 3's custom elements interop, we no longer process `is` usage on
known native elements as component casting. (ref:
https://v3.vuejs.org/guide/migration/custom-elements-interop.html)
This introduced the need for `v-is`. However, since it is a directive,
its value is considered a JavaScript expression. This makes it awkward
to use (e.g. `v-is="'foo'"`) when majority of casting is non-dynamic,
and also hinders static analysis when casting to built-in Vue
components, e.g. transition-group.

This commit adds the ability to cast a native element to a Vue component
by simply adding a `vue:` prefix:

```html
<button is="vue:my-button"></button>
<ul is="vue:transition-group" tag="ul"></ul>
```
2021-04-12 13:08:07 -04:00
Evan You
7f7dcc9f7d fix(compiler-sfc): fix wrong scopeId for nested <script setup> components 2021-04-01 18:11:04 -04:00
Calvin Liang
0fe567abfc
fix(compiler-core): properly transform replaced nodes (#2927) 2021-03-29 18:08:10 -04:00
Evan You
f5827fdf78 fix(compiler-sfc): do not resolve assets from setup bindings
when not using script setup

fix #3270, fix #3275
2021-03-29 16:11:38 -04:00
HcySunYang
555b016dcb
fix(compiler-core): allow PascalCase dynamic component tag usage (#3508)
fix #3507
2021-03-29 15:18:25 -04:00
Johnson Chu
e752bddb33
fix(compiler-core): fix slot source location (#3494) 2021-03-27 11:20:39 -04:00
Evan You
37c17091fd fix: ensure backwards compat for pre-compiled sfc components
fix #3493
2021-03-27 10:53:45 -04:00
Evan You
abd129d845 fix(component): prioritize registered component over implicit self-reference via filename
ref: #2827
2021-03-26 10:04:36 -04:00
HcySunYang
ebedcccdc0
fix(compiler-core): allow unicode to appear in identifiers (#3443)
fix #3440
2021-03-25 17:24:18 -04:00
HcySunYang
7715c49af9
fix(compiler-core): avoid generating useless createVNode helper (#2938)
close #2739
2021-03-25 17:01:50 -04:00
funkyfun
c8aed13711
chore(types): remove redundant 'undefined' type (#3484) 2021-03-25 16:19:02 -04:00
HcySunYang
b4b82159e2
fix(compiler-core): should not condense whitespace in RCDATA text mode (#3482)
fix #3479
2021-03-25 15:53:03 -04:00
HcySunYang
4bf7ba19bf
fix(compiler-core): detect v-if branch root with comment as dev fragment (#2785)
fix #2780
2021-03-25 15:43:44 -04:00
HcySunYang
602b58ebd1
fix(compiler-core): fix the detection of forwarded slots with v-if or v-for (#3353)
fix #3347
2021-03-22 16:34:46 -04:00
Evan You
02cbbb718c perf: support only attaching slot scope ids when necessary
This is done by adding the `slotted: false` option to:

- compiler-dom
- compiler-ssr
- compiler-sfc (forwarded to template compiler)

At runtime, only slotted component will render slot fragments with
slot scope Ids. For SSR, only slotted component will add slot scope Ids
to rendered slot content. This should improve both runtime performance
and reduce SSR rendered markup size.

Note: requires SFC tooling (e.g. `vue-loader` and `vite`) to pass on
the `slotted` option from the SFC descriptoer to the `compileTemplate`
call.
2021-03-05 18:28:12 -05:00
Evan You
f74b16ccfe fix(compiler): properly bail stringfication for nested slot elements 2021-03-05 18:28:12 -05:00
Evan You
aea88c3280 refactor: fix implementation of SFC :slotted id handling
fix #2892
2021-03-05 18:28:12 -05:00
Evan You
c69f4ea857 fix(compiler-ssr): avoid duplicated asset imports merged from component slot client branch
fix vitejs/vite#2034
2021-02-15 12:12:50 -05:00
Evan You
03360cefa1 fix(compiler-sfc): treat const reactive() bindings as mutable 2021-02-10 11:39:07 -05:00
Evan You
734c65badd fix(compiler-core): do not mark v-for as stable on const bindings
since the source value may be a reactive array

fix vitejs/vite#1956
2021-02-09 11:57:09 -05:00
xiejiahe
1cc8712235
chore: comment initial space (#3192) [skip ci]
fix(typo): Comment add spaces.
2021-02-08 12:32:12 +01:00
edison
47b3652ecd
chore(compiler-core): improve types (#2428) 2020-12-04 16:28:26 -05:00
Evan You
a8352506f6 refactor: cache constant check result on transform context
also fix edge case for missed createVNode import on static svg nodes
2020-12-03 11:10:40 -05:00
Evan You
ad4d3915d3 fix(compiler-core): fix missing createVNode import on nested v-for
fix #2718
2020-12-03 11:03:06 -05:00
Evan You
e4f09c1419 fix(compiler-core/v-on): handle falsy values when caching v-on handlers
fix #2605
2020-11-30 16:30:36 -05:00
Evan You
9db7095962 fix(compiler-core): fix scope var reference check for v-on expressions
fix #2564
2020-11-30 15:19:32 -05:00
Evan You
e41b46c396 chore: annotate generated slot flag 2020-11-30 15:19:32 -05:00
Evan You
67d1aac6ae feat(sfc): allow sfcs to recursively self-reference in template via name inferred from filename
e.g. A file named `FooBar.vue` can refer to itself as `<FooBar/>`. This gets rid of the need for the `name` option.
2020-11-30 12:30:51 -05:00
Evan You
a76e58e5fd build: avoid shipping patch flag name strings in prod 2020-11-27 18:13:04 -05:00
Evan You
3bc2914e32 fix(attr-fallthrough): ensure consistent attr fallthrough for root fragments with comments
fix #2549
2020-11-27 18:04:26 -05:00
Evan You
55d99d729e fix(compiler-core): fix unintended imports in esm-bundler builds
fix #2258, fix #2515
2020-11-27 11:04:15 -05:00
Evan You
7cd85be2db refactor(compiler-core): reduce slot props check iterations
ref: #2490
2020-11-27 10:00:43 -05:00
edison
ef59a30cab
fix(compiler-core): transform kebab case props to camelcase on slots (#2490)
fix #2488
2020-11-27 09:48:30 -05:00
Evan You
69d5c6887e wip: update directive scope variable mapping 2020-11-24 19:04:21 -05:00
Evan You
ae2caad740 wip: support resolving directives from setup scope variables by naming convention
v-my-dir can be resovled from setup scope variable named "vMyDir".
2020-11-24 19:04:21 -05:00
Evan You
90bdf59f4c refactor(compiler): better constant hoist/stringify checks 2020-11-20 19:26:07 -05:00
Evan You
8ac2241b22 wip: more consistent compiler-sfc usage + inline mode for ssr 2020-11-20 14:23:09 -05:00
Evan You
4c6078ce25 fix(compiler-core/compiler-sfc): handle destructure assignment expressions 2020-11-18 22:39:08 -05:00
Evan You
4d5242128e chore: fix tests 2020-11-18 22:34:55 -05:00
Evan You
64160e89cc wip: ignore non-ref const mutation cases in codegen 2020-11-18 21:16:09 -05:00
Evan You
8567feb2aa wip: properly handle assignment/update expressions in inline mode 2020-11-18 19:38:38 -05:00
Evan You
4449fc3b9e refactor: finer grained binding types for setup 2020-11-18 19:38:38 -05:00
Evan You
760443dca6 wip: ensure string template refs work in inline mode 2020-11-18 19:38:38 -05:00
Evan You
cdc9f336fd wip: new cssVars SSR integration + fix cssVars SSR injection for suspense 2020-11-17 18:54:47 -05:00
Evan You
a67325140b wip: test case for v-model + inline mode codegen 2020-11-17 15:59:09 -05:00
Evan You
c15bd6235e wip: generate valid v-model and TS code in script setup inline mode 2020-11-17 12:42:58 -05:00
Evan You
41bb7fa330 feat(compiler-sfc): new SFC css varaible injection implementation
ref: https://github.com/vuejs/rfcs/pull/231
2020-11-16 18:27:25 -05:00
Evan You
8ba3a7de40 wip: fix dts tests 2020-11-13 00:12:04 -05:00
Evan You
292a657861 wip: fix runtimeConstant marking 2020-11-12 22:44:18 -05:00
Evan You
0ca9137188 wip: tests for defineContext() 2020-11-12 18:11:25 -05:00
Evan You
128621d6a0 wip: further optimize bindings 2020-11-12 16:11:14 -05:00
Evan You
6a9b56ca60 wip: defineContext() 2020-11-12 14:10:39 -05:00
Evan You
2a4fc32d15 wip: remove unnecessary inlinePropsIdentifier option 2020-11-11 10:36:59 -05:00
Evan You
4e8ef55237 wip: optimize binding access to known imported components 2020-11-10 18:06:38 -05:00
Evan You
4977526a2b wip: correctly resolve component in setup inline mode 2020-11-10 17:36:06 -05:00
Evan You
3019508e75 wip: fix binding type fallback 2020-11-10 17:31:09 -05:00
Evan You
886ed7681d feat(compiler-sfc): compileScript inline render function mode 2020-11-10 16:28:34 -05:00
Evan You
3f99e239e0 feat(compiler-sfc): support kebab-case components in <script setup> sfc template 2020-11-09 17:22:58 -05:00
Evan You
556560fae3 feat(compiler-sfc): new script setup implementation
- now exposes all top level bindings to template
- support `ref:` syntax sugar
2020-10-29 15:03:39 -04:00
Hunter
6d2a1cb64d
fix(compiler-core): fix multiline member expression check (#2436)
fix #2426
2020-10-20 09:31:08 -04:00
ᴜɴвʏтᴇ
052a621762
feat(compile-core): handle falsy dynamic args for v-on and v-bind (#2393)
fix #2388
2020-10-19 17:15:53 -04:00
ᴜɴвʏтᴇ
692197be33
fix(compiler-core): fix v-if key injection with v-on object syntax (#2368)
fix #2366
2020-10-13 12:04:52 -04:00
ᴜɴвʏтᴇ
89c5909a6f
fix(compiler-core): allow spaces between if-else branches (#2305)
fix #2299
2020-10-07 20:57:17 -04:00
shadowings-zy
62f26173ba
fix(runtime-core): use consistent camelCase event casing for render functions (#2278)
close #2249
2020-10-06 18:28:56 -04:00
Evan You
f4119249f2 fix(compiler-core): consistently remove comment nodes for pre tags in production
close #2217
2020-10-05 17:53:34 -04:00
HcySunYang
9499871582
fix(compiler-core): make v-once work with v-if/else-if/else (#2182)
Partial fix for #2035
2020-10-05 11:58:37 -04:00
edison
b29bc0d694
chore(compiler-core): define child if necessary. (#2033) 2020-09-14 20:56:53 -04:00
Evan You
be946ea549 fix(compiler-core): fix prefixing for <template v-for> key expressions
fix #2085
2020-09-14 17:04:27 -04:00
Evan You
a096a58e41 fix(compiler-core): fix v-if block handling for components that fail to resolve
fix #2058
2020-09-14 12:41:35 -04:00
Evan You
52e45a9850 fix(v-once): fix v-once usage with v-if and v-for
fix #2035
2020-09-02 12:30:37 -04:00
XRenSiu
bb54a84cd1
chore: use '@vue/shared' instead of '@vue/shared/src' (#1915) 2020-08-21 12:50:06 -04:00
Evan You
91700fbec2 refactor(compiler-core): simplify hoistStatic check for nodes without patchFlag
close #1912
2020-08-20 11:43:34 -04:00
underfin
69cfed6b31
fix(compiler-core): should attach key to single element child of <template v-for> (#1910) 2020-08-20 10:09:57 -04:00
Evan You
24041b7ac1 fix(compiler-core): generate NEED_PATCH flag for element with vnode hooks 2020-08-19 17:30:44 -04:00
edison
075d769e0b
chore: fix typo for babelParserDefautPlugins (#1897) 2020-08-19 09:53:09 -04:00
Barthélémy Ledoux
62b9d02f6f
feat(compiler-core): add comments parser option (#1858) 2020-08-17 11:20:28 -04:00
Evan You
b0d01e9db9 dx(compiler-core): warn on <template v-for> key misplacement
Note: the behavior is different from Vue 2. `<template v-for>` are compiled
into an array of Fragment vnodes so the key should be placed the `<template>`
for v-for to use it for diffing.
2020-08-04 12:20:32 -04:00
Evan You
de0c8a7e3e fix(compiler-core): v-if key error should only be checking same key on different branches 2020-08-04 12:01:18 -04:00
Aurelius333
86cdf6694d
chore(compiler-core): improve X_V_IF_KEY error message (#1757) 2020-08-03 17:14:14 -04:00
Evan You
6f5d840612 feat(sfc): support resolving template components from <script setup> exports 2020-07-28 17:31:46 -04:00
Evan You
58b4a382f9 refactor(compiler-core): emit error on v-if key usage 2020-07-28 15:18:41 -04:00
Evan You
fbf865d9d4 fix(compiler-core): always compile Teleport and Suspense as blocks 2020-07-28 11:12:43 -04:00
underfin
d4527230e4
fix(compiler-core): prevent generating invalid code for v-bind with empty expression (#1720) 2020-07-27 18:31:08 -04:00
Evan You
5fbd1f4ccb fix(compiler-core/v-on): only cache empty handler when the option is used
fix #1716

The original idea is that the empty handler can be cached in all cases,
but this contradicts with the assumption that `hasCachedProps` check in
the static hoist transform can simply return `false` in the browser
build.
2020-07-27 18:28:39 -04:00
Evan You
71c3c6e2a0 fix(v-model): allow v-model usage on declared custom elements
fix #1699
2020-07-27 17:09:30 -04:00
Evan You
ba17c871d8 feat: support delimiters option for runtime compilation
close #1679
2020-07-23 14:27:17 -04:00
Rahul Kadyan
615dccd00e
feat(compiler-core/internal): add onContextCreated option to generate (#1672) 2020-07-21 15:16:20 -04:00
Evan You
be4df124e6 refactor: move @babel/types to dev deps, reduce install size 2020-07-20 22:14:05 -04:00
Evan You
af7e100ef2 fix(compiler-core): fix v-if + v-for on <template>
fix #1637
2020-07-19 14:36:01 -04:00
HcySunYang
f9826fa963
fix(compiler-core/v-on): fix codegen for event handler with newlines (#1640) 2020-07-19 11:48:26 -04:00
lawvs
a935998b33
chore: better comment hovers preview [ci skip] (#1612) 2020-07-17 11:24:12 -04:00
Evan You
aab99abd28 fix(slots): properly force update on forwarded slots
fix #1594
2020-07-15 20:12:49 -04:00
HcySunYang
64c7b2f9ce
fix(compiler-core): generate incremental keys for v-if/else-if/else chains (#1589)
fix #1587
2020-07-15 09:21:40 -04:00
Evan You
9152a89016 fix(v-on): capitalize dynamic event names 2020-07-13 17:36:46 -04:00
Evan You
576344d2c3 refactor(compiler): extract isStaticExp util 2020-07-13 16:48:24 -04:00
Evan You
65beba98fe fix(slots): differentiate dynamic/static compiled slots
fix #1557
2020-07-13 12:36:41 -04:00
Evan You
b9595e64cf feat: ssr support for <style vars> 2020-07-12 18:04:09 -04:00
Evan You
b6cdd5621e wip: template binding optimization 2020-07-10 22:12:25 -04:00
Evan You
b51b79f5c4 refactor: rename optimizeBindings -> optimizeImports 2020-07-10 20:43:52 -04:00
Evan You
4c43d4e5b9 feat(compiler-sfc): <script setup> support (experimental)
This is the last commit for the feature which adds async/await detection.
2020-07-10 18:00:13 -04:00
Evan You
3e1cdba9db wip: tests for compileScriptSetup 2020-07-09 12:17:28 -04:00
Evan You
1359cc3a28 wip: compileScriptSetup 2020-07-09 12:17:28 -04:00
Evan You
87c2a1e50f fix(compiler-core/v-on): bail caching for member expression handlers on components
to preserve correct arity when it is passed down.
fix #1541
2020-07-08 11:48:12 -04:00
Evan You
4b5ce8b456 refactor(compiler-core): remove unnecessary arg in cached handler codegen 2020-07-08 11:48:12 -04:00
Felix Rilling
829b35e426
chore: typo fixes (#1546)
* chore: fix typos in comments/JSDoc.

* chore: fix typo in internal function name.

* chore: fix typos in test comments/descriptions/variable names.
2020-07-08 12:32:42 +02:00
Jack Robertson
64e2f46436
fix(compiler-core): add \r to accepted chars after end tag name (#1515)
fix #1476
2020-07-06 16:00:26 -04:00
Evan You
afe13e0584 fix(ssr): fix ssr scopeId on component root 2020-06-27 00:27:44 -04:00
Evan You
d5dbd27193 fix(ssr): handle fallthrough attrs in ssr compile output 2020-06-26 16:55:37 -04:00
HcySunYang
8a2cf21b71
perf(compiler-core): treat v-for with constant exp as a stable fragment (#1394) 2020-06-17 16:13:14 -04:00
Evan You
605953a154 refactor: only inject rest args for member expression handlers + fix tests 2020-06-15 15:24:46 -04:00
Cathrine Vaage
7e28173312
fix(compiler-core/v-on): pass noninitial arguments in cached event handlers (#1265) 2020-06-15 15:04:03 -04:00
underfin
35dbef268c
fix(compiler-core): should not prefix object method (#1375) 2020-06-15 11:20:00 -04:00
Evan You
afb231ec5c fix(compiler-core): skip empty expressions when validating expressions in browser mode 2020-06-15 10:59:03 -04:00
Evan You
91fa52850a chore: lint for unused arguments 2020-06-12 16:31:31 -04:00
Evan You
825ec1500f fix(compiler-core): support static slot names containing dots for 2.x compat
close #1241
2020-06-12 16:09:27 -04:00
Evan You
0d26413433 fix(compiler-core): fix parsing for directive with dynamic argument containing dots 2020-06-12 15:59:13 -04:00
Evan You
e29f0b3fc2 feat(compiler): better warning for invalid expressions in function/browser mode
fix #1266
2020-06-11 16:31:51 -04:00
Evan You
f3623e4d1e fix(compiler-core): fix prod whitespace/comment removal
fix #1256
2020-06-11 11:45:10 -04:00
Evan You
80c868aefe workflow: setup eslint for prohibited syntax and globals
fix #1285
2020-06-10 16:54:23 -04:00
Evan You
9b5d13e598 fix: bail stringification for slots
fix #1281, close #1286
2020-06-10 14:31:59 -04:00
Carlos Rodrigues
958b6c80cf
fix(compiler-core): allow multiline expression on v-model and v-on (#1234) 2020-06-09 17:24:48 -04:00
Evan You
5f15d9aa4b fix(compiler-ssr): should escape template string interpolation chars in generated code 2020-05-26 14:38:24 -04:00
Evan You
dd2bfb5a8f fix(compiler-dom): should bail stringification on runtime constant regardless of position
ref: vuejs/vite#157
2020-05-18 10:04:18 -04:00
Evan You
d965bb6227 feat: improve static content stringiciation
Now a single static vnode can contain stringified content
for multiple consecutive nodes, which greatly improves the
coverage of this optimization.
2020-05-16 21:30:16 -04:00