diff --git a/CHANGELOG.md b/CHANGELOG.md index fa9098b644..e33a501d05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,7 +32,8 @@ ##### `` should now be ` diff --git a/demos/component-docs/menus/basic/menu-home.html b/demos/component-docs/menus/basic/menu-home.html index 411e497cce..7d9b95a4e2 100644 --- a/demos/component-docs/menus/basic/menu-home.html +++ b/demos/component-docs/menus/basic/menu-home.html @@ -1,6 +1,6 @@ - @@ -12,5 +12,5 @@ - + diff --git a/ionic/components.ios.scss b/ionic/components.ios.scss index 037a0ab7da..23d2e93074 100644 --- a/ionic/components.ios.scss +++ b/ionic/components.ios.scss @@ -5,22 +5,22 @@ // iOS Components @import - "components/app/modes/ios", - "components/action-sheet/modes/ios", - "components/badge/modes/ios", - "components/button/modes/ios", - "components/card/modes/ios", - "components/checkbox/modes/ios", - "components/content/modes/ios", - "components/item/modes/ios", - "components/list/modes/ios", - "components/menu/modes/ios", - "components/modal/modes/ios", - "components/popup/modes/ios", - "components/radio/modes/ios", - "components/searchbar/modes/ios", - "components/segment/modes/ios", - "components/switch/modes/ios", - "components/tabs/modes/ios", - "components/text-input/modes/ios", - "components/toolbar/modes/ios"; + "components/app/app.ios", + "components/action-sheet/action-sheet.ios", + "components/badge/badge.ios", + "components/button/button.ios", + "components/card/card.ios", + "components/checkbox/checkbox.ios", + "components/content/content.ios", + "components/item/item.ios", + "components/list/list.ios", + "components/menu/menu.ios", + "components/modal/modal.ios", + "components/popup/popup.ios", + "components/radio/radio.ios", + "components/searchbar/searchbar.ios", + "components/segment/segment.ios", + "components/switch/switch.ios", + "components/tabs/tabs.ios", + "components/text-input/text-input.ios", + "components/toolbar/toolbar.ios"; diff --git a/ionic/components.md.scss b/ionic/components.md.scss index bd97ece4c2..fa01a3ae44 100644 --- a/ionic/components.md.scss +++ b/ionic/components.md.scss @@ -5,23 +5,23 @@ // Material Design Components @import - "components/app/modes/md", - "components/action-sheet/modes/md", - "components/badge/modes/md", - "components/button/modes/md", - "components/card/modes/md", - "components/checkbox/modes/md", - "components/content/modes/md", - "components/item/modes/md", - "components/list/modes/md", - "components/menu/modes/md", - "components/modal/modes/md", - "components/popup/modes/md", - "components/radio/modes/md", + "components/app/app.md", + "components/action-sheet/action-sheet.md", + "components/badge/badge.md", + "components/button/button.md", + "components/card/card.md", + "components/checkbox/checkbox.md", + "components/content/content.md", + "components/item/item.md", + "components/list/list.md", + "components/menu/menu.md", + "components/modal/modal.md", + "components/popup/popup.md", + "components/radio/radio.md", "components/tap-click/ripple", - "components/searchbar/modes/md", - "components/segment/modes/md", - "components/switch/modes/md", - "components/tabs/modes/md", - "components/text-input/modes/md", - "components/toolbar/modes/md"; + "components/searchbar/searchbar.md", + "components/segment/segment.md", + "components/switch/switch.md", + "components/tabs/tabs.md", + "components/text-input/text-input.md", + "components/toolbar/toolbar.md"; diff --git a/ionic/components/action-sheet/modes/ios.scss b/ionic/components/action-sheet/action-sheet.ios.scss similarity index 97% rename from ionic/components/action-sheet/modes/ios.scss rename to ionic/components/action-sheet/action-sheet.ios.scss index dab7f7bc58..bd9ca256b3 100644 --- a/ionic/components/action-sheet/modes/ios.scss +++ b/ionic/components/action-sheet/action-sheet.ios.scss @@ -1,5 +1,5 @@ -@import "../../../globals.ios"; -@import "../action-sheet"; +@import "../../globals.ios"; +@import "./action-sheet"; // iOS Action Sheet // -------------------------------------------------- diff --git a/ionic/components/action-sheet/modes/md.scss b/ionic/components/action-sheet/action-sheet.md.scss similarity index 96% rename from ionic/components/action-sheet/modes/md.scss rename to ionic/components/action-sheet/action-sheet.md.scss index 2666d32804..2b8ecb69b5 100644 --- a/ionic/components/action-sheet/modes/md.scss +++ b/ionic/components/action-sheet/action-sheet.md.scss @@ -1,5 +1,5 @@ -@import "../../../globals.md"; -@import "../action-sheet"; +@import "../../globals.md"; +@import "./action-sheet"; // Material Design Action Sheet // -------------------------------------------------- diff --git a/ionic/components/app/modes/ios.scss b/ionic/components/app/app.ios.scss similarity index 92% rename from ionic/components/app/modes/ios.scss rename to ionic/components/app/app.ios.scss index d022bfca8e..ada8078e94 100644 --- a/ionic/components/app/modes/ios.scss +++ b/ionic/components/app/app.ios.scss @@ -1,4 +1,4 @@ -@import "../../../globals.ios"; +@import "../../globals.ios"; // iOS App // -------------------------------------------------- diff --git a/ionic/components/app/modes/md.scss b/ionic/components/app/app.md.scss similarity index 92% rename from ionic/components/app/modes/md.scss rename to ionic/components/app/app.md.scss index 058c7d4e57..77d9fed5d0 100644 --- a/ionic/components/app/modes/md.scss +++ b/ionic/components/app/app.md.scss @@ -1,4 +1,4 @@ -@import "../../../globals.md"; +@import "../../globals.md"; // Material Design App // -------------------------------------------------- diff --git a/ionic/components/badge/modes/ios.scss b/ionic/components/badge/badge.ios.scss similarity index 90% rename from ionic/components/badge/modes/ios.scss rename to ionic/components/badge/badge.ios.scss index a369cb4015..b6bbf311bc 100644 --- a/ionic/components/badge/modes/ios.scss +++ b/ionic/components/badge/badge.ios.scss @@ -1,4 +1,4 @@ -@import "../badge"; +@import "./badge"; // iOS Badge // -------------------------------------------------- diff --git a/ionic/components/badge/modes/md.scss b/ionic/components/badge/badge.md.scss similarity index 90% rename from ionic/components/badge/modes/md.scss rename to ionic/components/badge/badge.md.scss index 4156b406f2..d7c3ec3f86 100644 --- a/ionic/components/badge/modes/md.scss +++ b/ionic/components/badge/badge.md.scss @@ -1,4 +1,4 @@ -@import "../badge"; +@import "./badge"; // Material Design Badge // -------------------------------------------------- diff --git a/ionic/components/button/modes/ios.scss b/ionic/components/button/button.ios.scss similarity index 97% rename from ionic/components/button/modes/ios.scss rename to ionic/components/button/button.ios.scss index 37e1fc151a..93111aac7b 100644 --- a/ionic/components/button/modes/ios.scss +++ b/ionic/components/button/button.ios.scss @@ -1,5 +1,5 @@ -@import "../../../globals.ios"; -@import "../button"; +@import "../../globals.ios"; +@import "./button"; // iOS Button // -------------------------------------------------- @@ -216,5 +216,5 @@ $button-ios-small-icon-font-size: 1.3em !default; // Core Button Overrides // -------------------------------------------------- -@import "../button-fab"; -@import "../button-icon"; +@import "./button-fab"; +@import "./button-icon"; diff --git a/ionic/components/button/modes/md.scss b/ionic/components/button/button.md.scss similarity index 98% rename from ionic/components/button/modes/md.scss rename to ionic/components/button/button.md.scss index b5e55f8dc7..43170ba19e 100644 --- a/ionic/components/button/modes/md.scss +++ b/ionic/components/button/button.md.scss @@ -1,5 +1,5 @@ -@import "../../../globals.md"; -@import "../button"; +@import "../../globals.md"; +@import "./button"; // Material Design Button // -------------------------------------------------- @@ -258,5 +258,5 @@ $button-md-small-icon-font-size: 1.4em !default; // Core Button Overrides // -------------------------------------------------- -@import "../button-fab"; -@import "../button-icon"; +@import "./button-fab"; +@import "./button-icon"; diff --git a/ionic/components/card/modes/ios.scss b/ionic/components/card/card.ios.scss similarity index 98% rename from ionic/components/card/modes/ios.scss rename to ionic/components/card/card.ios.scss index a26627c934..736a7c02c5 100644 --- a/ionic/components/card/modes/ios.scss +++ b/ionic/components/card/card.ios.scss @@ -1,5 +1,5 @@ -@import "../../../globals.ios"; -@import "../card"; +@import "../../globals.ios"; +@import "./card"; // iOS Card // -------------------------------------------------- diff --git a/ionic/components/card/modes/md.scss b/ionic/components/card/card.md.scss similarity index 98% rename from ionic/components/card/modes/md.scss rename to ionic/components/card/card.md.scss index 9b61313270..4aa2b8d3b4 100644 --- a/ionic/components/card/modes/md.scss +++ b/ionic/components/card/card.md.scss @@ -1,5 +1,5 @@ -@import "../../../globals.md"; -@import "../card"; +@import "../../globals.md"; +@import "./card"; // Material Design Card // -------------------------------------------------- diff --git a/ionic/components/checkbox/modes/ios.scss b/ionic/components/checkbox/checkbox.ios.scss similarity index 98% rename from ionic/components/checkbox/modes/ios.scss rename to ionic/components/checkbox/checkbox.ios.scss index e604762cb2..9bef5cc5e6 100644 --- a/ionic/components/checkbox/modes/ios.scss +++ b/ionic/components/checkbox/checkbox.ios.scss @@ -1,4 +1,4 @@ -@import "../../../globals.ios"; +@import "../../globals.ios"; // iOS Checkbox Structure // -------------------------------------------------- diff --git a/ionic/components/checkbox/modes/md.scss b/ionic/components/checkbox/checkbox.md.scss similarity index 99% rename from ionic/components/checkbox/modes/md.scss rename to ionic/components/checkbox/checkbox.md.scss index 1d280bff94..1111ebad82 100644 --- a/ionic/components/checkbox/modes/md.scss +++ b/ionic/components/checkbox/checkbox.md.scss @@ -1,4 +1,4 @@ -@import "../../../globals.md"; +@import "../../globals.md"; // Material Design Checkbox // -------------------------------------------------- diff --git a/ionic/components/checkbox/checkbox.ts b/ionic/components/checkbox/checkbox.ts index f640835c47..2f21c27cf3 100644 --- a/ionic/components/checkbox/checkbox.ts +++ b/ionic/components/checkbox/checkbox.ts @@ -70,6 +70,7 @@ export class Checkbox { } /** + * @private * Toggle the checked state of the checkbox. Calls onChange to pass the updated checked state to the model (Control). */ toggle() { diff --git a/ionic/components/content/modes/ios.scss b/ionic/components/content/content.ios.scss similarity index 91% rename from ionic/components/content/modes/ios.scss rename to ionic/components/content/content.ios.scss index 1d566f1d40..7b507a8cf2 100644 --- a/ionic/components/content/modes/ios.scss +++ b/ionic/components/content/content.ios.scss @@ -1,4 +1,4 @@ -@import "../../../globals.ios"; +@import "../../globals.ios"; // iOS Content // -------------------------------------------------- diff --git a/ionic/components/content/modes/md.scss b/ionic/components/content/content.md.scss similarity index 95% rename from ionic/components/content/modes/md.scss rename to ionic/components/content/content.md.scss index ff3794d455..bc40e3358c 100644 --- a/ionic/components/content/modes/md.scss +++ b/ionic/components/content/content.md.scss @@ -1,4 +1,4 @@ -@import "../../../globals.md"; +@import "../../globals.md"; // Material Design Content Padding // -------------------------------------------------- diff --git a/ionic/components/item/modes/ios.scss b/ionic/components/item/item.ios.scss similarity index 98% rename from ionic/components/item/modes/ios.scss rename to ionic/components/item/item.ios.scss index 309f2a19e6..b8556574fe 100644 --- a/ionic/components/item/modes/ios.scss +++ b/ionic/components/item/item.ios.scss @@ -1,5 +1,5 @@ -@import "../../../globals.ios"; -@import "../item"; +@import "../../globals.ios"; +@import "./item"; // iOS Item // -------------------------------------------------- diff --git a/ionic/components/item/modes/md.scss b/ionic/components/item/item.md.scss similarity index 98% rename from ionic/components/item/modes/md.scss rename to ionic/components/item/item.md.scss index d9b0042920..b518b0a50f 100644 --- a/ionic/components/item/modes/md.scss +++ b/ionic/components/item/item.md.scss @@ -1,5 +1,5 @@ -@import "../../../globals.md"; -@import "../item"; +@import "../../globals.md"; +@import "./item"; // Material Design Item // -------------------------------------------------- diff --git a/ionic/components/list/modes/ios.scss b/ionic/components/list/list.ios.scss similarity index 98% rename from ionic/components/list/modes/ios.scss rename to ionic/components/list/list.ios.scss index 415b1af0d2..78e4afeecd 100644 --- a/ionic/components/list/modes/ios.scss +++ b/ionic/components/list/list.ios.scss @@ -1,5 +1,5 @@ -@import "../../../globals.ios"; -@import "../list"; +@import "../../globals.ios"; +@import "./list"; // iOS List // -------------------------------------------------- diff --git a/ionic/components/list/modes/md.scss b/ionic/components/list/list.md.scss similarity index 98% rename from ionic/components/list/modes/md.scss rename to ionic/components/list/list.md.scss index 93ffcc7d5f..0c80629e94 100644 --- a/ionic/components/list/modes/md.scss +++ b/ionic/components/list/list.md.scss @@ -1,5 +1,5 @@ -@import "../../../globals.md"; -@import "../list"; +@import "../../globals.md"; +@import "./list"; // Material Design List // -------------------------------------------------- diff --git a/ionic/components/list/list.ts b/ionic/components/list/list.ts index 0189f0c2bd..9168239397 100644 --- a/ionic/components/list/list.ts +++ b/ionic/components/list/list.ts @@ -77,22 +77,19 @@ export class List extends Ion { } enableSlidingItems(shouldEnable) { - if (this._init) { + if (this._enableSliding !== shouldEnable) { + this._enableSliding = shouldEnable; - if (this._enableSliding !== shouldEnable) { - this._enableSliding = shouldEnable; - - if (shouldEnable) { - console.debug('enableSlidingItems'); - this.zone.runOutsideAngular(() => { - setTimeout(() => { - this.slidingGesture = new ItemSlidingGesture(this, this.ele); - }); + if (shouldEnable) { + console.debug('enableSlidingItems'); + this.zone.runOutsideAngular(() => { + setTimeout(() => { + this.slidingGesture = new ItemSlidingGesture(this, this.ele); }); + }); - } else { - this.slidingGesture && this.slidingGesture.unlisten(); - } + } else { + this.slidingGesture && this.slidingGesture.unlisten(); } } } @@ -101,15 +98,6 @@ export class List extends Ion { this.slidingGesture && this.slidingGesture.closeOpened(); } - /** - * @private - */ - ngAfterViewInit() { - this._init = true; - if (this._enableSliding) { - this.enableSlidingItems(true); - } - } } diff --git a/ionic/components/menu/menu-close.ts b/ionic/components/menu/menu-close.ts index ea68257162..71ff611a66 100644 --- a/ionic/components/menu/menu-close.ts +++ b/ionic/components/menu/menu-close.ts @@ -1,7 +1,7 @@ -import {Directive, ElementRef} from 'angular2/angular2'; +import {Directive} from 'angular2/angular2'; -import {Ion} from '../ion'; import {IonicApp} from '../app/app'; +import {Menu} from './menu'; /** @@ -18,18 +18,15 @@ import {IonicApp} from '../app/app'; '(click)': 'close()' } }) -export class MenuClose extends Ion { +export class MenuClose { - constructor( - app: IonicApp, - elementRef: ElementRef - ) { - super(elementRef, null); - this.app = app; - } + constructor(private app: IonicApp) {} + /** + * @private + */ close() { - let menu = this.app.getComponent(this.menuClose || 'menu'); + let menu = Menu.getById(this.app, this.menuClose); menu && menu.close(); } diff --git a/ionic/components/menu/menu-toggle.ts b/ionic/components/menu/menu-toggle.ts index 2bdfdfe4a6..fb212f3f47 100644 --- a/ionic/components/menu/menu-toggle.ts +++ b/ionic/components/menu/menu-toggle.ts @@ -1,9 +1,9 @@ import {Directive, ElementRef, Optional} from 'angular2/angular2'; -import {Ion} from '../ion'; import {IonicApp} from '../app/app'; import {ViewController} from '../nav/view-controller'; import {Navbar} from '../navbar/navbar'; +import {Menu} from './menu'; /** @@ -22,7 +22,7 @@ import {Navbar} from '../navbar/navbar'; 'menu-toggle': '' //ensures the attr is there for css when using [menu-toggle] } }) -export class MenuToggle extends Ion { +export class MenuToggle { constructor( app: IonicApp, @@ -30,7 +30,6 @@ export class MenuToggle extends Ion { @Optional() viewCtrl: ViewController, @Optional() navbar: Navbar ) { - super(elementRef, null); this.app = app; this.viewCtrl = viewCtrl; this.withinNavbar = !!navbar; @@ -42,14 +41,16 @@ export class MenuToggle extends Ion { } /** - * TODO - * @param {TODO} event TODO + * @private */ toggle() { - let menu = this.app.getComponent(this.menuToggle || 'menu'); + let menu = Menu.getById(this.app, this.menuToggle); menu && menu.toggle(); } + /** + * @private + */ get isHidden() { if (this.withinNavbar && this.viewCtrl) { return !this.viewCtrl.isRoot(); diff --git a/ionic/components/menu/modes/ios.scss b/ionic/components/menu/menu.ios.scss similarity index 93% rename from ionic/components/menu/modes/ios.scss rename to ionic/components/menu/menu.ios.scss index d49a000483..f0c80e0554 100644 --- a/ionic/components/menu/modes/ios.scss +++ b/ionic/components/menu/menu.ios.scss @@ -1,4 +1,4 @@ -@import "../../../globals.ios"; +@import "../../globals.ios"; // iOS Menu // -------------------------------------------------- diff --git a/ionic/components/menu/modes/md.scss b/ionic/components/menu/menu.md.scss similarity index 93% rename from ionic/components/menu/modes/md.scss rename to ionic/components/menu/menu.md.scss index cf1b68d53e..681a5e2ca2 100644 --- a/ionic/components/menu/modes/md.scss +++ b/ionic/components/menu/menu.md.scss @@ -1,4 +1,4 @@ -@import "../../../globals.md"; +@import "../../globals.md"; // Material Design Menu // -------------------------------------------------- diff --git a/ionic/components/menu/menu.ts b/ionic/components/menu/menu.ts index 19d6809866..49e32d47b1 100644 --- a/ionic/components/menu/menu.ts +++ b/ionic/components/menu/menu.ts @@ -35,6 +35,14 @@ import * as gestures from './menu-gestures'; * * ``` * + * Menus can optionally be given an `id` attribute which allows the app to + * to get ahold of menu references. If no `id` is given then the menu + * automatically receives an `id` created from the side it is on, such as + * `leftMenu` or `rightMenu`. When using more than one menu it is always + * recommended to give each menu a unique `id`. Additionally menu-toggle and + * menu-close directives should be given menu id values of their respective + * menu. + * * Menu supports two display styles: overlay, and reveal. Overlay * is the traditional Android drawer style, and Reveal is the traditional iOS * style. By default, Menu will adjust to the correct style for the platform, @@ -109,7 +117,11 @@ export class Menu extends Ion { if (!self.id) { // Auto register - self.id = 'menu'; + self.id = self.side + 'Menu'; + if (self.app.getComponent(self.id)) { + // id already exists, make sure this one is unique + self.id += (++menuIds); + } self.app.register(self.id, self); } @@ -360,9 +372,34 @@ export class Menu extends Ion { this._cntEle = null; } + static getById(app, menuId) { + let menu = null; + + if (menuId) { + menu = app.getComponent(menuId); + if (!menu) { + console.error('Menu with id "' + menuId + '" cannot be found for menu-toggle'); + return; + } + + } else { + menu = app.getComponent('leftMenu'); + if (!menu) { + menu = app.getComponent('rightMenu'); + } + if (!menu) { + console.error('Menu with id "leftMenu" or "rightMenu" cannot be found for menu-toggle'); + return; + } + } + + return menu; + } + } let menuTypes = {}; +let menuIds = 0; @Directive({ diff --git a/ionic/components/modal/modes/ios.scss b/ionic/components/modal/modal.ios.scss similarity index 86% rename from ionic/components/modal/modes/ios.scss rename to ionic/components/modal/modal.ios.scss index 45c341c13f..9bf6a6f680 100644 --- a/ionic/components/modal/modes/ios.scss +++ b/ionic/components/modal/modal.ios.scss @@ -1,4 +1,4 @@ -@import "../../../globals.ios"; +@import "../../globals.ios"; // iOS Modals // -------------------------------------------------- diff --git a/ionic/components/modal/modes/md.scss b/ionic/components/modal/modal.md.scss similarity index 87% rename from ionic/components/modal/modes/md.scss rename to ionic/components/modal/modal.md.scss index fd099ec018..614257d49b 100644 --- a/ionic/components/modal/modes/md.scss +++ b/ionic/components/modal/modal.md.scss @@ -1,4 +1,4 @@ -@import "../../../globals.md"; +@import "../../globals.md"; // Material Design Modals // -------------------------------------------------- diff --git a/ionic/components/nav/nav-controller.ts b/ionic/components/nav/nav-controller.ts index b6c2e2580c..c68e9d1930 100644 --- a/ionic/components/nav/nav-controller.ts +++ b/ionic/components/nav/nav-controller.ts @@ -441,7 +441,7 @@ export class NavController extends Ion { viewCtrl.shouldDestroy = false; viewCtrl.shouldCache = false; - this._incrementId(viewCtrl); + this._incId(viewCtrl); this._views.splice(index, 0, viewCtrl); this._cleanup(); @@ -1271,14 +1271,14 @@ export class NavController extends Ion { * @private */ _add(viewCtrl) { - this._incrementId(viewCtrl); + this._incId(viewCtrl); this._views.push(viewCtrl); } /** * @private */ - _incrementId(viewCtrl) { + _incId(viewCtrl) { viewCtrl.id = this.id + '-' + (++this._ids); } @@ -1435,12 +1435,23 @@ export class NavController extends Ion { /** * @private - * IS RETURNING UNDEFIND * @param {TODO} view TODO - * @returns {TODO} TODO + * @returns {boolean} */ isActive(viewCtrl) { - return (viewCtrl && viewCtrl.state === ACTIVE_STATE); + return !!(viewCtrl && viewCtrl.state === ACTIVE_STATE); + } + + /** + * Returns the root NavController. + * @returns {NavController} + */ + get rootNav() { + let nav = this; + while (nav.parent) { + nav = nav.parent; + } + return nav; } /** diff --git a/ionic/components/popup/modes/ios.scss b/ionic/components/popup/popup.ios.scss similarity index 98% rename from ionic/components/popup/modes/ios.scss rename to ionic/components/popup/popup.ios.scss index f3cad9cbb5..3929782215 100644 --- a/ionic/components/popup/modes/ios.scss +++ b/ionic/components/popup/popup.ios.scss @@ -1,5 +1,5 @@ -@import "../../../globals.ios"; -@import "../popup"; +@import "../../globals.ios"; +@import "./popup"; // iOS Popups // -------------------------------------------------- diff --git a/ionic/components/popup/modes/md.scss b/ionic/components/popup/popup.md.scss similarity index 97% rename from ionic/components/popup/modes/md.scss rename to ionic/components/popup/popup.md.scss index 901287bb23..a87357dd08 100644 --- a/ionic/components/popup/modes/md.scss +++ b/ionic/components/popup/popup.md.scss @@ -1,5 +1,5 @@ -@import "../../../globals.md"; -@import "../popup"; +@import "../../globals.md"; +@import "./popup"; // Material Design Popups // -------------------------------------------------- diff --git a/ionic/components/radio/modes/ios.scss b/ionic/components/radio/radio.ios.scss similarity index 98% rename from ionic/components/radio/modes/ios.scss rename to ionic/components/radio/radio.ios.scss index 8663ad92fc..f33240863a 100644 --- a/ionic/components/radio/modes/ios.scss +++ b/ionic/components/radio/radio.ios.scss @@ -1,4 +1,4 @@ -@import "../../../globals.ios"; +@import "../../globals.ios"; // iOS Radio // -------------------------------------------------- diff --git a/ionic/components/radio/modes/md.scss b/ionic/components/radio/radio.md.scss similarity index 98% rename from ionic/components/radio/modes/md.scss rename to ionic/components/radio/radio.md.scss index c22a3eed03..fb9f22ff86 100644 --- a/ionic/components/radio/modes/md.scss +++ b/ionic/components/radio/radio.md.scss @@ -1,4 +1,4 @@ -@import "../../../globals.md"; +@import "../../globals.md"; // Material Design Radio // -------------------------------------------------- diff --git a/ionic/components/searchbar/modes/ios.scss b/ionic/components/searchbar/searchbar.ios.scss similarity index 98% rename from ionic/components/searchbar/modes/ios.scss rename to ionic/components/searchbar/searchbar.ios.scss index c1509f0e6f..34b9e549a6 100644 --- a/ionic/components/searchbar/modes/ios.scss +++ b/ionic/components/searchbar/searchbar.ios.scss @@ -1,5 +1,5 @@ -@import "../../../globals.ios"; -@import "../searchbar"; +@import "../../globals.ios"; +@import "./searchbar"; // iOS Searchbar // -------------------------------------------------- diff --git a/ionic/components/searchbar/modes/md.scss b/ionic/components/searchbar/searchbar.md.scss similarity index 98% rename from ionic/components/searchbar/modes/md.scss rename to ionic/components/searchbar/searchbar.md.scss index 0e347176a9..f02aa0d3f4 100644 --- a/ionic/components/searchbar/modes/md.scss +++ b/ionic/components/searchbar/searchbar.md.scss @@ -1,5 +1,5 @@ -@import "../../../globals.md"; -@import "../searchbar"; +@import "../../globals.md"; +@import "./searchbar"; // Material Design Searchbar // -------------------------------------------------- diff --git a/ionic/components/segment/modes/ios.scss b/ionic/components/segment/segment.ios.scss similarity index 98% rename from ionic/components/segment/modes/ios.scss rename to ionic/components/segment/segment.ios.scss index 1b2f0d6ae8..5903bd7474 100644 --- a/ionic/components/segment/modes/ios.scss +++ b/ionic/components/segment/segment.ios.scss @@ -1,5 +1,5 @@ -@import "../../../globals.ios"; -@import "../segment"; +@import "../../globals.ios"; +@import "./segment"; // iOS Segment // -------------------------------------------------- diff --git a/ionic/components/segment/modes/md.scss b/ionic/components/segment/segment.md.scss similarity index 97% rename from ionic/components/segment/modes/md.scss rename to ionic/components/segment/segment.md.scss index 274e18e6d3..fd66826a99 100644 --- a/ionic/components/segment/modes/md.scss +++ b/ionic/components/segment/segment.md.scss @@ -1,5 +1,5 @@ -@import "../../../globals.md"; -@import "../segment"; +@import "../../globals.md"; +@import "./segment"; // Material Design Segment // -------------------------------------------------- diff --git a/ionic/components/switch/modes/ios.scss b/ionic/components/switch/switch.ios.scss similarity index 99% rename from ionic/components/switch/modes/ios.scss rename to ionic/components/switch/switch.ios.scss index 22ac526f20..81e783bb9f 100644 --- a/ionic/components/switch/modes/ios.scss +++ b/ionic/components/switch/switch.ios.scss @@ -1,4 +1,4 @@ -@import "../../../globals.ios"; +@import "../../globals.ios"; // iOS Switch // -------------------------------------------------- diff --git a/ionic/components/switch/modes/md.scss b/ionic/components/switch/switch.md.scss similarity index 99% rename from ionic/components/switch/modes/md.scss rename to ionic/components/switch/switch.md.scss index 0b081adcb6..4200de3b3c 100644 --- a/ionic/components/switch/modes/md.scss +++ b/ionic/components/switch/switch.md.scss @@ -1,4 +1,4 @@ -@import "../../../globals.md"; +@import "../../globals.md"; // Material Design Switch // -------------------------------------------------- diff --git a/ionic/components/switch/switch.ts b/ionic/components/switch/switch.ts index c6f5c8b9ad..5f153b8b02 100644 --- a/ionic/components/switch/switch.ts +++ b/ionic/components/switch/switch.ts @@ -167,6 +167,7 @@ export class Switch { /** * Set checked state of this switch. * @param {boolean} value Boolean to set this switch's checked state to. + * @private */ check(value) { this.checked = !!value; @@ -175,6 +176,7 @@ export class Switch { /** * Toggle the checked state of this switch. + * @private */ toggle(ev) { this.check(!this.checked); diff --git a/ionic/components/tabs/modes/ios.scss b/ionic/components/tabs/tabs.ios.scss similarity index 94% rename from ionic/components/tabs/modes/ios.scss rename to ionic/components/tabs/tabs.ios.scss index dbb301d3f7..968f8db08c 100644 --- a/ionic/components/tabs/modes/ios.scss +++ b/ionic/components/tabs/tabs.ios.scss @@ -1,10 +1,10 @@ -@import "../../../globals.ios"; -@import "../tabs"; +@import "../../globals.ios"; +@import "./tabs"; // iOS Tabs // -------------------------------------------------- -$tabbar-ios-background-color: $toolbar-ios-background-color !default; +$tabbar-ios-background: $toolbar-ios-background !default; $tabbar-ios-item-padding: 0px 10px !default; $tabbar-ios-item-font-size: 10px !default; $tabbar-ios-item-icon-size: 32px !default; @@ -18,7 +18,7 @@ $tab-button-ios-inactive-color: $toolbar-ios-inactive-color !default; tabbar { border-top: 1px solid $toolbar-ios-border-color; - background: $tabbar-ios-background-color; + background: $tabbar-ios-background; } ion-tabs[tabbar-placement=top] tabbar { diff --git a/ionic/components/tabs/modes/md.scss b/ionic/components/tabs/tabs.md.scss similarity index 93% rename from ionic/components/tabs/modes/md.scss rename to ionic/components/tabs/tabs.md.scss index 3d8459c4e9..3273111a2e 100644 --- a/ionic/components/tabs/modes/md.scss +++ b/ionic/components/tabs/tabs.md.scss @@ -1,10 +1,10 @@ -@import "../../../globals.md"; -@import "../tabs"; +@import "../../globals.md"; +@import "./tabs"; // Material Design Tabs // -------------------------------------------------- -$tabbar-md-background-color: $toolbar-md-background-color !default; +$tabbar-md-background: $toolbar-md-background !default; $tabbar-md-item-padding: 12px 10px 5px 10px !default; $tabbar-md-item-font-size: 1.4rem !default; $tabbar-md-item-font-weight: 500 !default; @@ -16,7 +16,7 @@ $tab-button-md-inactive-color: $toolbar-md-inactive-color !default; tabbar { - background: $tabbar-md-background-color; + background: $tabbar-md-background; } diff --git a/ionic/components/tabs/tabs.ts b/ionic/components/tabs/tabs.ts index 0e9c91070c..fa160401ff 100644 --- a/ionic/components/tabs/tabs.ts +++ b/ionic/components/tabs/tabs.ts @@ -246,6 +246,19 @@ export class Tabs extends Ion { return Promise.resolve(); } + /** + * Returns the root NavController. Returns `null` if Tabs is not + * within a NavController. + * @returns {NavController} + */ + get rootNav() { + let nav = this.parent; + while (nav.parent) { + nav = nav.parent; + } + return nav; + } + } let tabIds = -1; diff --git a/ionic/components/tabs/test/advanced/index.ts b/ionic/components/tabs/test/advanced/index.ts index 13d34924c1..6c08ca3b56 100644 --- a/ionic/components/tabs/test/advanced/index.ts +++ b/ionic/components/tabs/test/advanced/index.ts @@ -73,9 +73,7 @@ class Tab1Page1 { } logout() { - let tabs = this.nav.parent; - let rootNav = tabs.parent; - rootNav.setRoot(SignIn, null, { animate: true, direction: 'back' }); + this.nav.rootNav.setRoot(SignIn, null, { animate: true, direction: 'back' }); } } diff --git a/ionic/components/text-input/modes/ios.scss b/ionic/components/text-input/text-input.ios.scss similarity index 95% rename from ionic/components/text-input/modes/ios.scss rename to ionic/components/text-input/text-input.ios.scss index ada044e3b1..2301af039f 100644 --- a/ionic/components/text-input/modes/ios.scss +++ b/ionic/components/text-input/text-input.ios.scss @@ -1,6 +1,6 @@ -@import "../../../globals.ios"; -@import "../label"; -@import "../text-input"; +@import "../../globals.ios"; +@import "./label"; +@import "./text-input"; // iOS Text Input // -------------------------------------------------- diff --git a/ionic/components/text-input/modes/md.scss b/ionic/components/text-input/text-input.md.scss similarity index 97% rename from ionic/components/text-input/modes/md.scss rename to ionic/components/text-input/text-input.md.scss index ad6f3941f3..5a42d84898 100644 --- a/ionic/components/text-input/modes/md.scss +++ b/ionic/components/text-input/text-input.md.scss @@ -1,6 +1,6 @@ -@import "../../../globals.md"; -@import "../label"; -@import "../text-input"; +@import "../../globals.md"; +@import "./label"; +@import "./text-input"; // Material Design Text Input // -------------------------------------------------- diff --git a/ionic/components/toolbar/modes/ios.scss b/ionic/components/toolbar/toolbar.ios.scss similarity index 97% rename from ionic/components/toolbar/modes/ios.scss rename to ionic/components/toolbar/toolbar.ios.scss index df7c505258..aeb02bad95 100644 --- a/ionic/components/toolbar/modes/ios.scss +++ b/ionic/components/toolbar/toolbar.ios.scss @@ -1,6 +1,6 @@ -@import "../../../globals.ios"; -@import "../toolbar"; -@import "../toolbar-button"; +@import "../../globals.ios"; +@import "./toolbar"; +@import "./toolbar-button"; // iOS Toolbar // -------------------------------------------------- @@ -43,7 +43,7 @@ ion-navbar-section { border-bottom-width: 1px; border-bottom-style: solid; border-color: $toolbar-ios-border-color; - background-color: $toolbar-ios-background-color; + background: $toolbar-ios-background; } &.hairlines .toolbar-background { @@ -82,7 +82,7 @@ ion-title { .toolbar[#{$color-name}] { .toolbar-background { - background-color: $color-value; + background: $color-value; border-color: darken($color-value, 10%); } diff --git a/ionic/components/toolbar/modes/md.scss b/ionic/components/toolbar/toolbar.md.scss similarity index 96% rename from ionic/components/toolbar/modes/md.scss rename to ionic/components/toolbar/toolbar.md.scss index c4d77392ce..311c62ad7c 100644 --- a/ionic/components/toolbar/modes/md.scss +++ b/ionic/components/toolbar/toolbar.md.scss @@ -1,6 +1,6 @@ -@import "../../../globals.md"; -@import "../toolbar"; -@import "../toolbar-button"; +@import "../../globals.md"; +@import "./toolbar"; +@import "./toolbar-button"; // Material Design Toolbar // -------------------------------------------------- @@ -41,7 +41,7 @@ ion-navbar-section { .toolbar-background { border-color: $toolbar-md-border-color; - background-color: $toolbar-md-background-color; + background: $toolbar-md-background; } @@ -67,7 +67,7 @@ ion-title { .toolbar[#{$color-name}] { .toolbar-background { - background-color: $color-value; + background: $color-value; } .toolbar-title, @@ -112,7 +112,7 @@ ion-buttons[right] { margin-top: 0; margin-bottom: 0; margin-left: 0.2rem; - margin-right: 0.2rem; + margin-right: 0.2rem; padding: 0 5px; min-height: 32px; border: 0; diff --git a/ionic/themes/default.ios.scss b/ionic/themes/default.ios.scss index edd773e3d0..90e344a758 100644 --- a/ionic/themes/default.ios.scss +++ b/ionic/themes/default.ios.scss @@ -26,7 +26,7 @@ $font-size-ios-base: $font-size-base !default; // iOS Toolbar // -------------------------------------------------- -$toolbar-ios-background-color: $toolbar-background-color !default; +$toolbar-ios-background: $toolbar-background !default; $toolbar-ios-border-color: $toolbar-border-color !default; $toolbar-ios-text-color: $toolbar-text-color !default; $toolbar-ios-active-color: $toolbar-active-color !default; diff --git a/ionic/themes/default.md.scss b/ionic/themes/default.md.scss index 69e90ae815..6e87c73754 100644 --- a/ionic/themes/default.md.scss +++ b/ionic/themes/default.md.scss @@ -26,7 +26,7 @@ $font-size-md-base: $font-size-base !default; // Material Design Toolbar // -------------------------------------------------- -$toolbar-md-background-color: $toolbar-background-color !default; +$toolbar-md-background: $toolbar-background !default; $toolbar-md-border-color: $toolbar-border-color !default; $toolbar-md-text-color: $toolbar-text-color !default; $toolbar-md-active-color: $toolbar-active-color !default; diff --git a/ionic/themes/default.scss b/ionic/themes/default.scss index a52038af9f..f2ce893d64 100644 --- a/ionic/themes/default.scss +++ b/ionic/themes/default.scss @@ -21,7 +21,7 @@ $subdued-text-color: #666 !default; $font-family-base: -apple-system, "Helvetica Neue", "Roboto", sans-serif !default; $font-size-base: 1.4rem !default; // 1.4rem == 14px -$toolbar-background-color: #f8f8f8 !default; +$toolbar-background: #f8f8f8 !default; $toolbar-border-color: #b2b2b2 !default; $toolbar-text-color: $text-color !default; $toolbar-active-color: $link-color !default;