{"id":13376221,"url":"https://github.com/vaban-ru/vue-bottom-sheet","last_synced_at":"2026-03-04T22:01:21.107Z","repository":{"id":40539255,"uuid":"330975159","full_name":"vaban-ru/vue-bottom-sheet","owner":"vaban-ru","description":"🔥 A nice clean and touch-friendly bottom sheet component based on Vue.js and Hammer.js for Vue 3","archived":false,"fork":false,"pushed_at":"2024-07-13T04:36:23.000Z","size":694,"stargazers_count":231,"open_issues_count":13,"forks_count":48,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-06T03:18:58.335Z","etag":null,"topics":["bottom-sheet","component","vue","vuejs"],"latest_commit_sha":null,"homepage":"https://bs.vaban.ru","language":"Vue","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/vaban-ru.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-19T12:38:38.000Z","updated_at":"2026-01-04T13:44:00.000Z","dependencies_parsed_at":"2024-01-02T23:29:33.606Z","dependency_job_id":"90860e51-5820-4724-a55f-4e6f4994b94b","html_url":"https://github.com/vaban-ru/vue-bottom-sheet","commit_stats":null,"previous_names":["webzlodimir/vue-bottom-sheet"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/vaban-ru/vue-bottom-sheet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaban-ru%2Fvue-bottom-sheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaban-ru%2Fvue-bottom-sheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaban-ru%2Fvue-bottom-sheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaban-ru%2Fvue-bottom-sheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vaban-ru","download_url":"https://codeload.github.com/vaban-ru/vue-bottom-sheet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaban-ru%2Fvue-bottom-sheet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30095690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T21:59:23.547Z","status":"ssl_error","status_checked_at":"2026-03-04T21:57:50.415Z","response_time":59,"last_error":"SSL_read: 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":["bottom-sheet","component","vue","vuejs"],"created_at":"2024-07-30T05:02:35.308Z","updated_at":"2026-03-04T22:01:21.046Z","avatar_url":"https://github.com/vaban-ru.png","language":"Vue","funding_links":[],"categories":["Components \u0026 Libraries"],"sub_categories":["UI Components"],"readme":"![Example](https://bs.vaban.ru/logo.jpg)\n\n# Vue Bottom Sheet \n![Size](https://img.shields.io/bundlephobia/minzip/@webzlodimir/vue-bottom-sheet)\n![Downloads](https://img.shields.io/npm/dt/@webzlodimir/vue-bottom-sheet)\n![Version](https://img.shields.io/npm/v/@webzlodimir/vue-bottom-sheet)\n\nA nice clean and touch-friendly bottom sheet component based on [Vue.js](https://vuejs.org/) and [hammer.js](https://hammerjs.github.io/) for Vue 3\n\n - [Vue 2 Version](https://github.com/vaban-ru/vue-bottom-sheet-vue2) \n - :clapper: [Demo](https://bs.vaban.ru/)\n\n## Installation\n\n### NPM\n\n```\nnpm install @webzlodimir/vue-bottom-sheet\n```\n\n### Yarn\n\n```\nyarn add @webzlodimir/vue-bottom-sheet\n```\n\n## Usage\n\n```vue\n\u003ctemplate\u003e\n  \u003cvue-bottom-sheet ref=\"myBottomSheet\"\u003e\n    \u003ch1\u003eLorem Ipsum\u003c/h1\u003e\n    \u003ch2\u003eWhat is Lorem Ipsum?\u003c/h2\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eLorem Ipsum\u003c/strong\u003e is simply dummy text\n    \u003c/p\u003e\n  \u003c/vue-bottom-sheet\u003e\n\u003c/template\u003e\n\n\u003cscript setup\u003e\nimport VueBottomSheet from \"@webzlodimir/vue-bottom-sheet\";\nimport  \"@webzlodimir/vue-bottom-sheet/dist/style.css\";\nimport { ref } from \"vue\";\n\nconst myBottomSheet = ref(null)\n\nconst open = () =\u003e {\n  myBottomSheet.value.open();\n}\n\nconst close = () =\u003e {\n  myBottomSheet.value.close();\n}\n\u003c/script\u003e\n```\n\n## Usage `setup` + TS\n\n```vue\n\u003ctemplate\u003e\n  \u003cvue-bottom-sheet ref=\"myBottomSheet\"\u003e\n    \u003ch1\u003eLorem Ipsum\u003c/h1\u003e\n    \u003ch2\u003eWhat is Lorem Ipsum?\u003c/h2\u003e\n    \u003cp\u003e\n      \u003cstrong\u003eLorem Ipsum\u003c/strong\u003e is simply dummy text\n    \u003c/p\u003e\n  \u003c/vue-bottom-sheet\u003e\n\u003c/template\u003e\n\n\u003cscript setup lang=\"ts\"\u003e\nimport VueBottomSheet from \"@webzlodimir/vue-bottom-sheet\";\nimport  \"@webzlodimir/vue-bottom-sheet/dist/style.css\";\nimport { ref } from \"vue\";\n\nconst myBottomSheet = ref\u003cInstanceType\u003ctypeof VueBottomSheet\u003e\u003e()\n\nconst open = () =\u003e {\n  myBottomSheet.value.open();\n}\n\nconst close = () =\u003e {\n  myBottomSheet.value.close();\n}\n\u003c/script\u003e\n```\n\n## Usage in Nuxt 3\n\nFor Nuxt 3, just wrap component in `\u003cclient-only\u003e`\n\n```vue\n\u003ctemplate\u003e\n  \u003cclient-only\u003e\n    \u003cvue-bottom-sheet ref=\"myBottomSheet\"\u003e\n      \u003ch1\u003eLorem Ipsum\u003c/h1\u003e\n      \u003ch2\u003eWhat is Lorem Ipsum?\u003c/h2\u003e\n      \u003cp\u003e\n        \u003cstrong\u003eLorem Ipsum\u003c/strong\u003e is simply dummy text\n      \u003c/p\u003e\n    \u003c/vue-bottom-sheet\u003e\n  \u003c/client-only\u003e\n\u003c/template\u003e\n```\n\n## Props\n\n| Prop                | Type    | Description                                                                           | Example                        | Defaults  |\n|---------------------|---------|---------------------------------------------------------------------------------------|--------------------------------|-----------|\n| max-width           | Number  | Set max-width of component card in px                                                 | `:max-width=\"640\"`             | 640       |\n| max-height          | Number  | Sets the maximum height of the window, if not set it takes the height of the content  | `:max-height=\"90\"`             | -         |\n| can-swipe           | Boolean | Enable or disable swipe to close                                                      | `:can-swipe=\"false\"`           | true      |\n| overlay             | Boolean | Enable overlay                                                                        | `:overlay=\"false\"`             | true      |\n| overlay-color       | String  | Set overlay color with opacity                                                        | `overlay-color=\"#0000004D\"`    | #0000004D |\n| overlay-click-close | Boolean | Close window on overlay click                                                         | `:overlay-click-close=\"false\"` | true      |\n| transition-duration | Number  | Transition animation duration                                                         | `:transition-duration=\"0.5\"`   | 0.5       |\n\n## Events\n\n| Event         | Description                               | Example               |\n|---------------|-------------------------------------------|-----------------------|\n| opened        | Fire when card component is opened        | @opened=\"\"            |\n| closed        | Fire when card component is closed        | @closed=\"\"            |\n| dragging-up   | Fire while card component dragging up     | @dragging-up=\"\"       |\n| dragging-down | Fire while card component dragging down   | @dragging-down=\"\"     |\n\n## Slots\n\nYou can use this named slots:\n\n```vue\n\u003ctemplate\u003e\n  \u003cvue-bottom-sheet ref=\"myBottomSheet\"\u003e\n    \u003ctemplate #header\u003e\n      \u003ch1\u003eLorem Ipsum\u003c/h1\u003e\n    \u003c/template\u003e\n    \u003ctemplate #default\u003e\n      \u003ch2\u003eWhat is Lorem Ipsum?\u003c/h2\u003e\n    \u003c/template\u003e\n    \u003ctemplate #footer\u003e\n      \u003cp\u003e\n        \u003cstrong\u003eLorem Ipsum\u003c/strong\u003e is simply dummy text\n      \u003c/p\u003e\n    \u003c/template\u003e\n  \u003c/vue-bottom-sheet\u003e\n\u003c/template\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaban-ru%2Fvue-bottom-sheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvaban-ru%2Fvue-bottom-sheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaban-ru%2Fvue-bottom-sheet/lists"}