# TimePicker 時刻ピッカー

時刻選択器です。スクロール列で時 / 分 / 秒を選択し、format に ss が含まれない場合は秒列を自動的に非表示にします。arrowControl で列ヘッダーの矢印操作に切り替えられます。パネルは body にマウントされます(Vue2 には Teleport がありません)。

時刻選択
<template>
  <div class="demo-col" style="gap: 16px">
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhTimePicker v-model="t1" format="HH:mm:ss" placeholder="時刻を選択" clearable />
      <LhTimePicker v-model="t2" format="HH:mm" placeholder="時分(秒列なし)" size="small" />
      <LhTimePicker v-model="t3" format="HH:mm:ss" arrow-control placeholder="矢印操作" size="large" />
      <LhTimePicker v-model="t1" format="HH:mm:ss" disabled placeholder="無効" />
      <LhTimePicker v-model="t1" format="HH:mm:ss" readonly placeholder="読み取り専用" />
    </div>
    <LhTimePicker
      v-model="t4"
      format="HH:mm:ss"
      :step-hour="2"
      :step-minute="15"
      :step-second="30"
      placeholder="ステップ:時 2 / 分 15 / 秒 30"
    />
    <p class="demo-note">時分秒:{{ fmt(t1) }}|時分:{{ fmt(t2) }}|矢印:{{ fmt(t3) }}|ステップ:{{ fmt(t4) }}</p>
  </div>
</template>

<script>
export default {
  data: () => ({
    t1: new Date(2026, 9, 3, 14, 30, 0),
    t2: null,
    t3: null,
    t4: null,
  }),
  methods: {
    fmt(v) {
      if (!(v instanceof Date)) return '(未選択)'
      const p = (n) => String(n).padStart(2, '0')
      return p(v.getHours()) + ':' + p(v.getMinutes()) + ':' + p(v.getSeconds())
    },
  },
}
</script>

# Props

プロパティ 説明 型 デフォルト値
v-model 現在の選択 Date \| null —
mode モード(日時連動のために予約。現在は時間列としてレンダリング) LhTimePickerMode —
size サイズ 'small' \| 'medium' \| 'large' 'medium'
disabled / clearable / readonly 無効 / クリア可能 / 読み取り専用 boolean false
placeholder プレースホルダーテキスト string 言語パッケージ
format 表示形式(HH:mm:ss、HH:mm)。ss を含まない場合は秒列を非表示 string 'HH:mm:ss'
arrowControl 矢印操作(列ヘッダーの上下ボタン) boolean false
stepHour / stepMinute / stepSecond 時 / 分 / 秒のステップ number 1
teleportTarget ポップアップレイヤーのマウント先 string \| HTMLElement 'body'
sx sx によるレイアウト省略記法 — —

# Events

input(v-model)、change (value)

# アクセシビリティ

各列は role="spinbutton" + aria-valuenow/min/max で、スクロールと矢印の二つの操作いずれもキーボードの方向キーをサポートします。 トリガーは role="combobox" + aria-expanded で、パネルの確定ボタンへフォーカスして到達できます。

Copyright © 2024-2026 FengMo WenXue