ionic-angular
3.9.1 is patch release of ionic-angular
3.9.0. To upgrade, follow the instructions here for updating to ionic-angular
3.9.0. After completing those steps, update the ionic-angular
version to 3.9.1.
npm install ionic-angular@3.9.1 --save
ionic-angular
3.9.0 adds support for @angular
5.0.0 :tada:! It is a drop-in replacement for ionic-angular
3.8.x.
To update, remove existing node_modules
and any lock files, and then update package.json
to the following deps.
"dependencies" : {
...
"@angular/common": "5.0.0",
"@angular/compiler": "5.0.0",
"@angular/compiler-cli": "5.0.0",
"@angular/core": "5.0.0",
"@angular/forms": "5.0.0",
"@angular/http": "5.0.0",
"@angular/platform-browser": "5.0.0",
"@angular/platform-browser-dynamic": "5.0.0",
"@ionic/storage": "2.1.3",
"ionic-angular": "3.9.0",
"rxjs": "5.5.2",
"zone.js": "0.8.18"
...
},
"devDependencies: {
"@ionic/app-scripts": "3.1.0"
"typescript" : "2.4.2"
}
If your app uses RXJS, see the instructions below to update.
The recent update of RXJS includes a change in how operators are applied.
Traditionally, operators were applied like this:
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/switchMap';
export MyClass {
someMethod(){
// Using Reactive Forms
this.input.valueChanges
.debounceTime(500)
.switchMap(inputVal => this.service.get(inputVal))
.subscribe(res => console.log(res))
}
}
This approach involved modifying the Observable prototype and patching on the methods.
RXJS 5.5 introduces a different way to do this that can lead to significantly smaller code bundles, lettable operators.
To use lettable operators, modify the code from above to look like this:
//Use Deep imports here for smallest bunlde size
import { debounceTime } from 'rxjs/operators/debounceTime';
import { switch } from 'rxjs/operators/switchMap';
export MyClass {
someMethod(){
// Using Reactive Forms
// We use the new `.pipe` method on the observable
// too apply operators now
this.input.valueChanges
.pipe(
debounceTime(500),
switchMap(inputVal => this.service.get(inputVal))
)
.subscribe(res => console.log(res))
}
}
This slight change allows only import the operators we need in our code. This will result in a smaller, faster application. This example uses Deep Imports, which allow the module we want to import to be isolated.
Take a look at this doc for more information.
This release includes improvements for iOS11 and specifically, the iPhone X. Please also read over the iOS 11 checklist blog post for additional information.
To update, install the latest version of ionic-angular
and @ionic/app-scripts
:
npm install ionic-angular@latest --save
npm install @ionic/app-scripts@latest --save-dev
This release uses version 4.4.4
of Angular. Please update the version number of any @angular
packages in your package.json
file:
"dependencies": {
"@angular/common": "4.4.4",
"@angular/compiler": "4.4.4",
"@angular/compiler-cli": "4.4.4",
"@angular/core": "4.4.4",
"@angular/forms": "4.4.4",
"@angular/http": "4.4.4",
"@angular/platform-browser": "4.4.4",
"@angular/platform-browser-dynamic": "4.4.4",
...
}
This release includes the latest version of zone.js
. Update your package.json
to match the following dependencies, remove the existing node_modules
directory, and then run npm install
:
"dependencies": {
...
"ionic-angular": "3.7.1",
...
"zone.js": "0.8.18"
}
This release adds support for the latest version of Angular (4.4.3) as well as the initial iteration of support for the iPhone X.
These are the latest versions of @angular
, rxjs
, zone.js
and ionic-angular
. Update your package.json
to match the following dependencies, remove the existing node_modules
directory, and then run npm install
:
...
"dependencies": {
"@angular/common": "4.4.3",
"@angular/compiler": "4.4.3",
"@angular/compiler-cli": "4.4.3",
"@angular/core": "4.4.3",
"@angular/forms": "4.4.3",
"@angular/http": "4.4.3",
"@angular/platform-browser": "4.4.3",
"@angular/platform-browser-dynamic": "4.4.3",
"ionic-angular": "3.7.0",
"rxjs": "5.4.3",
"zone.js": "0.8.17"
}
"devDependencies": {
"@ionic/app-scripts": "3.0.0"
}
...
If you're using a package-lock.json
file, make sure that is updated as well.
ionic-angular@3.6.1
is a drop-in replacement for 3.6.0. To install it, please run:
npm install -g ionic@latest
npm install @ionic/app-scripts@2.1.4 --save-dev
npm install ionic-angular@3.6.1 --save
ionic-angular
3.6.0 requires developer's to update to the latest version of the Ionic CLI
and @ionic/app-scripts
.
To upgrade, please run
npm install -g ionic@latest
npm install @ionic/app-scripts@latest --save-dev
npm install ionic-angular@latest --save
The URL when using deep linking is shortened and improved in this release. Due to a limitation in our nav system, if you're using ion-tabs
and have a tab name that matches a segment, meaning you have a tab name of schedule
and a segment of schedule
, there could potentially be issues. To mitigate these issues, make sure you set the tabUrlPath
property on the ion-tab
and give it a unique name. This limitation will require an API change to fix so it will be resolved in ionic-angular
4.x.
The upgrades include necessary changes to generators that add back lazy loading functionality, as well as an improved way of generating component/directives/and pipes.
The release adds back the functionality to generate lazy loaded pages. To generate a lazy loaded page, run:
ionic g page <Page-Name>
This will include a .module.ts
file in the page directory created. If you do not want to generate a lazy loaded page, you can run:
ionic g page <Page-Name> --no-module
This will also generate lazy loaded tabs as well, accepting the --no-module
flag as well to disable it.
For pipes/components/components, we now generate a shared common module for each of these.
So running:
ionic g component music-card
Will create a components/components.module.ts
file that declares and exports the music-card
component.
We think that this will allow developers to get up and running with custom components much faster and will less overhead.
ionic-angular@3.5.3
is a drop-in replacement for 3.5.2
. To install it, simply run npm install ionic-angular@3.5.3 --save --save-exact
.
ionic-angular@3.5.2
is a drop-in replacement for 3.5.1
. To install it, simply run npm install ionic-angular@3.5.2 --save --save-exact
.
We have released a new version of our build process for ionic-angular
apps, @ionic/app-scripts
in conjunction with this release of ionic-angular
. While it's not a required update, we recommend it because we have greatly improved the developer experience. Incremental, or update builds while developing are much faster now. We've also added scope hoisting
for better start-up performance on production builds.
To upgrade to @ionic/app-scripts
, run the following command:
rm -rf node_modules
npm install @ionic/app-scripts@2.0.2 --save-dev --save-exact
After installing the update, you'll need to make a minor change to the src/index.html
file to include a new <script>
tag for build/vendor.js
. The reason for this breaking change in @ionic/app-scripts
is for faster builds. By separating out the node_modules
dependencies into a vendor.js
file, the incremental build is faster.
...
<body>
<!-- Ionic's root component and where the app will load -->
<ion-app></ion-app>
<!-- cordova.js required for cordova apps -->
<script src="cordova.js"></script>
<!-- The polyfills js is generated during the build process -->
<script src="build/polyfills.js"></script>
<!-- The vendor js is generated during the build process
and includes all files in the node_modules directory -->
<script src="build/vendor.js"></script>
<!-- The bundle js is generated during the build process -->
<script src="build/main.js"></script>
</body>
...
If you're customizing @ionic/app-scripts
, we recommend you review the changelog, and update any of your configs accordingly.
3.5.2
is the same as 3.5.1
. We had a small publishing error.
See the 3.5.2 changelog. We had a publishing error here.
ionic-angular
should be set to version 3.5.0
.
npm install ionic-angular@3.5.0 --save --save-exact
There were major improvements made to navigation in this release of ionic-angular
. Specifically, we updated Ionic to support a concept of n
root navigation elements, instead of just one. This will enable first-class url support for things split-pane
. Before 3.5.0
, only one section of the screen could be represented in the URL. With these changes, multiple sections can be. Another large change was improving the behavior surrounding browser behaviors, such as the back-and-forward buttons, as well as refresh. In general, Ionic should work much more intuitively in a web browser now.
As a result of these improvements, if you're using deep linking, the urls of the application will be different with 3.5.0
than they were with previous Ionic releases. The URLs will likely change again in the near future with the next round of navigation improvements too. For now, we don't recommend using href
attributes in the application. Using the navPush
and navPop
directives is a better option for now while URL support is being built-out.
ionic-angular
should be set to version 3.4.0
in the package.json dependency list. The latest @angular
release 4.1.3
is also supported. Feel free to update apps by updating the package.json
dependencies to match below.
"dependencies": {
"@angular/common": "4.1.3",
"@angular/compiler": "4.1.3",
"@angular/compiler-cli": "4.1.3",
"@angular/core": "4.1.3",
"@angular/forms": "4.1.3",
"@angular/http": "4.1.3",
"@angular/platform-browser": "4.1.3",
"@angular/platform-browser-dynamic": "4.1.3",
"@ionic-native/core": "3.12.1",
"@ionic-native/splash-screen": "3.12.1",
"@ionic-native/status-bar": "3.12.1",
"@ionic/storage": "2.0.1",
"ionic-angular": "3.4.2",
"ionicons": "3.0.0",
"rxjs": "5.4.0",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.12"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.7",
"typescript": "2.3.4"
}
ionic-angular
now supports the latest @angular
(4.1.2), and typescript
(2.3.3) versions. Feel free to update apps by updating the package.json
dependencies to match below:
"dependencies": {
"@angular/common": "4.1.2",
"@angular/compiler": "4.1.2",
"@angular/compiler-cli": "4.1.2",
"@angular/core": "4.1.2",
"@angular/forms": "4.1.2",
"@angular/http": "4.1.2",
"@angular/platform-browser": "4.1.2",
"@angular/platform-browser-dynamic": "4.1.2",
"@ionic-native/core": "3.10.2",
"@ionic-native/splash-screen": "3.10.2",
"@ionic-native/status-bar": "3.10.2",
"@ionic/storage": "2.0.1",
"ionic-angular": "3.3.0",
"ionicons": "3.0.0",
"rxjs": "5.1.1",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.11"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.7",
"typescript": "2.3.3"
}
Another optional step is to remove the src/declarations.d.ts
file. This is a legacy file introduced early with ionic-angular
projects to improve compatibility between TypeScript and third-party libraries. Due to improvements in TypeScript, this file is no longer necessary. By removing this file, the TypeScript compiler will be able to provide more accurate error messages for import
statements.
Update your package.json to match the following dependencies, remove the existing node_modules
directory, and then run npm install
:
"dependencies": {
"@angular/common": "4.1.0",
"@angular/compiler": "4.1.0",
"@angular/compiler-cli": "4.1.0",
"@angular/core": "4.1.0",
"@angular/forms": "4.1.0",
"@angular/http": "4.1.0",
"@angular/platform-browser": "4.1.0",
"@angular/platform-browser-dynamic": "4.1.0",
"@ionic-native/core": "3.6.1",
"@ionic-native/splash-screen": "3.6.1",
"@ionic-native/status-bar": "3.6.1",
"@ionic/storage": "2.0.1",
"ionic-angular": "3.2.1",
"ionicons": "3.0.0",
"rxjs": "5.1.1",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.10"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.7",
"typescript": "2.2.1"
}
Using v3 of the Ionic CLI? Make sure to add @ionic/cli-plugin-ionic-angular
and @ionic/cli-plugin-cordova
to your devDependencies
. Read more about this on our blog.
Update your package.json to match the following dependencies, remove the existing node_modules
directory, and then run npm install
:
"dependencies": {
"@angular/common": "4.0.2",
"@angular/compiler": "4.0.2",
"@angular/compiler-cli": "4.0.2",
"@angular/core": "4.0.2",
"@angular/forms": "4.0.2",
"@angular/http": "4.0.2",
"@angular/platform-browser": "4.0.2",
"@angular/platform-browser-dynamic": "4.0.2",
"@ionic-native/core": "3.4.2",
"@ionic-native/splash-screen": "3.4.2",
"@ionic-native/status-bar": "3.4.2",
"@ionic/storage": "2.0.1",
"ionic-angular": "3.1.1",
"ionicons": "3.0.0",
"rxjs": "5.1.1",
"sw-toolbox": "3.4.0",
"zone.js": "^0.8.5"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.4",
"typescript": "~2.2.1"
},
With this release comes a major update to Angular (Angular 4.0!), the latest version of TypeScript, and some optional structural changes to your application.
node_modules
directory, and then run npm install
: "dependencies": {
"@angular/common": "4.0.0",
"@angular/compiler": "4.0.0",
"@angular/compiler-cli": "4.0.0",
"@angular/core": "4.0.0",
"@angular/forms": "4.0.0",
"@angular/http": "4.0.0",
"@angular/platform-browser": "4.0.0",
"@angular/platform-browser-dynamic": "4.0.0",
"@ionic-native/core": "3.4.2",
"@ionic-native/splash-screen": "3.4.2",
"@ionic-native/status-bar": "3.4.2",
"@ionic/storage": "2.0.1",
"ionic-angular": "3.0.1",
"ionicons": "3.0.0",
"rxjs": "5.1.1",
"sw-toolbox": "3.4.0",
"zone.js": "^0.8.4"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.0",
"typescript": "~2.2.1"
}
BrowserModule
in your app/app.module.ts
file: import { BrowserModule } from '@angular/platform-browser';
and then add it to the imports in the same file:
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
Http
, import the HttpModule
in your app/app.module.ts
file: import { HttpModule } from '@angular/http';
and then add it to the imports in the same file:
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp)
],
And that’s it! Your app should still function the same without any issues.
complete
if the state isn't loading (58b57c0)Removed the deprecated (old) grid. See the blog post for more information including steps to migrate: http://blog.ionic.io/build-awesome-desktop-apps-with-ionics-new-responsive-grid/
The following selectors to style the text color of the native text elements have been removed:
h1[color], h2[color], h3[color], h4[color], h5[color], h6[color], a[color]:not([ion-button]):not([ion-item]):not([ion-fab]), p[color], span[color], b[color], i[color], strong[color], em[color], small[color], sub[color], sup[color]
These have been throwing a deprecation warning since rc.3 but still working. They are officially gone and therefore these elements will not get the color unless the ion-text
attribute is added. Please see the documentation for more information: http://ionicframework.com/docs/api/components/typography/Typography/
The following properties and functions have been printing console warnings and are officially removed:
Slides input options
has been removed. Please use the input
properties instead.
Slide event ionWillChange
has been removed, please use
ionSlideWillChange
instead.
Slide event ionDidChange
has been removed, please use
ionSlideDidChange
instead.
Slide event ionDrag
has been removed, please use ionSlideDrag
instead.
Slides getSlider()
method has been removed, please use the instance
of ion-slides.
waitFor
method to InfiniteScroll (84e25a1)package.json
to match the following dependencies, remove the existing node_modules
directory, and then run npm install
: "dependencies": {
"@angular/common": "2.4.8",
"@angular/compiler": "2.4.8",
"@angular/compiler-cli": "2.4.8",
"@angular/core": "2.4.8",
"@angular/forms": "2.4.8",
"@angular/http": "2.4.8",
"@angular/platform-browser": "2.4.8",
"@angular/platform-browser-dynamic": "2.4.8",
"@angular/platform-server": "2.4.8",
"@ionic/storage": "2.0.0",
"ionic-angular": "2.2.0",
"ionic-native": "2.4.1",
"ionicons": "3.0.0",
"rxjs": "5.0.1",
"sw-toolbox": "3.4.0",
"zone.js": "0.7.2"
},
"devDependencies": {
"@ionic/app-scripts": "1.1.4",
"typescript": "2.0.9"
}
Note: If you are using ionic-storage
, you need to update it to 2.0.0
or you will run into an error similar to this: Error: Can't resolve all parameters for Storage: (?, ?).
. For more information, see the Storage Documentation.
As part of our initiative to improve desktop support we have introduced a new component called Split Pane. Split Pane makes it possible to easily create multi-view layouts. It allows elements, such as a menu or another navigation pane, to be displayed on large viewports. Split Pane can be used to achieve a layout similar to the Gmail (Android) or Mail (Apple) applications.
Ionic has been updated to depend on Angular 2.4.8, which is the latest version that we have tested and confirmed to be compatible with Ionic. This means that updating to the 2.2.0 release of Ionic will automatically work with all of the performance updates, bug fixes and features in Angular 2.4.8!
We recently released the 2.0.0 version of ionic-storage
. If you are using Ionic Storage in your application, you need to update to this version of ionic-storage
. Attempting to use an older version of ionic-storage
with Ionic 2.2.0 will cause errors. You can read about how to update to ionic-storage
2.0.0 here.
Enjoy! :tada:
Update the framework:
npm install --save --save-exact ionic-angular@2.0.0-rc.6
Change the import for ionicons in your theme/variables.scss
file from this:
@import "ionicons";
to
@import "ionic.ionicons";
See the conference app for an example. This fixes a bug with ionicons getting styled incorrectly.
npm uninstall -g ionic
npm install -g ionic
package.json
to match the following dependencies, remove existing node_modules
directory, and then run npm install
: "dependencies": {
"@angular/common": "2.2.1",
"@angular/compiler": "2.2.1",
"@angular/compiler-cli": "2.2.1",
"@angular/core": "2.2.1",
"@angular/forms": "2.2.1",
"@angular/http": "2.2.1",
"@angular/platform-browser": "2.2.1",
"@angular/platform-browser-dynamic": "2.2.1",
"@angular/platform-server": "2.2.1",
"@ionic/storage": "1.1.7",
"ionic-angular": "2.0.0-rc.5",
"ionic-native": "2.2.11",
"ionicons": "3.0.0",
"rxjs": "5.0.0-beta.12",
"zone.js": "0.6.26",
"sw-toolbox": "3.4.0"
},
"devDependencies": {
"@ionic/app-scripts": "1.0.0",
"typescript": "2.0.9"
}
Note: please ensure you are using the exact TypeScript and Angular versions listed above. There have been issues with the latest versions.
Internal refactor completed in order to improve tree shaking and dead code removal. The public API, with the exception of the slides component, has stayed the same. However, internally many changes were required so bundlers could better exclude modules which should not be bundled. Ultimately most changes resorted to removing references to window
or document
, or a module that referenced one of those.
Service Worker Toolbox (sw-toolbox) is now built in to the starters and conference app. This allows you to customize your service worker using a high level API instead of using the raw service worker API. Our out of the box configuration will give your app a good, network independent experience but you can easily customize this to fit your app’s unique use cases.
As part of the refactor to improve tree shaking the TextArea
has been merged into the TextInput
class. This means that if you are importing the TextArea
class you will need to change this to be TextInput
.
ion-slides was refactored to remove the external dependencies, and rewritten in TypeScript/ES6 modules to again improve tree shaking abilities. In order to work with tree shaking, the options
attribute had to be removed. See the Slides API Documentation for usage information.
npm uninstall -g ionic
npm install -g ionic
package.json
file: "dependencies": {
"@angular/common": "2.2.1",
"@angular/compiler": "2.2.1",
"@angular/compiler-cli": "2.2.1",
"@angular/core": "2.2.1",
"@angular/forms": "2.2.1",
"@angular/http": "2.2.1",
"@angular/platform-browser": "2.2.1",
"@angular/platform-browser-dynamic": "2.2.1",
"@angular/platform-server": "2.2.1",
"@ionic/storage": "1.1.7",
"ionic-angular": "2.0.0-rc.4",
"ionic-native": "2.2.11",
"ionicons": "3.0.0",
"rxjs": "5.0.0-beta.12",
"zone.js": "0.6.26"
},
"devDependencies": {
"@ionic/app-scripts": "0.0.47",
"typescript": "2.0.9"
}
@ionic/app-scripts
was recently
released. Please review the changelog
for the details on the minor breaking changes to the release:
https://github.com/ionic-team/ionic-app-scripts/blob/master/CHANGELOG.mdapplyTo
method to ionItemReorder
event (7e6d73b)no-shadow
attribute for Material Design header, footer, and
tabs to no-border
. This is the same attribute used by iOS mode.no-border
to the header or footer will hide the border.For example, the following code:
<ion-header>
<ion-navbar no-border-bottom></ion-navbar>
<ion-toolbar no-border-top></ion-toolbar>
</ion-header>
will now become:
<ion-header>
<ion-navbar></ion-navbar>
<ion-toolbar></ion-toolbar>
</ion-header>
and if you decide you don't want the border just add no-border
to the header: <ion-header no-border>
.
no-border-top
and no-border-bottom
will not work on iOS and should
be removed from any toolbars using it.events.subscribe(args)
function is no longer an array of parameters.
Instead, it will be called with the same parameters used in events.publish(arg1, arg2)
For example, the following code:
events.subscribe('user:created', args => {
console.log('Welcome ', args[0], ' at ', args[1]);
});
will now become:
events.subscribe('user:created', (user, time) => {
console.log('Welcome ', user, ' at ', time);
});
Update the following dependencies in your package.json
file:
"dependencies": {
"@angular/common": "2.1.1",
"@angular/compiler": "2.1.1",
"@angular/compiler-cli": "2.1.1",
"@angular/core": "2.1.1",
"@angular/forms": "2.1.1",
"@angular/http": "2.1.1",
"@angular/platform-browser": "2.1.1",
"@angular/platform-browser-dynamic": "2.1.1",
"@angular/platform-server": "2.1.1",
"@ionic/storage": "1.1.6",
"ionic-angular": "2.0.0-rc.3",
"ionic-native": "2.2.3",
"ionicons": "3.0.0",
"rxjs": "5.0.0-beta.12",
"zone.js": "0.6.26"
},
"devDependencies": {
"@ionic/app-scripts": "0.0.45",
"typescript": "2.0.6"
}
Update the following dependencies in your package.json
file:
"dependencies": {
"@angular/common": "2.1.1",
"@angular/compiler": "2.1.1",
"@angular/compiler-cli": "2.1.1",
"@angular/core": "2.1.1",
"@angular/forms": "2.1.1",
"@angular/http": "2.1.1",
"@angular/platform-browser": "2.1.1",
"@angular/platform-browser-dynamic": "2.1.1",
"@angular/platform-server": "2.1.1",
"@ionic/storage": "1.1.6",
"ionic-angular": "2.0.0-rc.2"
},
"devDependencies": {
"@ionic/app-scripts": "0.0.39"
}
Note: you should have other dependencies in this file that are not listed above, these are only the dependencies that need to be updated.
Remove the node_modules
directory from your project, and then run npm install
inside of your project. Then, you should be on the latest version!
package.json
has been upated to include Angular dependencies and the latest version of app-scripts. Please update your package.json to reflect these changes and then run npm install
.
"dependencies": {
"@angular/common": "2.0.0",
"@angular/compiler": "2.0.0",
"@angular/compiler-cli": "0.6.2",
"@angular/core": "2.0.0",
"@angular/forms": "2.0.0",
"@angular/http": "2.0.0",
"@angular/platform-browser": "2.0.0",
"@angular/platform-browser-dynamic": "2.0.0",
"@angular/platform-server": "2.0.0",
"@ionic/storage": "1.0.3",
"ionic-angular": "2.0.0-rc.1",
"ionic-native": "2.2.3",
"ionicons": "3.0.0",
"rxjs": "5.0.0-beta.12",
"zone.js": "0.6.21"
},
"devDependencies": {
"@ionic/app-scripts": "^0.0.36",
"typescript": "^2.0.3"
},
RC0 requires changes to the structure of your app. To get started updating your app see the Steps to Upgrade below.
2.0.0
release2.0.0
final!ionViewCanEnter
/ ionViewCanLeave
lifecycle events@types
support for third-party librariesgulp
(ionic-gulp-tasks) to npm scripts
(ionic-app-scripts)browserify
or webpack
ionic-angular
and placed into a separate module, @ionic/storage
. Starters have been updated to add this, make sure to add it to your package.json
if you’re using the storage system. See more details here.preloadTabs
ability. This is no longer needed with the Ahead of Time (AoT) compiler.<body>
element to the <ion-app>
element.alertOptions
input has been renamed to selectOptions
. See more details here.color
input on components, not added individually as an attribute on the component. See more details here.<button>
becomes <button ion-button>
. See more details here and here.<scroll-content>
element, which is internal to <ion-content>
, has been renamed to <div class="scroll-content">
since it was neither a directive nor a web component.<ion-fixed>
has been removed, use <div ion-fixed>
instead.typings
tool and have migrated to npm @types
. See more details here.ionViewLoaded
to ionViewDidLoad
ionViewDidUnload
fireOtherLifecycles
from ViewController
Nav transitions are now queued. Meaning if you run:
navCtrl.push(Page1);
navCtrl.push(Page2);
Page1
will transition in, then immediately Page2
will transition in. There can never be two transitions happening at the same time.
Page transition promises can now possibly reject the returned promises. Used mainly for ionViewCanEnter
and ionViewCanLeave
.
Colors are no longer added directly to a component, they should instead be passed in the color
attribute.
For example:
<ion-tabs primary>
Becomes
<ion-tabs color="primary">
Or to bind an expression to color:
<ion-navbar [color]="barColor">
...
</ion-navbar>
@Component({
templateUrl: 'build/pages/about/about.html'
})
export class AboutPage {
barColor: string;
constructor(private nav: NavController, platform: Platform) {
this.barColor = platform.is('android') ? 'primary' : 'light';
}
}
Components with this property:
Reason for this change:
Select’s alertOptions
input has been renamed to selectOptions
. It now allows you to pass options for either the alert or action-sheet interface. Refer to their documentation for the options each of them accept.
<button>
becomes <button ion-button>
<a button>
becomes <a ion-button>
<button ion-item>
does not get the ion-button
attribute<ion-item-options>
do get the ion-button
attributecategory
attribute, this should be passed in
ion-button
instead.Reason for this change:
<a>
and <button>
element and adding ion-button
as an attribute gives us the ability to take advantage of the native functionality and built-in accessibility of native elements. If Ionic provided an <ion-button>
we’d have to copy over all the possible attributes and events to the real nested button/link (type=submit
, formnovalidate
, value
, autofocus
, href
, target
, focus
/blur
, download
, nofollow
, ping
, etc). Additionally, Angular does not have the "replace" directive where <ion-button>
could be turned into <a ion-button>
.button
was already being used as an attribute to the <a>
element, this is more consistent between the two.<a ion-button>
, Ionic can automatically add the href
attribute.<ion-button>
<button>
<ion-icon name="rainy"></ion-icon>
</button>
becomes
<button ion-button icon-only>
<ion-icon name="rainy"></ion-icon>
</button>
<button>
<ion-icon name="rainy"></ion-icon>
Rainy
</button>
becomes
<button ion-button icon-left>
<ion-icon name="rainy"></ion-icon>
Rainy
</button>
<button>
Rainy
<ion-icon name="rainy"></ion-icon>
</button>
becomes
<button ion-button icon-right>
Rainy
<ion-icon name="rainy"></ion-icon>
</button>
icon-left
attribute should still be added to the <ion-item-options>
container and not the button itself.menuToggle
buttons should not get the icon-only
attributeReason for this change: There was a noticeable performance decrease from us reading in each button to determine where icons were placed and how to style them. This change improves performance. This adds styling so that the buttons and icons will be padded a certain amount, but the user is free to leave these attributes off and style the components themselves.
Ionic stylesheets are no longer dynamically loaded per platform. Instead there will be one CSS file to import. Note that future build processes will slim down the CSS file even further to only include component CSS actually used.
In the head of your index.html
file, replace:
<!-- ionic dynamically decides which stylesheet to load -->
<link ios-href="build/css/app.ios.css" rel="stylesheet">
<link md-href="build/css/app.md.css" rel="stylesheet">
<link wp-href="build/css/app.wp.css" rel="stylesheet">
With:
<link href="build/main.css" rel="stylesheet">
The default configuration will be updated, but if your existing app is using Sass and importing Ionic Sass files directly you’ll need to update the includePaths
of Node Sass.
node_modules/ionic-angular/themes
Next, to include Ionic into your custom Sass file you’ll need to update the Ionic import to this:
@import "ionic.theme.default";
Any type definitions for third party libraries that are included via the typings
tool and are included in the the typings.json
file should be updated to use npm @types
. An example of how this looks is:
npm install @types/lodash --save-dev --save-exact
Delete the typings.json
file, and the typings
directory.
The storage utilities have been moved outside of the framework to a separate library called @ionic/storage
.
This library can be installed by executing the following command:
npm install @ionic/storage --save --save-exact
It must be included in the app's NgModule
list of providers
:
import { Storage } from '@ionic/storage';
...
@NgModule({
...
providers: [Storage]
})
It can then be injected into any class that needs access to it:
import { Storage } from '@ionic/storage';
...
export class MyAwesomePage {
constructor(public storage: Storage) {
}
ionViewDidEnter() {
this.storage.get('myKey').then( (value:any) => {
console.log('My value is:', value);
});
}
}
ionic-angular
package includes es5 code with es2015 module import/exports, umd
modules, and pure es2015
code. The package.json
is set up using the main
and module
options to make this work seamlessly.
We are providing 2 ways to update your app with this release: Copying your Project to a New Project and Modifying your Existing Project. The first way will guide you through creating a new Ionic 2 project and copying your project files to it. This is the easiest way to update your app in our opinion. The second way will step through how to update your existing project. There are a lot of steps involved with this way, and we recommend viewing our conference app for any clarification if you choose this way. This is it! We don’t plan on making any more major API changes after this version.
Note: For details on NgModules you can read the Angular docs on them here
npm --version
If you are not running 3.x, the easiest way to update is to install the latest version of Node.js.
You can also update npm
by following these instructions.
Important: if you have installed the beta
cli you should run npm uninstall -g ionic
first. You need version 2.1.0
for this release. Check your cli
version by running ionic -v
in the command line.
npm install -g ionic
ionic start --v2 myApp
Copy/paste all of your pages from app/pages/
of your beta.11
app to src/pages/
, providers from app/providers
to src/providers
, pipes from app/pipes
to src/pipes
and any custom components to src/components
in the new RC0 app.
Modify all templateUrl
's to be relative to the .ts
file. For example in app.component.ts
the url should change from build/app.html
to app.html
and in a page referencing about.html
from build/pages/about/about.html
to about.html
.
Import and add each of your pages to the declarations
array and the entryComponents
array in src/app/app.module.ts
.
Import and add each of your custom components and pipes to the declarations
array in src/app/app.module.ts
.
Import and add each of your providers to the providers
array in src/app/app.module.ts
.
Remove any use of the providers
, pipes
and directives
arrays in @Component
.
Change any uses of the private
TypeScript keyword to public
ONLY for component variables that are needed in the associated template.
Note: For details as to why this change has to be made, there is a discussion about it here.
Change <button>
to <button ion-button>
according to these instructions.
Pass colors to the color
attribute : <button primary>
changes to <button color="primary">
. See component colors above.
Move any Ionic config to the IonicModule.forRoot
in app.module.ts
. For example, the config should go where it says configObject
here: IonicModule.forRoot(MyApp, {configObject})
.
Move any variables from the mode specific sass files in your beta.11
app into the theme/variables.scss
file under each comment section for the specific mode in the new RC0 app: ios section, md section, wp section.
Add selectors to each of your components that you would like to add custom styling for. These element selectors will be used for scoped sass. Previously a CSS class was dynamically added with the component class name, this is now the proper way to scope your sass for an individual page. For example, adding the page-about
selector:
In your component's stylesheet:
page-about {
#title {
color: blue;
}
}
In your component:
@Component({
selector: 'page-about',
templateUrl: 'about.html'
})
npm --version
If you are not running 3.x, the easiest way to update is to install the latest version of Node.js.
You can also update npm
by following these instructions.
Important: if you have installed the beta
cli you should run npm uninstall -g ionic
first. You need version 2.1.0
for this release. Check your cli
version by running ionic -v
in the command line.
npm install -g ionic
Update package.json
dependencies and devDependencies to match the ionic2-app-base package.json, and then run npm install
in your project folder.
Copy the npm scripts
from the ionic2-app-base package.json to your package.json
.
Delete the gulpfile.js
.
Rename the app
folder to src
.
Create a new directory called app
inside of src
.
Move the app.html
and app.ts
files inside of src/app
.
Rename app.ts
to app.component.ts
.
Add an app.module.ts
file and copy content from ionic2-starter-blank.
Move any providers from ionicBootstrap
in your app.component.ts
file to the providers in app.module.ts
. Make sure to copy imports, too.
Import and add any of your custom components to the declarations
array in src/app/app.module.ts
.
Move any Ionic config to the IonicModule.forRoot
in app.module.ts
. For example, the config should go where it says configObject
here: IonicModule.forRoot(MyApp, {configObject})
.
Remove the ionicBootstrap
code from app.component.ts
.
Export the main app class in app.component.ts
and then rename all uses of MyApp
in app.module.ts
to your main app class (or rename the export to MyApp
in app.component.ts
).
Fix any imports in app.component.ts
to use the correct path. For example, ./pages
becomes ../pages
.
Modify app.module.ts
to import your page specific classes. See HomePage
, for example. All pages should be included here.
Fix any import paths in app.module.ts
. For example, ./providers
becomes ../providers
.
Add main.dev.ts
and main.prod.ts
files from ionic2-app-base to app/
.
Move www/index.html
to src/index.html
and modify it to look like ionic2-app-base, make sure to keep any external scripts you have added.
Move www/assets
to src/assets
.
Move www/img
to src/assets/img
.
Move any other resources you have in www/
to src/assets/
.
Modify all templateUrl
's to be relative to the .ts
file. For example in app.component.ts
the url should change from build/app.html
to app.html
and in a page referencing about.html
from build/pages/about/about.html
to about.html
.
Update .gitignore to match ionic2-app-base.
Delete the typings/
folder and typings.json
file.
Update tsconfig.json
to match ionic2-app-base.
Rename and relocate app/theme/app.variables.scss
to src/theme/variables.scss
.
Move app Sass rule files from app/theme
to src/app
. This includes app.core.scss
, app.ios.scss
, etc.
Move any variables from the mode specific sass files in your beta.11
app into the theme/variables.scss
file under each comment section for the specific mode in the new RC0 app: ios section, md section, wp section.
Fix any paths to images in your app. For example, before the path may look like <img src="img/myImg.png">
and now it should be <img src="assets/img/myImg.png">
.
Change any uses of the private
TypeScript keyword to public
ONLY for component variables that are needed in the associated template.
Note: For details as to why this change has to be made, there is a discussion about it here.
Change any Ionic buttons from <button>
to <button ion-button>
. See New Behavior of Button.
Pass colors to the color
attribute: <button primary>
changes to <button color="primary">
.
Add appropriate icon attributes, if the icon is on the left of the text in a button it should get icon-left
, if the icon is on the right add icon-right
, and if the button only has an icon in it, add the icon-only
attribute to the button. See New Behavior of Icons in Buttons.
Add selectors to each of your components that you would like to add custom styling for. These element selectors will be used for scoped sass. Previously a CSS class was dynamically added with the component class name, this is now the proper way to scope your sass for an individual page. For example, adding the page-about
selector:
In your component's stylesheet:
page-about {
#title {
color: blue;
}
}
In your component:
@Component({
selector: 'page-about',
templateUrl: 'about.html'
})
providers
, pipes
and directives
arrays in @Component
._onWillDismiss
(35193c4)onDismiss
has been renamed to onDidDismiss
@angular/forms
- Angular2 Forms Changes.checked
attribute has been renamed to selected
.ios
and wp
mode, but defaults to false.present()
method on the overlay’s instance, rather than using nav.present(overlayInstance)
.Alert
, but the pattern is the same for all overlays: ActionSheet, Loading, Modal, Picker, Popover, ToastWAS:
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();
}
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 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 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/
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;
npm install --save --save-exact ionic-angular@2.0.0-beta.11 @angular/common@2.0.0-rc.4 @angular/compiler@2.0.0-rc.4 @angular/core@2.0.0-rc.4 @angular/http@2.0.0-rc.4 @angular/platform-browser@2.0.0-rc.4 @angular/platform-browser-dynamic@2.0.0-rc.4 @angular/forms@0.2.0 rxjs@5.0.0-beta.6 zone.js@0.6.12
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 });
}
ViewController.onDismiss
to ViewController.onDidDismiss
. The following code on dismiss of a modal: modal.onDismiss(() => {
});
becomes:
modal.onDidDismiss(() => {
});
Update any uses of checked
on an <ion-option>
to use selected
.
If you are using any of the tab config variables, update them to reflect the new names above.
If you are using any of the Sass Variables to override tabs or input highlights, update them to reflect the new names above.
Please see the Ionic Conference App for an example of upgrading to Beta 11.
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.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.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
.ion-header
, ion-content
, and ion-footer
. npm install --save ionic-angular@2.0.0-beta.10 @angular/common@2.0.0-rc.3 @angular/compiler@2.0.0-rc.3 @angular/platform-browser@2.0.0-rc.3 @angular/platform-browser-dynamic@2.0.0-rc.3 @angular/http@2.0.0-rc.3 @angular/core@2.0.0-rc.3 @angular/router@2.0.0-rc.2
*navbar
attribute so this: <ion-navbar *navbar>
becomes this:
<ion-navbar>
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>
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>
$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.autocomplete
, autocorrect
, spellcheck
, and type
to the searchbar which is passed to the input.hideCancelButton
attribute was removed in favor of showCancelButton
which is set to false
by default.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.ionicBootstrap(rootComponent, providers, config)
.prodMode
is now a config option, enabling or disabling production mode.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
All Ionic component events have been renamed to start with ion
. This is to prevent the Ionic events from clashing with native HTML events.
change
-> ionChange
change
-> ionChange
cancel
-> ionCancel
infinite
-> ionInfinite
opening
-> ionDrag
opened
-> ionOpen
closed
-> ionClose
select
-> ionSelect
change
-> ionChange
select
-> ionSelect
change
-> ionChange
refresh
-> ionRefresh
pulling
-> ionPull
start
-> ionStart
input
-> ionInput
blur
-> ionBlur
focus
-> ionFocus
cancel
-> ionCancel
clear
-> ionClear
change
-> ionChange
select
-> ionSelect
change
-> ionChange
cancel
-> ionCancel
willChange
-> ionWillChange
didChange
-> ionDidChange
move
-> ionDrag
select
-> ionSelect
select
-> ionSelect
change
-> ionChange
change
-> ionChange
Beta 8
by running the following command: npm install --save ionic-angular@2.0.0-beta.8
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.
@Page
with @Component
: import {Page} from 'ionic-angular';
@Page({
})
becomes
import {Component} from '@angular/core';
@Component({
})
@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'
});
IonicApp
to App
: import {IonicApp} from 'ionic-angular';
constructor(
private app: IonicApp
) {
becomes
import {App} from 'ionic-angular';
constructor(
private app: App
) {
onPageDidEnter() {
console.log("Entered page!");
}
becomes
ionViewDidEnter() {
console.log("Entered page!");
}
The full list of lifecycle name changes is in the section above.
<ion-slides (slideChangeStart)="onSlideChangeStart($event)">
becomes
<ion-slides (ionWillChange)="onSlideChangeStart($event)">
The full list of event name changes is in the section above.
Angular has been updated to 2.0.0-rc.1, follow these steps to update Angular.
package.json
and remove the angular2
entry: "angular2": "2.0.0-beta.15"
npm install --save ionic-angular@2.0.0-beta.7 @angular/core @angular/compiler @angular/common @angular/platform-browser @angular/platform-browser-dynamic @angular/router @angular/http rxjs@5.0.0-beta.6 zone.js@0.6.12 reflect-metadata
ionic-gulp-scripts-copy
: npm install --save-dev ionic-gulp-scripts-copy@2.0.0
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';
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>
ngFor
with let
. For example: *ngFor="#session of group.sessions"
becomes
*ngFor="let session of group.sessions"
virtualScroll
. For example: *virtualItem="#item"
becomes
*virtualItem="let item"
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.
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.
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
$toolbar-wp-title-text-color
for better control of the title
color$toolbar-wp-button-color
from the default themesMaterial 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
Renamed Sass variables in toggle, checkbox, and
radio. Changed the word media
in component-mode-media-padding
(for example)
to item-left
.