{"id":14220305,"url":"https://github.com/failed-successfully/ngx-darkbox-gallery-library","last_synced_at":"2026-01-12T00:39:19.942Z","repository":{"id":37040540,"uuid":"342906148","full_name":"failed-successfully/ngx-darkbox-gallery-library","owner":"failed-successfully","description":"Darkbox Gallery is a highly configurable lightbox themed gallery library for Angular applications using the ivy engine (Angular 18+).","archived":false,"fork":false,"pushed_at":"2026-01-01T22:23:51.000Z","size":28092,"stargazers_count":5,"open_issues_count":21,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-07T09:13:05.224Z","etag":null,"topics":["angular","darkbox","gallery","lightbox","lightbox-gallery"],"latest_commit_sha":null,"homepage":"https://darkbox.click","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/failed-successfully.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-27T16:42:12.000Z","updated_at":"2025-12-01T15:13:50.000Z","dependencies_parsed_at":"2024-05-29T19:43:59.218Z","dependency_job_id":"a6cbf9fb-2126-40ca-a12c-710b8a5d137c","html_url":"https://github.com/failed-successfully/ngx-darkbox-gallery-library","commit_stats":{"total_commits":1127,"total_committers":7,"mean_commits":161.0,"dds":0.6060337178349601,"last_synced_commit":"c70f8d2c132a04765c230efed2282ca22142d07e"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/failed-successfully/ngx-darkbox-gallery-library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/failed-successfully%2Fngx-darkbox-gallery-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/failed-successfully%2Fngx-darkbox-gallery-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/failed-successfully%2Fngx-darkbox-gallery-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/failed-successfully%2Fngx-darkbox-gallery-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/failed-successfully","download_url":"https://codeload.github.com/failed-successfully/ngx-darkbox-gallery-library/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/failed-successfully%2Fngx-darkbox-gallery-library/sbom","scorecard":{"id":391483,"data":{"date":"2025-08-11","repo":{"name":"github.com/failed-successfully/ngx-darkbox-gallery-library","commit":"408bb076a68be41d2b6a1675edaa0204f44b4e5f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.9,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Code-Review","score":0,"reason":"Found 0/2 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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build-release.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/label-pr.yml:1","Warn: no topLevel permission defined: .github/workflows/node.js.yml:1","Warn: no topLevel permission defined: .github/workflows/npm-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-next.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/update-release-notes.yml:1","Info: no jobLevel write permissions found"],"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":"Pinned-Dependencies","score":10,"reason":"all dependencies are pinned","details":["Info:  21 out of  21 GitHub-owned GitHubAction dependencies pinned","Info:   3 out of   3 third-party GitHubAction dependencies pinned","Info:   4 out of   4 npmCommand dependencies pinned"],"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":"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:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE: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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (30) 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":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-xffm-g5w8-qvg7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"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-18T17:55:35.913Z","repository_id":37040540,"created_at":"2025-08-18T17:55:35.913Z","updated_at":"2025-08-18T17:55:35.913Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28329806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"ssl_error","status_checked_at":"2026-01-12T00:36:15.229Z","response_time":60,"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":["angular","darkbox","gallery","lightbox","lightbox-gallery"],"created_at":"2024-08-19T15:01:39.185Z","updated_at":"2026-01-12T00:39:19.925Z","avatar_url":"https://github.com/failed-successfully.png","language":"TypeScript","funding_links":[],"categories":["Third Party Components"],"sub_categories":["Carousels"],"readme":"# Darkbox Gallery\n\nDarkbox Gallery is a highly configurable lightbox themed gallery library for Angular applications using the ivy engine (Angular 18+).\n\n\u003chr\u003e\n\n[![NPM version](https://img.shields.io/npm/v/@failed-successfully/ngx-darkbox-gallery.svg?\u0026label=npm)](https://www.npmjs.com/package/@failed-successfully/ngx-darkbox-gallery) \n[![Downloads](https://img.shields.io/npm/dm/@failed-successfully/ngx-darkbox-gallery.svg)](https://www.npmjs.com/package/@failed-successfully/ngx-darkbox-gallery)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/failed-successfully/ngx-darkbox-gallery-library/pulls) \n\n![Darkbox logo](./src/assets/darkbox-icon128.png)\n\n## Why?\nThere are many, many lightbox themed gallery libraries out there for Angular. Some of them are fairly useable, but most lack a good configuration and adaptability. Therefore the philosophy of Darkbox Gallery (Darkbox for short) is to provide good configuration options so you do not need to write extra logic to adapt Darkbox to your needs. While doing so every configuration has useful defaults so the entry barrier for using Darkbox is as low as possible. So come to the dark side of galleries; we don't keep 🍪🍪.\n\n## What does it even look like?\nIf you are not sure what you can expect from Darkbox please have a look at the current version of our [live demo](https://darkbox.click/).\n\n## How?\n### Installation\nInstall npm package for Angular version 18+:\n\n```\nnpm i @failed-successfully/ngx-darkbox-gallery\n```\n\nSince Version 3 this library is provided as a standalone component.\nTo use it import the `NgxDarkboxGalleryComponent` into a component of your choice. In this example it is called AppComponent (`app.component.ts`)\n```ts\n...\nimport { NgxDarkboxGalleryComponent } from '@failed-successfully/ngx-darkbox-gallery';\n\n@Component({\n    selector: 'app-root',\n    templateUrl: './app.component.html',\n    styleUrls: ['./app.component.scss'],\n    imports: [NgxDarkboxGalleryComponent]\n})\nexport class AppComponent {\n    images: Image[] = [{\n        url: 'https://picsum.photos/seed/3000/2000',\n        thumbnailUrl: 'https://picsum.photos/300/200'\n  }];\n}\n```\n### Usage\nThe simplest way of using Darkbox is to include the component with its default configuration as shown below.\n\nInclusion in the desired `.html` file\n```ts\n\u003cdarkbox-gallery [images]=\"images\"/\u003e\n```\n\nFor an example of a more advanced Darkbox configuration have a look at [our examples](./docs/examples/advanced-configuration-example.md).\n\n### Darkbox inputs\n| Name                  | Type              | Required  | Description                         |\n|-----------------------|-------------------|-----------|-------------------------------------|\n| images                | [Image](#Image)[] | true      | List of images displayed in Darkbox |\n| configuration         | Configuration     | false     | see Advanced Configuration          |\n| loadMoreImagesEvents  | Observable\u003cvoid\u003e  | false     | Input to handle click events from the outside world |\n\n### Image\n| Name          | Type    | Required | Description                                                                   |\n|---------------|---------|----------|-------------------------------------------------------------------------------|\n| identifier    | string  | false    | An id to identify the image in events. This is not used by the library itself |\n| url           | string  | true     | URL of the full sized image                                                   |\n| thumbnailUrl  | string  | true     | URL of the thumbnail image                                                    |\n| caption       | string  | false    | A short caption that can be shown under the image in darkbox                 |\n| altText       | string  | false    | The alternative text shown when the image can not be loaded                   |\n\n### Advanced configuration\n\nPlease have a look at all available Darkbox configurations in our [complete configuration documentation](./docs/advanced-configuration.md).\n\n### Available events\nAlmost everything that happens in Darkbox triggers an event. Therefore it is easy for you to know what happened when. It is your choice to react to the provides event (e.g. using it to provide statistics). Currently Darkbox exposes the following events:\n\n| Name                | Type    | Description                                                                       |\n|---------------------|---------|-----------------------------------------------------------------------------------|\n| imageClicked        | Image   | Signals that a single image was clicked. The clicked images is being emitted      |\n| thumbnailLoaded     | Image   | Signals that a single thumbnail was loaded. The image containing the thumbnail is being emitted|\n| allThumbnailsLoaded | boolean | Signals that all thumbnails currently displayed have bean loaded                  |\n| allImagesInDom      | boolean | Signals that all images provided from the input are displayed in the DOM. This does not mean that all thumbnails/images are completely loaded|\n| darkboxClosed       | boolean | Signals that the lightbox/Darkbox was closed by the user                          |\n| darkboxNext         | boolean | Signals that the user clicked the next image button                               |\n| darkboxPrev         | boolean | Signals that the user clicked the previous image button                           |\n| darkboxImageLoaded  | Image   | Signals that the full sized images was loaded. The loaded images is being emitted |\n\n## Browser support\n| Browser | Supported versions                                  |\n|---------|-----------------------------------------------------|\n| Chrome  | latest                                              |\n| Firefox |\tlatest and extended support release (ESR)           |\n| Edge    |\t2 most recent major versions                        |\n| IE      | [No. It's dead, Jim.](https://youtu.be/dQw4w9WgXcQ) |\n| Safari  |\t2 most recent major versions                        |\n| iOS     |\t2 most recent major versions                        |\n\n## Found a bug 🐛/🐞?\nIf you find a bug in Darkbox please open an issue [here](https://github.com/failed-successfully/ngx-darkbox-gallery-library/issues/new) so we can fix it and make Darkbox better for you and everyone else.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffailed-successfully%2Fngx-darkbox-gallery-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffailed-successfully%2Fngx-darkbox-gallery-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffailed-successfully%2Fngx-darkbox-gallery-library/lists"}