ActionSheetController
An Action Sheet is a dialog that lets the user choose from a set of
options. It appears on top of the app's content, and must be manually
dismissed by the user before they can resume interaction with the app.
Dangerous (destructive) options are made obvious in ios
mode. There are easy
ways to cancel out of the action sheet, such as tapping the backdrop or
hitting the escape key on desktop.
An action sheet is created from an array of buttons
, with each button
including properties for its text
, and optionally a handler
and role
.
If a handler returns false
then the action sheet will not be dismissed. An
action sheet can also optionally have a title
, subTitle
and an icon
.
A button's role
property can either be destructive
or cancel
. Buttons
without a role property will have the default look for the platform. Buttons
with the cancel
role will always load as the bottom button, no matter where
they are in the array. All other buttons will be displayed in the order they
have been added to the buttons
array. Note: We recommend that destructive
buttons are always the first button in the array, making them the top button.
Additionally, if the action sheet is dismissed by tapping the backdrop, then
it will fire the handler from the button with the cancel role.
You can pass all of the action sheet's options in the first argument of
the create method: ActionSheet.create(opts)
. Otherwise the action sheet's
instance has methods to add options, like setTitle()
or addButton()
.
Usage
import { ActionSheetController } from 'ionic-angular'
export class MyClass{
constructor(public actionSheetCtrl: ActionSheetController) {}
presentActionSheet() {
let actionSheet = this.actionSheetCtrl.create({
title: 'Modify your album',
buttons: [
{
text: 'Destructive',
role: 'destructive',
handler: () => {
console.log('Destructive clicked');
}
},
{
text: 'Archive',
handler: () => {
console.log('Archive clicked');
}
},
{
text: 'Cancel',
role: 'cancel',
handler: () => {
console.log('Cancel clicked');
}
}
]
});
actionSheet.present();
}
}
Instance Members
create(opts)
Open an action sheet with a title, subTitle, and an array of buttons
Param | Type | Details |
---|---|---|
opts |
ActionSheetOptions
|
Action sheet options |
Advanced
ActionSheet create options
Option | Type | Description |
---|---|---|
title | string |
The title for the Action Sheet. |
subTitle | string |
The sub-title for the Action Sheet. |
cssClass | string |
Additional classes for custom styles, separated by spaces. |
enableBackdropDismiss | boolean |
If the Action Sheet should close when the user taps the backdrop. |
buttons | array<any> |
An array of buttons to display. |
ActionSheet button options
Option | Type | Description |
---|---|---|
text | string |
The buttons text. |
icon | icon |
The buttons icons. |
handler | any |
An express the button should evaluate. |
cssClass | string |
Additional classes for custom styles, separated by spaces. |
role | string |
How the button should be displayed, destructive or cancel . If not role is provided, it will display the button without any additional styles. |
Dismissing And Async Navigation
After an action sheet has been dismissed, the app may need to also transition
to another page depending on the handler's logic. However, because multiple
transitions were fired at roughly the same time, it's difficult for the
nav controller to cleanly animate multiple transitions that may
have been kicked off asynchronously. This is further described in the
Nav Transition Promises
section. For action sheets,
this means it's best to wait for the action sheet to finish its transition
out before starting a new transition on the same nav controller.
In the example below, after the button has been clicked, its handler
waits on async operation to complete, then it uses pop
to navigate
back a page in the same stack. The potential problem is that the async operation
may have been completed before the action sheet has even finished its transition
out. In this case, it's best to ensure the action sheet has finished its transition
out first, then start the next transition.
let actionSheet = this.actionSheetCtrl.create({
title: 'Hello',
buttons: [{
text: 'Ok',
handler: () => {
// user has clicked the action sheet button
// begin the action sheet's dimiss transition
let navTransition = actionSheet.dismiss();
// start some async method
someAsyncOperation().then(() => {
// once the async operation has completed
// then run the next nav transition after the
// first transition has finished animating out
navTransition.then(() => {
this.nav.pop();
});
});
return false;
}
}]
});
actionSheet.present();
It's important to note that the handler returns false
. A feature of
button handlers is that they automatically dismiss the action sheet when their button
was clicked, however, we'll need more control regarding the transition. Because
the handler returns false
, then the action sheet does not automatically dismiss
itself. Instead, you now have complete control of when the action sheet has finished
transitioning, and the ability to wait for the action sheet to finish transitioning
out before starting a new transition.
Sass Variables
Property | Default | Description |
---|---|---|
$action-sheet-ios-text-align |
center |
Text align of the action sheet |
$action-sheet-ios-padding |
0 10px |
Padding of the action sheet |
$action-sheet-ios-group-margin-bottom |
10px |
Bottom margin of the action sheet button group |
$action-sheet-ios-background |
#f9f9f9 |
Background color of the action sheet |
$action-sheet-ios-border-color |
#d6d6da |
Border color of the action sheet |
$action-sheet-ios-border-radius |
13px |
Border radius of the action sheet |
$action-sheet-ios-title-padding |
1.5rem |
Padding of the action sheet title |
$action-sheet-ios-title-color |
#8f8f8f |
Color of the action sheet title |
$action-sheet-ios-title-font-size |
1.3rem |
Font size of the action sheet title |
$action-sheet-ios-title-font-weight |
400 |
Font weight of the action sheet title |
$action-sheet-ios-title-border-radius |
0 |
Border radius of the action sheet title |
$action-sheet-ios-button-min-height |
5.6rem |
Minimum height of the action sheet button |
$action-sheet-ios-button-padding |
18px |
Padding of the action sheet button |
$action-sheet-ios-button-text-color |
#007aff |
Text color of the action sheet button |
$action-sheet-ios-button-font-size |
2rem |
Font size of the action sheet button |
$action-sheet-ios-button-border-width |
$hairlines-width |
Border width of the action sheet button |
$action-sheet-ios-button-border-style |
solid |
Border style of the action sheet button |
$action-sheet-ios-button-border-color |
#d1d3d6 |
Border color of the action sheet button |
$action-sheet-ios-button-background |
transparent |
Background color of the action sheet button |
$action-sheet-ios-button-background-activated |
#ebebeb |
Background color of the activated action sheet button |
$action-sheet-ios-button-destructive-text-color |
#f53d3d |
Destructive text color of the action sheet button |
$action-sheet-ios-button-cancel-background |
#fff |
Background color of the action sheet cancel button |
$action-sheet-ios-button-cancel-font-weight |
600 |
Font weight of the action sheet cancel button |
Property | Default | Description |
---|---|---|
$action-sheet-md-text-align |
left |
Text align of the action sheet |
$action-sheet-md-background |
#fafafa |
Background color of the action sheet |
$action-sheet-md-group-margin-bottom |
8px |
Bottom margin of the action sheet button group |
$action-sheet-md-title-color |
#757575 |
Color of the action sheet title |
$action-sheet-md-title-font-size |
1.6rem |
Font size of the action sheet title |
$action-sheet-md-title-padding |
11px 16px 17px |
Padding of the action sheet title |
$action-sheet-md-button-min-height |
4.8rem |
Minimum height of the action sheet button |
$action-sheet-md-button-text-color |
#222 |
Text color of the action sheet button |
$action-sheet-md-button-font-size |
1.6rem |
Font size of the action sheet button |
$action-sheet-md-button-padding |
0 16px |
Padding of the action sheet button |
$action-sheet-md-button-background |
transparent |
Background color of the action sheet button |
$action-sheet-md-button-background-activated |
#f1f1f1 |
Background color of the action sheet activated button |
$action-sheet-md-icon-font-size |
2.4rem |
Font size of the icon in the action sheet button |
$action-sheet-md-icon-width |
2.3rem |
Width of the icon in the action sheet button |
$action-sheet-md-icon-text-align |
center |
Text align of the icon in the action sheet button |
$action-sheet-md-icon-vertical-align |
middle |
Vertical align of the icon in the action sheet button |
$action-sheet-md-icon-margin |
0 32px 0 0 |
Margin of the icon in the action sheet button |
Property | Default | Description |
---|---|---|
$action-sheet-wp-text-align |
left |
Text align of the action sheet |
$action-sheet-wp-background |
#fff |
Background color of the action sheet |
$action-sheet-wp-box-shadow-color |
rgba(0, 0, 0, .2) |
Box shadow color of the action sheet |
$action-sheet-wp-box-shadow |
0 -1px 0 $action-sheet-wp-box-shadow-color |
Box shadow of the action sheet |
$action-sheet-wp-title-padding |
11px 16px 17px |
Padding of the action sheet title |
$action-sheet-wp-title-font-size |
2rem |
Font size of the action sheet title |
$action-sheet-wp-title-color |
#4d4d4d |
Color of the action sheet title |
$action-sheet-wp-title-text-align |
$action-sheet-wp-text-align |
Text align of the action sheet title |
$action-sheet-wp-button-height |
4.8rem |
Height of the action sheet button |
$action-sheet-wp-button-text-color |
#4d4d4d |
Text color of the action sheet button |
$action-sheet-wp-button-font-size |
1.5rem |
Font size of the action sheet button |
$action-sheet-wp-button-padding |
0 16px |
Padding of the action sheet button |
$action-sheet-wp-button-text-align |
$action-sheet-wp-text-align |
Text align of the action sheet button |
$action-sheet-wp-button-background |
transparent |
Background color of the action sheet button |
$action-sheet-wp-button-background-activated |
$list-wp-activated-background-color |
Background color of the action sheet activated button |
$action-sheet-wp-icon-font-size |
2.4rem |
Font size of the icon in the action sheet button |
$action-sheet-wp-icon-width |
2.3rem |
Width of the icon in the action sheet button |
$action-sheet-wp-icon-text-align |
center |
Text align of the icon in the action sheet button |
$action-sheet-wp-icon-vertical-align |
middle |
Vertical align of the icon in the action sheet button |
$action-sheet-wp-icon-margin |
0 20px 0 0 |
Margin of the icon in the action sheet button |