feat(components): add zero-JS ease-modal component (#251)#571
Open
bhavyabhardwaj001 wants to merge 1 commit into
Open
feat(components): add zero-JS ease-modal component (#251)#571bhavyabhardwaj001 wants to merge 1 commit into
bhavyabhardwaj001 wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request Description
Resolves #251.
This submission introduces a highly-performant, zero-JavaScript
ease-modalcomponent. It natively handles open states, close states, and backdrop-click-to-close entirely using the browser's URL hash and the CSS:targetpseudo-class.Type of Change
Submission Checklist
submissions/examples/your-feature-name/demo.html— self-contained, opens in browser with no serverstyle.css— raw CSS for the proposed featureREADME.md— what it does, how to use it, why it fits EaseMotion CSScore/components/Feature Description
What does this add?
A pristine CSS-only modal leveraging the
:targetselector.How does a developer use it?
Give the
.ease-modal-overlaya unique ID, and use an<a>tag pointing to that ID to open it.Why does it fit EaseMotion CSS?
Modals are typically one of the most JS-heavy components in UI libraries, requiring event listeners for backdrop clicks and close buttons. This CSS-only implementation drastically reduces bundle size and JS execution time, perfectly aligning with the framework's CSS-first philosophy. Furthermore, it explicitly handles
prefers-reduced-motionby gracefully falling back to a pure opacity fade rather than sliding/scaling in.Demo
demo.htmlworks by opening directly in a browser)Browser Testing
Notes for Maintainer
I solved the "backdrop click to close" requirement without Javascript by placing a full-screen, invisible
<a>tag (.ease-modal-backdrop-close) directly behind the.ease-modal-boxthat points tohref="#". When clicked, it clears the target and naturally closes the modal!