# Titanium Angular - Helpers and Services

Titanium Angular comes with a set of helpers that provide a modernized access to commonly used features of our Titanium SDK. All of these employ a Promise-based API and try to abstract away repetitive steps from the original Titanium APIs. However, they are purely a convenience feature and won't replace any existing Titanium APIs.

# User Interface

# Dialogs

To ease the creation of dialogs, Titanium Angular comes with several predefined dialogs.

# AlertDialog

The AlertDialog helper allows you to display a simple alert with a single button. Besides the dialog's title and message you can also specify an optional okButtonText.

AlertDialog

import { AlertDialog } from 'titanium-angular';

const alertDialog = new AlertDialog({
  title: 'Alert',
  message: 'This is awesome!'
});
alertDialog.show().then(() => console.log(`Alert closed`));

# ConfirmDialog

A confirm dialog will display a dialog using the title and message properties. You can also change the button text through the okButtonText and cancelButtonText options.

ConfirmDialog

import { ConfirmDialog, ConfirmResult } from 'titanium-angular';

const confirmDialog = new ConfirmDialog({
  title: 'Confirm',
  message: 'Do you want to continue?'
});
confirmDialog.show().then((result: ConfirmResult) => {
  if (result === ConfirmResult.Ok) {
    console.log('Confirmed!');
  } else if (result === ConfirmResult.Cancel) {
    console.log('Canceled!');
  }
});

# Prompt Dialog

To prompt a user for some text input you can use the prompt dialog.

❗️ Warning

This has not yet been impletement with the current tech preview.

# Custom Dialogs

Besides those predefined dialogs you can also completely customize your dialogs using the BaseDialog class. A base dialog accepts the title and message options. You can then add multiple DialogAction to your dialog which represent a button of the dialog with a title and an optional handler function to call if that button is pressed.

BaseDialog

import { BaseDialog, DialogAction } from 'titanium-angular';

const dialog = new BaseDialog('Dialog title', 'Some message');

// Add a simple button
dialog.addAction(new DialogAction('Ok', () => console.log('Ok button pressed!')));

// Add a button representing the cancel action.
const cancelAction = new DialogAction('Cancel', () => console.log('Are you really gonna quit now?'));
cancelAction.cancel = true;
dialog.addAction(cancelAction);

// Add a button with the destructive option
const destructiveAction = new DialogAction('Abort', () => console.log('Ok ok, we are done here.'));
destructiveAction.destructive = true;
dialog.addAction(destructiveAction);

By default both the cancel and destructive properties are set to false.

# Picker (Android only)

Handle the common use case of date and time pickers presented as modals with the following helper classes.

# Time Picker

A simple time picker can be created with a minDate, maxValue, and value options. All of those options are optional and will accept a Date object. Passing an empty options object results in no restrictions on the selectable time frame and the current time will be pre-selected.

TimePicker

const timePicker = new TimePicker({});
 timePicker.show().then(selectedTime => {
     console.log(`Selected time: ${selectedTime}`);
 }).catch(() => {
     console.log('Time selection canceled');
 });

# Date Picker

Selecting both the date and a time can be achieved with the date picker. It accepts the minDate, maxValue and value options. All of those options are optional and will accept a Date object. Passing an empty options object results in no restrictions on the selectable dates and the current date and time will be pre-selected.

DatePicker

const datePicker = new DatePicker({});
datePicker.show().then(selectedDate => {
    console.log(`Selected date: ${selectedDate}`);
}).catch(() => {
    console.log('Date selection canceled');
});

# Device

# Device environment

Allows to check on which platform the app is currently running.

@Component({templateUrl: "./some.component.html"})
class SomeComponent implements OnInit {
    constructor(private device: DeviceEnvironment) {

    }

    onInit() {
        if (this.device.runs('android')) {
            // ...
        }
    }
}

Valid platform names are android and ios.