インポート
import { RangeSlider } from '@k8ordo/ui';使い方
Price最小最大
<RangeSlider aria-label="Price" defaultValue={[20, 80]} />制御モード
Temperature最小最大
18–26 °C
const [value, setValue] = useState<readonly [number, number]>([18, 26]);
<RangeSlider
aria-label="Temperature"
max={40}
min={0}
onChange={setValue}
value={value}
/>無効
Price最小最大
<RangeSlider aria-label="Price" defaultValue={[20, 80]} disabled />フォームで使う
つまみはそれぞれ本物の <input type="range"> で、name の組の 2 つの欄として送られます。非制御のときは値を DOM に持つので、フォームの reset と変更の有無の判定がそのまま効きます。
// schema.ts
export const filterSchema = z.object({
priceMin: z.coerce.number().int().min(0).max(100),
priceMax: z.coerce.number().int().min(0).max(100),
});
// filter-form.tsx
const priceMin = form.field('priceMin');
const priceMax = form.field('priceMax');
<FormControl
label="Price"
renderInput={(props) => (
<RangeSlider
{...props}
defaultValue={[20, 80]}
max={100}
min={0}
name={[priceMin.input.name, priceMax.input.name]}
/>
)}
/>Props
defaultValue?- Type:
readonly [number, number] - Default: -
disabled?- Type:
boolean - Default:
false invalid?- Type:
boolean - Default:
false max?- Type:
number - Default:
100 min?- Type:
number - Default:
0 name?- Type:
readonly [string, string] - Default: -
onChange?- Type:
(value: [number, number]) => void - Default: -
ref?- Type:
Ref<HTMLDivElement> - Default: -
required?- Type:
boolean - Default:
false step?- Type:
number - Default:
1 value?- Type:
readonly [number, number] - Default: -
| Prop | Type | Default |
|---|---|---|
defaultValue? | readonly [number, number] | - |
disabled? | boolean | false |
invalid? | boolean | false |
max? | number | 100 |
min? | number | 0 |
name? | readonly [string, string] | - |
onChange? | (value: [number, number]) => void | - |
ref? | Ref<HTMLDivElement> | - |
required? | boolean | false |
step? | number | 1 |
value? | readonly [number, number] | - |
型ベース(内部で固定する一部attrsは除外): HTMLAttributes<HTMLDivElement>
このコンポーネントが描画する文言(ラベルやプレースホルダーなど)は、propsで指定しないとき文言辞書から解決されます。差し替え方は次を参照してください: i18n