WheelSelector Pluginβ
This plugin is still in beta stage and may not work as expected. Please submit any issues to the plugin repo.
Native wheel selector for Cordova (Android/iOS).
Repo: https://github.com/jasonmamy/cordova-wheel-selector-plugin
Installation
- Install the Cordova and Ionic Native plugins:
$ ionic cordova plugin add cordova-wheel-selector-plugin $ npm install --save @ionic-native/wheel-selector@4
- Add this plugin to your app's module
Supported platforms
- Android
- iOS
Usage
import { WheelSelector } from '@ionic-native/wheel-selector';
constructor(private selector: WheelSelector) { }
...
const jsonData = {
numbers: [
{ description: "1" },
{ description: "2" },
{ description: "3" }
],
fruits: [
{ description: "Apple" },
{ description: "Banana" },
{ description: "Tangerine" }
],
firstNames: [
{ name: "Fred", id: '1' },
{ name: "Jane", id: '2' },
{ name: "Bob", id: '3' },
{ name: "Earl", id: '4' },
{ name: "Eunice", id: '5' }
],
lastNames: [
{ name: "Johnson", id: '100' },
{ name: "Doe", id: '101' },
{ name: "Kinishiwa", id: '102' },
{ name: "Gordon", id: '103' },
{ name: "Smith", id: '104' }
]
};
...
// basic number selection, index is always returned in the result
selectANumber() {
this.selector.show({
title: "How Many?",
items: [
this.jsonData.numbers
],
}).then(
result => {
console.log(result[0].description + ' at index: ' + result[0].index);
},
err => console.log('Error: ', err)
);
}
...
// basic selection, setting initial displayed default values: '3' 'Banana'
selectFruit() {
this.selector.show({
title: "How Much?",
items: [
this.jsonData.numbers, this.jsonData.fruits
],
positiveButtonText: "Ok",
negativeButtonText: "Nope",
defaultItems: [
{index:0, value: this.jsonData.numbers[2].description},
{index: 1, value: this.jsonData.fruits[3].description}
]
}).then(
result => {
console.log(result[0].description + ' ' + result[1].description);
},
err => console.log('Error: ' + JSON.stringify(err))
);
}
...
// more complex as overrides which key to display
// then retrieve properties from original data
selectNamesUsingDisplayKey() {
this.selector.show({
title: "Who?",
items: [
this.jsonData.firstNames, this.jsonData.lastNames
],
displayKey: 'name',
defaultItems: [
{index:0, value: this.jsonData.firstNames[2].name},
{index: 0, value: this.jsonData.lastNames[3].name}
]
}).then(
result => {
console.log(result[0].name + ' (id= ' + this.jsonData.firstNames[result[0].index].id + '), ' +
result[1].name + ' (id=' + this.jsonData.lastNames[result[1].index].id + ')');
},
err => console.log('Error: ' + JSON.stringify(err))
);
}
Instance Members
show(options)
Shows the wheel selector
Param | Type | Details |
---|---|---|
options |
WheelSelectorOptions
|
Options for the wheel selector |
Returns: Promise<WheelSelectorData>
Returns a promise that resolves with the selected items, or an error.
hideSelector()
Platforms:iOS
Hide the selector
Returns: Promise<void>
WheelSelectorOptions
Param | Type | Details |
---|---|---|
title |
string
|
The title of the selector's input box |
items |
WheelSelectorItem[][]
|
The items to display (array of items). |
defaultItems |
DefaultItem[]
|
Which items to display by default. (optional) |
positiveButtonText |
string
|
The 'ok' button text Default: Done (optional) |
negativeButtonText |
string
|
The 'cancel' button text Default: Cancel (optional) |
theme |
'light' | 'dark'
|
Android only - theme color, 'light' or 'dark'. Default: light (optional) |
wrapWheelText |
boolean
|
Whether to have the wheels 'wrap' (Android only) Default: false (optional) |
displayKey |
string
|
The json key to display, by default it is description, this allows for setting any key/value to be displayed Default: description (optional) |