Skip to content

Latest commit

 

History

History
1667 lines (1259 loc) · 98 KB

CHANGELOG.md

File metadata and controls

1667 lines (1259 loc) · 98 KB

2.0.0-beta.11 (2016-08-05)

BREAKING CHANGES

Overlays

  • Overlay components, such as Alert or Modals, should now be created using its injected provider.

  • Overlays now have the present() method on the overlay’s instance, rather than using nav.present(overlayInstance).

  • All overlays now present on top of all app content, to include menus.

  • Below is an example of the change to Alert, but the pattern is the same for all overlays: ActionSheet, Loading, Modal, Picker, Popover, Toast

    WAS:

    import { NavController, Alert } from ‘ionic-angular’;
    
    constructor(public nav: NavController) {
    }
    
    doAlert() {
      let alert = Alert.create({
         title: 'Alert',
      });
      this.nav.present(alert);
    }
    

    NOW:

    import { AlertController } from ‘ionic-angular’;
    
    constructor(public alertCtrl: AlertController) {
    }
    
    doAlert() {
      let alert = this.alertCtrl.create({
        title: 'Alert'
      });
      alert.present();
    }
    

Select / Option #7334

The Option component’s checked attribute has been renamed to selected in order to make an option selected. This follows the MDN spec for a select option: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option

If a ngModel is added to the Select component the value of the ngModel will take precedence over the selected attribute.

See the Select and Option documentation for usage examples.

Tab Input/Config #7143

Tab input/config options have been renamed. The following options were renamed:

  • tabbarHighlight -> tabsHighlight
  • tabbarLayout -> tabsLayout
  • tabSubPages -> tabsHideOnSubPages
  • tabbarPlacement -> tabsPlacement

The previous names have been deprecated. They will still work in the current release but will be removed in the future so please update to the new names.

Material Design Tabs #7455

Material Design mode defaults have changed to the following:

tabsHighlight: false,
tabsPlacement: 'bottom',
tabsHideOnSubPages: false

tabsHighlight can now be passed as an attribute on the ion-tabs element, this allows for tabs to be added in multiple places inside of an app and enable the highlight on some of them.

Styling of the Material Design tabs reflects the spec for bottom navigation: https://material.google.com/components/bottom-navigation.html

To get the old style of tabs, override the config in your bootstrap, for example:

ionicBootstrap(ConferenceApp, [ConferenceData, UserData], {
  platforms: {
    android: {
      tabsPlacement: 'top',
      tabsHideOnSubPages: true,
      tabsHighlight: true
    }
  }
});

And optionally override any of the Sass variables for md mode in theme/app.md.scss:

$tabs-md-tab-text-capitalization: uppercase;
$tabs-md-tab-font-weight: 500;
$tabs-md-tab-text-transform: scale(1);

For a searchable list of all of the Sass variables, see the theming documentation: http://ionicframework.com/docs/v2/theming/overriding-ionic-variables/

Input Highlight #6449

Fixed typos in the input highlight variables:

  • $text-input-md-hightlight-color-valid -> $text-input-md-highlight-color-valid
  • $text-input-wp-hightlight-color-valid -> $text-input-wp-highlight-color-valid

Modified variables to turn on/off the highlight:

ios (defaults to false for all):

$text-input-ios-show-focus-highlight: false !default;
$text-input-ios-show-valid-highlight: $text-input-ios-show-focus-highlight !default;
$text-input-ios-show-invalid-highlight: $text-input-ios-show-focus-highlight !default;

md (defaults to true for all):

$text-input-md-show-focus-highlight: true !default;
$text-input-md-show-valid-highlight: $text-input-md-show-focus-highlight !default;
$text-input-md-show-invalid-highlight: $text-input-md-show-focus-highlight !default;

wp (defaults to true for all):

$text-input-wp-show-focus-highlight: true !default;
$text-input-wp-show-valid-highlight: $text-input-wp-show-focus-highlight !default;
$text-input-wp-show-invalid-highlight: $text-input-wp-show-focus-highlight !default;

Steps to Upgrade to Beta 11

  1. Run the following command in a terminal to update the npm dependencies:
  1. Update all Overlay components to be presented by their controller instead of NavController. For example, to update the popover component, the following code:
constructor(private nav: NavController) {}

presentPopover(event) {
  let popover = Popover.create(PopoverPage);
  this.nav.present(popover, { ev: event });
}

becomes:

constructor(private popoverCtrl: PopoverController) {}

presentPopover(event) {
  let popover = this.popoverCtrl.create(PopoverPage);
  popover.present({ ev: event });
}
  1. Update any uses of ViewController.onDismiss to ViewController.onDidDismiss. The following code on dismiss of a modal:
modal.onDismiss(() => {

});

becomes:

modal.onDidDismiss(() => {

});
  1. Update any uses of checked on an <ion-option> to use selected.

  2. If you are using any of the tab config variables, update them to reflect the new names above.

  3. If you are using any of the Sass Variables to override tabs or input highlights, update them to reflect the new names above.

  4. Please see the Ionic Conference App for an example of upgrading to Beta 11.

Bug Fixes

  • activator: do not activate elements while scrolling (845a516), closes #7141
  • animation: ele as string selector (9fa31a1)
  • animation: fix easing timing function (0cb093e), closes #7130
  • app: add status bar padding when tab subpages are hidden (d01ee4b), closes #7203
  • backdrop: flicker in UIWebView (44ab527)
  • backdrop: use raf when adding/removing disable-scroll css (941cb1d)
  • bootstrap: return promise and resolve ionicBootstrap (aebdf2f), closes #7145
  • bootstrap: tapclick is injected, probably (7358072)
  • button: apply css for buttons w/ ngIf (816a648), closes #5927
  • button: outline buttons do not have hairline borders in iOS (4e88f89)
  • datetime: format seconds token (4fff262), closes #6951
  • datetime-util: fix convertDataToISO to handle negative timezone offsets (ba53a23)
  • generator: change nav to navCtrl (b19547c)
  • gestures: detecting swipe angle correctly + sliding item logic fix (d230cb4)
  • input: add input highlight for ios, fix the highlight size (11a24b9), closes #6449
  • item: sliding item is closed when tapped (7aa559a), closes #7094
  • loading: clear timeout if dismissed before timeout fires (5bbe31a)
  • loading: fix loading overlay during app init (b615c60), closes #6209
  • menu: add statusbarPadding to the header and content in a menu (a468fde), closes #7385
  • menu: fix content going under header (3cd31c3), closes #7084
  • menu: getBackdropElement (cac1d4f)
  • menu: only one menu can be opened at a time (cac378f), closes #6826
  • menu: swipe menu is triggered when the swipe |angle| < 40º (32a70a6)
  • nav: fire lifecycle events from app root portal (a4e393b)
  • nav: fix menuCtrl reference in swipe back (55a5e83)
  • nav: register child nav when created from modal (61a8625)
  • picker: fix iOS 8 picker display (86fd8a4), closes #7319
  • popover: remove min-height from ios, add sass variables (55bc32d), closes #7215
  • range: add mouse listeners to document (267ced6)
  • range: align the label in an item range to the center (d675d39), closes #7046
  • range: ion-label stacked with ion-range (5a8fe82), closes #7046
  • range: set ticks to an empty array to prevent errors (7a2ad99)
  • reorder: better style (f289ac6)
  • reorder: canceled reorder is animated smoothly back (8483a43)
  • reorder: non ion-item elements can be reordered (ea9dd02), closes #7339
  • reorder: reorder can be used with any element (d993a1b)
  • scroll: fix scrolling after switching tabs (e4bbcc6), closes #7154
  • select: add the cssClass passed by the user to the alert for a select (81ddd7f), closes #6835
  • slides: delay loading slides until view ready (580b8d5), closes #7089
  • sliding: much better UX + performance (d6f62bc), closes #6913 #6958
  • tabs: add sass variable for inactive opacity and pass it to the colors loop (99efa36)
  • tabs: center tabbar content (997d54e)
  • tabs: fix preloadTabs null element reference (2d19308), closes #7109
  • tabs: make the text color opaque instead of the entire button (dd969a2), closes #6638
  • util: UIEventManager should handle touchcancel event (b805602)

Features

  • alert: allow smooth overflow scrolling (5542a93)
  • content: add a resize function to recalculate the content size (1fe1c1e)
  • footer: apply shadow on MD footer and tabbar bottom (686c262)
  • gesture: Introducing new gesture controller (9f19023)
  • gesture-controller: disable/enable scrolling (72c24bc)
  • header: apply shadow on MD headers (6fa2faf)
  • ion-content: iOS only scroll bounce (5c80445)
  • select: add disabled status in select options (76619cf)
  • tabs: apply shadow on MD tabbar top (1f4b3e2)
  • tabs: add the transition for material design tabs (eea7e6b)
  • toolbar: add attributes to hide all borders and box shadows (88b637b), closes #7237
  • viewcontroller: add onWillDismiss callback (ec99bfd), closes #6702

Performance Improvements

  • animation: using will-change when using progressStep() (267aa32)
  • menu: several improvements (86c5aaf)

2.0.0-beta.10 (2016-06-27)

BREAKING CHANGES

  • ion-content now takes up 100% of the viewport height, but it has margin added to the top and bottom to adjust for headers, footers, and tabs.

  • ion-content now accepts fullscreen as an attribute to to tell the content to scroll behind the header. This allows for transparent toolbars and tab pages without navbars!

  • ion-navbar no longer has the *navbar attribute.

  • ion-navbar should now be wrapped in an ion-header

    <ion-header>
      <ion-navbar></ion-navbar>
    </ion-header>
    
  • ios only: ion-toolbar/ion-navbar will always have borders to both the top and bottom of the element. Use the attributes no-border-top and no-border-bottom to remove the respective borders.

  • An ion-nav or ion-tabs is required in the root component. If one of these does not exist your content may be pushed up behind your header.

  • The position attribute has been removed from the ion-toolbar, it should now be placed in an ion-header or an ion-footer. It can also be placed inside of an ion-content.

  • The only elements that should be children of a page are ion-header, ion-content, and ion-footer.

Steps to Upgrade to Beta 10

  1. Run the following command from your command prompt/terminal to update to the latest version of the Ionic framework 2:
  1. Remove the *navbar attribute so this:
<ion-navbar *navbar>

becomes this:

<ion-navbar>
  1. Wrap any toolbars/navbars above the ion-content in an ion-header. The following:
<ion-navbar>
  <ion-title>
    Navbar Title
  </ion-title>
</ion-navbar>

<ion-toolbar>
  <ion-title>
    Toolbar Title
  </ion-title>
</ion-toolbar>

<ion-content>

</ion-content>

becomes:

<ion-header>
  <ion-navbar>
    <ion-title>
      Navbar Title
    </ion-title>
  </ion-navbar>

  <ion-toolbar>
    <ion-title>
      Toolbar Title
    </ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>

</ion-content>
  1. Wrap any toolbars/navbars after the ion-content in an ion-footer. The following:
<ion-content>

</ion-content>

<ion-toolbar position="bottom">
  <ion-title>Footer Toolbar</ion-title>
</ion-toolbar>

becomes:

<ion-content>

</ion-content>

<ion-footer>
  <ion-toolbar>
    <ion-title>Footer Toolbar</ion-title>
  </ion-toolbar>
</ion-footer>

Bug Fixes

  • animation: correctly apply will-change: transform (a1223da)
  • bootstrap: only add customProviders when present (0e9e85c)
  • content: adjust footer bottom based on the tabbar without padding (4567de2)
  • content: set footer height to 0 so it won't be undefined (3db67f9)
  • cordova: fix the status bar padding with the new structure (15642e4)
  • demos: updates @angular paths (b7826ba)
  • footer: show footer toolbar w/ tabbar bottom (99c50a1)
  • generator: fix closing tag for header (47e09a1)
  • header: optional ViewController injection (5a85d82)
  • input: allow button click when input has focus (ae86ab8), closes #6514 #6944
  • input: check if there is a value when setting value (d0b1930)
  • input: fix the clear input button to always be vertically aligned (e4cc672)
  • item: inherit overflow and text-overflow from the parent item in a paragraph (4009575)
  • item: listEle does not longer exist (22fad4c)
  • item: sliding item works with and without borders (2303c16), closes #7081
  • item: sliding items don't fire (click) when swiped (38ab17b)
  • modal: add class name to modal (6e34739), closes #7000
  • nav: auto set iOS black transition bg via css (7842991)
  • picker: adds align to the PickerColumn interface (b8551de)
  • refresher: adjust location after layout updates (603000f)
  • refresher: only listen for mousemove/touchmove when needed (1a58a41)
  • tabs: don't add outline to the class name if it is a logo icon (af22287), closes #6899
  • tabs: fix tabs rootNav (ae40edf)
  • tabs: hide tab's navbar when a page comes without a navbar (2d68089), closes #5556
  • tabs: reference parent instead of parentTabs (ed6d0fa)
  • tabs: swipeBackEnabled works with tabs as expected (2bff535)
  • toggle: host listeners are not longer needed (4aa322d)
  • toolbar: place iOS border on ion-header/footer (48c1ffd)
  • toolbar: position toolbar relative and add z-index (1d8ba4a)
  • virtualScroll: first node should use clientTop/clientLeft (2197d49)

Features

  • feature-detect: detect if backdrop-filter is supported (89564f1)
  • fullscreen: add fullscreen property to ion-content (f20c7e4)
  • item: sliding items work with list reorder (bfdc898)
  • list: add list headers and item dividers as items (712ff81), closes #5561
  • list: reorder list items (5c38921)
  • range: add debounce input for ionChange event (55eccb3), closes #6894
  • toolbar: control toolbar borders on top/bottom (3a7addf)

Performance Improvements

  • reorder: hit test refactored (6a52a4a)

2.0.0-beta.9 (2016-06-16)

BREAKING CHANGES

Searchbar Refactored

  • Searchbar's events no longer emit the Searchbar itself, they now emit the input's $event for each native input event. Instead of grabbing the value from the searchbar, you should grab it from the event target. For example:

    Previously when an event was called the function called would look similar to this:

    getItems(searchbar) {
      // set q to the value of the searchbar input
      var q = searchbar.value;
    }
    

    Now it should be similar to this:

    getItems(ev) {
      // set q to the value of the searchbar input
      var q = ev.target.value;
    }
    
  • ngModel is no longer required on Searchbar, but it can still be used. You can get the value of the input through Searchbar's Output Events.

  • Added the ability to pass autocomplete, autocorrect, spellcheck, and type to the searchbar which is passed to the input.

  • The hideCancelButton attribute was removed in favor of showCancelButton which is set to false by default.

Features

  • backButton: register back button actions (84f37cf)
  • item: add the ability to show a forward arrow on md and wp modes (c41f24d)
  • item: two-way sliding of items (c28aa53), closes #5073
  • item-sliding: two-way item sliding gestures (5d873ff)
  • modal: background click and escape key dismiss (#6831) (e5473b6), closes #6738
  • navPop: add nav pop method on the app instance (9f293e8)
  • popover: background dismiss, escape dismiss (1d78f78), closes #6817
  • range: range can be disabled (ccd926b)
  • select: add placeholder as an input for select (461ba11), closes #6862
  • tabs: track tab selecting history, create previousTab() method (d98f3c9)

Bug Fixes

  • button: check for icon and add css after content checked (f7b2ea2), closes #6662
  • click-block: click block is now showing on all screns. (761a1f6)
  • click-block: fix for the click block logic (9b78aeb)
  • datetime: add styling for datetime with different labels (adcd2fc), closes #6764
  • decorators: change to match angular style guide (9315c68)
  • item: change ion-item-swiping to use .item-wrapper css instead (31f62e7)
  • item: encode hex value in the detail arrow so it works on firefox (03986d4), closes #6830
  • item: improve open/close logic, update demos (db9fa7e)
  • item: item-options width calculated correctly (64af0c8)
  • item: sliding item supports dynamic options + tests (14d29e6), closes #5192
  • item: sliding item's width must be 100% (efcdd20)
  • menu: push/overlay working correctly in landscape (0c88589)
  • menu: swiping menu distinguishes between opening and closing direction (29791f8), closes #5511
  • Menu: fix right overlay menu when rotating device (07d55c5)
  • modal: add status bar padding to modal (181129b)
  • modal: change modal display so you can scroll the entire height (01bbc94), closes #6839
  • navigation: keep the click block up longer if the keyboard is open (#6884) (d6b7d5d)
  • popover: allow target element to be positioned at left:0 (ea450d4), closes #6896
  • popover: hide arrow if no event was passed (8350df0), closes #6796
  • range: bar height for ios should be 1px, add disabled for wp (f2a9f2d)
  • range: stop sliding after releasing mouse outside the window (9b2e934), closes #6802
  • scrollView: ensure scroll element exists for event listeners (1188730)
  • searchbar: add opacity so the searchbar doesn't show when it's moved over (b5f93f9)
  • searchbar: only trigger the input event on clear if there is a value (99fdcc0), closes #6382
  • searchbar: position elements when the value changes not after content checked (31c7e59)
  • searchbar: set a negative tabindex for the cancel button (614ace4)
  • searchbar: use the contrast color for the background in a toolbar (b4028c6), closes #6379
  • tabs: reduce padding on tabs for ios (fd9cdc7), closes #6679
  • tap: export isActivatable as a const so its transpiled correctly (ce3da97)
  • toast: close toasts when two or more are open (#6814) (8ff2476), closes [(#6814](https://github.com/(/issues/6814)
  • toast: toast will now be enabled (#6904) (c068828)
  • virtualScroll: detect changes in individual nodes (f049521), closes #6137

Performance Improvements

  • virtualScroll: improve UIWebView virtual scroll (ff1daa6)

2.0.0-beta.8 (2016-06-06)

BREAKING CHANGES

Ionic Decorators Removed

We’ve started the process of optimizing Ionic 2 to improve our support for Progressive Web Apps and upcoming Angular tooling. Because of this, we have removed the Ionic decorators in favor of using Angular's Component decorator. The following changes need to be made. For a step by step guide, see the Steps to Upgrade to Beta 8 section.

  • @App and @Page should be replaced with @Component.
  • IonicApp has been renamed to App.
  • ionicBootstrap is required to bootstrap the app.
  • Config is now the 3rd parameter in ionicBootstrap(rootComponent, providers, config).
  • Property prodMode is now a config option, enabling or disabling production mode.

Ionic Lifecycle Events Renamed

All Ionic lifecycle events have been renamed from starting with onPage to starting with ionView. These changes were made to make it more clear that the events belong to Ionic on each view.

  • onPageLoaded renamed to ionViewLoaded
  • onPageWillEnter renamed to ionViewWillEnter
  • onPageDidEnter renamed to ionViewDidEnter
  • onPageWillLeave renamed to ionViewWillLeave
  • onPageDidLeave renamed to ionViewDidLeave
  • onPageWillUnload renamed to ionViewWillUnload
  • onPageDidUnload renamed to ionViewDidUnload

Ionic Component Events Renamed

All Ionic component events have been renamed to start with ion. This is to prevent the Ionic events from clashing with native HTML events.

  • Checkbox
    • change -> ionChange
  • DateTime
    • change -> ionChange
    • cancel -> ionCancel
  • InfiniteScroll
    • infinite -> ionInfinite
  • Menu
    • opening -> ionDrag
    • opened -> ionOpen
    • closed -> ionClose
  • Option
    • select -> ionSelect
  • Picker
    • change -> ionChange
  • RadioButton
    • select -> ionSelect
  • RadioGroup
    • change -> ionChange
  • Refresher
    • refresh -> ionRefresh
    • pulling -> ionPull
    • start -> ionStart
  • Searchbar
    • input -> ionInput
    • blur -> ionBlur
    • focus -> ionFocus
    • cancel -> ionCancel
    • clear -> ionClear
  • Segment
    • change -> ionChange
    • select -> ionSelect
  • Select
    • change -> ionChange
    • cancel -> ionCancel
  • Slides
    • willChange -> ionWillChange
    • didChange -> ionDidChange
    • move -> ionDrag
  • TabButton
    • select -> ionSelect
  • Tab
    • select -> ionSelect
  • Tabs
    • change -> ionChange
  • Toggle
    • change -> ionChange

Steps to Upgrade to Beta 8

  1. Upgrade to Beta 8 by running the following command:
npm install --save [email protected]

or modify the following line to use beta.8 in your package.json and then run npm install:

"ionic-angular": "^2.0.0-beta.8",

This is the way to update Ionic to any version, more information can be found in the docs.

  1. Replace all instances of @Page with @Component:
import {Page} from 'ionic-angular';

@Page({

})

becomes

import {Component} from '@angular/core';

@Component({

})
  1. Replace @App with @Component and then bootstrap it. Move any config properties into the bootstrap:
import {App, Platform} from 'ionic-angular';

@App({
  templateUrl: 'build/app.html',
  providers: [ConferenceData, UserData],
  config: {
    tabbarPlacement: 'bottom'
}
export class MyApp {

}

becomes

import {Component} from '@angular/core';
import {ionicBootstrap, Platform} from 'ionic-angular';

@Component({
  templateUrl: 'build/app.html',
})
export class MyApp {

}

// Pass the main app component as the first argument
// Pass any providers for your app in the second argument
// Set any config for your app as the third argument:
// http://ionicframework.com/docs/v2/api/config/Config/

ionicBootstrap(MyApp, [ConferenceData, UserData], {
  tabbarPlacement: 'bottom'
});
  1. Rename any uses of IonicApp to App:
import {IonicApp} from 'ionic-angular';

constructor(
  private app: IonicApp
) {

becomes

import {App} from 'ionic-angular';

constructor(
  private app: App
) {
  1. Rename any uses of the lifecycle events, for example:
onPageDidEnter() {
  console.log("Entered page!");
}

becomes

ionViewDidEnter() {
  console.log("Entered page!");
}

The full list of lifecycle name changes is in the section above.

  1. Rename any Ionic events, for example:
<ion-slides (slideChangeStart)="onSlideChangeStart($event)">

becomes

<ion-slides (ionWillChange)="onSlideChangeStart($event)">

The full list of event name changes is in the section above.

Bug Fixes

  • build: correct link in output.wp.scss file to old ionic directory. (6113daf)
  • button: style disabled anchor/button elements (d0abbaf), closes #6108
  • config: pass custom providers in the bootstrap of the app (c74b3f7)
  • config: set the properties for each mode and add defaults (7def98c), closes #6132
  • datetime: clear out existing datetime data (c1ad804), closes #6614
  • datetime: fix ISO format when w/out timezone data (272daf2), closes #6608
  • infiniteScroll: ensure infinite doesn't fire when already loading (f7b1f37)
  • input: add form validation classes to the item (5498a36)
  • input: fix material design success/error highlighting on inputs (702a882)
  • input: fix the clear input placement on wp mode (4ba999e)
  • input: pass the control classes down to the native input (6180cb8)
  • ion-backdrop: new ion-backdrop can prevent background scrolling (a1a582b), closes #6656
  • item: remove border for the last item in an item-group (6b3e7ac), closes #6518
  • label: make all ion-labels stacked or floating stretch (b742e1f), closes #6134
  • menu: fix swipe to go back and left menu conflict (f18a624), closes #5575
  • menu: pass platform to menu type (7f597a0)
  • modal: fix onPageWillEnter (01110af), closes #6597
  • picker: safari fired pointerEnd() twice (#6708) (170cf8c), closes #6704
  • picker: use sanitizer on translate3d css prop (8598a2e)
  • platform: pass original event in EventEmitter (cc93366)
  • popover: allow popover to have an ion-content wrapping it (c801d18)
  • popover: position MD popover on top of element clicked (6bd91f0), closes #6683
  • popover: style the ion-content background in a popover to match popover bg (9ea89ea)
  • range: fix styling on range, add demo (d24b080)
  • range: prevent change detection exception (7e4b13d)
  • range: update range left/right margin on ios (27fa22f)
  • range: update the styling for all modes (061af93)
  • ripple: do not activate ripple if pointer moved (d57833c)
  • slides: Removing a slide via *ngIf now properly removes the slide and the bullet from th (dbe54b5), closes #6651
  • toast: remove backdrop, allow user interaction when up (d4d1f70), closes #6291
  • toast: remove the enableBackdropDismiss option on toast (aeeae3f)
  • toggle: do not fire change when initializing (cd2afb3), closes #6144
  • transition: reduce transition delay on MD (908fa03)

Features

  • alert: add Sass variables for the radio/checkbox labels when checked (9cc0dc7), closes #6289
  • item: add item-content attr selector (839adf8), closes #6643
  • menu: add opened/closed events (51ee8b7)
  • popover: add height auto for safari and remove ability to scroll on backdrop (620b7c8)
  • popover: add MD animation (1d0d755)
  • popover: add popover component (53fd3c3)
  • popover: add styling for the md pin (a25a552)
  • popover: adjust popover to position in the center with no event (1e7b572)
  • popover: change MD animation and use for WP also (44a7da8)
  • popover: change popover item background color to match wrapper (b0d71da)
  • popover: change template in popover to a page similar to modal (a96e36a)
  • popover: fix long popovers that go off the page (4db72cf)
  • popover: fix MD animations and start from the right side (e419ec6)
  • popover: modify the animation for each mode (57a1274)
  • popover: position popover in the top middle if no event (438a389)
  • popover: position the popover on transition instead of create (2cd1b51)
  • range: add ability to add labels to the left/right of range (fc819dd)
  • range: add md and wp styling, tweak ios styling (af6d5e4)
  • range: add styling for range-left/range-right md and wp (21753a8)
  • range: add styling for the range when knob is minimum md (c59c656)
  • range: create ion-range input (2c6e11b)
  • range: fix the knob on md so the transform isn't blurry (cffa84c)
  • range: only increase knob size when pin doesn't exist (47174df)

2.0.0-beta.7 (2016-05-19)

Features

  • datetime: add ion-datetime (1e331c9)
  • input: added functionality for clear input option on ion-input (d8e2849)
  • modal: add inset modal feature (a658524), closes #5423
  • modal: start of inset modals (a1a594d)
  • picker: add ios/md/wp picker styles (aa9a667)
  • picker: init picker (d5068f8)
  • platform: add a readySource as ready resolved value (f68ac8a)
  • platform: cordova pause/resume events (532096b)

Bug Fixes

  • app: add status bar padding to navbar when a tab subpage (62b97ce), closes #6368
  • app: fix status bar padding for inset modals (4d27680)
  • build: fix e2e, demos, and karma tests to use new angular module setup. (4c19d15)
  • button: add the solid class to bar buttons (658b29b)
  • button: add transparent background for clear/outline windows buttons (da5c065)
  • button: exclude solid from getting added to the button in the class (4252448)
  • button: remove unnecessary ion-button-effect elements (369d78b)
  • checkbox: add ability to align checkboxes to the right (e075ccd), closes #5925
  • datetime: fix property dayNames (it was using dayShort) (0bd736d)
  • datetime: improve parseTemplate (55ec80a)
  • grid: add ion-grid element which wraps the rows/cols and adds padding (a0c0228)
  • input: clear text input (bde103d)
  • input: remove old clearInput code and clean up UI, added onChange calls (71cd297)
  • loading: include cssClass in the Loading options (4c8ee95), closes #6365
  • nav: transition toolbars on iOS (daa4ccc), closes #5692
  • picker: number of dom children != number of options (#6551) (28cf16a)
  • radio: add styling for radio when item-left/item-right is added (4c5dd0b)
  • raf: test for undefined raf (1c16008)
  • segment: add disabled property to segment and segment button (4fca31e)
  • select: add min height to select text for windows since it shows border (e9c1442)
  • show-hide-when: add !important to display as this should always take precedence (617b7ac), closes #6270
  • slides: make slide method parameters optional (f355087)
  • slides: set class using renderer instead of host (132d8e9), closes #6275
  • tabs: move border to top for windows positioned bottom tabs (af2085e), closes #6526
  • tabs: remove min-width from tab so 5 tabs will fit (b4647cd), closes #6056
  • toast: add toast back to the components export (d7d4742)
  • toggle: add styling for toggle when placed left (ab82d53)
  • toolbar: add the mode to the inverse function for a toolbar (3ca3027), closes #6364
  • toolbar: md mode use the color contrast for toolbar button/title (9f54f16)
  • toolbar: remove color change from outline buttons in toolbar (6759074)
  • toolbar: set the text color of the toolbar based on the contrast of the background (74afc18)
  • toolbar: wp get title/button color from the contrast of toolbar background (62bd13b)
  • virtual-scroll: fixes from rc1 breaking changes (158f717)

BREAKING CHANGES

Angular Update to 2.0.0-rc.1

Angular has been updated to 2.0.0-rc.1, follow these steps to update Angular.

  1. Edit your package.json and remove the angular2 entry:
"angular2": "2.0.0-beta.15"
  1. Then, run the following command from a terminal to update Ionic and Angular, or take a look at the starter's package.json changes and update each version:
npm install --save [email protected] @angular/core @angular/compiler @angular/common @angular/platform-browser @angular/platform-browser-dynamic @angular/router @angular/http [email protected] [email protected] reflect-metadata
  1. Run the following command from a terminal to update the gulp task for ionic-gulp-scripts-copy:
npm install --save-dev [email protected]
  1. Then, change any imports in your application from angular2 to @angular. For example, the following:
import {ViewChild} from 'angular2/core';
import {Http} from 'angular2/http';

becomes

import {ViewChild} from '@angular/core';
import {Http} from '@angular/http';
  1. Remove the import for angular2-polyfills in index.html:
 <script src="build/js/angular2-polyfills.js"></script>

and replace it with the following scripts:

<script src="build/js/zone.js"></script>
<script src="build/js/Reflect.js"></script>
  1. Replace all template variables in ngFor with let. For example:
*ngFor="#session of group.sessions"

becomes

*ngFor="let session of group.sessions"
  1. Replace all template variables in virtualScroll. For example:
*virtualItem="#item"

becomes

*virtualItem="let item"
  1. View the Angular Changelog for more in depth changes.

IonicApp (df32836) references #6199

The getComponent method of IonicApp has been removed. Please use Angular's ViewChild instead.

For example, the following:

<ion-nav id="nav" [root]="rootPage" #content></ion-nav>
import {IonicApp} from 'ionic-angular';

@App({
  templateUrl: 'build/app.html'
})
class MyApp {
  constructor(private app: IonicApp) {}

  setPage() {
    let nav = this.app.getComponent('nav');
    nav.push(MyPage);
  }
}

Should be changed (in TypeScript) to use the Nav ViewChild:

<ion-nav [root]="rootPage" #content></ion-nav>
import {ViewChild} from '@angular/core';
import {Nav} from 'ionic-angular';

@App({
  templateUrl: 'build/app.html'
})
class MyApp {
  @ViewChild(Nav) nav: Nav;

  constructor() {}

  setPage() {
    this.nav.push(MyPage);
  }
}

and the same example (in JavaScript):

import {ViewChild} from '@angular/core';

@App({
  templateUrl: 'build/app.html',
  queries: {
    nav: new ViewChild('content')
  }
})
class MyApp {
  constructor() {}

  setPage() {
    this.nav.push(MyPage);
  }
}

Please see the Ionic Conference App for more usage examples.

Router

The Angular router is currently under heavy development and refactoring. As a result of this, Angular’s router is currently disabled within Ionic. If your app requires use of the router we recommend waiting until a future release of Ionic when Angular has completed work on the new router. However, this does not affect Ionic’s navigation system and it continues to work with the same API from previous versions.

Sass Changes

Toolbar #6364

iOS Mode

  • $toolbar-ios-button-color now has a default value of color-contrast($colors-ios, $toolbar-ios-background, ios) which will evaluate to the primary color for light background toolbars and white for dark background toolbars.

  • $bar-button-ios-color has been renamed to $toolbar-ios-button-color

  • $bar-button-ios-border-radius has been renamed to $toolbar-ios-button-border-radius

  • added variables for the toolbar ios title for easier styling:

    $toolbar-ios-title-font-weight
    $toolbar-ios-title-text-align
    $toolbar-ios-title-text-color
    

Windows Mode

  • $bar-button-wp-color was renamed to $toolbar-wp-button-color
  • $bar-button-wp-border-radius was renamed to $toolbar-wp-button-border-radius
  • Added $toolbar-wp-title-text-color for better control of the title color
  • Removed $toolbar-wp-button-color from the default themes

Material Design Mode

  • $toolbar-md-button-color no longer gets passed to the function that sets the contrast color for toolbar buttons, but it can still be used to set the default button color.
  • $bar-button-md-color was renamed to $toolbar-md-button-color
  • $bar-button-md-border-radius was renamed to $toolbar-md-button-border-radius
Toggle, Checkbox, Radio (4c5dd0b), (e075ccd), (ab82d53) references #5925

Renamed Sass variables in toggle, checkbox, and radio. Changed the word media in component-mode-media-padding (for example) to item-left.

2.0.0-beta.6 (2016-04-21)

Bug Fixes

  • nav: tabs should not dereg child navs (f3ddb0b), closes #6267
  • sass: fix sass errors (219059c)
  • toast: create unique toast id (e07f0ae)
  • toast: remove default duration, allow close button click when bd disabled (d6589e1)
  • toast: remove unused options (f9ea2d8)

Features

  • toast: add toast component (3fb79cf)
  • toast: display the toast even on page change unless dismissOnPageChange is passed (0264532), closes #5582

2.0.0-beta.5 (2016-04-20)

Bug Fixes

  • alert: remove justify content from buttons in an alert (9412a7c)
  • app: add iOS status bar padding to each mode (5a1c441), closes #5924
  • button: add a category to buttons so they won't get the button styles (35dd0ed), closes #6237
  • button: buttons don't get activated when ion-label contains exotic elements (0521ce2)
  • button: remove classes from buttons with categories (5f8edc2)
  • checkbox: add type="button" to button tag (7583ebf)
  • content: fix padding/margin attributes so all work on scroll-content (9020d52)
  • cordova: add status bar padding for content for all modes (f45ddf9), closes #5934
  • cordova: only target navbar section when it has the statusbar-padding (422c983)
  • focus: improve input focus control (e27452b), closes #5536
  • input: add 'type="button"' to button tag (f17f517)
  • input: blur when tapping outside input on iOS (f9b46c2), closes #5020
  • input: move nested function outside of if statment so as to fix issue related to strict (c8e58e5)
  • keyboard: remove content padding after input blur (e21c4d5), closes #5800
  • label: remove flex-basis to fix floating/stacked labels on iOS/Safari (cd62a4c), closes #6109
  • loading: present loading from root nav controller (f972908), closes #6121
  • platform: fire cordova platform.ready using zone (ba5624b), closes #6186
  • platform: run zone after cordova deviceready (e082bd1), closes #6087
  • sass: move the @at-root font import to the components file (8f08de1), closes #5931
  • searchbar: only show clear icon when focused on the searchbar (ecf9302), closes #5922
  • showHideWhen: remove hidden attribute on directives and use classes (5692abe), closes #5836
  • slides: add id to the slide component to grab the correct pagination (7263728), closes #5745 #5508
  • tabs: do not init w/ tab that is hidden or disabled (8d8cc4c), closes #6226
  • tabs: remove tabbarIcons and fix windows styling to use tabbarLayout (81dd1cc), closes #6126
  • toolbar: add border-top when toolbar is positioned to the bottom (29e6242), closes #5967
  • virtualScroll: load async data (16a283e), closes #6124

Features

  • app: getActiveNav() method (7777237)
  • backbutton: add hardware back button (68278b0), closes #5071
  • changeDetection: detach Tabs when not active (0c4171e)
  • changeDetection: detach ViewControllers when not active (b282e90)
  • config: create a method to access the global app injector which contains references the (17a9e6d), closes #5973
  • content: add scrollToBottom (bef4a67)
  • directives: auto provide IONIC_DIRECTIVES to all components (0a83f2f), closes #6092
  • platform: add backbutton event (156fdc3)
  • platform: default desktop to use material design (51032d2), closes #6003
  • select: fallback to alert interface when more than 6 opts (1c67b02)
  • select: using action-sheet as ion-select interface (81096f1)
  • slides: add ability to slide to specific index (a6091bd)
  • slides: add method to get previous index (a54361c)
  • statusbarPadding: add statusbar-padding css to content (98c2aab)
  • statusbarPadding: add statusbar-padding css to toolbars (44403d1)
  • tabs: enabled and show inputs (1b085e3), closes #5768
  • toggle: add animation for windows mode toggle (f841bef), closes #5981

Performance Improvements

BREAKING CHANGES

  • tabs: tabbarIcons is officially removed, please use tabbarLayout instead. View the Tabs API docs for more information.

  • slides: The Slides component has been refactored. Many methods and events were renamed.

    The following events have been renamed:

    • slideChangeStart has been renamed willChange
    • change has been renamed didChange

    The following methods have been renamed:

    • next() has been renamed to slideNext()
    • prev() has been renamed to slidePrev()
    • getIndex() has been renamed to getActiveIndex()
    • getNumSlides() has been renamed to length()
    • isAtEnd() has been renamed to isEnd()
    • isAtBeginning() has been renamed to isBeginning()
    • getSliderWidget() has been renamed to getSlider()

    All methods have been documented in the API docs: http://ionicframework.com/docs/v2/api/components/slides/Slides/

  • platform: platform.versions() no longer accepts an optional parameter for platform name and now returns only an object containing all of the platforms and their versions.

2.0.0-beta.4 (2016-04-07)

Features

Virtual Scroll - #5418

Virtual Scroll is useful for displaying large lists of data. For performance reasons, not every record in the list is rendered at once; instead a small subset of records (enough to fill the viewport) are rendered and reused as the user scrolls.

This feature was known as Collection Repeat in v1 of Ionic.

For more information on Virtual Scroll, check out the API docs.

Loading Indicator - #5426

An overlay that can be used to indicate activity while blocking user interaction. The loading indicator appears on top of the app's content, and can be dismissed by the app to resume user interaction with the app.

For more information on the Loading component, check out the API docs.

  • img: create ion-img (7a82727)
  • ion-content: adds for non-scrollable page content (442d135), closes #5987
  • loading: add ability to hide spinner in the config or options (dae37e7)
  • loading: add internal stack for the loading service (d3fa29f)
  • loading: add loading indicator component and styles (a485cd0)
  • router: allow multiple routers (3733ebc)
  • sass: add support for contrast color in MD mode colors map (9efa3ea)
  • sass: add support for contrast in color map for wp mode (5f2e737)
  • sass: add the ability to pass a contrast color in the colors map to iOS (ff1a8ac)
  • storage: clear() removes all entries in the storage engine (6e7cc97)
  • virtualScroll: init virtual scroll (7679ac0), closes #5418

Bug Fixes

  • action-sheet: action sheet button shortens when activated in Safari (6d55abc), closes #5828
  • alert: disable listeners until ready (5844703), closes #5821
  • alert: prevent both click and enter keyup from firing (2000b1e)
  • build: output.css needs to exist prior to doc gen (7dfbb9d)
  • button: normalize generated button class names (5f621ab)
  • card: maintain card width when absolute positioned (349c577)
  • config: improve getBoolean() and getNumber() (d44f8f6)
  • generators: add tabs Sass file (80109b8)
  • generators: add TS tabs generator (3ad15b1)
  • img: only load ion-img when visible (0701338)
  • input: add event emitters for blur and focus to the ion-input component (3e88fe9), closes #5487
  • input: align item right to the bottom for windows mode (b3bea83)
  • input: update width of inputs so they don't exceed the item (4d4f1d4), closes #5835
  • infinite-scroll: always check on scroll change (fe04c51)
  • infinite-scroll: Fix error leaving page (05823f9)
  • label: add color to label in a select (8fff76e)
  • loading: fix animation for loading the first time (6cd90ee)
  • nav: correctly set zIndex when there's a previous view (1dd73aa)
  • nav: portal nav should always animate (86fc741), closes #6059
  • nav: fixes swipeBackEnabled as attribute (17c3886), closes #5653
  • nav: call onDismiss after transition ends (24443c3), closes #5818
  • platform: windows UA should not trigger iOS (6dae784)
  • router: fix nested ion-nav router (b063566)
  • router: update path recognizer (3df5989), closes #5997
  • sass: change map-get to use color function in default themes (30bb005)
  • scroll: correctly resolve when scrolling finishes (35a3357)
  • searchbar: add padding around the floating searchbar wp (5ca6bf4), closes #5921
  • searchbar: call the input changed event on input not keyup (94707bf), closes #5584
  • searchbar: fix the border color and toolbar padding (0e91a69)
  • select: change windows border colors for selects to match input (6063932)
  • select: fix select styling on windows mode (a4fc96d), closes #5787
  • select: make select full width when with a stacked/floating label (4e37524), closes #5715
  • toolbar: fix back button for md mode (7dc58ef), closes #5923
  • toolbar: fix wp back button in toolbar (9a23a92)
  • toolbar: reduce min width on back button for wp mode (96375b6), closes #5759

Performance Improvements

  • infinite-scroll: display none svg until needed (085088e), closes #5776

BREAKING CHANGES

Theming with Base / Contrast Colors - #5445

You can now further customize your app by passing a base and contrast to the Sass $colors map.

Depending on the component, these values will be used for different things, but in general the base color is used as a background color, and contrast is used as a text color. This makes it easier than ever to change the colors of components to match your theme. For example, this is a valid $colors map:

$colors: (
  primary: (
    base: #327eff,
    contrast: #ffff00
  ),
  secondary: (
    base: #32db64,
    contrast: #ff69b4
  ),
  danger: #d91e18,
  light: #f4f4f4,
  dark: #222
);
Important

In order to use the Ionic Sass functions in your app's theming files, you need to import globals.core at the beginning of your app.variables.scss file. It should look like this:

// http://ionicframework.com/docs/v2/theming/

// Ionic Shared Functions
// --------------------------------------------------
// Makes Ionic Sass functions available to your App

@import 'globals.core';

If you are using the map-get function in your app, you should replace it with the color function. The color function takes the $colors map as the first argument, and the color you want to get as the second. You can optionally pass base or contrast as the third argument. If there is no third argument it will return the base color.

If you are already using the function color in your app, you need to update it so this:

color: color(primary);

becomes this:

color: color($colors, primary);

If you'd like to grab the contrast color you can use:

color: color($colors, primary, contrast);

See the conference app's theme directory for example usage.

Note

If you include a base you must include a contrast and vice-versa. If you don't provide a base and contrast, such as light: #f4f4f4 above, we use the given color as the base, and a custom function to determine the contrast color.

Angular Update to Beta 13 - #6026

Angular has been updated to 2.0.0-beta.13. Issue #5060 has been fixed and content projection is now working as expected. As a result of this update, many of the dependencies will need to be updated in your package.json:

"dependencies": {
  "angular2": "2.0.0-beta.13",
  "es6-promise": "3.0.2",
  "es6-shim": "^0.35.0",
  "ionic-angular": "2.0.0-beta.4",
  "ionic-native": "^1.1.0",
  "ionicons": "3.0.0-alpha.3",
  "reflect-metadata": "0.1.2",
  "rxjs": "5.0.0-beta.2",
  "zone.js": "0.6.6"
}

Webpack Users

Update your webpack.config.js from:

entry: [
  path.normalize('es6-shim/es6-shim.min'),
  'reflect-metadata',
  path.normalize('zone.js/dist/zone-microtask'),
  path.resolve('app/app')
],

to:

entry: [
  path.normalize('es6-shim/es6-shim.min'),
  'reflect-metadata',
  path.normalize('zone.js/dist/zone'),
  path.resolve('app/app')
],

2.0.0-beta.3 (2016-03-07)

Bug Fixes

  • actionsheet: fix md ripple on actionsheet (f51a3f5)
  • alert: increase padding on windows alert (c96af06), closes #5722
  • alert: update radio/checkbox items to buttons elements (b24dc27)
  • animations: get easing curve from parent animation (bc06994)
  • chip: cleaned up some of the UI and added some sass variables (eeac795)
  • config: fix config set function so that it has arguments defined (894824e), closes #5696
  • infinitescroll: only show spinner when loading (7ee0b52), closes #5690
  • input: add tappable attr to input-cover (b814314)
  • item: add a default size for items in buttons to use the content button sizes (7b14a29), closes #5580
  • label: change the flex for stacked and floating labels so buttons can be added (65ee86f), closes #5319
  • label: remove margin from item-right in a stacked or floating label (7416827)
  • nav: change init zIndex to 100 (5863e2c)
  • nav: create opts object when undefined/null (8975016), closes #5737
  • nav: do not hide pages if an overlay is in the stack (4922fc6), closes #5430
  • nav: reset zIndex when goes under 0 (ad50a11), closes #5718
  • nav: use setRoot when root property changes (d77e8d9), closes #5668
  • overlays: update keyboard focus management (e639457)
  • radio: do not use strict comparison for values (a2f858b), closes #5660
  • radio: improve group/button value comparisons (5d9b169)
  • radio: select only one radio when w/out ngModel (e92feef), closes #5659
  • select: do not open on form submit (b219de5), closes #5596
  • select: improve value comparisons (b967b1e)
  • tabs: don't add the has-icon class to a tab button if the layout is icon-hide (6b93bc1), closes #5658
  • tabs: improves tabs style for iOS (b9a4628)
  • textarea: width of textarea was exceeding page area (ec11ae3)
  • touchaction: apply to child touch elements (0129410)
  • util: array length check (9dc3840)
  • util: getQueryString tests (f8e38ef)
  • util: ignore empty query param in getQueryString (908ea8c)
  • windows: detect windows phone via user agent (703fe16)

Features

  • buttons: dynamically add button attributes (154a69c), closes #5186
  • searchbar: debounce input events (f6af807), closes #5429
  • searchbar: disable autocorrect/autocapitalize/spellcheck (498dd54), closes #5749
  • touchaction: remove 300ms delay via touch-action (e1c77a3)
  • windows: add card components (dd7def6)
  • windows: add checkbox styling and update alert checkbox (1ecfa6f)
  • windows: add chip component (2699b44)
  • windows: add content padding/margin components for wp (fe11ecc)
  • windows: add detail-push icon (706e0d7)
  • windows: add input border color variable to theme (0d4971f)
  • windows: add input component sass (f8ef960)
  • windows: add label Sass file (8a1e450)
  • windows: add list and item components (1cf56ee)
  • windows: add menu Sass component (cd7d627)
  • windows: add modal file (a323aa1)
  • windows: add noto sans as a fallback font (85c1637)
  • windows: add radio component for wp mode (dd206ad)
  • windows: add searchbar component with styling (a9054ad)
  • windows: add segment component (922e1f1)
  • windows: add select component (781ea83)
  • windows: add tabs component and clean up windows UI (fa2e4b2)
  • windows: add toggles (b7bcd39)
  • windows: add windows support to snapshot (368c12a)
  • windows: change windowsphone platform to windows (8df8420)
  • windows: clean up action sheet UI (138e876)
  • windows: clean up button and alert UI (13f3e83)
  • windows: clean up button css, rename Sass variables and add more (bba3c5c)
  • windows: fix card and alert UI (69c0da2)
  • windows: fix config so it will disable hover (996f944)
  • windows: initial add for windows badges (1fc0a23)
  • windows: initial add of action sheet (370490e)
  • windows: initial add of alert with windows dialog styles (6af9b77)
  • windows: initial add of toolbar with some custom theming (6062bb6)
  • windows: initial add of windows mode (a9c995d)
  • windows: make wp buttons more windows-y (b91f8de)
  • windows: more UI cleanup (a594531)
  • windows: UI fixes (29ff7f1)
  • windows: windows UI cleanup (e05f147)
  • windows: fix incorrect sass value, add max width to alert (3d12e69), references #5565

Refactor

  • sass: add Sass variables for action sheet and rename some (50b7d70), references #5651
  • sass: add Sass variables for alert, remove unused selectors (374efde), references #5651
  • sass: replace all instances of bg in sass variables with background (8db6a85), references #5651
  • sass: update windows action sheet sass to use variables (a51268cd), references #5651
  • sass: update windows alert sass to use variables (1e73a34), references #5651

Breaking Changes

Windows Mode

Windows platform support has been added to Ionic! The Windows mode is abbreviated as wp. Please go through the following steps to get your app working with the Windows mode:

  1. Add this line to your project's www/index.html file:
<link wp-href="build/css/app.wp.css" rel="stylesheet">
  1. Add a new file named app.wp.scss to your project's app/theme/ folder and then add the following code to it:
// http://ionicframework.com/docs/v2/theming/


// App Shared Variables
// --------------------------------------------------
// Shared Sass variables go in the app.variables.scss file
@import 'app.variables';


// App Windows Variables
// --------------------------------------------------
// Windows only Sass variables can go here


// Ionic Windows Sass
// --------------------------------------------------
// Custom App variables must be declared before importing Ionic.
// Ionic will use its default values when a custom variable isn't provided.
@import "ionic.wp";


// App Shared Sass
// --------------------------------------------------
// All Sass files that make up this app goes into the app.core.scss file.
// For simpler CSS overrides, custom app CSS must come after Ionic's CSS.
@import 'app.core';


// App Windows Only Sass
// --------------------------------------------------
// CSS that should only apply to the Windows app
  1. Modify the ionic.config.js file to add the wp mode on line 9:
sass: {
  src: ['app/theme/app.+(ios|md|wp).scss'],
  dest: 'www/build/css',
  include: [
    'node_modules/ionic-angular',
    'node_modules/ionicons/dist/scss'
  ]
},

2.0.0-beta.2 (2016-03-01)

Bug Fixes

  • alert: add max height to alert body so it will overflow (9c0eebd), closes #5316
  • animation: ensure final inline styles applied when fallback runs (4524e5a), closes #5484
  • generate: output correct Sass import for pages (3784f47), closes #5641
  • menu: fix enabled check (8564d79)
  • nav: immediately stop if view removed before trans finished (4fabade)
  • overlay: do not dom cache views before overlays (4cae151), closes #5483
  • refresher: get scrollTop from the scroll element to prevent refreshing when dragging up (ea884de), closes #5207
  • sass: rename brightness/inverse sass functions (892b007), closes #5542
  • tabs: pop tab page to parent nav (b9eec24), closes #5196
  • toolbar: add a min-width to the toolbar content so that it won't overlap buttons (5fb1e08), closes #5657

Features

  • checkbox: add change event (2596731)
  • infiniteScroll: add infinite scroll (0480fa3), closes #5415
  • input: default autocomplete/autocorrect=off, fix autofocus (b53d707)
  • menu: grab the menu by side only if it is enabled (a2b7a21)
  • NavController: prevent other lifecycle events from firing (6b9e59d), closes #5516
  • prodMode: set isProd() when prodMode set in @App config (3c8daa0)
  • spinner: SVG spinners (6c73446)
  • toggle: add change event (730cccd)

Refactor

  • menu: improve menu get lookup (004e635), closes #5535
  • tabs: remove duplicated styles from imports (d5ebf3f), closes #5624
  • tabs: remove tabbarIcons and add tabbarLayout which accepts different values (8cfebe1), closes #5625
  • searchbar: add class to searchbar when hideCancel is passed (a0f0004)

Breaking Changes

New npm module

The npm module has been renamed from ionic-framework to ionic-angular.

Update package.json to reflect this:

"ionic-angular": "2.0.0-beta.2",

imports from the framework were:

  import {Platform} from 'ionic-framework/ionic';

and are now:

  import {Platform} from 'ionic-angular';

Infinite Scroll

Infinite Scroll has been added: docs

Refresher:

  • <ion-refresher> now takes a child <ion-refresher-content> component.
  • Custom refresh content components can now be replaced for Ionic's default refresher content.
  • Properties pullingIcon, pullingText and refreshingText have been moved to the <ion-refresher-content> component.
  • spinner property has been renamed to refreshingSpinner and now goes on the <ion-refresher-content> component.
  • refreshingIcon property is no longer an input, but instead refreshingSpinner should be used.

Was:

<ion-refresher (refresh)="doRefresh($event)"
pullingIcon="arrow-dropdown">
</ion-refresher>

Now:

<ion-refresher (refresh)="doRefresh($event)">
  <ion-refresher-content
pullingIcon="arrow-dropdown"></ion-refresher-content>
</ion-refresher>

Tabs

Input property tabbarIcons has been replaced by tabbarLayout and accepts the following values: icon-top, icon-left, icon-right, icon-bottom, icon-hide, title-hide.

2.0.0-beta.1 (2016-02-18)

Bug Fixes

  • alert: add padding under the alert title for iOS when there is no message (c365c92), closes #5299
  • alert: fix alert button background color on activated (fd0b851)
  • animations: remove inline styles when finished (22c32f3), closes #5130
  • button: button goes transparent on hover on desktop (non-touch devices) (0e5d3d7)
  • button: fix colorized buttons on hover and outline buttons on hover (2df72cc)
  • checkbox: use value accessor provider (e468a21), closes #5353
  • colors: update sass inverse color function (55ef5a8)
  • input: fix stand-alone text-input item cover (e2554f0), closes #5387
  • input: make ion-label tappable to focus input (38595fa), closes #5378
  • item: add min-height to item-inner to remove gap between items (90f165f), closes #5350
  • menu: add/remove gesture listeners per enabled menu (ff24152)
  • NavController: fire onPageWillUnload/DidUnload (8f0b88b), closes #5507
  • radio: radio w/ falsy value not checkable (89861e0), closes #5348
  • radio: use value accessor provider (b85d7aa)
  • segment: add the active background color to the colorized segments and remove activated (df9a4df), closes #5308
  • select: use value accessor provider (3444a3c)
  • toggle: use value accessor provider (5034c1d), closes #5425
  • toolbar: fix md toolbar so it doesn't flow off the screen (bd03760), closes #5414
  • toolbar: fixes segment/title aligment when cordova iOS style is applied (2766f7f), closes #5208
  • toolbar: toolbar padding when running in cordova iOS (db535dd)

Features

Performance Improvements

  • animation: only update progressStep once per 16ms (098371a)

Refactor

  • card: create ion-card-title element and remove card-title (7aabd0f), closes #5303
  • segment: increase icon size inside of segment buttons (7249cb3), closes #5330
  • pull-to-refresh: emit start event and change all events to emit refresher (acf1894), references #5207
  • slides: remove the attributes from the slider and use options instead (d21ae88), closes #5189

Breaking Changes

2.0.0-beta.0 (2016-02-10)

Enjoy!

<3 The Ionic Team

Bug Fixes

  • button: bar-button uses inner span as flexbox (38a3be4)

Features

  • Improved transitions and animations
  • hairlines width can be configured with a sass variable (06b3a5b)
  • ion-item-sliding: style icons on top of text in an option button (4e57fcf), closes #5352

Refactor

  • animations: no longer using Web Animations polyfill (da18868)

Breaking Changes

The Web Animations polyfill is no longer shipped with the framework and may cause build errors.

Projects will need to be updated accordingly.