ion-searchbar
Searchbars represent a text field that can be used to search through a collection. They can be displayed inside of a toolbar or the main content.
A Searchbar should be used instead of an input to search lists. A clear button is displayed upon entering input in the searchbar's text field. Clicking on the clear button will erase the text field and the input will remain focused. A cancel button can be enabled which will clear the input and lose the focus upon click.
Keyboard Display
Android
By default, tapping the input will cause the keyboard to appear with a magnifying glass icon on the submit button. You can optionally set the inputmode
property to "search"
, which will change the icon from a magnifying glass to a carriage return.
iOS
By default, tapping the input will cause the keyboard to appear with the text "return" on a gray submit button. You can optionally set the inputmode
property to "search"
, which will change the text from "return" to "go", and change the button color from gray to blue. Alternatively, you can wrap the ion-searchbar
in a form
element with an action
property. This will cause the keyboard to appear with a blue submit button that says "search".
Usage
- Angular
- Javascript
- React
- Stencil
- Vue
<!-- Default Searchbar -->
<ion-searchbar></ion-searchbar>
<!-- Searchbar with cancel button always shown -->
<ion-searchbar showCancelButton="always"></ion-searchbar>
<!-- Searchbar with cancel button never shown -->
<ion-searchbar showCancelButton="never"></ion-searchbar>
<!-- Searchbar with cancel button shown on focus -->
<ion-searchbar showCancelButton="focus"></ion-searchbar>
<!-- Searchbar with danger color -->
<ion-searchbar color="danger"></ion-searchbar>
<!-- Searchbar with value -->
<ion-searchbar value="Ionic"></ion-searchbar>
<!-- Searchbar with telephone type -->
<ion-searchbar type="tel"></ion-searchbar>
<!-- Searchbar with numeric inputmode -->
<ion-searchbar inputmode="numeric"></ion-searchbar>
<!-- Searchbar disabled -->
<ion-searchbar disabled="true"></ion-searchbar>
<!-- Searchbar with a cancel button and custom cancel button text -->
<ion-searchbar showCancelButton="focus" cancelButtonText="Custom Cancel"></ion-searchbar>
<!-- Searchbar with a custom debounce -->
<ion-searchbar debounce="500"></ion-searchbar>
<!-- Animated Searchbar -->
<ion-searchbar animated></ion-searchbar>
<!-- Searchbar with a placeholder -->
<ion-searchbar placeholder="Filter Schedules"></ion-searchbar>
<!-- Searchbar in a Toolbar -->
<ion-toolbar>
<ion-searchbar></ion-searchbar>
</ion-toolbar>
<!-- Default Searchbar -->
<ion-searchbar></ion-searchbar>
<!-- Searchbar with cancel button always shown -->
<ion-searchbar show-cancel-button="always"></ion-searchbar>
<!-- Searchbar with cancel button never shown -->
<ion-searchbar show-cancel-button="never"></ion-searchbar>
<!-- Searchbar with cancel button shown on focus -->
<ion-searchbar show-cancel-button="focus"></ion-searchbar>
<!-- Searchbar with danger color -->
<ion-searchbar color="danger"></ion-searchbar>
<!-- Searchbar with value -->
<ion-searchbar value="Ionic"></ion-searchbar>
<!-- Searchbar with telephone type -->
<ion-searchbar type="tel"></ion-searchbar>
<!-- Searchbar with numeric inputmode -->
<ion-searchbar inputmode="numeric"></ion-searchbar>
<!-- Searchbar disabled -->
<ion-searchbar disabled="true"></ion-searchbar>
<!-- Searchbar with a cancel button and custom cancel button text -->
<ion-searchbar show-cancel-button="focus" cancel-button-text="Custom Cancel"></ion-searchbar>
<!-- Searchbar with a custom debounce -->
<ion-searchbar debounce="500"></ion-searchbar>
<!-- Animated Searchbar -->
<ion-searchbar animated></ion-searchbar>
<!-- Searchbar with a placeholder -->
<ion-searchbar placeholder="Filter Schedules"></ion-searchbar>
<!-- Searchbar in a Toolbar -->
<ion-toolbar>
<ion-searchbar></ion-searchbar>
</ion-toolbar>
import React, { useState } from 'react';
import { IonContent, IonHeader, IonPage, IonTitle, IonToolbar, IonSearchbar, IonFooter } from '@ionic/react';
export const SearchBarExamples: React.FC = () => {
const [searchText, setSearchText] = useState('');
return (
<IonPage>
<IonHeader>
<IonToolbar>
<IonTitle>IonSearchBar Examples</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent>
<p>Default Searchbar</p>
<IonSearchbar value={searchText} onIonChange={(e) => setSearchText(e.detail.value!)}></IonSearchbar>
<p>Searchbar with cancel button always shown</p>
<IonSearchbar
value={searchText}
onIonChange={(e) => setSearchText(e.detail.value!)}
showCancelButton="always"
></IonSearchbar>
<p>Searchbar with cancel button never shown</p>
<IonSearchbar
value={searchText}
onIonChange={(e) => setSearchText(e.detail.value!)}
showCancelButton="never"
></IonSearchbar>
<p>Searchbar with cancel button shown on focus</p>
<IonSearchbar
value={searchText}
onIonChange={(e) => setSearchText(e.detail.value!)}
showCancelButton="focus"
></IonSearchbar>
<p>Searchbar with danger color</p>
<IonSearchbar
value={searchText}
onIonChange={(e) => setSearchText(e.detail.value!)}
color="danger"
></IonSearchbar>
<p>Searchbar with telephone type</p>
<IonSearchbar value={searchText} onIonChange={(e) => setSearchText(e.detail.value!)} type="tel"></IonSearchbar>
<p>Searchbar with numeric inputmode</p>
<IonSearchbar
value={searchText}
onIonChange={(e) => setSearchText(e.detail.value!)}
inputmode="numeric"
></IonSearchbar>
<p>Searchbar disabled </p>
<IonSearchbar
value={searchText}
onIonChange={(e) => setSearchText(e.detail.value!)}
disabled={true}
></IonSearchbar>
<p>Searchbar with a cancel button and custom cancel button text</p>
<IonSearchbar
value={searchText}
onIonChange={(e) => setSearchText(e.detail.value!)}
showCancelButton="focus"
cancelButtonText="Custom Cancel"
></IonSearchbar>
<p>Searchbar with a custom debounce - Note: debounce only works on onIonChange event</p>
<IonSearchbar
value={searchText}
onIonChange={(e) => setSearchText(e.detail.value!)}
debounce={1000}
></IonSearchbar>
<p>Animated Searchbar</p>
<IonSearchbar value={searchText} onIonChange={(e) => setSearchText(e.detail.value!)} animated></IonSearchbar>
<p>Searchbar with a placeholder</p>
<IonSearchbar
value={searchText}
onIonChange={(e) => setSearchText(e.detail.value!)}
placeholder="Filter Schedules"
></IonSearchbar>
<p>Searchbar in a Toolbar</p>
<IonToolbar>
<IonSearchbar value={searchText} onIonChange={(e) => setSearchText(e.detail.value!)}></IonSearchbar>
</IonToolbar>
</IonContent>
<IonFooter>
<IonToolbar>Search Text: {searchText ?? '(none)'}</IonToolbar>
</IonFooter>
</IonPage>
);
};
import { Component, h } from '@stencil/core';
@Component({
tag: 'searchbar-example',
styleUrl: 'searchbar-example.css',
})
export class SearchbarExample {
render() {
return [
// Default Searchbar
<ion-searchbar></ion-searchbar>,
// Searchbar with cancel button always shown
<ion-searchbar showCancelButton="always"></ion-searchbar>,
// Searchbar with cancel button never shown
<ion-searchbar showCancelButton="never"></ion-searchbar>,
// Searchbar with cancel button shown on focus
<ion-searchbar showCancelButton="focus"></ion-searchbar>,
// Searchbar with danger color
<ion-searchbar color="danger"></ion-searchbar>,
// Searchbar with value
<ion-searchbar value="Ionic"></ion-searchbar>,
// Searchbar with telephone type
<ion-searchbar type="tel"></ion-searchbar>,
// Searchbar with numeric inputmode
<ion-searchbar inputmode="numeric"></ion-searchbar>,
// Searchbar disabled
<ion-searchbar disabled={true}></ion-searchbar>,
// Searchbar with a cancel button and custom cancel button text
<ion-searchbar showCancelButton="focus" cancelButtonText="Custom Cancel"></ion-searchbar>,
// Searchbar with a custom debounce
<ion-searchbar debounce={500}></ion-searchbar>,
// Animated Searchbar
<ion-searchbar animated={true}></ion-searchbar>,
// Searchbar with a placeholder
<ion-searchbar placeholder="Filter Schedules"></ion-searchbar>,
// Searchbar in a Toolbar
<ion-toolbar>
<ion-searchbar></ion-searchbar>
</ion-toolbar>,
];
}
}
<template>
<!-- Default Searchbar -->
<ion-searchbar></ion-searchbar>
<!-- Searchbar with cancel button always shown -->
<ion-searchbar show-cancel-button="always"></ion-searchbar>
<!-- Searchbar with cancel button never shown -->
<ion-searchbar show-cancel-button="never"></ion-searchbar>
<!-- Searchbar with cancel button shown on focus -->
<ion-searchbar show-cancel-button="focus"></ion-searchbar>
<!-- Searchbar with danger color -->
<ion-searchbar color="danger"></ion-searchbar>
<!-- Searchbar with value -->
<ion-searchbar value="Ionic"></ion-searchbar>
<!-- Searchbar with telephone type -->
<ion-searchbar type="tel"></ion-searchbar>
<!-- Searchbar with numeric inputmode -->
<ion-searchbar inputmode="numeric"></ion-searchbar>
<!-- Searchbar disabled -->
<ion-searchbar disabled="true"></ion-searchbar>
<!-- Searchbar with a cancel button and custom cancel button text -->
<ion-searchbar show-cancel-button="focus" cancel-button-text="Custom Cancel"></ion-searchbar>
<!-- Searchbar with a custom debounce -->
<ion-searchbar debounce="500"></ion-searchbar>
<!-- Animated Searchbar -->
<ion-searchbar animated></ion-searchbar>
<!-- Searchbar with a placeholder -->
<ion-searchbar placeholder="Filter Schedules"></ion-searchbar>
<!-- Searchbar in a Toolbar -->
<ion-toolbar>
<ion-searchbar></ion-searchbar>
</ion-toolbar>
</template>
<script>
import { IonSearchbar, IonToolbar } from '@ionic/vue';
import { defineComponent } from 'vue';
export default defineComponent({
components: { IonSearchbar, IonToolbar },
});
</script>
Properties
animated
Description | true の場合、検索バーのアニメーションを有効にします。 |
Attribute | animated |
Type | boolean |
Default | false |
autocomplete
Description | Inputのオートコンプリートプロパティを設定します。 |
Attribute | autocomplete |
Type | "on" | "off" | "name" | "honorific-prefix" | "given-name" | "additional-name" | "family-name" | "honorific-suffix" | "nickname" | "email" | "username" | "new-password" | "current-password" | "one-time-code" | "organization-title" | "organization" | "street-address" | "address-line1" | "address-line2" | "address-line3" | "address-level4" | "address-level3" | "address-level2" | "address-level1" | "country" | "country-name" | "postal-code" | "cc-name" | "cc-given-name" | "cc-additional-name" | "cc-family-name" | "cc-number" | "cc-exp" | "cc-exp-month" | "cc-exp-year" | "cc-csc" | "cc-type" | "transaction-currency" | "transaction-amount" | "language" | "bday" | "bday-day" | "bday-month" | "bday-year" | "sex" | "tel" | "tel-country-code" | "tel-national" | "tel-area-code" | "tel-local" | "tel-extension" | "impp" | "url" | "photo" |
Default | 'off' |
autocorrect
Description | Inputのオートコレクトプロパティを設定します。 |
Attribute | autocorrect |
Type | "off" | "on" |
Default | 'off' |
cancelButtonIcon
Description | Set the cancel button icon. Only applies to md mode. Defaults to "arrow-back-sharp" . |
Attribute | cancel-button-icon |
Type | string |
Default | config.get('backButtonIcon', 'arrow-back-sharp') as string |
cancelButtonText
Description | キャンセルボタンのテキストを設定します。 ios modeのみ適用されます。 |
Attribute | cancel-button-text |
Type | string |
Default | 'Cancel' |
clearIcon
Description | Set the clear icon. Defaults to "close-circle" for ios and "close-sharp" for md . |
Attribute | clear-icon |
Type | string | undefined |
Default | undefined |
color
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. |
Attribute | color |
Type | string | undefined |
Default | undefined |
debounce
Description | キーを押すたびに ionChange イベントが発生するまでの待ち時間をミリ秒単位で設定します。これは ngModel や v-model などのフォームバインディングにも影響します。 |
Attribute | debounce |
Type | number |
Default | 250 |
disabled
Description | true の場合、ユーザはInputと対話することができません。 |
Attribute | disabled |
Type | boolean |
Default | false |
enterkeyhint
Description | A hint to the browser for which enter key to display. Possible values: "enter" , "done" , "go" , "next" , "previous" , "search" , and "send" . |
Attribute | enterkeyhint |
Type | "done" | "enter" | "go" | "next" | "previous" | "search" | "send" | undefined |
Default | undefined |
inputmode
Description | A hint to the browser for which keyboard to display. Possible values: "none" , "text" , "tel" , "url" , "email" , "numeric" , "decimal" , and "search" . |
Attribute | inputmode |
Type | "decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined |
Default | undefined |
mode
Description | modeは、どのプラットフォームのスタイルを使用するかを決定します。 |
Attribute | mode |
Type | "ios" | "md" |
Default | undefined |
placeholder
Description | Set the input's placeholder. placeholder can accept either plaintext or HTML as a string. To display characters normally reserved for HTML, they must be escaped. For example <Ionic> would become <Ionic> For more information: Security Documentation |
Attribute | placeholder |
Type | string |
Default | 'Search' |
searchIcon
Description | The icon to use as the search icon. Defaults to "search-outline" in ios mode and "search-sharp" in md mode. |
Attribute | search-icon |
Type | string | undefined |
Default | undefined |
showCancelButton
Description | Sets the behavior for the cancel button. Defaults to "never" . Setting to "focus" shows the cancel button on focus. Setting to "never" hides the cancel button. Setting to "always" shows the cancel button regardless of focus state. |
Attribute | show-cancel-button |
Type | "always" | "focus" | "never" |
Default | 'never' |
showClearButton
Description | Sets the behavior for the clear button. Defaults to "focus" . Setting to "focus" shows the clear button on focus if the input is not empty. Setting to "never" hides the clear button. Setting to "always" shows the clear button regardless of focus state, but only if the input is not empty. |
Attribute | show-clear-button |
Type | "always" | "focus" | "never" |
Default | 'focus' |
spellcheck
Description | true の場合、入力値のスペルチェックを有効にします。 |
Attribute | spellcheck |
Type | boolean |
Default | false |
type
Description | Inputの種類を設定します。 |
Attribute | type |
Type | "email" | "number" | "password" | "search" | "tel" | "text" | "url" |
Default | 'search' |
value
Description | 検索バーの値。 |
Attribute | value |
Type | null | string | undefined |
Default | '' |
Events
Name | Description |
---|---|
ionBlur | Inputのフォーカスが外れたときに発行されます。 |
ionCancel | キャンセルボタンがクリックされたときに発行されます。 |
ionChange | 値が変更されたときに発行されます。 |
ionClear | Clear Inputボタンがクリックされたときに発行されます。 |
ionFocus | Inputにフォーカスが当たったときに発行されます。 |
ionInput | キーボード入力が発生したときに発行されます。 |
Methods
getInputElement
Description | 要素の内部で使用されているネイティブの <input> 要素を返します。 |
Signature | getInputElement() => Promise<HTMLInputElement> |
setFocus
Description | Sets focus on the specified ion-searchbar . Use this method instead of the global input.focus() . |
Signature | setFocus() => Promise<void> |
CSS Shadow Parts
No CSS shadow parts available for this component.
CSS Custom Properties
Name | Description |
---|---|
--background | 検索バーのInputの背景 |
--border-radius | 検索バーのInputのボーダー半径 |
--box-shadow | 検索バーのInputのボックスシャドウ |
--cancel-button-color | 検索バーのキャンセルボタンの色 |
--clear-button-color | 検索バーのクリアボタンの色 |
--color | 検索バーのテキストの色 |
--icon-color | 検索バーのアイコンの色 |
--placeholder-color | 検索バーのPlaceholderの色 |
--placeholder-font-style | 検索バーのPlaceholderのFont Style |
--placeholder-font-weight | 検索バーのPlaceholderのFont Weight |
--placeholder-opacity | 検索バーのPlaceholderの不透明度 |
Slots
No slots available for this component.