PolymerElements / iron-autogrow-textarea

Textarea that grows in height as more lines of input are entered
https://webcomponents.org/element/PolymerElements/iron-autogrow-textarea
19 stars 48 forks source link

Inconsistent Ctrl-Z Behavior in Chrome #86

Open wyattallen opened 8 years ago

wyattallen commented 8 years ago

Inconsistent Ctrl-Z Behavior in Chrome

Expected outcome

When typing out text in an iron-autogrow-textarea Ctrl-Z command removes batches of text content per keypress. (Not individual characters.)

Actual outcome

Using Ctrl-Z in iron-autogrow-textarea elements inconsistently only undoes one character at a time (particularly when there is more than one line of content).

Live Demo

The demo page for this element

Steps to reproduce

  1. Focus on the first textarea of the page (the one that is a single line initially).
  2. Type a few words (but not enough to wrap to a new line).
  3. Type Ctrl-Z to undo.
  4. Note that the content is undone in batches or entirely.
  5. Type several more words (enough to cause the textarea to grow to 2 or more lines).
  6. Type Ctrl-Z to undo repeatedly.
  7. Note that the characters are undone individually until there is only one line remaining (in which case it is undone in a batch again).

    Browsers Affected

The behavior was observed only in Chrome.

andybons commented 8 years ago

@notwaldorf @cdata

andybons commented 7 years ago

Ping 🔔

notwaldorf commented 7 years ago

I haven't looked at this -- if anyone has any ideas why this is happening, I'd love to hear them :)

wyattallen commented 7 years ago

I'm still able to reproduce this bug.

If additional context is helpful, the issue was originally filed regarding our use of iron-autogrow-textarea in PolyGerrit. It's still reproducible there also.

kaspnilsson commented 7 years ago

Pinging again on this... The issue exists in the Polymer2 component as well.

beckysiegel commented 7 years ago

@notwaldorf Played around with this a little bit, and narrowed down the issue. When I comment out the following line, command-z works as expected

https://github.com/PolymerElements/iron-autogrow-textarea/blob/master/iron-autogrow-textarea.html#L343

Still not sure why this is. Repro-d with the iron-autogrow-textarea demo.

beckysiegel commented 7 years ago

This doesn't appear to be a polymer bug, but somehow there's a difference when the event handler manipulates any innerHTML attribute:

See non-polymer repro http://jsbin.com/wogided/1/edit?html,css,output Maybe a chrome bug?

I even tried to re-write the innerHTML with node creation/removal/replacement. removing/replacing nodes has the same behavior. Merely creating/appending does not. http://jsbin.com/roqaxeh/edit?html,output

beckysiegel commented 7 years ago

Filed https://bugs.chromium.org/p/chromium/issues/detail?id=746483

notwaldorf commented 7 years ago

Omg @beckysiegel, this was AMAZING sherlocking! Thanks so much!!!

beckysiegel commented 7 years ago

👍