Number Range Filter

A controlled number range picker with exact inputs, an optional slider, and explicit apply behavior.

Applied range: 500 to 2500

Installation

pnpm dlx shadcn-svelte@latest add http://sveltekit-prerender/r/number-range-filter.json

Step-by-step guide

Create the range state

Import the value type and create optional state.

filters.svelte

Render the filter

Set boundaries to enable the slider. The value changes after Apply.

filters.svelte

Register the table filter

Use TanStack's inclusive filterFn_inNumberRange filter.

table.svelte.ts

Connect the column

Send the applied range to the column as a tuple.

filters.svelte

Inputs only

Hide the slider for exact input. Leave either field empty for an open-ended range.

Use one input for an open-ended range.

Behavior

Typed values move the slider on blur or Enter. A committed slider change updates the inputs. Invalid or reversed ranges cannot be applied.

Props

Number range filter props

NameTypeDefaultDescription
valueNumberRangeFilterValue | undefinedundefinedBindable applied range.
onValueChange(value) => voidundefinedCalled after Apply or Clear.
titlestring"Value"Trigger label.
placeholderstring"Any value"Text shown without a range.
minnumberundefinedLowest allowed value.
maxnumberundefinedHighest allowed value.
stepnumber1Input and slider increment.
showSliderbooleantrueShows the slider when min and max exist.
formatValue(value: number) => stringIntl.NumberFormatFormats displayed numbers.
localestring"en-US"Default number format locale.
minimumText / maximumTextstring"Minimum" / "Maximum"Input labels.
clearText / applyTextstring"Clear" / "Apply"Action labels.
disabledbooleanfalseDisables the trigger.
openbooleanfalseBindable popover state.
class / contentClassstringundefinedTrigger and popover classes.

NumberRangeFilterValue

NameTypeDefaultDescription
minnumber | undefinedrequiredInclusive lower value.
maxnumber | undefinedrequiredInclusive upper value.