From 8fe4eecbb104111fad3c3c86a0197231dcc9b7b1 Mon Sep 17 00:00:00 2001 From: jasonmamy Date: Tue, 9 May 2017 15:09:08 -0700 Subject: [PATCH] feat(wheel-selector): add Native wheel Selector plugin (#1522) --- .../plugins/wheel-selector/index.ts | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 src/@ionic-native/plugins/wheel-selector/index.ts diff --git a/src/@ionic-native/plugins/wheel-selector/index.ts b/src/@ionic-native/plugins/wheel-selector/index.ts new file mode 100644 index 000000000..d2cfe3ee0 --- /dev/null +++ b/src/@ionic-native/plugins/wheel-selector/index.ts @@ -0,0 +1,126 @@ +import { Injectable } from '@angular/core'; +import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core'; + +export interface WheelSelectorOptions { + /** + * The title of the selector's input box + */ + title: string; + + /** + * The items to display (array of items). + * Example, 2 wheels: + * [{description: "1", description: "2", description: "3"}, + * {description: "Apple", description: "Pear", description: "Banana"}] + */ + items: {}; + + /** + * Which items to display by default, example ["2","Apple"] (if items.length is 2 for instance) + */ + defaultItems?: any; + + /** + * The 'ok' button text + * Default: Done + */ + positiveButtonText?: string; + + /** + * The 'cancel' button text + * Default: Cancel + */ + negativeButtonText?: string; + + /** + * Android only - theme color, 'light' or 'dark'. + * Default: light + */ + theme?: string; + + /** + * Whether to have the wheels 'wrap' (Android only) + * Default: false + */ + wrapWheelText?: boolean; + + /** + * The json key to display, by default it is description, this allows for setting any + * key/value to be displayed + * Default: description + */ + displayKey?: string; +} + +export interface WheelSelectorData { + + data: any; + +} +/** + * @name WheelSelector Plugin + * @description Native wheel selector for Cordova (Android/iOS). + * + * @usage + * ``` + * import { WheelSelector } from 'ionic-native'; + * + * + * constructor(private selector: WheelSelector) { } + * + * ... + * + * let jsonData = { + * numbers: [ + * { description: "1" }, + * { description: "2" }, + * { description: "3" } + * ], + * fruits: [ + * { description: "Apple" }, + * { description: "Banana" }, + * { description: "Tangerine" } + * ], + * }; + * + * this.selector.show({ + * title: "Select some Fruit", + * items: [ + * [jsonData.numbers], + * [jsonData.fruits] + * ], + * }).then( + * result => { + * console.log('Selected: ' + result[0].description + ' at index: ' + result[0].index + * + ' and ' + result[1].description + ' at index: ' + result[1].index); + * }, + * err => console.log('Error occurred while getting result: ', err) + * ); + * + * ``` + * + * @interfaces + * WheelSelectorOptions + */ +@Plugin({ + pluginName: 'WheelSelector', + plugin: 'cordova-wheel-selector-plugin', + pluginRef: 'SelectorCordovaPlugin', + repo: 'https://github.com/jasonmamy/cordova-wheel-selector-plugin', + platforms: ['Android', 'iOS'] +}) + +@Injectable() +export class WheelSelector extends IonicNativePlugin { + + /** + * Shows the wheel selector + * @param {WheelSelectorOptions} options Options for the wheel selector + * @returns {Promise} Returns a promise that resolves with the selected items, or an error. + */ + @Cordova() + show(options: WheelSelectorOptions): Promise { + return; + } + +}