# [2.0.0-beta.1](https://github.com/driftyco/ionic/compare/v2.0.0-beta.0...v2.0.0-beta.1) (2016-02-18) ### Bug Fixes * **alert:** add padding under the alert title for iOS when there is no message ([c365c92](https://github.com/driftyco/ionic/commit/c365c92)), closes [#5299](https://github.com/driftyco/ionic/issues/5299) * **alert:** fix alert button background color on activated ([fd0b851](https://github.com/driftyco/ionic/commit/fd0b851)) * **animations:** remove inline styles when finished ([22c32f3](https://github.com/driftyco/ionic/commit/22c32f3)), closes [#5130](https://github.com/driftyco/ionic/issues/5130) * **button:** button goes transparent on hover on desktop (non-touch devices) ([0e5d3d7](https://github.com/driftyco/ionic/commit/0e5d3d7)) * **button:** fix colorized buttons on hover and outline buttons on hover ([2df72cc](https://github.com/driftyco/ionic/commit/2df72cc)) * **checkbox:** use value accessor provider ([e468a21](https://github.com/driftyco/ionic/commit/e468a21)), closes [#5353](https://github.com/driftyco/ionic/issues/5353) * **colors:** update sass inverse color function ([55ef5a8](https://github.com/driftyco/ionic/commit/55ef5a8)) * **input:** fix stand-alone text-input item cover ([e2554f0](https://github.com/driftyco/ionic/commit/e2554f0)), closes [#5387](https://github.com/driftyco/ionic/issues/5387) * **input:** make ion-label tappable to focus input ([38595fa](https://github.com/driftyco/ionic/commit/38595fa)), closes [#5378](https://github.com/driftyco/ionic/issues/5378) * **item:** add min-height to item-inner to remove gap between items ([90f165f](https://github.com/driftyco/ionic/commit/90f165f)), closes [#5350](https://github.com/driftyco/ionic/issues/5350) * **menu:** add/remove gesture listeners per enabled menu ([ff24152](https://github.com/driftyco/ionic/commit/ff24152)) * **NavController:** fire onPageWillUnload/DidUnload ([8f0b88b](https://github.com/driftyco/ionic/commit/8f0b88b)), closes [#5507](https://github.com/driftyco/ionic/issues/5507) * **radio:** radio w/ falsy value not checkable ([89861e0](https://github.com/driftyco/ionic/commit/89861e0)), closes [#5348](https://github.com/driftyco/ionic/issues/5348) * **radio:** use value accessor provider ([b85d7aa](https://github.com/driftyco/ionic/commit/b85d7aa)) * **segment:** add the active background color to the colorized segments and remove activated ([df9a4df](https://github.com/driftyco/ionic/commit/df9a4df)), closes [#5308](https://github.com/driftyco/ionic/issues/5308) * **select:** use value accessor provider ([3444a3c](https://github.com/driftyco/ionic/commit/3444a3c)) * **toggle:** use value accessor provider ([5034c1d](https://github.com/driftyco/ionic/commit/5034c1d)), closes [#5425](https://github.com/driftyco/ionic/issues/5425) * **toolbar:** fix md toolbar so it doesn't flow off the screen ([bd03760](https://github.com/driftyco/ionic/commit/bd03760)), closes [#5414](https://github.com/driftyco/ionic/issues/5414) * **toolbar:** fixes segment/title aligment when cordova iOS style is applied ([2766f7f](https://github.com/driftyco/ionic/commit/2766f7f)), closes [#5208](https://github.com/driftyco/ionic/issues/5208) * **toolbar:** toolbar padding when running in cordova iOS ([db535dd](https://github.com/driftyco/ionic/commit/db535dd)) ### Features * **generators:** add Sass import reminder to page generator ([b22b5ff](https://github.com/driftyco/ionic/commit/b22b5ff)) * **menu:** allow persistent menus ([0d47a1b](https://github.com/driftyco/ionic/commit/0d47a1b)), closes [#5204](https://github.com/driftyco/ionic/issues/5204) * **menu:** close any opened menu ([c02fb51](https://github.com/driftyco/ionic/commit/c02fb51)) * **MenuController:** create isOpen() and isEnabled() ([3bb09ce](https://github.com/driftyco/ionic/commit/3bb09ce)), closes [#5390](https://github.com/driftyco/ionic/issues/5390) * **nav:** iOS swipe to go back ([da37029](https://github.com/driftyco/ionic/commit/da37029)), closes [#5185](https://github.com/driftyco/ionic/issues/5185) * **select:** cancel output event ([6a7c97d](https://github.com/driftyco/ionic/commit/6a7c97d)), closes [#5439](https://github.com/driftyco/ionic/issues/5439) * **slides:** add slideChangeStart event output ([736140c](https://github.com/driftyco/ionic/commit/736140c)), closes [#5301](https://github.com/driftyco/ionic/issues/5301) * **slides:** added move event onSlideMove ([daceb98](https://github.com/driftyco/ionic/commit/daceb98)) * **tabs:** rootParams, pass params to tabs ([e06cf71](https://github.com/driftyco/ionic/commit/e06cf71)), closes [#5172](https://github.com/driftyco/ionic/issues/5172) * **themes:** add dark theme ([7eb7952](https://github.com/driftyco/ionic/commit/7eb7952)), ([3ee5bd3](https://github.com/driftyco/ionic/commit/3ee5bd3)), ([3dbd9a9](https://github.com/driftyco/ionic/commit/3dbd9a9)), ([eb8e778](https://github.com/driftyco/ionic/commit/eb8e778)), ([bcaa484](https://github.com/driftyco/ionic/commit/bcaa484)), ([569beab](https://github.com/driftyco/ionic/commit/569beab)), closes [#4967](https://github.com/driftyco/ionic/issues/4967) ### Performance Improvements * **animation:** only update progressStep once per 16ms ([098371a](https://github.com/driftyco/ionic/commit/098371a)) ### Refactor * **card:** create ion-card-title element and remove card-title ([7aabd0f](https://github.com/driftyco/ionic/commit/7aabd0f)), closes [#5303](https://github.com/driftyco/ionic/issues/5303) * **segment:** increase icon size inside of segment buttons ([7249cb3](https://github.com/driftyco/ionic/commit/7249cb3)), closes [#5330](https://github.com/driftyco/ionic/issues/5330) * **pull-to-refresh:** emit start event and change all events to emit refresher ([acf1894](https://github.com/driftyco/ionic/commit/acf1894)), references [#5207](https://github.com/driftyco/ionic/issues/5207) * **slides:** remove the attributes from the slider and use options instead ([d21ae88](https://github.com/driftyco/ionic/commit/d21ae88)), closes [#5189](https://github.com/driftyco/ionic/issues/5189) ### Breaking Changes * **card:** `.card-title` class does not exist anymore, use the `ion-card-title` element instead. * **pull-to-refresh:** `(starting)` event has been renamed to `(start)`. * **slides:** many attributes have been removed, must use `options` to pass configuration the slider. See the [Swiper Parameters API](http://www.idangero.us/swiper/api). # 2.0.0-beta.0 Enjoy! <3 The Ionic Team # [2.0.0-alpha.57](https://github.com/driftyco/ionic/compare/v2.0.0-alpha.56...v2.0.0-alpha.57) (2016-02-10) ### Bug Fixes * **button:** bar-button uses inner span as flexbox ([38a3be4](https://github.com/driftyco/ionic/commit/38a3be4)) ### Features * Improved transitions and animations * hairlines width can be configured with a sass variable ([06b3a5b](https://github.com/driftyco/ionic/commit/06b3a5b)) * **ion-item-sliding:** style icons on top of text in an option button ([4e57fcf](https://github.com/driftyco/ionic/commit/4e57fcf)), closes [#5352](https://github.com/driftyco/ionic/issues/5352) ### Refactor * **animations:** no longer using Web Animations polyfill ([da18868](https://github.com/driftyco/ionic/commit/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](https://github.com/driftyco/ionic-conference-app/commit/2ed59e6fd275c4616792c7b2e5aa9da4a20fb188). # [2.0.0-alpha.56](https://github.com/driftyco/ionic/compare/v2.0.0-alpha.55...v2.0.0-alpha.56) (2016-02-05) ### Bug Fixes * **tabs:** show navbar on second page in tab ([f2db74b](https://github.com/driftyco/ionic/commit/f2db74b)) # [2.0.0-alpha.55](https://github.com/driftyco/ionic/compare/v2.0.0-alpha.54...v2.0.0-alpha.55) (2016-02-05) ### Bug Fixes * **alert:** ensure keyup listener has been removed ([2710e34](https://github.com/driftyco/ionic/commit/2710e34)) * **build:** tell gulp when finished building ([60e1278](https://github.com/driftyco/ionic/commit/60e1278)) * **generators:** use mkdirp-no-bin ([dcc20fa](https://github.com/driftyco/ionic/commit/dcc20fa)) * **input:** copy custom attrs from ion-input to native input ([4cfe210](https://github.com/driftyco/ionic/commit/4cfe210)) * **menu:** fix scrolling page w/ side menus ([72699db](https://github.com/driftyco/ionic/commit/72699db)), closes [#5272](https://github.com/driftyco/ionic/issues/5272) * **menu:** only close when open on enable change ([a428363](https://github.com/driftyco/ionic/commit/a428363)) * **searcher:** add autocomplete="off" to native input ([f47c3c3](https://github.com/driftyco/ionic/commit/f47c3c3)) ### Features * **actionsheet:** disable clicking backdrop to dismiss ([7686767](https://github.com/driftyco/ionic/commit/7686767)) * **alert:** disable clicking backdrop to dismiss ([53e014f](https://github.com/driftyco/ionic/commit/53e014f)) ### Performance Improvements * **cards:** remove translateZ from ion-card ([60fdc5c](https://github.com/driftyco/ionic/commit/60fdc5c)) * **tabs:** render tab navbar at same time of tab content ([687a17b](https://github.com/driftyco/ionic/commit/687a17b)) ### Breaking Changes Menu has been improved to make it easier to open, close, toggle and enable menus. Instead of injecting `IonicApp` to find the menu component, you now inject `MenuController`. Was: ``` constructor(app: IonicApp) { this.app = app; } openMenu() { this.app.getComponent('leftMenu').close(); } ``` Now: To programmatically interact with any menu, you can inject the `MenuController` provider into any component or directive. This makes it easy get ahold of and control the correct menu instance. By default Ionic will find the app's menu without requiring a menu ID. An id attribute on an `` is only required if there are multiple menus on the same side. If there are multiple menus, but on different sides, you can use the name of the side to get the correct menu If there's only one menu: ``` constructor(menu: MenuController) { this.menu = menu; } openMenu() { this.menu.close(); } ``` If there is a menu on the left and right side: ``` toggleMenu() { this.menu.toggle('left'); } ``` If there are multiple menus on the same side: ``` ... ... closeMenu() { this.menu.close('myMenuId'); } ``` # [2.0.0-alpha.54](https://github.com/driftyco/ionic/compare/v2.0.0-alpha.53...v2.0.0-alpha.54) (2016-02-02) ### Bug Fixes * **alert:** add checkbox icon for iOS using Sass variables from regular checkbox ([68819f0](https://github.com/driftyco/ionic/commit/68819f0)), closes [#5253](https://github.com/driftyco/ionic/issues/5253) * **badge:** change default badge color to primary ([93b9891](https://github.com/driftyco/ionic/commit/93b9891)), closes [#5222](https://github.com/driftyco/ionic/issues/5222) * **badge:** split badge color into separate modes ([b472c6c](https://github.com/driftyco/ionic/commit/b472c6c)) * **css:** minor updates to match previous snapshots ([9749b06](https://github.com/driftyco/ionic/commit/9749b06)) * **input:** add/remove disabled on native text input ([11b8e08](https://github.com/driftyco/ionic/commit/11b8e08)), closes [#5280](https://github.com/driftyco/ionic/issues/5280) * **input:** check has value on writeValue ([181a070](https://github.com/driftyco/ionic/commit/181a070)) * **input:** parent Item is optional ([db6f4bc](https://github.com/driftyco/ionic/commit/db6f4bc)) * **prepare:** add missing require to prepare task ([b2f7278](https://github.com/driftyco/ionic/commit/b2f7278)) * **scrollbars:** do not apply css scrollbars ([f3fb182](https://github.com/driftyco/ionic/commit/f3fb182)) * **select:** always update value and text ([58443f0](https://github.com/driftyco/ionic/commit/58443f0)) * **select:** null value clears select text ([c264e31](https://github.com/driftyco/ionic/commit/c264e31)), closes [#5288](https://github.com/driftyco/ionic/issues/5288) ### Features * **button:** increase hit area of toolbar buttons ([cad9e49](https://github.com/driftyco/ionic/commit/cad9e49)) * **checkbox:** add bg transition to md checkbox ([8466d39](https://github.com/driftyco/ionic/commit/8466d39)) * **overlay:** fire the cancel handler when dismissing from backdrop ([1c618b5](https://github.com/driftyco/ionic/commit/1c618b5)) * **scrollbars:** webkit scrollbar styling for desktop ([c7f2268](https://github.com/driftyco/ionic/commit/c7f2268)) ### Breaking Changes * **action-sheet:** Button `style` property renamed to `role` ([1c618b5](https://github.com/driftyco/ionic/commit/1c618b51eb0a31013f7d3509d34c796d65689836#diff-f61014c4fb6e166fa1b5645d126dd4f6L26)) ##### Angular was updated to Beta 2 * Update the version of Angular in your `package.json` file: ``` "angular2": "2.0.0-beta.2", ``` # 2.0.0-alpha.53 (2016-01-28) ### Features * Normalize how `ion-item` and inner inputs/avatars/icons/etc are written * Only one type of `ion-item`, rather than every input also having a similar structure * Multiple inputs can be placed inside of an `ion-item` * Allow avatars/thumbnails/icons next to checkbox/radio/toggle/select/input * Inputs can be stand-alone components, and not required within an `ion-item` ### Breaking Changes * CSS may not get updated if your `ionic.config` file is not correct: If you have the following directory structure: ``` │ ├── theme/ * App theme files │ │ ├── app.core.scss * App Shared Sass Imports │ │ ├── app.ios.scss * iOS Sass Imports & iOS Variables │ │ ├── app.md.scss * MD Sass Imports & MD Variables │ │ └── app.variables.scss * App Shared Sass Variables ``` Make sure the `ionic.config` file looks like this: ``` sass: { src: ['app/theme/app.+(ios|md).scss'], dest: 'www/build/css', include: [ 'node_modules/ionic-framework', 'node_modules/ionicons/dist/scss' ] }, ``` * Inputs are now placed inside of `ion-item` * Inputs do not come with their own label * `ion-item-content` has been replaced with `ion-label` * Label attributes are placed on `ion-label` rather than `ion-input` * Native HTML `` and ` ``` Now: ```html Email Comments ``` ##### Checkbox Refactor Was: ```html My Checkbox ``` Now: ```html My Checkbox ``` ##### Radio Button Refactor Was: ```html Auto Manufacturers Cord Duesenberg Hudson ``` Now: ```html Auto Manufacturers Cord Duesenberg Hudson ``` ##### Select Refactor Was: ```html Gender Female Male ``` Now: ```html Gender Female Male ``` ##### Toggle Refactor Was: ```html My Toggle ``` Now: ```html My Toggle ``` ##### Label Attribute Refactor Was: ```html Username Email ``` Now: ```html Username Email ``` ### misc * Code and syntax highlighting in markdown ([8cb2b4d](https://github.com/driftyco/ionic2/commit/8cb2b4d)) * Merge pull request #5217 from manucorporat/2.0 ([e1b514d](https://github.com/driftyco/ionic2/commit/e1b514d)) ### chore * chore(changelog): label attr refactor ([ca6eef9](https://github.com/driftyco/ionic2/commit/ca6eef9)) * chore(changelog): updates for alpha.53 ([47806dc](https://github.com/driftyco/ionic2/commit/47806dc)) * chore(package): don't increment version in `gulp package` ([ab4c7c3](https://github.com/driftyco/ionic2/commit/ab4c7c3)) * chore(snapshot): update snapshot to run all tests ([cb7a358](https://github.com/driftyco/ionic2/commit/cb7a358)) ### docs * docs(): hide methods not requiring docs ([dbc681f](https://github.com/driftyco/ionic2/commit/dbc681f)) * docs(): update for alpha52 ([cefc305](https://github.com/driftyco/ionic2/commit/cefc305)) * docs(blur): hide docs for blur ([4435451](https://github.com/driftyco/ionic2/commit/4435451)) * docs(demos): clean up blur demo ([779a494](https://github.com/driftyco/ionic2/commit/779a494)) * docs(demos): clean up nav-push-pop ([4eadc78](https://github.com/driftyco/ionic2/commit/4eadc78)) * docs(demos): fix scroll demo to use correct attributes ([4df4afd](https://github.com/driftyco/ionic2/commit/4df4afd)) * docs(demos): prettify ShowWhen demo ([aca9ea6](https://github.com/driftyco/ionic2/commit/aca9ea6)) * docs(demos): prettify config some more and add another page - fix back button icon ([e982c69](https://github.com/driftyco/ionic2/commit/e982c69)) * docs(demos): prettify nav params demo ([58dfa3d](https://github.com/driftyco/ionic2/commit/58dfa3d)) * docs(demos): prettify the config demo ([a8bc0d2](https://github.com/driftyco/ionic2/commit/a8bc0d2)) * docs(demos): prettify the hide-when demo ([a676d7d](https://github.com/driftyco/ionic2/commit/a676d7d)) * docs(demos): prettify the platform demo ([b933029](https://github.com/driftyco/ionic2/commit/b933029)) * docs(demos): prettifying local-storage demo ([8bc853f](https://github.com/driftyco/ionic2/commit/8bc853f)) * docs(demos): prettifying modal demo ([95d03ca](https://github.com/driftyco/ionic2/commit/95d03ca)) * docs(demos): prettifying some more local-storage ([2d691b0](https://github.com/driftyco/ionic2/commit/2d691b0)) * docs(demos): remove attr from docs ([047a939](https://github.com/driftyco/ionic2/commit/047a939)) * docs(demos): remove unused demos ([c68da33](https://github.com/driftyco/ionic2/commit/c68da33)), closes [#5216](https://github.com/driftyco/ionic2/issues/5216) * docs(demos): remove unused demos ([e50eb89](https://github.com/driftyco/ionic2/commit/e50eb89)), closes [#5216](https://github.com/driftyco/ionic2/issues/5216) * docs(demos): update demos to latest alpha ([59c62a0](https://github.com/driftyco/ionic2/commit/59c62a0)) * docs(demos): update demos with item-refactor ([d7dec0a](https://github.com/driftyco/ionic2/commit/d7dec0a)) * docs(demos): update menu demo to use menuClose attribute ([e7fe7e4](https://github.com/driftyco/ionic2/commit/e7fe7e4)) * docs(toolbar): add subheader and footer examples ([d971f3e](https://github.com/driftyco/ionic2/commit/d971f3e)), closes [#5174](https://github.com/driftyco/ionic2/issues/5174) [#5063](https://github.com/driftyco/ionic2/issues/5063) * docs(toolbar): clean up docs ([18eb967](https://github.com/driftyco/ionic2/commit/18eb967)) ### feat * feat(checkbox): stand-alone checkbox components ([6890532](https://github.com/driftyco/ionic2/commit/6890532)) * feat(select): emit change and select events ([e19d4e3](https://github.com/driftyco/ionic2/commit/e19d4e3)), closes [#5219](https://github.com/driftyco/ionic2/issues/5219) * feat(util): add margin attributes ([e22ccf4](https://github.com/driftyco/ionic2/commit/e22ccf4)) ### fix * fix(alert): add z-index and border-radius to fix ripple ([5b0d60d](https://github.com/driftyco/ionic2/commit/5b0d60d)), closes [#5203](https://github.com/driftyco/ionic2/issues/5203) * fix(blur): fix blur directive so it adds the filter and add a test ([4af0e41](https://github.com/driftyco/ionic2/commit/4af0e41)) * fix(input): change next input imports ([70a9eb3](https://github.com/driftyco/ionic2/commit/70a9eb3)) * fix(input): checked attr can be an empty string or no value ([e76b559](https://github.com/driftyco/ionic2/commit/e76b559)) * fix(input): clean up CSS on inputs and labels ([2fc9753](https://github.com/driftyco/ionic2/commit/2fc9753)) * fix(input): fix floating label on blur w/ value ([5d4a8fe](https://github.com/driftyco/ionic2/commit/5d4a8fe)) * fix(input): fix floating/stacked label relocate ([ad7885f](https://github.com/driftyco/ionic2/commit/ad7885f)) * fix(input): update input css/tests ([42f6b10](https://github.com/driftyco/ionic2/commit/42f6b10)) * fix(label): fix label for item and inputs by adding flex back ([3cbbfdc](https://github.com/driftyco/ionic2/commit/3cbbfdc)) * fix(label): remove left margin for md labels in items ([3be8952](https://github.com/driftyco/ionic2/commit/3be8952)) * fix(menu): fix right side menu - platform becomes \_platform ([0b0500d](https://github.com/driftyco/ionic2/commit/0b0500d)), closes [#5147](https://github.com/driftyco/ionic2/issues/5147) * fix(radio): allow radios to check even without values ([f20ae8f](https://github.com/driftyco/ionic2/commit/f20ae8f)) * fix(radio): prevent multiple radio buttons from being checked ([334fb3c](https://github.com/driftyco/ionic2/commit/334fb3c)) * fix(scroll): add pull to refresh Sass back to core component ([adce1e5](https://github.com/driftyco/ionic2/commit/adce1e5)) * fix(scroll): canOverscroll was set to false which prevented PTR from ever working ([e4b2006](https://github.com/driftyco/ionic2/commit/e4b2006)) * fix(searchbar): modify height on the input to fix it on Canary ([e672de5](https://github.com/driftyco/ionic2/commit/e672de5)), closes [#5176](https://github.com/driftyco/ionic2/issues/5176) * fix(select): fix select disabled state ([eb03159](https://github.com/driftyco/ionic2/commit/eb03159)) * fix(select): update text on ngModel change ([0a04522](https://github.com/driftyco/ionic2/commit/0a04522)) * fix(slides): convert loop attribute to a boolean and index to a number before passing to slides ([de9a986](https://github.com/driftyco/ionic2/commit/de9a986)), closes [#5189](https://github.com/driftyco/ionic2/issues/5189) ### refactor * refactor(input): break apart input source files ([aea2217](https://github.com/driftyco/ionic2/commit/aea2217)) * refactor(input): place inputs inside of ion-item ([b3a7298](https://github.com/driftyco/ionic2/commit/b3a7298)) ### release * release: 2.0.0-alpha.53 ([9a78d68](https://github.com/driftyco/ionic2/commit/9a78d68)) ### test * test(input): add test to reproduce a floating label bug ([c1fbbb1](https://github.com/driftyco/ionic2/commit/c1fbbb1)) * test(list): add some markup for checkboxes and avatars ([e568eb9](https://github.com/driftyco/ionic2/commit/e568eb9)) * test(list): fix toggle to represent new ion-item ([58d994b](https://github.com/driftyco/ionic2/commit/58d994b)) * test(radio): add e2e test for radios with no value ([f79a121](https://github.com/driftyco/ionic2/commit/f79a121)) # 2.0.0-alpha.52 (2016-01-25) - Bug fixes # 2.0.0-alpha.51 (2016-01-21) ### Breaking Changes ##### Angular was updated to Beta 1 * Update the version of Angular in your `package.json` file: ``` "angular2": "2.0.0-beta.1", ``` ##### Ionicons were moved * Install ionicons (this will be added in the starters): `npm install --save ionicons@latest` * Modify the sass `include` in your `ionic.config.js` file: ```js sass: { src: ['app/theme/app.+(ios|md).scss'], dest: 'www/build/css', include: [ 'node_modules/ionic-framework', 'node_modules/ionicons/dist/scss' ] }, ``` * Modify the fonts `src` in your `ionic.config.js` file: ```js fonts: { src: ['node_modules/ionic-framework/fonts/**/*.+(ttf|woff|woff2)'], dest: "www/build/fonts" }, ``` # 2.0.0-alpha.48 (2016-01-07) ### Breaking Changes ##### Icon Refactor * `` has been renamed to `` * `` requires the `name` attribute with a value * Icon names with an `ion-` prefix are no longer needed * Icons with `social-` prefix have been changed to a `logo-` prefix Was: `` `` Now: `` `` # 2.0.0-alpha.47 (2016-01-04) ### Breaking Changes ##### Overlay Refactor * `` is no longer required within any template * `Popup` has been renamed to `Alert` * Common API for all overlays: `Alert`, `ActionSheet`, `Modal`, etc. * `Alert` is more generic and you can mix and match any number of buttons/inputs * `Alert` and `ActionSheet` can take an array of buttons with `handlers` * Returning `false` from button handlers prevent the overlay from closing * `ActionSheet` buttons no longer use an index and only one handler * `ActionSheet` cancel and destructive buttons go within the `buttons` array, but with an added `style` property * An actionsheet's desctructive button renders in the order it was added to the array (we recommend it always goes first) * An actionsheet's cancel button will always be last, no matter where it is in the array * All overlays use `NavController` `present()`, similar to `push()` * A `Modal` uses an injected `ViewController` to dismiss itself and optionally pass data to modal's `onDismss()` ##### Alert Refactor Was: ```js import {Popup} from 'ionic/ionic'; @Page(...) class MyPage { constructor(popup: Popup) { this.popup = popup; } doAlert() { this.popup.alert({ title: "New Friend!", template: "Obi wan Kenobi just accepted your friend request!" }); } } ``` Now: ```js import {Alert, NavController} from 'ionic/ionic'; @Page(...) class MyPage { constructor(nav: NavController) { this.nav = nav; } doAlert() { let alert = Alert.create({ title: "New Friend!", body: "Obi wan Kenobi just accepted your friend request!", buttons: ['Ok'] }); this.nav.present(alert); } } ``` ##### Confirm Refactor Was: ```js import {Popup} from 'ionic/ionic'; @Page(...) class MyPage { constructor(popup: Popup) { this.popup = popup; } doConfirm() { this.popup.confirm({ title: "Use this lightsaber?", subTitle: "You can't exchange lightsabers", template: "Do you agree to use this lightsaber to do good across the intergalactic galaxy?", cancelText: "Disagree", okText: "Agree" }).then((result, ev) => { console.log('Confirmed!', result); }, () => { console.error('Not confirmed!'); }); } } ``` Now: ```js import {Alert, NavController} from 'ionic/ionic'; @Page(...) class MyPage { constructor(nav: NavController) { this.nav = nav; } doConfirm() { let alert = Alert.create({ title: "Use this lightsaber?", subTitle: "You can't exchange lightsabers", body: "Do you agree to use this lightsaber to do good across the intergalactic galaxy?", buttons: [ { text: 'Disagree', handler: () => { console.log('Disagreed :('); } }, { text: 'Agree', handler: () => { console.log('Agreed!'); } } ] }); this.nav.present(alert); } } ``` ##### Prompt Refactor Was: ```js import {Popup} from 'ionic/ionic'; @Page(...) class MyPage { constructor(popup: Popup) { this.popup = popup; } doPrompt() { this.popup.prompt({ title: "New Album", template: "Enter a name for this new album you're so keen on adding", inputPlaceholder: "Album Name", okText: "Save", okType: "secondary" }).then((name) => { console.log('Name entered:', name); }, () => { console.error('Prompt closed'); }); } } ``` Now: ```js import {Alert, NavController} from 'ionic/ionic'; @Page(...) class MyPage { constructor(nav: NavController) { this.nav = nav; } doConfirm() { let alert = Alert.create({ title: "New Album", body: "Enter a name for this new album you're so keen on adding", inputs: [ { name: 'album', placeholder: 'Album Name' } ], buttons: [ { text: 'Cancel', handler: data => { console.log('Canceled!', data); } }, { text: 'Ok', handler: data => { console.log('Submitted', data); } } ] }); this.nav.present(alert); } } ``` ##### ActionSheet Refactor Was: ```js import {ActionSheet} from 'ionic/ionic'; @Page(...) class MyPage { constructor(actionSheet: ActionSheet) { this.actionSheet = actionSheet; } doActionSheet() { this.actionSheet.open({ buttons: [ { text: 'Archive' } ], titleText: 'Modify your album', cancelText: 'Cancel', cancel: function() { console.log('Canceled clicked'); }, destructiveText: 'Delete', destructiveButtonClicked: () => { console.log('Delete clicked'); }, buttonClicked: function(index) { if (index == 0) { console.log('Archive clicked'); } return true; } }).then(actionSheetRef => { this.actionSheetRef = actionSheetRef; }); } } ``` Now: ```js import {ActionSheet, NavController} from 'ionic/ionic'; @Page(...) class MyPage { constructor(nav: NavController) { this.nav = nav; } doActionSheet(ev) { let actionSheet = ActionSheet.create({ title: 'Modify your album', buttons: [ { text: 'Delete', style: 'destructive', handler: () => { console.log('Delete clicked'); } }, { text: 'Archive', handler: () => { console.log('Archive clicked'); } }, { text: 'Cancel', style: 'cancel', handler: () => { console.log('Cancel clicked'); } }, ] }); this.nav.present(actionSheet); } } ``` ##### Modal Refactor Was: ```js import {Modal} from 'ionic/ionic'; @Page(...) class MyApp { constructor(modal: Modal) { this.modal = modal; } openContactModal() { this.modal.open(EditUser, { userId: 8675309 }); } } ``` Now: ```js import {Modal, NavController} from 'ionic/ionic'; @Page(...) class MyPage { constructor(nav: NavController) { this.nav = nav; } presentModal() { let modal = Modal.create(EditUser, { userId: 8675309 }); this.nav.present(modal); } } ``` # 2.0.0-alpha.42 (2015-12-11) ### Breaking Changes ##### CSS Refactor * Attributes are now used by Ionic to add the correct CSS classes to elements * Drastically reduced the depth of CSS selectors * Further modularized Sass files to allow individual imports * Ionic CSS comes in 3 flavors * `ionic.css`: Core CSS, iOS CSS, and Material Design CSS * `ionic.ios.css`: Core CSS and iOS CSS * `ionic.md.css`: Core CSS and Material Design CSS * App's `index.html` file can be setup to dynamically load only the stylesheet it needs * Different Sass color maps for iOS and Material Design * Allows colors to be different per platform * ie: Gray navbars in iOS, blue navbars in MD. Identical HTML/JS * config: `tabbarStyle`, `navbarStyle` has been removed, should now use different Sass color maps instead of setting it in the config * text-input: class `has-value` has become `input-has-value` * text-input: class `has-focus` has become `input-focused` * searchbar: class `left-align` has become `searchbar-left-aligned` * searchbar: class `focused` has become `searchbar-focused` ##### `` renamed to `` * `primary` attribute `` now `` * `secondary` attribute `` now `` ##### `` should now be `