メインコンテンツまでスキップ

XYPad

2 次元のスライダーのコンポーネント。

Source Style
Loading...
function App() {
  const [valueX, setValueX] = useState(32)
  const [valueY, setValueY] = useState(56)

  return (
    <div>
      <XYPad.Root
        className={xyPadTheme.root}
        value={[valueX, valueY]}
        min={0}
        max={100}
        onChange={([x, y]) => {
          setValueX(x)
          setValueY(y)
        }}
      >
        <XYPad.Area className={xyPadTheme.area}>
          <XYPad.Thumb
            className={xyPadTheme.thumb}
            aria-label={['X position', 'Y position']}
          />
        </XYPad.Area>
      </XYPad.Root>
      <p>
        x: {valueX}, y: {valueY}
      </p>
    </div>
  )
}

インポート​

import { XYPad } from '@tremolo-ui/react'

API リファレンス​

各パートには、そのパート独自の props を載せています。これに加えて、描画する要素の属性(className や style など)も受け取ります。

Svelte / Vue でも props は同じで、書き方だけがそれぞれの流儀になります(className ではなく class、bind:value や v-model、中身は snippet やスロットなど)。Svelte と Vue を参照してください。

状態は data 属性として要素に乗っているので、セレクタ 1 つで届きます(スタイリングを参照)。属性はその状態が on の間だけ付きます。

Root​

両軸の値と設定を持ち、中のパートに渡します。

Prop型既定値
value*XY<number>—
min*number | readonly [number, number]—
max*number | readonly [number, number]—
stepnumber | readonly [number, number]1
scaleScale | readonly [Scale, Scale]linearScale
reverseboolean | readonly [boolean, boolean]false
wheelModifierValue<InputEventOption> | null['raw', 1]
dragSensitivityModifierValue<number>{ default: 1, shift: 0.1 }
keyboardModifierValue<InputEventOption> | null{ default: ['raw', 1], shift: ['raw', 0.1] }
dragCursorCursor'pointer'
disabledboolean—
readOnlyboolean—
onChange(value: XY<number>) => void—
onChangeStart(value: XY<number>, source: ChangeSource) => void—
onChangeEnd(value: XY<number>, source: ChangeSource) => void—
changeEndDelaynumber500
children*ReactNode—
actionsRefRef<XYPadMethods>—

すべての説明: XYPadProps

Data 属性値
[data-disabled]disabled のときに付きます
[data-readonly]readonly のときに付きます

Area​

つまみが動く面。XYPad.Thumb はこの中に置きます。

幅・高さ・背景色は CSS または style で指定します。<div> の属性も受け取ります。

Thumb​

つまみ。中にある軸ごとの 2 つの視覚的に隠れた range input が、フォーカスを受け取り ARIA を持ちます。

子はつまみの中に描かれます。つまみはどちらにしても 1 つの要素なので、子はつまみを置き換えるのではなく、その上に載る飾りです。つまみ自体の見た目は className と style で変えます。

Prop型既定値
colorstring—
aria-labelstring | readonly [string | undefined, string | undefined]—
aria-labelledbystring | readonly [string | undefined, string | undefined]—
aria-describedbystring | readonly [string | undefined, string | undefined]—
aria-valuetextstring | readonly [string | undefined, string | undefined]—
actionsRefRef<XYPadThumbMethods>—

すべての説明: XYPadThumbProps

カスタムプロパティ書き込む prop決めるもの
--colorcolorつまみの色。
Data 属性値
[data-disabled]disabled のときに付きます
[data-readonly]readonly のときに付きます