Commit Graph

178 Commits

Author SHA1 Message Date
Evan You
3692f2738f refactor(runtime-core/scheduler): dedicated preFlush queue
properly fix #1763, #1777, #1781
2020-08-05 10:55:23 -04:00
Evan You
a0e34cee4a fix(watch): exhaust pre-flush watchers + avoid duplicate render by pre-flush watchers
close #1777
2020-08-04 13:20:23 -04:00
Evan You
d4c17fb48b fix(watch): pre-flush watcher watching props should trigger before component update
fix #1763
2020-08-03 16:49:30 -04:00
underfin
de62cc040c
fix(hmr): should update el for HYDRATE_EVENTS patchFlags node (#1707)
fix https://github.com/vitejs/vite/issues/613
2020-07-28 15:52:20 -04:00
underfin
04a4ebaaeb
fix(runtime-core): use correct container for moving Teleport content (#1703) 2020-07-28 11:23:39 -04:00
underfin
2a633c84ff
fix(transition): should call transition hooks inside already resolved suspense (#1698)
fix #1689
2020-07-27 16:47:07 -04:00
Evan You
54727f9874 feat: provide ability to overwrite feature flags in esm-bundler builds
e.g. by replacing `__VUE_OPTIONS_API__` to `false` using webpack's
`DefinePlugin`, the final bundle will drop all code supporting the
options API.

This does not break existing usage, but requires the user to explicitly
configure the feature flags via bundlers to properly tree-shake the
disabled branches. As a result, users will see a console warning if
the flags have not been properly configured.
2020-07-20 21:51:30 -04:00
Evan You
4655d69983 fix(runtime-core/hmr): only use cloneNode mount optimization in prod
fix #1626
2020-07-19 13:22:58 -04:00
HcySunYang
5d8a64d53a
feat(types): deny unknown attributes on component by default (#1614)
close #1519
2020-07-17 11:43:28 -04:00
Evan You
341b30c961 fix(watch): post flush watchers should not fire when component is unmounted
fix #1603
2020-07-17 11:17:29 -04:00
Guillaume Chau
568b6db12b
feat: Initial devtools support (#1125) 2020-07-16 18:18:52 -04:00
Evan You
5f61aa0f71 fix(hmr): fix hmr updates for reused hoisted trees
fix https://github.com/vitejs/vite/issues/514
2020-07-15 12:26:44 -04:00
underfin
246ec5c594
fix(runtime-core): do not call transition enter hooks when mounting in suspense (#1588)
fix #1583
2020-07-15 09:24:16 -04:00
Pick
09f61b4049
types(runtime-core): adjust Renderer's type declaration (#1566) 2020-07-13 12:44:37 -04:00
Evan You
58b07069ad fix(watch): stop instance-bound watchers in post render queue
so that changes triggered in beforeUnmount get correct value in callback

fix #1525
2020-07-06 21:50:56 -04:00
Evan You
36b6b4f022 fix(runtime-core/template-ref): template ref used in the same template should trigger update
fix #1505
2020-07-06 16:40:00 -04:00
Evan You
4e8e689572 fix: ensure vnode hooks are called consistently regardless of keep-alive 2020-07-01 19:50:13 -04:00
Evan You
2bdb5c1464 fix(runtime-core): pass unmount into inital mount patch prop 2020-07-01 16:01:46 -04:00
Evan You
7886c267f7 refactor: remove unused inheritRef option
This is technically a breaking change, but the option was not meant for public use
and ended up not solving the problem it was introduced for.
2020-07-01 15:40:11 -04:00
Evan You
b3536d87a5 fix(runtime-dom): allow force updating value bindings for controlled inputs
fix #1471
2020-06-30 11:23:09 -04:00
Evan You
0dd5cde861 fix(runtime-core): handle patch flag de-op from cloned vnode
close #1426
2020-06-26 18:05:53 -04:00
underfin
6c8bfa1018
fix(runtime-core): fix parent el update on nested HOC self-update (#1360)
fix #1357
2020-06-15 16:46:29 -04:00
Evan You
91fa52850a chore: lint for unused arguments 2020-06-12 16:31:31 -04:00
Evan You
e76ed4c269 refactor(hmr): simplify hmr force update check 2020-06-12 14:53:48 -04:00
Carlos Rodrigues
8f2a7489b7
fix(hmr): force full update on nested child components (#1312) 2020-06-12 14:31:56 -04:00
Evan You
8084156f4d fix(runtime-core): mount children before setting element props
fix #1318, close #1320
2020-06-12 12:14:39 -04:00
underfin
aac9b03c11
fix(runtime-core): should pass instance to patchProp on mount for event error handling (#1337)
fix #1336
2020-06-12 11:59:55 -04:00
Evan You
2408a65662 fix(hmr): force full update in child component on slot update 2020-05-29 10:50:01 -04:00
Evan You
38f2d23a60 feat(runtime-core): add inheritRef option + make <transition> & <keep-alive> inherit refs 2020-05-22 10:26:17 -04:00
Evan You
0a7932c6b3 fix(ssr): should set ref on hydration 2020-05-21 17:37:23 -04:00
Evan You
1184118d23 wip(runtime): test for static vnode handling 2020-05-15 16:11:53 -04:00
Evan You
dbf627f136 wip(runtime): support multi-element static vnode in renderer 2020-05-15 15:12:26 -04:00
Evan You
2bc6a8c1cf fix(hmr): static child traversal should only affect elements 2020-05-11 15:46:30 -04:00
Evan You
1b946c85df fix(hmr): always force full child component props update in HMR mode 2020-05-11 14:17:35 -04:00
Evan You
5b8883a846 fix(runtime-core): should not take unmount children fast path for v-for fragments
fix #1153
2020-05-11 13:53:28 -04:00
Evan You
66c5a556dc fix(hmr): ensure static nodes inherit DOM element in hmr mode
fix #1156
2020-05-11 11:34:42 -04:00
underfin
8b85aaeea9
fix(runtime-core): should call Suspense fallback unmount hook (#1061)
fix #1059
2020-05-01 16:20:16 -04:00
Evan You
08bf7e3607 fix(runtime-core): cloned vnodes with extra props should de-opt 2020-05-01 14:55:27 -04:00
Evan You
ac6a6f11ac fix(runtime-core): fix slot fragment bail check 2020-05-01 14:16:55 -04:00
Carlos Rodrigues
239270c38a
fix(keep-alive): do not invoke onVnodeBeforeUnmount if is KeepAlive component (#1079) 2020-04-30 14:52:03 -04:00
Evan You
386b093554 fix(hmr): support hmr for static nodes 2020-04-30 14:45:25 -04:00
Evan You
171cfa404f fix(runtime-core): should not cast prop value if prop did not change
fix #999
2020-04-20 14:16:25 -04:00
Evan You
19223f5462 build: remove __BUNLDER__ flag so that HMR is available for all builds 2020-04-20 13:39:47 -04:00
Evan You
370fc820cc refactor(runtime-core): refactor instance public proxy context object 2020-04-16 12:49:50 -04:00
Evan You
b2662a62c5 wip: separate setupState 2020-04-16 11:50:33 -04:00
Evan You
24e5ab33f5 refactor(runtime-core): remove need for internal instance sink 2020-04-16 10:09:20 -04:00
Evan You
cda50ea788 refactor(runtime-core): move updateCompnent into separate function 2020-04-10 10:19:26 -04:00
Evan You
cb504c287f refactor(runtime-core): refactor slots resolution
Get rid of need for setup proxy in production mode and improve console
inspection in dev mode
2020-04-06 21:06:53 -04:00
Evan You
ec4a4c1e06 refactor(runtime-core): refactor props resolution
Improve performance in optimized mode + tests
2020-04-06 17:37:47 -04:00
Evan You
f42d11e8e1 fix(v-model): handle dynamic assigners and array assigners
close #923
2020-04-04 20:51:42 -04:00
Evan You
bf473a64ea feat(runtime-core): type and attr fallthrough support for emits option 2020-04-03 12:05:52 -04:00
Evan You
eee5095692 refactor: rename <portal> to <teleport>
BREAKING CHANGE: `<portal>` has been renamed to `<teleport>`.

    `target` prop is also renmaed to `to`, so the new usage will be:

    ```html
    <Teleport to="#modal-layer" :disabled="isMobile">
      <div class="modal">
        hello
      </div>
    </Teleport>
    ```

    The primary reason for the renaming is to avoid potential naming
    conflict with [native portals](https://wicg.github.io/portals/).
2020-04-01 21:55:19 -04:00
Evan You
e93e426bfa feat(runtime-core): config.performance tracing support 2020-04-01 21:36:50 -04:00
Evan You
449ab039fe feat(templateRef): should work with direct reactive property
close #901
2020-03-31 10:35:49 -04:00
Evan You
55b364decc feat(templateRef): support template ref for all vnode types 2020-03-31 10:30:12 -04:00
Evan You
573bcb2e11 refactor(runtime-core): remove the need for currentSuspense 2020-03-30 11:49:51 -04:00
Evan You
8ce3da0104 feat(portal): support disabled prop 2020-03-30 11:24:28 -04:00
Evan You
aafb880a0a feat(portal): support multiple portal appending to same target 2020-03-27 18:42:57 -04:00
Evan You
b1d0b046af fix(runtome-dom): properly support creating customized built-in element 2020-03-27 12:39:00 -04:00
Evan You
16cd8eee78 fix(portal): portal should always remove its children when unmounted 2020-03-25 17:27:55 -04:00
Evan You
123738727a fix(keep-alive): should update re-activated component with latest props 2020-03-24 10:28:00 -04:00
Evan You
4c1a193617 fix: do not drop SFC runtime behavior code in global builds
fix #873
2020-03-23 15:10:35 -04:00
Evan You
b8c1be18f3 refactor(types): use stricter settings
fix #847
2020-03-23 11:08:22 -04:00
Evan You
ba9a91c48c refactor: remove null comparisons 2020-03-18 18:14:51 -04:00
Evan You
811f28a7d1 test(runtime-core): tests for vnode hooks 2020-03-18 16:35:04 -04:00
Evan You
aa4ab39c1a refactor: separate vnode hooks and directive hooks 2020-03-18 12:30:26 -04:00
Evan You
6679799540 refactor: refactor vnode hooks invocation 2020-03-18 12:30:26 -04:00
Evan You
9ad65b1653 refactor(template-ref): improve template ref handling
close #836, close #839
2020-03-16 13:06:46 -04:00
Evan You
a3cc970030 feat(ssr/suspense): suspense hydration
In order to support hydration of async components, server-rendered
fragments must be explicitly marked with comment nodes.
2020-03-13 13:05:05 -04:00
Evan You
ca5f39ee35 refactor(runtime-core): adjust patchProp value arguments order
BREAKING CHANGE: `RendererOptions.patchProp` arguments order has changed

  The `prevValue` and `nextValue` position has been swapped to keep it
  consistent with other functions in the renderer implementation. This
  only affects custom renderers using the `createRenderer` API.
2020-03-09 16:15:49 -04:00
hareku
cd34603864
fix(runtime-core): pass prev value to hostPatchProp (#809)
fix #808
2020-03-09 16:08:10 -04:00
Evan You
11d2fb2594 refactor(fragments): remove visible anchors for fragments 2020-02-26 16:32:06 -05:00
Evan You
3eab143843 fix(template-ref): fix string template refs inside slots 2020-02-25 18:29:51 -05:00
djy0
c11905fe36
chore: fix typo (#764) [ci skip] 2020-02-24 18:01:26 +01:00
Evan You
9d2ac6675a refactor: make portal tree-shakeable 2020-02-15 17:44:37 -05:00
Evan You
96605b79a3 types: avoid duplicate type declarations for renderer closure functions 2020-02-14 16:25:41 -05:00
Evan You
80904e92b8 types: cleanup renderer & hydration typing 2020-02-14 12:33:32 -05:00
Evan You
629ee75588 perf: prevent renderer hot functions being inlined by minifiers
Terser will aggressively inline hot functions in renderer.ts in order
to reduce "function" declarations, but the inlining leads to performance
overhead (small, but noticeable in benchmarks).

Since we cannot control user's minifier options, we have to avoid the
deopt in the source code by using arrow functions in hot paths.
2020-02-14 03:27:27 -05:00
Evan You
6df2aca070 refactor(types): move shapeFlags to shared 2020-02-14 01:36:42 -05:00
Evan You
167f8241bd refactor(ssr): make hydration logic tree-shakeable 2020-02-14 01:30:08 -05:00
Evan You
42d80b5888 wip(ssr): component hydration 2020-02-13 23:31:03 -05:00
Evan You
6b505dcd23 wip(ssr): basic element hydration 2020-02-13 17:47:00 -05:00
Evan You
175f8aae8d feat(compiler): mark hoisted trees with patchFlag 2020-02-12 13:31:29 -05:00
Evan You
27913e661a feat(compiler-dom/runtime-dom): stringify eligible static trees 2020-02-12 11:56:42 -05:00
Evan You
8a87074df0 fix(runtime-core/scheduler): avoid duplicate updates of child component 2020-02-10 13:09:15 -05:00
Evan You
778f3a5e88 fix(runtime-core): should not return early on text patchFlag
fix vnode updated hook on elements with dynamic text children
2020-02-10 12:06:36 -05:00
Evan You
6b1ce00621 wip(ssr): renderer support for optimized and manual slots 2020-01-28 22:58:02 -05:00
Evan You
6f43c4b516 wip(ssr): vdom serialization 2020-01-28 18:48:27 -05:00
Evan You
cee36ad028 wip(ssr): render real components 2020-01-27 16:00:17 -05:00
Evan You
da25517377 wip(ssr): initial work on server-renderer 2020-01-27 16:00:17 -05:00
Evan You
c07751fd36 refactor: adjust createApp related API signatures
BREAKING CHANGE: `createApp` API has been adjusted.

  - `createApp()` now accepts the root component, and optionally a props
  object to pass to the root component.
  - `app.mount()` now accepts a single argument (the root container)
  - `app.unmount()` no longer requires arguments.

  New behavior looks like the following:

  ``` js
  const app = createApp(RootComponent)
  app.mount('#app')
  app.unmount()
  ```
2020-01-27 16:00:17 -05:00
Evan You
4f06eebc1c fix(dom): fix <svg> and <foreignObject> mount and updates 2020-01-21 11:32:33 -05:00
Evan You
035b6560f7 fix(runtime-core): isSVG check should also apply for patch branch
fix #639
2020-01-20 11:55:18 -05:00
Evan You
c35fea3d60 fix(runtime-core): condition for parent node check should be any different nodes
fix #622
2020-01-16 16:21:37 -05:00
Evan You
2e9726e6a2 fix(runtime-core/renderer): fix v-if toggle inside blocks
Should check both branches for parent container access.
Fix #604. Close #607.
2020-01-13 17:31:22 -05:00
Evan You
7d436ab59a fix: mounting new children 2019-12-22 16:24:24 -05:00
Evan You
2fdb499bd9 fix(fragment): perform direct remove when removing fragments
This avoids trying to grab .el from hoisted child nodes (which can
be created by another instance), and also skips transition check
since fragment children cannot have transitions.
2019-12-22 16:15:16 -05:00
Evan You
47a6a84631 fix(core): clone mounted hoisted vnodes on patch
...since they may need to be checked as fragment child
2019-12-22 13:31:13 -05:00
Evan You
eda495efd8 feat(hmr): root instance reload 2019-12-22 12:25:04 -05:00
Evan You
c9b9ae3941 refactor: rename apiApp.ts -> apiCreateApp.ts 2019-12-22 11:27:40 -05:00