0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-11-30 12:24:19 +01:00
Bootstrap/docs/components
Patrick H. Lauke 6d64afe508 Replace dropdown backdrop hack with cleaner JS-only hack
* Replace backdrop with simple noop mouse listener

As discussed in https://github.com/twbs/bootstrap/pull/22422 the current
approach of injecting a backdrop (to work around iOS' broken event
delegation for the `click` event) has annoying consequences on
touch-enabled laptop/desktop devices.
Instead of a backdrop `<div>`, here we simply add extra empty/noop
mouse listeners to the immediate children of `<body>` (and remove
them when the dropdown is closed) in order to force iOS to properly
bubble a `click` resulting from a tap (essentially, method 2 from
https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html)
This is sufficient (except in rare cases where the user does manage to tap
on the body itself, rather than any child elements of body - which is not
very likely in an iOS phone/tablet scenario for most layouts) to get iOS to
get a grip and do the correct event bubbling/delegation, meaning the regular
"click" event will bubble back to the `<body>` when tapping outside of the dropdown,
and the dropdown will close properly (just like it already does, even without
this fix, in non-iOS touchscreen devices/browsers, like Chrome/Android and
Windows on a touch laptop).
This approach, though a bit hacky, has no impact on the DOM structure, and
has no unforeseen side effects on touch-enabled laptops/desktops. And crucially,
it works just fine in iOS.

* Remove dropdown backdrop styles

* Update doc for dropdowns and touch-enabled devices
2017-04-14 09:19:00 +01:00
..
alerts.md Add alert divider (<hr>) example in docs (#21673) 2017-01-15 21:33:32 -08:00
badge.md Fixed spelling error. (#22102) 2017-03-02 16:32:21 -08:00
breadcrumb.md v4: Social meta tags (#20825) 2016-10-02 18:19:47 -07:00
button-group.md Add explicit aria-label to placeholder-only inputs 2017-03-30 23:31:14 +01:00
buttons.md use secondary buttons instead of primary ones for a bit better example of styles 2017-02-12 17:15:16 -08:00
card.md Card image fixes (#22288) 2017-03-27 22:52:24 -07:00
carousel.md Remove inappropriate role="listbox" from carousels 2017-04-11 11:12:30 +01:00
collapse.md Fix collapse.js aria-expanded behavior 2017-04-10 14:51:22 +01:00
dropdowns.md Replace dropdown backdrop hack with cleaner JS-only hack 2017-04-14 09:19:00 +01:00
forms.md fix broken fieldset grid, workaround for flexbug 9 2017-03-26 13:23:49 -07:00
input-group.md Add explicit aria-label to placeholder-only inputs 2017-03-30 23:31:14 +01:00
jumbotron.md Make spacer utils responsive (#20926) 2016-10-31 21:13:05 -07:00
list-group.md Docs and CSS updates for #21807 (#22336) 2017-04-08 13:58:20 -07:00
modal.md Fix JS components console error "Error: <Component> is transitioning" 2017-03-28 23:43:15 +02:00
navbar.md Merge branch 'v4-dev' into v4-docs-button-group-a11y-patch1 2017-04-09 13:25:47 +01:00
navs.md Remove incorrect role="tabpanel" from navs docs 2017-04-09 21:15:05 +01:00
pagination.md Update broken links. 2017-01-05 11:17:22 +11:00
popovers.md Documentation - Add inserted event for Tooltip and Popover 2017-04-07 14:23:26 +02:00
progress.md Fix progress doc markup 2017-01-04 11:27:45 -08:00
scrollspy.md Docs and CSS updates for #21807 (#22336) 2017-04-08 13:58:20 -07:00
tooltips.md Documentation - Add inserted event for Tooltip and Popover 2017-04-07 14:23:26 +02:00