{"id":20328885,"url":"https://github.com/kaliber5/ember-sticky-element","last_synced_at":"2025-08-20T22:31:45.668Z","repository":{"id":15387907,"uuid":"78044025","full_name":"kaliber5/ember-sticky-element","owner":"kaliber5","description":"An ember component that mimics the functionality of `position: sticky`","archived":false,"fork":false,"pushed_at":"2022-12-10T17:04:20.000Z","size":4127,"stargazers_count":51,"open_issues_count":30,"forks_count":25,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-20T12:52:16.684Z","etag":null,"topics":["ember","ember-addon"],"latest_commit_sha":null,"homepage":"https://kaliber5.github.io/ember-sticky-element/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaliber5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-04T19:01:19.000Z","updated_at":"2024-05-30T02:24:43.000Z","dependencies_parsed_at":"2023-01-13T18:24:02.901Z","dependency_job_id":null,"html_url":"https://github.com/kaliber5/ember-sticky-element","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/kaliber5/ember-sticky-element","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaliber5%2Fember-sticky-element","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaliber5%2Fember-sticky-element/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaliber5%2Fember-sticky-element/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaliber5%2Fember-sticky-element/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaliber5","download_url":"https://codeload.github.com/kaliber5/ember-sticky-element/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaliber5%2Fember-sticky-element/sbom","scorecard":{"id":548308,"data":{"date":"2025-08-11","repo":{"name":"github.com/kaliber5/ember-sticky-element","commit":"e8dbd7f5bc95f5bedb4f23e8ba7d40cd8d5721e1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.9,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/17 approved changesets -- score normalized to 1","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":"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":"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":"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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"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 26 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":"78 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-6chw-6frg-f759","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-whgm-jr23-g3j9","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-wxhq-pm8v-cw75","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-ff7x-qrg7-qggm","Warn: Project is vulnerable to: GHSA-j4f2-536g-r55m","Warn: Project is vulnerable to: GHSA-r7qp-cfhv-p84w","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-6x33-pw7p-hmpq","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-gxr4-xjj5-5px2","Warn: Project is vulnerable to: GHSA-jpcq-cgw6-v4j6","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-4xc9-xhrj-v574","Warn: Project is vulnerable to: GHSA-x5rq-j2xg-h7qm","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","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-h726-x36v-rx45","Warn: Project is vulnerable to: GHSA-6vfc-qv3f-vr6c","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","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-pc58-wgmc-hfjr","Warn: Project is vulnerable to: GHSA-vvv8-xw5f-3f88","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-6fx8-h7jm-663j","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-xfhp-gmh8-r8v2","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-4g88-fppr-53pp","Warn: Project is vulnerable to: GHSA-4jqc-8m5r-9rpr","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-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-cf4h-3jhx-xvhq","Warn: Project is vulnerable to: GHSA-g78m-2chm-r7qv","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-h6q6-9hqw-rwfv","Warn: Project is vulnerable to: GHSA-5fg8-2547-mr8q","Warn: Project is vulnerable to: GHSA-crh6-fp67-6883","Warn: Project is vulnerable to: GHSA-72mh-269x-7mh5","Warn: Project is vulnerable to: GHSA-h4j5-c7cj-74xg"],"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-20T10:06:22.256Z","repository_id":15387907,"created_at":"2025-08-20T10:06:22.256Z","updated_at":"2025-08-20T10:06:22.256Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271397955,"owners_count":24752640,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ember","ember-addon"],"created_at":"2024-11-14T20:08:22.576Z","updated_at":"2025-08-20T22:31:45.406Z","avatar_url":"https://github.com/kaliber5.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"ember-sticky-element\n==============================================================================\n\n[![Build Status](https://travis-ci.org/kaliber5/ember-sticky-element.svg?branch=master)](https://travis-ci.org/kaliber5/ember-sticky-element)\n[![Ember Observer Score](https://emberobserver.com/badges/ember-sticky-element.svg)](https://emberobserver.com/addons/ember-sticky-element)\n[![npm version](https://badge.fury.io/js/ember-sticky-element.svg)](https://badge.fury.io/js/ember-sticky-element)\n[![Greenkeeper badge](https://badges.greenkeeper.io/kaliber5/ember-sticky-element.svg)](https://greenkeeper.io/)\n\nThis Ember addon gives you the ability to make parts of your UI stick to the viewport when scrolling. \nIts semantics follow roughly the proposed [`position: sticky`](https://drafts.csswg.org/css-position/#sticky-pos) specs.\n\n**See the [Demo App](https://kaliber5.github.io/ember-sticky-element/) for some examples!**\n\n### Why should I use this\n\nThe mentioned CSS extension of `position: sticky` is still in a draft stage, and \n[not widely supported](http://caniuse.com/#feat=css-sticky) natively. While there are polyfills available, they lack\nsome features:\n* you cannot change the styling of your sticky element based on its state of being sticky or not\n* you cannot dynamically change the contents of the sticky element based on that state either\n\nWhile there a probably a few jQuery plugins around for the same purpose, they might not always play well with Ember. \n\nSo this addon adds a `sticky-element` component, that mimics the basic `position: sticky` behaviour.\nCurrently it only supports scrolling in the vertical direction, not horizontal stickiness yet. \n\nIt leverages [ember-in-viewport](https://github.com/DockYard/ember-in-viewport) under the hood for its efficient \nviewport detection techniques.\n\n\nCompatibility\n------------------------------------------------------------------------------\n\n* Ember.js v2.18 or above\n* Ember CLI v2.13 or above\n* Node.js v8 or above\n\n\nInstallation\n------------------------------------------------------------------------------\n\n```\nember install ember-sticky-element\n```\n\n\nUsage\n------------------------------------------------------------------------------\n\nJust wrap your content into the `sticky-element`:\n\n```hbs\n{{#sticky-element}}\n  \u003ch2\u003eSticky Element\u003c/h2\u003e\n{{/sticky-element}}\n```\n\nThis will make it flow with the other content when scrolling until it reaches the top of the viewport, at which point\nit will get sticky. This effectively makes it `position: fixed`. *(Unfortunately for now this will require you to allow\ninline styles if you use CSP!)*\n\n### Customization options\n\n#### Offsets\n\nThe behaviour of the component and its styling can be customized with the following options. Also see the [Demo App](https://kaliber5.github.io/ember-sticky-element/) for some examples.\n\n##### Top offset\n\nAdd the `top` property to specify an offset in pixels from the top of the viewport:\n\n```hbs\n{{#sticky-element top=50}}\n  \u003ch2\u003eSticky Element\u003c/h2\u003e\n{{/sticky-element}}\n```\n\n##### Bottom offset\n\nBy default the sticky element will not care about its parent enclosing element and just remain sticky to the top when \nscrolling the page all the way down. To make it also stick to the bottom of its parent (so it does not leave its parent's\nboundaries), just add the `bottom` property, with a value of 0 or some other offset:\n\n```hbs\n{{#sticky-element top=50 bottom=0}}\n  \u003ch2\u003eSticky Element\u003c/h2\u003e\n{{/sticky-element}}\n```\n\nMake sure that the parent element has some positioning applied, so at least `position: relative`, as sticking to the \nbottom is done by applying `position: absolute` to the sticky element!\n\n##### Disabling\n\nYou can set the `enabled` property to false to disable the sticky behavior:\n\n```hbs\n{{#sticky-element enabled=someBooleanProperty}}\n  \u003ch2\u003eSticky Element\u003c/h2\u003e\n{{/sticky-element}}\n```\n\n#### Styling\n\n##### CSS\n\nThe sticky element has a `containerClassName` property you can use for styling (by default `.sticky-element`). Furthermore additionals classes can be set:\nwhen being sticky:\n* `containerStickyClassName` (by default `.sticky-element--sticky`): when sticked either to the top or the bottom.\n* `containerStickyTopClassName` (by default `.sticky-element--sticky-top`): when sticked to the top.\n* `containerStickyBottomClassName` (by default `.sticky-element--sticky-bottom`): when sticked to the bottom.\n\n##### Content\n\nThe component yields a hash, that contains the following boolean properties based on its state:\n* `isSticky`\n* `isStickyTop`\n* `isStickyBottom`\n\nYou can use these to change the content of the sticky element based on its state:\n\n```hbs\n{{#sticky-element as |state|}}\n  \u003ch2\u003eSticky Element\u003c/h2\u003e\n  \u003cp\u003e{{#if state.isSticky}}Yeah, I am sticky!{{else}}I am just a normal element.{{/if}}\u003c/p\u003e\n{{/sticky-element}}\n```\n\n\nContributing\n------------------------------------------------------------------------------\n\nSee the [Contributing](CONTRIBUTING.md) guide for details.\n\n\nLicense\n------------------------------------------------------------------------------\n\nThis project is licensed under the [MIT License](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaliber5%2Fember-sticky-element","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaliber5%2Fember-sticky-element","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaliber5%2Fember-sticky-element/lists"}