Skip to main content
Version: v6

ion-picker

scoped

A Picker is a dialog that displays a row of buttons and columns underneath. It appears on top of the app's content, and at the bottom of the viewport.

Single Column

Display a list of options in a single, scrollable column.

Multiple Columns

Display multiple columns of different options.

Interfaces

PickerButton

interface PickerButton {
text?: string;
role?: string;
cssClass?: string | string[];
handler?: (value: any) => boolean | void;
}

PickerColumn

interface PickerColumn {
name: string;
align?: string;
selectedIndex?: number;
prevSelected?: number;
prefix?: string;
suffix?: string;
options: PickerColumnOption[];
cssClass?: string | string[];
columnWidth?: string;
prefixWidth?: string;
suffixWidth?: string;
optionsWidth?: string;
}

PickerColumnOption

interface PickerColumnOption {
text?: string;
value?: any;
disabled?: boolean;
duration?: number;
transform?: string;
selected?: boolean;
}

PickerOptions

interface PickerOptions {
columns: PickerColumn[];
buttons?: PickerButton[];
cssClass?: string | string[];
showBackdrop?: boolean;
backdropDismiss?: boolean;
animated?: boolean;

mode?: Mode;
keyboardClose?: boolean;
id?: string;
htmlAttributes?: { [key: string]: any };

enterAnimation?: AnimationBuilder;
leaveAnimation?: AnimationBuilder;
}

Usage

<ion-button expand="block" (click)="presentPicker()">Show Picker</ion-button>
import { Component } from '@angular/core';
import { PickerController } from '@ionic/angular';
@Component({
selector: 'app-picker-example',
template: 'picker-example.component.html',
})
export class PickerExample {
private selectedAnimal: string;
constructor(private pickerController: PickerController) {}

async presentPicker() {
const picker = await this.pickerController.create({
buttons: [
{
text: 'Confirm',
handler: (selected) => {
this.selectedAnimal = selected.animal.value;
},
},
],
columns: [
{
name: 'animal',
options: [
{ text: 'Dog', value: 'dog' },
{ text: 'Cat', value: 'cat' },
{ text: 'Bird', value: 'bird' },
],
},
],
});
await picker.present();
}
}

Properties

animated

DescriptionIf true, the picker will animate.
Attributeanimated
Typeboolean
Defaulttrue

backdropDismiss

DescriptionIf true, the picker will be dismissed when the backdrop is clicked.
Attributebackdrop-dismiss
Typeboolean
Defaulttrue

buttons

DescriptionArray of buttons to be displayed at the top of the picker.
Attributeundefined
TypePickerButton[]
Default[]

columns

DescriptionArray of columns to be displayed in the picker.
Attributeundefined
TypePickerColumn[]
Default[]

cssClass

DescriptionAdditional classes to apply for custom CSS. If multiple classes are provided they should be separated by spaces.
Attributecss-class
Typestring ๏ฝœ string[] ๏ฝœ undefined
Defaultundefined

duration

DescriptionNumber of milliseconds to wait before dismissing the picker.
Attributeduration
Typenumber
Default0

enterAnimation

DescriptionAnimation to use when the picker is presented.
Attributeundefined
Type((baseEl: any, opts?: any) => Animation) ๏ฝœ undefined
Defaultundefined

htmlAttributes

DescriptionAdditional attributes to pass to the picker.
Attributeundefined
Typeundefined ๏ฝœ { [key: string]: any; }
Defaultundefined

keyboardClose

DescriptionIf true, the keyboard will be automatically dismissed when the overlay is presented.
Attributekeyboard-close
Typeboolean
Defaulttrue

leaveAnimation

DescriptionAnimation to use when the picker is dismissed.
Attributeundefined
Type((baseEl: any, opts?: any) => Animation) ๏ฝœ undefined
Defaultundefined

mode

DescriptionThe mode determines which platform styles to use.
Attributemode
Type"ios" ๏ฝœ "md"
Defaultundefined

showBackdrop

DescriptionIf true, a backdrop will be displayed behind the picker.
Attributeshow-backdrop
Typeboolean
Defaulttrue

Events

NameDescription
ionPickerDidDismissEmitted after the picker has dismissed.
ionPickerDidPresentEmitted after the picker has presented.
ionPickerWillDismissEmitted before the picker has dismissed.
ionPickerWillPresentEmitted before the picker has presented.

Methods

dismiss

DescriptionDismiss the picker overlay after it has been presented.
Signaturedismiss(data?: any, role?: string) => Promise<boolean>

getColumn

DescriptionGet the column that matches the specified name.
SignaturegetColumn(name: string) => Promise<PickerColumn ๏ฝœ undefined>

onDidDismiss

DescriptionReturns a promise that resolves when the picker did dismiss.
SignatureonDidDismiss<T = any>() => Promise<OverlayEventDetail<T>>

onWillDismiss

DescriptionReturns a promise that resolves when the picker will dismiss.
SignatureonWillDismiss<T = any>() => Promise<OverlayEventDetail<T>>

present

DescriptionPresent the picker overlay after it has been created.
Signaturepresent() => Promise<void>

CSS Shadow Parts

No CSS shadow parts available for this component.

CSS Custom Properties

NameDescription
--backdrop-opacityOpacity of the backdrop
--backgroundBackground of the picker
--background-rgbBackground of the picker in rgb format
--border-colorBorder color of the picker
--border-radiusBorder radius of the picker
--border-styleBorder style of the picker
--border-widthBorder width of the picker
--heightHeight of the picker
--max-heightMaximum height of the picker
--max-widthMaximum width of the picker
--min-heightMinimum height of the picker
--min-widthMinimum width of the picker
--widthWidth of the picker

Slots

No slots available for this component.