Commit Graph

902 Commits

Author SHA1 Message Date
Evan You c9e3a5d1d9 feat: detect and warn invalid dynamic argument expressions 2019-01-28 18:08:37 -05:00
Evan You dbc0582587 feat: dynamic directive arguments for v-on, v-bind and custom directives (#9373) 2019-01-25 23:22:44 -05:00
Evan You f219bedae8
perf: improve scoped slots change detection accuracy (#9371)
Ensure that state mutations that only affect parent scope only trigger parent update and does not affect child components with only scoped slots.
2019-01-25 22:34:06 -05:00
Evan You 1868561442 fix: fix checkbox event edge case in Firefox 2019-01-24 15:43:06 -05:00
Evan You 8cb2069aa4 test: fix tests in IE/Edge 2019-01-24 10:05:39 -05:00
Evan You 8d8457246d feat: warning for ambiguous v-slot usage 2019-01-23 10:20:01 -05:00
Evan You 67e85deae2 feat: adjust v-slot per RFC + enable flag 2019-01-22 22:21:40 -05:00
Evan You 4fca0454bd feat: update new slot syntax per RFC revision 2019-01-16 13:44:58 -05:00
Evan You 7fb6fdd168 build: introduce feature flags, hide new slot syntax behind flag 2019-01-15 16:22:06 -05:00
Evan You c5c354d593 feat: new scoped slot syntax implementation update per rfc 2019-01-14 22:56:37 -05:00
Evan You 584e89da4a feat: support slot-props and its shorthand
See https://github.com/vuejs/vue/issues/9306 for more details.
2019-01-12 01:23:51 -05:00
Evan You 794ad0dae3 refactor: additional tweaks after revert 2019-01-11 23:09:31 -05:00
Evan You 6a2994e8f0 revert: feat: support scoped-slot usage with $slot
This reverts commit 7988a5541c.
2019-01-11 23:04:04 -05:00
Evan You 6fe07ebf5a chore: merge branch '2.6' into dev 2019-01-11 18:26:32 -05:00
Evan You 0d2e9c46f1 fix(core): dedupe lifecycle hooks during options merge
The fix landed in #9199 causes further extended constructors used as
mixins to drop options from its inheritance chain, so a different fix
is needed.
2019-01-11 17:53:33 -05:00
Evan You edf7df0c83 fix(core): dedupe lifecycle hooks during options merge
The fix landed in #9199 causes further extended constructors used as
mixins to drop options from its inheritance chain, so a different fix
is needed.
2019-01-11 17:51:45 -05:00
hikerpig 743edacdb6 fix(core): fix merged twice bug when passing extended constructor to mixins (#9199)
fix #9198
2019-01-11 15:47:13 -05:00
Adrien Baron d21e931396 fix(async component): memory leak after synchronous async loading (#9275)
fix #9229
2019-01-11 15:46:25 -05:00
hikerpig 537161779e fix(core): fix merged twice bug when passing extended constructor to mixins (#9199)
fix #9198
2019-01-10 16:10:54 -05:00
Evan You c50bbde41c feat: add Vue.observable() for explicitly creating observable objects 2019-01-10 16:03:03 -05:00
Evan You d855027741 test: more test cases for $slot usage detection 2019-01-10 11:18:06 -05:00
Evan You 1e5174d213 test: add more test case for watch option 2019-01-10 10:33:02 -05:00
Evan You d2902ca8ec feat: support .property shorthand syntax for v-bind.prop modifier
close #7582
2019-01-09 17:31:04 -05:00
Evan You 23a145952c refactor: adjust #7941 for slots unification 2019-01-09 16:35:39 -05:00
Eduardo San Martin Morote fb6aa06090 feat(functional): add scopedSlots to context in functional components (#7941) 2019-01-09 16:18:14 -05:00
Evan You 5d52262f1c feat(core): expose all slots on $scopedSlots as functions
After this change, users using render functions can always make use
of slots via `this.$scopedSlots` without worrying about whether the
slot is being passed in as scoped or not.

This should also make it easier to migrate to 3.0 where all slots are
exposed as functions that return Array of VNodes on `this.$slots`.
2019-01-09 15:35:57 -05:00
Evan You 7988a5541c feat: support scoped-slot usage with $slot 2019-01-07 22:26:44 -05:00
Evan You c7c13c2a15 fix(scoped-slots): ensure $scopedSlots calls always return Arrays
Also allow render functions to return an Array of a single element.
Close #8056
2018-12-26 17:17:42 -05:00
Evan You d747469e1a test: test case for v-for native collection support 2018-12-26 16:02:50 -05:00
Evan You 7a9290421d build: fix chrome headless on CI 2018-12-26 15:48:19 -05:00
Evan You 85d8ad64aa build: use headless chrome by default for unit tests 2018-12-26 15:38:52 -05:00
Jeremy Dubois d40eb9c288 feat(v-for): support iterables in v-for (#8179) 2018-12-26 15:38:19 -05:00
Evan You e1abedb9e6 feat(compiler): add whitespace option, deprecate preserveWhitespace option
close #9208
2018-12-26 14:12:34 -05:00
Pak Youngrok 9c718522ba feat(compiler/watch): allow unicode characters in component names and watch paths (#8666)
close #8564
2018-12-26 10:02:54 -05:00
Evan You 325fc7693c feat(compiler): output codeframe in browser compiler 2018-12-21 23:55:48 -05:00
Jason b31a1aa887 feat(compiler): output source range for compiler errors (#7127)
ref #6338
2018-12-21 21:58:32 -05:00
Evan You 1c105fb16c test: fix test case for #8297 2018-12-21 14:29:57 -05:00
Divya 3fca52792e feat: v-bind.sync also listens for kebab-case update event (#8297)
fix #6428
2018-12-21 13:34:17 -05:00
Mathieu TUDISCO 0e4e45ec74 feat: support custom toString() in text interpolation and v-html (#8217)
close #8093
2018-12-21 13:13:48 -05:00
Hiroki Osame 1933ee80ff fix(provide/inject): Merges symbol provides (#7926) 2018-12-21 12:49:21 -05:00
Zhenfei You bf0efb02b1 feat(compiler): support deindent: false in vue-template-compiler (#7215)
close #7054
2018-12-21 11:59:33 -05:00
Evan You 9432737cf8 fix: cover more cases in v-on inline return value 2018-12-20 12:20:09 -05:00
Evan You 0ebb0f39df fix: return inline invocation return value in v-on handlers
close #7628
2018-12-20 11:32:06 -05:00
Evan You b00868c5cb refactor: extract async error handling logic 2018-12-20 10:26:56 -05:00
Enkot 6e9fcfc81d feat(errors): sync/async error handling for lifecycle hooks and v-on handlers (#8395)
close #6953, close #7653
2018-12-20 10:02:28 -05:00
Evan You b7f7f27569 feat: use event delegation when possible
This also fixes async edge case #6566 where events propagate too slow
and incorrectly trigger handlers post-patch.
2018-12-19 19:26:58 -05:00
Xin Du (Clark) b06c784b81 fix(ssr): support rendering comment (#9128) 2018-12-12 11:41:08 -05:00
Evan You 847e493768 fix: fix single v-for child optimization 2018-12-11 17:47:59 -05:00
Evan You 4074104fac perf: skip normalization on single child element v-for 2018-12-11 16:51:40 -05:00
Evan You 47487607fb fix: fix v-for component with undefined value
fix #9181
2018-12-11 16:51:03 -05:00
krystal 984393fed9 test: change model text's priority case (#9170) 2018-12-11 11:37:39 -05:00
Matteo Fogli 87bad80f0c fix(lifecycle): beforeUpdated should not be called if component is destroyed (#9171)
fix #8076
2018-12-11 11:31:27 -05:00
NaotoSuzuki 8fccd82569 chore: fix tag name in compiler/parser/index.js (#9165) 2018-12-11 11:28:40 -05:00
Andrew Hyndman 3d449376d5 fix(v-model): properly handle multiline v-model expressions (#9184)
fix #9183
2018-12-11 10:27:43 -05:00
Evan You 5d721a42b1 revert: fix(sfc): avoid deindent when pad option is specified (#7647)
This reverts commit 9d2f9a034f.
2018-12-09 15:52:17 -05:00
GU Yiling 0ed0aad772 fix: fix keyName checking for space and delete in IE11 (#9150)
fix #9112
2018-12-05 15:26:58 -05:00
Evan You 1b4a8a0c1e fix(compiler): fix codegen for v-for component inside template
fix #9142
2018-12-04 10:51:49 -05:00
laoxiong 19c33a7e40 fix(v-on): correctly remove once listener (#8036)
fix #8032
2018-12-02 11:33:39 -05:00
Evan You 530ca1b2db fix(core): properly handle reused vnodes
This also removes the restrictions on rendering the same slot multiple
times.

close #7913
2018-12-01 21:07:18 -05:00
Evan You 097f6229df fix(core): avoid mutating original children when cloning vnode
The on-demand clone strategy introduced in 956756b mutates the owner
array of the cloned vnode. This causes the newly cloned vnode to be
destroyed when the parent node is destroyed. This is fixed by cloning
the children array when cloning a vnode.

fix #7975
2018-12-01 17:05:36 -05:00
Subhash ef8524ab7d fix(compiler): wrap scoped slots v-if conditions in parens (#9119)
fix #9114
2018-12-01 00:33:59 -05:00
ysj16 0d62bb84ff fix: actually disable dep collection when invoking lifecycle hooks (#9095)
fix #9046
2018-12-01 00:24:30 -05:00
狼族小狈 c711ec189a fix(types): support chain call for Vue.use and Vue.mixin (#8595) 2018-11-30 23:27:24 -05:00
Alexey Tirman 613cb52bf3 polish: improve invalid method warning with type info (#8974)
close #8017
2018-11-30 18:06:24 -05:00
Jovino Xu 05001e695e fix(compiler): should keep newline after unary tags in <pre> (#8965)
fix #8950
2018-11-30 18:02:54 -05:00
Daniel Santana Rocha 2bb3199da7 polish: warn duplicate keys when patching children into empty node (#8881)
close #8832
2018-11-30 18:01:45 -05:00
GU Yiling 758524134e fix: v-bind object should be overridable with kebab-cased props (#8845)
In addition .sync should generate camelCased event name
2018-11-30 17:56:41 -05:00
Kael 80f17fa498 fix(core): skip mixins and extends if child is already merged (#8870)
fix #8865
2018-11-30 17:54:16 -05:00
Matt Lavallee 2e472c5e5e fix(component): clean up memory leak after loading async component completes (fix #8740) (#8755)
* fix(component): clean up memory leak after loading async component completes

* fix(async component): accounting for async components with loading property

* refactor(component): simplifying memory cleanup logic
2018-11-30 17:36:08 -05:00
HcySunYang 5f6ef15fb2 polish: warn sequential index on <transition-group> (#8748) 2018-11-30 17:35:10 -05:00
Adrià Fontcuberta 2686818beb fix(error handling): handle errors on immediate watcher execution (#8581)
The handle callback call should be wrapped in a try/catch that explicitly calls handleError

fix #8567
2018-11-29 18:14:28 -05:00
Evan You 7b7164c11c fix(v-model): avoid duplicate model transforms
This happens when a component directly passes down its own data object
to a child component. Fix #8436.
2018-11-29 18:11:20 -05:00
X.L d483a49c86 fix(compiler): normalize potential functional component children in v-for (#8558)
fix #8468
2018-10-24 14:02:45 -04:00
Haoqun Jiang 0b16927c9d fix(transition): check existence of `el.parentNode` (#8422)
fix #8199

* fix(transition): check existence of `el.parentNode`

If the new parentNode gets a `textContent` or `innerHTML` property during
patching, the `transition` node would have been detached early, which means
`el.parentNode` no longer exists.

* fix(vdom): should not reuse nodes with `textContent` / `innerHTML` props
2018-10-24 13:26:20 -04:00
Haoqun Jiang 8f04135dba fix(parser): allow CRLFs in string interpolations (#8408)
fix #8103
2018-10-24 13:24:55 -04:00
Haoqun Jiang a64ff1957c fix(lifecycle): updated should not be called after component being destroyed (#8381)
fix #8076
2018-10-24 13:24:31 -04:00
Haoqun Jiang a71853bfc5 fix(v-pre): skip compiling custom component tags in v-pre blocks (fix #8286) (#8376) 2018-10-24 13:24:07 -04:00
Sam Lichlyter 5489339a30 refactor(core): Replace "var" (#8299)
Replaces instances of "var" with "let" and "const" where applicable using the eslint 'no-var' and
'prefer-const' rules
2018-10-24 13:07:40 -04:00
Eduardo San Martin Morote 952ae33290 polish: warn when an existing property starting with $ is not pro… (#8214) 2018-10-24 13:04:56 -04:00
Kevin Ball ecac831691 fix(compiler): templates inside v-pre should be rendered to HTML (#8146)
close #8041
2018-10-24 13:01:29 -04:00
Evan You e9fc04ba50 test: fix assertion 2018-10-24 12:58:21 -04:00
Jovino Xu aef2a5f3db fix(compiler): maybeComponent should return true when "is" attribute exists (#8114)
close #8101
2018-10-24 12:50:42 -04:00
Yuhang Liu 1b69cbde74 refactor: add empty v-bind warning(re #7973) (#7988)
* refactor: add empty v-bind warnings

re #7973

* Update index.js
2018-10-24 12:46:38 -04:00
Eduardo San Martin Morote db7287c23b fix(shared): check dates in looseEqual (#7940)
Fix #7928
thanks to @w3cj for the initial version. This one is using getTime instead of toUTCString because it
is much faster to compare
2018-10-24 12:45:06 -04:00
katashin 9d2f9a034f fix(sfc): avoid deindent when pad option is specified (#7647) 2018-10-24 12:10:58 -04:00
Evan You 76fd45c9fd build: upgrade eslint and use only non-stylistic rules 2018-10-24 12:08:32 -04:00
Evan You 52f9d3f492 build: upgrade webpack & karma 2018-10-24 10:41:38 -04:00
Evan You 6b1d431a89 Revert "perf: avoid unnecessary re-renders when computed property value did not change (#7824)"
This reverts commit 653aac2c57.
2018-09-18 10:21:55 -04:00
Yuriy Alekseyev 59860b0a75 refactor: make the warning messages more explicit (close #7764) (#7881) 2018-08-17 10:40:46 -04:00
Edd Yerburgh c94482743c feat: add async option (#8240)
This is an option intended only for testing purposes, and should not be used in
application code.
2018-08-16 16:26:02 -04:00
Evan You f148077437 chore: format 2018-03-23 19:21:34 -04:00
Evan You 653aac2c57
perf: avoid unnecessary re-renders when computed property value did not change (#7824)
close #7767
2018-03-23 19:03:27 -04:00
Evan You b7445a2b94
fix: beforeUpdate should be called before render and allow state mutation (#7822)
fix #7481
2018-03-23 19:03:00 -04:00
Evan You de42278d34 fix: ensure init/prepatch hooks are still repsected
this address a regression introduced in 984927a which
causes vue-router#1338 to resurface.
2018-03-23 19:01:24 -04:00
dherman 7b387390aa fix: correct the `has` implementation in the `_renderProxy` (#7878)
It's feasible that someone might ask if something other than a string is
in the proxy such as a `Symbol` that lacks a `charAt` method.  This aligns
the implementation with the `getHandler`.
2018-03-22 09:53:28 -04:00
Evan You 62a922e865 fix: fix wrongly matched named slots in functional components
This is a subtle edge case caused when a stateful component triggers
a self re-render, which reuses cached slot nodes. The cached slot
nodes, if returned from a functional render fn, gets the fnContext
property which causes subsequent slot resolving to not function
properly. To fix this, nodes returned from functional components
need to be cloned before getting assigned fnContext.

fix #7817
2018-03-13 17:48:52 -04:00
Piotr Kaminski 9084747e30 fix(core): Make set/delete warning condition for undefined, null and (#7818)
primitive values more precise.  Corrects #7452
2018-03-13 11:40:31 -04:00
Hiroki Osame a6169d1eb7 fix(model): fix static input type being overwritten by v-bind object (#7819)
fix #7811
2018-03-13 11:40:15 -04:00
Evan You 6dd73e9ee4 fix: named slots for nested functional components
Named slots should be respecred when passing raw children down multiple
layers of functional components.

fix #7710
2018-03-13 11:40:04 -04:00
Evan You 215f877d1b fix(keep-alive): run prune after render for correct active component check
fix #7566
2018-03-13 11:39:59 -04:00