Commit Graph

302 Commits

Author SHA1 Message Date
Evan You
2c31227e7c wip: warn v-bind object ordering 2021-04-17 20:53:55 -04:00
Evan You
3528ced0b4 wip: warn key usage of v-if branches 2021-04-17 15:35:44 -04:00
Evan You
7ceb873783 wip: v-bind.sync compat 2021-04-16 17:11:44 -04:00
Evan You
d974adb327 wip: is usage compat 2021-04-16 11:43:05 -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
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
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
7715c49af9
fix(compiler-core): avoid generating useless createVNode helper (#2938)
close #2739
2021-03-25 17:01:50 -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
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
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
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
4c6078ce25 fix(compiler-core/compiler-sfc): handle destructure assignment expressions 2020-11-18 22:39:08 -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
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