{"id":41142618,"url":"https://github.com/jayfreestone/hey","last_synced_at":"2026-01-22T18:51:43.422Z","repository":{"id":46565607,"uuid":"77293598","full_name":"jayfreestone/hey","owner":"jayfreestone","description":"A vanilla-JS modal.","archived":false,"fork":false,"pushed_at":"2021-10-05T16:13:57.000Z","size":12634,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-02T08:29:30.932Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jayfreestone.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-24T17:28:38.000Z","updated_at":"2021-12-29T16:19:08.000Z","dependencies_parsed_at":"2022-08-27T18:41:41.886Z","dependency_job_id":null,"html_url":"https://github.com/jayfreestone/hey","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jayfreestone/hey","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayfreestone%2Fhey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayfreestone%2Fhey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayfreestone%2Fhey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayfreestone%2Fhey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jayfreestone","download_url":"https://codeload.github.com/jayfreestone/hey/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayfreestone%2Fhey/sbom","scorecard":{"id":508983,"data":{"date":"2025-08-11","repo":{"name":"github.com/jayfreestone/hey","commit":"d092d87fd72aaaf7daa07a7d8028ccd6662074c0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 1/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"114 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-pp7h-53gx-mx7r","Warn: Project is vulnerable to: GHSA-832h-xg76-4gv6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx","Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3fw8-66wf-pr7m","Warn: Project is vulnerable to: GHSA-6w62-83g6-rfhj","Warn: Project is vulnerable to: GHSA-rch9-xh7r-mqgw","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-9vvw-cc9w-f27h","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-qgfr-5hqp-vrw9","Warn: Project is vulnerable to: GHSA-hr2v-3952-633q","Warn: Project is vulnerable to: GHSA-r7jx-5m6m-cpg9","Warn: Project is vulnerable to: GHSA-j4f2-536g-r55m","Warn: Project is vulnerable to: GHSA-r7qp-cfhv-p84w","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-gpvr-g6gh-9mc2","Warn: Project is vulnerable to: GHSA-cm5g-3pgc-8rg4","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-qrmc-fj45-qfc2","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-9qj9-36jm-prpv","Warn: Project is vulnerable to: GHSA-8r6j-v8pm-fqw3","Warn: Project is vulnerable to: MAL-2023-462","Warn: Project is vulnerable to: GHSA-xf7w-r453-m56c","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-44pw-h2cw-w3vq","Warn: Project is vulnerable to: GHSA-jp4x-w63m-7wgm","Warn: Project is vulnerable to: GHSA-c429-5p7v-vgjp","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-6x33-pw7p-hmpq","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-4hpf-3wq7-5rpr","Warn: Project is vulnerable to: GHSA-f522-ffg8-j8r6","Warn: Project is vulnerable to: GHSA-7r28-3m3f-r2pr","Warn: Project is vulnerable to: GHSA-r8j5-h5cx-65gg","Warn: Project is vulnerable to: GHSA-p9w8-2mpq-49h9","Warn: Project is vulnerable to: GHSA-2pr6-76vf-7546","Warn: Project is vulnerable to: GHSA-8j8c-7jfh-h6hx","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-282f-qqgm-c34q","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-fvqr-27wr-82fm","Warn: Project is vulnerable to: GHSA-4xc9-xhrj-v574","Warn: Project is vulnerable to: GHSA-x5rq-j2xg-h7qm","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-5947-m4fg-xhqg","Warn: Project is vulnerable to: GHSA-779f-wgxg-qr8f","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-wrvr-8mpx-r7pp","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-w9mr-4mfr-499f","Warn: Project is vulnerable to: GHSA-9v62-24cr-58cx","Warn: Project is vulnerable to: GHSA-r8f7-9pfq-mjmv","Warn: Project is vulnerable to: GHSA-cwx2-736x-mf6w","Warn: Project is vulnerable to: GHSA-v39p-96qg-c8rf","Warn: Project is vulnerable to: GHSA-8v63-cqqc-6r2c","Warn: Project is vulnerable to: GHSA-q75g-2496-mxpp","Warn: Project is vulnerable to: GHSA-6fx8-h7jm-663j","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-f9cm-p3w6-xvr3","Warn: Project is vulnerable to: GHSA-jjv7-qpx3-h62q","Warn: Project is vulnerable to: GHSA-gqgv-6jq5-jjj9","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-6g33-f262-xjp4","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-44c6-4v22-4mhx","Warn: Project is vulnerable to: GHSA-4x5v-gmq8-25ch","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-fxwf-4rqh-v8g3","Warn: Project is vulnerable to: GHSA-25hc-qcg6-38wj","Warn: Project is vulnerable to: GHSA-xfhh-g9f5-x4m4","Warn: Project is vulnerable to: GHSA-qm95-pgcg-qqfq","Warn: Project is vulnerable to: GHSA-cqmj-92xf-r6r9","Warn: Project is vulnerable to: GHSA-2m39-62fm-q8r3","Warn: Project is vulnerable to: GHSA-mf6x-7mm4-x2g7","Warn: Project is vulnerable to: GHSA-j44m-qm6p-hp7m","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-29xr-v42j-r956","Warn: Project is vulnerable to: GHSA-g7q5-pjjr-gqvp","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-884p-74jh-xrg2","Warn: Project is vulnerable to: GHSA-j7fq-p9q7-5wfv","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-xc7v-wxcw-j472","Warn: Project is vulnerable to: GHSA-662x-fhqg-9p8v","Warn: Project is vulnerable to: GHSA-394c-5j6w-4xmx","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-cf4h-3jhx-xvhq","Warn: Project is vulnerable to: GHSA-v4rh-8p82-6h5w","Warn: Project is vulnerable to: GHSA-5v72-xg48-5rpm","Warn: Project is vulnerable to: GHSA-72mh-269x-7mh5","Warn: Project is vulnerable to: GHSA-h4j5-c7cj-74xg","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T00:02:07.375Z","repository_id":46565607,"created_at":"2025-08-20T00:02:07.375Z","updated_at":"2025-08-20T00:02:07.375Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28668538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T17:07:18.858Z","status":"ssl_error","status_checked_at":"2026-01-22T17:05:02.040Z","response_time":144,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-22T18:51:43.341Z","updated_at":"2026-01-22T18:51:43.412Z","avatar_url":"https://github.com/jayfreestone.png","language":"JavaScript","readme":"# :wave: hey.js [DEPRECATED]\n\nhey.js is a simple dependency-free modal written in JavaScript.\n\n## Why should I use hey.js\n\n- Accessible (TODO).\n- Lightweight.\n- Flexible - works with inline content, dynamic content or AJAX'd content (TODO).\n- No jQuery dependency.\n- Great default styles that gracefully take care of scrollbar shifting and overflow issues.\n\n### Go on...\n\nThere are loads of great modals out there, such as [Modaal](http://www.humaan.com/modaal/).\n\nHowever most don't address the little UI annoyances that plague modals, such as the 'scrollbar shift' when applying `overflow: hidden` to body.\n\n### Browser Support\n\nSupports all recent versions of major browsers  out of the box (IE10 and up). IE9 support requires a [classList](https://github.com/eligrey/classList.js/) polyfill.\n\n## Installation\n\nInstall hey via NPM/Yarn:\n\n\t// Yarn\n    yarn add hey.js\n\t// NPM\n\tnpm install --save hey.js\n\nYou can include hey via a module bundler, such as [Webpack](https://webpack.github.io/):\n\n\t// JS\n\timport hey from 'hey.js';\n\nOr just include the script directly:\n\n\t\u003c!-- HTML --\u003e\n    \u003cscript src=\"myPath/js/heyModal.min.js\"\u003e\u003c/script\u003e\n\nYou'll also need to include the base stylesheet, and optionally a theme. You can import them as part of your build process:\n\n\t// SASS\n\t@import '../../node_modules/hey.js/dist/css/hey.css';\n\t@import '../../node_modules/hey.js/dist/css/hey-minimal.css';\n\nOr include them directly:\n\n\t\u003c!-- HTML --\u003e\n    \u003clink rel=\"stylesheet\" href=\"myPath/css/hey.css\"\u003e\n    \u003clink rel=\"stylesheet\" href=\"myPath/css/hey-minimal.css\"\u003e\n\n## How to use\n\nAll below methods require manual initialization by passing in the trigger (link/button), like so:\n\n    heyModal(document.querySelector('.modal-trigger'))\n    \nIf you have multiple modals with the same class you'll need to loop over and initialize each:\n\n    var myModals = document.querySelectorAll('.js-modal-trigger');\n\n    for (var i = 0; i \u003c myModals.length; i++) {\n        heyModal(myModals[i]);\n    }\n\n### Inline\n`hey.js` generates the markup it needs to create accessible modals, without you having to worry about copying and pasting markup.\n\nAs long as you use the appropriate `data` attributes, `hey.js` will dynamically create a modal with your in-page content, then remove the old version from the DOM.\n\nYou can include an 'inline' modal on the page like so:\n\n    \u003c!-- This is the 'link' that will open the modal --\u003e\n    \u003ca class=\"great-modal-trigger\" data-hey=\".great-modal\"\u003eModal link\u003c/a\u003e\n    \n    \u003c!-- This is the modal itself --\u003e\n    \u003cdiv class=\"great-modal\" style=\"display: none;\"\u003e\n        \u003ch3 data-hey-title\u003eModal title\u003c/h3\u003e\n        \u003cdiv data-hey-body\u003eThis is a modal and the contents\u003c/div\u003e\n        \u003cdiv data-hey-footer\u003e\u003c/div\u003e\n    \u003c/div\u003e\n    \nThen initialise it like so:\n\n    const myModal = heyModal(document.querySelector('.great-modal-trigger'));\n\n\n### Confirm prompt\nYou may want to use `hey.js` as a confirm prompt for a link - for instance, clicking on link that performs a dangerous action:\n\n    \u003ca href=\"/delete-post\"\u003eDelete\u003c/a\u003e\n\nYou can do this by creating an inline modal and using the data-hey attribute:\n\n    \u003c!-- The modal trigger --\u003e\n    \u003ca\n        data-hey=\"#great-modal\"\n        href=\"/delete\"\n        class=\"modal-trigger button\"\n    \u003e\n        Delete post\n    \u003c/a\u003e\n    \n    \u003c!-- The modal target --\u003e\n    \u003cdiv id=\"great-modal\" style=\"display: none;\"\u003e\n        \u003ch3 data-hey-title\u003eDelete post\u003c/h3\u003e\n        \u003cdiv data-hey-body\u003e\n            \u003cp\u003eThis is a modal and the contents\u003c/p\u003e\n            \u003cp\u003eLorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sagittis metus est, eu aliquet arcu\n                interdum eu. Mauris in tortor semper, pulvinar nunc et, tincidunt lectus. Donec erat ex, ultricies sit\u003c/p\u003e\n                \n            \u003c!-- Manually include a confirm link in the body --\u003e \n            \u003ca href=\"/delete\"\u003eDelete\u003c/a\u003e\n            \n            \u003c!-- Include a close button by adding the 'data-hey-close' attribute --\u003e\n            \u003cbutton data-hey-close\u003eCancel\u003c/button\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\nHowever, `hey.js` also provides a simpler alternative. You can omit the modal target altogether, and have `hey.js` generate it:\n\n    \u003c!-- The modal trigger, no need to provide a target --\u003e\n    \u003ca\n        data-hey-confirm\n        data-hey-title=\"Confirm\"\n        data-hey-body=\"Are you sure?\"\n        href=\"/delete\"\n        class=\"modal-trigger button\"\n    \u003e\n        Delete post\n    \u003c/a\u003e\n\nSimply add the `data-hey-confirm` attribute along with `data-hey-title` and `data-hey-body`. The confirm link will automatically be the target link.\n\nThis works well when there are a lot of links on the page that would need modals, and where it is impractical to produce the markup manually. The downside is that this approach is less flexible - there is no way to include HTML in the body of the modal.\n\n#### Modal link attributes:\n\nIf you're using an inline modal, only the `data-hey` attribute is required.\n\nIf you're generating a confirm modal, the `data-hey-title`, `data-hey-body` and `data-hey-confirm` attributes are all required.\n\n| Attribute          | Description                                                     |\n|--------------------|-----------------------------------------------------------------|\n| data-hey           | The class/id of the modal target (optional).                    |\n| data-hey-title     | The title of the modal (optional).                              |\n| data-hey-body      | The main content of the modal (optional).                       |\n| data-hey-confirm   | Generates confirm yes/no actions based on a link (optional).    |\n\n#### Modal attributes\n\n| Attribute       | Description                                                         |\n|-----------------|---------------------------------------------------------------------|\n| data-hey-title  | The title of the modal, appearing in the header.                    |\n| data-hey-body   | The main content/body of the modal.                                 |\n| data-hey-close  | If this element is clicked it will close the modal (optional).      |\n\n## Methods\nYour `hey.js` modal has several methods once initialised (like so):\n\n    const myModal = heyModal(document.querySelector('.great-modal-trigger'));\n\n### Open\nOpens the modal manually:\n    \n    myModal.open();\n\n### Close\nCloses the modal manually:\n    \n    myModal.close();\n    \n### Destroy (TODO)\nRemoves the modal and cleans up:\n    \n    myModal.destroy();\n    \n## Events\n`hey.js` fires two custom events (`heyOpen` and `heyClose`) on the main modal element. \n\nYou can either add an event listener to the generated wrapper, e.g.:\n\n    myModal.comp.wrapper.addEventListener('heyOpen', () =\u003e {\n        console.log('open!');\n    });\n\nOr you can use the included `.on` helper method, which defaults to the `wrapper`:\n\n    myModal.on('heyOpen', () =\u003e {\n        console.log('opening!');\n    });\n\n## Theming\n\nThe essential 'base' styles are in `hey.css`. These should be included first and overridden as necessary.\n\nIt's worth noting that the modal close event, which is responsible for firing events and mitigating shifting scrollbars, happens when the transition is finished on the `.modal` element. This means if the dialog has a separate transition, it should finish *before* the main modal's transition ends. If this isn't the case, the dialog will animate during (or after the scrollbar change), which will cause an unnecessary shift.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjayfreestone%2Fhey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjayfreestone%2Fhey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjayfreestone%2Fhey/lists"}