diff --git a/apps/nativescript-demo-ng/package.json b/apps/nativescript-demo-ng/package.json index 85c117a..1570ac0 100644 --- a/apps/nativescript-demo-ng/package.json +++ b/apps/nativescript-demo-ng/package.json @@ -11,6 +11,7 @@ }, "devDependencies": { "@nativescript/android": "8.0.0", - "@nativescript/ios": "8.0.0" + "@nativescript/ios": "8.0.0", + "@nativescript/unit-test-runner": "^2.0.5" } } diff --git a/apps/nativescript-demo-ng/src/tests/platform-filter-components.ts b/apps/nativescript-demo-ng/src/tests/platform-filter-components.ts index 5529f32..11754c9 100644 --- a/apps/nativescript-demo-ng/src/tests/platform-filter-components.ts +++ b/apps/nativescript-demo-ng/src/tests/platform-filter-components.ts @@ -35,6 +35,7 @@ export class PlatformSpecificAttributeComponent { const DECLARATIONS = [PlatformSpecificAttributeComponent, AndroidSpecificComponent, IosSpecificComponent]; @NgModule({ declarations: DECLARATIONS, + imports: [NativeScriptModule], schemas: [NO_ERRORS_SCHEMA], }) export class PlatformModule {} @@ -61,7 +62,8 @@ describe('Platform filter directives', () => { fixture.detectChanges(); const componentRef = fixture.componentRef; const componentRoot = componentRef.instance.elementRef.nativeElement; - expect(dumpView(componentRoot, true).indexOf('Label') < 0).toBe(true); + console.log(dumpView(componentRoot, true)); + expect(dumpView(componentRoot, true).indexOf('label') < 0).toBe(true); }); it('applies iOS specific attribute', () => { const fixture = TestBed.createComponent(PlatformSpecificAttributeComponent); @@ -94,7 +96,7 @@ describe('Platform filter directives', () => { fixture.detectChanges(); const componentRef = fixture.componentRef; const componentRoot = componentRef.instance.elementRef.nativeElement; - expect(dumpView(componentRoot, true).indexOf('Label') < 0).toBe(true); + expect(dumpView(componentRoot, true).indexOf('label') < 0).toBe(true); }); it('applies Android specific attribute', () => { const fixture = TestBed.createComponent(PlatformSpecificAttributeComponent); diff --git a/apps/nativescript-demo-ng/tools/xplat-postinstall.js b/apps/nativescript-demo-ng/tools/xplat-postinstall.js index 0c46e77..1e58a10 100644 --- a/apps/nativescript-demo-ng/tools/xplat-postinstall.js +++ b/apps/nativescript-demo-ng/tools/xplat-postinstall.js @@ -14,9 +14,11 @@ try { } // Helpful to trigger ngcc after an install to ensure all has processed properly -const child = childProcess.spawn(/^win/.test(process.platform) ? '..\\..\\node_modules\\.bin\\ngcc' : '../../node_modules/.bin/ngcc', ['--tsconfig', 'tsconfig.app.json', '--properties', 'es2015', 'module', 'main', '--first-only'], { +const ngccPath = path.join('..', '..', 'node_modules', '.bin', 'ngcc'); +const child = childProcess.spawn(ngccPath, ['--tsconfig', 'tsconfig.app.json', '--properties', 'es2015', 'module', 'main', '--first-only'], { cwd: process.cwd(), stdio: 'inherit', + shell: process.platform == 'win32' }); child.on('close', (code) => { diff --git a/packages/angular/src/lib/cdk/platform-filters/index.ts b/packages/angular/src/lib/cdk/platform-filters/index.ts new file mode 100644 index 0000000..362e5cc --- /dev/null +++ b/packages/angular/src/lib/cdk/platform-filters/index.ts @@ -0,0 +1,28 @@ +/* eslint-disable @angular-eslint/component-selector */ +import { Component, Inject } from '@angular/core'; +import { Device, platformNames } from '@nativescript/core'; +import { DEVICE } from '../../tokens'; + +@Component({ + selector: 'android', + template: ``, +}) +export class AndroidFilterComponent { + public show: boolean; + + constructor(@Inject(DEVICE) device: typeof Device) { + this.show = device.os === platformNames.android; + } +} + +@Component({ + selector: 'ios', + template: ``, +}) +export class IosFilterComponent { + public show: boolean; + constructor(@Inject(DEVICE) device: typeof Device) { + console.log(device.os, platformNames.ios); + this.show = device.os === platformNames.ios; + } +} diff --git a/packages/angular/src/lib/nativescript-common.module.ts b/packages/angular/src/lib/nativescript-common.module.ts index d0b30f2..9a9352f 100644 --- a/packages/angular/src/lib/nativescript-common.module.ts +++ b/packages/angular/src/lib/nativescript-common.module.ts @@ -6,8 +6,9 @@ import { ListViewComponent, TemplateKeyDirective } from './cdk/list-view/list-vi import { registerNativeScriptViewComponents } from './element-registry'; import { ModalDialogService } from './legacy/directives/dialogs'; import { TabViewDirective, TabViewItemDirective } from './cdk/tab-view'; +import { AndroidFilterComponent, IosFilterComponent } from './cdk/platform-filters'; -const CDK_COMPONENTS = [ActionBarComponent, ActionBarScope, ActionItemDirective, NavigationButtonDirective, ListViewComponent, TemplateKeyDirective, TabViewDirective, TabViewItemDirective]; +const CDK_COMPONENTS = [ActionBarComponent, ActionBarScope, ActionItemDirective, NavigationButtonDirective, ListViewComponent, TemplateKeyDirective, TabViewDirective, TabViewItemDirective, AndroidFilterComponent, IosFilterComponent]; registerNativeScriptViewComponents(); diff --git a/packages/angular/src/lib/public_api.ts b/packages/angular/src/lib/public_api.ts index 983d315..0130aea 100644 --- a/packages/angular/src/lib/public_api.ts +++ b/packages/angular/src/lib/public_api.ts @@ -14,6 +14,7 @@ export * from './cdk/list-view'; export * from './cdk/portal'; export * from './cdk/dialog'; export * from './cdk/tab-view'; +export * from './cdk/platform-filters'; export * from './file-system'; export * from './nativescript-common.module'; export * from './loading.service';