diff --git a/.gitignore b/.gitignore
index aabb2d279..6a63372d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -44,4 +44,3 @@ Thumbs.db
=======
# Local
todo
-backend
diff --git a/PLAYBOOK.md b/PLAYBOOK.md
index 88f1194b2..82e0f72d3 100644
--- a/PLAYBOOK.md
+++ b/PLAYBOOK.md
@@ -108,8 +108,10 @@ ng update --all
# generate webapp app
ng g app webapp --routing --style=scss --prefix=ngx --unit-test-runner=jest --tags=app-module
-# generate api app
-ng g node-app api --framework=express --unit-test-runner=jest --tags=api-module --dry-run
+# generate api app with nestjs
+ng g node-app api --framework=express --unit-test-runner=jest --tags=api-module --dry-run
+# generate backend app with express
+ng g node-app backend --framework=express --unit-test-runner=jest --tags=api-module --dry-run
```
#### Dependencies
@@ -208,6 +210,8 @@ ng g lib grid --routing --lazy --prefix=ngx --parent-module=libs/dashb
ng g lib animations --module false -tags=utils --unit-test-runner=jest --dry-run
ng g lib Tree --module false --publishable=true --tags=utils --unit-test-runner=jest --dry-run
ng g lib utils --module false --tags=utils --unit-test-runner=jest --dry-run
+# system wide models
+ng g lib models --module false --tags=utils --unit-test-runner=jest --dry-run
# add `core` module which will be only inported into root/app module.
ng g lib core --prefix=ngx --tags=core-module --unit-test-runner=jest --dry-run
@@ -380,16 +384,19 @@ ng g component containers/AccountsGridList --project=grid --dry-run
# generate containers, components for `experiments` Module
ng g component containers/animations --project=experiments --dry-run
-ng g component containers/ContextMenu --project=experiments --dry-run
-ng g component containers/FileUpload --project=experiments --dry-run
ng g component components/hammerCard --project=experiments --dry-run
ng g directive components/Hammertime/Hammertime --project=experiments --dry-run
+ng g component containers/ContextMenu --project=experiments --dry-run
+ng g component containers/FileUpload --project=experiments --dry-run
ng g component containers/virtualScroll --project=experiments --dry-run
ng g component containers/StickyTable --project=experiments --dry-run
ng g component containers/clapButton --project=experiments -s -t --spec=false --dry-run
ng g component containers/knobDemo --project=experiments --dry-run
ng g component containers/ledDemo --project=experiments --dry-run
ng g component containers/ImageComp --project=experiments --dry-run
+ng g component containers/layout --project=experiments --dry-run
+ng g component components/card --project=experiments --dry-run
+
# generate components for `ImageComparison` Module
ng g lib ImageComparison --prefix=ngx --tags=public-module --spec=false --publishable=true --dry-run
diff --git a/apps/api/README.md b/apps/api/README.md
index 22286f9ab..fea825058 100755
--- a/apps/api/README.md
+++ b/apps/api/README.md
@@ -47,6 +47,9 @@ docker rm 82be5234c94a
```bash
# start in watch mode
npm run api:start:dev
+# to turn on logging for `request`
+NODE_DEBUG=request npm run api:start:dev
+DEBUG=typeorm:* npm run api:start:dev
# start
npm run api:start
diff --git a/apps/webapp/src/environments/environment.mock.ts b/apps/webapp/src/environments/environment.mock.ts
index 71d6299a1..0644c1867 100644
--- a/apps/webapp/src/environments/environment.mock.ts
+++ b/apps/webapp/src/environments/environment.mock.ts
@@ -5,6 +5,7 @@ export const environment = {
production: true,
envName: 'mock',
+ DOCS_BASE_URL: 'http://localhost:8000',
API_BASE_URL: 'http://localhost:3000/api',
WS_EVENT_BUS_URL: 'ws://localhost:3000/eventbus',
auth: {
diff --git a/apps/webapp/src/environments/environment.prod.ts b/apps/webapp/src/environments/environment.prod.ts
index cd241a63f..0bf90a90b 100644
--- a/apps/webapp/src/environments/environment.prod.ts
+++ b/apps/webapp/src/environments/environment.prod.ts
@@ -5,6 +5,7 @@ export const environment = {
production: true,
envName: 'prod',
+ DOCS_BASE_URL: 'http://localhost:8000',
API_BASE_URL: 'http://localhost:3000/api',
WS_EVENT_BUS_URL: 'ws://localhost:3000/eventbus',
auth: {
diff --git a/apps/webapp/src/environments/environment.ts b/apps/webapp/src/environments/environment.ts
index 9a6a1ea95..c23dcce32 100644
--- a/apps/webapp/src/environments/environment.ts
+++ b/apps/webapp/src/environments/environment.ts
@@ -8,6 +8,7 @@ export const environment = {
production: false,
envName: 'dev',
+ DOCS_BASE_URL: 'http://localhost:8000',
API_BASE_URL: 'http://localhost:3000/api',
WS_EVENT_BUS_URL: 'ws://localhost:3000/eventbus',
auth: {
diff --git a/libs/core/src/lib/menu-data.ts b/libs/core/src/lib/menu-data.ts
index d61214f8c..65a5404c6 100644
--- a/libs/core/src/lib/menu-data.ts
+++ b/libs/core/src/lib/menu-data.ts
@@ -67,6 +67,11 @@ export const defaultMenu: MenuItem[] = [
icon: 'directions',
link: '/dashboard/experiments/knob',
},
+ {
+ name: 'Layout',
+ icon: 'apps',
+ link: '/dashboard/experiments/layout',
+ },
// {
// name: 'Microinteractions',
// icon: 'casino',
diff --git a/libs/experiments/src/lib/components/card/card.component.html b/libs/experiments/src/lib/components/card/card.component.html
new file mode 100644
index 000000000..8ac478868
--- /dev/null
+++ b/libs/experiments/src/lib/components/card/card.component.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Side
+
+
+
+ Content
+
+
+
+
diff --git a/libs/experiments/src/lib/components/card/card.component.scss b/libs/experiments/src/lib/components/card/card.component.scss
new file mode 100644
index 000000000..8c492d640
--- /dev/null
+++ b/libs/experiments/src/lib/components/card/card.component.scss
@@ -0,0 +1,18 @@
+:host {
+ display: block;
+ padding: 32px;
+ border: 1px solid black;
+ border-radius: 8px;
+}
+.header {
+ background-color: #e3e3e3;
+}
+.side {
+ background-color: #e3e3ff;
+}
+.content {
+ background-color: #e3ffe3;
+}
+.footer {
+ background-color: #ffe3e3;
+}
diff --git a/libs/experiments/src/lib/components/card/card.component.spec.ts b/libs/experiments/src/lib/components/card/card.component.spec.ts
new file mode 100644
index 000000000..e141708ac
--- /dev/null
+++ b/libs/experiments/src/lib/components/card/card.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CardComponent } from './card.component';
+
+describe('CardComponent', () => {
+ let component: CardComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ CardComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(CardComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/libs/experiments/src/lib/components/card/card.component.ts b/libs/experiments/src/lib/components/card/card.component.ts
new file mode 100644
index 000000000..2041591e6
--- /dev/null
+++ b/libs/experiments/src/lib/components/card/card.component.ts
@@ -0,0 +1,12 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-card',
+ templateUrl: './card.component.html',
+ styleUrls: ['./card.component.scss']
+})
+export class CardComponent {
+
+ constructor() { }
+
+}
diff --git a/libs/experiments/src/lib/containers/clap-button/clap-button.component.ts b/libs/experiments/src/lib/containers/clap-button/clap-button.component.ts
index 6c6debe62..461b895d0 100644
--- a/libs/experiments/src/lib/containers/clap-button/clap-button.component.ts
+++ b/libs/experiments/src/lib/containers/clap-button/clap-button.component.ts
@@ -1,18 +1,27 @@
import { Component, OnInit } from '@angular/core';
+import { Crumb } from '@ngx-starter-kit/breadcrumbs';
@Component({
selector: 'app-clap-button',
template: `
-
-
+
+
+
+
+
`,
styles: [
`
:host {
+ display: block;
+ padding: 1.5%;
+ position: relative;
+ }
+ .container {
min-height: 100vh;
display: flex;
justify-content: center;
@@ -22,6 +31,11 @@ import { Component, OnInit } from '@angular/core';
],
})
export class ClapButtonComponent {
+ crumbs: ReadonlyArray = [
+ { name: 'Dashboard', link: '/dashboard' },
+ { name: 'Experiments', link: '/dashboard/experiments' },
+ { name: 'Clap Button' },
+ ];
userCounter = 0;
get totalCounter() {
diff --git a/libs/experiments/src/lib/containers/file-upload/file-upload.component.ts b/libs/experiments/src/lib/containers/file-upload/file-upload.component.ts
index 1c51cabac..deb564baf 100644
--- a/libs/experiments/src/lib/containers/file-upload/file-upload.component.ts
+++ b/libs/experiments/src/lib/containers/file-upload/file-upload.component.ts
@@ -1,11 +1,15 @@
import { Component, ViewChild } from '@angular/core';
-import { MatDialog } from '@angular/material';
+import { MatSnackBar } from '@angular/material';
import { Crumb } from '@ngx-starter-kit/breadcrumbs';
+import { FileUploadService } from './file-upload.service';
@Component({
selector: 'ngx-file-upload',
templateUrl: './file-upload.component.html',
styleUrls: ['./file-upload.component.scss'],
+ providers: [
+ FileUploadService
+ ]
})
export class FileUploadComponent {
crumbs: ReadonlyArray = [
@@ -24,6 +28,21 @@ export class FileUploadComponent {
const formData = new FormData();
formData.append(fieldName, file, file.name);
formData.append(fieldName, JSON.stringify(metadata));
+ this.uploadService.uploadFile(file, {}, 'tenant1').subscribe(
+ data => {
+ this.myPond.removeFiles();
+ this.snackBar.open(`Uploaded Successfully`, '', {
+ duration: 3000
+ });
+ },
+ err => {
+ console.error(`File Upload Error: ${err.message}`);
+ this.snackBar.open(`File Upload Error: ${err.message}`, '', {
+ duration: 3000
+ });
+ }
+ );
+
// Progress indicator supported, set progress to 25% of 1
progress(true, 0.25, 1);
@@ -102,7 +121,7 @@ export class FileUploadComponent {
acceptedFileTypes: 'image/*, application/pdf, application/*, text/plain, text/csv, .vsd',
};
- constructor(public dialog: MatDialog) {}
+ constructor(public snackBar: MatSnackBar, private uploadService: FileUploadService) {}
pondHandleInit() {
console.log('FilePond has initialised', this.myPond);
diff --git a/libs/experiments/src/lib/containers/file-upload/file-upload.service.ts b/libs/experiments/src/lib/containers/file-upload/file-upload.service.ts
new file mode 100644
index 000000000..8073d0383
--- /dev/null
+++ b/libs/experiments/src/lib/containers/file-upload/file-upload.service.ts
@@ -0,0 +1,19 @@
+import { Injectable } from '@angular/core';
+import { HttpClient, HttpHeaders } from '@angular/common/http';
+import { environment } from '@env/environment';
+
+
+@Injectable()
+export class FileUploadService {
+ baseUrl = environment.DOCS_BASE_URL;
+ constructor(private httpClient: HttpClient) {}
+
+ uploadFile(file, user, tenantId) {
+ const formData = new FormData();
+ formData.append('file', file);
+ formData.append('tenant', tenantId);
+ formData.append('user', user);
+ const headers = new HttpHeaders();
+ return this.httpClient.post(`${this.baseUrl}/upload`, formData, { headers, responseType: 'text' });
+ }
+}
diff --git a/libs/experiments/src/lib/containers/image-comp/image-comp.component.html b/libs/experiments/src/lib/containers/image-comp/image-comp.component.html
index 00983066e..9af39ed9b 100644
--- a/libs/experiments/src/lib/containers/image-comp/image-comp.component.html
+++ b/libs/experiments/src/lib/containers/image-comp/image-comp.component.html
@@ -1,3 +1,5 @@
+
+
diff --git a/libs/experiments/src/lib/containers/image-comp/image-comp.component.ts b/libs/experiments/src/lib/containers/image-comp/image-comp.component.ts
index 8e8cdb374..02082ff88 100644
--- a/libs/experiments/src/lib/containers/image-comp/image-comp.component.ts
+++ b/libs/experiments/src/lib/containers/image-comp/image-comp.component.ts
@@ -1,4 +1,5 @@
import { Component, OnInit } from '@angular/core';
+import { Crumb } from '@ngx-starter-kit/breadcrumbs';
@Component({
selector: 'ngx-image-comp',
@@ -6,6 +7,12 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./image-comp.component.scss'],
})
export class ImageCompComponent implements OnInit {
+ crumbs: ReadonlyArray = [
+ { name: 'Dashboard', link: '/dashboard' },
+ { name: 'Experiments', link: '/dashboard/experiments' },
+ { name: 'Image Comp Demo' },
+ ];
+
constructor() {}
ngOnInit() {}
diff --git a/libs/experiments/src/lib/containers/knob-demo/knob-demo.component.html b/libs/experiments/src/lib/containers/knob-demo/knob-demo.component.html
index 7fb6e7ef3..788a0d59b 100644
--- a/libs/experiments/src/lib/containers/knob-demo/knob-demo.component.html
+++ b/libs/experiments/src/lib/containers/knob-demo/knob-demo.component.html
@@ -1,3 +1,5 @@
+
+
diff --git a/libs/experiments/src/lib/containers/knob-demo/knob-demo.component.ts b/libs/experiments/src/lib/containers/knob-demo/knob-demo.component.ts
index 588f9edb7..be330d6cb 100644
--- a/libs/experiments/src/lib/containers/knob-demo/knob-demo.component.ts
+++ b/libs/experiments/src/lib/containers/knob-demo/knob-demo.component.ts
@@ -1,4 +1,5 @@
import { Component, OnInit } from '@angular/core';
+import { Crumb } from '@ngx-starter-kit/breadcrumbs';
@Component({
selector: 'ngx-knob-demo',
@@ -6,6 +7,13 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./knob-demo.component.scss'],
})
export class KnobDemoComponent implements OnInit {
+
+ crumbs: ReadonlyArray
= [
+ { name: 'Dashboard', link: '/dashboard' },
+ { name: 'Experiments', link: '/dashboard/experiments' },
+ { name: 'Knob Demo' },
+ ];
+
value1 = 256;
options1 = {
startAngle: 30,
diff --git a/libs/experiments/src/lib/containers/layout/layout.component.html b/libs/experiments/src/lib/containers/layout/layout.component.html
new file mode 100644
index 000000000..87cb50ea2
--- /dev/null
+++ b/libs/experiments/src/lib/containers/layout/layout.component.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
diff --git a/libs/experiments/src/lib/containers/layout/layout.component.scss b/libs/experiments/src/lib/containers/layout/layout.component.scss
new file mode 100644
index 000000000..a8f3e9840
--- /dev/null
+++ b/libs/experiments/src/lib/containers/layout/layout.component.scss
@@ -0,0 +1,6 @@
+:host {
+ display: block;
+ padding: 1.5%;
+ position: relative;
+}
+
diff --git a/libs/experiments/src/lib/containers/layout/layout.component.spec.ts b/libs/experiments/src/lib/containers/layout/layout.component.spec.ts
new file mode 100644
index 000000000..c4d6365d7
--- /dev/null
+++ b/libs/experiments/src/lib/containers/layout/layout.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { LayoutComponent } from './layout.component';
+
+describe('LayoutComponent', () => {
+ let component: LayoutComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ LayoutComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(LayoutComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/libs/experiments/src/lib/containers/layout/layout.component.ts b/libs/experiments/src/lib/containers/layout/layout.component.ts
new file mode 100644
index 000000000..cff1ae496
--- /dev/null
+++ b/libs/experiments/src/lib/containers/layout/layout.component.ts
@@ -0,0 +1,20 @@
+import { Component, OnInit } from '@angular/core';
+import { Crumb } from '@ngx-starter-kit/breadcrumbs';
+
+@Component({
+ selector: 'ngx-layout',
+ templateUrl: './layout.component.html',
+ styleUrls: ['./layout.component.scss']
+})
+export class LayoutComponent implements OnInit {
+ crumbs: ReadonlyArray = [
+ { name: 'Dashboard', link: '/dashboard' },
+ { name: 'Experiments', link: '/dashboard/experiments' },
+ { name: 'Layout Demo' },
+ ];
+ constructor() { }
+
+ ngOnInit() {
+ }
+
+}
diff --git a/libs/experiments/src/lib/containers/led-demo/led-demo.component.html b/libs/experiments/src/lib/containers/led-demo/led-demo.component.html
index 83d9b6383..e71d20c2f 100644
--- a/libs/experiments/src/lib/containers/led-demo/led-demo.component.html
+++ b/libs/experiments/src/lib/containers/led-demo/led-demo.component.html
@@ -1,4 +1,6 @@
-
+
+
+
diff --git a/libs/experiments/src/lib/containers/led-demo/led-demo.component.scss b/libs/experiments/src/lib/containers/led-demo/led-demo.component.scss
index b47455fbb..fd4d740ba 100644
--- a/libs/experiments/src/lib/containers/led-demo/led-demo.component.scss
+++ b/libs/experiments/src/lib/containers/led-demo/led-demo.component.scss
@@ -1,4 +1,10 @@
:host {
+ display: block;
+ padding: 1.5%;
+ position: relative;
+}
+
+.container {
min-height: 100vh;
display: flex;
justify-content: center;
diff --git a/libs/experiments/src/lib/containers/led-demo/led-demo.component.ts b/libs/experiments/src/lib/containers/led-demo/led-demo.component.ts
index 6a10b3692..dbaae6587 100644
--- a/libs/experiments/src/lib/containers/led-demo/led-demo.component.ts
+++ b/libs/experiments/src/lib/containers/led-demo/led-demo.component.ts
@@ -1,4 +1,5 @@
import { Component, OnInit } from '@angular/core';
+import { Crumb } from '@ngx-starter-kit/breadcrumbs';
@Component({
selector: 'ngx-led-demo',
@@ -6,6 +7,11 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./led-demo.component.scss'],
})
export class LedDemoComponent implements OnInit {
+ crumbs: ReadonlyArray
= [
+ { name: 'Dashboard', link: '/dashboard' },
+ { name: 'Experiments', link: '/dashboard/experiments' },
+ { name: 'Led Demo' },
+ ];
constructor() {}
ngOnInit() {}
diff --git a/libs/experiments/src/lib/containers/sticky-table/sticky-table.component.html b/libs/experiments/src/lib/containers/sticky-table/sticky-table.component.html
index aa007efd4..6e1cae68c 100644
--- a/libs/experiments/src/lib/containers/sticky-table/sticky-table.component.html
+++ b/libs/experiments/src/lib/containers/sticky-table/sticky-table.component.html
@@ -1,3 +1,5 @@
+
+
diff --git a/libs/experiments/src/lib/containers/sticky-table/sticky-table.component.ts b/libs/experiments/src/lib/containers/sticky-table/sticky-table.component.ts
index c47a020e3..7ee25c4bc 100644
--- a/libs/experiments/src/lib/containers/sticky-table/sticky-table.component.ts
+++ b/libs/experiments/src/lib/containers/sticky-table/sticky-table.component.ts
@@ -1,5 +1,6 @@
import { AfterViewInit, Component, ViewChild } from '@angular/core';
import { MatPaginator, MatTableDataSource } from '@angular/material';
+import { Crumb } from '@ngx-starter-kit/breadcrumbs';
/* tslint:disable:max-line-length */
const ELEMENT_DATA: Element[] = [
@@ -266,6 +267,12 @@ const ELEMENT_DATA: Element[] = [
styleUrls: ['./sticky-table.component.scss'],
})
export class StickyTableComponent implements AfterViewInit {
+ crumbs: ReadonlyArray = [
+ { name: 'Dashboard', link: '/dashboard' },
+ { name: 'Experiments', link: '/dashboard/experiments' },
+ { name: 'Sticky Table' },
+ ];
+
displayedColumns = [
'position',
'name',
diff --git a/libs/experiments/src/lib/containers/virtual-scroll/virtual-scroll.component.html b/libs/experiments/src/lib/containers/virtual-scroll/virtual-scroll.component.html
index 278ef0746..f9c60f8f6 100644
--- a/libs/experiments/src/lib/containers/virtual-scroll/virtual-scroll.component.html
+++ b/libs/experiments/src/lib/containers/virtual-scroll/virtual-scroll.component.html
@@ -1,4 +1,5 @@
-
+
+
@@ -8,4 +9,3 @@
{{state.capital}}
-
diff --git a/libs/experiments/src/lib/containers/virtual-scroll/virtual-scroll.component.ts b/libs/experiments/src/lib/containers/virtual-scroll/virtual-scroll.component.ts
index 7967605c0..fc18c3eca 100644
--- a/libs/experiments/src/lib/containers/virtual-scroll/virtual-scroll.component.ts
+++ b/libs/experiments/src/lib/containers/virtual-scroll/virtual-scroll.component.ts
@@ -1,5 +1,6 @@
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
+import { Crumb } from '@ngx-starter-kit/breadcrumbs';
interface State {
name: string;
@@ -9,10 +10,14 @@ interface State {
@Component({
selector: 'ngx-virtual-scroll',
templateUrl: './virtual-scroll.component.html',
- styleUrls: ['./virtual-scroll.component.scss'],
- encapsulation: ViewEncapsulation.None,
+ styleUrls: ['./virtual-scroll.component.scss']
})
export class VirtualScrollComponent implements OnInit {
+ crumbs: ReadonlyArray = [
+ { name: 'Dashboard', link: '/dashboard' },
+ { name: 'Experiments', link: '/dashboard/experiments' },
+ { name: 'Virtual Scroll' },
+ ];
observableData = new BehaviorSubject([]);
states = [
{ name: 'Alabama', capital: 'Montgomery' },
diff --git a/libs/experiments/src/lib/experiments.module.ts b/libs/experiments/src/lib/experiments.module.ts
index f89c36aa7..a7b91692a 100644
--- a/libs/experiments/src/lib/experiments.module.ts
+++ b/libs/experiments/src/lib/experiments.module.ts
@@ -25,6 +25,8 @@ import { ImageCompComponent } from './containers/image-comp/image-comp.component
import * as FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';
import * as FilepondPluginFileValidateSize from 'filepond-plugin-file-validate-size';
import * as FilepondPluginImagePreview from 'filepond-plugin-image-preview';
+import { LayoutComponent } from './containers/layout/layout.component';
+import { CardComponent } from './components/card/card.component';
registerPlugin(FilePondPluginFileValidateType, FilepondPluginFileValidateSize, FilepondPluginImagePreview);
@@ -87,6 +89,11 @@ registerPlugin(FilePondPluginFileValidateType, FilepondPluginFileValidateSize, F
component: ImageCompComponent,
data: { animation: 'imagecomp' },
},
+ {
+ path: 'layout',
+ component: LayoutComponent,
+ data: { animation: 'layout' },
+ },
]),
],
declarations: [
@@ -100,6 +107,8 @@ registerPlugin(FilePondPluginFileValidateType, FilepondPluginFileValidateSize, F
KnobDemoComponent,
LedDemoComponent,
ImageCompComponent,
+ LayoutComponent,
+ CardComponent,
],
})
export class ExperimentsModule {}
diff --git a/package-lock.json b/package-lock.json
index babc7fb22..84fca3a54 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -205,18 +205,18 @@
}
},
"@angular/cdk": {
- "version": "7.0.0-rc.0",
- "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-7.0.0-rc.0.tgz",
- "integrity": "sha512-lx87ZeP4iF9n+pf+VO1MP1TqxKLDsnICfI803S1CX/hBT2F6zKwcRSp0AtkpjplqxtKOnjuNw8+67O5vk6q2BA==",
+ "version": "7.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-7.0.0-rc.1.tgz",
+ "integrity": "sha512-JI8j+vxRrBpqIkvUW9TvR9MdlxAodVV0FIreS7boZJaGQa6XuBYfmM9JRhKEZgTg/si8aArxQ4eYh5tdGsUjkA==",
"requires": {
"parse5": "^5.0.0",
"tslib": "^1.7.1"
}
},
"@angular/cdk-experimental": {
- "version": "7.0.0-rc.0",
- "resolved": "https://registry.npmjs.org/@angular/cdk-experimental/-/cdk-experimental-7.0.0-rc.0.tgz",
- "integrity": "sha512-ZKEAOLiNKvPeG9OC6YI2WjDNyCnQ1saIKYb7u9yHmvur7m06Yj8jF+DjmqJEDXEe5LUZSEfZvtpVga9G0lPbyQ==",
+ "version": "7.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/@angular/cdk-experimental/-/cdk-experimental-7.0.0-rc.1.tgz",
+ "integrity": "sha512-bCoJ1bLsor1S3ScTHMM6jWwpSt2KHQC99/o92pai+OQKQIAjxIexFMYrdYektaiICoEYz45z5kbRjx2uaPkh7w==",
"requires": {
"tslib": "^1.7.1"
}
@@ -492,18 +492,18 @@
"dev": true
},
"@angular/material": {
- "version": "7.0.0-rc.0",
- "resolved": "https://registry.npmjs.org/@angular/material/-/material-7.0.0-rc.0.tgz",
- "integrity": "sha512-E6YBKUEefYsBxWmJZlBtibTBvNTyVNL1LcZ6IsLrNv6Ye3IHdiMFTrNCImTW03eeVPvGYoEFLv3vRRwtETb6wA==",
+ "version": "7.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/@angular/material/-/material-7.0.0-rc.1.tgz",
+ "integrity": "sha512-4LC3y5ZorNjdF1lEkVN/3zwOEnBwjfWLCY92tA06Kdvs1yENZdu0fGTRwcu9Hz4y+t84sL/KEKC9VjKN3Z7PSg==",
"requires": {
"parse5": "^5.0.0",
"tslib": "^1.7.1"
}
},
"@angular/material-moment-adapter": {
- "version": "7.0.0-rc.0",
- "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-7.0.0-rc.0.tgz",
- "integrity": "sha512-XMt8Pixqkh70BHs2lJzV8Tv94yaP0tX+esW7ZQ6nXgNx3IEy+1ucckvaYVezT8DHyRn5fXleE2QsMa0brwfIDg==",
+ "version": "7.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-7.0.0-rc.1.tgz",
+ "integrity": "sha512-JYXtxlRT3BL2er3o+v+nHMfTpjPqDI4r10RyGa50LkobO6/PG04eo8NsLrDftn3EpI/jIwT8b4gXurtCqgqlZg==",
"requires": {
"tslib": "^1.7.1"
}
@@ -1074,40 +1074,40 @@
}
},
"@fortawesome/angular-fontawesome": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.2.0.tgz",
- "integrity": "sha512-iBaH3ulJh+WjaNHqDxoKR6D4udgY+C7FChVSFOv0u7rjdT8wd0ap5YS1QHA82K0dfkUAvlEA4l5wtDtUpG679A==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.2.1.tgz",
+ "integrity": "sha512-B77fIEjq9bgHGncx5sfFuANh6qow6+MLHbU6C7lMIdeLXykkWTWOiPk+CqlmPOYXIpUH1lNaVykgTSqAk65pIw==",
"requires": {
"tslib": "^1.9.0"
}
},
"@fortawesome/fontawesome-common-types": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.4.tgz",
- "integrity": "sha512-0qbIVm+MzkxMwKDx8V0C7w/6Nk+ZfBseOn2R1YK0f2DQP5pBcOQbu9NmaVaLzbJK6VJb1TuyTf0ZF97rc6iWJQ=="
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.5.tgz",
+ "integrity": "sha512-hkKASkxINPqAyhYDF9QVtDK02hcleUzGxXnGmFkF/fIJgHaGaI4lVV07OfLsC6KIlgXQfIAAf3PNR2C74HN6xg=="
},
"@fortawesome/fontawesome-svg-core": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.4.tgz",
- "integrity": "sha512-oGtnwcdhJomoDxbJcy6S0JxK6ItDhJLNOujm+qILPqajJ2a0P/YRomzBbixFjAPquCoyPUlA9g9ejA22P7TKNA==",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.5.tgz",
+ "integrity": "sha512-5q/3JyLg4sxEfk3VxBlBO7Rvl7rLvcEbKrWIGN0Y9xnjkPLIqdP9fgnetjCi3rNzhQjSzTyOgVG0M0I0KabXHw==",
"requires": {
- "@fortawesome/fontawesome-common-types": "^0.2.4"
+ "@fortawesome/fontawesome-common-types": "^0.2.5"
}
},
"@fortawesome/free-brands-svg-icons": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.3.1.tgz",
- "integrity": "sha512-CmvAgNVvfBvNFiPLFugmafNzU6t9auy1kGDv+U6Q81XD/QS7FsnJk8pnPftFnaoXJOlpchVNxz31tNjorM3LOQ==",
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.4.0.tgz",
+ "integrity": "sha512-X4+m/+Akd4Kt4jAD2tK9WNcm1T5EOnHB6HscX0dJpj6YJJfrGXXBFN5RPxM+9k5qOrWkT3X2eS0PGDK/M4BPKw==",
"requires": {
- "@fortawesome/fontawesome-common-types": "^0.2.4"
+ "@fortawesome/fontawesome-common-types": "^0.2.5"
}
},
"@fortawesome/free-solid-svg-icons": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.3.1.tgz",
- "integrity": "sha512-NkiLBFoiHtJ89cPJdM+W6cLvTVKkLh3j9t3MxkXyip0ncdD3lhCunSuzvFcrTHWeETEyoClGd8ZIWrr3HFZ3BA==",
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.4.0.tgz",
+ "integrity": "sha512-+9k7KO8wJbUIa88U2s712r5WAxZuFNb2RTE9AASMMb5VYAWsVGfhLAOkDAkI92RDLjN3Y2NK+2vt8A5uNxCuYQ==",
"requires": {
- "@fortawesome/fontawesome-common-types": "^0.2.4"
+ "@fortawesome/fontawesome-common-types": "^0.2.5"
}
},
"@marionebl/sander": {
@@ -2605,9 +2605,9 @@
}
},
"@types/jest": {
- "version": "23.3.3",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.3.3.tgz",
- "integrity": "sha512-G6EBrbjWDfmIpYu8UcRBOhwtDiYaLj5N5jUR5rx0YvbKxRBhXPZVLUmtfShewSUNKiQwpHavpML69a2WMbIlEQ==",
+ "version": "23.3.4",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.3.4.tgz",
+ "integrity": "sha512-46jSw0QMerCRkhJZbOwPA0Eb9T1p74HtECsfa0GXdgjkenSGhgvK96w+e2PEPu4GF0/brUK5WQKq/rUQQFyAxA==",
"dev": true
},
"@types/json5": {
@@ -2637,9 +2637,9 @@
"integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA=="
},
"@types/node": {
- "version": "10.11.4",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.11.4.tgz",
- "integrity": "sha512-ojnbBiKkZFYRfQpmtnnWTMw+rzGp/JiystjluW9jgN3VzRwilXddJ6aGQ9V/7iuDG06SBgn7ozW9k3zcAnYjYQ=="
+ "version": "10.11.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.11.5.tgz",
+ "integrity": "sha512-3j1EFLfrjYRHRFjBb+RIXXwr1YGzcfpQVMP39thZa6tMY+JjVgQddPF+hsdV800JqbuLwpwAWclDpbGSAw44vQ=="
},
"@types/nodemailer": {
"version": "4.6.5",
@@ -7528,9 +7528,9 @@
}
},
"dotenv": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.0.0.tgz",
- "integrity": "sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg=="
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.1.0.tgz",
+ "integrity": "sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw=="
},
"duplexer": {
"version": "0.1.1",
@@ -8993,8 +8993,7 @@
"formidable": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
- "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==",
- "dev": true
+ "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg=="
},
"forwarded": {
"version": "0.1.2",
diff --git a/package.json b/package.json
index 1a86bf7e2..a34586b6d 100644
--- a/package.json
+++ b/package.json
@@ -111,24 +111,24 @@
"private": true,
"dependencies": {
"@angular/animations": "^6.1.9",
- "@angular/cdk": "^7.0.0-rc.0",
- "@angular/cdk-experimental": "^7.0.0-rc.0",
+ "@angular/cdk": "^7.0.0-rc.1",
+ "@angular/cdk-experimental": "^7.0.0-rc.1",
"@angular/common": "^6.1.9",
"@angular/compiler": "^6.1.9",
"@angular/core": "^6.1.9",
"@angular/flex-layout": "^6.0.0-beta.18",
"@angular/forms": "^6.1.9",
- "@angular/material": "^7.0.0-rc.0",
- "@angular/material-moment-adapter": "^7.0.0-rc.0",
+ "@angular/material": "^7.0.0-rc.1",
+ "@angular/material-moment-adapter": "^7.0.0-rc.1",
"@angular/platform-browser": "^6.1.9",
"@angular/platform-browser-dynamic": "^6.1.9",
"@angular/pwa": "^0.8.4",
"@angular/router": "^6.1.9",
"@angular/service-worker": "^6.1.9",
- "@fortawesome/angular-fontawesome": "^0.2.0",
- "@fortawesome/fontawesome-svg-core": "^1.2.4",
- "@fortawesome/free-brands-svg-icons": "^5.3.1",
- "@fortawesome/free-solid-svg-icons": "^5.3.1",
+ "@fortawesome/angular-fontawesome": "^0.2.1",
+ "@fortawesome/fontawesome-svg-core": "^1.2.5",
+ "@fortawesome/free-brands-svg-icons": "^5.4.0",
+ "@fortawesome/free-solid-svg-icons": "^5.4.0",
"@nestjs/common": "^5.3.11",
"@nestjs/core": "^5.3.11",
"@nestjs/elasticsearch": "^0.1.2",
@@ -157,12 +157,13 @@
"core-js": "^2.5.7",
"d3": "^4.13.0",
"d3-selection-multi": "^1.0.1",
- "dotenv": "^6.0.0",
+ "dotenv": "^6.1.0",
"filepond-plugin-file-encode": "^2.0.0",
"filepond-plugin-file-validate-size": "^1.0.4",
"filepond-plugin-file-validate-type": "^1.1.0",
"filepond-plugin-image-crop": "^2.0.0",
"filepond-plugin-image-preview": "^3.0.0",
+ "formidable": "^1.2.1",
"hammerjs": "^2.0.8",
"helmet": "^3.13.0",
"nest-router": "^1.0.7",
@@ -205,8 +206,8 @@
"@types/dotenv": "^4.0.3",
"@types/hammerjs": "^2.0.36",
"@types/helmet": "^0.0.42",
- "@types/jest": "^23.3.3",
- "@types/node": "^10.11.4",
+ "@types/jest": "^23.3.4",
+ "@types/node": "^10.11.5",
"@types/nodemailer": "^4.6.5",
"@types/passport": "0.4.6",
"@types/passport-jwt": "^3.0.1",
diff --git a/stories/faq.md b/stories/faq.md
index 13d4a38f2..9a97f8cb3 100644
--- a/stories/faq.md
+++ b/stories/faq.md
@@ -34,6 +34,9 @@ type `ng.profiler.timeChangeDetection();` in console.
> Refer [here](https://github.com/angular/flex-layout/wiki/Responsive-API)
> Refer [here](https://medium.com/@nima_ap/creating-a-responsive-dashboard-in-angular-5-from-scratch-147f6a493d9e)
+* How to use flex grid?
+> Refer [Flexbox and Grid Layout for Angular Component](https://blog.angularindepth.com/angular-flex-layout-flexbox-and-grid-layout-for-angular-component-6e7c24457b63)
+
* How implement Progressive Web Applications (PWA) with Service Workers?
> Refer [here](https://medium.com/codingthesmartway-com-blog/angular-5-service-worker-b722e571e306)
diff --git a/tsconfig.json b/tsconfig.json
index b6d36a6f6..210ba01e4 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -27,6 +27,9 @@
"@api-env/*": [
"apps/api/src/environments/*"
],
+ "@ngx-starter-kit/models": [
+ "libs/models/src/index.ts"
+ ],
"@ngx-starter-kit/core": [
"libs/core/src/index.ts"
],