
Product
Introducing Custom Pull Request Alert Comment Headers
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
@smooth-scrollbar-contrib/vue-test
Advanced tools
Since smooth-scrollbar
is an external dependency you have to install it individually
Warning: This package uses composition-api
setup
syntax,script setup
is recommended
Vue 3.2, 2.7, Nuxt 3 and Nuxt Bridge 2.16+
npm i smooth-scrollbar @smooth-scrollbar-contrib/vue-wrapper
npm i @vue/composition-api smooth-scrollbar @smooth-scrollbar-contrib/vue-wrapper
# bring `<script setup>` to Vue 2.
npm i -D unplugin-vue2-script-setup
# if you using Volar
npm i -D @vue/runtime-dom
Older version of Nuxt that uses Vue 2.6
npm i smooth-scrollbar @smooth-scrollbar-contrib/vue-wrapper
# automatically configured using unplugin-vue2-script-setup
npm i -D @nuxtjs/composition-api
# if you using Volar
npm i -D @vue/runtime-dom
<template>
<Scrollbar ref="scrollbarRef" as="div" :scrollbar-options="scrollbarOptions" @mounted="">
<div> <!-- it's recommended to use a wrapper for your content -->
Component
</div>
</Scrollbar>
</template>
<script lang="ts" setup>
import { ref } from "vue"
import { Scrollbar, type ScrollbarOptions } from "@smooth-scrollbar-contrib/vue-wrapper"
const scrollbarRef = ref<InstanceType<typeof Scrollbar> | null>(null)
const scrollbarOptions: ScrollbarOptions = {
delegateTo: typeof document !== 'undefined' ? document : null, // if you are using ssr
damping: 0.2
}
</script>
With component
you have these features:
scrollbar
, access the scrollbar instance at the place you used the Component, with Ref on ComponentuseScrollbarInject
composabletarget
changes like v-if
, destroy and re-init automaticallyName | Description | Default | Type |
---|---|---|---|
as | The element that the component should be rendered as | div | string |
scrollbar-options | Options for Scrollbar, please refer to smooth-scrollbar documentation | undefined | ScrollbarOptions |
Name | Description | Payload | Type |
---|---|---|---|
mounted | Scrollbar mounted | { target, scrollbar } | MountedEmitPayload |
Note: If you need other lifecycle methods you can use Vue vnode lifecycle events/hooks for
beforeMount
andbeforeUnmount / beforeDestroy
Vue3: @vue:beforeMount / @vnode-before-mount
and @vue:beforeUnmount / @vnode-before-unmount
Vue2: @hook:beforeMount
and @hook:beforeDestroy
Name | Description | Type |
---|---|---|
scrollbar | smooth-scrollbar instance | object |
Create smooth-scrollbar
with composable
<template>
<div ref="target">
<div> <!-- it's recommended to use a wrapper for your content -->
Composable
</div>
</div>
</template>
<script lang="ts" setup>
import { ref } from "vue"
import { useScrollbar } from "@smooth-scrollbar-contrib/vue-wrapper"
const target = ref<HTMLElement | null>(null)
const scrollbar = useScrollbar(target, {
delegateTo: typeof document !== 'undefined' ? document : null, // if you are using ssr
damping: 0.2
})
</script>
Inject smooth-scrollbar
instance to component's descendants
<script lang="ts" setup>
import { useScrollbarInject } from "@smooth-scrollbar-contrib/vue-wrapper"
const scrollbar = useScrollbarInject()
</script>
Vue directive for smooth-scrollbar
with CustomEvents
Warning: Custom directive intended to use only on client-side
<template>
<div v-scrollbar="{
damping: 0.2
}"
@scrollbar-mounted="mountedFn"
@scrollbar-unmounted="unmountedFn"
>
<div> <!-- it's recommended to use a wrapper for your content -->
Directive
</div>
</div>
</template>
<script lang="ts" setup>
import type SmoothScrollbar from 'smooth-scrollbar'
import { vScrollbar } from "@smooth-scrollbar-contrib/vue-wrapper"
function mountedFn(event: CustomEvent<SmoothScrollbar>) {
console.log(event.detail) // smooth-scrollbar instance
}
function unmountedFn(event: CustomEvent<HTMLElement>) {
console.log(event.detail) // smooth-scrollbar element
}
</script>
Name | Description | Callback (detail) |
---|---|---|
scrollbar-mounted | fired when the DOM element is inserted and the library is loaded on it | smooth-scrollbar instance |
scrollbar-unmounted | fired when the DOM element is unbound and the library is unloaded. | smooth-scrollbar element |
@vue/composition-api
reached End of Life, so it's better to upgrade your app to 2.7 or 3.2Volar
or Vetur
? Vue team recommends using Volar
, however, you must set vueCompilerOptions
in your tsconfig.json file{
"compilerOptions": {
// ...
},
"vueCompilerOptions": {
"target": 2.7,
// "target": 2, // For Vue version <= 2.6.14
}
}
Custom directive intended to use only on client-side, though it can configure to use in SSR app
import { defineNuxtPlugin } from '#app';
import { vScrollbar } from '@smooth-scrollbar-contrib/vue-wrapper'
export default defineNuxtPlugin((app) => {
app.vueApp.directive('vScrollbar', {
...vScrollbar,
getSSRProps(binding, vnode) {
return {};
}
});
})
unbuild
(The package that builds this project) uses ES2020 as compiler target by default, If you are using older tools like Vue CLI ≤ 4
and use import
instead of require
you have to take care about backward-compatible JavaScript code
// vue.config.js
module.exports = {
transpileDependencies: ['@smooth-scrollbar-contrib/vue-wrapper'],
}
// vue.config.js
module.exports = {
transpileDependencies: ['@smooth-scrollbar-contrib/vue-wrapper'],
chainWebpack(config) {
// Getting webpack to recognize the `.mjs` file
config.module
.rule('mjs')
.include.add(/node_modules/)
.type('javascript/auto')
.end()
},
}
content
or slot
inside Scrollbar componentshallowRef
for Template Refsplain object
over ref
object for Scrollbar options, cause smooth-scrollbar
options are read-only after Scrollbar is initializedv-memo
, If you are using Scrollbar component inside your custom component (that has many props or states) to skip re-render, when it's not neededThis package is using simple postinstall
script and cli
in order to get the right Vue build for user
To explicitly switch the redirecting version, you can use these commands in your project's root.
npx smooth-scrollbar-vue-switch 2.6
# or
npx smooth-scrollbar-vue-switch 2.7
# or
npx smooth-scrollbar-vue-switch 3
If the postinstall
hook doesn't get triggered or you have updated the Vue version, try to run the following command to resolve the redirecting.
npx smooth-scrollbar-vue-fix
FAQs
smooth-scrollbar wrapper for vue
We found that @smooth-scrollbar-contrib/vue-test demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.