devextreme-schematics 1.3.0-beta.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -8
- package/src/add-app-template/index.js +2 -1
- package/src/add-app-template/index.js.map +1 -1
- package/src/add-app-template/index.ts +30 -0
- package/src/add-app-template/index_spec.js +6 -5
- package/src/add-app-template/index_spec.js.map +1 -1
- package/src/add-app-template/index_spec.ts +73 -0
- package/src/add-app-template/schema.json +7 -3
- package/src/add-layout/files/devextreme.json +1 -1
- package/src/add-layout/files/src/app/__name__.component.html +3 -3
- package/src/add-layout/files/src/app/__name__.component.ts +1 -1
- package/src/add-layout/files/src/app/app-routing.module.ts +1 -1
- package/src/add-layout/files/src/app/layouts/side-nav-inner-toolbar/side-nav-inner-toolbar.component.ts +13 -11
- package/src/add-layout/files/src/app/layouts/side-nav-outer-toolbar/side-nav-outer-toolbar.component.ts +10 -9
- package/src/add-layout/files/src/app/layouts/single-card/single-card.component.ts +4 -4
- package/src/add-layout/files/src/app/not-authorized-container.ts +2 -0
- package/src/add-layout/files/src/app/shared/components/change-password-form/change-password-form.component.html +8 -6
- package/src/add-layout/files/src/app/shared/components/change-password-form/change-password-form.component.ts +6 -15
- package/src/add-layout/files/src/app/shared/components/create-account-form/create-account-form.component.html +9 -7
- package/src/add-layout/files/src/app/shared/components/create-account-form/create-account-form.component.ts +4 -13
- package/src/add-layout/files/src/app/shared/components/header/header.component.ts +11 -6
- package/src/add-layout/files/src/app/shared/components/login-form/login-form.component.html +8 -6
- package/src/add-layout/files/src/app/shared/components/login-form/login-form.component.ts +2 -12
- package/src/add-layout/files/src/app/shared/components/reset-password-form/reset-password-form.component.html +8 -6
- package/src/add-layout/files/src/app/shared/components/reset-password-form/reset-password-form.component.ts +2 -12
- package/src/add-layout/files/src/app/shared/components/side-navigation-menu/side-navigation-menu.component.ts +8 -7
- package/src/add-layout/files/src/app/shared/components/user-panel/user-panel.component.html +5 -2
- package/src/add-layout/files/src/app/shared/components/user-panel/user-panel.component.ts +3 -2
- package/src/add-layout/files/src/app/shared/services/auth.service.ts +11 -5
- package/src/add-layout/files/src/app/shared/services/screen.service.ts +2 -2
- package/src/add-layout/files/src/app/unauthenticated-content.ts +53 -0
- package/src/add-layout/files/src/dx-styles.scss +4 -0
- package/src/add-layout/index.js +45 -31
- package/src/add-layout/index.js.map +1 -1
- package/src/add-layout/index.ts +384 -0
- package/src/add-layout/index_spec.js +42 -28
- package/src/add-layout/index_spec.js.map +1 -1
- package/src/add-layout/index_spec.ts +340 -0
- package/src/add-layout/schema.json +6 -2
- package/src/add-sample-views/files/pages/home/home.component.html +5 -5
- package/src/add-sample-views/files/pages/profile/profile.component.ts +1 -1
- package/src/add-sample-views/files/pages/tasks/tasks.component.html +1 -0
- package/src/add-sample-views/index.js +13 -4
- package/src/add-sample-views/index.js.map +1 -1
- package/src/add-sample-views/index.ts +141 -0
- package/src/add-sample-views/index_spec.js +5 -4
- package/src/add-sample-views/index_spec.js.map +1 -1
- package/src/add-sample-views/index_spec.ts +74 -0
- package/src/add-sample-views/schema.json +1 -1
- package/src/add-view/index.d.ts +2 -2
- package/src/add-view/index.js +33 -22
- package/src/add-view/index.js.map +1 -1
- package/src/add-view/index.ts +166 -0
- package/src/add-view/index_spec.js +12 -12
- package/src/add-view/index_spec.js.map +1 -1
- package/src/add-view/index_spec.ts +155 -0
- package/src/add-view/schema.json +4 -4
- package/src/collection.json +2 -1
- package/src/install/index.js +16 -3
- package/src/install/index.js.map +1 -1
- package/src/install/index.ts +88 -0
- package/src/install/index_spec.js +10 -9
- package/src/install/index_spec.js.map +1 -1
- package/src/install/index_spec.ts +106 -0
- package/src/install/schema.json +2 -2
- package/src/utility/array.js +1 -0
- package/src/utility/array.js.map +1 -1
- package/src/utility/array.ts +3 -0
- package/src/utility/change.js +1 -0
- package/src/utility/change.js.map +1 -1
- package/src/utility/change.ts +66 -0
- package/src/utility/latest-versions.d.ts +1 -1
- package/src/utility/latest-versions.js +3 -2
- package/src/utility/latest-versions.js.map +1 -1
- package/src/utility/latest-versions.ts +6 -0
- package/src/utility/modify-json-file.d.ts +1 -0
- package/src/utility/modify-json-file.js +7 -3
- package/src/utility/modify-json-file.js.map +1 -1
- package/src/utility/modify-json-file.ts +16 -0
- package/src/utility/project.d.ts +4 -4
- package/src/utility/project.js +35 -12
- package/src/utility/project.js.map +1 -1
- package/src/utility/project.ts +30 -0
- package/src/utility/routing.js +1 -0
- package/src/utility/routing.js.map +1 -1
- package/src/utility/routing.ts +44 -0
- package/src/utility/source.js +1 -0
- package/src/utility/source.js.map +1 -1
- package/src/utility/source.ts +16 -0
- package/src/utility/string.js +1 -0
- package/src/utility/string.js.map +1 -1
- package/src/utility/string.ts +5 -0
- package/src/utility/styles.d.ts +1 -2
- package/src/utility/styles.js +3 -4
- package/src/utility/styles.js.map +1 -1
- package/src/utility/styles.ts +30 -0
@@ -1,11 +1,12 @@
|
|
1
1
|
import { Component, NgModule, Input, Output, EventEmitter, OnInit } from '@angular/core';
|
2
2
|
import { CommonModule } from '@angular/common';
|
3
3
|
|
4
|
-
import { AuthService } from '../../services';
|
4
|
+
import { AuthService, IUser } from '../../services';
|
5
5
|
import { UserPanelModule } from '../user-panel/user-panel.component';
|
6
6
|
import { DxButtonModule } from 'devextreme-angular/ui/button';
|
7
7
|
import { DxToolbarModule } from 'devextreme-angular/ui/toolbar';
|
8
8
|
|
9
|
+
import { Router } from '@angular/router';
|
9
10
|
@Component({
|
10
11
|
selector: 'app-header',
|
11
12
|
templateUrl: 'header.component.html',
|
@@ -20,14 +21,18 @@ export class HeaderComponent implements OnInit {
|
|
20
21
|
menuToggleEnabled = false;
|
21
22
|
|
22
23
|
@Input()
|
23
|
-
title
|
24
|
+
title!: string;
|
24
25
|
|
25
|
-
user = { email: '' };
|
26
|
+
user: IUser | null = { email: '' };
|
26
27
|
|
27
28
|
userMenuItems = [{
|
28
29
|
text: 'Profile',
|
29
|
-
icon: 'user'
|
30
|
-
|
30
|
+
icon: 'user',
|
31
|
+
onClick: () => {
|
32
|
+
this.router.navigate(['/profile']);
|
33
|
+
}
|
34
|
+
},
|
35
|
+
{
|
31
36
|
text: 'Logout',
|
32
37
|
icon: 'runner',
|
33
38
|
onClick: () => {
|
@@ -35,7 +40,7 @@ export class HeaderComponent implements OnInit {
|
|
35
40
|
}
|
36
41
|
}];
|
37
42
|
|
38
|
-
constructor(private authService: AuthService) { }
|
43
|
+
constructor(private authService: AuthService, private router: Router) { }
|
39
44
|
|
40
45
|
ngOnInit() {
|
41
46
|
this.authService.getUser().then((e) => this.user = e.data);
|
@@ -35,12 +35,14 @@
|
|
35
35
|
</dxi-item>
|
36
36
|
|
37
37
|
<ng-container *dxTemplate="let item of 'signInTemplate'">
|
38
|
-
<
|
39
|
-
<
|
40
|
-
<
|
41
|
-
|
42
|
-
|
43
|
-
|
38
|
+
<div>
|
39
|
+
<span class="dx-button-text">
|
40
|
+
<ng-container *ngIf="loading; else notLoading">
|
41
|
+
<dx-load-indicator width="24px" height="24px" [visible]="true"></dx-load-indicator>
|
42
|
+
</ng-container>
|
43
|
+
<ng-template #notLoading>Sign In</ng-template>
|
44
|
+
</span>
|
45
|
+
</div>
|
44
46
|
</ng-container>
|
45
47
|
|
46
48
|
</dx-form>
|
@@ -1,13 +1,8 @@
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
2
2
|
import { Component, NgModule } from '@angular/core';
|
3
3
|
import { Router, RouterModule } from '@angular/router';
|
4
|
-
import { DxButtonModule } from 'devextreme-angular/ui/button';
|
5
|
-
import { DxCheckBoxModule } from 'devextreme-angular/ui/check-box';
|
6
4
|
import { DxFormModule } from 'devextreme-angular/ui/form';
|
7
5
|
import { DxLoadIndicatorModule } from 'devextreme-angular/ui/load-indicator';
|
8
|
-
import { DxTextBoxModule } from 'devextreme-angular/ui/text-box';
|
9
|
-
import { DxValidationGroupModule } from 'devextreme-angular/ui/validation-group';
|
10
|
-
import { DxValidatorModule } from 'devextreme-angular/ui/validator';
|
11
6
|
import notify from 'devextreme/ui/notify';
|
12
7
|
import { AuthService } from '../../services';
|
13
8
|
|
@@ -23,7 +18,7 @@ export class LoginFormComponent {
|
|
23
18
|
|
24
19
|
constructor(private authService: AuthService, private router: Router) { }
|
25
20
|
|
26
|
-
async onSubmit(e) {
|
21
|
+
async onSubmit(e: Event) {
|
27
22
|
e.preventDefault();
|
28
23
|
const { email, password } = this.formData;
|
29
24
|
this.loading = true;
|
@@ -43,13 +38,8 @@ export class LoginFormComponent {
|
|
43
38
|
imports: [
|
44
39
|
CommonModule,
|
45
40
|
RouterModule,
|
46
|
-
DxButtonModule,
|
47
|
-
DxCheckBoxModule,
|
48
|
-
DxTextBoxModule,
|
49
41
|
DxFormModule,
|
50
|
-
|
51
|
-
DxLoadIndicatorModule,
|
52
|
-
DxValidationGroupModule
|
42
|
+
DxLoadIndicatorModule
|
53
43
|
],
|
54
44
|
declarations: [ LoginFormComponent ],
|
55
45
|
exports: [ LoginFormComponent ]
|
@@ -20,12 +20,14 @@
|
|
20
20
|
</dxi-item>
|
21
21
|
|
22
22
|
<ng-container *dxTemplate="let item of 'resetPasswordTemplate'">
|
23
|
-
<
|
24
|
-
<
|
25
|
-
<
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
<div>
|
24
|
+
<span class="dx-button-text">
|
25
|
+
<ng-container *ngIf="loading; else notLoading">
|
26
|
+
<dx-load-indicator width="24px" height="24px" [visible]="true"></dx-load-indicator>
|
27
|
+
</ng-container>
|
28
|
+
<ng-template #notLoading>Reset my password</ng-template>
|
29
|
+
</span>
|
30
|
+
</div>>
|
29
31
|
</ng-container>
|
30
32
|
|
31
33
|
</dx-form>
|
@@ -1,13 +1,8 @@
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
2
2
|
import { Component, NgModule } from '@angular/core';
|
3
3
|
import { Router, RouterModule } from '@angular/router';
|
4
|
-
import { DxButtonModule } from 'devextreme-angular/ui/button';
|
5
|
-
import { DxCheckBoxModule } from 'devextreme-angular/ui/check-box';
|
6
4
|
import { DxFormModule } from 'devextreme-angular/ui/form';
|
7
5
|
import { DxLoadIndicatorModule } from 'devextreme-angular/ui/load-indicator';
|
8
|
-
import { DxTextBoxModule } from 'devextreme-angular/ui/text-box';
|
9
|
-
import { DxValidationGroupModule } from 'devextreme-angular/ui/validation-group';
|
10
|
-
import { DxValidatorModule } from 'devextreme-angular/ui/validator';
|
11
6
|
import notify from 'devextreme/ui/notify';
|
12
7
|
import { AuthService } from '../../services';
|
13
8
|
|
@@ -24,7 +19,7 @@ export class ResetPasswordFormComponent {
|
|
24
19
|
|
25
20
|
constructor(private authService: AuthService, private router: Router) { }
|
26
21
|
|
27
|
-
async onSubmit(e) {
|
22
|
+
async onSubmit(e: Event) {
|
28
23
|
e.preventDefault();
|
29
24
|
const { email } = this.formData;
|
30
25
|
this.loading = true;
|
@@ -44,13 +39,8 @@ export class ResetPasswordFormComponent {
|
|
44
39
|
imports: [
|
45
40
|
CommonModule,
|
46
41
|
RouterModule,
|
47
|
-
DxButtonModule,
|
48
|
-
DxCheckBoxModule,
|
49
|
-
DxTextBoxModule,
|
50
42
|
DxFormModule,
|
51
|
-
|
52
|
-
DxLoadIndicatorModule,
|
53
|
-
DxValidationGroupModule
|
43
|
+
DxLoadIndicatorModule
|
54
44
|
],
|
55
45
|
declarations: [ResetPasswordFormComponent],
|
56
46
|
exports: [ResetPasswordFormComponent]
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { Component, NgModule, Output, Input, EventEmitter, ViewChild, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';
|
2
|
+
import { ItemClickEvent } from 'devextreme/ui/tree_view';
|
2
3
|
import { DxTreeViewModule, DxTreeViewComponent } from 'devextreme-angular/ui/tree-view';
|
3
4
|
import { navigation } from '../../../app-navigation';
|
4
5
|
|
@@ -11,15 +12,15 @@ import * as events from 'devextreme/events';
|
|
11
12
|
})
|
12
13
|
export class SideNavigationMenuComponent implements AfterViewInit, OnDestroy {
|
13
14
|
@ViewChild(DxTreeViewComponent, { static: true })
|
14
|
-
menu
|
15
|
+
menu!: DxTreeViewComponent;
|
15
16
|
|
16
17
|
@Output()
|
17
|
-
selectedItemChanged = new EventEmitter<
|
18
|
+
selectedItemChanged = new EventEmitter<ItemClickEvent>();
|
18
19
|
|
19
20
|
@Output()
|
20
21
|
openMenu = new EventEmitter<any>();
|
21
22
|
|
22
|
-
private _selectedItem
|
23
|
+
private _selectedItem!: String;
|
23
24
|
@Input()
|
24
25
|
set selectedItem(value: String) {
|
25
26
|
this._selectedItem = value;
|
@@ -30,11 +31,11 @@ export class SideNavigationMenuComponent implements AfterViewInit, OnDestroy {
|
|
30
31
|
this.menu.instance.selectItem(value);
|
31
32
|
}
|
32
33
|
|
33
|
-
private _items;
|
34
|
+
private _items!: Record <string, unknown>[];
|
34
35
|
get items() {
|
35
36
|
if (!this._items) {
|
36
37
|
this._items = navigation.map((item) => {
|
37
|
-
if(item.path && !(/^\//.test(item.path))){
|
38
|
+
if(item.path && !(/^\//.test(item.path))){
|
38
39
|
item.path = `/${item.path}`;
|
39
40
|
}
|
40
41
|
return { ...item, expanded: !this._compactMode }
|
@@ -65,12 +66,12 @@ export class SideNavigationMenuComponent implements AfterViewInit, OnDestroy {
|
|
65
66
|
|
66
67
|
constructor(private elementRef: ElementRef) { }
|
67
68
|
|
68
|
-
onItemClick(event) {
|
69
|
+
onItemClick(event: ItemClickEvent) {
|
69
70
|
this.selectedItemChanged.emit(event);
|
70
71
|
}
|
71
72
|
|
72
73
|
ngAfterViewInit() {
|
73
|
-
events.on(this.elementRef.nativeElement, 'dxclick', (e) => {
|
74
|
+
events.on(this.elementRef.nativeElement, 'dxclick', (e: Event) => {
|
74
75
|
this.openMenu.next(e);
|
75
76
|
});
|
76
77
|
}
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<div class="image-container">
|
4
4
|
<div class="user-image"></div>
|
5
5
|
</div>
|
6
|
-
<div class="user-name">{{user
|
6
|
+
<div class="user-name">{{user?.email}}</div>
|
7
7
|
</div>
|
8
8
|
<dx-context-menu
|
9
9
|
*ngIf="menuMode === 'context'"
|
@@ -11,7 +11,10 @@
|
|
11
11
|
target=".user-button"
|
12
12
|
showEvent="dxclick"
|
13
13
|
width="210px"
|
14
|
-
[position]="{
|
14
|
+
[position]="{
|
15
|
+
my: 'top',
|
16
|
+
at: 'bottom'
|
17
|
+
}"
|
15
18
|
cssClass="user-menu">
|
16
19
|
</dx-context-menu>
|
17
20
|
<dx-list
|
@@ -3,6 +3,7 @@ import { CommonModule } from '@angular/common';
|
|
3
3
|
|
4
4
|
import { DxListModule } from 'devextreme-angular/ui/list';
|
5
5
|
import { DxContextMenuModule } from 'devextreme-angular/ui/context-menu';
|
6
|
+
import { IUser } from '../../services/auth.service';
|
6
7
|
|
7
8
|
@Component({
|
8
9
|
selector: 'app-user-panel',
|
@@ -15,10 +16,10 @@ export class UserPanelComponent {
|
|
15
16
|
menuItems: any;
|
16
17
|
|
17
18
|
@Input()
|
18
|
-
menuMode
|
19
|
+
menuMode!: string;
|
19
20
|
|
20
21
|
@Input()
|
21
|
-
user
|
22
|
+
user!: IUser | null;
|
22
23
|
|
23
24
|
constructor() {}
|
24
25
|
}
|
@@ -1,6 +1,11 @@
|
|
1
1
|
import { Injectable } from '@angular/core';
|
2
2
|
import { CanActivate, Router, ActivatedRouteSnapshot } from '@angular/router';
|
3
3
|
|
4
|
+
export interface IUser {
|
5
|
+
email: string;
|
6
|
+
avatarUrl?: string
|
7
|
+
}
|
8
|
+
|
4
9
|
const defaultPath = '/';
|
5
10
|
const defaultUser = {
|
6
11
|
email: 'sandra@example.com',
|
@@ -9,7 +14,7 @@ const defaultUser = {
|
|
9
14
|
|
10
15
|
@Injectable()
|
11
16
|
export class AuthService {
|
12
|
-
private _user = defaultUser;
|
17
|
+
private _user: IUser | null = defaultUser;
|
13
18
|
get loggedIn(): boolean {
|
14
19
|
return !!this._user;
|
15
20
|
}
|
@@ -53,12 +58,13 @@ export class AuthService {
|
|
53
58
|
}
|
54
59
|
catch {
|
55
60
|
return {
|
56
|
-
isOk: false
|
61
|
+
isOk: false,
|
62
|
+
data: null
|
57
63
|
};
|
58
64
|
}
|
59
65
|
}
|
60
66
|
|
61
|
-
async createAccount(email, password) {
|
67
|
+
async createAccount(email: string, password: string) {
|
62
68
|
try {
|
63
69
|
// Send request
|
64
70
|
console.log(email, password);
|
@@ -127,7 +133,7 @@ export class AuthGuardService implements CanActivate {
|
|
127
133
|
'reset-password',
|
128
134
|
'create-account',
|
129
135
|
'change-password/:recoveryCode'
|
130
|
-
].includes(route.routeConfig
|
136
|
+
].includes(route.routeConfig?.path || defaultPath);
|
131
137
|
|
132
138
|
if (isLoggedIn && isAuthForm) {
|
133
139
|
this.authService.lastAuthenticatedPath = defaultPath;
|
@@ -140,7 +146,7 @@ export class AuthGuardService implements CanActivate {
|
|
140
146
|
}
|
141
147
|
|
142
148
|
if (isLoggedIn) {
|
143
|
-
this.authService.lastAuthenticatedPath = route.routeConfig
|
149
|
+
this.authService.lastAuthenticatedPath = route.routeConfig?.path || defaultPath;
|
144
150
|
}
|
145
151
|
|
146
152
|
return isLoggedIn || isAuthForm;
|
@@ -8,7 +8,7 @@ export class ScreenService {
|
|
8
8
|
constructor(private breakpointObserver: BreakpointObserver) {
|
9
9
|
this.breakpointObserver
|
10
10
|
.observe([Breakpoints.XSmall, Breakpoints.Small, Breakpoints.Medium, Breakpoints.Large])
|
11
|
-
.subscribe(() => this.changed.next());
|
11
|
+
.subscribe(() => this.changed.next(true));
|
12
12
|
}
|
13
13
|
|
14
14
|
private isLargeScreen() {
|
@@ -18,7 +18,7 @@ export class ScreenService {
|
|
18
18
|
return isLarge || isXLarge;
|
19
19
|
}
|
20
20
|
|
21
|
-
public get sizes() {
|
21
|
+
public get sizes(): Record<string, boolean> {
|
22
22
|
return {
|
23
23
|
'screen-x-small': this.breakpointObserver.isMatched(Breakpoints.XSmall),
|
24
24
|
'screen-small': this.breakpointObserver.isMatched(Breakpoints.Small),
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
2
|
+
import { Component, NgModule } from '@angular/core';
|
3
|
+
import { RouterModule } from '@angular/router';
|
4
|
+
import { SingleCardModule } from 'src/app/layouts';
|
5
|
+
import { Router } from '@angular/router';
|
6
|
+
|
7
|
+
@Component({
|
8
|
+
selector: 'app-unauthenticated-content',
|
9
|
+
template: `
|
10
|
+
<app-single-card [title]="title" [description]="description">
|
11
|
+
<router-outlet></router-outlet>
|
12
|
+
</app-single-card>
|
13
|
+
`,
|
14
|
+
styles: [`
|
15
|
+
:host {
|
16
|
+
width: 100%;
|
17
|
+
height: 100%;
|
18
|
+
}
|
19
|
+
`]
|
20
|
+
})
|
21
|
+
export class UnauthenticatedContentComponent {
|
22
|
+
|
23
|
+
constructor(private router: Router) { }
|
24
|
+
|
25
|
+
get title() {
|
26
|
+
const path = this.router.url.split('/')[1];
|
27
|
+
switch (path) {
|
28
|
+
case 'login-form': return 'Sign In';
|
29
|
+
case 'reset-password': return 'Reset Password';
|
30
|
+
case 'create-account': return 'Sign Up';
|
31
|
+
case 'change-password': return 'Change Password';
|
32
|
+
default: return '';
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
get description() {
|
37
|
+
const path = this.router.url.split('/')[1];
|
38
|
+
switch (path) {
|
39
|
+
case 'reset-password': return 'Please enter the email address that you used to register, and we will send you a link to reset your password via Email.';
|
40
|
+
default: return '';
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
@NgModule({
|
45
|
+
imports: [
|
46
|
+
CommonModule,
|
47
|
+
RouterModule,
|
48
|
+
SingleCardModule,
|
49
|
+
],
|
50
|
+
declarations: [UnauthenticatedContentComponent],
|
51
|
+
exports: [UnauthenticatedContentComponent]
|
52
|
+
})
|
53
|
+
export class UnauthenticatedContentModule { }
|
package/src/add-layout/index.js
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
12
|
const schematics_1 = require("@angular-devkit/schematics");
|
4
|
-
const rxjs_1 = require("rxjs");
|
5
13
|
const core_1 = require("@angular-devkit/core");
|
6
14
|
const path_1 = require("path");
|
7
15
|
const project_1 = require("../utility/project");
|
@@ -14,7 +22,7 @@ const source_1 = require("../utility/source");
|
|
14
22
|
const change_1 = require("../utility/change");
|
15
23
|
const routing_1 = require("../utility/routing");
|
16
24
|
const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
|
17
|
-
const
|
25
|
+
const workspace_1 = require("@schematics/angular/utility/workspace");
|
18
26
|
const projectFilesSource = './files/src';
|
19
27
|
const workspaceFilesSource = './files';
|
20
28
|
function addScriptSafe(scripts, name, value) {
|
@@ -42,8 +50,9 @@ function addBuildThemeScript() {
|
|
42
50
|
return host;
|
43
51
|
};
|
44
52
|
}
|
45
|
-
function addCustomThemeStyles(options, sourcePath) {
|
46
|
-
return (
|
53
|
+
function addCustomThemeStyles(host, options, sourcePath = '') {
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
55
|
+
const projectName = yield project_1.getProjectName(host, options.project);
|
47
56
|
modify_json_file_1.modifyJSONFile(host, './angular.json', config => {
|
48
57
|
const stylesList = [
|
49
58
|
`${sourcePath}/dx-styles.scss`,
|
@@ -51,27 +60,27 @@ function addCustomThemeStyles(options, sourcePath) {
|
|
51
60
|
`${sourcePath}/themes/generated/theme.base.css`,
|
52
61
|
'node_modules/devextreme/dist/css/dx.common.css'
|
53
62
|
];
|
54
|
-
return styles_1.addStylesToApp(
|
63
|
+
return styles_1.addStylesToApp(projectName, config, stylesList);
|
55
64
|
});
|
56
65
|
return host;
|
57
|
-
};
|
66
|
+
});
|
58
67
|
}
|
59
|
-
function updateBudgets(options) {
|
60
|
-
return (
|
68
|
+
function updateBudgets(host, options) {
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
70
|
+
const projectName = yield project_1.getProjectName(host, options.project);
|
61
71
|
modify_json_file_1.modifyJSONFile(host, './angular.json', config => {
|
62
|
-
const projectName = project_1.getProjectName(host, options.project);
|
63
72
|
const budgets = config.projects[projectName].architect.build.configurations.production.budgets;
|
64
73
|
const budget = budgets.find((item) => item.type === 'initial');
|
65
74
|
if (budget) {
|
66
75
|
budget.maximumWarning = '4mb';
|
67
|
-
budget.maximumError = '
|
76
|
+
budget.maximumError = '7mb';
|
68
77
|
}
|
69
78
|
return config;
|
70
79
|
});
|
71
80
|
return host;
|
72
|
-
};
|
81
|
+
});
|
73
82
|
}
|
74
|
-
function addViewportToBody(sourcePath) {
|
83
|
+
function addViewportToBody(sourcePath = '') {
|
75
84
|
return (host) => {
|
76
85
|
const indexPath = path_1.join(sourcePath, 'index.html');
|
77
86
|
let indexContent = host.read(indexPath).toString();
|
@@ -107,11 +116,14 @@ function updateAppModule(host, sourcePath) {
|
|
107
116
|
modifyFileRule(appModulePath, importSetter('SideNavInnerToolbarModule', './layouts')),
|
108
117
|
modifyFileRule(appModulePath, importSetter('SingleCardModule', './layouts')),
|
109
118
|
modifyFileRule(appModulePath, importSetter('FooterModule', './shared/components')),
|
119
|
+
modifyFileRule(appModulePath, importSetter('ResetPasswordFormModule', './shared/components')),
|
120
|
+
modifyFileRule(appModulePath, importSetter('CreateAccountFormModule', './shared/components')),
|
121
|
+
modifyFileRule(appModulePath, importSetter('ChangePasswordFormModule', './shared/components')),
|
110
122
|
modifyFileRule(appModulePath, importSetter('LoginFormModule', './shared/components')),
|
111
123
|
modifyFileRule(appModulePath, providerSetter('AuthService', './shared/services')),
|
112
124
|
modifyFileRule(appModulePath, providerSetter('ScreenService', './shared/services')),
|
113
125
|
modifyFileRule(appModulePath, providerSetter('AppInfoService', './shared/services')),
|
114
|
-
modifyFileRule(appModulePath, importSetter('
|
126
|
+
modifyFileRule(appModulePath, importSetter('UnauthenticatedContentModule', './unauthenticated-content')),
|
115
127
|
];
|
116
128
|
if (!hasRoutingModule(host, sourcePath)) {
|
117
129
|
rules.push(modifyFileRule(appModulePath, importSetter('AppRoutingModule', './app-routing.module')));
|
@@ -135,17 +147,17 @@ function getComponentName(host, sourcePath) {
|
|
135
147
|
function hasRoutingModule(host, sourcePath) {
|
136
148
|
return host.exists(sourcePath + 'app-routing.module.ts');
|
137
149
|
}
|
138
|
-
function addPackagesToDependency() {
|
150
|
+
function addPackagesToDependency(globalNgCliVersion) {
|
139
151
|
return (host) => {
|
140
152
|
dependencies_1.addPackageJsonDependency(host, {
|
141
153
|
type: dependencies_1.NodeDependencyType.Default,
|
142
154
|
name: '@angular/cdk',
|
143
|
-
version:
|
155
|
+
version: globalNgCliVersion
|
144
156
|
});
|
145
157
|
return host;
|
146
158
|
};
|
147
159
|
}
|
148
|
-
function modifyContentByTemplate(sourcePath, templateSourcePath, filePath, templateOptions = {}, modifyContent) {
|
160
|
+
function modifyContentByTemplate(sourcePath = '', templateSourcePath, filePath, templateOptions = {}, modifyContent) {
|
149
161
|
return (host, context) => {
|
150
162
|
const modifyIfExists = (fileEntry) => {
|
151
163
|
const fileEntryPath = path_1.join(sourcePath, fileEntry.path.toString());
|
@@ -174,13 +186,12 @@ function modifyContentByTemplate(sourcePath, templateSourcePath, filePath, templ
|
|
174
186
|
];
|
175
187
|
const modifiedSource = schematics_1.apply(schematics_1.url(templateSourcePath), rules);
|
176
188
|
const resultRule = schematics_1.mergeWith(modifiedSource);
|
177
|
-
return schematics_1.callRule(resultRule,
|
189
|
+
return schematics_1.callRule(resultRule, host, context);
|
178
190
|
};
|
179
191
|
}
|
180
|
-
function updateDevextremeConfig(sourcePath) {
|
192
|
+
function updateDevextremeConfig(sourcePath = '') {
|
181
193
|
const devextremeConfigPath = '/devextreme.json';
|
182
194
|
const templateOptions = {
|
183
|
-
engine: 'angular',
|
184
195
|
sourcePath
|
185
196
|
};
|
186
197
|
const modifyConfig = (templateContent, currentContent) => {
|
@@ -205,17 +216,20 @@ const modifyRoutingModule = (host, routingModulePath) => {
|
|
205
216
|
}
|
206
217
|
};
|
207
218
|
function default_1(options) {
|
208
|
-
return (host) => {
|
209
|
-
const
|
210
|
-
const
|
211
|
-
const
|
219
|
+
return (host) => __awaiter(this, void 0, void 0, function* () {
|
220
|
+
const ngConfig = host.read('./angular.json').toString();
|
221
|
+
const defaultProjectName = modify_json_file_1.parseJson(ngConfig).defaultProject;
|
222
|
+
const project = yield project_1.getProjectName(host, options.project);
|
223
|
+
const workspace = yield workspace_1.getWorkspace(host);
|
224
|
+
const ngProject = workspace.projects.get(project);
|
225
|
+
const prefix = ngProject === null || ngProject === void 0 ? void 0 : ngProject.prefix;
|
212
226
|
const title = string_1.humanize(project);
|
213
|
-
const appPath = project_1.getApplicationPath(host, project);
|
214
|
-
const sourcePath = project_1.getSourceRootPath(host, project);
|
227
|
+
const appPath = yield project_1.getApplicationPath(host, project);
|
228
|
+
const sourcePath = yield project_1.getSourceRootPath(host, project);
|
215
229
|
const layout = options.layout;
|
216
230
|
const override = options.resolveConflicts === 'override';
|
217
231
|
const componentName = override ? 'app' : getComponentName(host, appPath);
|
218
|
-
const pathToCss = sourcePath.replace(/\/?(\w)+\/?/g, '../');
|
232
|
+
const pathToCss = sourcePath === null || sourcePath === void 0 ? void 0 : sourcePath.replace(/\/?(\w)+\/?/g, '../');
|
219
233
|
const templateOptions = {
|
220
234
|
name: componentName,
|
221
235
|
layout,
|
@@ -239,12 +253,12 @@ function default_1(options) {
|
|
239
253
|
updateDevextremeConfig(sourcePath),
|
240
254
|
updateAppModule(host, appPath),
|
241
255
|
addBuildThemeScript(),
|
242
|
-
addCustomThemeStyles(options, sourcePath),
|
256
|
+
() => addCustomThemeStyles(host, options, sourcePath),
|
243
257
|
addViewportToBody(sourcePath),
|
244
|
-
addPackagesToDependency()
|
258
|
+
addPackagesToDependency(options.globalNgCliVersion)
|
245
259
|
];
|
246
260
|
if (options.updateBudgets) {
|
247
|
-
rules.push(updateBudgets(options));
|
261
|
+
rules.push(() => updateBudgets(host, options));
|
248
262
|
}
|
249
263
|
if (!options.skipInstall) {
|
250
264
|
rules.push((_, context) => {
|
@@ -252,13 +266,13 @@ function default_1(options) {
|
|
252
266
|
});
|
253
267
|
}
|
254
268
|
if (override) {
|
255
|
-
if (project ===
|
269
|
+
if (project === defaultProjectName) {
|
256
270
|
rules.push(modifyContentByTemplate('./', workspaceFilesSource, 'e2e/src/app.e2e-spec.ts', { title }));
|
257
271
|
rules.push(modifyContentByTemplate('./', workspaceFilesSource, 'e2e/src/app.po.ts'));
|
258
272
|
}
|
259
273
|
}
|
260
274
|
return schematics_1.chain(rules);
|
261
|
-
};
|
275
|
+
});
|
262
276
|
}
|
263
277
|
exports.default = default_1;
|
264
278
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|