Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix vertical position of modal when ".reveal-modal" has % "top" property #1

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

kristinalim
Copy link

Fix vertical position of modal when .reveal-modal has % "top" property

(I actually submitted yalabot#319 too, but I'm not sure if the repository is still being maintained. @cwadrupldijjit Do you plan to maintain this fork? We would love to use it if yes.)

Description

Currently, if the "reveal-modal" CSS class is assigned an n% "top" CSS property, the modal would be positioned n px from the top of the viewport.

The modal uses the following JS:

window.getComputedStyle(element).top

The library inserts an invisible faux modal, computes its top position using above, removes the faux modal, and then inserts the real modal which applies the top position computed earlier.

However, an absolute-positioned element with % "top" property that is hidden through display: none; does not evaluate the JS to the same value as when it is visible. The computed "top" value for the hidden element is still the % value, while it is the computed px value if the element is visible or when using visibility: hidden. This is demonstrated in this Plunker.

$modalStack.open expects the expression above to return the px value, so a 10% value gets treated as 10px. This is not the desired behavior, and a big limitation now that people use a big range of screen sizes.

The faux modal is temporarily inserted with z-index: -1 (JS), display: none (CSS), and visibility: hidden (CSS).

As a workaround, this commit applies display: block (JS) to the faux modal.

Release notes

  • Fix vertical position of modal when ".reveal-modal" has % "top" property

Changelog Category: Bug Fixes

An absolute-positioned element with % "top" property that is hidden
through "display: none;" does not evaluate to the same value as a
visible one for the following JS:

    window.getComputedStyle(element).top

The computed "top" value for the hidden element is still the % value,
while it is the computed px value if the element is visible or when
using "visibility: hidden;". This is demonstrated in the following
Plunker:

    http://run.plnkr.co/preview/cjkut64np00072y6ccj3tmqem/

$modalStack.open expects the expression above to return the px value,
so a "10%" value gets treated as "10px". This is not the desired
behavior, and a big limitation now that people use a big range of screen
sizes.

The faux modal is temporarily inserted with "z-index: -1" (JS),
"display: none" (CSS), and "visibility: hidden;" (CSS).

As a workaround, this commit assigns "display: block" (JS) to the faux
modal.
kristinalim added a commit to kristinalim/openfoodnetwork that referenced this pull request Aug 26, 2018
There is a bug in the handling of % values for the "top" CSS property of
the modals. See details here:

openfoodfoundation/angular-foundation#1

A PR to the original repository has also been submitted, but the project
doesn't seem to be active anymore:

yalabot/angular-foundation#319

And to another fork of the repository:

cwadrupldijjit/angular-foundation#1

The bug was causing the 10% "top" CSS property for the modal to be
treated as 10px.
@cwadrupldijjit
Copy link
Owner

I actually hadn't been planning on maintaining it too much, but it was just those two things that was keeping it from being able to be used with newer versions of AngularJS and jQuery.

I'm not altogether opposed to maintaining it if it's needed. From the look of it, you may already have something similar up on the main repo with it, and people have responded. I'm assuming that you'd roll with that if everything works out fine, though.

Let me know what you plan on doing so that I can respond accordingly.

kristinalim added a commit to kristinalim/openfoodnetwork that referenced this pull request Sep 3, 2018
There is a bug in the handling of % values for the "top" CSS property of
the modals. See details here:

openfoodfoundation/angular-foundation#1

A PR to the original repository has also been submitted, but the project
doesn't seem to be active anymore:

yalabot/angular-foundation#319

And to another fork of the repository:

cwadrupldijjit/angular-foundation#1

The bug was causing the 10% "top" CSS property for the modal to be
treated as 10px.
kristinalim added a commit to kristinalim/openfoodnetwork that referenced this pull request Sep 5, 2018
There is a bug in the handling of % values for the "top" CSS property of
the modals. See details here:

openfoodfoundation/angular-foundation#1

A PR to the original repository has also been submitted, but the project
doesn't seem to be active anymore:

yalabot/angular-foundation#319

And to another fork of the repository:

cwadrupldijjit/angular-foundation#1

The bug was causing the 10% "top" CSS property for the modal to be
treated as 10px.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants