Commit Graph

1148 Commits

Author SHA1 Message Date
Evan You 11804fe93f feat(directives): introduce `created` custom directive hook and ensure
`v-model` event listener fire before template/props listeners

fix #1931
2020-08-24 17:12:16 -04:00
Guillaume Chau 410e7abbbb refactor(devtools): emit needs to send the instance in args 2020-08-24 20:27:40 +02:00
Guillaume Chau 23233dc8b8 feat(devtools): catch events 2020-08-24 01:33:12 +02:00
Yang Mingshan 10293c7a18
fix(watch): traverse refs in deep watch (#1939)
ref #1900
2020-08-23 14:41:11 -04:00
Guillaume Chau 31b99a9139 feat(devtools): expose setupState target object 2020-08-22 16:40:04 +02:00
Guillaume Chau 6eb7fd8333 fix(devtools): unmountApp not behind compile flag 2020-08-22 16:34:18 +02:00
Guillaume Chau 3138f4b42f chore: rename createDevtoolsHook to createDevtoolsComponentHook 2020-08-22 15:53:21 +02:00
Evan You 54d06ec495 feat(runtime-core): support variadic children in `h` for simple JSX compat
ref: #1917
2020-08-21 21:54:33 -04:00
Evan You 6602d6dbff release: v3.0.0-rc.7 2020-08-21 14:13:05 -04:00
Li Chen 0f8c9917f8
chore(runtime-core): use ReactiveFlags.SKIP in vnode for consistency (#1901) 2020-08-21 13:45:42 -04:00
Evan You f02e2f99d9 fix(runtime-core): disable block tracking when calling compiled slot function in tempalte expressions
fix #1745, fix #1918
2020-08-21 12:47:45 -04:00
Evan You 7454e2a52b build(deps): upgrade to TypeScript 4 2020-08-20 17:48:28 -04:00
HcySunYang 255a2bd178
test(runtime-core): add tests for the optimized mode (#1884) 2020-08-20 10:56:31 -04:00
Evan You d4cc7b2496 fix(teleport): only inherit el for non-patched nodes
fix #1903
2020-08-20 10:44:28 -04:00
HcySunYang 7ffb79c563
fix(runtime-core): correctly track dynamic nodes in renderSlot (#1911) 2020-08-20 09:37:26 -04:00
Evan You 91c4735416 release: v3.0.0-rc.6 2020-08-19 18:17:42 -04:00
Evan You cfa7636bbe chore: comments 2020-08-19 18:02:17 -04:00
Evan You 1eb6067a85 fix(runtime-core): fix beforeUpdate call timing to allow state mutation
fix #1899
2020-08-19 17:57:51 -04:00
Carlos Rodrigues c2913d57d1
fix(types): handling PropType<Function> with default value (#1896)
fix #1891
2020-08-19 16:36:42 -04:00
Evan You eb2ae44d94 refactor(types): widen `Component` type to include consutructor types
returned from `defineComponent`

ref: https://github.com/vuejs/vue-router-next/pull/421
also close #1880

Previous `Component` type is now exported as `ConcreteComponent`.

This introduces a minor breaking change when calling `h(comp, { ... })`
will now fail if `comp` is a of generic `Component` type, since it does
not specify what props it expects.
2020-08-19 16:19:25 -04:00
Carlos Rodrigues 4baf852a34
types(runtime-core): make `FunctionalComponent` with emit string[] to be `Component` (#1879)
fix #1847
2020-08-19 10:00:48 -04:00
HcySunYang 7f82428680
types(runtime-core): tweak the type of KeepAlive (#1871) 2020-08-19 10:00:01 -04:00
edison 7dd067206c
chore: remove unused type `VNodeDirectiveData` (#1893) 2020-08-19 09:51:44 -04:00
Evan You 9f92871c80 types(runtime-core): argument for props validator
Unfortunately it requires explicit annotation for now
2020-08-18 11:37:34 -04:00
Aurelius333 a88895b5da
types(runtime-core): make `this` void in prop validators and prop default factories (#1867) 2020-08-18 11:25:55 -04:00
HcySunYang 9d36c61796
types(runtime-core): improve PropType inference precision (#1863) 2020-08-18 11:23:18 -04:00
Pick 4d51be73d3
refactor(runtime-core): add @internal for instance.proxy (#1849) 2020-08-18 11:12:26 -04:00
Evan You 0d508e9f51 feat(runtime-core): pass current props to prop default value functions
close #1886
2020-08-18 10:52:50 -04:00
Evan You 6ccd9ac2bc fix(runtime-core): fix Object props validation for objects with custom toStringTag
fix #1872
2020-08-17 11:25:38 -04:00
susiwen8 a2c6f0c8c7
chore: remove unecessary 'export' (#1785) 2020-08-14 17:38:32 -04:00
Aurelius333 5002ab53d6
types(runtime-core): make `this` void in emits validator (#1842) 2020-08-14 17:36:26 -04:00
Evan You 223f180529 test(watch): add same value skipping trigger test 2020-08-14 17:35:49 -04:00
zhangzhonghe 517c2b8bdb
fix(teleport): always inherit root DOM nodes on patch (#1836)
fix #1813
2020-08-14 17:26:32 -04:00
Necmettin Karakaya 86187ca907
chore: typos (#1670) 2020-08-14 17:05:12 -04:00
Evan You 86a4f2a6b3 chore: remove unnecessary wrap 2020-08-14 09:52:30 -04:00
HcySunYang caccec3f78
fix(runtime-core/scheduler): sort postFlushCbs to ensure refs are set before lifecycle hooks (#1854)
fix #1852
2020-08-14 09:50:23 -04:00
Evan You 611437a3fe fix(runtime-core/scheduler): allow component render functions to trigger itself
fix #1801
2020-08-13 17:42:47 -04:00
underfin bc6f252c4a
fix(runtime-core): should correctly call `beforeEnter` inside `Suspense` (#1805)
fix #1795
2020-08-13 12:36:30 -04:00
HcySunYang 3991ff03ce
fix(runtime-core): separate null vs. non-null ref value updates (#1835)
fix #1789, fix #1834
2020-08-13 12:27:17 -04:00
Evan You 48576e582c fix(transition): transition should accept multiple handlers on same event
fix #1746
2020-08-06 10:28:03 -04:00
Evan You 791eff3dfb fix(runtime-core): avoid manual slot invocation in template expressions interfering with block tracking
fix #1745
2020-08-06 10:16:13 -04:00
zhangzhonghe 233d191d0d
fix(keep-alive): fix activated hook invocation on nested components (#1743)
fix #1742
2020-08-06 09:42:52 -04:00
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 74a1265fea chore: remove debugger 2020-08-05 09:32:18 -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
Eduardo San Martin Morote b5f91ff570
fix(watch): allow handler to be a string (#1775)
fix #1774
2020-08-04 12:42:47 -04:00
Yang Mingshan b2a91429ed
fix(runtime-core/scheduler): prevent duplicate queue (#1767) 2020-08-03 17:19:06 -04:00
Evan You f6afe7000e fix(runtome-core): do not cache property access in beforeCreate hook
fix #1756
2020-08-03 17:04:45 -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
Evan You fce2689ff1 fix(watch): should trigger watcher callback on triggerRef when watching ref source
fix #1736
2020-07-30 18:29:38 -04:00
Evan You 09702e95b9 fix(runtime-core/scheduler): only allow watch callbacks to be self-triggering
fix #1740

Previous fix for #1727 caused `watchEffect` to also recursively trigger
itself on reactive array mutations which implicitly registers array
`.length` as dependencies and mutates it at the same time.

This fix limits recursive trigger behavior to only `watch()` callbacks
since code inside the callback do not register dependencies and
mutations are always explicitly intended.
2020-07-30 17:57:20 -04:00
Carlos Rodrigues ce78eac8e9
fix(runtime-core): check if the key is string on undefined property warning (#1731) 2020-07-29 10:06:36 -04:00
Evan You 848d9ce2ea release: v3.0.0-rc.5 2020-07-28 17:42:05 -04:00
Evan You aa06b1034d
feat(reactivity): `proxyRefs` method and `ShallowUnwrapRefs` type (#1682)
* feat(reactivity): `proxyRefs` method and `ShallowUnwrapRefs` type

BREAKING CHANGE: template auto ref unwrapping are now applied shallowly,
i.e. only at the root level. See https://github.com/vuejs/vue-next/pull/1682 for
more details.
2020-07-28 16:30:56 -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
Evan You 355c052622 fix(runtime-core): dev root resolution should differentiate user comments vs v-if comments
fix #1704
2020-07-28 14:16:09 -04:00
Evan You 4ef5c8d424 fix(runtime-core): fix scheduler dedupe when not flushing 2020-07-28 13:23:09 -04:00
Evan You c27dfe1d09 fix(runtime-core): scheduler should allow intentional self triggering effects
fix #1727
2020-07-28 12:29:43 -04:00
underfin 04a4ebaaeb
fix(runtime-core): use correct container for moving `Teleport` content (#1703) 2020-07-28 11:23:39 -04:00
Evan You fbf865d9d4 fix(compiler-core): always compile Teleport and Suspense as blocks 2020-07-28 11:12:43 -04:00
Evan You b3b65b4058 fix: runtime compilation marker should be applied in exposed compile function 2020-07-28 11:11:26 -04:00
Evan You 7e8b26eba8 refactor(runtime-core): make nextTick() promise reject on scheduler flush error 2020-07-28 10:40:25 -04:00
Evan You 3cc768f9f2 refactor(runtime-core): adjust error handling behavior
- Crash in dev to make the errors more noticeable
- Recover in prod to reduce impact on end users
2020-07-28 10:40:25 -04:00
Evan You 5c74243211 test: move mockWarn into setup files 2020-07-27 22:58:51 -04:00
Evan You 354d79c42b fix(runtime-core): respect render function from mixins
fix #1630
2020-07-27 17:44:17 -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 3d2bdafd2f chore: revert accidentally commented line 2020-07-23 14:53:09 -04:00
Evan You a75b8a268f fix(build): fix component resolution when disabling options API
fix #1688
2020-07-23 14:33:15 -04:00
Evan You ba17c871d8 feat: support delimiters option for runtime compilation
close #1679
2020-07-23 14:27:17 -04:00
Evan You d63daaf9b6 release: v3.0.0-rc.4 2020-07-21 15:40:46 -04:00
Evan You 7753485baa release: v3.0.0-rc.3 2020-07-21 15:27:26 -04:00
Evan You c852bf18d7 fix(v-model): v-model listeners should not fallthrough to plain element root
fix #1643
2020-07-21 14:17:48 -04:00
Bjarki Hall 304830a764
feat(runtime-core): respect function name when using `defineComponent` function shorthand (#1661) 2020-07-21 13:15:26 -04:00
Evan You 1af3531719 fix(runtime-core): fix attr fallthrough on compiled framgent w/ single static element + comments 2020-07-21 13:11:19 -04:00
Evan You 6390ddfb7d fix(runtime-core): do not use bail patchFlag on cloned vnodes
fix #1665

- cloned vnodes with extra props will receive only the full props flag
- this commit affects `cloneVNode` behavior when used in manual render
  functions.
  - ok for normal elements since elements only use patchFlags for own
    props optimization
  - full props flag is skipped for fragments because fragments use
    patchFlags only for children optimization
  - this also affects `shouldUpdateComponent` where it should now only
    respect patchFlags in optimized mode, since component vnodes use
    the patchFlag for both props and slots optimization checks.
2020-07-21 13:11:19 -04:00
Evan You fb8e83f0c2 chore: update link for the feature flag warning [ci skip] 2020-07-21 10:26:16 -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
Tan Li Hau 288b4eab9e
fix(watch): fix watching reactive array (#1656)
fixes #1655
2020-07-20 12:39:22 -04:00
Evan You 1f4045a086 release: v3.0.0-rc.2 2020-07-19 14:52:42 -04:00
Evan You 03c681e396 refactor(types): move component props interfaces + expose `AllowedComponentProps`
fix #1632
2020-07-19 14:09:53 -04:00
zhangzhonghe 2deb0c7a74
fix(keep-alive): handle "0" as cache key (#1622)
fix #1621
2020-07-19 13:31:07 -04:00
Carlos Rodrigues 8facaefcc3
fix(watch): callback not called when using `flush:sync` (#1633) 2020-07-19 13:30:24 -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
Evan You b3af5dbe5d chore: more detailed teleport target warning
close #1629
2020-07-19 11:52:03 -04:00
Stanislav fa5ddf8d06
chore(types): convert type literals to records (#1615) 2020-07-18 22:56:28 -04:00
Evan You 0ea14cade9 release: v3.0.0-rc.1 2020-07-17 15:30:17 -04:00
HcySunYang 5d8a64d53a
feat(types): deny unknown attributes on component by default (#1614)
close #1519
2020-07-17 11:43:28 -04:00
underfin a8966457d3
refactor(devtools): extract same logic into `createDevtoolsHook` (#1608) 2020-07-17 11:25:33 -04:00
lawvs a935998b33
chore: better comment hovers preview [ci skip] (#1612) 2020-07-17 11:24:12 -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
Evan You 024a8f10f5 chore: also expose DeepReadonly in runtime-core 2020-07-17 09:29:44 -04:00
Guillaume Chau 568b6db12b
feat: Initial devtools support (#1125) 2020-07-16 18:18:52 -04:00
Evan You 5ed73cd874 release: v3.0.0-beta.24 2020-07-16 13:51:52 -04:00
Evan You 8b5d153d7f release: v3.0.0-beta.23 2020-07-16 12:48:56 -04:00
Evan You 165068dbc2 perf(runtime-core): avoid duplicate postFlushCb invocation
Also improve flush performance by using for loop instead of shift()

fix #1595
2020-07-15 22:36:41 -04:00
Evan You aab99abd28 fix(slots): properly force update on forwarded slots
fix #1594
2020-07-15 20:12:49 -04:00
Evan You 4535b1bde8 chore: remove outdated options 2020-07-15 17:05:00 -04:00
Evan You fcbefdb769 release: v3.0.0-beta.22 2020-07-15 12:43:41 -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
Evan You 32a4cb804b test: improve coverage 2020-07-15 10:38:45 -04:00
Evan You 056a13142f test: fix fragment unkeyed fragment test flag 2020-07-15 10:10:38 -04:00
春去春又来 379a8af288
test(runtime-core): add test for rendererComponent (#1393) 2020-07-15 09:34:23 -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
Carlos Rodrigues d78a6821f5
types(runtime-core): default `SetupContext` generic argument to `EmitsOptions` (#1584) 2020-07-15 09:19:20 -04:00
Evan You 9188e9ea74 release: v3.0.0-beta.21 2020-07-14 17:18:07 -04:00
Evan You f49f95344b chore: fix types 2020-07-14 17:07:36 -04:00
underfin 583a1c7b45
fix(runtime-core): avoid scopeId as attr for slot nodes with same scopeId (#1561)
fix vitejs/vite#536
2020-07-14 17:06:39 -04:00
Pick 2b60870f8a
refactor(types): improve code readability & friendly to type hints (#1560) 2020-07-14 16:33:30 -04:00
Evan You 00ab9e2e85 refactor: adjust event options handling to be JSX friendly 2020-07-14 13:20:59 -04:00
Evan You 380c6792d8 fix(v-on): refactor DOM event options modifer handling
fix #1567

Previously multiple `v-on` handlers with different event attach option
modifers (`.once`, `.capture` and `.passive`) are generated as an array
of objects in the form of `[{ handler, options }]` - however, this
makes it pretty complex for `runtime-dom` to properly handle all
possible value permutations, as each handler may need to be attached
with different options.

With this commit, they are now generated as event props with different
keys - e.g. `v-on:click.capture` is now generated as a prop named
`onClick.capture`. This allows them to be patched as separate props
which makes the runtime handling much simpler.
2020-07-14 11:48:05 -04:00
Evan You 9152a89016 fix(v-on): capitalize dynamic event names 2020-07-13 17:36:46 -04:00
Pick 09f61b4049
types(runtime-core): adjust Renderer's type declaration (#1566) 2020-07-13 12:44:37 -04:00
Evan You 65beba98fe fix(slots): differentiate dynamic/static compiled slots
fix #1557
2020-07-13 12:36:41 -04:00
Evan You ba3b3cdda9 fix(runtime-core/emits): merge emits options from mixins/extends
fix #1562
2020-07-13 11:55:46 -04:00
Evan You b6cdd5621e wip: template binding optimization 2020-07-10 22:12:25 -04:00
Evan You 9f706a9f5e feat(runtime-dom): useCssVars 2020-07-09 16:25:29 -04:00
Evan You 20df2f3817 release: v3.0.0-beta.20 2020-07-08 12:45:30 -04:00
Evan You 903e8f697e fix(runtime-core): should allow v-model listeners to fallthrough, but ignore for warning
fix #1543
2020-07-08 11:56:47 -04:00
Carlos Rodrigues 1e90605c15
types(runtime-core): provide valid type for default `$emit` (#1498) 2020-07-08 11:51:03 -04:00
meteorlxy 220db9bcda
feat(types): expose WritableComputedRef (#1500) 2020-07-08 11:49:07 -04:00
Evan You 00f6031fbf test: assert vnode invalid key warning for NaN 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
Evan You fe9e227ae4 types: adjust resolveDynamicComponent return type 2020-07-07 12:43:05 -04:00
Evan You d5ab70ba66 release: v3.0.0-beta.19 2020-07-07 10:04:31 -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 d7184c99e6 refactor(types): add VNode to VNodeTypes 2020-07-06 21:12:15 -04:00
Evan You 31e37b417b chore: warn NaN vnode key 2020-07-06 18:56:21 -04:00
Evan You d86b01ba3a fix(keep-alive): fix keep-alive with scopeId/fallthrough attrs
fix #1511
2020-07-06 18:17:40 -04:00
Evan You 6dd59ee301 fix(v-model): should ignore compiled v-model listeners in attr fallthrough
fix #1510
2020-07-06 17:00:34 -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 7f83856f34 release: v3.0.0-beta.18 2020-07-01 21:06:25 -04:00
Evan You f3e9c1b59d fix(runtime-core): avoid accidental access of Object.prototype properties 2020-07-01 20:13:02 -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 c9629f2692 feat(runtime-core): support creating vnode from existing vnode
This allows passing vnode around with curried props and use it in
places where VNodeType is expected, e.g. `<component :is=""/>`
2020-07-01 19:48:01 -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 f6da6bf999 release: v3.0.0-beta.17 2020-06-30 12:10:15 -04:00
Evan You 6b23216e6d chore: comment on slot optimization hint [ci skip] 2020-06-30 12:01:05 -04:00
Evan You d2bf3cc4a8 chore: remove unnecessary loop 2020-06-30 11:43:15 -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 062835d45a fix(slots): make compiled slot marker non-enumerable
fix #1470
2020-06-30 09:27:06 -04:00
Jian Zhang 0017caf68b
chore: avoid unnecessary function call (#1464) 2020-06-29 18:52:44 -04:00
Evan You ec3c12ee10 release: v3.0.0-beta.16 2020-06-29 18:34:50 -04:00
Evan You 86d3972855 fix(transition-group): vue 2 compatible handling of transition-group w/ multiple v-for children
fix #1126
2020-06-29 18:16:10 -04:00
underfin d4cd12887e
fix(BaseTransition): collect correct children with slot passthrough in `Transition` (#1456)
fix #1455
2020-06-29 12:04:28 -04:00
Evan You afe13e0584 fix(ssr): fix ssr scopeId on component root 2020-06-27 00:27:44 -04:00
Evan You 978d9522e8 fix(runtime-core): fix scopeId inheritance for component inside slots 2020-06-26 22:28:55 -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
Evan You f3f94e4deb fix(runtime-core): component root should inherit scopeId from vnode
fix #1399
2020-06-26 17:54:44 -04:00
Evan You 70ea76ae0c fix(slots): filter out compiler marker from resolved slots
fix #1451
2020-06-26 17:18:39 -04:00