shadowSelectは、ネイティブの <select>
要素と同様に、オプションのセットからオプションを選択するためのフォームコントロールです。ユーザがselectをタップすると、すべてのオプションを含むダイアログが、選択しやすい大きなリストで表示されます。
selectは、子要素 <ion-select-option>
とともに使用する必要があります。子要素のオプションにvalue
属性が指定されていない場合、そのtextが値として使用されます。
value
が <ion-select>
にセットされている場合、オプションはその値に基づいて選択済みになります。
デフォルトでは、selectを使用すると、ユーザは1つのOptionだけを選択できます。Alertのインターフェースでは、Optionのリストがradio button形式で表示されます。action sheetインタフェースは、1つの値選択でのみ使用できます。selectコンポーネントの値は、選択したオプションの値の値を受け取ります。
デフォルトでは、select は ion-alert を使ってAlertのオプションのオーバーレイを開きます。インターフェイスを変更して、ion-action-sheet または ion-popover を使用するには、 action-sheet
または popover
を interface
プロパティに渡します。各インタフェースの制限については、他のセクションを参照してください。
multiple
属性を追加して選択すると、複数のOptionを選択できます。複数のOptionを選択できる場合は、checkbox形式のオプションのリストがAlertオーバーレイで表示されます。selectコンポーネントの値は、選択されたすべてのオプション値の配列を受け取ります。
Note: action-sheet
と popover
インターフェイスでは、複数選択は動作しません
select とユーザーのインタラクションを処理する主な方法は、 ionChange
イベント、 ionDismiss
イベント、 ionCancel
イベントです。これらのイベントと select が発生するその他のイベントの詳細については、イベント を参照してください。
選択した値にObjectを使用する場合、これらのObjectの識別情報がサーバーまたはデータベースからのものであれば変更できますが、選択した値の識別情報は変更されません。たとえば、目的のObject値を持つ既存の値がselectにロードされたが、新しく取得されたselectオプションが異なるIDを持つようになった場合などです。これにより、元の選択がそのままの状態であっても、選択に値がまったく表示されなくなります。
デフォルトでは、selectはObjectの等価性(===
)を使用して、オプションが選択されているかどうかを判断します。これはcompareWiths
プロパティにプロパティ名または関数を指定することで上書きできます。
Labelsは、デフォルトでそのコンテンツの幅を占めます。 開発者は labelPlacement
プロパティを使用して、ラベルがどのように配置されるかを制御することができます。
開発者は justify
プロパティを使用して、ラベルとコントロールの行の詰め方を制御することができます。
Material Designでは、セレクトに塗りつぶしのスタイルが用意されています。セレクトの fill
プロパティは "solid"
または "outline"
のいずれかに設定することができます。
fill
スタイルはセレクトコンテナを視覚的に定義するため、fill
を使用するセレクトは ion-item
で使用すべきではありません。
alertはふたつのボタンをサポートしています: Cancel
と OK
です。それぞれのボタンは、 cancelText
と okText
プロパティを使ってカスタマイズできます。
action-sheet
と popover
インタフェースには OK
ボタンがありません。いずれかのオプションをクリックすると、自動的にオーバーレイが閉じ、その値が選択されます。popover
インターフェースにはCancel
ボタンがないので、backdropをクリックするとオーバーレイが閉じます。
select は alert、action sheet、popover インターフェースを使用するので、interfaceOptions
プロパティを通して、これらのコンポーネントにオプションを渡すことができます。これは、カスタムヘッダー、サブヘッダー、CSS クラスなどを渡すために使用できます。
各インターフェースが受け付けるプロパティは、ion-alert docs, ion-action-sheet docs, ion-popover docs を参照してください。
Note: alert
インターフェースでは、 interfaceOptions
は inputs
や buttons
をオーバーライドしません。
Selectコンポーネントを構成する2つのユニットがあり、それぞれを別々にスタイルする必要があります。 ion-select
要素は、ビュー上で選択された値(複数可)、または何もない場合はプレースホルダー、およびドロップダウンのアイコンによって表現されます。インターフェースは、上記の インターフェース セクションで定義されており、 ion-select
をクリックすると開かれるダイアログです。インターフェースには、 ion-select-option
要素を追加することで定義されるすべてのオプションが含まれています。次のセクションでは、これらのスタイリングの違いについて説明します。
前述の通り、ion-select
要素は、ビューに表示される値 (またはプレースホルダ) とアイコンのみで構成されています。これをカスタマイズするには、CSSとCSSカスタムプロパティを組み合わせてスタイルを設定します。
また、必要な ブラウザサポート に応じて、CSSのシャドウパーツを使用してセレクトのスタイルを設定することができます。part` を使用することで、要素上の任意のCSSプロパティをターゲットにすることができることに注意してください。
インターフェイスのダイアログのカスタマイズは、そのインターフェイスのドキュメントのカスタマイズのセクションにしたがって行ってください。
ただし、Selectオプションでは、スタイリングを容易にするためにクラスを設定し、オーバーレイオプションにクラスを渡す機能があります。オプションのカスタマイズの使用例については、Selectオプションのドキュメントを参照してください。
Typeaheadやオートコンプリートの機能は、既存のIonicコンポーネントを使用して構築することができます。利用可能なスクリーンスペースを最大限に活用するために、ion-modal
を使用することをお勧めします。
interface SelectChangeEventDetail<T = any> {
value: T;
}
必須ではありませんが、このコンポーネントから発行される Ionic イベントでより強く型付けを行うために、CustomEvent
インターフェースの代わりにこのインターフェースを使用することが可能です。
interface SelectCustomEvent<T = any> extends CustomEvent {
detail: SelectChangeEventDetail<T>;
target: HTMLIonSelectElement;
}
Ionic 7.0では、よりシンプルなselect構文が導入されました。この新しい構文は、selectの設定に必要な定型文を減らし、アクセシビリティの問題を解決し、開発者のエクスペリエンスを向上させます。
開発者は、この移行を一度に1つのセレクトで実行できます。開発者はレガシー構文を使い続けることができますが、できるだけ早く移行することをお勧めします。
最新の構文を使うには、2つのステップがあります。
- ion-label
を削除して、代わりに
ion-selectの
labelプロパティを使用します。ラベルの配置は
ion-selectの
labelPlacement` プロパティを使用して設定することができる。 - fill
と
shapeの使い方を
ion-itemから
ion-select` に移動します。
- JavaScript
- Angular
- React
- Vue
<ion-item>
<ion-label position="floating">Favorite Fruit:</ion-label>
<ion-select>...</ion-select>
</ion-item>
<ion-item>
<ion-select label="Favorite Fruit:" label-placement="floating">...</ion-select>
</ion-item>
<ion-item fill="outline" shape="round">
<ion-label position="floating">Favorite Fruit:</ion-label>
<ion-select>...</ion-select>
</ion-item>
<ion-select fill="outline" shape="round" label="Favorite Fruit:" label-placement="floating">...</ion-select>
<ion-item>
<ion-label position="floating">Favorite Fruit:</ion-label>
<ion-select>...</ion-select>
</ion-item>
<ion-item>
<ion-select label="Favorite Fruit:" labelPlacement="floating">...</ion-select>
</ion-item>
<ion-item fill="outline" shape="round">
<ion-label position="floating">Favorite Fruit:</ion-label>
<ion-select>...</ion-select>
</ion-item>
<ion-select fill="outline" shape="round" label="Favorite Fruit:" labelPlacement="floating">...</ion-select>
{}
{}
<IonItem>
<IonLabel position="floating">Favorite Fruit:</IonLabel>
<IonSelect>...</IonSelect>
</IonItem>
{}
<IonItem>
<IonSelect label="Favorite Fruit:" labelPlacement="floating">...</IonSelect>
</IonItem>
{}
{}
<IonItem fill="outline" shape="round">
<IonLabel position="floating">Favorite Fruit:</IonLabel>
<IonSelect>...</IonSelect>
</IonItem>
{}
{}
<IonSelect fill="outline" shape="round" label="Favorite Fruit:" labelPlacement="floating">...</IonSelect>
<ion-item>
<ion-label position="floating">Favorite Fruit:</ion-label>
<ion-select>...</ion-select>
</ion-item>
<ion-item>
<ion-select label="Favorite Fruit:" label-placement="floating">...</ion-select>
</ion-item>
<ion-item fill="outline" shape="round">
<ion-label position="floating">Favorite Fruit:</ion-label>
<ion-select>...</ion-select>
</ion-item>
<ion-select fill="outline" shape="round" label="Favorite Fruit:" label-placement="floating">...</ion-select>
Ionicは、アプリが最新のセレクト構文を使用しているかどうかをヒューリスティックで検出します。場合によっては、レガシー構文を使い続けることが望ましい場合もあります。開発者は ion-select
の legacy
プロパティを true
に設定することで、そのInputインスタンスでレガシー構文を使用するように強制できます。
cancelText
Description | キャンセルボタンに表示するテキストです。 |
Attribute | cancel-text |
Type | string |
Default | 'Cancel' |
Description | The color to use from your application's color palette. Default options are: "primary" , "secondary" , "tertiary" , "success" , "warning" , "danger" , "light" , "medium" , and "dark" . For more information on colors, see theming.
This property is only available when using the modern select syntax. |
Attribute | color |
Type | "danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined |
Default | undefined |
Description | オブジェクトの値を比較するために使用されるプロパティ名または関数。 |
Attribute | compare-with |
Type | ((currentValue: any, compareValue: any) => boolean) | null | string | undefined |
Default | undefined |
Description | true の場合、ユーザはセレクトと対話することができません。 |
Attribute | disabled |
Type | boolean |
Default | false |
Description | The toggle icon to show when the select is open. If defined, the icon rotation behavior in md mode will be disabled. If undefined, toggleIcon will be used for when the select is both open and closed. |
Attribute | expanded-icon |
Type | string | undefined |
Default | undefined |
Description | The fill for the item. If "solid" the item will have a background. If "outline" the item will be transparent with a border. Only available in md mode. |
Attribute | fill |
Type | "outline" | "solid" | undefined |
Default | undefined |
Description | selectが使用するインターフェース。action-sheet, popoverまたは alert`. |
Attribute | interface |
Type | "action-sheet" | "alert" | "popover" |
Default | 'alert' |
Description | Any additional options that the alert , action-sheet or popover interface can take. See the ion-alert docs, the ion-action-sheet docs and the ion-popover docs for the create options for each interface.
Note: interfaceOptions will not override inputs or buttons with the alert interface. |
Attribute | interface-options |
Type | any |
Default | {} |
Description | How to pack the label and select within a line. justify does not apply when the label and select are on different lines when labelPlacement is set to "floating" or "stacked" . "start" : The label and select will appear on the left in LTR and on the right in RTL. "end" : The label and select will appear on the right in LTR and on the left in RTL. "space-between" : The label and select will appear on opposite ends of the line with space between the two elements. |
Attribute | justify |
Type | "end" | "space-between" | "start" |
Default | 'space-between' |
Description | The visible label associated with the select.
Use this if you need to render a plaintext label.
The label property will take priority over the label slot if both are used. |
Attribute | label |
Type | string | undefined |
Default | undefined |
Description | Where to place the label relative to the select. "start" : The label will appear to the left of the select in LTR and to the right in RTL. "end" : The label will appear to the right of the select in LTR and to the left in RTL. "floating" : The label will appear smaller and above the select when the select is focused or it has a value. Otherwise it will appear on top of the select. "stacked" : The label will appear smaller and above the select regardless even when the select is blurred or has no value. "fixed" : The label has the same behavior as "start" except it also has a fixed width. Long text will be truncated with ellipses ("..."). When using "floating" or "stacked" we recommend initializing the select with either a value or a placeholder . |
Attribute | label-placement |
Type | "end" | "fixed" | "floating" | "stacked" | "start" | undefined |
Default | 'start' |
Description | Set the legacy property to true to forcibly use the legacy form control markup. Ionic will only opt components in to the modern form markup when they are using either the aria-label attribute or the label property. As a result, the legacy property should only be used as an escape hatch when you want to avoid this automatic opt-in behavior. Note that this property will be removed in an upcoming major release of Ionic, and all form components will be opted-in to using the modern form markup. |
Attribute | legacy |
Type | boolean | undefined |
Default | undefined |
Description | modeは、どのプラットフォームのスタイルを使用するかを決定します。 |
Attribute | mode |
Type | "ios" | "md" |
Default | undefined |
Description | true の場合、selectは複数の値を受け入れることができる。 |
Attribute | multiple |
Type | boolean |
Default | false |
Description | フォームデータとともに送信されるコントロールの名前。 |
Attribute | name |
Type | string |
Default | this.inputId |
okText
Description | okボタンに表示するテキストです。 |
Attribute | ok-text |
Type | string |
Default | 'OK' |
Description | セレクトが空のときに表示するテキストです。 |
Attribute | placeholder |
Type | string | undefined |
Default | undefined |
selectedText
Description | 選択されたオプションの値の代わりに表示するテキストです。 |
Attribute | selected-text |
Type | null | string | undefined |
Default | undefined |
Description | The shape of the select. If "round" it will have an increased border radius. |
Attribute | shape |
Type | "round" | undefined |
Default | undefined |
Description | The toggle icon to use. Defaults to chevronExpand for ios mode, or caretDownSharp for md mode. |
Attribute | toggle-icon |
Type | string | undefined |
Default | undefined |
Description | The value of the select. |
Attribute | value |
Type | any |
Default | undefined |
Name | Description |
---|
ionBlur | セレクトのフォーカスが外れたときに発行されます。 |
ionCancel | 選択がキャンセルされたときに発します。 |
ionChange | 値が変更されたときに発行されます。 |
ionDismiss | オーバーレイが解除されたときに発行されます。 |
ionFocus | セレクトにフォーカスが当たったときに発します。 |
Description | Open the select overlay. The overlay is either an alert, action sheet, or popover, depending on the interface property on the ion-select . |
Signature | open(event?: UIEvent) => Promise<any> |
Name | Description |
---|
container | The container for the selected text or placeholder. |
icon | セレクトアイコンのコンテナです。 |
label | The label text describing the select. |
placeholder | 値がないときにセレクトに表示されるテキスト。 |
text | セレクトの表示値です。 |
Name | Description |
---|
--background | Background of the select |
--border-color | Color of the select border |
--border-radius | Radius of the select border. A large radius may display unevenly when using fill="outline"; if needed, use shape="round" instead or increase --padding-start. |
--border-style | Style of the select border |
--border-width | Width of the select border |
--highlight-color-focused | The color of the highlight on the select when focused |
--highlight-color-invalid | The color of the highlight on the select when invalid |
--highlight-color-valid | The color of the highlight on the select when valid |
--padding-bottom | セレクトのBottom Padding |
--padding-end | セレクトの方向が左から右の場合はRight Padding、右から左の場合はLeft Paddingを行う |
--padding-start | セレクトの方向が左から右の場合はLeft Padding、右から左の場合はRight Padding |
--padding-top | セレクトのTop Padding |
--placeholder-color | セレクトPlaceholderテキストの色 |
--placeholder-opacity | 選択Placeholderテキストの不透明度 |
--ripple-color | The color of the ripple effect on MD mode. |
Name | Description |
---|
label | The label text to associate with the select. Use the labelPlacement property to control where the label is placed relative to the select. Use this if you need to render a label with custom HTML. |