Commit graph

168 commits

Author SHA1 Message Date
Isiah Meadows
ddc8adbbd3
Fix #2424 (#2450)
* Fix #2424

* Add PR ref
2019-07-03 14:41:37 -04:00
Isiah Meadows
9e9b89d900
Fix #2067 (#2447)
* Fix #2067

* Add PR number [skip ci]
2019-07-03 04:53:45 -04:00
Vasil Rimar
39c20bdb34 Handle [ fragment selector. Fixes #2349 (#2352)
* Handle `[` fragment selector. Fix #2349

* Update tests

* Simplify hyperscript function
2019-01-07 04:56:09 -05:00
Isiah Meadows
966e78bcab
Allow variadic arguments to m.fragment (#2328)
* Implement support for variadic arguments to `m.fragment`

While I was at it, I refactored the common logic out of `hyperscript`.

* Add a missed change from #2326

* Update docs + changelog [skip ci]

* Explain rationale for `hyperscriptVnode`'s calling convention

This way, it doesn't get erroneously "cleaned up" into something worse,
and so it's clearer how it'd be potentially optimized once ES5 support
is dropped.
2018-12-05 23:57:42 -05:00
Isiah Meadows
8134c51a48
Fix style updates to avoid unnecessary allocation (#2312)
* Fix style updates to avoid unnecessary allocation

- Drive-by: properly censor `cssFloat` -> css `float:` to match DOM
  behavior

* Document `style` syntax + custom property support. [skip ci]

* Add a missing test

* Add a few more descriptive comments.

* Update changelog [skip ci]
2018-12-03 14:31:08 -05:00
Isiah Meadows
462fb659d7
Fix event handler this value, simplify redraw handling (#2320)
Shaves 10 bytes off the bundle from smaller name + reduced indirection
2018-12-03 06:35:27 -05:00
Isiah Meadows
a8473e63c9
Reverse hook order for all but onbeforeupdate (#2297)
- Drive-by: `onbeforeupdate` prevents subtree redraw if *either* hook
  returns `false`, not *both*.
2018-11-27 18:02:48 -05:00
Rasmus Porsager
7c299ab48c Allow css vars with uppercase characters (#2311)
* Allow css vars with uppercase characters

* Remove charAt

* Extract dash lowercase lambda

* Extract match uppercase regex

* Set key and value correctly in updateStyle

* Fix domMock style to work like the browser
2018-11-26 09:40:08 -05:00
Barney Carroll
4c5968a526 Fix #2192 (#2308)
* Fix #2192

* Fix mock style property definitions

* Re-instate camelCased style property key declaration support

* Fix removeProperty, eslint fix

* Stringify style keys: fix perf tests

* Fix weird uncaught mixed whitespace

* Fix weird uncaught mixed whitespace
2018-11-26 05:49:16 -05:00
Rasmus Porsager
421474c0e2 Cast className using toString (#2309)
* Cast className using toString

* Add to change-log
2018-11-24 08:13:56 -05:00
Isiah Meadows
4d579c50b6
Revert "Fix #1771 and probably others (#2286)" (#2299)
4f68984f2f
2018-11-14 19:26:23 -05:00
Isiah Meadows
4f68984f2f
Fix #1771 and probably others (#2286)
This is *super* subtle, and IMHO Chrome did exactly the wrong thing
here.
2018-11-14 15:35:00 -05:00
Pierre-Yves Gérardy
d6489e3b3f Merge #2075 into next (#2175)
* fix: Access document.activeElement through a function that eats errors for IE (#2075)

* test: inline iframe.js so ospec doesn't try to run it
2018-11-07 18:42:50 -05:00
spacejack
ea0ce7f762 Store normalized vnodes in the dom element. Add render tests. (#2266)
* Store normalized vnodes in the dom element. Add render tests.

* Add entry to change-log
2018-10-28 17:17:24 -04:00
Isiah Meadows
2635070734 Merge branch 'next' 2018-10-25 14:23:33 -04:00
Isiah Meadows
88b17c1c60
Avoid triggering Object.prototype.__proto__ with keys (#2251)
This way, the diff algorithm works with untrusted keys.
2018-10-15 15:09:55 -04:00
Isiah Meadows
1ecc30a064 Fix custom elements attribute application, improve key checking
- Fix custom elements attribute application to acknowledge that not all
  custom elements operate purely based on attributes. (Plus, those
  blasted things are verbose as heck when you're working with them in
  raw form. It's also not that uncommon for functionality to be exposed
  via property and *not* attribute.)
- Don't memoize the normalized value when we 1. only use it once in each
  branch, and 2. only use it for a few special cases.
- Centralize the "has property key" code, so it's easier to tune and
  read. I also inlined a couple functions while I was at it since they
  were small and only used once.
- Actually test for how attributes are applied to raw DOM elements vs
  when we choose to use keys. When I first developed the patch, it
  silently worked, when I should've been breaking things.
2018-09-20 15:08:49 -04:00
Isiah Meadows
c703b03253
Unbreak accidental back-compat break with event optimization (#2222)
This was supposed to be purely additive. See here for more details:

https://github.com/MithrilJS/mithril.js/pull/1949#issuecomment-417824513
2018-09-18 10:14:21 -04:00
Pierre-Yves Gérardy
32b319d140 [render/hyperscript] Normalize to class attrs to className, ignore only nullish values 2018-06-07 18:09:38 +02:00
Pierre-Yves Gérardy
8daa386e5e [render/test] add a render/hyperscript integration suite for classes 2018-06-07 18:09:38 +02:00
Pierre-Yves Gérardy
92b22fe8e6 [render/hyperscript] have the attrs take precedence over the selector, improve class normalization
fix #1773
fix #2172
2018-06-07 18:09:38 +02:00
Pierre-Yves Gérardy
3f5cabc5c5 Chore: Normalize the way we use eslint-disable 2018-06-01 21:27:02 +02:00
Pierre-Yves Gérardy
6283aa4a7d [render/render] Test for removing styles and assorted domMock changes 2018-06-01 21:27:02 +02:00
Pierre-Yves Gérardy
4921083898 [render/render] Fix xlink:href handling 2018-06-01 21:27:02 +02:00
Pierre-Yves Gérardy
2469505b1b Move xlink:href test to the proper file 2018-06-01 21:27:02 +02:00
Pierre-Yves Gerardy
5b51b682ee Improve attrs removal, fix #1804 2018-06-01 21:27:02 +02:00
Pierre-Yves Gerardy
4197cf0ae1 Enable the tests for #1804 2018-06-01 21:27:02 +02:00
Pierre-Yves Gérardy
95ec3d28aa test for the LIS-based diff 2018-05-29 23:50:29 +02:00
Barney Carroll
1579fe8430
Do not normalise component children on ingestion (#2155)
* Do not normalise component children on ingestion

* Don't normalise vnode children

* Component hyperscript tests: children aren't normalised

* test, not text

* Update change log: #2155 & #2064
2018-05-29 10:53:16 +01:00
Pierre-Yves Gérardy
878e4958dc tests for #2132 2018-04-23 13:52:03 +02:00
Pierre-Yves Gérardy
dd6ceca31d tests for #2128 2018-04-23 13:52:03 +02:00
Pierre-Yves Gérardy
203df39c30 Remove the DOM nodes recycling pool (fix #1653, fix #2023) 2018-04-16 09:45:45 +02:00
Pierre-Yves Gérardy
ad46a21a7d [render] add support for SVG in m.trust() strings 2018-03-06 01:12:32 +01:00
Fabiano Taioli
83884bdc90 element value is not cleared when value valor change to undefined 2018-02-09 00:47:59 +01:00
Pierre-Yves Gérardy
9f09ac069c Address #2021 review comments 2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
fc0240da0f Tests for #1990, #1991 and #2003 2017-12-04 14:38:39 +01:00
Pierre-Yves Gérardy
8950760e85 render: extract pool addtition logic, don't run onremove on nodes that move from pool to pool (fix #1990) 2017-12-04 14:38:39 +01:00
Ilya Sarantsev
0986140ed5 Handle shared attributes object in hyperscript (#1941) 2017-11-29 16:01:33 +01:00
Pierre-Yves Gérardy
acee3d5ecc Add tests for issue 1921 (onremove fires on childrent that don't end up in the instance) 2017-11-29 15:55:56 +01:00
Mateusz Jaworski
4aac74eff3 fix: Allow for changing focus in lifecycle hooks (#1988) 2017-11-29 14:07:11 +01:00
robinchew
db2a12dec9 Trying to fix #1916 (#1918)
* Trying to fix #1916

* Remove test for rendering select options. Add back after resolving issue #1978.

* Add #1916 fix to change log.

* Revert "Remove test for rendering select options. Add back after resolving issue #1978."

This reverts commit d4c1be7c2319adf744f78ca787485f52be869208.

* Comment on why failing test for #1916 is commented out.
2017-10-31 20:37:51 +01:00
valtron
622e009811 recycling => shouldRecycle, Fix #1992 (#1993)
* Fix #1992

* doc in changelog

* add test for #1992
2017-10-16 08:38:44 +02:00
Mateusz Jaworski
8b56c70911 fix: Allow for changing focus in lifecycle hooks (#1988) 2017-10-13 22:31:03 -07:00
Isiah Meadows
ae27c0ff18 Merge pull request #1977 from isiahmeadows/remove-legacy-state
Remove support for `vnode.state = ...`
2017-10-04 18:00:16 -04:00
Isiah Meadows
19d2ba316c Remove support for vnode.state = ...
- Remove docs for it
- Remove tests for it
- Add runtime check for unexpected reassignment, since we can't freeze
  the property (we internally have to be able to modify it)
2017-10-02 19:57:48 -04:00
Isiah Meadows
348bed0a7e Allow xlink:href to get removed, fix option.value in mock 2017-10-01 19:34:12 -04:00
Isiah Meadows
5209071011 Merge next into optimize-events 2017-08-31 05:43:39 -04:00
Isiah Meadows
2c92d84058 Add support for object event handlers (using handleEvent)
- `handleEvent` is checked on dispatch, like in the DOM.
- Had to reorder attribute key checking so `undefined` events still got
  removed.
- Drive-by: Optimize the initial attribute key checking a little.
- Drive-by: Fix changelog v2.0.0 link in TOC.
2017-08-25 06:06:46 -04:00
Ilya Sarantsev
9e6b175519 Handle shared attributes object in hyperscript (#1941) 2017-08-23 16:36:14 +03:00
spacejack
1e56f7763e More accurate style object diffs 2017-08-13 18:32:32 -04:00