mirror of
https://github.com/richard-loafle/fuse-angular.git
synced 2025-12-22 12:57:06 +00:00
Compare commits
263 Commits
v1.0.2
...
v1.3.4-ske
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d7c67ca5a8 | ||
|
|
cf7ab3861d | ||
|
|
ab4ed81cfc | ||
|
|
a92cb8b7b6 | ||
|
|
bb3d6d4839 | ||
|
|
9c06622efb | ||
|
|
2022b7307e | ||
|
|
46de82a7fa | ||
|
|
8b590408b0 | ||
|
|
18b2bdf5ab | ||
|
|
ba49621e79 | ||
|
|
bc2b2c75fa | ||
|
|
02653cd0f4 | ||
|
|
416f1997a9 | ||
|
|
ff14879a94 | ||
|
|
49c49c46d1 | ||
|
|
915e9203ef | ||
|
|
fcfbedfd74 | ||
|
|
35f3512e89 | ||
|
|
2288905cbd | ||
|
|
5a40116c7b | ||
|
|
b7c10a515c | ||
|
|
65e637eeb9 | ||
|
|
b56088948c | ||
|
|
0c5066e7d0 | ||
|
|
751497556a | ||
|
|
33d295f42c | ||
|
|
91e277ce3f | ||
|
|
5f2372cc08 | ||
|
|
6f315aa38e | ||
|
|
0653b5f36b | ||
|
|
f13120bc01 | ||
|
|
b7a3d35eb8 | ||
|
|
f29f11232f | ||
|
|
a6c56518bc | ||
|
|
ecae48f3d0 | ||
|
|
c74751e0f4 | ||
|
|
2b755fa669 | ||
|
|
16ffb09350 | ||
|
|
ca0f46b414 | ||
|
|
643a129a46 | ||
|
|
528fa31df6 | ||
|
|
abfb2a6706 | ||
|
|
b1ab11393e | ||
|
|
de16f4f866 | ||
|
|
786883eb10 | ||
|
|
415d7cebfa | ||
|
|
f7d1995f63 | ||
|
|
e477f797d0 | ||
|
|
3741abc063 | ||
|
|
54ccdd7de2 | ||
|
|
fb196c3864 | ||
|
|
5cf44962fc | ||
|
|
06b0c3775a | ||
|
|
26690990f0 | ||
|
|
377092d9ec | ||
|
|
abede386c8 | ||
|
|
242feaa169 | ||
|
|
7c2494a82c | ||
|
|
5c2e717a40 | ||
|
|
6ae0a9760d | ||
|
|
2a10f3e443 | ||
|
|
db7a00440c | ||
|
|
0e1c589399 | ||
|
|
2f419b1af5 | ||
|
|
effd3cefcb | ||
|
|
21fd488a8e | ||
|
|
37a5c69269 | ||
|
|
8b2e6b95b1 | ||
|
|
9f440b1bf2 | ||
|
|
a65f61cce4 | ||
|
|
e86cea1e73 | ||
|
|
0d8fe0be72 | ||
|
|
b81638690e | ||
|
|
2bbc90af64 | ||
|
|
ad21d9fed5 | ||
|
|
4c6ef29e20 | ||
|
|
a74c5108fd | ||
|
|
20ac3abb25 | ||
|
|
19fdbbdbcb | ||
|
|
f634cb06a7 | ||
|
|
7d67a481ff | ||
|
|
8bbabd7437 | ||
|
|
5a9cd36282 | ||
|
|
297bb95a2e | ||
|
|
2511a03b66 | ||
|
|
76358f996e | ||
|
|
142fc982ca | ||
|
|
22d9279e3b | ||
|
|
4659da7390 | ||
|
|
2a5d15694c | ||
|
|
a1bec98d44 | ||
|
|
e8449e340d | ||
|
|
4cb8009c69 | ||
|
|
7f357306eb | ||
|
|
8e6024c3ee | ||
|
|
f4c47daadc | ||
|
|
06679343a4 | ||
|
|
381bc6c0fe | ||
|
|
f35d83567e | ||
|
|
b5a139f81d | ||
|
|
c97fd77c13 | ||
|
|
914477da41 | ||
|
|
410802808e | ||
|
|
62904cdb42 | ||
|
|
d9c36cad82 | ||
|
|
d2bfc152a0 | ||
|
|
f013b2b667 | ||
|
|
9fbcc20623 | ||
|
|
0fd8a75f7d | ||
|
|
99d9552813 | ||
|
|
3bca193bcc | ||
|
|
f73ff363a5 | ||
|
|
1bf689f154 | ||
|
|
3499d89098 | ||
|
|
685cd76da2 | ||
|
|
786180958d | ||
|
|
a2f72c92d5 | ||
|
|
6b368d2e79 | ||
|
|
47c2cc721e | ||
|
|
5574e3f729 | ||
|
|
1934bad3eb | ||
|
|
ee29f20304 | ||
|
|
93c2eab584 | ||
|
|
b0f45980be | ||
|
|
56dbc58d5e | ||
|
|
d7c6b2d617 | ||
|
|
7b10b2ad86 | ||
|
|
3fc510469d | ||
|
|
5d56b3bcd6 | ||
|
|
aaa14eb1e9 | ||
|
|
f43608f93b | ||
|
|
9ecd921722 | ||
|
|
98e2ff0e1e | ||
|
|
b7cb09b087 | ||
|
|
fe8b44b14c | ||
|
|
ca8ed939ae | ||
|
|
4469a2c25a | ||
|
|
80627bdde9 | ||
|
|
6595975f2b | ||
|
|
895291c37c | ||
|
|
dcb8032758 | ||
|
|
ac7e6f75bc | ||
|
|
fb214da5fe | ||
|
|
e20687034f | ||
|
|
bd8b02c82d | ||
|
|
6d594d63db | ||
|
|
6656410696 | ||
|
|
470b851eae | ||
|
|
fbe9cb83a2 | ||
|
|
13a09164ae | ||
|
|
56d9830176 | ||
|
|
be820804f2 | ||
|
|
7615bc1d03 | ||
|
|
3198663430 | ||
|
|
ad432ca31d | ||
|
|
7d26beff3d | ||
|
|
4711a27814 | ||
|
|
8205a4d5b5 | ||
|
|
4f451a74e9 | ||
|
|
8518408254 | ||
|
|
72f968b594 | ||
|
|
688b443ea8 | ||
|
|
cb89da4647 | ||
|
|
cc4a04afcb | ||
|
|
bc239571a1 | ||
|
|
c025563145 | ||
|
|
c06e99dc97 | ||
|
|
c0a1dc7c37 | ||
|
|
55e1d8b2bc | ||
|
|
533f5f3f3f | ||
|
|
f9bda99deb | ||
|
|
4a7b70c874 | ||
|
|
c101c432dc | ||
|
|
04d1b2eff8 | ||
|
|
1d81e37a0f | ||
|
|
83f0ed5ec1 | ||
|
|
f800dc3286 | ||
|
|
e486413872 | ||
|
|
576e167ef1 | ||
|
|
619433f101 | ||
|
|
3e9ae83aae | ||
|
|
9400c3d748 | ||
|
|
5e4940fed9 | ||
|
|
8910e6f5dc | ||
|
|
52c5e6a18b | ||
|
|
3d9ded9a44 | ||
|
|
1be3f0066b | ||
|
|
cf9e9fc209 | ||
|
|
ff0f2933d9 | ||
|
|
21c96c76da | ||
|
|
5e2e2b7d53 | ||
|
|
dcff423943 | ||
|
|
6747610771 | ||
|
|
e6ee5d017e | ||
|
|
cb2b544526 | ||
|
|
5ace09f782 | ||
|
|
678dde8c0e | ||
|
|
236cf1eb06 | ||
|
|
f4efbe07f7 | ||
|
|
671287b55a | ||
|
|
19c85c964b | ||
|
|
e5cf4fdafb | ||
|
|
098dacf2a5 | ||
|
|
2f8539e987 | ||
|
|
f688a58656 | ||
|
|
9cb8c0c96b | ||
|
|
05575d3f82 | ||
|
|
b9198e3717 | ||
|
|
769e67c2f3 | ||
|
|
32960abd7c | ||
|
|
126e32d9e7 | ||
|
|
d6d74cb998 | ||
|
|
6d20c1d62d | ||
|
|
b55bce2de4 | ||
|
|
6f4dc36a3d | ||
|
|
fe7e6d173b | ||
|
|
b377d99c66 | ||
|
|
d4374e6df0 | ||
|
|
c74fad84b6 | ||
|
|
e09ef05e02 | ||
|
|
62467c8ddf | ||
|
|
2c0fc76b8a | ||
|
|
752660f5dc | ||
|
|
024ab15b25 | ||
|
|
01f00121ba | ||
|
|
915ad52863 | ||
|
|
dde2333c8a | ||
|
|
97bfaa9979 | ||
|
|
babf6dc47b | ||
|
|
6ae3e154c3 | ||
|
|
55288bbbd4 | ||
|
|
49b6ff7292 | ||
|
|
903688ab43 | ||
|
|
7297a9b4a4 | ||
|
|
4cbbd3a1d6 | ||
|
|
2f4ce6221e | ||
|
|
44cdadaec9 | ||
|
|
19f822cbab | ||
|
|
1d21a14d0e | ||
|
|
d5b6dea1a2 | ||
|
|
4bf2ba73ad | ||
|
|
31087186f7 | ||
|
|
48a47a0876 | ||
|
|
e0a85a19db | ||
|
|
b21526410a | ||
|
|
ce6797a80b | ||
|
|
7d5693421f | ||
|
|
9106fcd066 | ||
|
|
58bdf07da0 | ||
|
|
6a3972fff8 | ||
|
|
58291058ae | ||
|
|
dca16238eb | ||
|
|
9ae746a3ed | ||
|
|
a7549a1770 | ||
|
|
0bf158f8a5 | ||
|
|
a0da9bd81e | ||
|
|
2b91119d00 | ||
|
|
cd99fbf77a | ||
|
|
ff4899e8d2 | ||
|
|
e818c53f1d | ||
|
|
ca96fffadf | ||
|
|
d7003711ee |
@@ -25,6 +25,7 @@
|
|||||||
"environmentSource": "environments/environment.ts",
|
"environmentSource": "environments/environment.ts",
|
||||||
"environments": {
|
"environments": {
|
||||||
"dev": "environments/environment.ts",
|
"dev": "environments/environment.ts",
|
||||||
|
"hmr": "environments/environment.hmr.ts",
|
||||||
"prod": "environments/environment.prod.ts"
|
"prod": "environments/environment.prod.ts"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -36,13 +37,28 @@
|
|||||||
},
|
},
|
||||||
"lint": [
|
"lint": [
|
||||||
{
|
{
|
||||||
"project": "src/tsconfig.app.json"
|
"project": "src/tsconfig.app.json",
|
||||||
|
"exclude": [
|
||||||
|
"**/node_modules/**",
|
||||||
|
"**/src/app/fuse-fake-db/**/*",
|
||||||
|
"**/src/assets/angular-material-examples/**/*"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"project": "src/tsconfig.spec.json"
|
"project": "src/tsconfig.spec.json",
|
||||||
|
"exclude": [
|
||||||
|
"**/node_modules/**",
|
||||||
|
"**/src/app/fuse-fake-db/**/*",
|
||||||
|
"**/src/assets/angular-material-examples/**/*"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"project": "e2e/tsconfig.e2e.json"
|
"project": "e2e/tsconfig.e2e.json",
|
||||||
|
"exclude": [
|
||||||
|
"**/node_modules/**",
|
||||||
|
"**/src/app/fuse-fake-db/**/*",
|
||||||
|
"**/src/assets/angular-material-examples/**/*"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"test": {
|
"test": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Fuse2
|
# Fuse2
|
||||||
|
|
||||||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.1.3.
|
Material Design Admin Template with Angular 5+ and Angular Material 2
|
||||||
|
|
||||||
## Development server
|
## Development server
|
||||||
|
|
||||||
@@ -22,7 +22,3 @@ Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.
|
|||||||
|
|
||||||
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
|
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
|
||||||
Before running the tests make sure you are serving the app via `ng serve`.
|
Before running the tests make sure you are serving the app via `ng serve`.
|
||||||
|
|
||||||
## Further help
|
|
||||||
|
|
||||||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { Fuse2Page } from './app.po';
|
import { Fuse2Page } from './app.po';
|
||||||
|
|
||||||
describe('fuse2 App', () => {
|
describe('Fuse2 App', () => {
|
||||||
let page: Fuse2Page;
|
let page: Fuse2Page;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
page = new Fuse2Page();
|
page = new Fuse2Page();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should display welcome message', () => {
|
it('should display welcome message', () => {
|
||||||
page.navigateTo();
|
page.navigateTo();
|
||||||
expect(page.getParagraphText()).toEqual('Welcome to app!!');
|
expect(page.getParagraphText()).toEqual('Welcome to app!');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { browser, by, element } from 'protractor';
|
import { browser, by, element } from 'protractor';
|
||||||
|
|
||||||
export class Fuse2Page {
|
export class Fuse2Page {
|
||||||
navigateTo() {
|
navigateTo() {
|
||||||
return browser.get('/');
|
return browser.get('/');
|
||||||
}
|
}
|
||||||
|
|
||||||
getParagraphText() {
|
getParagraphText() {
|
||||||
return element(by.css('app-root h1')).getText();
|
return element(by.css('app-root h1')).getText();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,12 @@
|
|||||||
"extends": "../tsconfig.json",
|
"extends": "../tsconfig.json",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"outDir": "../out-tsc/e2e",
|
"outDir": "../out-tsc/e2e",
|
||||||
|
"baseUrl": "./",
|
||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
"target": "es5",
|
"target": "es5",
|
||||||
"types": [
|
"types": [
|
||||||
"jasmine",
|
"jasmine",
|
||||||
|
"jasminewd2",
|
||||||
"node"
|
"node"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
// Karma configuration file, see link for more information
|
// Karma configuration file, see link for more information
|
||||||
// https://karma-runner.github.io/0.13/config/configuration-file.html
|
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
||||||
|
|
||||||
module.exports = function (config) {
|
module.exports = function (config) {
|
||||||
config.set({
|
config.set({
|
||||||
basePath: '',
|
basePath: '',
|
||||||
frameworks: ['jasmine', '@angular/cli'],
|
frameworks: ['jasmine', '@angular/cli'],
|
||||||
plugins: [
|
plugins: [
|
||||||
require('karma-jasmine'),
|
require('karma-jasmine'),
|
||||||
require('karma-chrome-launcher'),
|
require('karma-chrome-launcher'),
|
||||||
require('karma-jasmine-html-reporter'),
|
require('karma-jasmine-html-reporter'),
|
||||||
require('karma-coverage-istanbul-reporter'),
|
require('karma-coverage-istanbul-reporter'),
|
||||||
require('@angular/cli/plugins/karma')
|
require('@angular/cli/plugins/karma')
|
||||||
],
|
],
|
||||||
client:{
|
client:{
|
||||||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
||||||
},
|
},
|
||||||
coverageIstanbulReporter: {
|
coverageIstanbulReporter: {
|
||||||
reports: [ 'html', 'lcovonly' ],
|
reports: [ 'html', 'lcovonly' ],
|
||||||
fixWebpackSourcePaths: true
|
fixWebpackSourcePaths: true
|
||||||
},
|
},
|
||||||
angularCli: {
|
angularCli: {
|
||||||
environment: 'dev'
|
environment: 'dev'
|
||||||
},
|
},
|
||||||
reporters: ['progress', 'kjhtml'],
|
reporters: ['progress', 'kjhtml'],
|
||||||
port: 9876,
|
port: 9876,
|
||||||
colors: true,
|
colors: true,
|
||||||
logLevel: config.LOG_INFO,
|
logLevel: config.LOG_INFO,
|
||||||
autoWatch: true,
|
autoWatch: true,
|
||||||
browsers: ['Chrome'],
|
browsers: ['Chrome'],
|
||||||
singleRun: false
|
singleRun: false
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
8637
package-lock.json
generated
8637
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
119
package.json
119
package.json
@@ -1,69 +1,84 @@
|
|||||||
{
|
{
|
||||||
"name": "fuse2",
|
"name": "fuse2",
|
||||||
"version": "1.0.2",
|
"version": "1.3.4",
|
||||||
"license": "",
|
"license": "https://themeforest.net/licenses/terms/regular",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"start": "ng serve",
|
"start": "ng serve --open",
|
||||||
"build": "ng build",
|
"start-hmr": "ng serve --hmr -e=hmr -sm=false",
|
||||||
|
"start-hmr-sourcemaps": "ng serve --hmr -e=hmr",
|
||||||
|
"build": "node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build --dev",
|
||||||
|
"build-stats": "node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build --dev --stats-json",
|
||||||
|
"build-prod": "node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build --prod",
|
||||||
|
"build-prod-stats": "node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build --prod --stats-json",
|
||||||
"test": "ng test",
|
"test": "ng test",
|
||||||
"lint": "ng lint",
|
"lint": "ng lint",
|
||||||
"e2e": "ng e2e"
|
"e2e": "ng e2e",
|
||||||
|
"bundle-report": "webpack-bundle-analyzer dist/stats.json"
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "4.3.6",
|
"@agm/core": "1.0.0-beta.2",
|
||||||
"@angular/cdk": "2.0.0-beta.10",
|
"@angular/animations": "5.2.1",
|
||||||
"@angular/common": "4.3.6",
|
"@angular/cdk": "5.1.0",
|
||||||
"@angular/compiler": "4.3.6",
|
"@angular/common": "5.2.1",
|
||||||
"@angular/core": "4.3.6",
|
"@angular/compiler": "5.2.1",
|
||||||
"@angular/flex-layout": "2.0.0-beta.9",
|
"@angular/core": "5.2.1",
|
||||||
"@angular/forms": "4.3.6",
|
"@angular/flex-layout": "2.0.0-beta.12",
|
||||||
"@angular/http": "4.3.6",
|
"@angular/forms": "5.2.1",
|
||||||
"@angular/material": "2.0.0-beta.10",
|
"@angular/http": "5.2.1",
|
||||||
"@angular/platform-browser": "4.3.6",
|
"@angular/material": "5.1.0",
|
||||||
"@angular/platform-browser-dynamic": "4.3.6",
|
"@angular/material-moment-adapter": "5.1.0",
|
||||||
"@angular/router": "4.3.6",
|
"@angular/platform-browser": "5.2.1",
|
||||||
"@swimlane/ngx-charts": "6.0.2",
|
"@angular/platform-browser-dynamic": "5.2.1",
|
||||||
"@swimlane/ngx-datatable": "9.3.1",
|
"@angular/router": "5.2.1",
|
||||||
"@swimlane/ngx-dnd": "3.0.0",
|
"@ngrx/effects": "4.1.1",
|
||||||
"angular-calendar": "0.19.0",
|
"@ngrx/router-store": "4.1.1",
|
||||||
"angular-in-memory-web-api": "0.3.2",
|
"@ngrx/store": "4.1.1",
|
||||||
|
"@ngrx/store-devtools": "4.1.1",
|
||||||
|
"@ngx-translate/core": "9.1.1",
|
||||||
|
"@swimlane/ngx-charts": "7.0.1",
|
||||||
|
"@swimlane/ngx-datatable": "11.1.7",
|
||||||
|
"@swimlane/ngx-dnd": "3.1.0",
|
||||||
|
"@types/prismjs": "1.9.0",
|
||||||
|
"angular-calendar": "0.23.2",
|
||||||
|
"angular-in-memory-web-api": "0.5.2",
|
||||||
"classlist.js": "1.1.20150312",
|
"classlist.js": "1.1.20150312",
|
||||||
"core-js": "2.5.0",
|
"core-js": "2.5.3",
|
||||||
"d3": "4.10.0",
|
"d3": "4.12.2",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
"highlight.js": "9.12.0",
|
|
||||||
"intl": "1.2.5",
|
"intl": "1.2.5",
|
||||||
"moment": "2.18.1",
|
"moment": "2.20.1",
|
||||||
"ngx-color-picker": "4.3.1",
|
"ngrx-store-freeze": "0.2.0",
|
||||||
"ngx-cookie-service": "1.0.7",
|
"ngx-color-picker": "5.3.0",
|
||||||
"ngx-perfect-scrollbar": "4.5.6",
|
"ngx-cookie-service": "1.0.10",
|
||||||
"rxjs": "5.4.3",
|
"perfect-scrollbar": "1.3.0",
|
||||||
|
"prismjs": "1.10.0",
|
||||||
|
"rxjs": "5.5.6",
|
||||||
"web-animations-js": "2.3.1",
|
"web-animations-js": "2.3.1",
|
||||||
"zone.js": "0.8.17"
|
"zone.js": "0.8.20"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular/cli": "^1.3.2",
|
"@angular/cli": "1.6.4",
|
||||||
"@angular/compiler-cli": "4.3.6",
|
"@angular/compiler-cli": "5.2.1",
|
||||||
"@angular/language-service": "4.3.6",
|
"@angular/language-service": "5.2.1",
|
||||||
"@ngtools/webpack": "^1.6.2",
|
"@angularclass/hmr": "2.1.3",
|
||||||
"@types/jasmine": "^2.5.54",
|
"@types/jasmine": "2.8.4",
|
||||||
"@types/jasminewd2": "^2.0.2",
|
"@types/jasminewd2": "2.0.3",
|
||||||
"@types/node": "^6.0.88",
|
"@types/node": "6.0.96",
|
||||||
"codelyzer": "~3.0.1",
|
"codelyzer": "4.0.2",
|
||||||
"jasmine-core": "~2.6.2",
|
"jasmine-core": "2.8.0",
|
||||||
"jasmine-spec-reporter": "~4.1.0",
|
"jasmine-spec-reporter": "4.2.1",
|
||||||
"karma": "~1.7.0",
|
"karma": "2.0.0",
|
||||||
"karma-chrome-launcher": "~2.1.1",
|
"karma-chrome-launcher": "2.2.0",
|
||||||
"karma-cli": "~1.0.1",
|
"karma-cli": "1.0.1",
|
||||||
"karma-coverage-istanbul-reporter": "^1.2.1",
|
"karma-coverage-istanbul-reporter": "1.3.3",
|
||||||
"karma-jasmine": "~1.1.0",
|
"karma-jasmine": "1.1.1",
|
||||||
"karma-jasmine-html-reporter": "^0.2.2",
|
"karma-jasmine-html-reporter": "0.2.2",
|
||||||
"node-sass": "^4.5.3",
|
"protractor": "5.1.2",
|
||||||
"protractor": "~5.1.2",
|
"ts-node": "3.2.2",
|
||||||
"ts-node": "~3.0.4",
|
"tslint": "5.9.1",
|
||||||
"tslint": "~5.3.2",
|
"typescript": "2.5.3",
|
||||||
"typescript": "~2.3.3"
|
"webpack-bundle-analyzer": "2.9.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,25 +4,25 @@
|
|||||||
const { SpecReporter } = require('jasmine-spec-reporter');
|
const { SpecReporter } = require('jasmine-spec-reporter');
|
||||||
|
|
||||||
exports.config = {
|
exports.config = {
|
||||||
allScriptsTimeout: 11000,
|
allScriptsTimeout: 11000,
|
||||||
specs: [
|
specs: [
|
||||||
'./e2e/**/*.e2e-spec.ts'
|
'./e2e/**/*.e2e-spec.ts'
|
||||||
],
|
],
|
||||||
capabilities: {
|
capabilities: {
|
||||||
'browserName': 'chrome'
|
'browserName': 'chrome'
|
||||||
},
|
},
|
||||||
directConnect: true,
|
directConnect: true,
|
||||||
baseUrl: 'http://localhost:4200/',
|
baseUrl: 'http://localhost:4200/',
|
||||||
framework: 'jasmine',
|
framework: 'jasmine',
|
||||||
jasmineNodeOpts: {
|
jasmineNodeOpts: {
|
||||||
showColors: true,
|
showColors: true,
|
||||||
defaultTimeoutInterval: 30000,
|
defaultTimeoutInterval: 30000,
|
||||||
print: function() {}
|
print: function() {}
|
||||||
},
|
},
|
||||||
onPrepare() {
|
onPrepare() {
|
||||||
require('ts-node').register({
|
require('ts-node').register({
|
||||||
project: 'e2e/tsconfig.e2e.json'
|
project: 'e2e/tsconfig.e2e.json'
|
||||||
});
|
});
|
||||||
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
|
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { FuseSplashScreenService } from './core/services/splash-screen.service';
|
import { FuseSplashScreenService } from './core/services/splash-screen.service';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { FuseTranslationLoaderService } from './core/services/translation-loader.service';
|
||||||
|
|
||||||
|
import { FuseNavigationService } from './core/components/navigation/navigation.service';
|
||||||
|
import { FuseNavigationModel } from './navigation/navigation.model';
|
||||||
|
import { locale as navigationEnglish } from './navigation/i18n/en';
|
||||||
|
import { locale as navigationTurkish } from './navigation/i18n/tr';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector : 'fuse-root',
|
selector : 'fuse-root',
|
||||||
@@ -8,7 +15,26 @@ import { FuseSplashScreenService } from './core/services/splash-screen.service';
|
|||||||
})
|
})
|
||||||
export class AppComponent
|
export class AppComponent
|
||||||
{
|
{
|
||||||
constructor(private fuseSplashScreen: FuseSplashScreenService)
|
constructor(
|
||||||
|
private fuseNavigationService: FuseNavigationService,
|
||||||
|
private fuseSplashScreen: FuseSplashScreenService,
|
||||||
|
private translate: TranslateService,
|
||||||
|
private translationLoader: FuseTranslationLoaderService
|
||||||
|
)
|
||||||
{
|
{
|
||||||
|
// Add languages
|
||||||
|
this.translate.addLangs(['en', 'tr']);
|
||||||
|
|
||||||
|
// Set the default language
|
||||||
|
this.translate.setDefaultLang('en');
|
||||||
|
|
||||||
|
// Use a language
|
||||||
|
this.translate.use('en');
|
||||||
|
|
||||||
|
// Set the navigation model
|
||||||
|
this.fuseNavigationService.setNavigationModel(new FuseNavigationModel());
|
||||||
|
|
||||||
|
// Set the navigation translations
|
||||||
|
this.translationLoader.loadTranslations(navigationEnglish, navigationTurkish);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,53 +1,22 @@
|
|||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { BrowserModule } from '@angular/platform-browser';
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
import { HttpModule } from '@angular/http';
|
|
||||||
import { HttpClientModule } from '@angular/common/http';
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { RouterModule, Routes } from '@angular/router';
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
import { InMemoryWebApiModule } from 'angular-in-memory-web-api';
|
|
||||||
import 'hammerjs';
|
import 'hammerjs';
|
||||||
import { SharedModule } from './core/modules/shared.module';
|
import { SharedModule } from './core/modules/shared.module';
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import { ProjectModule } from './main/content/apps/dashboards/project/project.module';
|
|
||||||
import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';
|
|
||||||
import { FuseFakeDbService } from './fuse-fake-db/fuse-fake-db.service';
|
|
||||||
import { FuseMainModule } from './main/main.module';
|
import { FuseMainModule } from './main/main.module';
|
||||||
import { PagesModule } from './main/content/pages/pages.module';
|
|
||||||
import { UIModule } from './main/content/ui/ui.module';
|
|
||||||
import { ComponentsModule } from './main/content/components/components.module';
|
|
||||||
import { FuseSplashScreenService } from './core/services/splash-screen.service';
|
import { FuseSplashScreenService } from './core/services/splash-screen.service';
|
||||||
import { FuseConfigService } from './core/services/config.service';
|
import { FuseConfigService } from './core/services/config.service';
|
||||||
import { ComponentsThirdPartyModule } from './main/content/components-third-party/components-third-party.module';
|
import { FuseNavigationService } from './core/components/navigation/navigation.service';
|
||||||
import { ServicesModule } from './main/content/services/services.module';
|
import { FuseSampleModule } from './main/content/sample/sample.module';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
|
||||||
const appRoutes: Routes = [
|
const appRoutes: Routes = [
|
||||||
{
|
|
||||||
path : 'apps/mail',
|
|
||||||
loadChildren: './main/content/apps/mail/mail.module#FuseMailModule'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path : 'apps/chat',
|
|
||||||
loadChildren: './main/content/apps/chat/chat.module#FuseChatModule'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path : 'apps/calendar',
|
|
||||||
loadChildren: './main/content/apps/calendar/calendar.module#FuseCalendarModule'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path : 'apps/todo',
|
|
||||||
loadChildren: './main/content/apps/todo/todo.module#FuseTodoModule'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path : 'apps/file-manager',
|
|
||||||
loadChildren: './main/content/apps/file-manager/file-manager.module#FuseFileManagerModule'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path : 'apps/contacts',
|
|
||||||
loadChildren: './main/content/apps/contacts/contacts.module#FuseContactsModule'
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path : '**',
|
path : '**',
|
||||||
redirectTo: 'apps/dashboards/project'
|
redirectTo: 'sample'
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -57,29 +26,18 @@ const appRoutes: Routes = [
|
|||||||
],
|
],
|
||||||
imports : [
|
imports : [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
HttpModule,
|
|
||||||
HttpClientModule,
|
HttpClientModule,
|
||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
RouterModule.forRoot(appRoutes),
|
RouterModule.forRoot(appRoutes),
|
||||||
SharedModule,
|
SharedModule,
|
||||||
|
TranslateModule.forRoot(),
|
||||||
InMemoryWebApiModule.forRoot(FuseFakeDbService, {delay: 0}),
|
|
||||||
|
|
||||||
PerfectScrollbarModule.forRoot(),
|
|
||||||
|
|
||||||
FuseMainModule,
|
FuseMainModule,
|
||||||
|
FuseSampleModule
|
||||||
ProjectModule,
|
|
||||||
|
|
||||||
PagesModule,
|
|
||||||
UIModule,
|
|
||||||
ServicesModule,
|
|
||||||
ComponentsModule,
|
|
||||||
ComponentsThirdPartyModule
|
|
||||||
],
|
],
|
||||||
providers : [
|
providers : [
|
||||||
FuseSplashScreenService,
|
FuseSplashScreenService,
|
||||||
FuseConfigService
|
FuseConfigService,
|
||||||
|
FuseNavigationService
|
||||||
],
|
],
|
||||||
bootstrap : [
|
bootstrap : [
|
||||||
AppComponent
|
AppComponent
|
||||||
|
|||||||
@@ -1,10 +1,69 @@
|
|||||||
import { sequence, trigger, stagger, animate, style, group, query, transition, keyframes, animateChild, state } from '@angular/animations';
|
import { sequence, trigger, animate, style, group, query, transition, animateChild, state, animation, useAnimation, stagger } from '@angular/animations';
|
||||||
|
|
||||||
// const query = (s, a, o = {optional: true}) => q(s, a, o);
|
const customAnimation = animation([
|
||||||
|
style({
|
||||||
|
opacity : '{{opacity}}',
|
||||||
|
transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'
|
||||||
|
}),
|
||||||
|
animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))
|
||||||
|
], {
|
||||||
|
params: {
|
||||||
|
duration: '200ms',
|
||||||
|
delay : '0ms',
|
||||||
|
opacity : '0',
|
||||||
|
scale : '1',
|
||||||
|
x : '0',
|
||||||
|
y : '0',
|
||||||
|
z : '0'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
export class Animations
|
export const fuseAnimations = [
|
||||||
{
|
|
||||||
public static slideInOut = trigger('slideInOut', [
|
trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),
|
||||||
|
|
||||||
|
trigger('animateStagger', [
|
||||||
|
state('50', style('*')),
|
||||||
|
state('100', style('*')),
|
||||||
|
state('200', style('*')),
|
||||||
|
|
||||||
|
transition('void => 50',
|
||||||
|
query('@*',
|
||||||
|
[
|
||||||
|
stagger('50ms', [
|
||||||
|
animateChild()
|
||||||
|
])
|
||||||
|
], {optional: true})),
|
||||||
|
transition('void => 100',
|
||||||
|
query('@*',
|
||||||
|
[
|
||||||
|
stagger('100ms', [
|
||||||
|
animateChild()
|
||||||
|
])
|
||||||
|
], {optional: true})),
|
||||||
|
transition('void => 200',
|
||||||
|
query('@*',
|
||||||
|
[
|
||||||
|
stagger('200ms', [
|
||||||
|
animateChild()
|
||||||
|
])
|
||||||
|
], {optional: true}))
|
||||||
|
]),
|
||||||
|
|
||||||
|
trigger('fadeInOut', [
|
||||||
|
state('0', style({
|
||||||
|
display: 'none',
|
||||||
|
opacity: 0
|
||||||
|
})),
|
||||||
|
state('1', style({
|
||||||
|
display: 'block',
|
||||||
|
opacity: 1
|
||||||
|
})),
|
||||||
|
transition('1 => 0', animate('300ms ease-out')),
|
||||||
|
transition('0 => 1', animate('300ms ease-in'))
|
||||||
|
]),
|
||||||
|
|
||||||
|
trigger('slideInOut', [
|
||||||
state('0', style({
|
state('0', style({
|
||||||
height : '0px',
|
height : '0px',
|
||||||
display: 'none'
|
display: 'none'
|
||||||
@@ -15,9 +74,56 @@ export class Animations
|
|||||||
})),
|
})),
|
||||||
transition('1 => 0', animate('300ms ease-out')),
|
transition('1 => 0', animate('300ms ease-out')),
|
||||||
transition('0 => 1', animate('300ms ease-in'))
|
transition('0 => 1', animate('300ms ease-in'))
|
||||||
]);
|
]),
|
||||||
|
|
||||||
public static slideInLeft = trigger('slideInLeft', [
|
trigger('slideIn', [
|
||||||
|
transition('void => left', [
|
||||||
|
style({
|
||||||
|
transform: 'translateX(100%)'
|
||||||
|
}),
|
||||||
|
animate('300ms ease-in',
|
||||||
|
style({
|
||||||
|
transform: 'translateX(0)'
|
||||||
|
})
|
||||||
|
)
|
||||||
|
]
|
||||||
|
),
|
||||||
|
transition('left => void', [
|
||||||
|
style({
|
||||||
|
transform: 'translateX(0)'
|
||||||
|
}),
|
||||||
|
animate('300ms ease-in',
|
||||||
|
style({
|
||||||
|
transform: 'translateX(-100%)'
|
||||||
|
})
|
||||||
|
)
|
||||||
|
]
|
||||||
|
),
|
||||||
|
transition('void => right', [
|
||||||
|
style({
|
||||||
|
transform: 'translateX(-100%)'
|
||||||
|
}),
|
||||||
|
animate('300ms ease-in',
|
||||||
|
style({
|
||||||
|
transform: 'translateX(0)'
|
||||||
|
})
|
||||||
|
)
|
||||||
|
]
|
||||||
|
),
|
||||||
|
transition('right => void', [
|
||||||
|
style({
|
||||||
|
transform: 'translateX(0)'
|
||||||
|
}),
|
||||||
|
animate('300ms ease-in',
|
||||||
|
style({
|
||||||
|
transform: 'translateX(100%)'
|
||||||
|
})
|
||||||
|
)
|
||||||
|
]
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
|
||||||
|
trigger('slideInLeft', [
|
||||||
state('void', style({
|
state('void', style({
|
||||||
transform: 'translateX(-100%)',
|
transform: 'translateX(-100%)',
|
||||||
display : 'none'
|
display : 'none'
|
||||||
@@ -28,9 +134,9 @@ export class Animations
|
|||||||
})),
|
})),
|
||||||
transition('void => *', animate('300ms')),
|
transition('void => *', animate('300ms')),
|
||||||
transition('* => void', animate('300ms'))
|
transition('* => void', animate('300ms'))
|
||||||
]);
|
]),
|
||||||
|
|
||||||
public static slideInRight = trigger('slideInRight', [
|
trigger('slideInRight', [
|
||||||
state('void', style({
|
state('void', style({
|
||||||
transform: 'translateX(100%)',
|
transform: 'translateX(100%)',
|
||||||
display : 'none'
|
display : 'none'
|
||||||
@@ -41,9 +147,9 @@ export class Animations
|
|||||||
})),
|
})),
|
||||||
transition('void => *', animate('300ms')),
|
transition('void => *', animate('300ms')),
|
||||||
transition('* => void', animate('300ms'))
|
transition('* => void', animate('300ms'))
|
||||||
]);
|
]),
|
||||||
|
|
||||||
public static slideInTop = trigger('slideInTop', [
|
trigger('slideInTop', [
|
||||||
state('void', style({
|
state('void', style({
|
||||||
transform: 'translateY(-100%)',
|
transform: 'translateY(-100%)',
|
||||||
display : 'none'
|
display : 'none'
|
||||||
@@ -54,9 +160,9 @@ export class Animations
|
|||||||
})),
|
})),
|
||||||
transition('void => *', animate('300ms')),
|
transition('void => *', animate('300ms')),
|
||||||
transition('* => void', animate('300ms'))
|
transition('* => void', animate('300ms'))
|
||||||
]);
|
]),
|
||||||
|
|
||||||
public static slideInBottom = trigger('slideInBottom', [
|
trigger('slideInBottom', [
|
||||||
state('void',
|
state('void',
|
||||||
style({
|
style({
|
||||||
transform: 'translateY(100%)',
|
transform: 'translateY(100%)',
|
||||||
@@ -68,9 +174,20 @@ export class Animations
|
|||||||
})),
|
})),
|
||||||
transition('void => *', animate('300ms')),
|
transition('void => *', animate('300ms')),
|
||||||
transition('* => void', animate('300ms'))
|
transition('* => void', animate('300ms'))
|
||||||
]);
|
]),
|
||||||
|
|
||||||
public static routerTransitionLeft = trigger('routerTransitionLeft', [
|
trigger('expandCollapse', [
|
||||||
|
state('void', style({
|
||||||
|
height: '0px'
|
||||||
|
})),
|
||||||
|
state('*', style({
|
||||||
|
height: '*'
|
||||||
|
})),
|
||||||
|
transition('void => *', animate('300ms ease-out')),
|
||||||
|
transition('* => void', animate('300ms ease-in'))
|
||||||
|
]),
|
||||||
|
|
||||||
|
trigger('routerTransitionLeft', [
|
||||||
|
|
||||||
transition('* => *', [
|
transition('* => *', [
|
||||||
query('fuse-content > :enter, fuse-content > :leave', [
|
query('fuse-content > :enter, fuse-content > :leave', [
|
||||||
@@ -95,7 +212,7 @@ export class Animations
|
|||||||
transform: 'translateX(0)',
|
transform: 'translateX(0)',
|
||||||
opacity : 1
|
opacity : 1
|
||||||
}),
|
}),
|
||||||
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
style({
|
style({
|
||||||
transform: 'translateX(-100%)',
|
transform: 'translateX(-100%)',
|
||||||
opacity : 0
|
opacity : 0
|
||||||
@@ -103,7 +220,7 @@ export class Animations
|
|||||||
], {optional: true}),
|
], {optional: true}),
|
||||||
query('fuse-content > :enter', [
|
query('fuse-content > :enter', [
|
||||||
style({transform: 'translateX(100%)'}),
|
style({transform: 'translateX(100%)'}),
|
||||||
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
style({
|
style({
|
||||||
transform: 'translateX(0%)',
|
transform: 'translateX(0%)',
|
||||||
opacity : 1
|
opacity : 1
|
||||||
@@ -114,9 +231,9 @@ export class Animations
|
|||||||
query('fuse-content > :enter', animateChild(), {optional: true})
|
query('fuse-content > :enter', animateChild(), {optional: true})
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
]);
|
]),
|
||||||
|
|
||||||
public static routerTransitionRight = trigger('routerTransitionRight', [
|
trigger('routerTransitionRight', [
|
||||||
|
|
||||||
transition('* => *', [
|
transition('* => *', [
|
||||||
query('fuse-content > :enter, fuse-content > :leave', [
|
query('fuse-content > :enter, fuse-content > :leave', [
|
||||||
@@ -141,7 +258,7 @@ export class Animations
|
|||||||
transform: 'translateX(0)',
|
transform: 'translateX(0)',
|
||||||
opacity : 1
|
opacity : 1
|
||||||
}),
|
}),
|
||||||
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
style({
|
style({
|
||||||
transform: 'translateX(100%)',
|
transform: 'translateX(100%)',
|
||||||
opacity : 0
|
opacity : 0
|
||||||
@@ -149,7 +266,7 @@ export class Animations
|
|||||||
], {optional: true}),
|
], {optional: true}),
|
||||||
query('fuse-content > :enter', [
|
query('fuse-content > :enter', [
|
||||||
style({transform: 'translateX(-100%)'}),
|
style({transform: 'translateX(-100%)'}),
|
||||||
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
style({
|
style({
|
||||||
transform: 'translateX(0%)',
|
transform: 'translateX(0%)',
|
||||||
opacity : 1
|
opacity : 1
|
||||||
@@ -160,9 +277,9 @@ export class Animations
|
|||||||
query('fuse-content > :enter', animateChild(), {optional: true})
|
query('fuse-content > :enter', animateChild(), {optional: true})
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
]);
|
]),
|
||||||
|
|
||||||
public static routerTransitionUp = trigger('routerTransitionUp', [
|
trigger('routerTransitionUp', [
|
||||||
|
|
||||||
transition('* => *', [
|
transition('* => *', [
|
||||||
query('fuse-content > :enter, fuse-content > :leave', [
|
query('fuse-content > :enter, fuse-content > :leave', [
|
||||||
@@ -180,35 +297,33 @@ export class Animations
|
|||||||
opacity : 0
|
opacity : 0
|
||||||
})
|
})
|
||||||
], {optional: true}),
|
], {optional: true}),
|
||||||
sequence([
|
group([
|
||||||
group([
|
query('fuse-content > :leave', [
|
||||||
query('fuse-content > :leave', [
|
style({
|
||||||
|
transform: 'translateY(0)',
|
||||||
|
opacity : 1
|
||||||
|
}),
|
||||||
|
animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
style({
|
style({
|
||||||
transform: 'translateY(0)',
|
transform: 'translateY(-100%)',
|
||||||
|
opacity : 0
|
||||||
|
}))
|
||||||
|
], {optional: true}),
|
||||||
|
query('fuse-content > :enter', [
|
||||||
|
style({transform: 'translateY(100%)'}),
|
||||||
|
animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
|
style({
|
||||||
|
transform: 'translateY(0%)',
|
||||||
opacity : 1
|
opacity : 1
|
||||||
}),
|
}))
|
||||||
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
], {optional: true})
|
||||||
style({
|
]),
|
||||||
transform: 'translateY(-100%)',
|
query('fuse-content > :leave', animateChild(), {optional: true}),
|
||||||
opacity : 0
|
query('fuse-content > :enter', animateChild(), {optional: true})
|
||||||
}))
|
|
||||||
], {optional: true}),
|
|
||||||
query('fuse-content > :enter', [
|
|
||||||
style({transform: 'translateY(100%)'}),
|
|
||||||
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
|
||||||
style({
|
|
||||||
transform: 'translateY(0%)',
|
|
||||||
opacity : 1
|
|
||||||
}))
|
|
||||||
], {optional: true})
|
|
||||||
]),
|
|
||||||
query('fuse-content > :leave', animateChild(), {optional: true}),
|
|
||||||
query('fuse-content > :enter', animateChild(), {optional: true})
|
|
||||||
])
|
|
||||||
])
|
])
|
||||||
]);
|
]),
|
||||||
|
|
||||||
public static routerTransitionDown = trigger('routerTransitionDown', [
|
trigger('routerTransitionDown', [
|
||||||
|
|
||||||
transition('* => *', [
|
transition('* => *', [
|
||||||
query('fuse-content > :enter, fuse-content > :leave', [
|
query('fuse-content > :enter, fuse-content > :leave', [
|
||||||
@@ -233,7 +348,7 @@ export class Animations
|
|||||||
transform: 'translateY(0)',
|
transform: 'translateY(0)',
|
||||||
opacity : 1
|
opacity : 1
|
||||||
}),
|
}),
|
||||||
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
style({
|
style({
|
||||||
transform: 'translateY(100%)',
|
transform: 'translateY(100%)',
|
||||||
opacity : 0
|
opacity : 0
|
||||||
@@ -241,7 +356,7 @@ export class Animations
|
|||||||
], {optional: true}),
|
], {optional: true}),
|
||||||
query('fuse-content > :enter', [
|
query('fuse-content > :enter', [
|
||||||
style({transform: 'translateY(-100%)'}),
|
style({transform: 'translateY(-100%)'}),
|
||||||
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
style({
|
style({
|
||||||
transform: 'translateY(0%)',
|
transform: 'translateY(0%)',
|
||||||
opacity : 1
|
opacity : 1
|
||||||
@@ -252,11 +367,11 @@ export class Animations
|
|||||||
query('fuse-content > :enter', animateChild(), {optional: true})
|
query('fuse-content > :enter', animateChild(), {optional: true})
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
]);
|
]),
|
||||||
|
|
||||||
public static routerTransitionFade = trigger('routerTransitionFade', [
|
trigger('routerTransitionFade', [
|
||||||
|
|
||||||
transition('* => *', [
|
transition('* => *', group([
|
||||||
|
|
||||||
query('fuse-content > :enter, fuse-content > :leave ', [
|
query('fuse-content > :enter, fuse-content > :leave ', [
|
||||||
style({
|
style({
|
||||||
@@ -267,33 +382,32 @@ export class Animations
|
|||||||
right : 0
|
right : 0
|
||||||
})
|
})
|
||||||
], {optional: true}),
|
], {optional: true}),
|
||||||
|
|
||||||
query('fuse-content > :enter', [
|
query('fuse-content > :enter', [
|
||||||
style({
|
style({
|
||||||
opacity: 0
|
opacity: 0
|
||||||
})
|
})
|
||||||
], {optional: true}),
|
], {optional: true}),
|
||||||
// sequence([
|
query('fuse-content > :leave', [
|
||||||
query('fuse-content > :leave', [
|
style({
|
||||||
style({
|
opacity: 1
|
||||||
opacity: 1
|
}),
|
||||||
}),
|
animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
animate('300ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
|
||||||
style({
|
|
||||||
opacity: 0
|
|
||||||
}))
|
|
||||||
], {optional: true}),
|
|
||||||
query('fuse-content > :enter', [
|
|
||||||
style({
|
style({
|
||||||
opacity: 0
|
opacity: 0
|
||||||
}),
|
}))
|
||||||
animate('300ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
|
], {optional: true}),
|
||||||
style({
|
query('fuse-content > :enter', [
|
||||||
opacity: 1
|
style({
|
||||||
}))
|
opacity: 0
|
||||||
], {optional: true}),
|
}),
|
||||||
// ]),
|
animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',
|
||||||
|
style({
|
||||||
|
opacity: 1
|
||||||
|
}))
|
||||||
|
], {optional: true}),
|
||||||
query('fuse-content > :enter', animateChild(), {optional: true}),
|
query('fuse-content > :enter', animateChild(), {optional: true}),
|
||||||
query('fuse-content > :leave', animateChild(), {optional: true})
|
query('fuse-content > :leave', animateChild(), {optional: true})
|
||||||
])
|
]))
|
||||||
]);
|
])
|
||||||
}
|
];
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<h1 md-dialog-title>Confirm</h1>
|
<h1 matDialogTitle>Confirm</h1>
|
||||||
<div md-dialog-content>{{confirmMessage}}</div>
|
<div mat-dialog-content>{{confirmMessage}}</div>
|
||||||
<div md-dialog-actions class="pt-24">
|
<div mat-dialog-actions class="pt-24">
|
||||||
<button md-raised-button class="mat-accent mr-16" (click)="dialogRef.close(true)">Confirm</button>
|
<button mat-raised-button class="mat-accent mr-16" (click)="dialogRef.close(true)">Confirm</button>
|
||||||
<button md-button (click)="dialogRef.close(false)">Cancel</button>
|
<button mat-button (click)="dialogRef.close(false)">Cancel</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { MdDialogRef } from '@angular/material';
|
import { MatDialogRef } from '@angular/material';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector : 'fuse-confirm-dialog',
|
selector : 'fuse-confirm-dialog',
|
||||||
@@ -10,7 +10,7 @@ export class FuseConfirmDialogComponent implements OnInit
|
|||||||
{
|
{
|
||||||
public confirmMessage: string;
|
public confirmMessage: string;
|
||||||
|
|
||||||
constructor(public dialogRef: MdDialogRef<FuseConfirmDialogComponent>)
|
constructor(public dialogRef: MatDialogRef<FuseConfirmDialogComponent>)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
65
src/app/core/components/copier/copier.service.ts
Normal file
65
src/app/core/components/copier/copier.service.ts
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/**
|
||||||
|
* This class is based on the code in the following projects:
|
||||||
|
*
|
||||||
|
* - https://github.com/zenorocha/select
|
||||||
|
* - https://github.com/zenorocha/clipboard.js/
|
||||||
|
*
|
||||||
|
* Both released under MIT license - © Zeno Rocha
|
||||||
|
*/
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class CopierService
|
||||||
|
{
|
||||||
|
|
||||||
|
private textarea: HTMLTextAreaElement;
|
||||||
|
|
||||||
|
/** Copy the text value to the clipboard. */
|
||||||
|
copyText(text: string): boolean
|
||||||
|
{
|
||||||
|
this.createTextareaAndSelect(text);
|
||||||
|
|
||||||
|
const copySuccessful = document.execCommand('copy');
|
||||||
|
this.removeFake();
|
||||||
|
|
||||||
|
return copySuccessful;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a hidden textarea element, sets its value from `text` property,
|
||||||
|
* and makes a selection on it.
|
||||||
|
*/
|
||||||
|
private createTextareaAndSelect(text: string)
|
||||||
|
{
|
||||||
|
// Create a fake element to hold the contents to copy
|
||||||
|
this.textarea = document.createElement('textarea');
|
||||||
|
|
||||||
|
// Prevent zooming on iOS
|
||||||
|
this.textarea.style.fontSize = '12pt';
|
||||||
|
|
||||||
|
// Hide the element
|
||||||
|
this.textarea.classList.add('cdk-visually-hidden');
|
||||||
|
|
||||||
|
// Move element to the same position vertically
|
||||||
|
const yPosition = window.pageYOffset || document.documentElement.scrollTop;
|
||||||
|
this.textarea.style.top = yPosition + 'px';
|
||||||
|
|
||||||
|
this.textarea.setAttribute('readonly', '');
|
||||||
|
this.textarea.value = text;
|
||||||
|
|
||||||
|
document.body.appendChild(this.textarea);
|
||||||
|
|
||||||
|
this.textarea.select();
|
||||||
|
this.textarea.setSelectionRange(0, this.textarea.value.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Remove the text area from the DOM. */
|
||||||
|
private removeFake()
|
||||||
|
{
|
||||||
|
if ( this.textarea )
|
||||||
|
{
|
||||||
|
document.body.removeChild(this.textarea);
|
||||||
|
this.textarea = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Component, Input, OnInit } from '@angular/core';
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
import * as moment from 'moment';
|
import * as moment from 'moment';
|
||||||
import { Observable } from 'rxjs/Rx';
|
import { Observable } from 'rxjs/Observable';
|
||||||
|
import 'rxjs/add/observable/interval';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector : 'fuse-countdown',
|
selector : 'fuse-countdown',
|
||||||
|
|||||||
@@ -1,100 +1,100 @@
|
|||||||
<div class="demo-sidenav">
|
<div class="demo-sidenav">
|
||||||
<md-list>
|
<mat-list>
|
||||||
<h3 md-subheader>Sidenav Demo</h3>
|
<h3 matSubheader>Sidenav Demo</h3>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 1</span>
|
<span>Sidenav Item 1</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 2</span>
|
<span>Sidenav Item 2</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 3</span>
|
<span>Sidenav Item 3</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 4</span>
|
<span>Sidenav Item 4</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 5</span>
|
<span>Sidenav Item 5</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 6</span>
|
<span>Sidenav Item 6</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 7</span>
|
<span>Sidenav Item 7</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 8</span>
|
<span>Sidenav Item 8</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 9</span>
|
<span>Sidenav Item 9</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 10</span>
|
<span>Sidenav Item 10</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 11</span>
|
<span>Sidenav Item 11</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 12</span>
|
<span>Sidenav Item 12</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 13</span>
|
<span>Sidenav Item 13</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 14</span>
|
<span>Sidenav Item 14</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 15</span>
|
<span>Sidenav Item 15</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<mat-list-item>
|
||||||
<span>Sidenav Item 16</span>
|
<span>Sidenav Item 16</span>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
|
|
||||||
</md-list>
|
</mat-list>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
:host {
|
||||||
|
display: block;
|
||||||
|
padding: 8px;
|
||||||
|
background: #263238;
|
||||||
|
cursor: text;
|
||||||
|
}
|
||||||
102
src/app/core/components/highlight/highlight.component.ts
Normal file
102
src/app/core/components/highlight/highlight.component.ts
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
import { Component, ContentChild, ElementRef, Input, OnInit } from '@angular/core';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
|
||||||
|
import * as Prism from 'prismjs/prism';
|
||||||
|
import './prism-languages';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector : 'fuse-highlight',
|
||||||
|
template : ' ',
|
||||||
|
styleUrls: ['./highlight.component.scss']
|
||||||
|
})
|
||||||
|
export class FuseHighlightComponent implements OnInit
|
||||||
|
{
|
||||||
|
@ContentChild('source') source: ElementRef;
|
||||||
|
@Input('lang') lang: string;
|
||||||
|
@Input('path') path: string;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private elementRef: ElementRef,
|
||||||
|
private http: HttpClient
|
||||||
|
)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit()
|
||||||
|
{
|
||||||
|
// If there is no language defined, return...
|
||||||
|
if ( !this.lang )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the path is defined...
|
||||||
|
if ( this.path )
|
||||||
|
{
|
||||||
|
// Get the source
|
||||||
|
this.http.get(this.path, {responseType: 'text'}).subscribe((response) => {
|
||||||
|
|
||||||
|
// Highlight it
|
||||||
|
this.highlight(response);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the path is not defined and the source element exists...
|
||||||
|
if ( !this.path && this.source )
|
||||||
|
{
|
||||||
|
// Highlight it
|
||||||
|
this.highlight(this.source.nativeElement.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
highlight(sourceCode)
|
||||||
|
{
|
||||||
|
// Split the source into lines
|
||||||
|
const sourceLines = sourceCode.split('\n');
|
||||||
|
|
||||||
|
// Remove the first and the last line of the source
|
||||||
|
// code if they are blank lines. This way, the html
|
||||||
|
// can be formatted properly while using fuse-highlight
|
||||||
|
// component
|
||||||
|
if ( !sourceLines[0].trim() )
|
||||||
|
{
|
||||||
|
sourceLines.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !sourceLines[sourceLines.length - 1].trim() )
|
||||||
|
{
|
||||||
|
sourceLines.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find the first non-whitespace char index in
|
||||||
|
// the first line of the source code
|
||||||
|
const indexOfFirstChar = sourceLines[0].search(/\S|$/);
|
||||||
|
|
||||||
|
// Generate the trimmed source
|
||||||
|
let source = '';
|
||||||
|
|
||||||
|
// Iterate through all the lines
|
||||||
|
sourceLines.forEach((line, index) => {
|
||||||
|
|
||||||
|
// Trim the beginning white space depending on the index
|
||||||
|
// and concat the source code
|
||||||
|
source = source + line.substr(indexOfFirstChar, line.length);
|
||||||
|
|
||||||
|
// If it's not the last line...
|
||||||
|
if ( index !== sourceLines.length - 1 )
|
||||||
|
{
|
||||||
|
// Add a line break at the end
|
||||||
|
source = source + '\n';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Generate the highlighted code
|
||||||
|
const highlightedCode = Prism.highlight(source, Prism.languages[this.lang]);
|
||||||
|
|
||||||
|
// Replace the innerHTML of the component with the highlighted code
|
||||||
|
this.elementRef.nativeElement.innerHTML =
|
||||||
|
'<pre><code class="highlight language-' + this.lang + '">' + highlightedCode + '</code></pre>';
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
16
src/app/core/components/highlight/prism-languages.ts
Normal file
16
src/app/core/components/highlight/prism-languages.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import 'prismjs/prism';
|
||||||
|
import 'prismjs/components/prism-c';
|
||||||
|
import 'prismjs/components/prism-cpp';
|
||||||
|
import 'prismjs/components/prism-csharp';
|
||||||
|
import 'prismjs/components/prism-css';
|
||||||
|
import 'prismjs/components/prism-diff';
|
||||||
|
import 'prismjs/components/prism-markup';
|
||||||
|
import 'prismjs/components/prism-java';
|
||||||
|
import 'prismjs/components/prism-javascript';
|
||||||
|
import 'prismjs/components/prism-json';
|
||||||
|
import 'prismjs/components/prism-perl';
|
||||||
|
import 'prismjs/components/prism-php';
|
||||||
|
import 'prismjs/components/prism-python';
|
||||||
|
import 'prismjs/components/prism-sass';
|
||||||
|
import 'prismjs/components/prism-scss';
|
||||||
|
import 'prismjs/components/prism-typescript';
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
import { Component, ContentChild, ElementRef, Input, OnInit } from '@angular/core';
|
|
||||||
import * as hljs from 'highlight.js';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector : 'fuse-hljs',
|
|
||||||
template : ' ',
|
|
||||||
styleUrls: ['./hljs.component.scss']
|
|
||||||
})
|
|
||||||
export class FuseHljsComponent implements OnInit
|
|
||||||
{
|
|
||||||
hljs: any;
|
|
||||||
|
|
||||||
@ContentChild('source') source: ElementRef;
|
|
||||||
@Input('lang') lang: string;
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private elementRef: ElementRef
|
|
||||||
)
|
|
||||||
{
|
|
||||||
this.hljs = hljs;
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit()
|
|
||||||
{
|
|
||||||
const originalSource = this.source.nativeElement.value;
|
|
||||||
|
|
||||||
if ( !originalSource || !this.lang )
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Split the source into lines
|
|
||||||
const sourceLines = originalSource.split('\n');
|
|
||||||
|
|
||||||
// Find the first non-whitespace char index in
|
|
||||||
// the first line of the source code
|
|
||||||
const indexOfFirstChar = sourceLines[0].search(/\S|$/);
|
|
||||||
|
|
||||||
// Generate the trimmed source
|
|
||||||
let source = '';
|
|
||||||
|
|
||||||
// Iterate through all the lines and trim the
|
|
||||||
// beginning white space depending on the index
|
|
||||||
sourceLines.forEach((line, index) => {
|
|
||||||
|
|
||||||
source = source + line.substr(indexOfFirstChar, line.length);
|
|
||||||
|
|
||||||
if ( index !== sourceLines.length - 1 )
|
|
||||||
{
|
|
||||||
source = source + '\n';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.elementRef.nativeElement.innerHTML =
|
|
||||||
`<pre><code class="highlight">` + this.hljs.highlight(this.lang, source).value + `</code></pre>`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,22 +1,23 @@
|
|||||||
<button md-icon-button
|
<button mat-icon-button
|
||||||
|
type="button"
|
||||||
class="mat-elevation-z1"
|
class="mat-elevation-z1"
|
||||||
[mdMenuTriggerFor]="colorMenu"
|
[matMenuTriggerFor]="colorMenu"
|
||||||
(onMenuOpen)="onMenuOpen()"
|
(menuOpened)="onMenuOpen()"
|
||||||
[ngClass]="'md-'+selectedPalette+'-'+selectedHue+'-bg'">
|
[ngClass]="'mat-'+selectedPalette+'-'+selectedHue+'-bg'">
|
||||||
<md-icon>palette</md-icon>
|
<mat-icon>palette</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<md-menu #colorMenu="mdMenu" class="fuse-material-color-picker-menu">
|
<mat-menu #colorMenu="matMenu" class="fuse-material-color-picker-menu">
|
||||||
|
|
||||||
<header [ngClass]="selectedColor?.class || 'md-accent-bg'"
|
<header [ngClass]="selectedColor?.class || 'mat-accent-bg'"
|
||||||
class="mat-elevation-z4"
|
class="mat-elevation-z4"
|
||||||
fxLayout="row"
|
fxLayout="row"
|
||||||
fxLayoutAlign="space-between center">
|
fxLayoutAlign="space-between center">
|
||||||
|
|
||||||
<button md-icon-button
|
<button mat-icon-button
|
||||||
[style.visibility]="view==='hues'?'visible':'hidden'"
|
[style.visibility]="view==='hues'?'visible':'hidden'"
|
||||||
(click)="$event.stopPropagation();backToPaletteSelection()" aria-label="Palette">
|
(click)="$event.stopPropagation();backToPaletteSelection()" aria-label="Palette">
|
||||||
<md-icon class="s-20">arrow_back</md-icon>
|
<mat-icon class="s-20">arrow_back</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<span *ngIf="selectedColor?.palette">
|
<span *ngIf="selectedColor?.palette">
|
||||||
@@ -27,11 +28,11 @@
|
|||||||
Select Color
|
Select Color
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<button md-icon-button
|
<button mat-icon-button
|
||||||
class="remove-color-button"
|
class="remove-color-button"
|
||||||
(click)="removeColor()"
|
(click)="removeColor()"
|
||||||
aria-label="Remove Color">
|
aria-label="Remove Color">
|
||||||
<md-icon class="s-20">delete</md-icon>
|
<mat-icon class="s-20">delete</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@@ -44,12 +45,12 @@
|
|||||||
|
|
||||||
<div fxLayout="row" fxLayoutWrap
|
<div fxLayout="row" fxLayoutWrap
|
||||||
fxLayoutAlign="start start"
|
fxLayoutAlign="start start"
|
||||||
class="colors" perfect-scrollbar>
|
class="colors" fusePerfectScrollbar>
|
||||||
<div class="color"
|
<div class="color"
|
||||||
[ngClass]="'md-'+color.key+'-bg'"
|
[ngClass]="'mat-'+color.key+'-bg'"
|
||||||
*ngFor="let color of (colors | keys)"
|
*ngFor="let color of (colors | keys)"
|
||||||
(click)="$event.stopPropagation();selectPalette(color.key)"
|
(click)="$event.stopPropagation();selectPalette(color.key)"
|
||||||
fxLayout="row" fxLayoutAlign="start end" md-ink-ripple>
|
fxLayout="row" fxLayoutAlign="start end" mat-ink-ripple>
|
||||||
<span class="label">
|
<span class="label">
|
||||||
{{color.key}}
|
{{color.key}}
|
||||||
</span>
|
</span>
|
||||||
@@ -62,20 +63,20 @@
|
|||||||
[@slideInRight]>
|
[@slideInRight]>
|
||||||
<div fxLayout="row" fxLayoutWrap
|
<div fxLayout="row" fxLayoutWrap
|
||||||
fxLayoutAlign="start start"
|
fxLayoutAlign="start start"
|
||||||
class="colors" perfect-scrollbar>
|
class="colors" fusePerfectScrollbar>
|
||||||
<div class="color"
|
<div class="color"
|
||||||
*ngFor="let hue of hues"
|
*ngFor="let hue of hues"
|
||||||
[fxHide]="selectedPalette === 'white' && hue !== '500'|| selectedPalette === 'black' && hue !== '500'"
|
[fxHide]="selectedPalette === 'white' && hue !== '500'|| selectedPalette === 'black' && hue !== '500'"
|
||||||
[ngClass]="'md-'+selectedPalette+'-'+hue+'-bg'"
|
[ngClass]="'mat-'+selectedPalette+'-'+hue+'-bg'"
|
||||||
(click)="selectHue(hue)"
|
(click)="selectHue(hue)"
|
||||||
fxLayout="row" fxLayoutAlign="start end" md-ink-ripple>
|
fxLayout="row" fxLayoutAlign="start end" mat-ink-ripple>
|
||||||
<span class="label">
|
<span class="label">
|
||||||
{{hue}}
|
{{hue}}
|
||||||
</span>
|
</span>
|
||||||
<md-icon *ngIf="selectedHue === hue" class="s-16">check</md-icon>
|
<mat-icon *ngIf="selectedHue === hue" class="s-16">check</mat-icon>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</md-menu>
|
</mat-menu>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
min-height: 258px;
|
min-height: 258px;
|
||||||
height: 308px;
|
height: 308px;
|
||||||
background-color: #f7f7f7;
|
background-color: #F7F7F7;
|
||||||
|
|
||||||
.view {
|
.view {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
md-icon {
|
mat-icon {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 2px;
|
top: 2px;
|
||||||
right: 2px;
|
right: 2px;
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewEncapsulation } from '@angular/core';
|
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewEncapsulation } from '@angular/core';
|
||||||
import { MatColors } from '../../matColors';
|
import { MatColors } from '../../matColors';
|
||||||
import { Animations } from '../../animations';
|
import { fuseAnimations } from '../../animations';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector : 'fuse-material-color-picker',
|
selector : 'fuse-material-color-picker',
|
||||||
templateUrl : './material-color-picker.component.html',
|
templateUrl : './material-color-picker.component.html',
|
||||||
styleUrls : ['./material-color-picker.component.scss'],
|
styleUrls : ['./material-color-picker.component.scss'],
|
||||||
animations : [Animations.slideInLeft, Animations.slideInRight],
|
animations : fuseAnimations,
|
||||||
encapsulation: ViewEncapsulation.None
|
encapsulation: ViewEncapsulation.None
|
||||||
})
|
})
|
||||||
export class FuseMaterialColorPickerComponent implements OnInit, OnChanges
|
export class FuseMaterialColorPickerComponent implements OnInit, OnChanges
|
||||||
@@ -129,7 +129,7 @@ export class FuseMaterialColorPickerComponent implements OnInit, OnChanges
|
|||||||
{
|
{
|
||||||
this.selectedBg = MatColors.getColor(this.selectedPalette)[this.selectedHue];
|
this.selectedBg = MatColors.getColor(this.selectedPalette)[this.selectedHue];
|
||||||
this.selectedFg = MatColors.getColor(this.selectedPalette).contrast[this.selectedHue];
|
this.selectedFg = MatColors.getColor(this.selectedPalette).contrast[this.selectedHue];
|
||||||
this.selectedClass = 'md-' + this.selectedPalette + '-' + this.selectedHue + '-bg';
|
this.selectedClass = 'mat-' + this.selectedPalette + '-' + this.selectedHue + '-bg';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<a class="nav-link" matRipple>
|
||||||
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
|
{{item.badge.title}}
|
||||||
|
</span>
|
||||||
|
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div class="children" [ngClass]="{'open': isOpen}">
|
||||||
|
|
||||||
|
<div class="{{fuseSettings.colorClasses.navbar}}">
|
||||||
|
|
||||||
|
<ng-container *ngFor="let item of item.children">
|
||||||
|
<fuse-nav-horizontal-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-horizontal-item>
|
||||||
|
<fuse-nav-horizontal-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-horizontal-collapse>
|
||||||
|
<fuse-nav-horizontal-collapse *ngIf="item.type=='group'" [item]="item"></fuse-nav-horizontal-collapse>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
:host {
|
:host {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
import { Component, HostBinding, HostListener, Input, OnDestroy } from '@angular/core';
|
||||||
|
import { fuseAnimations } from '../../../../animations';
|
||||||
|
import { FuseConfigService } from '../../../../services/config.service';
|
||||||
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector : 'fuse-nav-horizontal-collapse',
|
||||||
|
templateUrl: './nav-horizontal-collapse.component.html',
|
||||||
|
styleUrls : ['./nav-horizontal-collapse.component.scss'],
|
||||||
|
animations : fuseAnimations
|
||||||
|
})
|
||||||
|
export class FuseNavHorizontalCollapseComponent implements OnDestroy
|
||||||
|
{
|
||||||
|
onSettingsChanged: Subscription;
|
||||||
|
fuseSettings: any;
|
||||||
|
isOpen = false;
|
||||||
|
|
||||||
|
@HostBinding('class') classes = 'nav-item nav-collapse';
|
||||||
|
@Input() item: any;
|
||||||
|
|
||||||
|
@HostListener('mouseenter')
|
||||||
|
open()
|
||||||
|
{
|
||||||
|
this.isOpen = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@HostListener('mouseleave')
|
||||||
|
close()
|
||||||
|
{
|
||||||
|
this.isOpen = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private fuseConfig: FuseConfigService
|
||||||
|
)
|
||||||
|
{
|
||||||
|
this.onSettingsChanged =
|
||||||
|
this.fuseConfig.onSettingsChanged
|
||||||
|
.subscribe(
|
||||||
|
(newSettings) => {
|
||||||
|
this.fuseSettings = newSettings;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy()
|
||||||
|
{
|
||||||
|
this.onSettingsChanged.unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
||||||
|
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
||||||
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
|
{{item.badge.title}}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
||||||
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
|
{{item.badge.title}}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
:host {
|
:host {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { Component, HostBinding, Input } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector : 'fuse-nav-horizontal-item',
|
||||||
|
templateUrl: './nav-horizontal-item.component.html',
|
||||||
|
styleUrls : ['./nav-horizontal-item.component.scss']
|
||||||
|
})
|
||||||
|
export class FuseNavHorizontalItemComponent
|
||||||
|
{
|
||||||
|
@HostBinding('class') classes = 'nav-item';
|
||||||
|
@Input() item: any;
|
||||||
|
}
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<a class="nav-link" md-ripple (click)="toggleOpen($event)">
|
|
||||||
<md-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</md-icon>
|
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
|
||||||
<md-icon class="collapse-arrow">keyboard_arrow_right</md-icon>
|
|
||||||
</a>
|
|
||||||
<div class="children" [@slideInOut]="isOpen">
|
|
||||||
<ng-container *ngFor="let item of item.children">
|
|
||||||
<fuse-nav-item *ngIf="item.type=='nav-item'" [item]="item"></fuse-nav-item>
|
|
||||||
<fuse-nav-collapse *ngIf="item.type=='nav-collapse'" [item]="item"></fuse-nav-collapse>
|
|
||||||
</ng-container>
|
|
||||||
</div>
|
|
||||||
@@ -1,147 +0,0 @@
|
|||||||
import { Component, HostBinding, Input, OnInit } from '@angular/core';
|
|
||||||
import { FuseNavigationService } from '../navigation.service';
|
|
||||||
import { NavigationEnd, Router } from '@angular/router';
|
|
||||||
import { Animations } from '../../../animations';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector : 'fuse-nav-collapse',
|
|
||||||
templateUrl: './nav-collapse.component.html',
|
|
||||||
styleUrls : ['./nav-collapse.component.scss'],
|
|
||||||
animations : [Animations.slideInOut]
|
|
||||||
})
|
|
||||||
export class FuseNavCollapseComponent implements OnInit
|
|
||||||
{
|
|
||||||
@Input() item: any;
|
|
||||||
@HostBinding('class') classes = 'nav-collapse nav-item';
|
|
||||||
@HostBinding('class.open') public isOpen = false;
|
|
||||||
|
|
||||||
constructor(private navigationService: FuseNavigationService, private router: Router)
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* When navigation changed
|
|
||||||
*/
|
|
||||||
router.events.subscribe(
|
|
||||||
(event) => {
|
|
||||||
if ( event instanceof NavigationEnd )
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Check if the url is child of the collapse
|
|
||||||
*/
|
|
||||||
if ( this.isUrlInChildren(this.item, event.urlAfterRedirects) )
|
|
||||||
{
|
|
||||||
// console.log(this.item);
|
|
||||||
this.expand();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.collapse();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whenever a navigation collapse item toggled
|
|
||||||
*/
|
|
||||||
this.navigationService.onNavCollapseToggled.subscribe(
|
|
||||||
(clickedItem) => {
|
|
||||||
if ( clickedItem.children )
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* if clicked collapse is child of this collapse
|
|
||||||
* return
|
|
||||||
*/
|
|
||||||
if ( this.item.children.indexOf(clickedItem) !== -1 )
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* If collapsed item is not related with this collapse
|
|
||||||
* collapse
|
|
||||||
*/
|
|
||||||
if ( this.item !== clickedItem )
|
|
||||||
{
|
|
||||||
this.collapse();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Toggle Collapse
|
|
||||||
* @param ev
|
|
||||||
*/
|
|
||||||
toggleOpen(ev)
|
|
||||||
{
|
|
||||||
ev.preventDefault();
|
|
||||||
this.isOpen = !this.isOpen;
|
|
||||||
this.navigationService.onNavCollapseToggled.emit(this.item);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Expand
|
|
||||||
*/
|
|
||||||
expand()
|
|
||||||
{
|
|
||||||
if ( this.isOpen )
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.isOpen = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Collapse
|
|
||||||
*/
|
|
||||||
collapse()
|
|
||||||
{
|
|
||||||
if ( !this.isOpen )
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.isOpen = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checking the url is in children
|
|
||||||
* @param arr
|
|
||||||
* @param url
|
|
||||||
* @returns {any}
|
|
||||||
*/
|
|
||||||
isUrlInChildren(arr, url)
|
|
||||||
{
|
|
||||||
if ( !arr.children )
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( let i = 0; i < arr.children.length; i++ )
|
|
||||||
{
|
|
||||||
if ( arr.children[i].children )
|
|
||||||
{
|
|
||||||
if ( this.isUrlInChildren(arr.children[i], url) )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( arr.children[i].url === url )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public isCollapsed(): boolean
|
|
||||||
{
|
|
||||||
return this.isOpen;
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
<a class="nav-link" md-ripple
|
|
||||||
[routerLink]="[item.url]" routerLinkActive="active">
|
|
||||||
<md-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</md-icon>
|
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
|
||||||
<span class="nav-link-badge" *ngIf="item.badge" [ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">{{item.badge.title}}</span>
|
|
||||||
</a>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
<span class="hint-text">{{ item.title }}</span>
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
|
|
||||||
:host {
|
|
||||||
|
|
||||||
.folded:not(.folded-open) & {
|
|
||||||
|
|
||||||
&:before {
|
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
min-width: 1.6rem;
|
|
||||||
border-top: 2px solid;
|
|
||||||
opacity: 0.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
> span {
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity 200ms ease;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
import { Component, HostBinding, Input, OnInit } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector : 'fuse-nav-subheader',
|
|
||||||
templateUrl: './nav-subheader.component.html',
|
|
||||||
styleUrls : ['./nav-subheader.component.scss']
|
|
||||||
})
|
|
||||||
export class FuseNavSubheaderComponent implements OnInit
|
|
||||||
{
|
|
||||||
@HostBinding('class') classes = 'nav-subheader';
|
|
||||||
@Input() item: any;
|
|
||||||
|
|
||||||
constructor()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,11 +1,32 @@
|
|||||||
<div id="main-navigation" class="nav">
|
<div id="main-navigation" class="nav"
|
||||||
<ng-container *ngFor="let item of navigation">
|
[ngClass]="{'horizontal':layout === 'horizontal', 'vertical':layout === 'vertical'}">
|
||||||
|
|
||||||
<fuse-nav-subheader *ngIf="item.type=='subheader'" [item]="item"></fuse-nav-subheader>
|
<!-- Vertical Navigation Layout -->
|
||||||
|
<ng-container *ngIf="layout === 'vertical'">
|
||||||
|
|
||||||
<fuse-nav-item *ngIf="item.type=='nav-item'" [item]="item"></fuse-nav-item>
|
<ng-container *ngFor="let item of navigationModel">
|
||||||
|
|
||||||
<fuse-nav-collapse *ngIf="item.type=='nav-collapse'" [item]="item"></fuse-nav-collapse>
|
<fuse-nav-vertical-group *ngIf="item.type=='group'" [item]="item"></fuse-nav-vertical-group>
|
||||||
|
<fuse-nav-vertical-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-vertical-collapse>
|
||||||
|
<fuse-nav-vertical-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-vertical-item>
|
||||||
|
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
<!-- / Vertical Navigation Layout -->
|
||||||
|
|
||||||
|
<!-- Horizontal Navigation Layout -->
|
||||||
|
<ng-container *ngIf="layout === 'horizontal'">
|
||||||
|
|
||||||
|
<ng-container *ngFor="let item of navigationModel">
|
||||||
|
|
||||||
|
<fuse-nav-horizontal-collapse *ngIf="item.type=='group'" [item]="item"></fuse-nav-horizontal-collapse>
|
||||||
|
<fuse-nav-horizontal-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-horizontal-collapse>
|
||||||
|
<fuse-nav-horizontal-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-horizontal-item>
|
||||||
|
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
</ng-container>
|
||||||
|
<!-- / Horizontal Navigation Layout -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { Component, ViewEncapsulation } from '@angular/core';
|
import { Component, Input, OnDestroy, ViewEncapsulation } from '@angular/core';
|
||||||
import { FuseNavigationService } from './navigation.service';
|
import { FuseNavigationService } from './navigation.service';
|
||||||
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector : 'fuse-navigation',
|
selector : 'fuse-navigation',
|
||||||
@@ -7,13 +8,25 @@ import { FuseNavigationService } from './navigation.service';
|
|||||||
styleUrls : ['./navigation.component.scss'],
|
styleUrls : ['./navigation.component.scss'],
|
||||||
encapsulation: ViewEncapsulation.None
|
encapsulation: ViewEncapsulation.None
|
||||||
})
|
})
|
||||||
export class FuseNavigationComponent
|
export class FuseNavigationComponent implements OnDestroy
|
||||||
{
|
{
|
||||||
navigation: any[];
|
navigationModel: any[];
|
||||||
|
navigationModelChangeSubscription: Subscription;
|
||||||
|
|
||||||
constructor(private navigationService: FuseNavigationService)
|
@Input('layout') layout = 'vertical';
|
||||||
|
|
||||||
|
constructor(private fuseNavigationService: FuseNavigationService)
|
||||||
{
|
{
|
||||||
this.navigation = navigationService.getNavigation();
|
this.navigationModelChangeSubscription =
|
||||||
|
this.fuseNavigationService.onNavigationModelChange
|
||||||
|
.subscribe((navigationModel) => {
|
||||||
|
this.navigationModel = navigationModel;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy()
|
||||||
|
{
|
||||||
|
this.navigationModelChangeSubscription.unsubscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
5
src/app/core/components/navigation/navigation.model.ts
Normal file
5
src/app/core/components/navigation/navigation.model.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
export interface FuseNavigationModelInterface
|
||||||
|
{
|
||||||
|
model: any[];
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { SharedModule } from '../../modules/shared.module';
|
import { SharedModule } from '../../modules/shared.module';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
import { FuseNavSubheaderComponent } from './nav-subheader/nav-subheader.component';
|
|
||||||
import { FuseNavigationComponent } from './navigation.component';
|
import { FuseNavigationComponent } from './navigation.component';
|
||||||
import { FuseNavItemComponent } from './nav-item/nav-item.component';
|
import { FuseNavVerticalItemComponent } from './vertical/nav-item/nav-vertical-item.component';
|
||||||
import { FuseNavCollapseComponent } from './nav-collapse/nav-collapse.component';
|
import { FuseNavVerticalCollapseComponent } from './vertical/nav-collapse/nav-vertical-collapse.component';
|
||||||
|
import { FuseNavVerticalGroupComponent } from './vertical/nav-group/nav-vertical-group.component';
|
||||||
|
import { FuseNavHorizontalItemComponent } from './horizontal/nav-item/nav-horizontal-item.component';
|
||||||
|
import { FuseNavHorizontalCollapseComponent } from './horizontal/nav-collapse/nav-horizontal-collapse.component';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports : [
|
imports : [
|
||||||
@@ -16,9 +18,11 @@ import { FuseNavCollapseComponent } from './nav-collapse/nav-collapse.component'
|
|||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
FuseNavigationComponent,
|
FuseNavigationComponent,
|
||||||
FuseNavSubheaderComponent,
|
FuseNavVerticalGroupComponent,
|
||||||
FuseNavItemComponent,
|
FuseNavVerticalItemComponent,
|
||||||
FuseNavCollapseComponent
|
FuseNavVerticalCollapseComponent,
|
||||||
|
FuseNavHorizontalItemComponent,
|
||||||
|
FuseNavHorizontalCollapseComponent
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class FuseNavigationModule
|
export class FuseNavigationModule
|
||||||
|
|||||||
@@ -1,25 +1,149 @@
|
|||||||
import { EventEmitter, Injectable } from '@angular/core';
|
import { EventEmitter, Injectable } from '@angular/core';
|
||||||
import { FuseNavigation } from '../../../navigation.model';
|
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
|
||||||
|
import { FuseNavigationModelInterface } from './navigation.model';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FuseNavigationService
|
export class FuseNavigationService
|
||||||
{
|
{
|
||||||
|
onNavCollapseToggle = new EventEmitter<any>();
|
||||||
onNavCollapseToggled = new EventEmitter<any>();
|
onNavCollapseToggled = new EventEmitter<any>();
|
||||||
navigation: any[];
|
onNavigationModelChange: BehaviorSubject<any> = new BehaviorSubject({});
|
||||||
|
navigationModel: FuseNavigationModelInterface;
|
||||||
flatNavigation: any[] = [];
|
flatNavigation: any[] = [];
|
||||||
|
|
||||||
constructor()
|
constructor()
|
||||||
{
|
{
|
||||||
this.navigation = new FuseNavigation().items;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get navigation array
|
* Get navigation model
|
||||||
|
*
|
||||||
* @returns {any[]}
|
* @returns {any[]}
|
||||||
*/
|
*/
|
||||||
getNavigation()
|
getNavigationModel()
|
||||||
{
|
{
|
||||||
return this.navigation;
|
return this.navigationModel.model;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the navigation model
|
||||||
|
*
|
||||||
|
* @param model
|
||||||
|
*/
|
||||||
|
setNavigationModel(model)
|
||||||
|
{
|
||||||
|
this.navigationModel = model;
|
||||||
|
this.onNavigationModelChange.next(this.navigationModel.model);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add new navigation item
|
||||||
|
* to the given location
|
||||||
|
*/
|
||||||
|
addNavigationItem(location, item)
|
||||||
|
{
|
||||||
|
// Parse the location
|
||||||
|
const locationArr = location.split('.');
|
||||||
|
|
||||||
|
if ( locationArr.length === 0 )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find the navigation item
|
||||||
|
const navItem = this.findNavigationItemById(locationArr);
|
||||||
|
|
||||||
|
// Act according to the item type
|
||||||
|
switch ( navItem.type )
|
||||||
|
{
|
||||||
|
case 'item':
|
||||||
|
|
||||||
|
// Create a children array
|
||||||
|
navItem.children = [];
|
||||||
|
|
||||||
|
// Push the item
|
||||||
|
navItem.children.push(item);
|
||||||
|
|
||||||
|
// Change the item type to collapsable
|
||||||
|
navItem.type = 'collapse';
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'collapse':
|
||||||
|
|
||||||
|
// Push the item
|
||||||
|
navItem.children.push(item);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'group':
|
||||||
|
|
||||||
|
// Push the item
|
||||||
|
navItem.children.push(item);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get navigation item from
|
||||||
|
* given location
|
||||||
|
*
|
||||||
|
* @param location
|
||||||
|
*/
|
||||||
|
getNavigationItem(location)
|
||||||
|
{
|
||||||
|
// Parse the location
|
||||||
|
const locationArr = location.split('.');
|
||||||
|
|
||||||
|
if ( locationArr.length === 0 )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find and return the navigation item
|
||||||
|
return this.findNavigationItemById(locationArr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find navigation item by location
|
||||||
|
*
|
||||||
|
* @param location
|
||||||
|
* @param navigation
|
||||||
|
*/
|
||||||
|
findNavigationItemById(location, navigation?)
|
||||||
|
{
|
||||||
|
if ( !navigation )
|
||||||
|
{
|
||||||
|
navigation = this.navigationModel.model;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Iterate through the given navigation
|
||||||
|
for ( const navItem of navigation )
|
||||||
|
{
|
||||||
|
// If the nav item id equals the first location...
|
||||||
|
if ( navItem.id === location[0] )
|
||||||
|
{
|
||||||
|
// If there is more location to look at...
|
||||||
|
if ( location.length > 1 )
|
||||||
|
{
|
||||||
|
// Remove the first item of the location
|
||||||
|
location.splice(0, 1);
|
||||||
|
|
||||||
|
// Go nested...
|
||||||
|
return this.findNavigationItemById(location, navItem.children);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise just return the nav item
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return navItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,9 +153,16 @@ export class FuseNavigationService
|
|||||||
*/
|
*/
|
||||||
getFlatNavigation(navigationItems?)
|
getFlatNavigation(navigationItems?)
|
||||||
{
|
{
|
||||||
|
// If navigation items not provided,
|
||||||
|
// that means we are running the function
|
||||||
|
// for the first time...
|
||||||
if ( !navigationItems )
|
if ( !navigationItems )
|
||||||
{
|
{
|
||||||
navigationItems = this.navigation;
|
// Reset the flat navigation
|
||||||
|
this.flatNavigation = [];
|
||||||
|
|
||||||
|
// Get the entire navigation model
|
||||||
|
navigationItems = this.navigationModel.model;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( const navItem of navigationItems )
|
for ( const navItem of navigationItems )
|
||||||
@@ -41,7 +172,7 @@ export class FuseNavigationService
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( navItem.type === 'nav-item' )
|
if ( navItem.type === 'item' )
|
||||||
{
|
{
|
||||||
this.flatNavigation.push({
|
this.flatNavigation.push({
|
||||||
title: navItem.title,
|
title: navItem.title,
|
||||||
@@ -53,9 +184,12 @@ export class FuseNavigationService
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( navItem.type === 'nav-collapse' )
|
if ( navItem.type === 'collapse' || navItem.type === 'group' )
|
||||||
{
|
{
|
||||||
this.getFlatNavigation(navItem.children);
|
if ( navItem.children )
|
||||||
|
{
|
||||||
|
this.getFlatNavigation(navItem.children);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<a class="nav-link" matRipple (click)="toggleOpen($event)">
|
||||||
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
|
{{item.badge.title}}
|
||||||
|
</span>
|
||||||
|
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div class="children" [@slideInOut]="isOpen">
|
||||||
|
<ng-container *ngFor="let item of item.children">
|
||||||
|
<fuse-nav-vertical-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-vertical-item>
|
||||||
|
<fuse-nav-vertical-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-vertical-collapse>
|
||||||
|
<fuse-nav-vertical-group *ngIf="item.type=='group'" [item]="item"></fuse-nav-vertical-group>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,193 @@
|
|||||||
|
import { Component, HostBinding, Input, OnInit } from '@angular/core';
|
||||||
|
import { FuseNavigationService } from '../../navigation.service';
|
||||||
|
import { NavigationEnd, Router } from '@angular/router';
|
||||||
|
import { fuseAnimations } from '../../../../animations';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector : 'fuse-nav-vertical-collapse',
|
||||||
|
templateUrl: './nav-vertical-collapse.component.html',
|
||||||
|
styleUrls : ['./nav-vertical-collapse.component.scss'],
|
||||||
|
animations : fuseAnimations
|
||||||
|
})
|
||||||
|
export class FuseNavVerticalCollapseComponent implements OnInit
|
||||||
|
{
|
||||||
|
@Input() item: any;
|
||||||
|
@HostBinding('class') classes = 'nav-collapse nav-item';
|
||||||
|
@HostBinding('class.open') public isOpen = false;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private navigationService: FuseNavigationService,
|
||||||
|
private router: Router
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// Listen for route changes
|
||||||
|
router.events.subscribe(
|
||||||
|
(event) => {
|
||||||
|
if ( event instanceof NavigationEnd )
|
||||||
|
{
|
||||||
|
// Check if the url can be found in
|
||||||
|
// one of the children of this item
|
||||||
|
if ( this.isUrlInChildren(this.item, event.urlAfterRedirects) )
|
||||||
|
{
|
||||||
|
this.expand();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.collapse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// Listen for collapsing of any navigation item
|
||||||
|
this.navigationService.onNavCollapseToggled
|
||||||
|
.subscribe(
|
||||||
|
(clickedItem) => {
|
||||||
|
if ( clickedItem && clickedItem.children )
|
||||||
|
{
|
||||||
|
// Check if the clicked item is one
|
||||||
|
// of the children of this item
|
||||||
|
if ( this.isChildrenOf(this.item, clickedItem) )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the url can be found in
|
||||||
|
// one of the children of this item
|
||||||
|
if ( this.isUrlInChildren(this.item, this.router.url) )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the clicked item is not this item, collapse...
|
||||||
|
if ( this.item !== clickedItem )
|
||||||
|
{
|
||||||
|
this.collapse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit()
|
||||||
|
{
|
||||||
|
// Check if the url can be found in
|
||||||
|
// one of the children of this item
|
||||||
|
if ( this.isUrlInChildren(this.item, this.router.url) )
|
||||||
|
{
|
||||||
|
this.expand();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.collapse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggle collapse
|
||||||
|
*
|
||||||
|
* @param ev
|
||||||
|
*/
|
||||||
|
toggleOpen(ev)
|
||||||
|
{
|
||||||
|
ev.preventDefault();
|
||||||
|
|
||||||
|
this.isOpen = !this.isOpen;
|
||||||
|
|
||||||
|
// Navigation collapse toggled...
|
||||||
|
this.navigationService.onNavCollapseToggled.emit(this.item);
|
||||||
|
this.navigationService.onNavCollapseToggle.emit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Expand the collapsable navigation
|
||||||
|
*/
|
||||||
|
expand()
|
||||||
|
{
|
||||||
|
if ( this.isOpen )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.isOpen = true;
|
||||||
|
this.navigationService.onNavCollapseToggle.emit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Collapse the collapsable navigation
|
||||||
|
*/
|
||||||
|
collapse()
|
||||||
|
{
|
||||||
|
if ( !this.isOpen )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.isOpen = false;
|
||||||
|
this.navigationService.onNavCollapseToggle.emit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given parent has the
|
||||||
|
* given item in one of its children
|
||||||
|
*
|
||||||
|
* @param parent
|
||||||
|
* @param item
|
||||||
|
* @return {any}
|
||||||
|
*/
|
||||||
|
isChildrenOf(parent, item)
|
||||||
|
{
|
||||||
|
if ( !parent.children )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( parent.children.indexOf(item) !== -1 )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( const children of parent.children )
|
||||||
|
{
|
||||||
|
if ( children.children )
|
||||||
|
{
|
||||||
|
return this.isChildrenOf(children, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given url can be found
|
||||||
|
* in one of the given parent's children
|
||||||
|
*
|
||||||
|
* @param parent
|
||||||
|
* @param url
|
||||||
|
* @returns {any}
|
||||||
|
*/
|
||||||
|
isUrlInChildren(parent, url)
|
||||||
|
{
|
||||||
|
if ( !parent.children )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( let i = 0; i < parent.children.length; i++ )
|
||||||
|
{
|
||||||
|
if ( parent.children[i].children )
|
||||||
|
{
|
||||||
|
if ( this.isUrlInChildren(parent.children[i], url) )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( parent.children[i].url === url || url.includes(parent.children[i].url) )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<div class="group-title">
|
||||||
|
<span class="hint-text" [translate]="item.translate">{{ item.title }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="group-items">
|
||||||
|
<ng-container *ngFor="let item of item.children">
|
||||||
|
<fuse-nav-vertical-group *ngIf="item.type=='group'" [item]="item"></fuse-nav-vertical-group>
|
||||||
|
<fuse-nav-vertical-collapse *ngIf="item.type=='collapse'" [item]="item"></fuse-nav-vertical-collapse>
|
||||||
|
<fuse-nav-vertical-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-vertical-item>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
:host {
|
||||||
|
|
||||||
|
.folded:not(.folded-open) & {
|
||||||
|
|
||||||
|
> .group-title {
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
> span {
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 200ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
min-width: 1.6rem;
|
||||||
|
border-top: 2px solid;
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import { Component, HostBinding, Input, OnInit } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector : 'fuse-nav-vertical-group',
|
||||||
|
templateUrl: './nav-vertical-group.component.html',
|
||||||
|
styleUrls : ['./nav-vertical-group.component.scss']
|
||||||
|
})
|
||||||
|
export class FuseNavVerticalGroupComponent implements OnInit
|
||||||
|
{
|
||||||
|
@HostBinding('class') classes = 'nav-group nav-item';
|
||||||
|
@Input() item: any;
|
||||||
|
|
||||||
|
constructor()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
||||||
|
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
||||||
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
|
{{item.badge.title}}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
||||||
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
|
{{item.badge.title}}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
import { Component, HostBinding, Input, OnInit } from '@angular/core';
|
import { Component, HostBinding, Input, OnInit } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector : 'fuse-nav-item',
|
selector : 'fuse-nav-vertical-item',
|
||||||
templateUrl: './nav-item.component.html',
|
templateUrl: './nav-vertical-item.component.html',
|
||||||
styleUrls : ['./nav-item.component.scss']
|
styleUrls : ['./nav-vertical-item.component.scss']
|
||||||
})
|
})
|
||||||
export class FuseNavItemComponent implements OnInit
|
export class FuseNavVerticalItemComponent implements OnInit
|
||||||
{
|
{
|
||||||
@HostBinding('class') classes = 'nav-item';
|
@HostBinding('class') classes = 'nav-item';
|
||||||
@Input() item: any;
|
@Input() item: any;
|
||||||
@@ -1,20 +1,20 @@
|
|||||||
<div class="fuse-search-bar" [ngClass]="{'expanded':!collapsed}" fxFlex="0 1 auto">
|
<div class="fuse-search-bar" [ngClass]="{'expanded':!collapsed}" fxFlex="0 1 auto">
|
||||||
<div [ngClass]="toolbarColor" fxLayout="row" fxLayoutAlign="start center" fxFlex>
|
<div [ngClass]="toolbarColor" fxLayout="row" fxLayoutAlign="start center" fxFlex>
|
||||||
<label for="fuse-search-bar-input">
|
<label for="fuse-search-bar-input">
|
||||||
<button md-icon-button class="fuse-search-bar-expander" aria-label="Expand Search Bar" (click)="expand()"
|
<button mat-icon-button class="fuse-search-bar-expander" aria-label="Expand Search Bar" (click)="expand()"
|
||||||
*ngIf="collapsed">
|
*ngIf="collapsed">
|
||||||
<md-icon class="s-24">search</md-icon>
|
<mat-icon class="s-24">search</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
<!--<span class="fuse-search-bar-loader" fxLayout="row" fxLayoutAlign="center center" *ngIf="!collapsed">
|
<!--<span class="fuse-search-bar-loader" fxLayout="row" fxLayoutAlign="center center" *ngIf="!collapsed">
|
||||||
<md-progress-spinner color="md-accent" mode="indeterminate"></md-progress-spinner>
|
<mat-progress-spinner color="mat-accent" mode="indeterminate"></mat-progress-spinner>
|
||||||
</span>-->
|
</span>-->
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<input id="fuse-search-bar-input" class="ml-24" type="text" placeholder="Search" (input)="search($event)" fxFlex>
|
<input id="fuse-search-bar-input" class="ml-24" type="text" placeholder="Search" (input)="search($event)" fxFlex>
|
||||||
|
|
||||||
<button md-icon-button class="fuse-search-bar-collapser md-icon-button" (click)="collapse()"
|
<button mat-icon-button class="fuse-search-bar-collapser mat-icon-button" (click)="collapse()"
|
||||||
aria-label="Collapse Search Bar">
|
aria-label="Collapse Search Bar">
|
||||||
<md-icon class="s-24">close</md-icon>
|
<mat-icon class="s-24">close</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,11 +3,14 @@
|
|||||||
:host {
|
:host {
|
||||||
|
|
||||||
.fuse-search-bar {
|
.fuse-search-bar {
|
||||||
|
min-width: 64px;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
@include media-breakpoint-down('xs') {
|
|
||||||
|
@include media-breakpoint-down('sm') {
|
||||||
height: 56px;
|
height: 56px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fuse-search-bar-expander,
|
.fuse-search-bar-expander,
|
||||||
.fuse-search-bar-collapser {
|
.fuse-search-bar-collapser {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -16,7 +19,8 @@
|
|||||||
width: 64px !important;
|
width: 64px !important;
|
||||||
height: 64px !important;
|
height: 64px !important;
|
||||||
line-height: 64px !important;
|
line-height: 64px !important;
|
||||||
@include media-breakpoint-down('xs') {
|
|
||||||
|
@include media-breakpoint-down('sm') {
|
||||||
height: 56px !important;
|
height: 56px !important;
|
||||||
line-height: 56px !important;
|
line-height: 56px !important;
|
||||||
}
|
}
|
||||||
@@ -26,7 +30,7 @@
|
|||||||
width: 64px !important;
|
width: 64px !important;
|
||||||
height: 64px !important;
|
height: 64px !important;
|
||||||
line-height: 64px !important;
|
line-height: 64px !important;
|
||||||
@include media-breakpoint-down('xs') {
|
@include media-breakpoint-down('sm') {
|
||||||
height: 56px !important;
|
height: 56px !important;
|
||||||
line-height: 56px !important;
|
line-height: 56px !important;
|
||||||
}
|
}
|
||||||
@@ -70,4 +74,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,22 +2,22 @@
|
|||||||
|
|
||||||
<div class="shortcuts-mobile-toggle" *ngIf="!mobileShortcutsPanelActive" fxLayout="row" fxLayoutAlign="start center"
|
<div class="shortcuts-mobile-toggle" *ngIf="!mobileShortcutsPanelActive" fxLayout="row" fxLayoutAlign="start center"
|
||||||
fxHide fxShow.lt-md>
|
fxHide fxShow.lt-md>
|
||||||
<button md-icon-button (click)="showMobileShortcutsPanel()">
|
<button mat-icon-button (click)="showMobileShortcutsPanel()">
|
||||||
<md-icon class="amber-600-fg">star</md-icon>
|
<mat-icon class="amber-600-fg">star</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="shortcuts" fxHide fxShow.gt-sm [ngClass]="toolbarColor">
|
<div class="shortcuts" fxHide fxShow.gt-sm [ngClass]="toolbarColor">
|
||||||
|
|
||||||
<div fxLayout="row" fxLayoutAlign="space-between center" fxFlex>
|
<div fxLayout="row" fxLayoutAlign="space-between center" fxFlex="0 1 auto">
|
||||||
|
|
||||||
<div fxLayout="row" fxLayoutAlign="start center">
|
<div fxLayout="row" fxLayoutAlign="start center">
|
||||||
|
|
||||||
<div class="w-40 h-40 p-4" fxLayout="row" fxLayoutAlign="center center"
|
<div class="w-40 h-40 p-4" fxLayout="row" fxLayoutAlign="center center"
|
||||||
*ngFor="let shortcutItem of shortcutItems">
|
*ngFor="let shortcutItem of shortcutItems">
|
||||||
|
|
||||||
<a md-icon-button mdTooltip="{{shortcutItem.title}}" [routerLink]="shortcutItem.url">
|
<a mat-icon-button matTooltip="{{shortcutItem.title}}" [routerLink]="shortcutItem.url">
|
||||||
<md-icon *ngIf="shortcutItem.icon">{{shortcutItem.icon}}</md-icon>
|
<mat-icon *ngIf="shortcutItem.icon">{{shortcutItem.icon}}</mat-icon>
|
||||||
<span *ngIf="!shortcutItem.icon" class="h2 secondary-text text-bold">
|
<span *ngIf="!shortcutItem.icon" class="h2 secondary-text text-bold">
|
||||||
{{shortcutItem.title.substr(0, 1).toUpperCase()}}
|
{{shortcutItem.title.substr(0, 1).toUpperCase()}}
|
||||||
</span>
|
</span>
|
||||||
@@ -25,64 +25,64 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button md-icon-button [mdMenuTriggerFor]="addMenu" md-tooltip="Click to add/remove shortcut"
|
<button mat-icon-button [matMenuTriggerFor]="addMenu" matTooltip="Click to add/remove shortcut"
|
||||||
(onMenuOpen)="onMenuOpen()">
|
(menuOpened)="onMenuOpen()">
|
||||||
<md-icon class="amber-600-fg">star</md-icon>
|
<mat-icon class="amber-600-fg">star</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="shortcuts-mobile-close" fxLayout="row" fxLayoutAlign="start center" fxHide fxShow.lt-md>
|
<div class="shortcuts-mobile-close" fxLayout="row" fxLayoutAlign="start center" fxHide fxShow.lt-md>
|
||||||
<button md-icon-button (click)="hideMobileShortcutsPanel()">
|
<button mat-icon-button (click)="hideMobileShortcutsPanel()">
|
||||||
<md-icon>close</md-icon>
|
<mat-icon>close</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<md-menu #addMenu="mdMenu" class="w-240">
|
<mat-menu #addMenu="matMenu" class="w-240">
|
||||||
|
|
||||||
<md-input-container class="px-16 w-100-p" (click)="$event.stopPropagation()" floatPlaceholder="never">
|
<mat-form-field class="px-16 w-100-p" (click)="$event.stopPropagation()" floatPlaceholder="never">
|
||||||
<input #searchInput mdInput placeholder="Search for an app or a page" (input)="search($event)">
|
<input #searchInput matInput placeholder="Search for an app or a page" (input)="search($event)">
|
||||||
</md-input-container>
|
</mat-form-field>
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<mat-divider></mat-divider>
|
||||||
<md-nav-list *ngIf="!searching" style="max-height: 312px; overflow: auto" perfect-scrollbar>
|
<mat-nav-list *ngIf="!searching" style="max-height: 312px; overflow: auto" fusePerfectScrollbar>
|
||||||
|
|
||||||
<md-list-item *ngFor="let shortcutItem of shortcutItems"
|
<mat-list-item *ngFor="let shortcutItem of shortcutItems"
|
||||||
(click)="toggleShortcut($event, shortcutItem)">
|
(click)="toggleShortcut($event, shortcutItem)">
|
||||||
<div class="w-100-p" fxLayout="row" fxLayoutAlign="start center">
|
<div class="w-100-p" fxLayout="row" fxLayoutAlign="start center">
|
||||||
<md-icon md-list-icon class="mr-8" *ngIf="shortcutItem.icon">{{shortcutItem.icon}}</md-icon>
|
<mat-icon mat-list-icon class="mr-8" *ngIf="shortcutItem.icon">{{shortcutItem.icon}}</mat-icon>
|
||||||
<span class="h2 w-32 h-32 p-4 mr-8 secondary-text text-bold" fxLayout="row"
|
<span class="h2 w-32 h-32 p-4 mr-8 secondary-text text-bold" fxLayout="row"
|
||||||
fxLayoutAlign="center center" *ngIf="!shortcutItem.icon">
|
fxLayoutAlign="center center" *ngIf="!shortcutItem.icon">
|
||||||
{{shortcutItem.title.substr(0, 1).toUpperCase()}}
|
{{shortcutItem.title.substr(0, 1).toUpperCase()}}
|
||||||
</span>
|
</span>
|
||||||
<p md-line fxFlex>{{shortcutItem.title}}</p>
|
<p matLine fxFlex>{{shortcutItem.title}}</p>
|
||||||
<md-icon class="ml-8">star</md-icon>
|
<mat-icon class="ml-8">star</mat-icon>
|
||||||
</div>
|
</div>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
<md-list-item *ngIf="shortcutItems.length === 0">
|
<mat-list-item *ngIf="shortcutItems.length === 0">
|
||||||
<p>
|
<p>
|
||||||
<small>No shortcuts yet!</small>
|
<small>No shortcuts yet!</small>
|
||||||
</p>
|
</p>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
</md-nav-list>
|
</mat-nav-list>
|
||||||
|
|
||||||
<md-nav-list *ngIf="searching" style="max-height: 312px; overflow: auto" perfect-scrollbar>
|
<mat-nav-list *ngIf="searching" style="max-height: 312px; overflow: auto" fusePerfectScrollbar>
|
||||||
<md-list-item *ngFor="let navigationItem of filteredNavigationItems"
|
<mat-list-item *ngFor="let navigationItem of filteredNavigationItems"
|
||||||
(click)="toggleShortcut($event, navigationItem)">
|
(click)="toggleShortcut($event, navigationItem)">
|
||||||
<div class="w-100-p" fxLayout="row" fxLayoutAlign="start center">
|
<div class="w-100-p" fxLayout="row" fxLayoutAlign="start center">
|
||||||
<md-icon md-list-icon class="mr-8" *ngIf="navigationItem.icon">{{navigationItem.icon}}</md-icon>
|
<mat-icon mat-list-icon class="mr-8" *ngIf="navigationItem.icon">{{navigationItem.icon}}</mat-icon>
|
||||||
<span class="h2 w-32 h-32 p-4 mr-8 secondary-text text-bold" fxLayout="row"
|
<span class="h2 w-32 h-32 p-4 mr-8 secondary-text text-bold" fxLayout="row"
|
||||||
fxLayoutAlign="center center" *ngIf="!navigationItem.icon">
|
fxLayoutAlign="center center" *ngIf="!navigationItem.icon">
|
||||||
{{navigationItem.title.substr(0, 1).toUpperCase()}}
|
{{navigationItem.title.substr(0, 1).toUpperCase()}}
|
||||||
</span>
|
</span>
|
||||||
<p md-line fxFlex>{{navigationItem.title}}</p>
|
<p matLine fxFlex>{{navigationItem.title}}</p>
|
||||||
<md-icon class="ml-8" *ngIf="isInShortcuts(navigationItem)">star</md-icon>
|
<mat-icon class="ml-8" *ngIf="isInShortcuts(navigationItem)">star</mat-icon>
|
||||||
</div>
|
</div>
|
||||||
</md-list-item>
|
</mat-list-item>
|
||||||
</md-nav-list>
|
</mat-nav-list>
|
||||||
</md-menu>
|
</mat-menu>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -149,7 +149,9 @@ export class FuseShortcutsComponent implements OnInit, OnDestroy
|
|||||||
|
|
||||||
onMenuOpen()
|
onMenuOpen()
|
||||||
{
|
{
|
||||||
this.searchInputField.nativeElement.focus();
|
setTimeout(() => {
|
||||||
|
this.searchInputField.nativeElement.focus();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
showMobileShortcutsPanel()
|
showMobileShortcutsPanel()
|
||||||
|
|||||||
@@ -1,95 +1,105 @@
|
|||||||
<button #openButton md-icon-button class="open-button md-primary-bg mat-elevation-z2" (click)="openBar()">
|
<button #openButton mat-icon-button class="open-button mat-primary-bg mat-elevation-z2" (click)="openBar()">
|
||||||
<md-icon>settings</md-icon>
|
<mat-icon>settings</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div #panel class="theme-options-panel md-white-bg mat-elevation-z2 pb-16">
|
<div class="theme-options-panel-overlay" #overlay [fxHide]="barClosed" [@fadeInOut]="!barClosed"></div>
|
||||||
|
|
||||||
<button md-icon-button class="close-button" (click)="closeBar()">
|
<div #panel class="theme-options-panel mat-white-bg mat-elevation-z8">
|
||||||
<md-icon>close</md-icon>
|
|
||||||
|
<button mat-icon-button class="close-button" (click)="closeBar()">
|
||||||
|
<mat-icon>close</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<md-list>
|
<div class="theme-options-panel-inner" fxLayout="column" fxLayoutAlign="start start">
|
||||||
<h3 md-subheader>Navigation:</h3>
|
|
||||||
<md-list-item>
|
|
||||||
<md-radio-group [(ngModel)]="fuseSettings.layout.navigation" (ngModelChange)="onSettingsChange()">
|
|
||||||
<md-radio-button class="mr-8" value="left">Left</md-radio-button>
|
|
||||||
<md-radio-button class="mr-8" value="right">Right</md-radio-button>
|
|
||||||
<md-radio-button class="mr-8" value="none">None</md-radio-button>
|
|
||||||
</md-radio-group>
|
|
||||||
</md-list-item>
|
|
||||||
|
|
||||||
<h3 md-subheader>Toolbar:</h3>
|
<h3>Navigation:</h3>
|
||||||
<md-list-item>
|
<mat-radio-group [(ngModel)]="fuseSettings.layout.navigation" (ngModelChange)="onSettingsChange()"
|
||||||
<md-radio-group [(ngModel)]="fuseSettings.layout.toolbar" (ngModelChange)="onSettingsChange()">
|
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
|
||||||
<md-radio-button class="mr-8" value="below">Below</md-radio-button>
|
<mat-radio-button class="mr-8 mb-8" value="top">Top</mat-radio-button>
|
||||||
<md-radio-button class="mr-8" value="above">Above</md-radio-button>
|
<mat-radio-button class="mr-8 mb-8" value="left">Left</mat-radio-button>
|
||||||
<md-radio-button class="mr-8" value="none">None</md-radio-button>
|
<mat-radio-button class="mr-8 mb-8" value="right">Right</mat-radio-button>
|
||||||
</md-radio-group>
|
<mat-radio-button class="mr-8 mb-8" value="none">None</mat-radio-button>
|
||||||
</md-list-item>
|
</mat-radio-group>
|
||||||
|
|
||||||
<h3 md-subheader>Footer:</h3>
|
<h3>Navigation Fold (for vertical navigation):</h3>
|
||||||
<md-list-item>
|
<mat-slide-toggle [(ngModel)]="fuseSettings.layout.navigationFolded"
|
||||||
<md-radio-group [(ngModel)]="fuseSettings.layout.footer" (ngModelChange)="onSettingsChange()">
|
(change)="onSettingsChange()">
|
||||||
<md-radio-button class="mr-8" value="below">Below</md-radio-button>
|
Folded
|
||||||
<md-radio-button class="mr-8" value="above">Above</md-radio-button>
|
</mat-slide-toggle>
|
||||||
<md-radio-button class="mr-8" value="none">None</md-radio-button>
|
|
||||||
</md-radio-group>
|
|
||||||
</md-list-item>
|
|
||||||
|
|
||||||
<md-divider></md-divider>
|
<h3 class="mt-24">Toolbar:</h3>
|
||||||
|
<mat-radio-group [(ngModel)]="fuseSettings.layout.toolbar" (ngModelChange)="onSettingsChange()"
|
||||||
|
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
|
||||||
|
<mat-radio-button class="mr-8 mb-8" value="below">Below</mat-radio-button>
|
||||||
|
<mat-radio-button class="mr-8 mb-8" value="above">Above</mat-radio-button>
|
||||||
|
<mat-radio-button class="mr-8 mb-8" value="none">None</mat-radio-button>
|
||||||
|
</mat-radio-group>
|
||||||
|
|
||||||
<h3 md-subheader>Colors:</h3>
|
<h3 class="mt-24">Footer:</h3>
|
||||||
|
<mat-radio-group [(ngModel)]="fuseSettings.layout.footer" (ngModelChange)="onSettingsChange()"
|
||||||
|
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
|
||||||
|
<mat-radio-button class="mr-8 mb-8" value="below">Below</mat-radio-button>
|
||||||
|
<mat-radio-button class="mr-8 mb-8" value="above">Above</mat-radio-button>
|
||||||
|
<mat-radio-button class="mr-8 mb-8" value="none">None</mat-radio-button>
|
||||||
|
</mat-radio-group>
|
||||||
|
|
||||||
|
<h3 class="mt-24">Layout Mode:</h3>
|
||||||
|
<mat-radio-group [(ngModel)]="fuseSettings.layout.mode" (ngModelChange)="onSettingsChange()"
|
||||||
|
fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign="start start" fxLayoutWrap>
|
||||||
|
<mat-radio-button class="mr-8 mb-8" value="boxed">Boxed</mat-radio-button>
|
||||||
|
<mat-radio-button class="mr-8 mb-8" value="fullwidth">Fullwidth</mat-radio-button>
|
||||||
|
</mat-radio-group>
|
||||||
|
|
||||||
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
|
<h3>Colors:</h3>
|
||||||
|
<div class="colors">
|
||||||
|
|
||||||
<md-list-item>
|
|
||||||
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
|
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
|
||||||
<h4>Toolbar Color</h4>
|
<h4 class="mr-8">Toolbar Color</h4>
|
||||||
<fuse-material-color-picker [(selectedClass)]="fuseSettings.colorClasses.toolbar" (onValueChange)="onSettingsChange()"></fuse-material-color-picker>
|
<fuse-material-color-picker [(selectedClass)]="fuseSettings.colorClasses.toolbar"
|
||||||
|
(onValueChange)="onSettingsChange()"></fuse-material-color-picker>
|
||||||
</div>
|
</div>
|
||||||
</md-list-item>
|
|
||||||
|
|
||||||
<md-list-item>
|
|
||||||
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
|
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
|
||||||
<h4>Navigation Bar Color</h4>
|
<h4 class="mr-8">Navigation Bar Color</h4>
|
||||||
<fuse-material-color-picker [(selectedClass)]="fuseSettings.colorClasses.navbar" (onValueChange)="onSettingsChange()"></fuse-material-color-picker>
|
<fuse-material-color-picker [(selectedClass)]="fuseSettings.colorClasses.navbar"
|
||||||
|
(onValueChange)="onSettingsChange()"></fuse-material-color-picker>
|
||||||
</div>
|
</div>
|
||||||
</md-list-item>
|
|
||||||
|
|
||||||
<md-list-item>
|
|
||||||
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
|
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
|
||||||
<h4>Footer Color</h4>
|
<h4 class="mr-8">Footer Color</h4>
|
||||||
<fuse-material-color-picker [(selectedClass)]="fuseSettings.colorClasses.footer" (onValueChange)="onSettingsChange()"></fuse-material-color-picker>
|
<fuse-material-color-picker [(selectedClass)]="fuseSettings.colorClasses.footer"
|
||||||
|
(onValueChange)="onSettingsChange()"></fuse-material-color-picker>
|
||||||
</div>
|
</div>
|
||||||
</md-list-item>
|
|
||||||
|
|
||||||
<md-divider></md-divider>
|
</div>
|
||||||
|
|
||||||
<h3 md-subheader>Animation:</h3>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
<md-list-item>
|
<h3>Router Animation:</h3>
|
||||||
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
|
<mat-form-field class="w-100-p">
|
||||||
<h4>Router Animation</h4>
|
<mat-select class="p-0" [(ngModel)]="fuseSettings.routerAnimation">
|
||||||
<md-select [(ngModel)]="fuseSettings.routerAnimation">
|
<mat-option value="none">
|
||||||
<md-option value="none">
|
None
|
||||||
None
|
</mat-option>
|
||||||
</md-option>
|
<mat-option value="slideUp">
|
||||||
<md-option value="slideUp">
|
Slide up
|
||||||
Slide up
|
</mat-option>
|
||||||
</md-option>
|
<mat-option value="slideDown">
|
||||||
<md-option value="slideDown">
|
Slide down
|
||||||
Slide down
|
</mat-option>
|
||||||
</md-option>
|
<mat-option value="slideRight">
|
||||||
<md-option value="slideRight">
|
Slide right
|
||||||
Slide right
|
</mat-option>
|
||||||
</md-option>
|
<mat-option value="slideLeft">
|
||||||
<md-option value="slideLeft">
|
Slide left
|
||||||
Slide left
|
</mat-option>
|
||||||
</md-option>
|
<mat-option value="fadeIn">
|
||||||
<md-option value="fadeIn">
|
Fade in
|
||||||
Fade in
|
</mat-option>
|
||||||
</md-option>
|
</mat-select>
|
||||||
</md-select>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
</md-list-item>
|
|
||||||
|
|
||||||
</md-list>
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -14,19 +14,69 @@
|
|||||||
display: block;
|
display: block;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 160px;
|
top: 160px;
|
||||||
|
z-index: 998;
|
||||||
|
|
||||||
|
&.bar-closed .theme-options-panel {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.theme-options-panel {
|
.theme-options-panel {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 320px;
|
width: 360px;
|
||||||
transform: translate3d(100%, 0, 0);
|
transform: translate3d(100%, 0, 0);
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
|
max-height: calc(100vh - 200px);
|
||||||
|
padding: 24px;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
@include media-breakpoint-down('xs') {
|
||||||
|
top: -120px;
|
||||||
|
max-height: calc(100vh - 100px);
|
||||||
|
width: 90vw;
|
||||||
|
}
|
||||||
|
|
||||||
.close-button {
|
.close-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 8px;
|
||||||
right: 0;
|
right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: rgba(0, 0, 0, 0.54);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-divider {
|
||||||
|
display: block !important;
|
||||||
|
width: 100%;
|
||||||
|
margin: 24px 0 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.colors {
|
||||||
|
display: block !important;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-options-panel-overlay {
|
||||||
|
position: fixed;
|
||||||
|
display: block;
|
||||||
|
background: rgba(0, 0, 0, 0);
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: 998;
|
||||||
|
|
||||||
|
@include media-breakpoint-down('sm') {
|
||||||
|
background: rgba(0, 0, 0, 0.37);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.hidden {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,6 +84,10 @@
|
|||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mat-divider {
|
||||||
|
margin: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
.open-button {
|
.open-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
@@ -49,7 +103,7 @@
|
|||||||
opacity: .75;
|
opacity: .75;
|
||||||
z-index: 998;
|
z-index: 998;
|
||||||
|
|
||||||
md-icon {
|
mat-icon {
|
||||||
animation: rotating 3s linear infinite;
|
animation: rotating 3s linear infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +1,38 @@
|
|||||||
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
|
import { Component, ElementRef, HostBinding, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';
|
||||||
import { style, animate, AnimationBuilder, AnimationPlayer } from '@angular/animations';
|
import { style, animate, AnimationBuilder, AnimationPlayer } from '@angular/animations';
|
||||||
import { Subscription } from 'rxjs/Subscription';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
import { FuseConfigService } from '../../services/config.service';
|
import { FuseConfigService } from '../../services/config.service';
|
||||||
|
import { fuseAnimations } from '../../animations';
|
||||||
|
import { FuseNavigationService } from '../navigation/navigation.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector : 'fuse-theme-options',
|
selector : 'fuse-theme-options',
|
||||||
templateUrl: './theme-options.component.html',
|
templateUrl: './theme-options.component.html',
|
||||||
styleUrls : ['./theme-options.component.scss']
|
styleUrls : ['./theme-options.component.scss'],
|
||||||
|
animations : fuseAnimations
|
||||||
})
|
})
|
||||||
export class FuseThemeOptionsComponent implements OnInit, OnDestroy
|
export class FuseThemeOptionsComponent implements OnInit, OnDestroy
|
||||||
{
|
{
|
||||||
@ViewChild('openButton') openButton;
|
@ViewChild('openButton') openButton;
|
||||||
@ViewChild('panel') panel;
|
@ViewChild('panel') panel;
|
||||||
|
@ViewChild('overlay') overlay: ElementRef;
|
||||||
|
|
||||||
public player: AnimationPlayer;
|
public player: AnimationPlayer;
|
||||||
fuseSettings: any;
|
fuseSettings: any;
|
||||||
|
|
||||||
onSettingsChanged: Subscription;
|
onSettingsChanged: Subscription;
|
||||||
|
|
||||||
|
@HostBinding('class.bar-closed') barClosed: boolean;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private animationBuilder: AnimationBuilder,
|
private animationBuilder: AnimationBuilder,
|
||||||
private fuseConfig: FuseConfigService
|
private fuseConfig: FuseConfigService,
|
||||||
|
private navigationService: FuseNavigationService,
|
||||||
|
private renderer: Renderer2
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
this.barClosed = true;
|
||||||
|
|
||||||
this.onSettingsChanged =
|
this.onSettingsChanged =
|
||||||
this.fuseConfig.onSettingsChanged
|
this.fuseConfig.onSettingsChanged
|
||||||
.subscribe(
|
.subscribe(
|
||||||
@@ -30,10 +40,34 @@ export class FuseThemeOptionsComponent implements OnInit, OnDestroy
|
|||||||
this.fuseSettings = newSettings;
|
this.fuseSettings = newSettings;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Get the nav model and add customize nav item
|
||||||
|
// that opens the bar programmatically
|
||||||
|
const navModel = this.navigationService.getNavigationModel();
|
||||||
|
|
||||||
|
navModel.push({
|
||||||
|
'id' : 'custom-function',
|
||||||
|
'title' : 'Custom Function',
|
||||||
|
'type' : 'group',
|
||||||
|
'children': [
|
||||||
|
{
|
||||||
|
'id' : 'customize',
|
||||||
|
'title' : 'Customize',
|
||||||
|
'type' : 'item',
|
||||||
|
'icon' : 'settings',
|
||||||
|
'function': () => {
|
||||||
|
this.openBar();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit()
|
ngOnInit()
|
||||||
{
|
{
|
||||||
|
this.renderer.listen(this.overlay.nativeElement, 'click', () => {
|
||||||
|
this.closeBar();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
onSettingsChange()
|
onSettingsChange()
|
||||||
@@ -49,17 +83,25 @@ export class FuseThemeOptionsComponent implements OnInit, OnDestroy
|
|||||||
style({transform: 'translate3d(0,0,0)'}),
|
style({transform: 'translate3d(0,0,0)'}),
|
||||||
animate('400ms ease', style({transform: 'translate3d(100%,0,0)'}))
|
animate('400ms ease', style({transform: 'translate3d(100%,0,0)'}))
|
||||||
]).create(this.panel.nativeElement);
|
]).create(this.panel.nativeElement);
|
||||||
|
|
||||||
this.player.play();
|
this.player.play();
|
||||||
|
|
||||||
|
this.player.onDone(() => {
|
||||||
|
this.barClosed = true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
openBar()
|
openBar()
|
||||||
{
|
{
|
||||||
|
this.barClosed = false;
|
||||||
|
|
||||||
this.player =
|
this.player =
|
||||||
this.animationBuilder
|
this.animationBuilder
|
||||||
.build([
|
.build([
|
||||||
style({transform: 'translate3d(100%,0,0)'}),
|
style({transform: 'translate3d(100%,0,0)'}),
|
||||||
animate('400ms ease', style({transform: 'translate3d(0,0,0)'}))
|
animate('400ms ease', style({transform: 'translate3d(0,0,0)'}))
|
||||||
]).create(this.panel.nativeElement);
|
]).create(this.panel.nativeElement);
|
||||||
|
|
||||||
this.player.play();
|
this.player.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,4 +62,23 @@ fuse-widget {
|
|||||||
transform: rotateY(360deg);
|
transform: rotateY(360deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mat-form-field {
|
||||||
|
|
||||||
|
&.mat-form-field-type-mat-select {
|
||||||
|
|
||||||
|
.mat-input-wrapper {
|
||||||
|
padding: 16px 0;
|
||||||
|
|
||||||
|
.mat-input-infix {
|
||||||
|
border: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-input-underline {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,9 @@ export class FuseWidgetComponent implements OnInit, AfterContentInit
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|
||||||
this.toggleButtons.forEach(flipButton => {
|
this.toggleButtons.forEach(flipButton => {
|
||||||
this.renderer.listen(flipButton.el.nativeElement, 'click', () => {
|
this.renderer.listen(flipButton.el.nativeElement, 'click', (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
this.toggle();
|
this.toggle();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ export class FuseIfOnDomDirective implements AfterContentChecked
|
|||||||
{
|
{
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.viewContainer.createEmbeddedView(this.templateRef);
|
this.viewContainer.createEmbeddedView(this.templateRef);
|
||||||
}, 0);
|
}, 300);
|
||||||
this.isCreated = true;
|
this.isCreated = true;
|
||||||
}
|
}
|
||||||
else if ( this.isCreated && !document.body.contains(this.element.nativeElement) )
|
else if ( this.isCreated && !document.body.contains(this.element.nativeElement) )
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
import { Directive, Input, OnInit, HostListener, OnDestroy, HostBinding } from '@angular/core';
|
||||||
|
import { MatSidenav } from '@angular/material';
|
||||||
|
import { ObservableMedia } from '@angular/flex-layout';
|
||||||
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
|
import { FuseMatchMedia } from '../../services/match-media.service';
|
||||||
|
import { FuseMatSidenavHelperService } from './fuse-mat-sidenav-helper.service';
|
||||||
|
|
||||||
|
@Directive({
|
||||||
|
selector: '[fuseMatSidenavHelper]'
|
||||||
|
})
|
||||||
|
export class FuseMatSidenavHelperDirective implements OnInit, OnDestroy
|
||||||
|
{
|
||||||
|
matchMediaSubscription: Subscription;
|
||||||
|
|
||||||
|
@HostBinding('class.mat-is-locked-open') isLockedOpen = true;
|
||||||
|
|
||||||
|
@Input('fuseMatSidenavHelper') id: string;
|
||||||
|
@Input('mat-is-locked-open') matIsLockedOpenBreakpoint: string;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private fuseMatSidenavService: FuseMatSidenavHelperService,
|
||||||
|
private fuseMatchMedia: FuseMatchMedia,
|
||||||
|
private observableMedia: ObservableMedia,
|
||||||
|
private matSidenav: MatSidenav
|
||||||
|
)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit()
|
||||||
|
{
|
||||||
|
this.fuseMatSidenavService.setSidenav(this.id, this.matSidenav);
|
||||||
|
|
||||||
|
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
|
||||||
|
{
|
||||||
|
this.isLockedOpen = true;
|
||||||
|
this.matSidenav.mode = 'side';
|
||||||
|
this.matSidenav.toggle(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.isLockedOpen = false;
|
||||||
|
this.matSidenav.mode = 'over';
|
||||||
|
this.matSidenav.toggle(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.matchMediaSubscription = this.fuseMatchMedia.onMediaChange.subscribe(() => {
|
||||||
|
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
|
||||||
|
{
|
||||||
|
this.isLockedOpen = true;
|
||||||
|
this.matSidenav.mode = 'side';
|
||||||
|
this.matSidenav.toggle(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.isLockedOpen = false;
|
||||||
|
this.matSidenav.mode = 'over';
|
||||||
|
this.matSidenav.toggle(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy()
|
||||||
|
{
|
||||||
|
this.matchMediaSubscription.unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Directive({
|
||||||
|
selector: '[fuseMatSidenavToggler]'
|
||||||
|
})
|
||||||
|
export class FuseMatSidenavTogglerDirective
|
||||||
|
{
|
||||||
|
@Input('fuseMatSidenavToggler') id;
|
||||||
|
|
||||||
|
constructor(private fuseMatSidenavService: FuseMatSidenavHelperService)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
@HostListener('click')
|
||||||
|
onClick()
|
||||||
|
{
|
||||||
|
this.fuseMatSidenavService.getSidenav(this.id).toggle();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { MdSidenav } from '@angular/material';
|
import { MatSidenav } from '@angular/material';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FuseMdSidenavHelperService
|
export class FuseMatSidenavHelperService
|
||||||
{
|
{
|
||||||
sidenavInstances: MdSidenav[];
|
sidenavInstances: MatSidenav[];
|
||||||
|
|
||||||
constructor()
|
constructor()
|
||||||
{
|
{
|
||||||
@@ -0,0 +1,181 @@
|
|||||||
|
import { AfterViewInit, Directive, ElementRef, HostListener, OnDestroy } from '@angular/core';
|
||||||
|
import { FuseConfigService } from '../../services/config.service';
|
||||||
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
|
import { Platform } from '@angular/cdk/platform';
|
||||||
|
import PerfectScrollbar from 'perfect-scrollbar';
|
||||||
|
|
||||||
|
@Directive({
|
||||||
|
selector: '[fusePerfectScrollbar]'
|
||||||
|
})
|
||||||
|
export class FusePerfectScrollbarDirective implements AfterViewInit, OnDestroy
|
||||||
|
{
|
||||||
|
onSettingsChanged: Subscription;
|
||||||
|
isDisableCustomScrollbars = false;
|
||||||
|
isMobile = false;
|
||||||
|
isInitialized = true;
|
||||||
|
ps: PerfectScrollbar;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public element: ElementRef,
|
||||||
|
private fuseConfig: FuseConfigService,
|
||||||
|
private platform: Platform
|
||||||
|
)
|
||||||
|
{
|
||||||
|
this.onSettingsChanged =
|
||||||
|
this.fuseConfig.onSettingsChanged
|
||||||
|
.subscribe(
|
||||||
|
(settings) => {
|
||||||
|
this.isDisableCustomScrollbars = !settings.customScrollbars;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if ( this.platform.ANDROID || this.platform.IOS )
|
||||||
|
{
|
||||||
|
this.isMobile = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngAfterViewInit()
|
||||||
|
{
|
||||||
|
if ( this.isMobile || this.isDisableCustomScrollbars )
|
||||||
|
{
|
||||||
|
this.isInitialized = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize the perfect-scrollbar
|
||||||
|
this.ps = new PerfectScrollbar(this.element.nativeElement, {
|
||||||
|
wheelPropagation: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy()
|
||||||
|
{
|
||||||
|
if ( !this.isInitialized || !this.ps )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.onSettingsChanged.unsubscribe();
|
||||||
|
|
||||||
|
// Destroy the perfect-scrollbar
|
||||||
|
this.ps.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
@HostListener('document:click', ['$event'])
|
||||||
|
documentClick(event: Event): void
|
||||||
|
{
|
||||||
|
if ( !this.isInitialized || !this.ps )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the scrollbar on document click..
|
||||||
|
// This isn't the most elegant solution but there is no other way
|
||||||
|
// of knowing when the contents of the scrollable container changes.
|
||||||
|
// Therefore, we update scrollbars on every document click.
|
||||||
|
this.ps.update();
|
||||||
|
}
|
||||||
|
|
||||||
|
update()
|
||||||
|
{
|
||||||
|
if ( !this.isInitialized )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the perfect-scrollbar
|
||||||
|
this.ps.update();
|
||||||
|
}
|
||||||
|
|
||||||
|
destroy()
|
||||||
|
{
|
||||||
|
this.ngOnDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollToX(x: number, speed?: number)
|
||||||
|
{
|
||||||
|
this.animateScrolling('scrollLeft', x, speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollToY(y: number, speed?: number)
|
||||||
|
{
|
||||||
|
this.animateScrolling('scrollTop', y, speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollToTop(offset?: number, speed?: number)
|
||||||
|
{
|
||||||
|
this.animateScrolling('scrollTop', (offset || 0), speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollToLeft(offset?: number, speed?: number)
|
||||||
|
{
|
||||||
|
this.animateScrolling('scrollLeft', (offset || 0), speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollToRight(offset?: number, speed?: number)
|
||||||
|
{
|
||||||
|
const width = this.element.nativeElement.scrollWidth;
|
||||||
|
|
||||||
|
this.animateScrolling('scrollLeft', width - (offset || 0), speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollToBottom(offset?: number, speed?: number)
|
||||||
|
{
|
||||||
|
const height = this.element.nativeElement.scrollHeight;
|
||||||
|
|
||||||
|
this.animateScrolling('scrollTop', height - (offset || 0), speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
animateScrolling(target: string, value: number, speed?: number)
|
||||||
|
{
|
||||||
|
if ( !speed )
|
||||||
|
{
|
||||||
|
this.element.nativeElement[target] = value;
|
||||||
|
|
||||||
|
// PS has weird event sending order, this is a workaround for that
|
||||||
|
this.update();
|
||||||
|
this.update();
|
||||||
|
}
|
||||||
|
else if ( value !== this.element.nativeElement[target] )
|
||||||
|
{
|
||||||
|
let newValue = 0;
|
||||||
|
let scrollCount = 0;
|
||||||
|
|
||||||
|
let oldTimestamp = performance.now();
|
||||||
|
let oldValue = this.element.nativeElement[target];
|
||||||
|
|
||||||
|
const cosParameter = (oldValue - value) / 2;
|
||||||
|
|
||||||
|
const step = (newTimestamp) => {
|
||||||
|
scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));
|
||||||
|
|
||||||
|
newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));
|
||||||
|
|
||||||
|
// Only continue animation if scroll position has not changed
|
||||||
|
if ( this.element.nativeElement[target] === oldValue )
|
||||||
|
{
|
||||||
|
if ( scrollCount >= Math.PI )
|
||||||
|
{
|
||||||
|
this.element.nativeElement[target] = value;
|
||||||
|
|
||||||
|
// PS has weird event sending order, this is a workaround for that
|
||||||
|
this.update();
|
||||||
|
|
||||||
|
this.update();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.element.nativeElement[target] = oldValue = newValue;
|
||||||
|
|
||||||
|
oldTimestamp = newTimestamp;
|
||||||
|
|
||||||
|
window.requestAnimationFrame(step);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
window.requestAnimationFrame(step);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
import { Directive, Input, OnInit, HostListener, OnDestroy, HostBinding, AfterViewInit } from '@angular/core';
|
|
||||||
import { MdSidenav } from '@angular/material';
|
|
||||||
import { FuseMdSidenavHelperService } from 'app/core/directives/md-sidenav-helper/md-sidenav-helper.service';
|
|
||||||
import { FuseMatchMedia } from '../../services/match-media.service';
|
|
||||||
import { ObservableMedia } from '@angular/flex-layout';
|
|
||||||
import { Subscription } from 'rxjs/Subscription';
|
|
||||||
|
|
||||||
@Directive({
|
|
||||||
selector: '[fuseMdSidenavHelper]'
|
|
||||||
})
|
|
||||||
export class FuseMdSidenavHelperDirective implements OnInit, AfterViewInit, OnDestroy
|
|
||||||
{
|
|
||||||
matchMediaSubscription: Subscription;
|
|
||||||
|
|
||||||
@HostBinding('class.md-is-locked-open') isLockedOpen = true;
|
|
||||||
@HostBinding('class.md-stop-transition') stopTransition = true;
|
|
||||||
|
|
||||||
@Input('fuseMdSidenavHelper') id: string;
|
|
||||||
@Input('md-is-locked-open') mdIsLockedOpenBreakpoint: string;
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private fuseMdSidenavService: FuseMdSidenavHelperService,
|
|
||||||
private fuseMatchMedia: FuseMatchMedia,
|
|
||||||
private observableMedia: ObservableMedia,
|
|
||||||
private mdSidenav: MdSidenav
|
|
||||||
)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit()
|
|
||||||
{
|
|
||||||
this.fuseMdSidenavService.setSidenav(this.id, this.mdSidenav);
|
|
||||||
|
|
||||||
if ( this.observableMedia.isActive(this.mdIsLockedOpenBreakpoint) )
|
|
||||||
{
|
|
||||||
this.isLockedOpen = true;
|
|
||||||
this.mdSidenav.mode = 'side';
|
|
||||||
setTimeout(() => {
|
|
||||||
this.mdSidenav.open();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.isLockedOpen = false;
|
|
||||||
this.mdSidenav.mode = 'over';
|
|
||||||
setTimeout(() => {
|
|
||||||
this.mdSidenav.close();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
this.matchMediaSubscription = this.fuseMatchMedia.onMediaChange.subscribe(() => {
|
|
||||||
if ( this.observableMedia.isActive(this.mdIsLockedOpenBreakpoint) )
|
|
||||||
{
|
|
||||||
this.isLockedOpen = true;
|
|
||||||
this.mdSidenav.mode = 'side';
|
|
||||||
this.mdSidenav.open();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.isLockedOpen = false;
|
|
||||||
this.mdSidenav.mode = 'over';
|
|
||||||
this.mdSidenav.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ngAfterViewInit()
|
|
||||||
{
|
|
||||||
setTimeout(() => {
|
|
||||||
this.stopTransition = false;
|
|
||||||
}, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnDestroy()
|
|
||||||
{
|
|
||||||
this.matchMediaSubscription.unsubscribe();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Directive({
|
|
||||||
selector: '[fuseMdSidenavToggler]'
|
|
||||||
})
|
|
||||||
export class FuseMdSidenavTogglerDirective
|
|
||||||
{
|
|
||||||
@Input('fuseMdSidenavToggler') id;
|
|
||||||
|
|
||||||
constructor(private fuseMdSidenavService: FuseMdSidenavHelperService)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
@HostListener('click')
|
|
||||||
onClick()
|
|
||||||
{
|
|
||||||
this.fuseMdSidenavService.getSidenav(this.id).toggle();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
export class FuseUtils
|
export class FuseUtils
|
||||||
{
|
{
|
||||||
|
|
||||||
public static filterArrayByString(mainArr, searchText)
|
public static filterArrayByString(mainArr, searchText)
|
||||||
{
|
{
|
||||||
if ( searchText === '' )
|
if ( searchText === '' )
|
||||||
@@ -17,7 +16,6 @@ export class FuseUtils
|
|||||||
|
|
||||||
public static searchInObj(itemObj, searchText)
|
public static searchInObj(itemObj, searchText)
|
||||||
{
|
{
|
||||||
|
|
||||||
for ( const prop in itemObj )
|
for ( const prop in itemObj )
|
||||||
{
|
{
|
||||||
if ( !itemObj.hasOwnProperty(prop) )
|
if ( !itemObj.hasOwnProperty(prop) )
|
||||||
@@ -29,7 +27,7 @@ export class FuseUtils
|
|||||||
|
|
||||||
if ( typeof value === 'string' )
|
if ( typeof value === 'string' )
|
||||||
{
|
{
|
||||||
if ( this.searchInSting(value, searchText) )
|
if ( this.searchInString(value, searchText) )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -41,7 +39,6 @@ export class FuseUtils
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( typeof value === 'object' )
|
if ( typeof value === 'object' )
|
||||||
@@ -60,7 +57,7 @@ export class FuseUtils
|
|||||||
{
|
{
|
||||||
if ( typeof value === 'string' )
|
if ( typeof value === 'string' )
|
||||||
{
|
{
|
||||||
if ( this.searchInSting(value, searchText) )
|
if ( this.searchInString(value, searchText) )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -76,7 +73,7 @@ export class FuseUtils
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static searchInSting(value, searchText)
|
public static searchInString(value, searchText)
|
||||||
{
|
{
|
||||||
return value.toLowerCase().includes(searchText);
|
return value.toLowerCase().includes(searchText);
|
||||||
}
|
}
|
||||||
@@ -85,9 +82,33 @@ export class FuseUtils
|
|||||||
{
|
{
|
||||||
function S4()
|
function S4()
|
||||||
{
|
{
|
||||||
return (((1 + Math.random()) * 0x10000) || 0).toString(16).substring(1);
|
return Math.floor((1 + Math.random()) * 0x10000)
|
||||||
|
.toString(16)
|
||||||
|
.substring(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (S4() + S4());
|
return S4() + S4();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static toggleInArray(item, array)
|
||||||
|
{
|
||||||
|
if ( array.indexOf(item) === -1 )
|
||||||
|
{
|
||||||
|
array.push(item);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
array.splice(array.indexOf(item), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static handleize(text)
|
||||||
|
{
|
||||||
|
return text.toString().toLowerCase()
|
||||||
|
.replace(/\s+/g, '-') // Replace spaces with -
|
||||||
|
.replace(/[^\w\-]+/g, '') // Remove all non-word chars
|
||||||
|
.replace(/\-\-+/g, '-') // Replace multiple - with single -
|
||||||
|
.replace(/^-+/, '') // Trim - from start of text
|
||||||
|
.replace(/-+$/, ''); // Trim - from end of text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -681,6 +681,7 @@ const matColors = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// tslint:disable-next-line
|
||||||
const matPresetColors = [
|
const matPresetColors = [
|
||||||
'#ffebee', '#ffcdd2', '#ef9a9a', '#e57373', '#ef5350', '#f44336', '#e53935', '#d32f2f', '#c62828', '#b71c1c', '#ff8a80', '#ff5252', '#ff1744', '#d50000', '#fce4ec', '#f8bbd0', '#f48fb1', '#f06292', '#ec407a', '#e91e63', '#d81b60', '#c2185b', '#ad1457', '#880e4f', '#ff80ab', '#ff4081', '#f50057', '#c51162', '#f3e5f5', '#e1bee7', '#ce93d8', '#ba68c8', '#ab47bc', '#9c27b0', '#8e24aa', '#7b1fa2', '#6a1b9a', '#4a148c', '#ea80fc', '#e040fb', '#d500f9', '#aa00ff', '#ede7f6', '#d1c4e9', '#b39ddb', '#9575cd', '#7e57c2', '#673ab7', '#5e35b1', '#512da8', '#4527a0', '#311b92', '#b388ff', '#7c4dff', '#651fff', '#6200ea', '#e8eaf6', '#c5cae9', '#9fa8da', '#7986cb', '#5c6bc0', '#3f51b5', '#3949ab', '#303f9f', '#283593', '#1a237e', '#8c9eff', '#536dfe', '#3d5afe', '#304ffe', '#e3f2fd', '#bbdefb', '#90caf9', '#64b5f6', '#42a5f5', '#2196f3', '#1e88e5', '#1976d2', '#1565c0', '#0d47a1', '#82b1ff', '#448aff', '#2979ff', '#2962ff', '#e1f5fe', '#b3e5fc', '#81d4fa', '#4fc3f7', '#29b6f6', '#03a9f4', '#039be5', '#0288d1', '#0277bd', '#01579b', '#80d8ff', '#40c4ff', '#00b0ff', '#0091ea', '#e0f7fa', '#b2ebf2', '#80deea', '#4dd0e1', '#26c6da', '#00bcd4', '#00acc1', '#0097a7', '#00838f', '#006064', '#84ffff', '#18ffff', '#00e5ff', '#00b8d4', '#e0f2f1', '#b2dfdb', '#80cbc4', '#4db6ac', '#26a69a', '#009688', '#00897b', '#00796b', '#00695c', '#004d40', '#a7ffeb', '#64ffda', '#1de9b6', '#00bfa5', '#e8f5e9', '#c8e6c9', '#a5d6a7', '#81c784', '#66bb6a', '#4caf50', '#43a047', '#388e3c', '#2e7d32', '#1b5e20', '#b9f6ca', '#69f0ae', '#00e676', '#00c853', '#f1f8e9', '#dcedc8', '#c5e1a5', '#aed581', '#9ccc65', '#8bc34a', '#7cb342', '#689f38', '#558b2f', '#33691e', '#ccff90', '#b2ff59', '#76ff03', '#64dd17', '#f9fbe7', '#f0f4c3', '#e6ee9c', '#dce775', '#d4e157', '#cddc39', '#c0ca33', '#afb42b', '#9e9d24', '#827717', '#f4ff81', '#eeff41', '#c6ff00', '#aeea00', '#fffde7', '#fff9c4', '#fff59d', '#fff176', '#ffee58', '#ffeb3b', '#fdd835', '#fbc02d', '#f9a825', '#f57f17', '#ffff8d', '#ffff00', '#ffea00', '#ffd600', '#fff8e1', '#ffecb3', '#ffe082', '#ffd54f', '#ffca28', '#ffc107', '#ffb300', '#ffa000', '#ff8f00', '#ff6f00', '#ffe57f', '#ffd740', '#ffc400', '#ffab00', '#fff3e0', '#ffe0b2', '#ffcc80', '#ffb74d', '#ffa726', '#ff9800', '#fb8c00', '#f57c00', '#ef6c00', '#e65100', '#ffd180', '#ffab40', '#ff9100', '#ff6d00', '#fbe9e7', '#ffccbc', '#ffab91', '#ff8a65', '#ff7043', '#ff5722', '#f4511e', '#e64a19', '#d84315', '#bf360c', '#ff9e80', '#ff6e40', '#ff3d00', '#dd2c00', '#efebe9', '#d7ccc8', '#bcaaa4', '#a1887f', '#8d6e63', '#795548', '#6d4c41', '#5d4037', '#4e342e', '#3e2723', '#d7ccc8', '#bcaaa4', '#8d6e63', '#5d4037', '#fafafa', '#f5f5f5', '#eeeeee', '#e0e0e0', '#bdbdbd', '#9e9e9e', '#757575', '#616161', '#424242', '#212121', '#ffffff', '#eeeeee', '#bdbdbd', '#616161', '#eceff1', '#cfd8dc', '#b0bec5', '#90a4ae', '#78909c', '#607d8b', '#546e7a', '#455a64', '#37474f', '#263238', '#cfd8dc', '#b0bec5', '#78909c', '#455a64'
|
'#ffebee', '#ffcdd2', '#ef9a9a', '#e57373', '#ef5350', '#f44336', '#e53935', '#d32f2f', '#c62828', '#b71c1c', '#ff8a80', '#ff5252', '#ff1744', '#d50000', '#fce4ec', '#f8bbd0', '#f48fb1', '#f06292', '#ec407a', '#e91e63', '#d81b60', '#c2185b', '#ad1457', '#880e4f', '#ff80ab', '#ff4081', '#f50057', '#c51162', '#f3e5f5', '#e1bee7', '#ce93d8', '#ba68c8', '#ab47bc', '#9c27b0', '#8e24aa', '#7b1fa2', '#6a1b9a', '#4a148c', '#ea80fc', '#e040fb', '#d500f9', '#aa00ff', '#ede7f6', '#d1c4e9', '#b39ddb', '#9575cd', '#7e57c2', '#673ab7', '#5e35b1', '#512da8', '#4527a0', '#311b92', '#b388ff', '#7c4dff', '#651fff', '#6200ea', '#e8eaf6', '#c5cae9', '#9fa8da', '#7986cb', '#5c6bc0', '#3f51b5', '#3949ab', '#303f9f', '#283593', '#1a237e', '#8c9eff', '#536dfe', '#3d5afe', '#304ffe', '#e3f2fd', '#bbdefb', '#90caf9', '#64b5f6', '#42a5f5', '#2196f3', '#1e88e5', '#1976d2', '#1565c0', '#0d47a1', '#82b1ff', '#448aff', '#2979ff', '#2962ff', '#e1f5fe', '#b3e5fc', '#81d4fa', '#4fc3f7', '#29b6f6', '#03a9f4', '#039be5', '#0288d1', '#0277bd', '#01579b', '#80d8ff', '#40c4ff', '#00b0ff', '#0091ea', '#e0f7fa', '#b2ebf2', '#80deea', '#4dd0e1', '#26c6da', '#00bcd4', '#00acc1', '#0097a7', '#00838f', '#006064', '#84ffff', '#18ffff', '#00e5ff', '#00b8d4', '#e0f2f1', '#b2dfdb', '#80cbc4', '#4db6ac', '#26a69a', '#009688', '#00897b', '#00796b', '#00695c', '#004d40', '#a7ffeb', '#64ffda', '#1de9b6', '#00bfa5', '#e8f5e9', '#c8e6c9', '#a5d6a7', '#81c784', '#66bb6a', '#4caf50', '#43a047', '#388e3c', '#2e7d32', '#1b5e20', '#b9f6ca', '#69f0ae', '#00e676', '#00c853', '#f1f8e9', '#dcedc8', '#c5e1a5', '#aed581', '#9ccc65', '#8bc34a', '#7cb342', '#689f38', '#558b2f', '#33691e', '#ccff90', '#b2ff59', '#76ff03', '#64dd17', '#f9fbe7', '#f0f4c3', '#e6ee9c', '#dce775', '#d4e157', '#cddc39', '#c0ca33', '#afb42b', '#9e9d24', '#827717', '#f4ff81', '#eeff41', '#c6ff00', '#aeea00', '#fffde7', '#fff9c4', '#fff59d', '#fff176', '#ffee58', '#ffeb3b', '#fdd835', '#fbc02d', '#f9a825', '#f57f17', '#ffff8d', '#ffff00', '#ffea00', '#ffd600', '#fff8e1', '#ffecb3', '#ffe082', '#ffd54f', '#ffca28', '#ffc107', '#ffb300', '#ffa000', '#ff8f00', '#ff6f00', '#ffe57f', '#ffd740', '#ffc400', '#ffab00', '#fff3e0', '#ffe0b2', '#ffcc80', '#ffb74d', '#ffa726', '#ff9800', '#fb8c00', '#f57c00', '#ef6c00', '#e65100', '#ffd180', '#ffab40', '#ff9100', '#ff6d00', '#fbe9e7', '#ffccbc', '#ffab91', '#ff8a65', '#ff7043', '#ff5722', '#f4511e', '#e64a19', '#d84315', '#bf360c', '#ff9e80', '#ff6e40', '#ff3d00', '#dd2c00', '#efebe9', '#d7ccc8', '#bcaaa4', '#a1887f', '#8d6e63', '#795548', '#6d4c41', '#5d4037', '#4e342e', '#3e2723', '#d7ccc8', '#bcaaa4', '#8d6e63', '#5d4037', '#fafafa', '#f5f5f5', '#eeeeee', '#e0e0e0', '#bdbdbd', '#9e9e9e', '#757575', '#616161', '#424242', '#212121', '#ffffff', '#eeeeee', '#bdbdbd', '#616161', '#eceff1', '#cfd8dc', '#b0bec5', '#90a4ae', '#78909c', '#607d8b', '#546e7a', '#455a64', '#37474f', '#263238', '#cfd8dc', '#b0bec5', '#78909c', '#455a64'
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,106 +1,108 @@
|
|||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import {
|
import {
|
||||||
MdAutocompleteModule,
|
MatAutocompleteModule,
|
||||||
MdButtonModule,
|
MatButtonModule,
|
||||||
MdButtonToggleModule,
|
MatButtonToggleModule,
|
||||||
MdCheckboxModule,
|
MatCheckboxModule,
|
||||||
MdToolbarModule,
|
MatToolbarModule,
|
||||||
MdTooltipModule,
|
MatTooltipModule,
|
||||||
MdCardModule,
|
MatCardModule,
|
||||||
MdChipsModule,
|
MatChipsModule,
|
||||||
MdCoreModule,
|
MatDatepickerModule,
|
||||||
MdDatepickerModule,
|
MatDialogModule,
|
||||||
MdDialogModule,
|
MatExpansionModule,
|
||||||
MdExpansionModule,
|
MatFormFieldModule,
|
||||||
MdGridListModule,
|
MatGridListModule,
|
||||||
MdIconModule,
|
MatIconModule,
|
||||||
MdInputModule,
|
MatInputModule,
|
||||||
MdListModule,
|
MatListModule,
|
||||||
MdMenuModule,
|
MatMenuModule,
|
||||||
MdNativeDateModule,
|
MatNativeDateModule,
|
||||||
MdPaginatorModule,
|
MatPaginatorModule,
|
||||||
MdProgressBarModule,
|
MatProgressBarModule,
|
||||||
MdProgressSpinnerModule,
|
MatProgressSpinnerModule,
|
||||||
MdRadioModule,
|
MatRadioModule,
|
||||||
MdRippleModule,
|
MatRippleModule,
|
||||||
MdSelectModule,
|
MatSelectModule,
|
||||||
MdSidenavModule,
|
MatSidenavModule,
|
||||||
MdSliderModule,
|
MatSliderModule,
|
||||||
MdSlideToggleModule,
|
MatSlideToggleModule,
|
||||||
MdSnackBarModule,
|
MatSnackBarModule,
|
||||||
MdSortModule,
|
MatSortModule,
|
||||||
MdTableModule,
|
MatTableModule,
|
||||||
MdTabsModule
|
MatTabsModule,
|
||||||
|
MatStepperModule
|
||||||
} from '@angular/material';
|
} from '@angular/material';
|
||||||
import { CdkTableModule } from '@angular/cdk/table';
|
import { CdkTableModule } from '@angular/cdk/table';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
MdAutocompleteModule,
|
MatAutocompleteModule,
|
||||||
MdButtonModule,
|
MatButtonModule,
|
||||||
MdButtonToggleModule,
|
MatButtonToggleModule,
|
||||||
MdCardModule,
|
MatCardModule,
|
||||||
MdCheckboxModule,
|
MatCheckboxModule,
|
||||||
MdChipsModule,
|
MatChipsModule,
|
||||||
MdCoreModule,
|
MatDatepickerModule,
|
||||||
MdDatepickerModule,
|
MatDialogModule,
|
||||||
MdDialogModule,
|
MatExpansionModule,
|
||||||
MdExpansionModule,
|
MatFormFieldModule,
|
||||||
MdGridListModule,
|
MatGridListModule,
|
||||||
MdIconModule,
|
MatIconModule,
|
||||||
MdInputModule,
|
MatInputModule,
|
||||||
MdListModule,
|
MatListModule,
|
||||||
MdMenuModule,
|
MatMenuModule,
|
||||||
MdNativeDateModule,
|
MatNativeDateModule,
|
||||||
MdPaginatorModule,
|
MatPaginatorModule,
|
||||||
MdProgressBarModule,
|
MatProgressBarModule,
|
||||||
MdProgressSpinnerModule,
|
MatProgressSpinnerModule,
|
||||||
MdRadioModule,
|
MatRadioModule,
|
||||||
MdRippleModule,
|
MatRippleModule,
|
||||||
MdSelectModule,
|
MatSelectModule,
|
||||||
MdSidenavModule,
|
MatSidenavModule,
|
||||||
MdSliderModule,
|
MatSliderModule,
|
||||||
MdSlideToggleModule,
|
MatSlideToggleModule,
|
||||||
MdSnackBarModule,
|
MatSnackBarModule,
|
||||||
MdSortModule,
|
MatStepperModule,
|
||||||
MdTableModule,
|
MatSortModule,
|
||||||
MdTabsModule,
|
MatTableModule,
|
||||||
MdToolbarModule,
|
MatTabsModule,
|
||||||
MdTooltipModule,
|
MatToolbarModule,
|
||||||
|
MatTooltipModule,
|
||||||
CdkTableModule
|
CdkTableModule
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
MdAutocompleteModule,
|
MatAutocompleteModule,
|
||||||
MdButtonModule,
|
MatButtonModule,
|
||||||
MdButtonToggleModule,
|
MatButtonToggleModule,
|
||||||
MdCardModule,
|
MatCardModule,
|
||||||
MdCheckboxModule,
|
MatCheckboxModule,
|
||||||
MdChipsModule,
|
MatChipsModule,
|
||||||
MdCoreModule,
|
MatDatepickerModule,
|
||||||
MdDatepickerModule,
|
MatDialogModule,
|
||||||
MdDialogModule,
|
MatExpansionModule,
|
||||||
MdExpansionModule,
|
MatGridListModule,
|
||||||
MdGridListModule,
|
MatIconModule,
|
||||||
MdIconModule,
|
MatInputModule,
|
||||||
MdInputModule,
|
MatListModule,
|
||||||
MdListModule,
|
MatMenuModule,
|
||||||
MdMenuModule,
|
MatNativeDateModule,
|
||||||
MdNativeDateModule,
|
MatPaginatorModule,
|
||||||
MdPaginatorModule,
|
MatProgressBarModule,
|
||||||
MdProgressBarModule,
|
MatProgressSpinnerModule,
|
||||||
MdProgressSpinnerModule,
|
MatRadioModule,
|
||||||
MdRadioModule,
|
MatRippleModule,
|
||||||
MdRippleModule,
|
MatSelectModule,
|
||||||
MdSelectModule,
|
MatSidenavModule,
|
||||||
MdSidenavModule,
|
MatSliderModule,
|
||||||
MdSliderModule,
|
MatSlideToggleModule,
|
||||||
MdSlideToggleModule,
|
MatSnackBarModule,
|
||||||
MdSnackBarModule,
|
MatStepperModule,
|
||||||
MdSortModule,
|
MatSortModule,
|
||||||
MdTableModule,
|
MatTableModule,
|
||||||
MdTabsModule,
|
MatTabsModule,
|
||||||
MdToolbarModule,
|
MatToolbarModule,
|
||||||
MdTooltipModule,
|
MatTooltipModule,
|
||||||
CdkTableModule
|
CdkTableModule
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -4,32 +4,34 @@ import { CommonModule } from '@angular/common';
|
|||||||
|
|
||||||
import { MaterialModule } from './material.module';
|
import { MaterialModule } from './material.module';
|
||||||
import { FlexLayoutModule } from '@angular/flex-layout';
|
import { FlexLayoutModule } from '@angular/flex-layout';
|
||||||
import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';
|
|
||||||
import { ColorPickerModule } from 'ngx-color-picker';
|
import { ColorPickerModule } from 'ngx-color-picker';
|
||||||
import { NgxDnDModule } from '@swimlane/ngx-dnd';
|
import { NgxDnDModule } from '@swimlane/ngx-dnd';
|
||||||
import { NgxDatatableModule } from '@swimlane/ngx-datatable';
|
import { NgxDatatableModule } from '@swimlane/ngx-datatable';
|
||||||
|
|
||||||
import { FuseMdSidenavHelperDirective, FuseMdSidenavTogglerDirective } from '../directives/md-sidenav-helper/md-sidenav-helper.directive';
|
import { FuseMatSidenavHelperDirective, FuseMatSidenavTogglerDirective } from '../directives/fuse-mat-sidenav-helper/fuse-mat-sidenav-helper.directive';
|
||||||
|
import { FuseMatSidenavHelperService } from '../directives/fuse-mat-sidenav-helper/fuse-mat-sidenav-helper.service';
|
||||||
import { FusePipesModule } from '../pipes/pipes.module';
|
import { FusePipesModule } from '../pipes/pipes.module';
|
||||||
import { FuseConfirmDialogComponent } from '../components/confirm-dialog/confirm-dialog.component';
|
import { FuseConfirmDialogComponent } from '../components/confirm-dialog/confirm-dialog.component';
|
||||||
import { FuseCountdownComponent } from '../components/countdown/countdown.component';
|
import { FuseCountdownComponent } from '../components/countdown/countdown.component';
|
||||||
import { FuseNavigationService } from '../components/navigation/navigation.service';
|
|
||||||
import { FuseMatchMedia } from '../services/match-media.service';
|
import { FuseMatchMedia } from '../services/match-media.service';
|
||||||
import { FuseNavbarService } from '../../main/navbar/navbar.service';
|
import { FuseNavbarVerticalService } from '../../main/navbar/vertical/navbar-vertical.service';
|
||||||
import { FuseMdSidenavHelperService } from '../directives/md-sidenav-helper/md-sidenav-helper.service';
|
import { FuseHighlightComponent } from '../components/highlight/highlight.component';
|
||||||
import { FuseHljsComponent } from '../components/hljs/hljs.component';
|
import { FusePerfectScrollbarDirective } from '../directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive';
|
||||||
import { FuseIfOnDomDirective } from '../directives/fuse-if-on-dom/fuse-if-on-dom.directive';
|
import { FuseIfOnDomDirective } from '../directives/fuse-if-on-dom/fuse-if-on-dom.directive';
|
||||||
import { FuseMaterialColorPickerComponent } from '../components/material-color-picker/material-color-picker.component';
|
import { FuseMaterialColorPickerComponent } from '../components/material-color-picker/material-color-picker.component';
|
||||||
|
import { FuseTranslationLoaderService } from '../services/translation-loader.service';
|
||||||
import { CookieService } from 'ngx-cookie-service';
|
import { CookieService } from 'ngx-cookie-service';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations : [
|
declarations : [
|
||||||
FuseMdSidenavHelperDirective,
|
FuseMatSidenavHelperDirective,
|
||||||
FuseMdSidenavTogglerDirective,
|
FuseMatSidenavTogglerDirective,
|
||||||
FuseConfirmDialogComponent,
|
FuseConfirmDialogComponent,
|
||||||
FuseCountdownComponent,
|
FuseCountdownComponent,
|
||||||
FuseHljsComponent,
|
FuseHighlightComponent,
|
||||||
FuseIfOnDomDirective,
|
FuseIfOnDomDirective,
|
||||||
|
FusePerfectScrollbarDirective,
|
||||||
FuseMaterialColorPickerComponent
|
FuseMaterialColorPickerComponent
|
||||||
],
|
],
|
||||||
imports : [
|
imports : [
|
||||||
@@ -38,7 +40,6 @@ import { CookieService } from 'ngx-cookie-service';
|
|||||||
CommonModule,
|
CommonModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
FusePipesModule,
|
FusePipesModule,
|
||||||
PerfectScrollbarModule,
|
|
||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
ColorPickerModule,
|
ColorPickerModule,
|
||||||
NgxDnDModule,
|
NgxDnDModule,
|
||||||
@@ -49,28 +50,29 @@ import { CookieService } from 'ngx-cookie-service';
|
|||||||
MaterialModule,
|
MaterialModule,
|
||||||
CommonModule,
|
CommonModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
FuseMdSidenavHelperDirective,
|
FuseMatSidenavHelperDirective,
|
||||||
FuseMdSidenavTogglerDirective,
|
FuseMatSidenavTogglerDirective,
|
||||||
FusePipesModule,
|
FusePipesModule,
|
||||||
FuseCountdownComponent,
|
FuseCountdownComponent,
|
||||||
FuseHljsComponent,
|
FuseHighlightComponent,
|
||||||
PerfectScrollbarModule,
|
FusePerfectScrollbarDirective,
|
||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
ColorPickerModule,
|
ColorPickerModule,
|
||||||
NgxDnDModule,
|
NgxDnDModule,
|
||||||
NgxDatatableModule,
|
NgxDatatableModule,
|
||||||
FuseIfOnDomDirective,
|
FuseIfOnDomDirective,
|
||||||
FuseMaterialColorPickerComponent
|
FuseMaterialColorPickerComponent,
|
||||||
|
TranslateModule
|
||||||
],
|
],
|
||||||
entryComponents: [
|
entryComponents: [
|
||||||
FuseConfirmDialogComponent
|
FuseConfirmDialogComponent
|
||||||
],
|
],
|
||||||
providers : [
|
providers : [
|
||||||
CookieService,
|
CookieService,
|
||||||
FuseNavigationService,
|
|
||||||
FuseMatchMedia,
|
FuseMatchMedia,
|
||||||
FuseNavbarService,
|
FuseNavbarVerticalService,
|
||||||
FuseMdSidenavHelperService
|
FuseMatSidenavHelperService,
|
||||||
|
FuseTranslationLoaderService
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
import { Pipe, PipeTransform } from '@angular/core';
|
import { Pipe, PipeTransform } from '@angular/core';
|
||||||
|
|
||||||
@Pipe({name: 'getById'})
|
@Pipe({
|
||||||
|
name: 'getById',
|
||||||
|
pure: false
|
||||||
|
})
|
||||||
export class GetByIdPipe implements PipeTransform
|
export class GetByIdPipe implements PipeTransform
|
||||||
{
|
{
|
||||||
transform(value: any[], id: number, property: string): any
|
transform(value: any[], id: number, property: string): any
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
// ngx-datatable
|
// ngx-datatable
|
||||||
@import '~@swimlane/ngx-datatable/release/index.css';
|
@import '~@swimlane/ngx-datatable/release/themes/material';
|
||||||
@import '~@swimlane/ngx-datatable/release/themes/material.css';
|
|
||||||
@import '~@swimlane/ngx-datatable/release/assets/icons.css';
|
// Perfect scrollbar
|
||||||
// Perfect Scrollbar
|
@import '~perfect-scrollbar/css/perfect-scrollbar';
|
||||||
@import "~perfect-scrollbar/src/css/main";
|
|
||||||
// Fuse
|
// Fuse
|
||||||
@import "fuse";
|
@import "fuse";
|
||||||
|
|
||||||
@@ -25,6 +25,7 @@
|
|||||||
@import "partials/angular-material-fix";
|
@import "partials/angular-material-fix";
|
||||||
@import "partials/typography";
|
@import "partials/typography";
|
||||||
@import "partials/page-layouts";
|
@import "partials/page-layouts";
|
||||||
|
@import "partials/cards";
|
||||||
@import "partials/navigation";
|
@import "partials/navigation";
|
||||||
@import "partials/forms";
|
@import "partials/forms";
|
||||||
@import "partials/toolbar";
|
@import "partials/toolbar";
|
||||||
|
|||||||
@@ -1,6 +1,78 @@
|
|||||||
|
// Fix: "Icon button ripple radius is not correct on Edge & Safari"
|
||||||
.mat-icon-button {
|
.mat-icon-button {
|
||||||
|
|
||||||
.mat-button-ripple {
|
.mat-button-ripple {
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fix: "Inconsistent font sizes across elements"
|
||||||
|
.mat-input-wrapper {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-checkbox {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-radio-button {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-pseudo-checkbox-checked:after {
|
||||||
|
width: 14px !important;
|
||||||
|
height: 7px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fix: "Input underlines has wrong color opacity value"
|
||||||
|
.mat-form-field-underline {
|
||||||
|
background-color: rgba(0, 0, 0, 0.12);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fix: "Some idiots using table-cell and inline-table in mat-select"
|
||||||
|
.mat-form-field {
|
||||||
|
|
||||||
|
&.mat-form-field-type-mat-select {
|
||||||
|
|
||||||
|
.mat-input-infix {
|
||||||
|
display: inline-flex;
|
||||||
|
width: auto;
|
||||||
|
|
||||||
|
.mat-select-trigger {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.mat-select-value {
|
||||||
|
display: flex;
|
||||||
|
max-width: none;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-select-arrow-wrapper {
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fix: "Stepper icons are broken due to Fuse's icon helpers"
|
||||||
|
mat-horizontal-stepper,
|
||||||
|
mat-vertical-stepper {
|
||||||
|
|
||||||
|
mat-step-header {
|
||||||
|
|
||||||
|
mat-icon {
|
||||||
|
height: 16px !important;
|
||||||
|
width: 16px !important;
|
||||||
|
min-width: 0 !important;
|
||||||
|
min-height: 0 !important;
|
||||||
|
color: rgba(255, 255, 255, 0.87) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mat-vertical-stepper {
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
56
src/app/core/scss/partials/_cards.scss
Normal file
56
src/app/core/scss/partials/_cards.scss
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
.fuse-card {
|
||||||
|
max-width: 320px;
|
||||||
|
min-width: 320px;
|
||||||
|
background: white;
|
||||||
|
border-radius: 2px;
|
||||||
|
@include mat-elevation(2);
|
||||||
|
|
||||||
|
&.variable-width {
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
.mat-button {
|
||||||
|
min-width: 0 !important;
|
||||||
|
padding: 0 8px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Button Toggle Group
|
||||||
|
.mat-button-toggle-group,
|
||||||
|
.mat-button-toggle-standalone {
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tabs
|
||||||
|
.mat-tab-labels {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-tab-label {
|
||||||
|
min-width: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Divider
|
||||||
|
.card-divider {
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.12);
|
||||||
|
margin: 16px;
|
||||||
|
|
||||||
|
&.light {
|
||||||
|
border-top-color: rgba(255, 255, 255, 0.12);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.full-width {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Expand Area
|
||||||
|
.card-expand-area {
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.card-expanded-content {
|
||||||
|
padding: 8px 16px 16px 16px;
|
||||||
|
line-height: 1.75;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -51,13 +51,16 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400
|
|||||||
// If the base text color is black...
|
// If the base text color is black...
|
||||||
@if (rgba(black, 1) == rgba($baseTextColor, 1)) {
|
@if (rgba(black, 1) == rgba($baseTextColor, 1)) {
|
||||||
|
|
||||||
&.secondary-text,
|
|
||||||
.secondary-text,
|
|
||||||
.mat-icon,
|
.mat-icon,
|
||||||
.icon {
|
.icon {
|
||||||
color: rgba(0, 0, 0, 0.54);
|
color: rgba(0, 0, 0, 0.54);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.secondary-text,
|
||||||
|
.secondary-text {
|
||||||
|
color: rgba(0, 0, 0, 0.54) !important;
|
||||||
|
}
|
||||||
|
|
||||||
&.hint-text,
|
&.hint-text,
|
||||||
.hint-text,
|
.hint-text,
|
||||||
&.disabled-text,
|
&.disabled-text,
|
||||||
@@ -109,49 +112,60 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400
|
|||||||
@mixin generateMaterialElementColors($contrastColor) {
|
@mixin generateMaterialElementColors($contrastColor) {
|
||||||
|
|
||||||
// If the contrast color is white...
|
// If the contrast color is white...
|
||||||
$foreground: $mat-dark-theme-foreground;
|
$fuseForeground: (
|
||||||
|
base: white,
|
||||||
|
text: white,
|
||||||
|
hint-text: rgba(white, 0.5),
|
||||||
|
divider: rgba(white, 0.12),
|
||||||
|
);
|
||||||
|
|
||||||
// If the contrast color is black...
|
// If the contrast color is black...
|
||||||
@if (rgba(black, 1) == rgba($contrastColor, 1)) {
|
@if (rgba(black, 1) == rgba($contrastColor, 1)) {
|
||||||
$foreground: $mat-light-theme-foreground;
|
|
||||||
|
$fuseForeground: (
|
||||||
|
base: black,
|
||||||
|
hint-text: rgba(black, 0.38),
|
||||||
|
divider: rgba(black, 0.12),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Native Input
|
// Native Input
|
||||||
input[type="text"] {
|
input[type="text"] {
|
||||||
color: mat-color($foreground, base);
|
color: map_get($fuseForeground, base);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Input
|
// Input
|
||||||
.mat-input-placeholder {
|
.mat-input-placeholder {
|
||||||
color: mat-color($foreground, hint-text);
|
color: map_get($fuseForeground, hint-text);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mat-input-underline {
|
.mat-input-underline {
|
||||||
background-color: mat-color($foreground, divider);
|
background-color: map_get($fuseForeground, divider);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select
|
// Select
|
||||||
.mat-select-trigger,
|
.mat-select-trigger,
|
||||||
.mat-select-arrow {
|
.mat-select-arrow {
|
||||||
color: mat-color($foreground, hint-text);
|
color: map_get($fuseForeground, hint-text);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mat-select-underline {
|
.mat-select-underline {
|
||||||
background-color: mat-color($foreground, divider);
|
background-color: map_get($fuseForeground, divider);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mat-select-disabled .mat-select-value,
|
.mat-select-disabled .mat-select-value,
|
||||||
.mat-select-arrow,
|
.mat-select-arrow,
|
||||||
.mat-select-trigger {
|
.mat-select-trigger {
|
||||||
color: mat-color($foreground, hint-text);
|
color: map_get($fuseForeground, hint-text);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mat-select-content, .mat-select-panel-done-animating {
|
.mat-select-content,
|
||||||
background: mat-color($background, card);
|
.mat-select-panel-done-animating {
|
||||||
|
background: map_get($background, card);
|
||||||
}
|
}
|
||||||
|
|
||||||
.mat-select-value {
|
.mat-select-value {
|
||||||
color: mat-color($foreground, text);
|
color: map_get($fuseForeground, text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +176,7 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400
|
|||||||
background-color: $color !important;
|
background-color: $color !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.md-#{$colorName}#{$hue}-bg {
|
.mat-#{$colorName}#{$hue}-bg {
|
||||||
background-color: $color !important;
|
background-color: $color !important;
|
||||||
color: $contrastColor !important;
|
color: $contrastColor !important;
|
||||||
|
|
||||||
@@ -173,6 +187,11 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400
|
|||||||
// Generate material element colors
|
// Generate material element colors
|
||||||
// based on current contrast color
|
// based on current contrast color
|
||||||
@include generateMaterialElementColors($contrastColor);
|
@include generateMaterialElementColors($contrastColor);
|
||||||
|
|
||||||
|
&[disabled] {
|
||||||
|
background-color: rgba($color, .12) !important;
|
||||||
|
color: rgba($contrastColor, .26) !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.#{$colorName}#{$hue}-fg {
|
.#{$colorName}#{$hue}-fg {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
body {
|
body {
|
||||||
|
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,59 @@
|
|||||||
|
// ######################
|
||||||
|
// POSITION HELPERS
|
||||||
|
// ######################
|
||||||
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||||
|
|
||||||
|
@include media-breakpoint-up($breakpoint) {
|
||||||
|
|
||||||
|
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
||||||
|
|
||||||
|
.position#{$infix}-relative {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.position#{$infix}-absolute {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.position#{$infix}-static {
|
||||||
|
position: static;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ####################################
|
||||||
|
// ABSOLUTE POSITION ALIGNMENT HELPERS
|
||||||
|
// ####################################
|
||||||
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||||
|
|
||||||
|
@include media-breakpoint-up($breakpoint) {
|
||||||
|
|
||||||
|
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
||||||
|
|
||||||
|
.align#{$infix}-top {
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.align#{$infix}-right {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.align#{$infix}-bottom {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.align#{$infix}-left {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ######################
|
// ######################
|
||||||
// SIZE HELPERS
|
// SIZE HELPERS
|
||||||
// ######################
|
// ######################
|
||||||
@each $prop, $abbrev in (height: h, width: w) {
|
@each $prop, $abbrev in (height: h, width: w) {
|
||||||
|
|
||||||
@for $index from 0 through 128 {
|
@for $index from 0 through 180 {
|
||||||
$size: $index * 4;
|
$size: $index * 4;
|
||||||
$length: #{$size}px;
|
$length: #{$size}px;
|
||||||
|
|
||||||
@@ -28,7 +78,6 @@
|
|||||||
// ######################
|
// ######################
|
||||||
// SPACING HELPERS
|
// SPACING HELPERS
|
||||||
// ######################
|
// ######################
|
||||||
|
|
||||||
@each $breakpoint in map-keys($grid-breakpoints) {
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||||
|
|
||||||
@include media-breakpoint-up($breakpoint) {
|
@include media-breakpoint-up($breakpoint) {
|
||||||
@@ -83,47 +132,45 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@if ($abbrev == m) {
|
@if ($abbrev == m) {
|
||||||
@for $index from 0 through 64 {
|
|
||||||
$size: $index * 4;
|
|
||||||
$length: #{$size}px;
|
|
||||||
|
|
||||||
// Some special margin utils for flex alignments
|
// Some special margin utils for flex alignments
|
||||||
.m#{$infix}-auto {
|
.m#{$infix}-auto {
|
||||||
margin: auto !important;
|
margin: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mt#{$infix}-auto {
|
.mt#{$infix}-auto {
|
||||||
margin-top: auto !important;
|
margin-top: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mr#{$infix}-auto {
|
.mr#{$infix}-auto {
|
||||||
margin-right: auto !important;
|
margin-right: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mb#{$infix}-auto {
|
.mb#{$infix}-auto {
|
||||||
margin-bottom: auto !important;
|
margin-bottom: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ml#{$infix}-auto {
|
.ml#{$infix}-auto {
|
||||||
margin-left: auto !important;
|
margin-left: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx#{$infix}-auto {
|
.mx#{$infix}-auto {
|
||||||
margin-right: auto !important;
|
margin-right: auto !important;
|
||||||
margin-left: auto !important;
|
margin-left: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.my#{$infix}-auto {
|
.my#{$infix}-auto {
|
||||||
margin-top: auto !important;
|
margin-top: auto !important;
|
||||||
margin-bottom: auto !important;
|
margin-bottom: auto !important;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Border helpers
|
// ######################
|
||||||
|
// BORDER HELPERS
|
||||||
|
// ######################
|
||||||
$border-style: 1px solid rgba(0, 0, 0, 0.12);
|
$border-style: 1px solid rgba(0, 0, 0, 0.12);
|
||||||
|
|
||||||
.border,
|
.border,
|
||||||
@@ -162,3 +209,10 @@ $border-style: 1px solid rgba(0, 0, 0, 0.12);
|
|||||||
border-top: $border-style;
|
border-top: $border-style;
|
||||||
border-bottom: $border-style;
|
border-bottom: $border-style;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ######################
|
||||||
|
// BORDER RADIUS HELPERS
|
||||||
|
// ######################
|
||||||
|
.border-radius-100 {
|
||||||
|
border-radius: 100%;
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
i,
|
i,
|
||||||
md-icon {
|
mat-icon {
|
||||||
color: rgba(0, 0, 0, 0.54);
|
color: rgba(0, 0, 0, 0.54);
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
width: 24px;
|
width: 24px;
|
||||||
|
|||||||
@@ -46,14 +46,14 @@
|
|||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
md-icon.status {
|
mat-icon.status {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 28px;
|
top: 28px;
|
||||||
left: 28px;
|
left: 28px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
md-icon.status {
|
mat-icon.status {
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
|
||||||
&.online {
|
&.online {
|
||||||
@@ -116,7 +116,7 @@ md-icon.status {
|
|||||||
max-height: 48px;
|
max-height: 48px;
|
||||||
height: 48px;
|
height: 48px;
|
||||||
|
|
||||||
md-icon {
|
mat-icon {
|
||||||
margin: 0 16px 0 0;
|
margin: 0 16px 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ md-icon.status {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
md-divider {
|
mat-divider {
|
||||||
margin: 8px 0;
|
margin: 8px 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -196,7 +196,7 @@ md-icon.status {
|
|||||||
background-color: #FFFFFF;
|
background-color: #FFFFFF;
|
||||||
width: 280px;
|
width: 280px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
margin: 24px 24px 0 0;
|
margin: 12px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
&.style-1 {
|
&.style-1 {
|
||||||
@@ -234,7 +234,7 @@ md-icon.status {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
md-divider {
|
mat-divider {
|
||||||
margin: 16px 32px;
|
margin: 16px 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -411,7 +411,6 @@ table {
|
|||||||
color: rgba(0, 0, 0, 0.54);
|
color: rgba(0, 0, 0, 0.54);
|
||||||
border-bottom: 1px solid rgba(0, 0, 0, 0.12);
|
border-bottom: 1px solid rgba(0, 0, 0, 0.12);
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
min-width: 120px;
|
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
padding-left: 24px;
|
padding-left: 24px;
|
||||||
|
|||||||
@@ -11,6 +11,22 @@
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-group {
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
> .group-title {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: 48px;
|
||||||
|
font-weight: 500;
|
||||||
|
padding-left: 24px;
|
||||||
|
margin-top: 8px;
|
||||||
|
font-size: 12px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.nav-item {
|
.nav-item {
|
||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
@@ -31,14 +47,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.nav-link-badge {
|
.nav-link-badge {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
min-width: 20px;
|
min-width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
line-height: 20px;
|
|
||||||
padding: 0 7px;
|
padding: 0 7px;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
transition: opacity 0.2s ease-in-out 0.1s;
|
transition: opacity 0.2s ease-in-out 0.1s;
|
||||||
|
margin-left: 8px;
|
||||||
|
|
||||||
|
+ .collapse-arrow {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@@ -88,7 +110,9 @@
|
|||||||
|
|
||||||
> .nav-item {
|
> .nav-item {
|
||||||
|
|
||||||
> .nav-link {
|
> .nav-link,
|
||||||
|
&.nav-group > .group-title,
|
||||||
|
&.nav-group > .group-items > .nav-item > .nav-link {
|
||||||
padding-left: 56px;
|
padding-left: 56px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +120,9 @@
|
|||||||
|
|
||||||
> .nav-item {
|
> .nav-item {
|
||||||
|
|
||||||
> .nav-link {
|
> .nav-link,
|
||||||
|
&.nav-group > .group-title,
|
||||||
|
&.nav-group > .group-items > .nav-item > .nav-link {
|
||||||
padding-left: 72px;
|
padding-left: 72px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -118,4 +144,83 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
> .nav-group {
|
||||||
|
|
||||||
|
> .group-items {
|
||||||
|
|
||||||
|
> .nav-collapse {
|
||||||
|
background: transparent;
|
||||||
|
transition: background 200ms ease-in-out;
|
||||||
|
|
||||||
|
&.open {
|
||||||
|
background: rgba(0, 0, 0, 0.12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.vertical {
|
||||||
|
|
||||||
|
.nav-group {
|
||||||
|
|
||||||
|
.group-title {
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.horizontal {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
|
||||||
|
.nav-item {
|
||||||
|
|
||||||
|
&.nav-collapse {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.children {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 100%;
|
||||||
|
z-index: 999;
|
||||||
|
min-width: 200px;
|
||||||
|
box-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12);
|
||||||
|
|
||||||
|
&.open {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-link {
|
||||||
|
padding-left: 24px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .nav-item {
|
||||||
|
|
||||||
|
> .nav-link {
|
||||||
|
height: 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.nav-collapse {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
> .nav-link {
|
||||||
|
height: 56px;
|
||||||
|
|
||||||
|
.collapse-arrow {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .children {
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
max-height: $carded-toolbar-height;
|
max-height: $carded-toolbar-height;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
> .content {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
@@ -112,12 +112,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
// Single scroll
|
// Single scroll
|
||||||
&.single-scroll {
|
&.single-scroll {
|
||||||
|
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
flex: 1 0 auto;
|
flex: 1 0 auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
background: none;
|
background: none;
|
||||||
@@ -132,28 +132,25 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
min-width: 240px;
|
min-width: 240px;
|
||||||
max-width: 240px;
|
max-width: 240px;
|
||||||
height: auto;
|
height: auto;
|
||||||
z-index: 2;
|
z-index: 4;
|
||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
@include mat-elevation(7);
|
@include mat-elevation(7);
|
||||||
|
|
||||||
&.md-is-locked-open {
|
&.mat-is-locked-open {
|
||||||
position: relative;
|
|
||||||
background: none;
|
background: none;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.md-stop-transition {
|
|
||||||
|
|
||||||
~ .mat-sidenav-content,
|
|
||||||
~ .mat-drawer-content {
|
|
||||||
transition: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
height: $carded-header-height;
|
height: $carded-header-height;
|
||||||
min-height: $carded-header-height;
|
min-height: $carded-header-height;
|
||||||
max-height: $carded-header-height;
|
max-height: $carded-header-height;
|
||||||
|
|
||||||
|
@include media-breakpoint-down('sm') {
|
||||||
|
height: $carded-header-height-sm;
|
||||||
|
min-height: $carded-header-height-sm;
|
||||||
|
max-height: $carded-header-height-sm;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
@@ -184,6 +181,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
height: $carded-header-height-without-toolbar;
|
height: $carded-header-height-without-toolbar;
|
||||||
min-height: $carded-header-height-without-toolbar;
|
min-height: $carded-header-height-without-toolbar;
|
||||||
max-height: $carded-header-height-without-toolbar;
|
max-height: $carded-header-height-without-toolbar;
|
||||||
|
|
||||||
|
@include media-breakpoint-down('sm') {
|
||||||
|
height: $carded-header-height-without-toolbar-sm;
|
||||||
|
min-height: $carded-header-height-without-toolbar-sm;
|
||||||
|
max-height: $carded-header-height-without-toolbar-sm;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-card {
|
.content-card {
|
||||||
@@ -219,21 +222,76 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tabbed
|
||||||
|
&.tabbed {
|
||||||
|
|
||||||
|
> mat-sidenav-container {
|
||||||
|
|
||||||
|
> .mat-sidenav-content,
|
||||||
|
> .mat-drawer-content {
|
||||||
|
width: calc(100% - 240px);
|
||||||
|
|
||||||
|
.center {
|
||||||
|
width: calc(100% - 32px);
|
||||||
|
|
||||||
|
@include media-breakpoint-down('md') {
|
||||||
|
width: calc(100% - 64px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-card {
|
||||||
|
|
||||||
|
.content {
|
||||||
|
|
||||||
|
.mat-tab-group {
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.mat-tab-header {
|
||||||
|
|
||||||
|
.mat-tab-label {
|
||||||
|
height: 64px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-tab-body {
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.mat-tab-body-content {
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.tab-content {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Left sidenav
|
// Left sidenav
|
||||||
&.left-sidenav {
|
&.left-sidenav {
|
||||||
|
|
||||||
// Sidenav
|
// Sidenav
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
|
|
||||||
.sidenav {
|
.sidenav {
|
||||||
|
|
||||||
&.md-is-locked-open {
|
&.mat-is-locked-open {
|
||||||
|
|
||||||
~ .mat-sidenav-content,
|
~ .mat-sidenav-content,
|
||||||
~ .mat-drawer-content {
|
~ .mat-drawer-content {
|
||||||
margin-left: 0 !important;
|
|
||||||
|
|
||||||
.center {
|
.center {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
@@ -248,16 +306,15 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
&.right-sidenav {
|
&.right-sidenav {
|
||||||
|
|
||||||
// Sidenav
|
// Sidenav
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
|
|
||||||
.sidenav {
|
.sidenav {
|
||||||
order: 999;
|
order: 999;
|
||||||
|
|
||||||
&.md-is-locked-open {
|
&.mat-is-locked-open {
|
||||||
|
|
||||||
~ .mat-sidenav-content,
|
~ .mat-sidenav-content,
|
||||||
~ .mat-drawer-content {
|
~ .mat-drawer-content {
|
||||||
margin-right: 0 !important;
|
|
||||||
|
|
||||||
.center {
|
.center {
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
@@ -284,6 +341,10 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fullwidth
|
// Fullwidth
|
||||||
|
&.fullwidth {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
&.fullwidth,
|
&.fullwidth,
|
||||||
&.inner-sidenav {
|
&.inner-sidenav {
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
@@ -302,17 +363,13 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
// Single scroll
|
// Single scroll
|
||||||
&.single-scroll {
|
&.single-scroll {
|
||||||
|
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
flex: 1 0 auto;
|
flex: 1 0 auto;
|
||||||
|
|
||||||
> .mat-sidenav-content,
|
> .mat-sidenav-content,
|
||||||
> .mat-drawer-content {
|
> .mat-drawer-content {
|
||||||
flex: 1 0 auto;
|
flex: 1 0 auto;
|
||||||
max-height: none;
|
max-height: none;
|
||||||
|
|
||||||
> .center {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -320,7 +377,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
// Inner Sidenav
|
// Inner Sidenav
|
||||||
&.inner-sidenav {
|
&.inner-sidenav {
|
||||||
|
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
||||||
.sidenav {
|
.sidenav {
|
||||||
@@ -349,7 +406,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
@@ -364,7 +421,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
z-index: 51;
|
z-index: 51;
|
||||||
@include mat-elevation(7);
|
@include mat-elevation(7);
|
||||||
|
|
||||||
&.md-is-locked-open {
|
&.mat-is-locked-open {
|
||||||
width: 220px;
|
width: 220px;
|
||||||
min-width: 220px;
|
min-width: 220px;
|
||||||
max-width: 220px;
|
max-width: 220px;
|
||||||
@@ -372,14 +429,6 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.md-stop-transition {
|
|
||||||
|
|
||||||
~ .mat-sidenav-content,
|
|
||||||
~ .mat-drawer-content {
|
|
||||||
transition: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidenav-content {
|
.sidenav-content {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
@@ -458,7 +507,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
&.left-sidenav,
|
&.left-sidenav,
|
||||||
&.right-sidenav {
|
&.right-sidenav {
|
||||||
|
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
flex: 1 0 auto;
|
flex: 1 0 auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -467,7 +516,6 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
&.simple {
|
&.simple {
|
||||||
|
|
||||||
&.fullwidth {
|
&.fullwidth {
|
||||||
overflow: visible;
|
|
||||||
|
|
||||||
> .content {
|
> .content {
|
||||||
flex: 1 0 auto;
|
flex: 1 0 auto;
|
||||||
@@ -477,16 +525,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
&.left-sidenav,
|
&.left-sidenav,
|
||||||
&.right-sidenav {
|
&.right-sidenav {
|
||||||
|
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
flex: 1 0 auto !important;
|
flex: 1 0 auto !important;
|
||||||
|
|
||||||
> .mat-sidenav-content,
|
> .mat-sidenav-content,
|
||||||
> .mat-drawer-content {
|
> .mat-drawer-content {
|
||||||
flex: 1 0 auto;
|
flex: 1 0 auto;
|
||||||
|
|
||||||
> .center {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -506,7 +550,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
|
|||||||
&.left-sidenav,
|
&.left-sidenav,
|
||||||
&.right-sidenav {
|
&.right-sidenav {
|
||||||
|
|
||||||
> md-sidenav-container {
|
> mat-sidenav-container {
|
||||||
|
|
||||||
> .mat-sidenav-content,
|
> .mat-sidenav-content,
|
||||||
> .mat-drawer-content {
|
> .mat-drawer-content {
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
|
|
||||||
@media all {
|
@media all {
|
||||||
|
|
||||||
/* Never show page break in normal view */
|
/* Never show page breaks in normal view */
|
||||||
.page-break {
|
.page-break-after,
|
||||||
|
.page-break-before {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13,39 +14,52 @@
|
|||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
|
|
||||||
/* Page Styles */
|
/* html and body tweaks */
|
||||||
@page {
|
html, body {
|
||||||
//margin: 0.5cm;
|
height: auto !important;
|
||||||
|
overflow: initial !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Page break */
|
/* Page breaks */
|
||||||
.page-break {
|
.page-break-after {
|
||||||
display: block;
|
display: block;
|
||||||
break-after: always;
|
|
||||||
page-break-after: always;
|
page-break-after: always;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-break-before {
|
||||||
|
display: block;
|
||||||
|
page-break-before: always;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* General styles */
|
/* General styles */
|
||||||
fuse-root {
|
fuse-root {
|
||||||
|
|
||||||
fuse-navbar,
|
fuse-navbar-vertical,
|
||||||
|
fuse-navbar-horizontal,
|
||||||
fuse-toolbar,
|
fuse-toolbar,
|
||||||
fuse-footer,
|
fuse-footer,
|
||||||
fuse-quick-panel,
|
fuse-quick-panel,
|
||||||
fuse-theme-options,
|
fuse-theme-options,
|
||||||
.ps > .ps__scrollbar-x-rail,
|
.ps > .ps__rail-x,
|
||||||
.ps > .ps__scrollbar-y-rail {
|
.ps > .ps__rail-y {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ps {
|
.ps {
|
||||||
overflow: visible !important;
|
overflow: visible !important;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Printable page specific styles */
|
.mat-drawer-container,
|
||||||
.printable {
|
.mat-sidenav-container {
|
||||||
overflow: visible !important;
|
background-color: white !important;
|
||||||
height: auto !important;
|
|
||||||
|
.mat-drawer-content,
|
||||||
|
.mat-sidenav-content {
|
||||||
|
overflow: initial !important;
|
||||||
|
height: auto !important
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,7 @@ html, body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reset non angular-material input's default browser/os styles
|
// Reset non angular-material input's default browser/os styles
|
||||||
*:not(md-input-container) {
|
*:not(mat-input-container) {
|
||||||
|
|
||||||
> input {
|
> input {
|
||||||
border: none;
|
border: none;
|
||||||
@@ -55,7 +55,7 @@ html, body {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*:not(md-input-container) {
|
*:not(mat-input-container) {
|
||||||
|
|
||||||
> input[type="button"],
|
> input[type="button"],
|
||||||
> button,
|
> button,
|
||||||
|
|||||||
@@ -1,20 +1,23 @@
|
|||||||
::-webkit-scrollbar {
|
body:not(.is-mobile) {
|
||||||
width: 12px;
|
|
||||||
height: 12px;
|
|
||||||
background-color: rgba(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar:hover {
|
::-webkit-scrollbar {
|
||||||
background-color: rgba(0, 0, 0, 0.12);
|
width: 12px;
|
||||||
}
|
height: 12px;
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
::-webkit-scrollbar:hover {
|
||||||
border: 2px solid transparent;
|
background-color: rgba(0, 0, 0, 0.12);
|
||||||
box-shadow: inset 0 0 0 24px rgba(0, 0, 0, 0.37);
|
}
|
||||||
border-radius: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb:active {
|
::-webkit-scrollbar-thumb {
|
||||||
box-shadow: inset 0 0 0 24px rgba(0, 0, 0, 0.54);
|
border: 2px solid transparent;
|
||||||
border-radius: 24px;
|
box-shadow: inset 0 0 0 24px rgba(0, 0, 0, 0.37);
|
||||||
|
border-radius: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb:active {
|
||||||
|
box-shadow: inset 0 0 0 24px rgba(0, 0, 0, 0.54);
|
||||||
|
border-radius: 24px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -229,6 +229,22 @@ strong {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.line-height-1 {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-height-1\.25 {
|
||||||
|
line-height: 1.25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-height-1\.50 {
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line-height-1\.75 {
|
||||||
|
line-height: 1.75;
|
||||||
|
}
|
||||||
|
|
||||||
// Boxed text
|
// Boxed text
|
||||||
.text-boxed {
|
.text-boxed {
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
|
|||||||
@@ -1,124 +0,0 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
hljs,
|
|
||||||
[hljs] {
|
|
||||||
display: block;
|
|
||||||
overflow-x: auto;
|
|
||||||
// padding: 0.5em;
|
|
||||||
color: #333;
|
|
||||||
background: #F8F8F8;
|
|
||||||
-webkit-text-size-adjust: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-comment,
|
|
||||||
.diff .hljs-header {
|
|
||||||
color: #998;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-keyword,
|
|
||||||
.css .rule .hljs-keyword,
|
|
||||||
.hljs-winutils,
|
|
||||||
.nginx .hljs-title,
|
|
||||||
.hljs-subst,
|
|
||||||
.hljs-request,
|
|
||||||
.hljs-status {
|
|
||||||
color: #333;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-number,
|
|
||||||
.hljs-hexcolor,
|
|
||||||
.ruby .hljs-constant {
|
|
||||||
color: #008080;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-string,
|
|
||||||
.hljs-tag .hljs-value,
|
|
||||||
.hljs-doctag,
|
|
||||||
.tex .hljs-formula {
|
|
||||||
color: #D14;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-title,
|
|
||||||
.hljs-id,
|
|
||||||
.scss .hljs-preprocessor {
|
|
||||||
color: #900;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-list .hljs-keyword,
|
|
||||||
.hljs-subst {
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-class .hljs-title,
|
|
||||||
.hljs-type,
|
|
||||||
.vhdl .hljs-literal,
|
|
||||||
.tex .hljs-command {
|
|
||||||
color: #458;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-tag,
|
|
||||||
.hljs-tag .hljs-title,
|
|
||||||
.hljs-rule .hljs-property,
|
|
||||||
.django .hljs-tag .hljs-keyword {
|
|
||||||
color: #000080;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-attribute,
|
|
||||||
.hljs-variable,
|
|
||||||
.lisp .hljs-body,
|
|
||||||
.hljs-name {
|
|
||||||
color: #008080;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-regexp {
|
|
||||||
color: #009926;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-symbol,
|
|
||||||
.ruby .hljs-symbol .hljs-string,
|
|
||||||
.lisp .hljs-keyword,
|
|
||||||
.clojure .hljs-keyword,
|
|
||||||
.scheme .hljs-keyword,
|
|
||||||
.tex .hljs-special,
|
|
||||||
.hljs-prompt {
|
|
||||||
color: #990073;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-built_in {
|
|
||||||
color: #0086B3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-preprocessor,
|
|
||||||
.hljs-pragma,
|
|
||||||
.hljs-pi,
|
|
||||||
.hljs-doctype,
|
|
||||||
.hljs-shebang,
|
|
||||||
.hljs-cdata {
|
|
||||||
color: #999;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-deletion {
|
|
||||||
background: #FDD;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-addition {
|
|
||||||
background: #DFD;
|
|
||||||
}
|
|
||||||
|
|
||||||
.diff .hljs-change {
|
|
||||||
background: #0086B3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-chunk {
|
|
||||||
color: #AAA;
|
|
||||||
}
|
|
||||||
360
src/app/core/scss/partials/plugins/_ng-pick-datetime.scss
Normal file
360
src/app/core/scss/partials/plugins/_ng-pick-datetime.scss
Normal file
@@ -0,0 +1,360 @@
|
|||||||
|
/*@font-face {
|
||||||
|
font-family: 'fontello';
|
||||||
|
src: url('../font/fontello.eot?81091010');
|
||||||
|
src: url('../font/fontello.eot?81091010#iefix') format('embedded-opentype'),
|
||||||
|
url('../font/fontello.woff2?81091010') format('woff2'),
|
||||||
|
url('../font/fontello.woff?81091010') format('woff'),
|
||||||
|
url('../font/fontello.ttf?81091010') format('truetype'),
|
||||||
|
url('../font/fontello.svg?81091010#fontello') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
owl-date-time {
|
||||||
|
|
||||||
|
[class^="icon-"]:before, [class*=" icon-"]:before {
|
||||||
|
font-family: "Material Icons";
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
speak: none;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
/* For safety - reset parent styles, that can break glyph codes*/
|
||||||
|
font-variant: normal;
|
||||||
|
text-transform: none;
|
||||||
|
|
||||||
|
/* Font smoothing. That was taken from TWBS */
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-cancel:before {
|
||||||
|
content: 'close';
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-up-open:before {
|
||||||
|
content: 'keyboard_arrow_up';
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-down-open:before {
|
||||||
|
content: 'keyboard_arrow_down';
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-left-open:before {
|
||||||
|
content: 'chevron_left';
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-right-open:before {
|
||||||
|
content: 'chevron_right';
|
||||||
|
}
|
||||||
|
|
||||||
|
$white: #FFFFFF;
|
||||||
|
$black: #000000;
|
||||||
|
$grey: #DDDDDD;
|
||||||
|
$blue: #0070BA;
|
||||||
|
|
||||||
|
.owl-widget,
|
||||||
|
.owl-widget * {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-widget {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-state-focus {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-corner-all {
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-corner-top {
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-state-default {
|
||||||
|
background: #FFFFFF;
|
||||||
|
color: rgba(0, 0, 0, 0.87);
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-dateTime-inputWrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.owl-dateTime-input {
|
||||||
|
background: none !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
.owl-inputtext {
|
||||||
|
margin: 0;
|
||||||
|
padding: 8px;
|
||||||
|
background: none !important;
|
||||||
|
color: rgba(0, 0, 0, 0.87);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-dateTime-cancel {
|
||||||
|
position: relative !important;
|
||||||
|
right: 0 !important;
|
||||||
|
top: 0 !important;
|
||||||
|
transform: none !important;
|
||||||
|
font-size: 16px !important;
|
||||||
|
width: 16px !important;
|
||||||
|
height: 16px !important;
|
||||||
|
min-width: 16px !important;
|
||||||
|
min-height: 16px !important;
|
||||||
|
line-height: 16px !important;
|
||||||
|
color: rgba(0, 0, 0, 0.54) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-dateTime {
|
||||||
|
position: relative;
|
||||||
|
width: 140px;
|
||||||
|
|
||||||
|
&.owl-dateTime-inline {
|
||||||
|
width: auto;
|
||||||
|
|
||||||
|
.owl-dateTime-dialog {
|
||||||
|
position: relative;
|
||||||
|
z-index: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-dateTime-dialog {
|
||||||
|
width: 256px;
|
||||||
|
user-select: none;
|
||||||
|
z-index: 99999;
|
||||||
|
top: 24px !important;
|
||||||
|
right: 0 !important;
|
||||||
|
left: auto !important;
|
||||||
|
@include mat-elevation(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-dateTime-dialogHeader {
|
||||||
|
height: 2.5em;
|
||||||
|
padding: .25em;
|
||||||
|
background-color: rgba(0, 0, 0, .1);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-calendar-wrapper {
|
||||||
|
padding: 16px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-calendar-control {
|
||||||
|
|
||||||
|
.owl-calendar-controlNav {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.nav-prev,
|
||||||
|
.nav-next {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
font-family: "Material Icons";
|
||||||
|
position: relative !important;
|
||||||
|
right: 0 !important;
|
||||||
|
top: 0 !important;
|
||||||
|
transform: none !important;
|
||||||
|
font-size: 20px !important;
|
||||||
|
width: 20px !important;
|
||||||
|
height: 20px !important;
|
||||||
|
min-width: 20px !important;
|
||||||
|
min-height: 20px !important;
|
||||||
|
line-height: 20px !important;
|
||||||
|
content: "chevron_left";
|
||||||
|
color: rgba(0, 0, 0, 0.54);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-next:before {
|
||||||
|
content: "chevron_right";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-calendar-controlContent {
|
||||||
|
|
||||||
|
.month-control,
|
||||||
|
.year-control {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.month-control {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.year-control {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-calendar {
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-spacing: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody td {
|
||||||
|
|
||||||
|
&.owl-calendar-selected {
|
||||||
|
background-color: $blue;
|
||||||
|
color: $white;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.owl-calendar-invalid {
|
||||||
|
color: #ACACAC;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.owl-calendar-outFocus {
|
||||||
|
color: $grey;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.owl-calendar-hidden {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.owl-calendar-selected):not(.owl-calendar-invalid):hover {
|
||||||
|
background-color: lighten($blue, 50%);
|
||||||
|
color: $black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-years,
|
||||||
|
.owl-months {
|
||||||
|
|
||||||
|
td.owl-year,
|
||||||
|
td.owl-month {
|
||||||
|
padding: 0;
|
||||||
|
font-size: 16px;
|
||||||
|
width: 72px;
|
||||||
|
height: 48px;
|
||||||
|
line-height: 48px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-calendar-yearArrow {
|
||||||
|
width: 24px !important;
|
||||||
|
height: 24px !important;
|
||||||
|
|
||||||
|
&.left {
|
||||||
|
left: -16px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right {
|
||||||
|
right: -16px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-weekdays {
|
||||||
|
|
||||||
|
th.owl-weekday {
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 0;
|
||||||
|
color: rgba(0, 0, 0, 0.37);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-days {
|
||||||
|
|
||||||
|
td.owl-day {
|
||||||
|
height: 32px;
|
||||||
|
width: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 100%;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
&.owl-day-today:before {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
right: 2px;
|
||||||
|
top: 2px;
|
||||||
|
border-top: .5em solid lighten($blue, 20%);
|
||||||
|
border-left: .5em solid transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-timer-wrapper {
|
||||||
|
height: 88px;
|
||||||
|
padding: 8px !important;
|
||||||
|
background-color: rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
.owl-timer-input {
|
||||||
|
background: none;
|
||||||
|
width: 100% !important;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-timer-text {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 40%;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-meridian-btn {
|
||||||
|
font-size: .8em;
|
||||||
|
color: $blue;
|
||||||
|
background-image: none;
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: $blue;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: $white;
|
||||||
|
background-color: $blue;
|
||||||
|
border-color: $blue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.owl-timer-divider {
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
width: 8px;
|
||||||
|
height: 100%;
|
||||||
|
left: -2px;
|
||||||
|
|
||||||
|
.owl-timer-dot {
|
||||||
|
display: block;
|
||||||
|
background: rgba(0, 0, 0, 0.37);
|
||||||
|
width: 3px;
|
||||||
|
height: 3px;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
border-radius: 100%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
|
||||||
|
&.dot-top {
|
||||||
|
top: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.dot-bottom {
|
||||||
|
bottom: 40%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,20 +3,21 @@
|
|||||||
.color-picker {
|
.color-picker {
|
||||||
height: auto !important;
|
height: auto !important;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
|
|
||||||
@include mat-elevation(4);
|
@include mat-elevation(4);
|
||||||
|
|
||||||
.preset-area {
|
.preset-area {
|
||||||
//padding: 4px 15px;
|
padding: 0 0 16px 16px !important;
|
||||||
padding: 0 0 12px 12px !important;
|
|
||||||
height: 140px;
|
height: 140px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
|
||||||
> hr {
|
> hr {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.preset-label {
|
.preset-label {
|
||||||
display: none;
|
display: none;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.preset-color {
|
.preset-color {
|
||||||
@@ -25,7 +26,8 @@
|
|||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
border-radius: 0 !important;
|
border-radius: 0 !important;
|
||||||
&:nth-child(14n+3) {
|
|
||||||
|
&:nth-child(14n+1) {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,7 @@
|
|||||||
min-height: 48px;
|
min-height: 48px;
|
||||||
transition: none;
|
transition: none;
|
||||||
padding: 0 24px;
|
padding: 0 24px;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -82,8 +83,83 @@
|
|||||||
|
|
||||||
.datatable-pager {
|
.datatable-pager {
|
||||||
margin: 0 0 0 24px;
|
margin: 0 0 0 24px;
|
||||||
|
|
||||||
|
.pager {
|
||||||
|
|
||||||
|
li {
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[class*="datatable-icon-"] {
|
||||||
|
font-family: 'Material Icons';
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 1;
|
||||||
|
letter-spacing: normal;
|
||||||
|
text-transform: none;
|
||||||
|
display: inline-block;
|
||||||
|
white-space: nowrap;
|
||||||
|
word-wrap: normal;
|
||||||
|
direction: ltr;
|
||||||
|
-webkit-font-feature-settings: 'liga';
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
.datatable-icon-filter:before {
|
||||||
|
content: "filter_list";
|
||||||
|
}
|
||||||
|
.datatable-icon-collapse:before {
|
||||||
|
content: "unfold_less";
|
||||||
|
}
|
||||||
|
.datatable-icon-expand:before {
|
||||||
|
content: "unfold_more";
|
||||||
|
}
|
||||||
|
.datatable-icon-close:before {
|
||||||
|
content: "close";
|
||||||
|
}
|
||||||
|
.datatable-icon-up:before {
|
||||||
|
content: "keyboard_arrow_up";
|
||||||
|
}
|
||||||
|
.datatable-icon-down:before {
|
||||||
|
content: "keyboard_arrow_down";
|
||||||
|
}
|
||||||
|
.datatable-icon-sort:before {
|
||||||
|
content: "sort";
|
||||||
|
}
|
||||||
|
.datatable-icon-done:before {
|
||||||
|
content: "done";
|
||||||
|
}
|
||||||
|
.datatable-icon-done-all:before {
|
||||||
|
content: "done_all";
|
||||||
|
}
|
||||||
|
.datatable-icon-search:before {
|
||||||
|
content: "search";
|
||||||
|
}
|
||||||
|
.datatable-icon-pin:before {
|
||||||
|
content: "lock";
|
||||||
|
}
|
||||||
|
.datatable-icon-add:before {
|
||||||
|
content: "add";
|
||||||
|
}
|
||||||
|
.datatable-icon-left:before {
|
||||||
|
content: "chevron_left";
|
||||||
|
}
|
||||||
|
.datatable-icon-right:before {
|
||||||
|
content: "chevron_right";
|
||||||
|
}
|
||||||
|
.datatable-icon-skip:before {
|
||||||
|
content: "skip_next";
|
||||||
|
}
|
||||||
|
.datatable-icon-prev:before {
|
||||||
|
content: "skip_previous";
|
||||||
|
}
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
.ps {
|
.ps {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
> .ps__scrollbar-y-rail {
|
> .ps__rail-x {
|
||||||
z-index: 99999;
|
z-index: 99999;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .ps__scrollbar-y-rail {
|
> .ps__rail-y {
|
||||||
z-index: 99999;
|
z-index: 99999;
|
||||||
|
left: auto !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
@import "highlight";
|
@import "prism";
|
||||||
@import "perfect-scrollbar";
|
@import "perfect-scrollbar";
|
||||||
@import "ngx-datatable";
|
@import "ngx-datatable";
|
||||||
@import "ngx-color-picker";
|
@import "ngx-color-picker";
|
||||||
|
|||||||
269
src/app/core/scss/partials/plugins/_prism.scss
Normal file
269
src/app/core/scss/partials/plugins/_prism.scss
Normal file
@@ -0,0 +1,269 @@
|
|||||||
|
// Edit the sixteen color-value variables, and create your own syntax highlighter colorscheme
|
||||||
|
|
||||||
|
$base00: #263238;
|
||||||
|
$base01: #2C393F;
|
||||||
|
$base02: #62727A;
|
||||||
|
$base03: #707880;
|
||||||
|
$base04: #C9CCD3;
|
||||||
|
$base05: #CDD3DE;
|
||||||
|
$base06: #D5DBE5;
|
||||||
|
$base07: #FFFFFF;
|
||||||
|
$base08: #EC5F67;
|
||||||
|
$base09: #EA9560;
|
||||||
|
$base0A: #FFCC00;
|
||||||
|
$base0B: #8BD649;
|
||||||
|
$base0C: #80CBC4;
|
||||||
|
$base0D: #89DDFF;
|
||||||
|
$base0E: #82AAFF;
|
||||||
|
$base0F: #EC5F67;
|
||||||
|
|
||||||
|
$red: $base08;
|
||||||
|
$orange: $base09;
|
||||||
|
$yellow: $base0A;
|
||||||
|
$green: $base0B;
|
||||||
|
$cyan: $base0C;
|
||||||
|
$blue: $base0D;
|
||||||
|
$violet: $base0E;
|
||||||
|
$magenta: $base0F;
|
||||||
|
|
||||||
|
$code-font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace;
|
||||||
|
$code-font-size: 14px;
|
||||||
|
$code-line-height: 1.6;
|
||||||
|
$code-background: $base00;
|
||||||
|
$code-color: $base05;
|
||||||
|
$code-color-fade: $base05;
|
||||||
|
// $code-text-shadow: none;
|
||||||
|
$code-color-comment: $base02;
|
||||||
|
$code-color-keyword: $base0B;
|
||||||
|
$code-color-value: $base0C;
|
||||||
|
$code-color-attr-name: $base09;
|
||||||
|
$code-color-string: $base0C;
|
||||||
|
$code-color-name: $base0A;
|
||||||
|
$code-color-number: $base09;
|
||||||
|
$code-color-variable: $base0D;
|
||||||
|
$code-color-selector: $base0E;
|
||||||
|
$code-color-property: $base0A;
|
||||||
|
$code-color-important: $base08;
|
||||||
|
$code-color-tag: $base0D;
|
||||||
|
$code-color-atrule: $base0C;
|
||||||
|
|
||||||
|
// @import "../partials/prism";
|
||||||
|
/**
|
||||||
|
* Prism base code highlighter theme using Sass
|
||||||
|
*
|
||||||
|
* @author @MoOx
|
||||||
|
* https://github.com/MoOx/sass-prism-theme-base/blob/master/_prism.scss
|
||||||
|
* slightly adapted by me, Bram de Haan
|
||||||
|
*/
|
||||||
|
|
||||||
|
// prism selector
|
||||||
|
$code-selector: "code[class*=\"language-\"], pre[class*=\"language-\"]";
|
||||||
|
$code-selector-block: "pre[class*=\"language-\"]";
|
||||||
|
$code-selector-inline: ":not(pre) > code[class*=\"language-\"]";
|
||||||
|
|
||||||
|
// generic stuff
|
||||||
|
$code-font-family: Menlo, Monaco, "Courier New", monospace !default;
|
||||||
|
$code-font-size: 14px !default;
|
||||||
|
$code-line-height: 1.6 !default;
|
||||||
|
|
||||||
|
$code-tab-size: 4 !default;
|
||||||
|
$code-hyphens: none !default;
|
||||||
|
|
||||||
|
$code-block-padding: 12px !default;
|
||||||
|
$code-inline-padding: 2px 6px !default;
|
||||||
|
$code-border-radius: 0 !default;
|
||||||
|
|
||||||
|
$code-border: none !default;
|
||||||
|
$code-background: #2A2A2A !default;
|
||||||
|
$code-color: #FFF !default;
|
||||||
|
$code-color-fade: #BEBEC5 !default;
|
||||||
|
// $code-text-shadow: 0 1px 0 #000 !default;
|
||||||
|
$code-box-shadow: none !default;
|
||||||
|
$code-color-property: #B58900 !default;
|
||||||
|
$code-color-important: #CB4B16 !default;
|
||||||
|
$code-color-tag: #268BD2 !default;
|
||||||
|
$code-color-atrule: #2AA198 !default;
|
||||||
|
$code-color-attr-name: #B65611 !default;
|
||||||
|
|
||||||
|
// $code-linenums-padding: 7px !default;
|
||||||
|
// $code-linenums-width: 40px !default;
|
||||||
|
// $code-linenums-background: #444 !default;
|
||||||
|
// $code-linenums-border-color: #555 !default;
|
||||||
|
// $code-linenums-border-width: 1px !default;
|
||||||
|
|
||||||
|
@if $code-selector != null {
|
||||||
|
#{$code-selector} {
|
||||||
|
-moz-tab-size: $code-tab-size;
|
||||||
|
-o-tab-size: $code-tab-size;
|
||||||
|
tab-size: $code-tab-size;
|
||||||
|
|
||||||
|
-webkit-hyphens: $code-hyphens;
|
||||||
|
-moz-hyphens: $code-hyphens;
|
||||||
|
-ms-hyphens: $code-hyphens;
|
||||||
|
hyphens: $code-hyphens;
|
||||||
|
|
||||||
|
// whitespace management
|
||||||
|
white-space: pre; // fallback
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-break: break-all;
|
||||||
|
word-wrap: break-word;
|
||||||
|
|
||||||
|
font-family: $code-font-family;
|
||||||
|
font-size: $code-font-size;
|
||||||
|
line-height: $code-line-height;
|
||||||
|
|
||||||
|
color: $code-color;
|
||||||
|
// text-shadow: $code-text-shadow;
|
||||||
|
background: $code-background;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%code-background {
|
||||||
|
border-radius: $code-border-radius;
|
||||||
|
border: $code-border;
|
||||||
|
box-shadow: $code-box-shadow;
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $code-selector-block != null {
|
||||||
|
#{$code-selector-block} {
|
||||||
|
@extend %code-background;
|
||||||
|
padding: $code-block-padding;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if $code-selector-inline != null {
|
||||||
|
#{$code-selector-inline} {
|
||||||
|
@extend %code-background;
|
||||||
|
padding: $code-inline-padding;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// pre[class*="language-"],
|
||||||
|
// :not(pre) > code[class*="language-"] {
|
||||||
|
// background: $code-background;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// prism tokens
|
||||||
|
//
|
||||||
|
$code-color-comment: null !default;
|
||||||
|
$code-color-keyword: null !default;
|
||||||
|
$code-color-value: null !default;
|
||||||
|
$code-color-string: null !default;
|
||||||
|
$code-color-name: null !default;
|
||||||
|
$code-color-number: null !default;
|
||||||
|
$code-color-variable: null !default;
|
||||||
|
$code-color-selector: null !default;
|
||||||
|
$code-color-punctuation: $code-color-fade !default;
|
||||||
|
|
||||||
|
#{$code-selector} {
|
||||||
|
.namespace {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token {
|
||||||
|
&.comment,
|
||||||
|
&.prolog,
|
||||||
|
&.doctype,
|
||||||
|
&.cdata {
|
||||||
|
color: $code-color-comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.null,
|
||||||
|
&.operator,
|
||||||
|
&.boolean,
|
||||||
|
&.number {
|
||||||
|
color: $code-color-number;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.string {
|
||||||
|
color: $code-color-string;
|
||||||
|
}
|
||||||
|
&.attr-name {
|
||||||
|
color: $code-color-attr-name;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.entity,
|
||||||
|
&.url,
|
||||||
|
.language-css &.string,
|
||||||
|
.style &.string {
|
||||||
|
color: $code-color-string;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.selector {
|
||||||
|
color: $code-color-selector;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.attr-value,
|
||||||
|
&.keyword,
|
||||||
|
&.control,
|
||||||
|
&.directive,
|
||||||
|
&.unit {
|
||||||
|
color: $code-color-keyword;
|
||||||
|
}
|
||||||
|
&.important {
|
||||||
|
color: $code-color-important;
|
||||||
|
}
|
||||||
|
&.atrule {
|
||||||
|
color: $code-color-atrule;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.regex,
|
||||||
|
&.statement {
|
||||||
|
color: $code-color-value;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.placeholder,
|
||||||
|
&.variable {
|
||||||
|
color: $code-color-variable;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.property,
|
||||||
|
&.tag {
|
||||||
|
// font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.property {
|
||||||
|
color: $code-color-property;
|
||||||
|
}
|
||||||
|
&.tag {
|
||||||
|
color: $code-color-tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.important,
|
||||||
|
&.statement {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo ?
|
||||||
|
// &.mixin
|
||||||
|
// &.gradient
|
||||||
|
// &.abslength
|
||||||
|
// &.easing
|
||||||
|
// &.time
|
||||||
|
// &.angle
|
||||||
|
// &.fontfamily
|
||||||
|
|
||||||
|
// ruby/vim https://github.com/LeaVerou/prism/pull/18
|
||||||
|
// &.inst-var
|
||||||
|
// &.builtin
|
||||||
|
// &.const
|
||||||
|
// &.symbol
|
||||||
|
//
|
||||||
|
// php https://github.com/LeaVerou/prism/pull/20
|
||||||
|
// &.deliminator
|
||||||
|
// &.function
|
||||||
|
|
||||||
|
&.punctuation {
|
||||||
|
color: $code-color-punctuation;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
|
||||||
|
// for dev :)
|
||||||
|
&.debug {
|
||||||
|
color: red
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,17 +22,19 @@ export class FuseConfigService
|
|||||||
// Set the default settings
|
// Set the default settings
|
||||||
this.defaultSettings = {
|
this.defaultSettings = {
|
||||||
layout : {
|
layout : {
|
||||||
navigation: 'left', // 'right', 'left', 'top', none
|
navigation : 'left', // 'right', 'left', 'top', 'none'
|
||||||
toolbar : 'below', // 'above', 'below', none
|
navigationFolded: false, // true, false
|
||||||
footer : 'none' // 'above', 'below', none
|
toolbar : 'below', // 'above', 'below', 'none'
|
||||||
|
footer : 'below', // 'above', 'below', 'none'
|
||||||
|
mode : 'fullwidth' // 'boxed', 'fullwidth'
|
||||||
},
|
},
|
||||||
colorClasses : {
|
colorClasses : {
|
||||||
toolbar: 'md-white-500-bg',
|
toolbar: 'mat-white-500-bg',
|
||||||
navbar : 'md-fuse-dark-500-bg',
|
navbar : 'mat-fuse-dark-700-bg',
|
||||||
footer : 'md-fuse-dark-800-bg'
|
footer : 'mat-fuse-dark-900-bg'
|
||||||
},
|
},
|
||||||
customScrollbars: true,
|
customScrollbars: true,
|
||||||
routerAnimation : 'fadeIn'
|
routerAnimation : 'fadeIn' // fadeIn, slideUp, slideDown, slideRight, slideLeft, none
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,6 +45,7 @@ export class FuseConfigService
|
|||||||
this.defaultSettings.customScrollbars = false;
|
this.defaultSettings.customScrollbars = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set the settings from the default settings
|
||||||
this.settings = Object.assign({}, this.defaultSettings);
|
this.settings = Object.assign({}, this.defaultSettings);
|
||||||
|
|
||||||
// Reload the default settings on every navigation start
|
// Reload the default settings on every navigation start
|
||||||
@@ -57,7 +60,6 @@ export class FuseConfigService
|
|||||||
|
|
||||||
// Create the behavior subject
|
// Create the behavior subject
|
||||||
this.onSettingsChanged = new BehaviorSubject(this.settings);
|
this.onSettingsChanged = new BehaviorSubject(this.settings);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -66,7 +68,10 @@ export class FuseConfigService
|
|||||||
*/
|
*/
|
||||||
setSettings(settings)
|
setSettings(settings)
|
||||||
{
|
{
|
||||||
|
// Set the settings from the given object
|
||||||
this.settings = Object.assign({}, this.settings, settings);
|
this.settings = Object.assign({}, this.settings, settings);
|
||||||
|
|
||||||
|
// Trigger the event
|
||||||
this.onSettingsChanged.next(this.settings);
|
this.onSettingsChanged.next(this.settings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
27
src/app/core/services/translation-loader.service.ts
Normal file
27
src/app/core/services/translation-loader.service.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
|
export interface Locale
|
||||||
|
{
|
||||||
|
lang: string;
|
||||||
|
data: Object;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class FuseTranslationLoaderService
|
||||||
|
{
|
||||||
|
constructor(private translate: TranslateService)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public loadTranslations(...args: Locale[]): void
|
||||||
|
{
|
||||||
|
const locales = [...args];
|
||||||
|
|
||||||
|
locales.forEach((locale) => {
|
||||||
|
// use setTranslation() with the third argument set to true
|
||||||
|
// to append translations instead of replacing them
|
||||||
|
this.translate.setTranslation(locale.lang, locale.data, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
import {
|
|
||||||
startOfDay,
|
|
||||||
endOfDay,
|
|
||||||
subDays,
|
|
||||||
addDays,
|
|
||||||
endOfMonth,
|
|
||||||
isSameDay,
|
|
||||||
isSameMonth,
|
|
||||||
addHours
|
|
||||||
} from 'date-fns';
|
|
||||||
|
|
||||||
export class CalendarFakeDb
|
|
||||||
{
|
|
||||||
|
|
||||||
public static data = [
|
|
||||||
{
|
|
||||||
id : 'events',
|
|
||||||
data: [
|
|
||||||
{
|
|
||||||
start : subDays(startOfDay(new Date()), 1),
|
|
||||||
end : addDays(new Date(), 1),
|
|
||||||
title : 'A 3 day event',
|
|
||||||
allDay : false,
|
|
||||||
color : {
|
|
||||||
primary : '#ad2121',
|
|
||||||
secondary: '#FAE3E3'
|
|
||||||
},
|
|
||||||
resizable: {
|
|
||||||
beforeStart: true,
|
|
||||||
afterEnd : true
|
|
||||||
},
|
|
||||||
draggable: true,
|
|
||||||
meta : {
|
|
||||||
location: 'Los Angeles',
|
|
||||||
notes : 'Eos eu verear adipiscing, ex ornatus denique iracundia sed, quodsi oportere appellantur an pri.'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
start : startOfDay(new Date()),
|
|
||||||
title : 'An event with no end date',
|
|
||||||
allDay : false,
|
|
||||||
color : {
|
|
||||||
primary : '#e3bc08',
|
|
||||||
secondary: '#FDF1BA'
|
|
||||||
},
|
|
||||||
resizable: {
|
|
||||||
beforeStart: true,
|
|
||||||
afterEnd : true
|
|
||||||
},
|
|
||||||
draggable: true,
|
|
||||||
meta : {
|
|
||||||
location: 'Los Angeles',
|
|
||||||
notes : 'Eos eu verear adipiscing, ex ornatus denique iracundia sed, quodsi oportere appellantur an pri.'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
start : subDays(endOfMonth(new Date()), 3),
|
|
||||||
end : addDays(endOfMonth(new Date()), 3),
|
|
||||||
title : 'A long event that spans 2 months',
|
|
||||||
allDay : false,
|
|
||||||
color : {
|
|
||||||
primary : '#1e90ff',
|
|
||||||
secondary: '#D1E8FF'
|
|
||||||
},
|
|
||||||
resizable: {
|
|
||||||
beforeStart: true,
|
|
||||||
afterEnd : true
|
|
||||||
},
|
|
||||||
draggable: true,
|
|
||||||
meta : {
|
|
||||||
location: 'Los Angeles',
|
|
||||||
notes : 'Eos eu verear adipiscing, ex ornatus denique iracundia sed, quodsi oportere appellantur an pri.'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
start : addHours(startOfDay(new Date()), 2),
|
|
||||||
end : new Date(),
|
|
||||||
title : 'A draggable and resizable event',
|
|
||||||
allDay : false,
|
|
||||||
color : {
|
|
||||||
primary : '#e3bc08',
|
|
||||||
secondary: '#FDF1BA'
|
|
||||||
},
|
|
||||||
resizable: {
|
|
||||||
beforeStart: true,
|
|
||||||
afterEnd : true
|
|
||||||
},
|
|
||||||
draggable: true,
|
|
||||||
meta : {
|
|
||||||
location: 'Los Angeles',
|
|
||||||
notes : 'Eos eu verear adipiscing, ex ornatus denique iracundia sed, quodsi oportere appellantur an pri.'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,325 +0,0 @@
|
|||||||
export class ChatFakeDb
|
|
||||||
{
|
|
||||||
public static contacts = [
|
|
||||||
{
|
|
||||||
'id' : '5725a680b3249760ea21de52',
|
|
||||||
'name' : 'Alice Freeman',
|
|
||||||
'avatar': 'assets/images/avatars/alice.jpg',
|
|
||||||
'status': 'online',
|
|
||||||
'mood' : 'I never sign anything until I pretend to read it first..'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680606588342058356d',
|
|
||||||
'name' : 'Arnold',
|
|
||||||
'avatar': 'assets/images/avatars/Arnold.jpg',
|
|
||||||
'status': 'do-not-disturb',
|
|
||||||
'mood' : 'Looks like Andrew Jackson\'s been tossed to the back of the bus.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68009e20d0a9e9acf2a',
|
|
||||||
'name' : 'Barrera',
|
|
||||||
'avatar': 'assets/images/avatars/Barrera.jpg',
|
|
||||||
'status': 'do-not-disturb',
|
|
||||||
'mood' : 'Love is going to bed early.Marriage is going to sleep early.',
|
|
||||||
'unread': null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6809fdd915739187ed5',
|
|
||||||
'name' : 'Blair',
|
|
||||||
'avatar': 'assets/images/avatars/Blair.jpg',
|
|
||||||
'status': 'offline',
|
|
||||||
'mood' : 'I would be unstoppable. If i could just get started.',
|
|
||||||
'unread': 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68007920cf75051da64',
|
|
||||||
'name' : 'Boyle',
|
|
||||||
'avatar': 'assets/images/avatars/Boyle.jpg',
|
|
||||||
'status': 'offline',
|
|
||||||
'mood' : '\'GOOD MORNING COFFEE\'....Meet your maker!!!!'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68031fdbb1db2c1af47',
|
|
||||||
'name' : 'Christy',
|
|
||||||
'avatar': 'assets/images/avatars/Christy.jpg',
|
|
||||||
'status': 'offline',
|
|
||||||
'mood' : 'We always hold hands. If I let go, she shops.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680bc670af746c435e2',
|
|
||||||
'name' : 'Copeland',
|
|
||||||
'avatar': 'assets/images/avatars/Copeland.jpg',
|
|
||||||
'status': 'online',
|
|
||||||
'mood' : 'I get enough exercise just pushing my luck.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680e7eb988a58ddf303',
|
|
||||||
'name' : 'Estes',
|
|
||||||
'avatar': 'assets/images/avatars/Estes.jpg',
|
|
||||||
'status': 'away',
|
|
||||||
'mood' : 'What comes after the man bun hairstyle? The he-hive!'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680dcb077889f758961',
|
|
||||||
'name' : 'Harper',
|
|
||||||
'avatar': 'assets/images/avatars/Harper.jpg',
|
|
||||||
'status': 'offline',
|
|
||||||
'mood' : 'Always try to be modest and be proud of it!'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6806acf030f9341e925',
|
|
||||||
'name' : 'Helen',
|
|
||||||
'avatar': 'assets/images/avatars/Helen.jpg',
|
|
||||||
'status': 'away',
|
|
||||||
'mood' : 'Why are there stitch marks on zombies? Who\'s giving them medical attention?'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680ae1ae9a3c960d487',
|
|
||||||
'name' : 'Henderson',
|
|
||||||
'avatar': 'assets/images/avatars/Henderson.jpg',
|
|
||||||
'status': 'offline',
|
|
||||||
'mood' : 'I can\'t decide if people who wear pajamas in public have given up on life or are living it to the fullest.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680b8d240c011dd224b',
|
|
||||||
'name' : 'Josefina',
|
|
||||||
'avatar': 'assets/images/avatars/Josefina.jpg',
|
|
||||||
'status': 'online',
|
|
||||||
'mood' : 'The fastest way to being happy is to make other people happy. You go first'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68034cb3968e1f79eac',
|
|
||||||
'name' : 'Katina',
|
|
||||||
'avatar': 'assets/images/avatars/Katina.jpg',
|
|
||||||
'status': 'away',
|
|
||||||
'mood' : 'If I was a rat,,, I wouldn\'t give anyone my ass.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6801146cce777df2a08',
|
|
||||||
'name' : 'Lily',
|
|
||||||
'avatar': 'assets/images/avatars/Lily.jpg',
|
|
||||||
'status': 'do-not-disturb',
|
|
||||||
'mood' : 'A zip line but from the sofa to the fridge'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6808a178bfd034d6ecf',
|
|
||||||
'name' : 'Mai',
|
|
||||||
'avatar': 'assets/images/avatars/Mai.jpg',
|
|
||||||
'status': 'away',
|
|
||||||
'mood' : 'If a girl tells you she has a nipple ring, the only correct response is \'I don\'t believe you.\''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680653c265f5c79b5a9',
|
|
||||||
'name' : 'Nancy',
|
|
||||||
'avatar': 'assets/images/avatars/Nancy.jpg',
|
|
||||||
'status': 'do-not-disturb',
|
|
||||||
'mood' : 'Prison counts as a gated community, right?'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680bbcec3cc32a8488a',
|
|
||||||
'name' : 'Nora',
|
|
||||||
'avatar': 'assets/images/avatars/Nora.jpg',
|
|
||||||
'status': 'do-not-disturb',
|
|
||||||
'mood' : 'I never date left handed women. Righty tighty, lefty loosey.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6803d87f1b77e17b62b',
|
|
||||||
'name' : 'Odessa',
|
|
||||||
'avatar': 'assets/images/avatars/Odessa.jpg',
|
|
||||||
'status': 'away',
|
|
||||||
'mood' : 'A day without sunshine is like, night.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680e87cb319bd9bd673',
|
|
||||||
'name' : 'Reyna',
|
|
||||||
'avatar': 'assets/images/avatars/Reyna.jpg',
|
|
||||||
'status': 'offline',
|
|
||||||
'mood' : 'I can\'t wait for summer in Canada...'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6802d10e277a0f35775',
|
|
||||||
'name' : 'Shauna',
|
|
||||||
'avatar': 'assets/images/avatars/Shauna.jpg',
|
|
||||||
'status': 'online',
|
|
||||||
'mood' : 'My take home pay doesn’t ven take me home.',
|
|
||||||
'unread': null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680aef1e5cf26dd3d1f',
|
|
||||||
'name' : 'Shepard',
|
|
||||||
'avatar': 'assets/images/avatars/Shepard.jpg',
|
|
||||||
'status': 'online',
|
|
||||||
'mood' : 'I don\'t speak Spanish, but I\'m pretty sure \'Dora\' means \'annoying\''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680cd7efa56a45aea5d',
|
|
||||||
'name' : 'Tillman',
|
|
||||||
'avatar': 'assets/images/avatars/Tillman.jpg',
|
|
||||||
'status': 'do-not-disturb',
|
|
||||||
'mood' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680fb65c91a82cb35e2',
|
|
||||||
'name' : 'Trevino',
|
|
||||||
'avatar': 'assets/images/avatars/Trevino.jpg',
|
|
||||||
'status': 'away',
|
|
||||||
'mood' : 'Apparently, a rat and a plastic tube does not count as a DIY abortion kit.'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68018c663044be49cbf',
|
|
||||||
'name' : 'Tyson',
|
|
||||||
'avatar': 'assets/images/avatars/Tyson.jpg',
|
|
||||||
'status': 'do-not-disturb',
|
|
||||||
'mood' : 'I\'m wondering why life keeps teaching me lessons I have no desire to learn...'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6809413bf8a0a5272b1',
|
|
||||||
'name' : 'Velazquez',
|
|
||||||
'avatar': 'assets/images/avatars/Velazquez.jpg',
|
|
||||||
'status': 'online',
|
|
||||||
'mood' : 'Modulation in all things.'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
public static chats = [
|
|
||||||
{
|
|
||||||
'id' : '1725a680b3249760ea21de52',
|
|
||||||
'dialog': [
|
|
||||||
{
|
|
||||||
'who' : '5725a680b3249760ea21de52',
|
|
||||||
'message': 'Quickly come to the meeting room 1B, we have a big server issue',
|
|
||||||
'time' : '2017-03-22T08:54:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a6802d10e277a0f35724',
|
|
||||||
'message': 'I’m having breakfast right now, can’t you wait for 10 minutes?',
|
|
||||||
'time' : '2017-03-22T08:55:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a680b3249760ea21de52',
|
|
||||||
'message': 'We are losing money! Quick!',
|
|
||||||
'time' : '2017-03-22T09:00:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a6802d10e277a0f35724',
|
|
||||||
'message': 'It’s not my money, you know. I will eat my breakfast and then I will come to the meeting room.',
|
|
||||||
'time' : '2017-03-22T09:02:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a680b3249760ea21de52',
|
|
||||||
'message': 'You are the worst!',
|
|
||||||
'time' : '2017-03-22T09:05:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a680b3249760ea21de52',
|
|
||||||
'message': 'We are losing money! Quick!',
|
|
||||||
'time' : '2017-03-22T09:15:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a6802d10e277a0f35724',
|
|
||||||
'message': 'It’s not my money, you know. I will eat my breakfast and then I will come to the meeting room.',
|
|
||||||
'time' : '2017-03-22T09:20:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a680b3249760ea21de52',
|
|
||||||
'message': 'You are the worst!',
|
|
||||||
'time' : '2017-03-22T09:22:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a680b3249760ea21de52',
|
|
||||||
'message': 'We are losing money! Quick!',
|
|
||||||
'time' : '2017-03-22T09:25:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a6802d10e277a0f35724',
|
|
||||||
'message': 'It’s not my money, you know. I will eat my breakfast and then I will come to the meeting room.',
|
|
||||||
'time' : '2017-03-22T09:27:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a680b3249760ea21de52',
|
|
||||||
'message': 'You are the worst!',
|
|
||||||
'time' : '2017-03-22T09:33:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a680b3249760ea21de52',
|
|
||||||
'message': 'We are losing money! Quick!',
|
|
||||||
'time' : '2017-03-22T09:35:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a6802d10e277a0f35724',
|
|
||||||
'message': 'It’s not my money, you know. I will eat my breakfast and then I will come to the meeting room.',
|
|
||||||
'time' : '2017-03-22T09:45:28.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a680b3249760ea21de52',
|
|
||||||
'message': 'You are the worst!',
|
|
||||||
'time' : '2017-03-22T10:00:28.299Z'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '2725a680b8d240c011dd2243',
|
|
||||||
'dialog': [
|
|
||||||
{
|
|
||||||
'who' : '5725a680b8d240c011dd224b',
|
|
||||||
'message': 'Quickly come to the meeting room 1B, we have a big server issue',
|
|
||||||
'time' : '2017-04-22T01:00:00.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a6802d10e277a0f35724',
|
|
||||||
'message': 'I’m having breakfast right now, can’t you wait for 10 minutes?',
|
|
||||||
'time' : '2017-04-22T01:05:00.299Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'who' : '5725a680b8d240c011dd224b',
|
|
||||||
'message': 'We are losing money! Quick!',
|
|
||||||
'time' : '2017-04-22T01:10:00.299Z'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '3725a6809413bf8a0a5272b4',
|
|
||||||
'dialog': [
|
|
||||||
{
|
|
||||||
'who' : '5725a6809413bf8a0a5272b1',
|
|
||||||
'message': 'Quickly come to the meeting room 1B, we have a big server issue',
|
|
||||||
'time' : '2017-04-22T02:10:00.299Z'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
public static user = [
|
|
||||||
{
|
|
||||||
'id' : '5725a6802d10e277a0f35724',
|
|
||||||
'name' : 'John Doe',
|
|
||||||
'avatar' : 'assets/images/avatars/profile.jpg',
|
|
||||||
'status' : 'online',
|
|
||||||
'mood' : 'it\'s a status....not your diary...',
|
|
||||||
'chatList': [
|
|
||||||
{
|
|
||||||
'id' : '1725a680b3249760ea21de52',
|
|
||||||
'contactId' : '5725a680b3249760ea21de52',
|
|
||||||
'name' : 'Alice Freeman',
|
|
||||||
'unread' : 4,
|
|
||||||
'lastMessageTime': '2017-06-12T02:10:18.931Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '2725a680b8d240c011dd2243',
|
|
||||||
'contactId' : '5725a680b8d240c011dd224b',
|
|
||||||
'name' : 'Josefina',
|
|
||||||
'unread' : null,
|
|
||||||
'lastMessageTime': '2017-02-18T10:30:18.931Z'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '3725a6809413bf8a0a5272b4',
|
|
||||||
'contactId' : '5725a6809413bf8a0a5272b1',
|
|
||||||
'name' : 'Velazquez',
|
|
||||||
'unread' : 2,
|
|
||||||
'lastMessageTime': '2017-03-18T12:30:18.931Z'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,411 +0,0 @@
|
|||||||
export class ContactsFakeDb
|
|
||||||
{
|
|
||||||
public static contacts = [
|
|
||||||
{
|
|
||||||
'id' : '5725a680b3249760ea21de52',
|
|
||||||
'name' : 'Abbott',
|
|
||||||
'lastName': 'Keitch',
|
|
||||||
'avatar' : 'assets/images/avatars/Abbott.jpg',
|
|
||||||
'nickname': 'Royalguard',
|
|
||||||
'company' : 'Saois',
|
|
||||||
'jobTitle': 'Digital Archivist',
|
|
||||||
'email' : 'abbott@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0175',
|
|
||||||
'address' : '933 8th Street Stamford, CT 06902',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680606588342058356d',
|
|
||||||
'name' : 'Arnold',
|
|
||||||
'lastName': 'Matlock',
|
|
||||||
'avatar' : 'assets/images/avatars/Arnold.jpg',
|
|
||||||
'nickname': 'Wanderer',
|
|
||||||
'company' : 'Laotcone',
|
|
||||||
'jobTitle': 'Graphic Artist',
|
|
||||||
'email' : 'arnold@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0141',
|
|
||||||
'address' : '906 Valley Road Michigan City, IN 46360',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68009e20d0a9e9acf2a',
|
|
||||||
'name' : 'Barrera',
|
|
||||||
'lastName': 'Bradbury',
|
|
||||||
'avatar' : 'assets/images/avatars/Barrera.jpg',
|
|
||||||
'nickname': 'Jackal',
|
|
||||||
'company' : 'Unizim',
|
|
||||||
'jobTitle': 'Graphic Designer',
|
|
||||||
'email' : 'barrera@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0196',
|
|
||||||
'address' : '183 River Street Passaic, NJ 07055',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6809fdd915739187ed5',
|
|
||||||
'name' : 'Blair',
|
|
||||||
'lastName': 'Strangeway',
|
|
||||||
'avatar' : 'assets/images/avatars/Blair.jpg',
|
|
||||||
'nickname': 'Knight',
|
|
||||||
'company' : 'Conedubdax',
|
|
||||||
'jobTitle': 'Visual Designer',
|
|
||||||
'email' : 'blair@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0118',
|
|
||||||
'address' : '143 Jones Street Eau Claire, WI 54701',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68007920cf75051da64',
|
|
||||||
'name' : 'Boyle',
|
|
||||||
'lastName': 'Winters',
|
|
||||||
'avatar' : 'assets/images/avatars/Boyle.jpg',
|
|
||||||
'nickname': 'Jester',
|
|
||||||
'company' : 'Newo',
|
|
||||||
'jobTitle': 'Catalogue Illustrator',
|
|
||||||
'email' : 'boyle@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0177',
|
|
||||||
'address' : '218 Pearl Street Brandon, FL 33510',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68031fdbb1db2c1af47',
|
|
||||||
'name' : 'Christy',
|
|
||||||
'lastName': 'Camacho',
|
|
||||||
'avatar' : 'assets/images/avatars/Christy.jpg',
|
|
||||||
'nickname': 'Mist',
|
|
||||||
'company' : 'uniway',
|
|
||||||
'jobTitle': '3D Animator',
|
|
||||||
'email' : 'christy@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0136',
|
|
||||||
'address' : '329 Bridge Street Desoto, TX 75115',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680bc670af746c435e2',
|
|
||||||
'name' : 'Copeland',
|
|
||||||
'lastName': 'Redcliff',
|
|
||||||
'avatar' : 'assets/images/avatars/Copeland.jpg',
|
|
||||||
'nickname': 'Cloudlaw',
|
|
||||||
'company' : 'Tempron',
|
|
||||||
'jobTitle': 'Multimedia Artist',
|
|
||||||
'email' : 'copeland@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0107',
|
|
||||||
'address' : '956 6th Avenue North Bergen, NJ 0704',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680e7eb988a58ddf303',
|
|
||||||
'name' : 'Estes',
|
|
||||||
'lastName': 'Stevens',
|
|
||||||
'avatar' : 'assets/images/avatars/Estes.jpg',
|
|
||||||
'nickname': 'Roamer',
|
|
||||||
'company' : 'nam-dex',
|
|
||||||
'jobTitle': 'Special Effects Artist',
|
|
||||||
'email' : 'estes@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0113',
|
|
||||||
'address' : '664 York Street Cambridge, MA 02138',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680dcb077889f758961',
|
|
||||||
'name' : 'Harper',
|
|
||||||
'lastName': 'MacGuffin',
|
|
||||||
'avatar' : 'assets/images/avatars/Harper.jpg',
|
|
||||||
'nickname': 'Tempest',
|
|
||||||
'company' : 'runcane',
|
|
||||||
'jobTitle': 'Application Developer',
|
|
||||||
'email' : 'harper@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0173',
|
|
||||||
'address' : '738 Route 11 Cornelius, NC 28031',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6806acf030f9341e925',
|
|
||||||
'name' : 'Helen',
|
|
||||||
'lastName': 'Sheridan',
|
|
||||||
'avatar' : 'assets/images/avatars/Helen.jpg',
|
|
||||||
'nickname': 'Magicbattler',
|
|
||||||
'company' : 'Subhow',
|
|
||||||
'jobTitle': 'Content Developer',
|
|
||||||
'email' : 'helen@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0163',
|
|
||||||
'address' : '194 Washington Avenue Saint Petersburg, FL 33702',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680ae1ae9a3c960d487',
|
|
||||||
'name' : 'Henderson',
|
|
||||||
'lastName': 'Cambias',
|
|
||||||
'avatar' : 'assets/images/avatars/Henderson.jpg',
|
|
||||||
'nickname': 'Blizzard',
|
|
||||||
'company' : 'Howcom',
|
|
||||||
'jobTitle': 'Web Designer',
|
|
||||||
'email' : 'henderson@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0151',
|
|
||||||
'address' : '686 Roosevelt Avenue Oviedo, FL 32765',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680b8d240c011dd224b',
|
|
||||||
'name' : 'Josefina',
|
|
||||||
'lastName': 'Lakefield',
|
|
||||||
'avatar' : 'assets/images/avatars/Josefina.jpg',
|
|
||||||
'nickname': 'Violet',
|
|
||||||
'company' : 'Gecko',
|
|
||||||
'jobTitle': 'Web Developer',
|
|
||||||
'email' : 'josefina@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0160',
|
|
||||||
'address' : '202 Hartford Road Lynchburg, VA 24502',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68034cb3968e1f79eac',
|
|
||||||
'name' : 'Katina',
|
|
||||||
'lastName': 'Bletchley',
|
|
||||||
'avatar' : 'assets/images/avatars/Katina.jpg',
|
|
||||||
'nickname': 'Rose',
|
|
||||||
'company' : 'Lexicom',
|
|
||||||
'jobTitle': 'Software Designer',
|
|
||||||
'email' : 'katina@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0186',
|
|
||||||
'address' : '219 Woodland Road Valrico, FL 33594',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6801146cce777df2a08',
|
|
||||||
'name' : 'Lily',
|
|
||||||
'lastName': 'Peasegood',
|
|
||||||
'avatar' : 'assets/images/avatars/Lily.jpg',
|
|
||||||
'nickname': 'Star',
|
|
||||||
'company' : 'zooflex',
|
|
||||||
'jobTitle': 'Software Specialist',
|
|
||||||
'email' : 'lily@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0115',
|
|
||||||
'address' : '305 Willow Drive Superior, WI 54880',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6808a178bfd034d6ecf',
|
|
||||||
'name' : 'Mai',
|
|
||||||
'lastName': 'Nox',
|
|
||||||
'avatar' : 'assets/images/avatars/Mai.jpg',
|
|
||||||
'nickname': 'Violetmage',
|
|
||||||
'company' : 'quadzone',
|
|
||||||
'jobTitle': 'Software Engineer',
|
|
||||||
'email' : 'mai@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0199',
|
|
||||||
'address' : '148 Heather Lane Mcminnville, TN 37110',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680653c265f5c79b5a9',
|
|
||||||
'name' : 'Nancy',
|
|
||||||
'lastName': 'Jaggers',
|
|
||||||
'avatar' : 'assets/images/avatars/Nancy.jpg',
|
|
||||||
'nickname': 'Silverwarden',
|
|
||||||
'company' : 'Opetamnix',
|
|
||||||
'jobTitle': 'Software Architect',
|
|
||||||
'email' : 'nancy@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0120',
|
|
||||||
'address' : '345 Laurel Lane Union City, NJ 07087',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680bbcec3cc32a8488a',
|
|
||||||
'name' : 'Nora',
|
|
||||||
'lastName': 'Franklin',
|
|
||||||
'avatar' : 'assets/images/avatars/Nora.jpg',
|
|
||||||
'nickname': 'Katanachanter',
|
|
||||||
'company' : 'Saoway',
|
|
||||||
'jobTitle': 'Database Coordinator',
|
|
||||||
'email' : 'nora@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0172',
|
|
||||||
'address' : '572 Rose Street Summerfield, FL 34491',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6803d87f1b77e17b62b',
|
|
||||||
'name' : 'Odessa',
|
|
||||||
'lastName': 'Goodman',
|
|
||||||
'avatar' : 'assets/images/avatars/Odessa.jpg',
|
|
||||||
'nickname': 'Rose',
|
|
||||||
'company' : 'transace',
|
|
||||||
'jobTitle': 'Database Administration Manager',
|
|
||||||
'email' : 'odessa@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0190',
|
|
||||||
'address' : '527 Jefferson Court Conyers, GA 30012',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680e87cb319bd9bd673',
|
|
||||||
'name' : 'Reyna',
|
|
||||||
'lastName': 'Preece',
|
|
||||||
'avatar' : 'assets/images/avatars/Reyna.jpg',
|
|
||||||
'nickname': 'Holydawn',
|
|
||||||
'company' : 'Dingex',
|
|
||||||
'jobTitle': 'Data Processing Planner',
|
|
||||||
'email' : 'reyna@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0116',
|
|
||||||
'address' : '297 Strawberry Lane Faribault, MN 55021',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6802d10e277a0f35775',
|
|
||||||
'name' : 'Shauna',
|
|
||||||
'lastName': 'Atherton',
|
|
||||||
'avatar' : 'assets/images/avatars/Shauna.jpg',
|
|
||||||
'nickname': 'Faunasoul',
|
|
||||||
'company' : 'Vivaflex',
|
|
||||||
'jobTitle': 'Art Director',
|
|
||||||
'email' : 'shauna@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0159',
|
|
||||||
'address' : '928 Canterbury Court Pittsburgh, PA 15206',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680aef1e5cf26dd3d1f',
|
|
||||||
'name' : 'Shepard',
|
|
||||||
'lastName': 'Rosco',
|
|
||||||
'avatar' : 'assets/images/avatars/Shepard.jpg',
|
|
||||||
'nickname': 'Fireking',
|
|
||||||
'company' : 'Goldenla',
|
|
||||||
'jobTitle': 'Magazine Designer',
|
|
||||||
'email' : 'shepard@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0173',
|
|
||||||
'address' : '904 Ridge Road Pickerington, OH 43147',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680cd7efa56a45aea5d',
|
|
||||||
'name' : 'Tillman',
|
|
||||||
'lastName': 'Lee',
|
|
||||||
'avatar' : 'assets/images/avatars/Tillman.jpg',
|
|
||||||
'nickname': 'Gust',
|
|
||||||
'company' : 'K-techno',
|
|
||||||
'jobTitle': 'News Photographer',
|
|
||||||
'email' : 'tillman@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0183',
|
|
||||||
'address' : '447 Charles Street Dorchester, MA 02125',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a680fb65c91a82cb35e2',
|
|
||||||
'name' : 'Trevino',
|
|
||||||
'lastName': 'Bush',
|
|
||||||
'avatar' : 'assets/images/avatars/Trevino.jpg',
|
|
||||||
'nickname': 'Wolf',
|
|
||||||
'company' : 'Dalthex',
|
|
||||||
'jobTitle': 'Photojournalist',
|
|
||||||
'email' : 'trevino@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0138',
|
|
||||||
'address' : '84 Valley View Road Norman, OK 73072',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a68018c663044be49cbf',
|
|
||||||
'name' : 'Tyson',
|
|
||||||
'lastName': 'Marshall',
|
|
||||||
'avatar' : 'assets/images/avatars/Tyson.jpg',
|
|
||||||
'nickname': 'Honordread',
|
|
||||||
'company' : 'Geocon',
|
|
||||||
'jobTitle': 'Manuscript Editor',
|
|
||||||
'email' : 'tyson@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0146',
|
|
||||||
'address' : '204 Clark Street Monsey, NY 10952',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6809413bf8a0a5272b1',
|
|
||||||
'name' : 'Velazquez',
|
|
||||||
'lastName': 'Smethley',
|
|
||||||
'avatar' : 'assets/images/avatars/Velazquez.jpg',
|
|
||||||
'nickname': 'Strifedream',
|
|
||||||
'company' : 'ranex',
|
|
||||||
'jobTitle': 'Publications Editor',
|
|
||||||
'email' : 'velezquez@withinpixels.com',
|
|
||||||
'phone' : '+1-202-555-0146',
|
|
||||||
'address' : '261 Cleveland Street Riverside, NJ 08075',
|
|
||||||
'birthday': null,
|
|
||||||
'notes' : ''
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
public static user = [
|
|
||||||
{
|
|
||||||
'id' : '5725a6802d10e277a0f35724',
|
|
||||||
'name' : 'John Doe',
|
|
||||||
'avatar' : 'assets/images/avatars/profile.jpg',
|
|
||||||
'starred' : [
|
|
||||||
'5725a680ae1ae9a3c960d487',
|
|
||||||
'5725a6801146cce777df2a08',
|
|
||||||
'5725a680bbcec3cc32a8488a',
|
|
||||||
'5725a680bc670af746c435e2',
|
|
||||||
'5725a68009e20d0a9e9acf2a'
|
|
||||||
],
|
|
||||||
'frequentContacts': [
|
|
||||||
'5725a6809fdd915739187ed5',
|
|
||||||
'5725a68031fdbb1db2c1af47',
|
|
||||||
'5725a680606588342058356d',
|
|
||||||
'5725a680e7eb988a58ddf303',
|
|
||||||
'5725a6806acf030f9341e925',
|
|
||||||
'5725a68034cb3968e1f79eac',
|
|
||||||
'5725a6801146cce777df2a08',
|
|
||||||
'5725a680653c265f5c79b5a9'
|
|
||||||
],
|
|
||||||
'groups' : [
|
|
||||||
{
|
|
||||||
'id' : '5725a6802d10e277a0f35739',
|
|
||||||
'name' : 'Friends',
|
|
||||||
'contactIds': [
|
|
||||||
'5725a680bbcec3cc32a8488a',
|
|
||||||
'5725a680e87cb319bd9bd673',
|
|
||||||
'5725a6802d10e277a0f35775'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6802d10e277a0f35749',
|
|
||||||
'name' : 'Clients',
|
|
||||||
'contactIds': [
|
|
||||||
'5725a680cd7efa56a45aea5d',
|
|
||||||
'5725a68018c663044be49cbf',
|
|
||||||
'5725a6809413bf8a0a5272b1',
|
|
||||||
'5725a6803d87f1b77e17b62b'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'id' : '5725a6802d10e277a0f35329',
|
|
||||||
'name' : 'Recent Workers',
|
|
||||||
'contactIds': [
|
|
||||||
'5725a680bbcec3cc32a8488a',
|
|
||||||
'5725a680653c265f5c79b5a9',
|
|
||||||
'5725a6808a178bfd034d6ecf',
|
|
||||||
'5725a6801146cce777df2a08'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,146 +0,0 @@
|
|||||||
export class FileManagerFakeDb
|
|
||||||
{
|
|
||||||
public static files = [
|
|
||||||
{
|
|
||||||
'name' : 'Work Documents',
|
|
||||||
'type' : 'folder',
|
|
||||||
'owner' : 'me',
|
|
||||||
'size' : '',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'Public Documents',
|
|
||||||
'type' : 'folder',
|
|
||||||
'owner' : 'public',
|
|
||||||
'size' : '',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'Private Documents',
|
|
||||||
'type' : 'folder',
|
|
||||||
'owner' : 'me',
|
|
||||||
'size' : '',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'Ongoing projects',
|
|
||||||
'type' : 'document',
|
|
||||||
'owner' : 'Emily Bennett',
|
|
||||||
'size' : '1.2 Mb',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true,
|
|
||||||
'preview' : 'assets/images/etc/sample-file-preview.jpg'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'Shopping list',
|
|
||||||
'type' : 'document',
|
|
||||||
'owner' : 'Emily Bennett',
|
|
||||||
'size' : '980 Kb',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true,
|
|
||||||
'preview' : 'assets/images/etc/sample-file-preview.jpg'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'Invoices',
|
|
||||||
'type' : 'spreadsheet',
|
|
||||||
'owner' : 'Emily Bennett',
|
|
||||||
'size' : '750 Kb',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true,
|
|
||||||
'preview' : 'assets/images/etc/sample-file-preview.jpg'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'Crash logs',
|
|
||||||
'type' : 'document',
|
|
||||||
'owner' : 'Emily Bennett',
|
|
||||||
'size' : '980 Mb',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true,
|
|
||||||
'preview' : 'assets/images/etc/sample-file-preview.jpg'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'System logs',
|
|
||||||
'type' : 'document',
|
|
||||||
'owner' : 'Emily Bennett',
|
|
||||||
'size' : '52 Kb',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true,
|
|
||||||
'preview' : 'assets/images/etc/sample-file-preview.jpg'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'Prices',
|
|
||||||
'type' : 'spreadsheet',
|
|
||||||
'owner' : 'Emily Bennett',
|
|
||||||
'size' : '27 Mb',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true,
|
|
||||||
'preview' : 'assets/images/etc/sample-file-preview.jpg'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'Anabelle Manual',
|
|
||||||
'type' : 'document',
|
|
||||||
'owner' : 'Emily Bennett',
|
|
||||||
'size' : '1.1 Kb',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true,
|
|
||||||
'preview' : 'assets/images/etc/sample-file-preview.jpg'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name' : 'Steam summer sale budget',
|
|
||||||
'type' : 'spreadsheet',
|
|
||||||
'owner' : 'Emily Bennett',
|
|
||||||
'size' : '505 Kb',
|
|
||||||
'modified' : 'July 8, 2017',
|
|
||||||
'opened' : 'July 8, 2017',
|
|
||||||
'created' : 'July 8, 2017',
|
|
||||||
'extention': '',
|
|
||||||
'location' : 'My Files > Documents',
|
|
||||||
'offline' : true,
|
|
||||||
'preview' : 'assets/images/etc/sample-file-preview.jpg'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
import { InMemoryDbService } from 'angular-in-memory-web-api';
|
|
||||||
|
|
||||||
import { MailFakeDb } from './mail';
|
|
||||||
import { ChatFakeDb } from './chat';
|
|
||||||
import { CalendarFakeDb } from './calendar';
|
|
||||||
import { TodoFakeDb } from './todo';
|
|
||||||
import { ProfileFakeDb } from './profile';
|
|
||||||
import { ContactsFakeDb } from './contacts';
|
|
||||||
import { InvoiceFakeDb } from './invoice';
|
|
||||||
import { FileManagerFakeDb } from './file-manager';
|
|
||||||
import { SearchFakeDb } from './search';
|
|
||||||
import { QuickPanelFakeDb } from './quick-panel';
|
|
||||||
import { IconsFakeDb } from './icons';
|
|
||||||
import { ProjectsDashboardDb } from './projects-dashboard';
|
|
||||||
|
|
||||||
export class FuseFakeDbService implements InMemoryDbService
|
|
||||||
{
|
|
||||||
createDb()
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
'mail-mails' : MailFakeDb.mails,
|
|
||||||
'mail-folders' : MailFakeDb.folders,
|
|
||||||
'mail-filters' : MailFakeDb.filters,
|
|
||||||
'mail-labels' : MailFakeDb.labels,
|
|
||||||
'chat-contacts' : ChatFakeDb.contacts,
|
|
||||||
'chat-chats' : ChatFakeDb.chats,
|
|
||||||
'chat-user' : ChatFakeDb.user,
|
|
||||||
'calendar' : CalendarFakeDb.data,
|
|
||||||
'todo-todos' : TodoFakeDb.todos,
|
|
||||||
'todo-filters' : TodoFakeDb.filters,
|
|
||||||
'todo-tags' : TodoFakeDb.tags,
|
|
||||||
'profile-timeline' : ProfileFakeDb.timeline,
|
|
||||||
'profile-photos-videos' : ProfileFakeDb.photosVideos,
|
|
||||||
'profile-about' : ProfileFakeDb.about,
|
|
||||||
'contacts-contacts' : ContactsFakeDb.contacts,
|
|
||||||
'contacts-user' : ContactsFakeDb.user,
|
|
||||||
'invoice' : InvoiceFakeDb.invoice,
|
|
||||||
'file-manager' : FileManagerFakeDb.files,
|
|
||||||
'search-classic' : SearchFakeDb.classic,
|
|
||||||
'search-table' : SearchFakeDb.table,
|
|
||||||
'quick-panel-notes' : QuickPanelFakeDb.notes,
|
|
||||||
'quick-panel-events' : QuickPanelFakeDb.events,
|
|
||||||
'icons' : IconsFakeDb.icons,
|
|
||||||
'projects-dashboard-projects': ProjectsDashboardDb.projects,
|
|
||||||
'projects-dashboard-widgets' : ProjectsDashboardDb.widgets
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,938 +0,0 @@
|
|||||||
export class IconsFakeDb
|
|
||||||
{
|
|
||||||
public static icons = [
|
|
||||||
'3d_rotation',
|
|
||||||
'ac_unit',
|
|
||||||
'access_alarm',
|
|
||||||
'access_alarms',
|
|
||||||
'access_time',
|
|
||||||
'accessibility',
|
|
||||||
'accessible',
|
|
||||||
'account_balance',
|
|
||||||
'account_balance_wallet',
|
|
||||||
'account_box',
|
|
||||||
'account_circle',
|
|
||||||
'adb',
|
|
||||||
'add',
|
|
||||||
'add_a_photo',
|
|
||||||
'add_alarm',
|
|
||||||
'add_alert',
|
|
||||||
'add_box',
|
|
||||||
'add_circle',
|
|
||||||
'add_circle_outline',
|
|
||||||
'add_location',
|
|
||||||
'add_shopping_cart',
|
|
||||||
'add_to_photos',
|
|
||||||
'add_to_queue',
|
|
||||||
'adjust',
|
|
||||||
'airline_seat_flat',
|
|
||||||
'airline_seat_flat_angled',
|
|
||||||
'airline_seat_individual_suite',
|
|
||||||
'airline_seat_legroom_extra',
|
|
||||||
'airline_seat_legroom_normal',
|
|
||||||
'airline_seat_legroom_reduced',
|
|
||||||
'airline_seat_recline_extra',
|
|
||||||
'airline_seat_recline_normal',
|
|
||||||
'airplanemode_active',
|
|
||||||
'airplanemode_inactive',
|
|
||||||
'airplay',
|
|
||||||
'airport_shuttle',
|
|
||||||
'alarm',
|
|
||||||
'alarm_add',
|
|
||||||
'alarm_off',
|
|
||||||
'alarm_on',
|
|
||||||
'album',
|
|
||||||
'all_inclusive',
|
|
||||||
'all_out',
|
|
||||||
'android',
|
|
||||||
'announcement',
|
|
||||||
'apps',
|
|
||||||
'archive',
|
|
||||||
'arrow_back',
|
|
||||||
'arrow_downward',
|
|
||||||
'arrow_drop_down',
|
|
||||||
'arrow_drop_down_circle',
|
|
||||||
'arrow_drop_up',
|
|
||||||
'arrow_forward',
|
|
||||||
'arrow_upward',
|
|
||||||
'art_track',
|
|
||||||
'aspect_ratio',
|
|
||||||
'assessment',
|
|
||||||
'assignment',
|
|
||||||
'assignment_ind',
|
|
||||||
'assignment_late',
|
|
||||||
'assignment_return',
|
|
||||||
'assignment_returned',
|
|
||||||
'assignment_turned_in',
|
|
||||||
'assistant',
|
|
||||||
'assistant_photo',
|
|
||||||
'attach_file',
|
|
||||||
'attach_money',
|
|
||||||
'attachment',
|
|
||||||
'audiotrack',
|
|
||||||
'autorenew',
|
|
||||||
'av_timer',
|
|
||||||
'backspace',
|
|
||||||
'backup',
|
|
||||||
'battery_alert',
|
|
||||||
'battery_charging_full',
|
|
||||||
'battery_full',
|
|
||||||
'battery_std',
|
|
||||||
'battery_unknown',
|
|
||||||
'beach_access',
|
|
||||||
'beenhere',
|
|
||||||
'block',
|
|
||||||
'bluetooth',
|
|
||||||
'bluetooth_audio',
|
|
||||||
'bluetooth_connected',
|
|
||||||
'bluetooth_disabled',
|
|
||||||
'bluetooth_searching',
|
|
||||||
'blur_circular',
|
|
||||||
'blur_linear',
|
|
||||||
'blur_off',
|
|
||||||
'blur_on',
|
|
||||||
'book',
|
|
||||||
'bookmark',
|
|
||||||
'bookmark_border',
|
|
||||||
'border_all',
|
|
||||||
'border_bottom',
|
|
||||||
'border_clear',
|
|
||||||
'border_color',
|
|
||||||
'border_horizontal',
|
|
||||||
'border_inner',
|
|
||||||
'border_left',
|
|
||||||
'border_outer',
|
|
||||||
'border_right',
|
|
||||||
'border_style',
|
|
||||||
'border_top',
|
|
||||||
'border_vertical',
|
|
||||||
'branding_watermark',
|
|
||||||
'brightness_1',
|
|
||||||
'brightness_2',
|
|
||||||
'brightness_3',
|
|
||||||
'brightness_4',
|
|
||||||
'brightness_5',
|
|
||||||
'brightness_6',
|
|
||||||
'brightness_7',
|
|
||||||
'brightness_auto',
|
|
||||||
'brightness_high',
|
|
||||||
'brightness_low',
|
|
||||||
'brightness_medium',
|
|
||||||
'broken_image',
|
|
||||||
'brush',
|
|
||||||
'bubble_chart',
|
|
||||||
'bug_report',
|
|
||||||
'build',
|
|
||||||
'burst_mode',
|
|
||||||
'business',
|
|
||||||
'business_center',
|
|
||||||
'cached',
|
|
||||||
'cake',
|
|
||||||
'call',
|
|
||||||
'call_end',
|
|
||||||
'call_made',
|
|
||||||
'call_merge',
|
|
||||||
'call_missed',
|
|
||||||
'call_missed_outgoing',
|
|
||||||
'call_received',
|
|
||||||
'call_split',
|
|
||||||
'call_to_action',
|
|
||||||
'camera',
|
|
||||||
'camera_alt',
|
|
||||||
'camera_enhance',
|
|
||||||
'camera_front',
|
|
||||||
'camera_rear',
|
|
||||||
'camera_roll',
|
|
||||||
'cancel',
|
|
||||||
'card_giftcard',
|
|
||||||
'card_membership',
|
|
||||||
'card_travel',
|
|
||||||
'casino',
|
|
||||||
'cast',
|
|
||||||
'cast_connected',
|
|
||||||
'center_focus_strong',
|
|
||||||
'center_focus_weak',
|
|
||||||
'change_history',
|
|
||||||
'chat',
|
|
||||||
'chat_bubble',
|
|
||||||
'chat_bubble_outline',
|
|
||||||
'check',
|
|
||||||
'check_box',
|
|
||||||
'check_box_outline_blank',
|
|
||||||
'check_circle',
|
|
||||||
'chevron_left',
|
|
||||||
'chevron_right',
|
|
||||||
'child_care',
|
|
||||||
'child_friendly',
|
|
||||||
'chrome_reader_mode',
|
|
||||||
'class',
|
|
||||||
'clear',
|
|
||||||
'clear_all',
|
|
||||||
'close',
|
|
||||||
'closed_caption',
|
|
||||||
'cloud',
|
|
||||||
'cloud_circle',
|
|
||||||
'cloud_done',
|
|
||||||
'cloud_download',
|
|
||||||
'cloud_off',
|
|
||||||
'cloud_queue',
|
|
||||||
'cloud_upload',
|
|
||||||
'code',
|
|
||||||
'collections',
|
|
||||||
'collections_bookmark',
|
|
||||||
'color_lens',
|
|
||||||
'colorize',
|
|
||||||
'comment',
|
|
||||||
'compare',
|
|
||||||
'compare_arrows',
|
|
||||||
'computer',
|
|
||||||
'confirmation_number',
|
|
||||||
'contact_mail',
|
|
||||||
'contact_phone',
|
|
||||||
'contacts',
|
|
||||||
'content_copy',
|
|
||||||
'content_cut',
|
|
||||||
'content_paste',
|
|
||||||
'control_point',
|
|
||||||
'control_point_duplicate',
|
|
||||||
'copyright',
|
|
||||||
'create',
|
|
||||||
'create_new_folder',
|
|
||||||
'credit_card',
|
|
||||||
'crop',
|
|
||||||
'crop_16_9',
|
|
||||||
'crop_3_2',
|
|
||||||
'crop_5_4',
|
|
||||||
'crop_7_5',
|
|
||||||
'crop_din',
|
|
||||||
'crop_free',
|
|
||||||
'crop_landscape',
|
|
||||||
'crop_original',
|
|
||||||
'crop_portrait',
|
|
||||||
'crop_rotate',
|
|
||||||
'crop_square',
|
|
||||||
'dashboard',
|
|
||||||
'data_usage',
|
|
||||||
'date_range',
|
|
||||||
'dehaze',
|
|
||||||
'delete',
|
|
||||||
'delete_forever',
|
|
||||||
'delete_sweep',
|
|
||||||
'description',
|
|
||||||
'desktop_mac',
|
|
||||||
'desktop_windows',
|
|
||||||
'details',
|
|
||||||
'developer_board',
|
|
||||||
'developer_mode',
|
|
||||||
'device_hub',
|
|
||||||
'devices',
|
|
||||||
'devices_other',
|
|
||||||
'dialer_sip',
|
|
||||||
'dialpad',
|
|
||||||
'directions',
|
|
||||||
'directions_bike',
|
|
||||||
'directions_boat',
|
|
||||||
'directions_bus',
|
|
||||||
'directions_car',
|
|
||||||
'directions_railway',
|
|
||||||
'directions_run',
|
|
||||||
'directions_subway',
|
|
||||||
'directions_transit',
|
|
||||||
'directions_walk',
|
|
||||||
'disc_full',
|
|
||||||
'dns',
|
|
||||||
'do_not_disturb',
|
|
||||||
'do_not_disturb_alt',
|
|
||||||
'do_not_disturb_off',
|
|
||||||
'do_not_disturb_on',
|
|
||||||
'dock',
|
|
||||||
'domain',
|
|
||||||
'done',
|
|
||||||
'done_all',
|
|
||||||
'donut_large',
|
|
||||||
'donut_small',
|
|
||||||
'drafts',
|
|
||||||
'drag_handle',
|
|
||||||
'drive_eta',
|
|
||||||
'dvr',
|
|
||||||
'edit',
|
|
||||||
'edit_location',
|
|
||||||
'eject',
|
|
||||||
'email',
|
|
||||||
'enhanced_encryption',
|
|
||||||
'equalizer',
|
|
||||||
'error',
|
|
||||||
'error_outline',
|
|
||||||
'euro_symbol',
|
|
||||||
'ev_station',
|
|
||||||
'event',
|
|
||||||
'event_available',
|
|
||||||
'event_busy',
|
|
||||||
'event_note',
|
|
||||||
'event_seat',
|
|
||||||
'exit_to_app',
|
|
||||||
'expand_less',
|
|
||||||
'expand_more',
|
|
||||||
'explicit',
|
|
||||||
'explore',
|
|
||||||
'exposure',
|
|
||||||
'exposure_neg_1',
|
|
||||||
'exposure_neg_2',
|
|
||||||
'exposure_plus_1',
|
|
||||||
'exposure_plus_2',
|
|
||||||
'exposure_zero',
|
|
||||||
'extension',
|
|
||||||
'face',
|
|
||||||
'fast_forward',
|
|
||||||
'fast_rewind',
|
|
||||||
'favorite',
|
|
||||||
'favorite_border',
|
|
||||||
'featured_play_list',
|
|
||||||
'featured_video',
|
|
||||||
'feedback',
|
|
||||||
'fiber_dvr',
|
|
||||||
'fiber_manual_record',
|
|
||||||
'fiber_new',
|
|
||||||
'fiber_pin',
|
|
||||||
'fiber_smart_record',
|
|
||||||
'file_download',
|
|
||||||
'file_upload',
|
|
||||||
'filter',
|
|
||||||
'filter_1',
|
|
||||||
'filter_2',
|
|
||||||
'filter_3',
|
|
||||||
'filter_4',
|
|
||||||
'filter_5',
|
|
||||||
'filter_6',
|
|
||||||
'filter_7',
|
|
||||||
'filter_8',
|
|
||||||
'filter_9',
|
|
||||||
'filter_9_plus',
|
|
||||||
'filter_b_and_w',
|
|
||||||
'filter_center_focus',
|
|
||||||
'filter_drama',
|
|
||||||
'filter_frames',
|
|
||||||
'filter_hdr',
|
|
||||||
'filter_list',
|
|
||||||
'filter_none',
|
|
||||||
'filter_tilt_shift',
|
|
||||||
'filter_vintage',
|
|
||||||
'find_in_page',
|
|
||||||
'find_replace',
|
|
||||||
'fingerprint',
|
|
||||||
'first_page',
|
|
||||||
'fitness_center',
|
|
||||||
'flag',
|
|
||||||
'flare',
|
|
||||||
'flash_auto',
|
|
||||||
'flash_off',
|
|
||||||
'flash_on',
|
|
||||||
'flight',
|
|
||||||
'flight_land',
|
|
||||||
'flight_takeoff',
|
|
||||||
'flip',
|
|
||||||
'flip_to_back',
|
|
||||||
'flip_to_front',
|
|
||||||
'folder',
|
|
||||||
'folder_open',
|
|
||||||
'folder_shared',
|
|
||||||
'folder_special',
|
|
||||||
'font_download',
|
|
||||||
'format_align_center',
|
|
||||||
'format_align_justify',
|
|
||||||
'format_align_left',
|
|
||||||
'format_align_right',
|
|
||||||
'format_bold',
|
|
||||||
'format_clear',
|
|
||||||
'format_color_fill',
|
|
||||||
'format_color_reset',
|
|
||||||
'format_color_text',
|
|
||||||
'format_indent_decrease',
|
|
||||||
'format_indent_increase',
|
|
||||||
'format_italic',
|
|
||||||
'format_line_spacing',
|
|
||||||
'format_list_bulleted',
|
|
||||||
'format_list_numbered',
|
|
||||||
'format_paint',
|
|
||||||
'format_quote',
|
|
||||||
'format_shapes',
|
|
||||||
'format_size',
|
|
||||||
'format_strikethrough',
|
|
||||||
'format_textdirection_l_to_r',
|
|
||||||
'format_textdirection_r_to_l',
|
|
||||||
'format_underlined',
|
|
||||||
'forum',
|
|
||||||
'forward',
|
|
||||||
'forward_10',
|
|
||||||
'forward_30',
|
|
||||||
'forward_5',
|
|
||||||
'free_breakfast',
|
|
||||||
'fullscreen',
|
|
||||||
'fullscreen_exit',
|
|
||||||
'functions',
|
|
||||||
'g_translate',
|
|
||||||
'gamepad',
|
|
||||||
'games',
|
|
||||||
'gavel',
|
|
||||||
'gesture',
|
|
||||||
'get_app',
|
|
||||||
'gif',
|
|
||||||
'golf_course',
|
|
||||||
'gps_fixed',
|
|
||||||
'gps_not_fixed',
|
|
||||||
'gps_off',
|
|
||||||
'grade',
|
|
||||||
'gradient',
|
|
||||||
'grain',
|
|
||||||
'graphic_eq',
|
|
||||||
'grid_off',
|
|
||||||
'grid_on',
|
|
||||||
'group',
|
|
||||||
'group_add',
|
|
||||||
'group_work',
|
|
||||||
'hd',
|
|
||||||
'hdr_off',
|
|
||||||
'hdr_on',
|
|
||||||
'hdr_strong',
|
|
||||||
'hdr_weak',
|
|
||||||
'headset',
|
|
||||||
'headset_mic',
|
|
||||||
'healing',
|
|
||||||
'hearing',
|
|
||||||
'help',
|
|
||||||
'help_outline',
|
|
||||||
'high_quality',
|
|
||||||
'highlight',
|
|
||||||
'highlight_off',
|
|
||||||
'history',
|
|
||||||
'home',
|
|
||||||
'hot_tub',
|
|
||||||
'hotel',
|
|
||||||
'hourglass_empty',
|
|
||||||
'hourglass_full',
|
|
||||||
'http',
|
|
||||||
'https',
|
|
||||||
'image',
|
|
||||||
'image_aspect_ratio',
|
|
||||||
'import_contacts',
|
|
||||||
'import_export',
|
|
||||||
'important_devices',
|
|
||||||
'inbox',
|
|
||||||
'indeterminate_check_box',
|
|
||||||
'info',
|
|
||||||
'info_outline',
|
|
||||||
'input',
|
|
||||||
'insert_chart',
|
|
||||||
'insert_comment',
|
|
||||||
'insert_drive_file',
|
|
||||||
'insert_emoticon',
|
|
||||||
'insert_invitation',
|
|
||||||
'insert_link',
|
|
||||||
'insert_photo',
|
|
||||||
'invert_colors',
|
|
||||||
'invert_colors_off',
|
|
||||||
'iso',
|
|
||||||
'keyboard',
|
|
||||||
'keyboard_arrow_down',
|
|
||||||
'keyboard_arrow_left',
|
|
||||||
'keyboard_arrow_right',
|
|
||||||
'keyboard_arrow_up',
|
|
||||||
'keyboard_backspace',
|
|
||||||
'keyboard_capslock',
|
|
||||||
'keyboard_hide',
|
|
||||||
'keyboard_return',
|
|
||||||
'keyboard_tab',
|
|
||||||
'keyboard_voice',
|
|
||||||
'kitchen',
|
|
||||||
'label',
|
|
||||||
'label_outline',
|
|
||||||
'landscape',
|
|
||||||
'language',
|
|
||||||
'laptop',
|
|
||||||
'laptop_chromebook',
|
|
||||||
'laptop_mac',
|
|
||||||
'laptop_windows',
|
|
||||||
'last_page',
|
|
||||||
'launch',
|
|
||||||
'layers',
|
|
||||||
'layers_clear',
|
|
||||||
'leak_add',
|
|
||||||
'leak_remove',
|
|
||||||
'lens',
|
|
||||||
'library_add',
|
|
||||||
'library_books',
|
|
||||||
'library_music',
|
|
||||||
'lightbulb_outline',
|
|
||||||
'line_style',
|
|
||||||
'line_weight',
|
|
||||||
'linear_scale',
|
|
||||||
'link',
|
|
||||||
'linked_camera',
|
|
||||||
'list',
|
|
||||||
'live_help',
|
|
||||||
'live_tv',
|
|
||||||
'local_activity',
|
|
||||||
'local_airport',
|
|
||||||
'local_atm',
|
|
||||||
'local_bar',
|
|
||||||
'local_cafe',
|
|
||||||
'local_car_wash',
|
|
||||||
'local_convenience_store',
|
|
||||||
'local_dining',
|
|
||||||
'local_drink',
|
|
||||||
'local_florist',
|
|
||||||
'local_gas_station',
|
|
||||||
'local_grocery_store',
|
|
||||||
'local_hospital',
|
|
||||||
'local_hotel',
|
|
||||||
'local_laundry_service',
|
|
||||||
'local_library',
|
|
||||||
'local_mall',
|
|
||||||
'local_movies',
|
|
||||||
'local_offer',
|
|
||||||
'local_parking',
|
|
||||||
'local_pharmacy',
|
|
||||||
'local_phone',
|
|
||||||
'local_pizza',
|
|
||||||
'local_play',
|
|
||||||
'local_post_office',
|
|
||||||
'local_printshop',
|
|
||||||
'local_see',
|
|
||||||
'local_shipping',
|
|
||||||
'local_taxi',
|
|
||||||
'location_city',
|
|
||||||
'location_disabled',
|
|
||||||
'location_off',
|
|
||||||
'location_on',
|
|
||||||
'location_searching',
|
|
||||||
'lock',
|
|
||||||
'lock_open',
|
|
||||||
'lock_outline',
|
|
||||||
'looks',
|
|
||||||
'looks_3',
|
|
||||||
'looks_4',
|
|
||||||
'looks_5',
|
|
||||||
'looks_6',
|
|
||||||
'looks_one',
|
|
||||||
'looks_two',
|
|
||||||
'loop',
|
|
||||||
'loupe',
|
|
||||||
'low_priority',
|
|
||||||
'loyalty',
|
|
||||||
'mail',
|
|
||||||
'mail_outline',
|
|
||||||
'map',
|
|
||||||
'markunread',
|
|
||||||
'markunread_mailbox',
|
|
||||||
'memory',
|
|
||||||
'menu',
|
|
||||||
'merge_type',
|
|
||||||
'message',
|
|
||||||
'mic',
|
|
||||||
'mic_none',
|
|
||||||
'mic_off',
|
|
||||||
'mms',
|
|
||||||
'mode_comment',
|
|
||||||
'mode_edit',
|
|
||||||
'monetization_on',
|
|
||||||
'money_off',
|
|
||||||
'monochrome_photos',
|
|
||||||
'mood',
|
|
||||||
'mood_bad',
|
|
||||||
'more',
|
|
||||||
'more_horiz',
|
|
||||||
'more_vert',
|
|
||||||
'motorcycle',
|
|
||||||
'mouse',
|
|
||||||
'move_to_inbox',
|
|
||||||
'movie',
|
|
||||||
'movie_creation',
|
|
||||||
'movie_filter',
|
|
||||||
'multiline_chart',
|
|
||||||
'music_note',
|
|
||||||
'music_video',
|
|
||||||
'my_location',
|
|
||||||
'nature',
|
|
||||||
'nature_people',
|
|
||||||
'navigate_before',
|
|
||||||
'navigate_next',
|
|
||||||
'navigation',
|
|
||||||
'near_me',
|
|
||||||
'network_cell',
|
|
||||||
'network_check',
|
|
||||||
'network_locked',
|
|
||||||
'network_wifi',
|
|
||||||
'new_releases',
|
|
||||||
'next_week',
|
|
||||||
'nfc',
|
|
||||||
'no_encryption',
|
|
||||||
'no_sim',
|
|
||||||
'not_interested',
|
|
||||||
'note',
|
|
||||||
'note_add',
|
|
||||||
'notifications',
|
|
||||||
'notifications_active',
|
|
||||||
'notifications_none',
|
|
||||||
'notifications_off',
|
|
||||||
'notifications_paused',
|
|
||||||
'offline_pin',
|
|
||||||
'ondemand_video',
|
|
||||||
'opacity',
|
|
||||||
'open_in_browser',
|
|
||||||
'open_in_new',
|
|
||||||
'open_with',
|
|
||||||
'pages',
|
|
||||||
'pageview',
|
|
||||||
'palette',
|
|
||||||
'pan_tool',
|
|
||||||
'panorama',
|
|
||||||
'panorama_fish_eye',
|
|
||||||
'panorama_horizontal',
|
|
||||||
'panorama_vertical',
|
|
||||||
'panorama_wide_angle',
|
|
||||||
'party_mode',
|
|
||||||
'pause',
|
|
||||||
'pause_circle_filled',
|
|
||||||
'pause_circle_outline',
|
|
||||||
'payment',
|
|
||||||
'people',
|
|
||||||
'people_outline',
|
|
||||||
'perm_camera_mic',
|
|
||||||
'perm_contact_calendar',
|
|
||||||
'perm_data_setting',
|
|
||||||
'perm_device_information',
|
|
||||||
'perm_identity',
|
|
||||||
'perm_media',
|
|
||||||
'perm_phone_msg',
|
|
||||||
'perm_scan_wifi',
|
|
||||||
'person',
|
|
||||||
'person_add',
|
|
||||||
'person_outline',
|
|
||||||
'person_pin',
|
|
||||||
'person_pin_circle',
|
|
||||||
'personal_video',
|
|
||||||
'pets',
|
|
||||||
'phone',
|
|
||||||
'phone_android',
|
|
||||||
'phone_bluetooth_speaker',
|
|
||||||
'phone_forwarded',
|
|
||||||
'phone_in_talk',
|
|
||||||
'phone_iphone',
|
|
||||||
'phone_locked',
|
|
||||||
'phone_missed',
|
|
||||||
'phone_paused',
|
|
||||||
'phonelink',
|
|
||||||
'phonelink_erase',
|
|
||||||
'phonelink_lock',
|
|
||||||
'phonelink_off',
|
|
||||||
'phonelink_ring',
|
|
||||||
'phonelink_setup',
|
|
||||||
'photo',
|
|
||||||
'photo_album',
|
|
||||||
'photo_camera',
|
|
||||||
'photo_filter',
|
|
||||||
'photo_library',
|
|
||||||
'photo_size_select_actual',
|
|
||||||
'photo_size_select_large',
|
|
||||||
'photo_size_select_small',
|
|
||||||
'picture_as_pdf',
|
|
||||||
'picture_in_picture',
|
|
||||||
'picture_in_picture_alt',
|
|
||||||
'pie_chart',
|
|
||||||
'pie_chart_outlined',
|
|
||||||
'pin_drop',
|
|
||||||
'place',
|
|
||||||
'play_arrow',
|
|
||||||
'play_circle_filled',
|
|
||||||
'play_circle_outline',
|
|
||||||
'play_for_work',
|
|
||||||
'playlist_add',
|
|
||||||
'playlist_add_check',
|
|
||||||
'playlist_play',
|
|
||||||
'plus_one',
|
|
||||||
'poll',
|
|
||||||
'polymer',
|
|
||||||
'pool',
|
|
||||||
'portable_wifi_off',
|
|
||||||
'portrait',
|
|
||||||
'power',
|
|
||||||
'power_input',
|
|
||||||
'power_settings_new',
|
|
||||||
'pregnant_woman',
|
|
||||||
'present_to_all',
|
|
||||||
'print',
|
|
||||||
'priority_high',
|
|
||||||
'public',
|
|
||||||
'publish',
|
|
||||||
'query_builder',
|
|
||||||
'question_answer',
|
|
||||||
'queue',
|
|
||||||
'queue_music',
|
|
||||||
'queue_play_next',
|
|
||||||
'radio',
|
|
||||||
'radio_button_checked',
|
|
||||||
'radio_button_unchecked',
|
|
||||||
'rate_review',
|
|
||||||
'receipt',
|
|
||||||
'recent_actors',
|
|
||||||
'record_voice_over',
|
|
||||||
'redeem',
|
|
||||||
'redo',
|
|
||||||
'refresh',
|
|
||||||
'remove',
|
|
||||||
'remove_circle',
|
|
||||||
'remove_circle_outline',
|
|
||||||
'remove_from_queue',
|
|
||||||
'remove_red_eye',
|
|
||||||
'remove_shopping_cart',
|
|
||||||
'reorder',
|
|
||||||
'repeat',
|
|
||||||
'repeat_one',
|
|
||||||
'replay',
|
|
||||||
'replay_10',
|
|
||||||
'replay_30',
|
|
||||||
'replay_5',
|
|
||||||
'reply',
|
|
||||||
'reply_all',
|
|
||||||
'report',
|
|
||||||
'report_problem',
|
|
||||||
'restaurant',
|
|
||||||
'restaurant_menu',
|
|
||||||
'restore',
|
|
||||||
'restore_page',
|
|
||||||
'ring_volume',
|
|
||||||
'room',
|
|
||||||
'room_service',
|
|
||||||
'rotate_90_degrees_ccw',
|
|
||||||
'rotate_left',
|
|
||||||
'rotate_right',
|
|
||||||
'rounded_corner',
|
|
||||||
'router',
|
|
||||||
'rowing',
|
|
||||||
'rss_feed',
|
|
||||||
'rv_hookup',
|
|
||||||
'satellite',
|
|
||||||
'save',
|
|
||||||
'scanner',
|
|
||||||
'schedule',
|
|
||||||
'school',
|
|
||||||
'screen_lock_landscape',
|
|
||||||
'screen_lock_portrait',
|
|
||||||
'screen_lock_rotation',
|
|
||||||
'screen_rotation',
|
|
||||||
'screen_share',
|
|
||||||
'sd_card',
|
|
||||||
'sd_storage',
|
|
||||||
'search',
|
|
||||||
'security',
|
|
||||||
'select_all',
|
|
||||||
'send',
|
|
||||||
'sentiment_dissatisfied',
|
|
||||||
'sentiment_neutral',
|
|
||||||
'sentiment_satisfied',
|
|
||||||
'sentiment_very_dissatisfied',
|
|
||||||
'sentiment_very_satisfied',
|
|
||||||
'settings',
|
|
||||||
'settings_applications',
|
|
||||||
'settings_backup_restore',
|
|
||||||
'settings_bluetooth',
|
|
||||||
'settings_brightness',
|
|
||||||
'settings_cell',
|
|
||||||
'settings_ethernet',
|
|
||||||
'settings_input_antenna',
|
|
||||||
'settings_input_component',
|
|
||||||
'settings_input_composite',
|
|
||||||
'settings_input_hdmi',
|
|
||||||
'settings_input_svideo',
|
|
||||||
'settings_overscan',
|
|
||||||
'settings_phone',
|
|
||||||
'settings_power',
|
|
||||||
'settings_remote',
|
|
||||||
'settings_system_daydream',
|
|
||||||
'settings_voice',
|
|
||||||
'share',
|
|
||||||
'shop',
|
|
||||||
'shop_two',
|
|
||||||
'shopping_basket',
|
|
||||||
'shopping_cart',
|
|
||||||
'short_text',
|
|
||||||
'show_chart',
|
|
||||||
'shuffle',
|
|
||||||
'signal_cellular_4_bar',
|
|
||||||
'signal_cellular_connected_no_internet_4_bar',
|
|
||||||
'signal_cellular_no_sim',
|
|
||||||
'signal_cellular_null',
|
|
||||||
'signal_cellular_off',
|
|
||||||
'signal_wifi_4_bar',
|
|
||||||
'signal_wifi_4_bar_lock',
|
|
||||||
'signal_wifi_off',
|
|
||||||
'sim_card',
|
|
||||||
'sim_card_alert',
|
|
||||||
'skip_next',
|
|
||||||
'skip_previous',
|
|
||||||
'slideshow',
|
|
||||||
'slow_motion_video',
|
|
||||||
'smartphone',
|
|
||||||
'smoke_free',
|
|
||||||
'smoking_rooms',
|
|
||||||
'sms',
|
|
||||||
'sms_failed',
|
|
||||||
'snooze',
|
|
||||||
'sort',
|
|
||||||
'sort_by_alpha',
|
|
||||||
'spa',
|
|
||||||
'space_bar',
|
|
||||||
'speaker',
|
|
||||||
'speaker_group',
|
|
||||||
'speaker_notes',
|
|
||||||
'speaker_notes_off',
|
|
||||||
'speaker_phone',
|
|
||||||
'spellcheck',
|
|
||||||
'star',
|
|
||||||
'star_border',
|
|
||||||
'star_half',
|
|
||||||
'stars',
|
|
||||||
'stay_current_landscape',
|
|
||||||
'stay_current_portrait',
|
|
||||||
'stay_primary_landscape',
|
|
||||||
'stay_primary_portrait',
|
|
||||||
'stop',
|
|
||||||
'stop_screen_share',
|
|
||||||
'storage',
|
|
||||||
'store',
|
|
||||||
'store_mall_directory',
|
|
||||||
'straighten',
|
|
||||||
'streetview',
|
|
||||||
'strikethrough_s',
|
|
||||||
'style',
|
|
||||||
'subdirectory_arrow_left',
|
|
||||||
'subdirectory_arrow_right',
|
|
||||||
'subject',
|
|
||||||
'subscriptions',
|
|
||||||
'subtitles',
|
|
||||||
'subway',
|
|
||||||
'supervisor_account',
|
|
||||||
'surround_sound',
|
|
||||||
'swap_calls',
|
|
||||||
'swap_horiz',
|
|
||||||
'swap_vert',
|
|
||||||
'swap_vertical_circle',
|
|
||||||
'switch_camera',
|
|
||||||
'switch_video',
|
|
||||||
'sync',
|
|
||||||
'sync_disabled',
|
|
||||||
'sync_problem',
|
|
||||||
'system_update',
|
|
||||||
'system_update_alt',
|
|
||||||
'tab',
|
|
||||||
'tab_unselected',
|
|
||||||
'tablet',
|
|
||||||
'tablet_android',
|
|
||||||
'tablet_mac',
|
|
||||||
'tag_faces',
|
|
||||||
'tap_and_play',
|
|
||||||
'terrain',
|
|
||||||
'text_fields',
|
|
||||||
'text_format',
|
|
||||||
'textsms',
|
|
||||||
'texture',
|
|
||||||
'theaters',
|
|
||||||
'thumb_down',
|
|
||||||
'thumb_up',
|
|
||||||
'thumbs_up_down',
|
|
||||||
'time_to_leave',
|
|
||||||
'timelapse',
|
|
||||||
'timeline',
|
|
||||||
'timer',
|
|
||||||
'timer_10',
|
|
||||||
'timer_3',
|
|
||||||
'timer_off',
|
|
||||||
'title',
|
|
||||||
'toc',
|
|
||||||
'today',
|
|
||||||
'toll',
|
|
||||||
'tonality',
|
|
||||||
'touch_app',
|
|
||||||
'toys',
|
|
||||||
'track_changes',
|
|
||||||
'traffic',
|
|
||||||
'train',
|
|
||||||
'tram',
|
|
||||||
'transfer_within_a_station',
|
|
||||||
'transform',
|
|
||||||
'translate',
|
|
||||||
'trending_down',
|
|
||||||
'trending_flat',
|
|
||||||
'trending_up',
|
|
||||||
'tune',
|
|
||||||
'turned_in',
|
|
||||||
'turned_in_not',
|
|
||||||
'tv',
|
|
||||||
'unarchive',
|
|
||||||
'undo',
|
|
||||||
'unfold_less',
|
|
||||||
'unfold_more',
|
|
||||||
'update',
|
|
||||||
'usb',
|
|
||||||
'verified_user',
|
|
||||||
'vertical_align_bottom',
|
|
||||||
'vertical_align_center',
|
|
||||||
'vertical_align_top',
|
|
||||||
'vibration',
|
|
||||||
'video_call',
|
|
||||||
'video_label',
|
|
||||||
'video_library',
|
|
||||||
'videocam',
|
|
||||||
'videocam_off',
|
|
||||||
'videogame_asset',
|
|
||||||
'view_agenda',
|
|
||||||
'view_array',
|
|
||||||
'view_carousel',
|
|
||||||
'view_column',
|
|
||||||
'view_comfy',
|
|
||||||
'view_compact',
|
|
||||||
'view_day',
|
|
||||||
'view_headline',
|
|
||||||
'view_list',
|
|
||||||
'view_module',
|
|
||||||
'view_quilt',
|
|
||||||
'view_stream',
|
|
||||||
'view_week',
|
|
||||||
'vignette',
|
|
||||||
'visibility',
|
|
||||||
'visibility_off',
|
|
||||||
'voice_chat',
|
|
||||||
'voicemail',
|
|
||||||
'volume_down',
|
|
||||||
'volume_mute',
|
|
||||||
'volume_off',
|
|
||||||
'volume_up',
|
|
||||||
'vpn_key',
|
|
||||||
'vpn_lock',
|
|
||||||
'wallpaper',
|
|
||||||
'warning',
|
|
||||||
'watch',
|
|
||||||
'watch_later',
|
|
||||||
'wb_auto',
|
|
||||||
'wb_cloudy',
|
|
||||||
'wb_incandescent',
|
|
||||||
'wb_iridescent',
|
|
||||||
'wb_sunny',
|
|
||||||
'wc',
|
|
||||||
'web',
|
|
||||||
'web_asset',
|
|
||||||
'weekend',
|
|
||||||
'whatshot',
|
|
||||||
'widgets',
|
|
||||||
'wifi',
|
|
||||||
'wifi_lock',
|
|
||||||
'wifi_tethering',
|
|
||||||
'work',
|
|
||||||
'wrap_text',
|
|
||||||
'youtube_searched_for',
|
|
||||||
'zoom_in',
|
|
||||||
'zoom_out',
|
|
||||||
'zoom_out_map'
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
export class InvoiceFakeDb
|
|
||||||
{
|
|
||||||
public static invoice = {
|
|
||||||
'from' : {
|
|
||||||
'title' : 'Fuse Inc.',
|
|
||||||
'address': '2810 Country Club Road Cranford, NJ 07016',
|
|
||||||
'phone' : '+66 123 455 87',
|
|
||||||
'email' : 'hello@fuseinc.com',
|
|
||||||
'website': 'www.fuseinc.com'
|
|
||||||
},
|
|
||||||
'client' : {
|
|
||||||
'title' : 'John Doe',
|
|
||||||
'address': '9301 Wood Street Philadelphia, PA 19111',
|
|
||||||
'phone' : '+55 552 455 87',
|
|
||||||
'email' : 'johndoe@mail.com'
|
|
||||||
},
|
|
||||||
'number' : 'P9-0004',
|
|
||||||
'date' : 'Jul 19, 2015',
|
|
||||||
'dueDate' : 'Aug 24, 2015',
|
|
||||||
'services': [
|
|
||||||
{
|
|
||||||
'title' : 'Prototype & Design',
|
|
||||||
'detail' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus accumsan, quam sed eleifend imperdiet.',
|
|
||||||
'unit' : 'Hour',
|
|
||||||
'unitPrice': '12.00',
|
|
||||||
'quantity' : '240',
|
|
||||||
'total' : '2880'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title' : 'Coding',
|
|
||||||
'detail' : 'Vestibulum ligula sem, rutrum et libero id, porta vehicula metus. Cras dapibus neque sit amet laoreet vestibulum.',
|
|
||||||
'unit' : 'Hour',
|
|
||||||
'unitPrice': '10.50',
|
|
||||||
'quantity' : '350',
|
|
||||||
'total' : '3675'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title' : 'Testing',
|
|
||||||
'detail' : 'Pellentesque luctus efficitur neque in finibus. Integer ut nunc in augue maximus porttitor id id nulla. In vitae erat.',
|
|
||||||
'unit' : 'Hour',
|
|
||||||
'unitPrice': '4.00',
|
|
||||||
'quantity' : '50',
|
|
||||||
'total' : '200'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title' : 'Documentation & Training',
|
|
||||||
'detail' : 'Pellentesque luctus efficitur neque in finibus. Integer ut nunc in augue maximus porttitor id id nulla. In vitae erat.',
|
|
||||||
'unit' : 'Hour',
|
|
||||||
'unitPrice': '6.50',
|
|
||||||
'quantity' : '260',
|
|
||||||
'total' : '1690'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
'subtotal': '8445',
|
|
||||||
'tax' : '675.60',
|
|
||||||
'discount': '120.60',
|
|
||||||
'total' : '9000'
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user