Input
テキスト入力を受け付ける基本的なフォームコンポーネントです。ユーザー名やメールアドレスなど、自由記述の入力に使用します。
Basic
jui-input の最も基本的な使用例です。
Input Types
input-type プロパティを使用して、パスワードや数値など入力タイプを切り替えられます。
States
disabled などのプロパティを使用してコンポーネントの状態(非活性など)を制御します。
With Icons
スロットなどを利用して、アイコン付きのパターンを作成できます。
関連コンポーネント
- Form Field — ラベルやバリデーションを付加するラッパー
- Textarea — 複数行テキスト入力コンポーネント
Search Input— 検索キーワード入力に特化したコンポーネント~~Number Input— 数量や金額などの数値入力に特化したコンポーネント(数量の入力を行う場合はこちらを使用してください)~~
ブラウザ対応
このコンポーネントが使用しているブラウザ機能と対応状況です。
| 機能 | 用途 | Chrome | Firefox | Safari | ステータス |
|---|---|---|---|---|---|
:focus-within | フォーカス状態 | 全ver | 全ver | 全ver | Baseline |
:user-valid / :user-invalid | バリデーション表示 | 119+ | 88+ | 16.5+ | Baseline Widely Available |
color-mix() | カラー生成 | 111+ | 113+ | 16.4+ | Baseline 2023 |
💡 すべての機能が Baseline Widely Available に達しており、幅広いブラウザで安定して動作します。
Baseline 情報
| 機能 | Baseline 達成 | Widely Available 予定 |
|---|---|---|
:focus-within | 太古の昔から対応 | WA 済み ✅ |
:user-valid / :user-invalid | 2023年 | 2025年後半 ✅ |
color-mix() | 2023年 | 2025年後半 ✅ |
アクセシビリティ
- WAI-ARIA:
- 内部でネイティブの
<input>要素が生成され、inputType(text/email/password/number/tel/url)に応じた標準的な入力セマンティクスが保証されます。 labelProp を指定すると<label>要素が描画され、htmlForでネイティブ<input>と関連付けられます。required指定時は<input>にrequired属性とaria-required="true"が付与されます。ラベル横の必須マーク*は装飾のためaria-hidden="true"です。errorMessage指定時は<input>にaria-invalid="true"が付与され、aria-describedbyでエラーメッセージ要素(role="alert")と関連付けられます。これによりエラー内容が支援技術に通知されます。name/valueはフォーム送信に用いられます(formAssociatedによりネイティブフォームへ参加します)。maxlength/autocomplete属性もネイティブ<input>にそのまま反映されます。
- 内部でネイティブの
- キーボードナビゲーション:
- ネイティブの
<input>を使用しているため、Tabでフォーカスでき、通常のテキスト入力・編集操作がそのまま利用できます。 disabledの時はネイティブ<input>にdisabled属性が付与され、フォーカス順および操作の対象から除外されます。
- ネイティブの
プロパティ
コンポーネントが受け付ける属性(Props)の一覧と詳細仕様です。
| Property | Attribute | Description | Type | Default |
|---|---|---|---|---|
autocomplete | autocomplete | オートコンプリート属性 | string | undefined |
disabled | disabled | 無効状態 | boolean | false |
errorMessage | error-message | エラーメッセージ(表示すると invalid 状態になる) | string | undefined |
inputType | input-type | 入力タイプ | "email" | "number" | "password" | "tel" | "text" | "url" | 'text' |
label | label | ラベルテキスト | string | undefined |
maxlength | maxlength | 最大文字数 | number | undefined |
name | name | フォーム送信時の name 属性 | string | undefined |
placeholder | placeholder | プレースホルダー | string | '' |
required | required | 必須フラグ | boolean | false |
value | value | 入力値(双方向バインディング用) | string | '' |
イベント
コンポーネントから発火するカスタムイベントの一覧です。
| Event | Description | Type |
|---|---|---|
juiChange | 変更確定時に発火(value を emit) | CustomEvent<{ value: string; }> |
juiInput | 入力中にリアルタイムで発火(value を emit) | CustomEvent<{ value: string; }> |
スロット
コンポーネント内に子要素を挿入するためのスロット一覧です。
| Slot | Description |
|---|---|
"prefix" | 入力フィールド前のアイコン等 |
"suffix" | 入力フィールド後のアイコン等 |
シャドウパーツ
CSSから直接スタイリング可能な内部要素(Parts)の一覧です。
| Part | Description |
|---|---|
"error" | エラーメッセージ |
"field" | 入力要素 |
"label" | ラベル要素 |
"wrapper" | 入力フィールドを囲むコンテナ |
Built with StencilJS