Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Angular 12 and all JS deps #144

Merged
merged 13 commits into from May 27, 2021
36 changes: 25 additions & 11 deletions angular.json
Expand Up @@ -25,11 +25,16 @@
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"aot": true,
"assets": ["src/favicon.ico", "src/assets"],
"styles": ["src/styles.scss"],
"scripts": [],
"allowedCommonJsDependencies": ["graphql-tag", "zen-observable"]
"allowedCommonJsDependencies": ["graphql-tag", "zen-observable"],
"vendorChunk": true,
"extractLicenses": false,
"buildOptimizer": false,
"sourceMap": true,
"optimization": false,
"namedChunks": true
},
"configurations": {
"production": {
Expand Down Expand Up @@ -58,20 +63,25 @@
"maximumError": "10kb"
}
]
}
}
},
"development": {}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"port": 4201,
"browserTarget": "demo:build"
"port": 4201
},
"configurations": {
"production": {
"browserTarget": "demo:build:production"
},
"development": {
"browserTarget": "demo:build:development"
}
}
},
"defaultConfiguration": "development"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
Expand All @@ -95,14 +105,17 @@
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "demo:serve"
"protractorConfig": "e2e/protractor.conf.js"
},
"configurations": {
"production": {
"devServerTarget": "demo:serve:production"
},
"development": {
"devServerTarget": "demo:serve:development"
}
}
},
"defaultConfiguration": "development"
}
}
},
Expand All @@ -117,7 +130,8 @@
"options": {
"tsConfig": "projects/natural/tsconfig.lib.json",
"project": "projects/natural/ng-package.json"
}
},
"configurations": {}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
Expand Down
70 changes: 35 additions & 35 deletions package.json
Expand Up @@ -16,52 +16,52 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^11.2.0",
"@angular/cdk": "^11.2.0",
"@angular/common": "^11.2.0",
"@angular/compiler": "^11.2.0",
"@angular/core": "^11.2.0",
"@angular/flex-layout": "^11.0.0-beta.33",
"@angular/forms": "^11.2.0",
"@angular/localize": "^11.2.0",
"@angular/material": "^11.2.0",
"@angular/platform-browser": "^11.2.0",
"@angular/platform-browser-dynamic": "^11.2.0",
"@angular/router": "^11.2.0",
"@apollo/client": "^3.3.11",
"@graphql-tools/mock": "^8.0.0",
"apollo-angular": "^2.1.0",
"@angular/animations": "^12.0.1",
"@angular/cdk": "^12.0.1",
"@angular/common": "^12.0.1",
"@angular/compiler": "^12.0.1",
"@angular/core": "^12.0.1",
"@angular/flex-layout": "^12.0.0-beta.34",
"@angular/forms": "^12.0.1",
"@angular/localize": "^12.0.1",
"@angular/material": "^12.0.1",
"@angular/platform-browser": "^12.0.1",
"@angular/platform-browser-dynamic": "^12.0.1",
"@angular/router": "^12.0.1",
"@apollo/client": "^3.3.19",
"@graphql-tools/mock": "^8.1.3",
"apollo-angular": "^2.4.0",
"graphql": "^15.0.0",
"lodash-es": "^4.17.15",
"lodash-es": "^4.17.21",
"rxjs": "^6.5.4",
"ts-md5": "^1.2.7",
"tslib": "^2.0.0",
"zone.js": "^0.11.3"
"ts-md5": "^1.2.8",
"tslib": "^2.2.0",
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.1102.0",
"@angular/cli": "^11.2.0",
"@angular/compiler-cli": "^11.2.0",
"@angular/language-service": "^11.2.0",
"@types/jasmine": "~3.6.0",
"@types/jasminewd2": "^2.0.8",
"@angular-devkit/build-angular": "^12.0.1",
"@angular/cli": "^12.0.1",
"@angular/compiler-cli": "^12.0.1",
"@angular/language-service": "^12.0.1",
"@types/jasmine": "~3.7.4",
"@types/jasminewd2": "^2.0.9",
"@types/lodash-es": "^4.17.3",
"@types/node": "^14.14.28",
"codelyzer": "^6.0.0",
"jasmine-core": "~3.6.0",
"jasmine-spec-reporter": "~6.0.0",
"karma": "~6.1.1",
"codelyzer": "^6.0.2",
"jasmine-core": "~3.7.1",
"jasmine-spec-reporter": "~7.0.0",
"karma": "~6.3.2",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~3.0.2",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.5.0",
"ng-packagr": "^11.2.1",
"prettier": "2.2.1",
"karma-jasmine-html-reporter": "^1.6.0",
"ng-packagr": "^12.0.0",
"prettier": "2.3.0",
"protractor": "~7.0.0",
"puppeteer": "^7.1.0",
"puppeteer": "^9.1.1",
"scss-bundle": "^3.1.1",
"ts-node": "^9.0.0",
"ts-node": "^10.0.0",
"tslint": "~6.1.0",
"typescript": "~4.1.5"
"typescript": "~4.2.4"
}
}
5 changes: 3 additions & 2 deletions projects/natural/src/lib/classes/abstract-detail.ts
Expand Up @@ -27,10 +27,11 @@ export class NaturalAbstractDetail<
any,
unknown,
any
>
>,
>
extends NaturalAbstractPanel
implements OnInit {
implements OnInit
{
/**
* Empty placeholder for data retrieved by the server
*/
Expand Down
2 changes: 1 addition & 1 deletion projects/natural/src/lib/classes/abstract-editable-list.ts
Expand Up @@ -39,7 +39,7 @@ export class NaturalAbstractEditableList<
>,
// The Literal here is a bit too loose. Ideally we would like to express
// "it must be a union and one of the type in the union must be ExtractTallOne<TService>"
T extends Literal = ExtractTallOne<TService>
T extends Literal = ExtractTallOne<TService>,
> extends NaturalAbstractController {
public readonly form: FormGroup;
public readonly formArray = new FormArray([]);
Expand Down
11 changes: 6 additions & 5 deletions projects/natural/src/lib/classes/abstract-list.ts
Expand Up @@ -63,10 +63,11 @@ export class NaturalAbstractList<
// In most case this should not be specified by inheriting classes.
// It should only be specified to override default if the service items are
// mapped to a different structure like in NaturalAbstractNavigableList
Tall extends PaginatedData<MaybeNavigable> = ExtractTall<TService>
Tall extends PaginatedData<MaybeNavigable> = ExtractTall<TService>,
>
extends NaturalAbstractPanel
implements OnInit, OnDestroy {
implements OnInit, OnDestroy
{
/**
* Wherever search should be loaded from url/storage and persisted in it too.
*/
Expand Down Expand Up @@ -428,10 +429,10 @@ export class NaturalAbstractList<
// Here the casting is a bit unfortunate but required because NaturalAbstractNavigableList
// breaks the data structure convention (by wrapping items in a structure). Ideally we should remove
// the casting and resolve things in a better way, but that's too much work for now
return (this.service.watchAll(
(this.variablesManager as unknown) as any,
return this.service.watchAll(
this.variablesManager as unknown as any,
this.ngUnsubscribe,
) as unknown) as Observable<Tall>;
) as unknown as Observable<Tall>;
}

protected initFromPersisted(): void {
Expand Down
7 changes: 4 additions & 3 deletions projects/natural/src/lib/classes/abstract-navigable-list.ts
Expand Up @@ -37,10 +37,11 @@ export class NaturalAbstractNavigableList<
any,
any,
any
>
>,
>
extends NaturalAbstractList<TService, PaginatedData<NavigableItem<ExtractTall<TService>['items'][0]>>>
implements OnInit, OnDestroy {
implements OnInit, OnDestroy
{
/**
* Name of filter for child items to access ancestor item
*/
Expand Down Expand Up @@ -88,7 +89,7 @@ export class NaturalAbstractNavigableList<
}

protected getDataObservable(): Observable<PaginatedData<NavigableItem<ExtractTallOne<TService>>>> {
return this.service.watchAll((this.variablesManager as unknown) as any, this.ngUnsubscribe).pipe(
return this.service.watchAll(this.variablesManager as unknown as any, this.ngUnsubscribe).pipe(
map(result => {
// On each data arriving, we query children count to show/hide chevron
const navigableItems: NavigableItem<ExtractTallOne<TService>>[] = result.items.map(item => {
Expand Down
5 changes: 3 additions & 2 deletions projects/natural/src/lib/modules/alert/_alert.theme.scss
@@ -1,3 +1,4 @@
@use '~@angular/material' as mat;
@mixin natural-alert($theme) {
$primary: map-get($theme, primary);
$accent: map-get($theme, accent);
Expand All @@ -6,7 +7,7 @@
$fg: map-get($theme, foreground);

.snackbar-error {
background-color: mat-color($warn) !important;
color: mat-color($warn, default-contrast) !important;
background-color: mat.get-color-from-palette($warn) !important;
color: mat.get-color-from-palette($warn, default-contrast) !important;
}
}
Expand Up @@ -75,7 +75,7 @@ export class NaturalLinkableTabDirective extends NaturalAbstractController imple
});
}

private getTabIndex(fragment: string): number {
private getTabIndex(fragment: string | null): number {
return this.component._tabs.toArray().findIndex(tab => fragment === getTabId(tab));
}
}
Expand Up @@ -22,9 +22,8 @@ function createComponent(

configuration.service = TestBed.inject(AnyService);

fixture.component = TestBed.createComponent<TypeNaturalSelectComponent<AnyService>>(
TypeNaturalSelectComponent,
).componentInstance;
fixture.component =
TestBed.createComponent<TypeNaturalSelectComponent<AnyService>>(TypeNaturalSelectComponent).componentInstance;

tick(5000);
}
Expand Down
Expand Up @@ -6,7 +6,7 @@ import {AbstractAssociationSelectComponent} from '../abstract-association-select
import {EMPTY, Observable} from 'rxjs';

export interface TypeSelectNaturalConfiguration<
TService extends NaturalAbstractModelService<any, any, any, any, any, any, any, any, any, any>
TService extends NaturalAbstractModelService<any, any, any, any, any, any, any, any, any, any>,
> {
service: TService;
placeholder: string;
Expand All @@ -17,7 +17,7 @@ export interface TypeSelectNaturalConfiguration<
templateUrl: './type-natural-select.component.html',
})
export class TypeNaturalSelectComponent<
TService extends NaturalAbstractModelService<any, any, any, any, any, any, any, any, any, any>
TService extends NaturalAbstractModelService<any, any, any, any, any, any, any, any, any, any>,
> extends AbstractAssociationSelectComponent<TypeSelectNaturalConfiguration<TService>> {
public getCondition(): FilterGroupConditionField {
if (!this.isValid()) {
Expand Down
Expand Up @@ -14,8 +14,8 @@
(keydown.enter)="close()"
[errorStateMatcher]="matcher"
[formControl]="valueCtrl"
[max]="configuration.max"
[min]="configuration.min"
[max]="configuration.max ?? $any(undefined)"
PowerKiKi marked this conversation as resolved.
Show resolved Hide resolved
[min]="configuration.min ?? $any(undefined)"
[required]="true"
[step]="configuration.step"
matInput
Expand Down
Expand Up @@ -30,7 +30,8 @@ export interface TypeSelectConfiguration {
})
export class TypeSelectComponent
extends NaturalAbstractController
implements DropdownComponent, AfterViewInit, OnDestroy {
implements DropdownComponent, AfterViewInit, OnDestroy
{
public readonly renderedValue = new BehaviorSubject<string>('');
@ViewChild(MatSelectionList, {static: false}) public list!: MatSelectionList;
public requireValueCtrl = false;
Expand Down
11 changes: 6 additions & 5 deletions projects/natural/src/lib/modules/file/component/_file.theme.scss
@@ -1,21 +1,22 @@
@use '~@angular/material' as mat;
@mixin natural-file($theme) {
$primary: map-get($theme, primary);
$accent: map-get($theme, accent);
$bg: map-get($theme, background);

natural-file {
a {
background-color: mat-color($bg, card);
background-color: mat.get-color-from-palette($bg, card);
}

.action-overlay {
background-color: mat-color($accent, 0.85);
color: mat-color($accent, default-contrast);
background-color: mat.get-color-from-palette($accent, 0.85);
color: mat.get-color-from-palette($accent, default-contrast);
}

.file-preview {
background-color: mat-color($primary, 0.85);
color: mat-color($primary, default-contrast);
background-color: mat.get-color-from-palette($primary, 0.85);
color: mat.get-color-from-palette($primary, default-contrast);
}
}
}
Expand Up @@ -23,8 +23,9 @@ import {FileModel} from '../types';
styleUrls: ['./file.component.scss'],
})
export class FileComponent<
TService extends NaturalAbstractModelService<any, any, any, any, FileModel, any, any, any, any, any>
> implements OnInit, OnChanges {
TService extends NaturalAbstractModelService<any, any, any, any, FileModel, any, any, any, any, any>,
> implements OnInit, OnChanges
{
@HostBinding('style.height.px') @Input() public height = 250;

@Input() public action: 'upload' | 'download' | null = null;
Expand Down
13 changes: 7 additions & 6 deletions projects/natural/src/lib/modules/icon/_icon.theme.scss
@@ -1,22 +1,23 @@
@use '~@angular/material' as mat;
@mixin natural-icon($theme) {
$primary: map-get($theme, primary);
$accent: map-get($theme, accent);
$warn: map-get($theme, warn);

.label {
&.primary {
background: mat-color($primary);
color: mat-color($primary, default-contrast);
background: mat.get-color-from-palette($primary);
color: mat.get-color-from-palette($primary, default-contrast);
}

&.accent {
background: mat-color($accent);
color: mat-color($accent, default-contrast);
background: mat.get-color-from-palette($accent);
color: mat.get-color-from-palette($accent, default-contrast);
}

&.warn {
background: mat-color($warn);
color: mat-color($warn, default-contrast);
background: mat.get-color-from-palette($warn);
color: mat.get-color-from-palette($warn, default-contrast);
}
}
}
Expand Down