diff --git a/ionic/components.ts b/ionic/components.ts index a46df5062f..bc5b7a2e7d 100644 --- a/ionic/components.ts +++ b/ionic/components.ts @@ -7,13 +7,13 @@ export * from './components/button/button' export * from './components/checkbox/checkbox' export * from './components/content/content' export * from './components/icon/icon' +export * from './components/input/input' export * from './components/item/item' export * from './components/item/item-sliding' export * from './components/menu/menu' export * from './components/menu/menu-types' export * from './components/menu/menu-toggle' export * from './components/menu/menu-close' -export * from './components/text-input/text-input' export * from './components/label/label' export * from './components/list/list' export * from './components/show-hide-when/show-hide-when' @@ -36,5 +36,6 @@ export * from './components/select/select' export * from './components/tabs/tabs' export * from './components/tabs/tab' export * from './components/tap-click/tap-click' +export * from './components/text-input/text-input' export * from './components/toggle/toggle' export * from './components/toolbar/toolbar' diff --git a/ionic/config/bootstrap.ts b/ionic/config/bootstrap.ts index df6005d611..ead85e1e9a 100644 --- a/ionic/config/bootstrap.ts +++ b/ionic/config/bootstrap.ts @@ -28,9 +28,9 @@ export function ionicProviders(args={}) { config = new Config(config); } - platform.url(window.location.href); - platform.userAgent(window.navigator.userAgent); - platform.navigatorPlatform(window.navigator.platform); + platform.setUrl(window.location.href); + platform.setUserAgent(window.navigator.userAgent); + platform.setNavigatorPlatform(window.navigator.platform); platform.load(); config.setPlatform(platform); diff --git a/ionic/config/test/config.spec.ts b/ionic/config/test/config.spec.ts index a348c75cee..1c8f4c3ad5 100644 --- a/ionic/config/test/config.spec.ts +++ b/ionic/config/test/config.spec.ts @@ -5,8 +5,8 @@ export function run() { it('should set activator setting to none for old Android Browser on a linux device', () => { let config = new Config(); let platform = new Platform(); - platform.userAgent('Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; GT-I9505 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'); - platform.navigatorPlatform('linux'); + platform.setUserAgent('Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; GT-I9505 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'); + platform.setNavigatorPlatform('linux'); platform.load(); config.setPlatform(platform); @@ -16,8 +16,8 @@ export function run() { it('should set activator setting to ripple for Android dev tools simulation on a mac', () => { let config = new Config(); let platform = new Platform(); - platform.userAgent('Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; GT-I9505 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'); - platform.navigatorPlatform('MacIntel'); + platform.setUserAgent('Mozilla/5.0 (Linux; U; Android 4.2.2; nl-nl; GT-I9505 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'); + platform.setNavigatorPlatform('MacIntel'); platform.load(); config.setPlatform(platform); @@ -27,8 +27,8 @@ export function run() { it('should set activator setting to none for Android Chrome versions below v36 on a linux device', () => { let config = new Config(); let platform = new Platform(); - platform.userAgent('Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1650.59 Mobile Safari/537.36'); - platform.navigatorPlatform('linux'); + platform.setUserAgent('Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1650.59 Mobile Safari/537.36'); + platform.setNavigatorPlatform('linux'); platform.load(); config.setPlatform(platform); @@ -38,8 +38,8 @@ export function run() { it('should set activator setting to ripple for Android Chrome v36 and above on a linux device', () => { let config = new Config(); let platform = new Platform(); - platform.userAgent('Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1650.59 Mobile Safari/537.36'); - platform.navigatorPlatform('linux'); + platform.setUserAgent('Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1650.59 Mobile Safari/537.36'); + platform.setNavigatorPlatform('linux'); platform.load(); config.setPlatform(platform); @@ -49,8 +49,8 @@ export function run() { it('should set activator setting to ripple for Android v5.0 and above on a linux device not using Chrome', () => { let config = new Config(); let platform = new Platform(); - platform.userAgent('Mozilla/5.0 (Android 5.0; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0'); - platform.navigatorPlatform('linux'); + platform.setUserAgent('Mozilla/5.0 (Android 5.0; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0'); + platform.setNavigatorPlatform('linux'); platform.load(); config.setPlatform(platform); @@ -60,8 +60,8 @@ export function run() { it('should set activator setting to none for Android versions below v5.0 on a linux device not using Chrome', () => { let config = new Config(); let platform = new Platform(); - platform.userAgent('Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0'); - platform.navigatorPlatform('linux'); + platform.setUserAgent('Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0'); + platform.setNavigatorPlatform('linux'); platform.load(); config.setPlatform(platform); @@ -126,13 +126,13 @@ export function run() { it('should get boolean value from querystring', () => { let config = new Config(); let platform = new Platform(); - platform.url('http://biff.com/?ionicanimate=true') + platform.setUrl('http://biff.com/?ionicanimate=true') config.setPlatform(platform); expect(config.get('animate')).toEqual(true); config = new Config(); platform = new Platform(); - platform.url('http://biff.com/?ionicanimate=false') + platform.setUrl('http://biff.com/?ionicanimate=false') config.setPlatform(platform); expect(config.get('animate')).toEqual(false); }); @@ -142,7 +142,7 @@ export function run() { mode: 'a' }); let platform = new Platform(); - platform.url('http://biff.com/?ionicConfigKey=b') + platform.setUrl('http://biff.com/?ionicConfigKey=b') config.setPlatform(platform); expect(config.get('configKey')).toEqual('b'); @@ -153,7 +153,7 @@ export function run() { mode: 'modeA' }); let platform = new Platform(); - platform.url('http://biff.com/?ionicmode=modeB') + platform.setUrl('http://biff.com/?ionicmode=modeB') config.setPlatform(platform); expect(config.get('mode')).toEqual('modeB'); diff --git a/ionic/platform/platform.ts b/ionic/platform/platform.ts index f543ebbc9f..c6918ad173 100644 --- a/ionic/platform/platform.ts +++ b/ionic/platform/platform.ts @@ -27,7 +27,7 @@ export class Platform { private _dir: string; private _lang: string; private _url: string; - private _qs: string; + private _qs: any; private _ua: string; private _bPlt: string; private _onResizes: Array=[]; @@ -274,14 +274,18 @@ export class Platform { // Getter/Setter Methods // ********************************************** + /** + * @private + */ + setUrl(url) { + this._url = url; + this._qs = getQuerystring(url); + } + /** * @private */ url(val) { - if (arguments.length) { - this._url = val; - this._qs = getQuerystring(val); - } return this._url; } @@ -292,23 +296,31 @@ export class Platform { return (this._qs || {})[key]; } + /** + * @private + */ + setUserAgent(userAgent) { + this._ua = userAgent; + } + /** * @private */ userAgent(val) { - if (arguments.length) { - this._ua = val; - } return this._ua || ''; } + /** + * @private + */ + setNavigatorPlatform(navigatorPlatform) { + this._bPlt = navigatorPlatform; + } + /** * @private */ navigatorPlatform(val) { - if (arguments.length) { - this._bPlt = val; - } return this._bPlt || ''; } diff --git a/ionic/platform/test/platform.spec.ts b/ionic/platform/test/platform.spec.ts index 4d77d04ae8..b00e5a5cd4 100644 --- a/ionic/platform/test/platform.spec.ts +++ b/ionic/platform/test/platform.spec.ts @@ -4,7 +4,7 @@ export function run() { it('should set core as the fallback', () => { let platform = new Platform(); - platform.userAgent('idk'); + platform.setUserAgent('idk'); platform.load(); expect(platform.is('android')).toEqual(false); @@ -14,7 +14,7 @@ export function run() { it('should set android via platformOverride, despite ios user agent', () => { let platform = new Platform(); - platform.userAgent(IPAD_UA); + platform.setUserAgent(IPAD_UA); platform.load('android'); expect(platform.is('android')).toEqual(true); @@ -23,21 +23,21 @@ export function run() { it('should get case insensitive querystring value', () => { let platform = new Platform(); - platform.url('/?KEY=value'); + platform.setUrl('/?KEY=value'); expect(platform.query('key')).toEqual('value'); }); it('should get querystring value', () => { let platform = new Platform(); - platform.url('/?key=value'); + platform.setUrl('/?key=value'); expect(platform.query('key')).toEqual('value'); }); it('should set ios via platformOverride, despite android querystring', () => { let platform = new Platform(); - platform.url('/?ionicplatform=android'); + platform.setUrl('/?ionicplatform=android'); platform.load('ios'); expect(platform.is('android')).toEqual(false); @@ -62,7 +62,7 @@ export function run() { it('should set ios via querystring', () => { let platform = new Platform(); - platform.url('/?ionicplatform=ios'); + platform.setUrl('/?ionicplatform=ios'); platform.load(); expect(platform.is('mobile')).toEqual(true); @@ -73,8 +73,8 @@ export function run() { it('should set ios via querystring, even with android user agent', () => { let platform = new Platform(); - platform.url('/?ionicplatform=ios'); - platform.userAgent(ANDROID_UA); + platform.setUrl('/?ionicplatform=ios'); + platform.setUserAgent(ANDROID_UA); platform.load(); expect(platform.is('android')).toEqual(false); @@ -83,7 +83,7 @@ export function run() { it('should set android via querystring', () => { let platform = new Platform(); - platform.url('/?ionicplatform=android'); + platform.setUrl('/?ionicplatform=android'); platform.load(); expect(platform.is('android')).toEqual(true); @@ -92,8 +92,8 @@ export function run() { it('should set android via querystring, even with ios user agent', () => { let platform = new Platform(); - platform.url('/?ionicplatform=android'); - platform.userAgent(IPHONE_UA); + platform.setUrl('/?ionicplatform=android'); + platform.setUserAgent(IPHONE_UA); platform.load(); expect(platform.is('android')).toEqual(true); @@ -102,7 +102,7 @@ export function run() { it('should set android via user agent', () => { let platform = new Platform(); - platform.userAgent(ANDROID_UA); + platform.setUserAgent(ANDROID_UA); platform.load(); expect(platform.is('mobile')).toEqual(true); @@ -112,7 +112,7 @@ export function run() { it('should set iphone via user agent', () => { let platform = new Platform(); - platform.userAgent(IPHONE_UA); + platform.setUserAgent(IPHONE_UA); platform.load(); expect(platform.is('mobile')).toEqual(true); @@ -124,7 +124,7 @@ export function run() { it('should set ipad via user agent', () => { let platform = new Platform(); - platform.userAgent(IPAD_UA); + platform.setUserAgent(IPAD_UA); platform.load(); expect(platform.is('mobile')).toEqual(true); diff --git a/ionic/util/util.ts b/ionic/util/util.ts index 9be3f67a91..86f6469f28 100644 --- a/ionic/util/util.ts +++ b/ionic/util/util.ts @@ -17,7 +17,7 @@ export function clamp(min, n, max) { * @param dst the destination * @param ... the param objects */ -export function extend(dst: any) { +export function extend(dst: any, ...args: any[]) { return _baseExtend(dst, [].slice.call(arguments, 1), false); } @@ -26,7 +26,7 @@ export function extend(dst: any) { * @param dst the destination * @param ... the param objects */ -export function merge(dst: any) { +export function merge(dst: any, ...args: any[]) { return _baseExtend(dst, [].slice.call(arguments, 1), true); } @@ -81,7 +81,7 @@ export function debounce(func: any, wait: number, immediate: boolean) { * the first object. * @param the destination to apply defaults to. */ -export function defaults(dest) { +export function defaults(dest, ...args: any[]) { for (let i = arguments.length - 1; i >= 1; i--) { let source = arguments[i] || {}; for (let key in source) { @@ -140,10 +140,10 @@ export const array = { } /** - * Grab the query string param value for the given key. - * @param key the key to look for + * Grab all query strings keys and values. + * @param url */ -export function getQuerystring(url, key) { +export function getQuerystring(url: string): any { var queryParams = {}; if (url) { const startIndex = url.indexOf('?'); @@ -154,9 +154,6 @@ export function getQuerystring(url, key) { queryParams[split[0].toLowerCase()] = split[1].split('#')[0]; }); } - if (key) { - return queryParams[key] || ''; - } } return queryParams; }