diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 017c46458b..c9bc3a92a9 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,5 +1,5 @@
**Ionic version:** (check one with "x")
-[ ] **1.x**
+[ ] **1.x** (For Ionic 1.x issues, please use https://github.com/driftyco/ionic-v1)
[ ] **2.x**
[ ] **3.x**
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1dc30ddaf3..f2ac6fe6da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,55 @@
+
+# [3.3.0](https://github.com/driftyco/ionic/compare/v3.2.1...v3.3.0) (2017-05-24)
+
+
+### Steps to Upgrade
+
+`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.6.1",
+ "@ionic-native/splash-screen": "3.6.1",
+ "@ionic-native/status-bar": "3.6.1",
+ "@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.10"
+},
+"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.
+
+### Bug Fixes
+
+* **range:** update the UI when min/max change ([#11720](https://github.com/driftyco/ionic/issues/11720)) ([d86785c](https://github.com/driftyco/ionic/commit/d86785c)), closes [#11719](https://github.com/driftyco/ionic/issues/11719)
+* **searchbar:** searchbar padding should be on the left ([#11651](https://github.com/driftyco/ionic/issues/11651)) ([3443ffd](https://github.com/driftyco/ionic/commit/3443ffd))
+* **segment:** add z-index to ios back button ([#10363](https://github.com/driftyco/ionic/issues/10363)) ([bb22e4a](https://github.com/driftyco/ionic/commit/bb22e4a))
+* **select:** RTL fix for searchbar ([#11355](https://github.com/driftyco/ionic/issues/11355)) ([ca71072](https://github.com/driftyco/ionic/commit/ca71072))
+* **VirtualScroll:** initialize trackByFn reference ([#11624](https://github.com/driftyco/ionic/issues/11624)) ([892e14f](https://github.com/driftyco/ionic/commit/892e14f))
+
+
+### Features
+
+* **icon:** add flip/unflip for icon on rtl ([#11634](https://github.com/driftyco/ionic/issues/11634)) ([7bdfaac](https://github.com/driftyco/ionic/commit/7bdfaac))
+* **rtl:** add rtl margin, padding, position and border-radius ([#11342](https://github.com/driftyco/ionic/issues/11342)) ([a30379b](https://github.com/driftyco/ionic/commit/a30379b))
+
+
+
## [3.2.1](https://github.com/driftyco/ionic/compare/v3.2.0...v3.2.1) (2017-05-12)
diff --git a/package.json b/package.json
index 65729fad97..8c6cdff2ae 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "ionic2",
- "version": "3.2.1",
+ "version": "3.3.0",
"description": "A powerful framework for building mobile and progressive web apps with JavaScript and Angular 2",
"keywords": [
"ionic",
@@ -25,14 +25,14 @@
"link": "gulp release.prepareReleasePackage && cd dist/ionic-angular && npm link"
},
"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",
+ "@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",
"ionicons": "~3.0.0",
"rxjs": "5.1.1",
"zone.js": "^0.8.10"
@@ -148,4 +148,4 @@
"pre-push#master": [
"test"
]
-}
\ No newline at end of file
+}
diff --git a/scripts/gulp/util.ts b/scripts/gulp/util.ts
index 1d7fc83b12..0654465fc2 100644
--- a/scripts/gulp/util.ts
+++ b/scripts/gulp/util.ts
@@ -209,8 +209,7 @@ export function runAppScriptsServe(testOrDemoName: string, appEntryPoint: string
'--coreDir', coreDir,
'--sass', sassConfigPath,
'--copy', copyConfigPath,
- '--enableLint', 'false',
- '--bonjour'
+ '--enableLint', 'false'
];
if (watchConfigPath) {
diff --git a/src/components/checkbox/checkbox.ts b/src/components/checkbox/checkbox.ts
index 86377f4c0c..ef3bb9086e 100644
--- a/src/components/checkbox/checkbox.ts
+++ b/src/components/checkbox/checkbox.ts
@@ -42,6 +42,34 @@ import { Item } from '../item/item';
*
* ```
*
+ * @advanced
+ *
+ * ```html
+ *
+ *
+ *
+ *
+ *
+ * Cucumber
+ *
+ *
+ *
+ *
+ * ```
+ *
+ * ```ts
+ * @Component({
+ * templateUrl: 'main.html'
+ * })
+ * class SaladPage {
+ * cucumber: boolean;
+ *
+ * updateCucumber() {
+ * console.log("Cucumbers new state:" + this.cucumber);
+ * }
+ * }
+ * ```
+ *
* @demo /docs/demos/src/checkbox/
* @see {@link /docs/components#checkbox Checkbox Component Docs}
*/
diff --git a/src/components/loading/loading-options.ts b/src/components/loading/loading-options.ts
index 3e2713e743..f3f5711568 100644
--- a/src/components/loading/loading-options.ts
+++ b/src/components/loading/loading-options.ts
@@ -5,6 +5,5 @@ export interface LoadingOptions {
cssClass?: string;
showBackdrop?: boolean;
dismissOnPageChange?: boolean;
- delay?: number;
duration?: number;
}
diff --git a/src/components/menu/menu.ts b/src/components/menu/menu.ts
index af0f706d6c..b896e88077 100644
--- a/src/components/menu/menu.ts
+++ b/src/components/menu/menu.ts
@@ -25,7 +25,7 @@ import { RootNode } from '../split-pane/split-pane';
* will be displayed differently based on the mode, however the display type can be changed
* to any of the available [menu types](#menu-types). The menu element should be a sibling
* to the app's content element. There can be any number of menus attached to the content.
- * These can be controlled from the templates, or programmatically using the [MenuController](../MenuController).
+ * These can be controlled from the templates, or programmatically using the [MenuController](../app/MenuController).
*
* @usage
*
@@ -170,14 +170,14 @@ import { RootNode } from '../split-pane/split-pane';
* }
* ```
*
- * See the [MenuController](../MenuController) API docs for all of the methods
+ * See the [MenuController](../../app/MenuController) API docs for all of the methods
* and usage information.
*
*
* @demo /docs/demos/src/menu/
*
* @see {@link /docs/components#menus Menu Component Docs}
- * @see {@link ../MenuController MenuController API Docs}
+ * @see {@link ../../app/MenuController MenuController API Docs}
* @see {@link ../../nav/Nav Nav API Docs}
* @see {@link ../../nav/NavController NavController API Docs}
*/
diff --git a/src/components/range/range.ts b/src/components/range/range.ts
index ea4dd6b8db..9389619168 100644
--- a/src/components/range/range.ts
+++ b/src/components/range/range.ts
@@ -146,6 +146,7 @@ export class Range extends BaseInput implements AfterContentInit, ControlVa
val = Math.round(val);
if (!isNaN(val)) {
this._min = val;
+ this._inputUpdated();
}
}
@@ -160,6 +161,7 @@ export class Range extends BaseInput implements AfterContentInit, ControlVa
val = Math.round(val);
if (!isNaN(val)) {
this._max = val;
+ this._inputUpdated();
}
}
diff --git a/src/components/range/test/basic/pages/root-page/root-page.html b/src/components/range/test/basic/pages/root-page/root-page.html
index 042873e29e..1c982b62b8 100644
--- a/src/components/range/test/basic/pages/root-page/root-page.html
+++ b/src/components/range/test/basic/pages/root-page/root-page.html
@@ -92,6 +92,14 @@
+
+ dynamic min and max
+
+
+
+
+
+
dual, pin, {{dualValue | json}}
@@ -117,4 +125,4 @@
-
\ No newline at end of file
+
diff --git a/src/components/range/test/basic/pages/root-page/root-page.ts b/src/components/range/test/basic/pages/root-page/root-page.ts
index 426f243947..dddfe16990 100644
--- a/src/components/range/test/basic/pages/root-page/root-page.ts
+++ b/src/components/range/test/basic/pages/root-page/root-page.ts
@@ -10,9 +10,13 @@ export class RootPage {
singleValue2: number = 150;
singleValue3: number = 64;
singleValue4: number = 1300;
+ singleValue5: number = 0;
dualValue: any;
dualValue2 = {lower: 33, upper: 60};
+ min: number = -50;
+ max: number = 50;
+
rangeCtrl = new FormControl({value: '66', disabled: true});
dualRangeCtrl = new FormControl({value: {lower: 33, upper: 60}, disabled: true});
diff --git a/src/components/segment/segment.ts b/src/components/segment/segment.ts
index 0af6e4805d..3fc253b2ea 100644
--- a/src/components/segment/segment.ts
+++ b/src/components/segment/segment.ts
@@ -31,11 +31,11 @@ import { SegmentButton } from './segment-button';
*
*
*
- *
- *
+ *
+ *
* Friends
*
- *
+ *
* Enemies
*
*
diff --git a/src/components/toolbar/toolbar.ios.scss b/src/components/toolbar/toolbar.ios.scss
index 60aab685e6..e46f59feaf 100644
--- a/src/components/toolbar/toolbar.ios.scss
+++ b/src/components/toolbar/toolbar.ios.scss
@@ -315,6 +315,7 @@ $toolbar-button-ios-strong-font-weight: 600 !default;
.back-button-ios {
@include margin(0);
+ z-index: 99;
overflow: visible;
order: map-get($toolbar-order-ios, back-button);
diff --git a/src/components/toolbar/toolbar.ts b/src/components/toolbar/toolbar.ts
index 80b7f03040..6141b28fd9 100644
--- a/src/components/toolbar/toolbar.ts
+++ b/src/components/toolbar/toolbar.ts
@@ -8,7 +8,7 @@ import { ToolbarBase } from './toolbar-base';
* @name Toolbar
* @description
* A Toolbar is a generic bar that is positioned above or below content.
- * Unlike a [Navbar](../../navbar/Navbar), a toolbar can be used as a subheader.
+ * Unlike a [Navbar](../Navbar/), a toolbar can be used as a subheader.
* When toolbars are placed within an `` or ``,
* the toolbars stay fixed in their respective location. When placed within
* ``, toolbars will scroll with the content.
@@ -90,7 +90,7 @@ import { ToolbarBase } from './toolbar-base';
* ```
*
* @demo /docs/demos/src/toolbar/
- * @see {@link ../../navbar/Navbar/ Navbar API Docs}
+ * @see {@link ../Navbar/ Navbar API Docs}
*/
@Component({
selector: 'ion-toolbar',
diff --git a/src/components/virtual-scroll/virtual-scroll.ts b/src/components/virtual-scroll/virtual-scroll.ts
index 805ff0c6c4..88bf65ba80 100644
--- a/src/components/virtual-scroll/virtual-scroll.ts
+++ b/src/components/virtual-scroll/virtual-scroll.ts
@@ -4,7 +4,7 @@ import { adjustRendered, calcDimensions, estimateHeight, initReadNodes, processR
import { Config } from '../../config/config';
import { Content, ScrollEvent } from '../content/content';
import { DomController } from '../../platform/dom-controller';
-import { isBlank, isFunction, isPresent, assert } from '../../util/util';
+import { isFunction, isPresent, assert } from '../../util/util';
import { Platform } from '../../platform/platform';
import { ViewController } from '../../navigation/view-controller';
import { VirtualCell, VirtualData, VirtualNode } from './virtual-util';
@@ -528,7 +528,7 @@ export class VirtualScroll implements DoCheck, AfterContentInit, OnDestroy {
}
private _updateDiffer() {
- if (isBlank(this._differ) && isPresent(this._records)) {
+ if (isPresent(this._records)) {
this._differ = this._iterableDiffers.find(this._records).create(this._virtualTrackBy);
}
}
diff --git a/src/fonts/ionicons.scss b/src/fonts/ionicons.scss
index dc8e92c386..436a309139 100644
--- a/src/fonts/ionicons.scss
+++ b/src/fonts/ionicons.scss
@@ -32,4 +32,19 @@ ion-icon {
text-rendering: auto;
text-transform: none;
speak: none;
+
+ @include rtl() {
+ &[aria-label^="arrow"]::before,
+ &[flip-rtl]::before {
+ transform: scaleX(-1);
+ }
+
+ &[unflip-rtl]::before {
+ transform: scaleX(1);
+ }
+ }
+
+ &::before {
+ display: inline-block;
+ }
}
diff --git a/src/navigation/nav-params.ts b/src/navigation/nav-params.ts
index ba6474854f..01116bb6bf 100644
--- a/src/navigation/nav-params.ts
+++ b/src/navigation/nav-params.ts
@@ -8,9 +8,9 @@
* @usage
* ```ts
* export class MyClass{
- * constructor(public params: NavParams){
+ * constructor(public navParams: NavParams){
* // userParams is an object we have in our nav-parameters
- * this.params.get('userParams');
+ * this.navParams.get('userParams');
* }
* }
* ```
@@ -33,9 +33,9 @@ export class NavParams {
*
* ```ts
* export class MyClass{
- * constructor(public params: NavParams){
+ * constructor(public navParams: NavParams){
* // userParams is an object we have in our nav-parameters
- * this.params.get('userParams');
+ * this.navParams.get('userParams');
* }
* }
* ```