コンポーネントエイリアス
<b-form-spinbutton>
は、以下のエイリアスでも使用できます。
<b-spinbutton>
注:コンポーネントエイリアスは、BootstrapVue全体をインポートする場合、またはコンポーネントグループプラグインを使用する場合のみ使用できます。
スピンボタンは、BootstrapVueのカスタム数値範囲フォームコントロールです。スピンボタンを使用すると、最小値と最大値の範囲内で、オプションのステップ値を使用して数値を増減できます。
BootstrapVueでは v2.5.0
から利用可能です。
コンポーネント <b-form-spinbutton>
は WAI-ARIA準拠 であり、キーボード操作を可能にし、水平(デフォルト)と垂直の両方のレイアウトをサポートしています。
範囲入力タイプ と同様に、BootstrapVueの <b-form-spinbutton>
は、ユーザーが値を入力することを許可しません。
<template>
<div>
<label for="demo-sb">Spin Button</label>
<b-form-spinbutton id="demo-sb" v-model="value" min="1" max="100"></b-form-spinbutton>
<p>Value: {{ value }}</p>
</div>
</template>
<script>
export default {
data() {
return {
value: 50
}
}
}
</script>
<!-- b-form-spinbutton-demo.vue -->
上矢印キーと下矢印キーを使用して、値を増減できます。
ネイティブブラウザのフォーム送信を介して送信するには、name
プロップを介してスピンボタンに名前を設定する必要があります。これにより、スピンボタンの現在の値を含む隠し入力が作成されます。スピンボタンに値がない場合、隠し入力の値は空文字列になります。
v-model
値v-model
は常に値を数値として返します。v-model
は、初期値が設定されていない場合はnull
になる可能性があります。
初期値がnull
の場合、スピンボタンには値が表示されません。placeholder
プロップを使用して、スピンボタンに値がない場合(つまりplaceholder="--"
)に文字列を表示します。
スピンボタンのデフォルト範囲は1
から100
で、min
プロップとmax
プロップを設定することで変更できます。デフォルトのステップ増分は1
で、step
プロップ(小数値を許可)を介して変更できます。
step
が設定されている場合、値は常にステップサイズと最小値の倍数になります。
<template>
<div>
<label for="sb-step">Spin button with step of 0.25</label>
<b-form-spinbutton
id="sb-step"
v-model="value"
min="0"
max="10"
step="0.25"
></b-form-spinbutton>
</div>
</template>
<script>
export default {
data() {
return {
value: 0
}
}
}
</script>
<!-- b-form-spinbutton-step.vue -->
デフォルトでは、値がmax
値に増加すると、増分ボタンを押しても効果はありません。同様に、値がmin
値の場合、減分ボタンを押しても効果はありません。
スピンボタンを増加時にmaxからminに(または減少時にminからmaxに)循環させるには、wrap
プロップをtrue
に設定します。
<template>
<div>
<label for="sb-wrap">Wrapping value spin button</label>
<b-form-spinbutton id="sb-wrap" wrap min="1" max="25" placeholder="--"></b-form-spinbutton>
</div>
</template>
<!-- b-form-spinbutton-wrap.vue -->
他のフォームコントロールと同様に、<b-form-spinbutton>
は、size
プロップをそれぞれ'sm'
または'lg'
に設定することで、小型と大型のサイズをサポートします。
<template>
<div>
<label for="sb-small">Spin button - Small size</label>
<b-form-spinbutton id="sb-small" size="sm" placeholder="--" class="mb-2"></b-form-spinbutton>
<label for="sb-default">Spin button - Default size</label>
<b-form-spinbutton id="sb-default" placeholder="--" class="mb-2"></b-form-spinbutton>
<label for="sb-large">Spin button - Large size</label>
<b-form-spinbutton id="sb-large" size="lg" placeholder="--" class="mb-2"></b-form-spinbutton>
</div>
</template>
<!-- b-form-spinbutton-size.vue -->
<template>
<div>
<label for="sb-inline">Inline spin button</label>
<b-form-spinbutton id="sb-inline" v-model="value" inline></b-form-spinbutton>
</div>
</template>
<script>
export default {
data() {
return {
value: 50
}
}
}
</script>
<!-- b-form-spinbutton-inline.vue -->
スピンボタンは、表示されている値に合わせて幅を自動的に調整します。幅の制御または設定の詳細については、以下の幅セクションを参照してください。
スピンボタンは垂直モードで配置できます。
<template>
<div>
<label for="sb-vertical">Vertical spin button</label><br>
<b-form-spinbutton id="sb-vertical" v-model="value" vertical></b-form-spinbutton>
</div>
</template>
<script>
export default {
data() {
return {
value: 50
}
}
}
</script>
<!-- b-form-spinbutton-vertical.vue -->
垂直スピンボタンは、size
プロップを使用してサイズ変更することもできます。垂直モードの場合、スピンボタンはインライン要素としてレンダリングされます。
スピンボタンは、表示されている値に合わせて幅を自動的に調整します。幅の制御または設定の詳細については、以下の幅セクションを参照してください。
(vertical
またはinline
ではない)コントロールは、親コンテナの最大幅まで拡張されます。w-25
、w-50
、w-75
などのユーティリティクラスで幅を制御したり、スタイルを使用して幅を設定したりできます。
vertical
またはinline
のいずれかが設定されている場合、コントロールは表示されている値に基づいて幅を調整します。CSSスタイルを使用して、コントロールの全体の幅を制御できます(例:style="width: 10rem;"
)。
デフォルトでは、<b-form-spinbutton>
は、ユーザーのブラウザのデフォルトロケールで表示される数値をフォーマットします。locale
プロップを使用してロケール(またはロケールの配列)を指定することで、ローカライズされたフォーマットを変更できます。数値フォーマットのローカライズは、Intl.NumberFormat
を介して実行されます。使用可能なロケールは、ブラウザの実装によって異なります。ローカライズは、ユーザーへの値の表示のみを制御し、v-model
には影響しません。
<template>
<div>
<label for="sb-locales">Locale</label>
<b-form-select id="sb-locales" v-model="locale" :options="locales"></b-form-select>
<label for="sb-local" class="mt-2">Spin button with locale</label>
<b-form-spinbutton
id="sb-locale"
v-model="value"
:locale="locale"
min="0"
max="10"
step="0.125"
></b-form-spinbutton>
<p>Value: {{ value }}</p>
</div>
</template>
<script>
export default {
data() {
return {
value: 0,
locale: 'fr-CA',
locales: [
{ value: 'en', text: 'English' },
{ value: 'de', text: 'German' },
{ value: 'fr-CA', text: 'French (Canadian)' },
{ value: 'fa', text: 'Persian' },
{ value: 'ar-EG', text: 'Arabic (Egyptian)' }
]
}
}
}
</script>
<!-- b-form-spinbutton-locale.vue -->
または、表示される値をフォーマットする独自の数字フォーマッター関数を提供することもできます。これは、数値ではなくテキストを表示する場合、またはIntl.NumberFormat
の異なる機能を実装する場合に役立ちます。
フォーマッター関数を提供するには、formatter-fn
プロップをメソッド参照に設定します。フォーマッターには、現在の値である単一の引数が渡されます。フォーマッターは、ユーザーに表示される値のみに影響し、v-model
には影響しないことに注意してください。
<template>
<div>
<label for="sb-days" class="mt-2">Spin button with formatter</label>
<b-form-spinbutton
id="sb-days"
v-model="value"
:formatter-fn="dayFormatter"
min="0"
max="6"
wrap
></b-form-spinbutton>
<p>Value: {{ value }}</p>
</div>
</template>
<script>
export default {
data() {
return {
value: 0,
days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
}
},
methods: {
dayFormatter(value) {
return this.days[value]
}
}
}
</script>
<!-- b-form-spinbutton-formatter.vue -->
disabled
プロップを設定すると、コンポーネントは無効な非対話型状態になります。readonly
プロップは、コンポーネントを読み取り専用状態(フォーカス可能だが、ユーザーが値を変更できない)にします。
<template>
<b-row>
<b-col md="6" class="mb-2">
<label for="sb-disabled">Disabled spin button</label>
<b-form-spinbutton id="sb-disabled" v-model="value" disabled></b-form-spinbutton>
</b-col>
<b-col md="6" class="mb-2">
<label for="sb-readonly" class="">Readonly spin button</label>
<b-form-spinbutton id="sb-readonly" v-model="value" readonly></b-form-spinbutton>
</b-col>
</b-row>
</template>
<script>
export default {
data() {
return {
value: 50
}
}
}
</script>
<!-- b-form-spinbutton-disabled-readonly.vue -->
無効なスピンボタンは、ネイティブブラウザのフォーム送信中に送信されませんが、読み取り専用のスピンボタンは送信されます(name
プロップを介して名前が設定されている限り)。
null
値をデフォルトで使用し、ユーザーが値を選択していない場合、state
プロップを使用して、コンポーネントにコンテキストバリデーションスタイルの1つを適用できます。
true
は、コンポーネントに有効なスタイルを適用します。false
は、コンポーネントに無効なスタイルを適用します。null
は、コンテキストスタイルを適用しません(デフォルト)。必須プロップは、コンポーネントにaria-required="true"
属性を生成するだけで、フォーム送信時に検証を実行しないことに注意してください。アプリケーションロジックでv-model
を検証する必要があります。
required
プロップが設定され、v-model
がnull
の場合、aria-invalid="true"
属性がコンポーネントにレンダリングされることに注意してください。
input
イベントはv-model
を更新するために使用され、値が変更されるたびに発行されます。
change
イベントは、ユーザーが増分ボタンまたは減分ボタンを離したとき、またはユーザーが下矢印キーまたは上矢印キーを離したときに一度発行されます。これは、入力のデバウンスが必要な場合に便利です。
次の例は、input
イベントとchange
イベントの違いを示しています。増分ボタンまたは減分ボタンをクリックして押し続け(または上下矢印キーを使用)ます。
<template>
<div>
<label for="sb-input">Spin button - input and change events</label>
<b-form-spinbutton
id="sb-input"
v-model="value1"
@change="value2 = $event"
wrap
></b-form-spinbutton>
<p>Input event: {{ value1 }}</p>
<p>Change event: {{ value2 }}</p>
</div>
</template>
<script>
export default {
data() {
return {
value1: 0,
value2: null
}
}
}
</script>
<!-- b-form-spinbutton-events.vue -->
スピンボタンにフォーカスがある場合、次のキーボードコントロールを使用できます。
min
値に設定します。max
値に設定します。repeat-step-multiplier
量を掛けた値だけ増やします。repeat-step-multiplier
量を掛けた値だけ減らします。上矢印、下矢印、PageUp、またはPageDownキーを押して押し続けると、増分または減分が自動的に繰り返されます(最初の遅延の後)。上矢印キーまたは下矢印キーを長時間押し続けると、増分または減分の量がrepeat-step-multiplier
量だけ掛けられます。
repeat-delay
、repeat-threshold
、およびrepeat-interval
は、上矢印キーまたは下矢印キーのみに適用されることに注意してください。
<b-form-spinbutton>
は、Bootstrap v4のユーティリティクラス(ボーダー、配置、フレックス)、form-controlとボタンのクラス、および追加のカスタムBootstrapVue SCSS/CSSを組み合わせて使用しています。
<b-form-spinbutton>
コンポーネントエイリアス<b-form-spinbutton>
プロパティ<b-form-spinbutton>
v-model<b-form-spinbutton>
スロット<b-form-spinbutton>
イベント<b-form-spinbutton>
は、以下のエイリアスでも使用できます。
<b-spinbutton>
注:コンポーネントエイリアスは、BootstrapVue全体をインポートする場合、またはコンポーネントグループプラグインを使用する場合のみ使用できます。
すべてのプロパティのデフォルト値は、グローバルに設定可能です。
プロパティ (クリックして昇順にソート) | 型 (クリックして昇順にソート) | デフォルト | 説明 |
---|---|---|---|
aria-controls | 文字列 | このコンポーネントが別のコンポーネントまたは要素を制御する場合、制御されるコンポーネントまたは要素のIDをここに設定します。 | |
aria-label | 文字列 | スピンボタンの`aria-label`属性に配置する値 | |
disabled | ブール値 | false | コンポーネントを無効状態にします。 |
form | 文字列 | フォームコントロールが属するフォームのID。コントロールの`form`属性を設定します。 | |
formatter-fn | 関数 | 表示される値をフォーマットするためのメソッドへの参照。現在の値を単一引数として渡されます。 | |
id | 文字列 | レンダリングされたコンテンツの`id`属性を設定するために使用され、必要に応じて追加の要素IDを生成するためのベースとして使用されます。 | |
inline | ブール値 | false | 設定されている場合、コンポーネントをインライン要素としてレンダリングします。 |
label-decrement | 文字列 | 'Decrement' | 減少ボタンの`aria-label`属性に使用されるテキスト |
label-increment | 文字列 | 'Increment' | 増加ボタンの`aria-label`属性に使用されるテキスト |
locale | 配列 または 文字列 | 数値のフォーマットに使用するロケールを指定します。ブラウザのロケールをデフォルトで使用します。内部フォーマッタを使用する場合にのみ適用されます。 | |
max | 数値 または 文字列 | 100 | 選択できる最大値。`min`プロパティよりも大きくなければなりません。負の数は許容されます。 |
min | 数値 または 文字列 | 1 | 選択できる最小値。負の数は許容されます。 |
name | 文字列 | フォームコントロールの`name`属性の値を設定します。 | |
placeholder | 文字列 | v-modelが`null`の場合に表示する値 | |
readonly | ブール値 | false | コンポーネントを読み取り専用状態にします。 |
repeat-delay | 数値 または 文字列 | 500 | 自動繰り返し増分または減分が発生する前のミリ秒単位の遅延。正の整数でなければなりません。ユーザーがクリック/キーを押して保持する必要があります。 |
repeat-interval | 数値 または 文字列 | 100 | 増分または減分の繰り返し間のミリ秒単位の間隔。正の整数でなければなりません。 |
repeat-step-multiplier | 数値 または 文字列 | 4 | `repeat-threshold`に達した後にジャンプするステップ数。正の整数でなければなりません。この値は、ページアップキーとページダウンキーにも使用されます。 |
repeat-threshold | 数値 または 文字列 | 10 | ステップサイズを`repeat-step-multiplier`で増やす前に発生する繰り返し回数。正の整数でなければなりません。 |
size | 文字列 | コンポーネントの外観のサイズを設定します。'sm'、'md'(デフォルト)、または'lg' | |
state | ブール値 | null | コンポーネントの検証状態の外観を制御します。有効な場合は`true`、無効な場合は`false`、検証状態がない場合は`null`。 |
step | 数値 または 文字列 | 1 | 値が従わなければならない粒度を指定する正の数。 |
value v-model | ブール値 または 数値 | スピンボタンの値。v-modelにバインドされます。 | |
vertical | ブール値 | false | 設定されている場合、コンポーネントを垂直レイアウトでレンダリングします。 |
wrap | ブール値 | false | 設定されている場合、最小値または最大値に達したときに値をラップアラウンドできます。 |
v-model
プロパティ | イベント |
---|---|
value | input |
名前 | スコープ付き | 説明 |
---|---|---|
decrement v2.8.0以降 | 減少ボタンに配置するカスタムコンテンツ | |
increment v2.8.0以降 | 増加ボタンに配置するカスタムコンテンツ |
イベント | 引数 | 説明 |
---|---|---|
change |
| ユーザーがマウスボタンまたはキーを離したときに送信されます。 |
input |
| 各値の変更時にv-modelを更新するために送信されます。 |
以下の名前付きエクスポートを使用して、個々のコンポーネントをプロジェクトにインポートできます。
コンポーネント | 名前付きエクスポート | インポートパス |
---|---|---|
<b-form-spinbutton> | BFormSpinbutton | bootstrap-vue |
例
import { BFormSpinbutton } from 'bootstrap-vue' Vue.component('b-form-spinbutton', BFormSpinbutton)
このプラグインには、上記にリストされているすべての個々のコンポーネントが含まれています。プラグインには、コンポーネントエイリアスも含まれています。
名前付きエクスポート | インポートパス |
---|---|
FormSpinbuttonPlugin | bootstrap-vue |
例
import { FormSpinbuttonPlugin } from 'bootstrap-vue' Vue.use(FormSpinbuttonPlugin)