
Research
Security News
The Landscape of Malicious Open Source Packages: 2025 Mid‑Year Threat Report
A look at the top trends in how threat actors are weaponizing open source packages to deliver malware and persist across the software supply chain.
vue-range-multi
Advanced tools
A Vue range(slider) component that supports one or more thumb
pnpm add vue-range-multi
in SFC
<script setup lang="ts">
import { ref } from 'vue'
import { Range } from 'vue-range-multi'
import 'vue-range-multi/style.css'
const model = ref<number>(0)
</script>
<template>
<Range v-model="model" />
</template>
install globally
// main.ts
import { Range } from 'vue-range-multi'
import 'vue-range-multi/style.css'
app.component('MRange', Range)
declare module 'vue' {
export interface GlobalComponents {
MRange: typeof import('vue-range-multi')['Range']
}
}
unplugin-vue-components
import { VueRangeMultiResolver } from 'vue-range-multi'
// and then add `VueRangeMultiResolver()` into resolvers
// type of options
interface VueRangeMultiResolverOptions {
/**
* The name of the component. It should always CapitalCase
*
* @default 'MRange'
*/
name?: string
}
[!NOTE] After v0.4,
marks
's key means value rather than percentage
generic="T = any, U = number | RangeData<T>"
Name | Type | Description | Default |
---|---|---|---|
v-model:modelValue* | U \ U[] | Model value. It will automatically detect the type of model and show the corresponding thumb(s) | [] |
min | number | The minimum value allowed | 0 |
max | number | The maximum value allowed | 100 |
step | number | Step | 1 |
vertical | boolean | Determines if the range is vertical. Note that it will generate new classes like 'm-range-v-xxx' | false |
addable | boolean | Determines if new data can be added/deleted. You can specify the data to be added by addData prop | false |
addData | (value: number) => RangeData<T, U> | Data to be added. This will only effect while modelValue is RangeData[]. It will return { value } by default | undefined |
limit | number | the limit can be add | undefined |
thumbLimits | [number, number] | Global limit for all thumbs' movement range. Individual thumb can override this with its own limits property | undefined |
smooth | boolean | Determines if the thumb(s) should only be displayed on the stop points or not | false |
deduplicate | boolean | Determines if the thumb(s) can be duplicated | true |
rangeHighlight | boolean | Determines if the range between the minimum and maximum values should be highlighted. | false |
progress | RangeProgress | Custom track highlight segment | undefined |
showStops | boolean | number | Determines if dots should be displayed on the track. When set to a number, dots will only be displayed if the number of stops is less than the specified value | 12 |
size | 'small' | 'medium' | 'large' | Track size | 'small' |
thumbType | 'circle' | 'square' | 'rect' | Thumb type(default 'rect' while size is 'large', otherwise 'small') | 'circle' | 'rect' |
thumbSize | 'small' | 'medium' | 'large' | Thumb size | 'medium' |
renderTop | (data: U) => VNode | A render function for displaying content above the thumb | undefined |
renderTopOnActive | boolean | Specifies whether to render only while the thumb is active | false |
renderBottom | (data: U) => VNode | A render function for displaying content below the thumb | undefined |
renderBottomOnActive | boolean | Specifies whether to render only while the thumb is active | false |
marks | RangeMarks | Show marks under the track | undefined |
Name | Type | Description |
---|---|---|
change | (value: RangeValue<T, U>, thumbValue: U, thumbIndex: number) => void | It will emit when thumb pointerup (after move the thumb) |
Name | Type | Description |
---|---|---|
top | { data: U } | render above the thumb, only effect while renderTop is undefined |
bottom | { data: U } | render below the thumb, only effect while renderBottom is undefined |
export type RangeValueType<T> = number | RangeData<T>
export interface RangeData<T, U = RangeValueType<T>> {
value: number
data?: T
disabled?: boolean
unremovable?: boolean
limits?: [number, number] // Min and max limits for this specific thumb
renderTop?: RangeRenderFn<T, U>
renderBottom?: RangeRenderFn<T, U>
}
export type RangeRenderFn<T, U = RangeValueType<T>> = (data: U) => VNode
export type RangeValue<T, U = RangeValueType<T>> = U | U[]
export type RangeProgress = ([number, number] | {
range: [number, number]
style?: CSSProperties
class?: string
})[]
export type RangeMarks = Record<number, string | {
label: string
style?: CSSProperties
class?: string
}>
If you want to customize the theme, just use CSS variables to override the default theme.
.m-range-theme {
--c-primary: #409eff; /* primary color */
--c-fill: #e4e7ed; /* track's fill color */
--c-fill-stop: #f5f5f5; /* stop's fill color */
--c-fill-thumb: #fff; /* thumb's fill color */
}
FAQs
A Vue range / slider component that supports one or more thumb
The npm package vue-range-multi receives a total of 111 weekly downloads. As such, vue-range-multi popularity was classified as not popular.
We found that vue-range-multi demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer 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.
Research
Security News
A look at the top trends in how threat actors are weaponizing open source packages to deliver malware and persist across the software supply chain.
Security News
ESLint now supports HTML linting with 48 new rules, expanding its language plugin system to cover more of the modern web development stack.
Security News
CISA is discontinuing official RSS support for KEV and cybersecurity alerts, shifting updates to email and social media, disrupting automation workflows.