{"id":15017843,"url":"https://github.com/nextcloud-libraries/nextcloud-dialogs","last_synced_at":"2026-01-15T22:20:34.627Z","repository":{"id":35142751,"uuid":"192550021","full_name":"nextcloud-libraries/nextcloud-dialogs","owner":"nextcloud-libraries","description":"Nextcloud dialog helpers https://npmjs.org/@nextcloud/dialogs","archived":false,"fork":false,"pushed_at":"2026-01-12T04:51:20.000Z","size":18869,"stargazers_count":18,"open_issues_count":23,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-13T03:35:45.389Z","etag":null,"topics":["dialogs","javascript-library","nextcloud","nextcloud-plugin"],"latest_commit_sha":null,"homepage":"https://nextcloud-libraries.github.io/nextcloud-dialogs/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nextcloud-libraries.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-06-18T13:53:20.000Z","updated_at":"2026-01-12T04:51:23.000Z","dependencies_parsed_at":"2025-11-28T02:03:28.599Z","dependency_job_id":null,"html_url":"https://github.com/nextcloud-libraries/nextcloud-dialogs","commit_stats":{"total_commits":1487,"total_committers":29,"mean_commits":"51.275862068965516","dds":0.6086079354404842,"last_synced_commit":"37bff0236ad225fb8e4efb16b83fe756e12e0423"},"previous_names":["nextcloud-libraries/nextcloud-dialogs","nextcloud/nextcloud-dialogs"],"tags_count":85,"template":false,"template_full_name":null,"purl":"pkg:github/nextcloud-libraries/nextcloud-dialogs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud-libraries%2Fnextcloud-dialogs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud-libraries%2Fnextcloud-dialogs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud-libraries%2Fnextcloud-dialogs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud-libraries%2Fnextcloud-dialogs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nextcloud-libraries","download_url":"https://codeload.github.com/nextcloud-libraries/nextcloud-dialogs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextcloud-libraries%2Fnextcloud-dialogs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28472626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T22:13:38.078Z","status":"ssl_error","status_checked_at":"2026-01-15T22:12:11.737Z","response_time":62,"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":["dialogs","javascript-library","nextcloud","nextcloud-plugin"],"created_at":"2024-09-24T19:51:03.638Z","updated_at":"2026-01-15T22:20:34.622Z","avatar_url":"https://github.com/nextcloud-libraries.png","language":"TypeScript","readme":"\u003c!--\n  - SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n--\u003e\n# @nextcloud/dialogs\n\n[![REUSE status](https://api.reuse.software/badge/github.com/nextcloud-libraries/nextcloud-dialogs)](https://api.reuse.software/info/github.com/nextcloud-libraries/nextcloud-dialogs) [![npm](https://img.shields.io/npm/v/@nextcloud/dialogs?style=for-the-badge)](https://www.npmjs.com/package/@nextcloud/dialogs)\n\nNextcloud dialog helpers\n\n## Installation\n\n```\nnpm i -S @nextcloud/dialogs\n```\n\n### Version compatibility\n\n| `@nextcloud/dialogs` | maintained | `@nextcloud/vue` dependency |   Nextcloud server version |\n|----------------------|------------|-----------------------------|----------------------------|\n|                 7.x  |         ✅ |                9.x (Vue 3)¹ | Nextcloud 31 and newer     |\n|                 6.x  |         ✅ |                        8.x  | Nextcloud 29, 30, 31, 32   |\n|                 5.x  |         ❌ |                        8.x  | Nextcloud 28, 29, 30       |\n|                 4.2+ |         ❌ |                       7.12² | Nextcloud 25, 26, 27, 27.1 |\n|                 4.1  |         ❌ |                       *any* | *any up to Nextcloud 30*   |\n\n¹: In version 7.x the `@nextcloud/vue` dependency is moved to `dependencies` so you can also use this library\nwith an old version of `@nextcloud/vue` in your app dependencies if your app still uses Vue 2.\nNote that this might increase the bundled app size. \nIf your app also already uses `@nextcloud/vue` version 9.x and Vue 3 then the bundle size will not increase.\n\n²: Since version 4.2 this package provides a Vue.js based file picker, so this package depends on `@nextcloud/vue`.\n\n## Usage\n\n### General\nThe styles for the components (Toasts and FilePicker) are provided in the `style.css` file.\nSo make sure that the  `@nextcloud/dialogs/style.css` file is included in your app to make sure that the toasts or FilePicker have a proper styling applied.\n\n```js\nimport '@nextcloud/dialogs/style.css'\n```\n\n### Toasts\n\n```js\nimport { showMessage, showInfo, showSuccess, showWarning, showError } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/style.css'\n```\n\nIf you using `@nextcloud/dialogs \u003e= 4.0` you don't need any svg or scss loader in you projects anymore.\n\nThere are different toast styles available, that are exposed in separate functions:\n\n```\nshowMessage('Message without a specific styling')\nshowInfo('Information')\nshowSuccess('Success')\nshowWarning('Warning')\nshowError('Error')\n```\n\nThere are several options that can be passed in as a second parameter, like the timeout of a toast:\n\n```\nshowError('This is an error shown without a timeout', { timeout: -1 })\n```\n\nA full list of available options can be found in the [documentation](https://nextcloud-libraries.github.io/nextcloud-dialogs/).\n\n### FilePicker\nTo spawn the FilePicker provided by the library you have to use the *FilePickerBuilder*.\nThe *FilePickerBuilder* is included in the main entry point of this library, so you can use it like this:\n\n```js\nimport { getFilePickerBuilder } from '@nextcloud/dialogs'\nconst filepicker = getFilePickerBuilder('Pick plain text files')\n    .addMimeTypeFilter('text/plain')\n    .addButton({\n        label: 'Pick',\n        callback: (nodes) =\u003e console.log('Picked', nodes),\n    })\n    .build()\n\n// You get the file nodes by the button callback, but also the pick yields the paths of the picked files\nconst paths = await filepicker.pick()\n```\n\n## Development\n### Testing\nFor testing all components provide `data-testid` attributes as selectors, so the tests are independent from code or styling changes.\n\n### Test selectors\n`data-testid`         | Intended purpose\n----------------------|-----------------\n`select-all-checkbox` | The select all checkbox of the file list\n`file-list-row`       | A row in the file list (`tr`), can be identified by `data-filename`\n`row-checkbox`        | Checkbox for selecting a row\n`row-name`            | Name of the row / file\n\n### 📤 Releasing a new version\n\n- Pull the latest changes from `main` or `stableX`\n- Checkout a new branch with the tag name (e.g `v4.0.1`): `git checkout -b v\u003cversion\u003e`\n- Run `npm version patch --no-git-tag-version` (`npm version minor --no-git-tag-version` if minor).\n  This will return a new version name, make sure it matches what you expect\n- Generate the changelog content from the [release](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases) page.\n  Create a draft release, select the previous tag, click `generate` then paste the content to the `CHANGELOG.md` file\n  1. adjust the links to the merged pull requests and authors so that the changelog also works outside of GitHub\n     by running `npm run prerelease:format-changelog`.\n     This will apply this regex: `by @([^ ]+) in ((https://github.com/)nextcloud-libraries/nextcloud-dialogs/pull/(\\d+))`\n     Which this as the replacement: `[\\#$4]($2) \\([$1]($3$1)\\)`\n  2. use the the version as tag AND title (e.g `v4.0.1`)\n  3. add the changelog content as description\n- Commit, push and create PR\n- Get your PR reviewed and merged\n- Create a milestone with the follow-up version at https://github.com/nextcloud-libraries/nextcloud-dialogs/milestones\n- Move all open tickets and PRs to the follow-up\n- Close the milestone of the version you release\n- Publish the previously drafted release on GitHub\n  ![image](https://user-images.githubusercontent.com/14975046/124442568-2a952500-dd7d-11eb-82a2-402f9170231a.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextcloud-libraries%2Fnextcloud-dialogs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnextcloud-libraries%2Fnextcloud-dialogs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextcloud-libraries%2Fnextcloud-dialogs/lists"}