Compare commits
103 Commits
v1.2.1-ske
...
v1.3.6-ske
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a914ad6dc1 | ||
|
|
43b85ca3b6 | ||
|
|
99696cabf7 | ||
|
|
f246fab1f4 | ||
|
|
b0101a1f8c | ||
|
|
8f5e947c28 | ||
|
|
dfd430712d | ||
|
|
8431c19133 | ||
|
|
6ee6934e0d | ||
|
|
3253fbfaf4 | ||
|
|
b2e840cb60 | ||
|
|
985a8dd3a9 | ||
|
|
0c99c075f3 | ||
|
|
c79db27092 | ||
|
|
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 |
@@ -38,15 +38,27 @@
|
|||||||
"lint": [
|
"lint": [
|
||||||
{
|
{
|
||||||
"project": "src/tsconfig.app.json",
|
"project": "src/tsconfig.app.json",
|
||||||
"exclude": "**/node_modules/**"
|
"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/**"
|
"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/**"
|
"exclude": [
|
||||||
|
"**/node_modules/**",
|
||||||
|
"**/src/app/fuse-fake-db/**/*",
|
||||||
|
"**/src/assets/angular-material-examples/**/*"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"test": {
|
"test": {
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
Material Design Admin Template with Angular 5+ and Angular Material 2
|
Material Design Admin Template with Angular 5+ and Angular Material 2
|
||||||
|
|
||||||
|
## The Community
|
||||||
|
|
||||||
|
Share your ideas, discuss Fuse and help each other.
|
||||||
|
|
||||||
|
[Click here](https://join.slack.com/t/fuse-theme/shared_invite/enQtMzA1NDE4NzYwMjcyLWQxODE4ODM1MWU4MWJjMDhlMGEwYzM4Mzg3N2E4YzVlZThhZjNlOTQ1Y2Q5OTBlNDNkMzJhZDIwMjgxOWQ3YWU) to join our Slack workspace.
|
||||||
|
|
||||||
## Development server
|
## Development server
|
||||||
|
|
||||||
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
|
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
|
||||||
|
|||||||
8141
package-lock.json
generated
105
package.json
@@ -1,72 +1,85 @@
|
|||||||
{
|
{
|
||||||
"name": "fuse2",
|
"name": "fuse2",
|
||||||
"version": "1.2.1",
|
"version": "1.3.6",
|
||||||
"license": "",
|
"license": "https://themeforest.net/licenses/terms/regular",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"start": "ng serve",
|
"start": "ng serve --open",
|
||||||
"start-hmr": "ng serve --hmr -e=hmr -sm=false",
|
"start-hmr": "ng serve --hmr -e=hmr -sm=false",
|
||||||
"start-hmr-sourcemaps": "ng serve --hmr -e=hmr",
|
"start-hmr-sourcemaps": "ng serve --hmr -e=hmr",
|
||||||
"build": "node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build --dev",
|
"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": "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": {
|
||||||
"@agm/core": "1.0.0-beta.2",
|
"@agm/core": "1.0.0-beta.2",
|
||||||
"@angular/animations": "5.0.1",
|
"@angular/animations": "5.2.3",
|
||||||
"@angular/cdk": "5.0.0-rc0",
|
"@angular/cdk": "5.1.1",
|
||||||
"@angular/common": "5.0.1",
|
"@angular/common": "5.2.3",
|
||||||
"@angular/compiler": "5.0.1",
|
"@angular/compiler": "5.2.3",
|
||||||
"@angular/core": "5.0.1",
|
"@angular/core": "5.2.3",
|
||||||
"@angular/flex-layout": "2.0.0-beta.10",
|
"@angular/flex-layout": "2.0.0-beta.12",
|
||||||
"@angular/forms": "5.0.1",
|
"@angular/forms": "5.2.3",
|
||||||
"@angular/http": "5.0.1",
|
"@angular/http": "5.2.3",
|
||||||
"@angular/material": "5.0.0-rc0",
|
"@angular/material": "5.1.1",
|
||||||
"@angular/platform-browser": "5.0.1",
|
"@angular/material-moment-adapter": "5.1.1",
|
||||||
"@angular/platform-browser-dynamic": "5.0.1",
|
"@angular/platform-browser": "5.2.3",
|
||||||
"@angular/router": "5.0.1",
|
"@angular/platform-browser-dynamic": "5.2.3",
|
||||||
"@ngx-translate/core": "8.0.0",
|
"@angular/router": "5.2.3",
|
||||||
"@swimlane/ngx-charts": "6.1.0",
|
"@ngrx/effects": "5.0.0",
|
||||||
"@swimlane/ngx-datatable": "11.0.3",
|
"@ngrx/router-store": "5.0.0",
|
||||||
"@withinpixels/ngx-dnd": "3.1.0",
|
"@ngrx/store": "5.0.0",
|
||||||
"angular-calendar": "0.21.3",
|
"@ngrx/store-devtools": "5.0.0",
|
||||||
|
"@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.3",
|
||||||
|
"angular-in-memory-web-api": "0.5.3",
|
||||||
|
"chart.js": "2.7.1",
|
||||||
"classlist.js": "1.1.20150312",
|
"classlist.js": "1.1.20150312",
|
||||||
"core-js": "2.5.1",
|
"core-js": "2.5.3",
|
||||||
"d3": "4.11.0",
|
"d3": "4.13.0",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
"highlight.js": "9.12.0",
|
|
||||||
"intl": "1.2.5",
|
"intl": "1.2.5",
|
||||||
"moment": "2.19.2",
|
"moment": "2.20.1",
|
||||||
"ngx-color-picker": "4.4.0",
|
"ng2-charts": "1.6.0",
|
||||||
"ngx-cookie-service": "1.0.9",
|
"ngrx-store-freeze": "0.2.1",
|
||||||
"perfect-scrollbar": "1.0.3",
|
"ngx-color-picker": "5.3.1",
|
||||||
"rxjs": "5.5.2",
|
"ngx-cookie-service": "1.0.10",
|
||||||
|
"perfect-scrollbar": "1.3.0",
|
||||||
|
"prismjs": "1.11.0",
|
||||||
|
"rxjs": "5.5.6",
|
||||||
"web-animations-js": "2.3.1",
|
"web-animations-js": "2.3.1",
|
||||||
"zone.js": "0.8.18"
|
"zone.js": "0.8.20"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular/cli": "1.5.0",
|
"@angular/cli": "1.6.7",
|
||||||
"@angular/compiler-cli": "5.0.1",
|
"@angular/compiler-cli": "5.2.3",
|
||||||
"@angular/language-service": "5.0.1",
|
"@angular/language-service": "5.2.3",
|
||||||
"@angularclass/hmr": "2.1.3",
|
"@angularclass/hmr": "2.1.3",
|
||||||
"@types/jasmine": "2.5.54",
|
"@types/jasmine": "2.8.6",
|
||||||
"@types/jasminewd2": "2.0.3",
|
"@types/jasminewd2": "2.0.3",
|
||||||
"@types/node": "6.0.90",
|
"@types/node": "6.0.96",
|
||||||
"codelyzer": "3.2.2",
|
"codelyzer": "4.1.0",
|
||||||
"jasmine-core": "2.6.4",
|
"jasmine-core": "2.8.0",
|
||||||
"jasmine-spec-reporter": "4.1.1",
|
"jasmine-spec-reporter": "4.2.1",
|
||||||
"karma": "1.7.1",
|
"karma": "2.0.0",
|
||||||
"karma-chrome-launcher": "2.1.1",
|
"karma-chrome-launcher": "2.2.0",
|
||||||
"karma-cli": "1.0.1",
|
"karma-coverage-istanbul-reporter": "1.4.1",
|
||||||
"karma-coverage-istanbul-reporter": "1.3.0",
|
"karma-jasmine": "1.1.1",
|
||||||
"karma-jasmine": "1.1.0",
|
|
||||||
"karma-jasmine-html-reporter": "0.2.2",
|
"karma-jasmine-html-reporter": "0.2.2",
|
||||||
"protractor": "5.1.2",
|
"protractor": "5.1.2",
|
||||||
"ts-node": "3.2.2",
|
"ts-node": "4.1.0",
|
||||||
"tslint": "5.7.0",
|
"tslint": "5.9.1",
|
||||||
"typescript": "2.4.2"
|
"typescript": "2.6.2",
|
||||||
|
"webpack-bundle-analyzer": "2.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +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 { 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',
|
||||||
@@ -10,8 +16,10 @@ import { TranslateService } from '@ngx-translate/core';
|
|||||||
export class AppComponent
|
export class AppComponent
|
||||||
{
|
{
|
||||||
constructor(
|
constructor(
|
||||||
|
private fuseNavigationService: FuseNavigationService,
|
||||||
private fuseSplashScreen: FuseSplashScreenService,
|
private fuseSplashScreen: FuseSplashScreenService,
|
||||||
private translate: TranslateService
|
private translate: TranslateService,
|
||||||
|
private translationLoader: FuseTranslationLoaderService
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Add languages
|
// Add languages
|
||||||
@@ -22,5 +30,11 @@ export class AppComponent
|
|||||||
|
|
||||||
// Use a language
|
// Use a language
|
||||||
this.translate.use('en');
|
this.translate.use('en');
|
||||||
|
|
||||||
|
// Set the navigation model
|
||||||
|
this.fuseNavigationService.setNavigationModel(new FuseNavigationModel());
|
||||||
|
|
||||||
|
// Set the navigation translations
|
||||||
|
this.translationLoader.loadTranslations(navigationEnglish, navigationTurkish);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
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';
|
||||||
@@ -27,7 +26,6 @@ const appRoutes: Routes = [
|
|||||||
],
|
],
|
||||||
imports : [
|
imports : [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
HttpModule,
|
|
||||||
HttpClientModule,
|
HttpClientModule,
|
||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
RouterModule.forRoot(appRoutes),
|
RouterModule.forRoot(appRoutes),
|
||||||
|
|||||||
@@ -76,6 +76,53 @@ export const fuseAnimations = [
|
|||||||
transition('0 => 1', animate('300ms ease-in'))
|
transition('0 => 1', animate('300ms ease-in'))
|
||||||
]),
|
]),
|
||||||
|
|
||||||
|
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', [
|
trigger('slideInLeft', [
|
||||||
state('void', style({
|
state('void', style({
|
||||||
transform: 'translateX(-100%)',
|
transform: 'translateX(-100%)',
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
:host {
|
||||||
|
display: block;
|
||||||
|
padding: 8px;
|
||||||
|
background: #263238;
|
||||||
|
cursor: text;
|
||||||
|
}
|
||||||
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
@@ -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,3 +0,0 @@
|
|||||||
:host {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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,6 +1,10 @@
|
|||||||
<a class="nav-link" matRipple>
|
<a class="nav-link" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<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>
|
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
||||||
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
<span class="nav-link-badge" *ngIf="item.badge"
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
{{item.badge.title}}
|
{{item.badge.title}}
|
||||||
</span>
|
</span>
|
||||||
@@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
<span class="nav-link-badge" *ngIf="item.badge"
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
{{item.badge.title}}
|
{{item.badge.title}}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
5
src/app/core/components/navigation/navigation.model.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
export interface FuseNavigationModelInterface
|
||||||
|
{
|
||||||
|
model: any[];
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { EventEmitter, Injectable } from '@angular/core';
|
import { EventEmitter, Injectable } from '@angular/core';
|
||||||
import { NavigationModel } from '../../../navigation.model';
|
|
||||||
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
|
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
|
||||||
|
import { FuseNavigationModelInterface } from './navigation.model';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FuseNavigationService
|
export class FuseNavigationService
|
||||||
@@ -8,13 +8,11 @@ export class FuseNavigationService
|
|||||||
onNavCollapseToggle = new EventEmitter<any>();
|
onNavCollapseToggle = new EventEmitter<any>();
|
||||||
onNavCollapseToggled = new EventEmitter<any>();
|
onNavCollapseToggled = new EventEmitter<any>();
|
||||||
onNavigationModelChange: BehaviorSubject<any> = new BehaviorSubject({});
|
onNavigationModelChange: BehaviorSubject<any> = new BehaviorSubject({});
|
||||||
navigationModel: NavigationModel;
|
navigationModel: FuseNavigationModelInterface;
|
||||||
flatNavigation: any[] = [];
|
flatNavigation: any[] = [];
|
||||||
|
|
||||||
constructor()
|
constructor()
|
||||||
{
|
{
|
||||||
this.navigationModel = new NavigationModel();
|
|
||||||
this.onNavigationModelChange.next(this.navigationModel.model);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -155,8 +153,15 @@ 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 )
|
||||||
{
|
{
|
||||||
|
// Reset the flat navigation
|
||||||
|
this.flatNavigation = [];
|
||||||
|
|
||||||
|
// Get the entire navigation model
|
||||||
navigationItems = this.navigationModel.model;
|
navigationItems = this.navigationModel.model;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,7 +186,10 @@ export class FuseNavigationService
|
|||||||
|
|
||||||
if ( navItem.type === 'collapse' || navItem.type === 'group' )
|
if ( navItem.type === 'collapse' || navItem.type === 'group' )
|
||||||
{
|
{
|
||||||
this.getFlatNavigation(navItem.children);
|
if ( navItem.children )
|
||||||
|
{
|
||||||
|
this.getFlatNavigation(navItem.children);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
<a class="nav-link" matRipple (click)="toggleOpen($event)">
|
<a class="nav-link" matRipple (click)="toggleOpen($event)">
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<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>
|
<mat-icon class="collapse-arrow">keyboard_arrow_right</mat-icon>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="children" [@slideInOut]="isOpen">
|
<div class="children" [@slideInOut]="isOpen">
|
||||||
<ng-container *ngFor="let item of item.children">
|
<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-item *ngIf="item.type=='item'" [item]="item"></fuse-nav-vertical-item>
|
||||||
|
|||||||
@@ -69,6 +69,20 @@ export class FuseNavVerticalCollapseComponent implements OnInit
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
* Toggle collapse
|
||||||
*
|
*
|
||||||
@@ -108,6 +122,7 @@ export class FuseNavVerticalCollapseComponent implements OnInit
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.isOpen = false;
|
this.isOpen = false;
|
||||||
this.navigationService.onNavCollapseToggle.emit();
|
this.navigationService.onNavCollapseToggle.emit();
|
||||||
}
|
}
|
||||||
@@ -175,8 +190,4 @@ export class FuseNavVerticalCollapseComponent implements OnInit
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<div class="group-title">
|
<div class="group-title">
|
||||||
<span class="hint-text">{{ item.title }}</span>
|
<span class="hint-text" [translate]="item.translate">{{ item.title }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="group-items">
|
<div class="group-items">
|
||||||
<ng-container *ngFor="let item of item.children">
|
<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-group *ngIf="item.type=='group'" [item]="item"></fuse-nav-vertical-group>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
<a class="nav-link" *ngIf="item.url" [routerLink]="[item.url]" routerLinkActive="active"
|
||||||
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
[routerLinkActiveOptions]="{exact: item.exactMatch || false}" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
<span class="nav-link-badge" *ngIf="item.badge"
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
{{item.badge.title}}
|
{{item.badge.title}}
|
||||||
</span>
|
</span>
|
||||||
@@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
<span class="nav-link" *ngIf="item.function" (click)="item.function()" matRipple>
|
||||||
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
<mat-icon class="nav-link-icon" *ngIf="item.icon">{{item.icon}}</mat-icon>
|
||||||
<span class="nav-link-title">{{item.title}}</span>
|
<span class="nav-link-title" [translate]="item.translate">{{item.title}}</span>
|
||||||
<span class="nav-link-badge" *ngIf="item.badge"
|
<span class="nav-link-badge" *ngIf="item.badge" [translate]="item.badge.translate"
|
||||||
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
[ngStyle]="{'background-color': item.badge.bg,'color': item.badge.fg}">
|
||||||
{{item.badge.title}}
|
{{item.badge.title}}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -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();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ export class FuseMatSidenavHelperDirective implements OnInit, OnDestroy
|
|||||||
matchMediaSubscription: Subscription;
|
matchMediaSubscription: Subscription;
|
||||||
|
|
||||||
@HostBinding('class.mat-is-locked-open') isLockedOpen = true;
|
@HostBinding('class.mat-is-locked-open') isLockedOpen = true;
|
||||||
@HostBinding('class.mat-stop-transition') stopTransition = true;
|
|
||||||
|
|
||||||
@Input('fuseMatSidenavHelper') id: string;
|
@Input('fuseMatSidenavHelper') id: string;
|
||||||
@Input('mat-is-locked-open') matIsLockedOpenBreakpoint: string;
|
@Input('mat-is-locked-open') matIsLockedOpenBreakpoint: string;
|
||||||
@@ -33,45 +32,31 @@ export class FuseMatSidenavHelperDirective implements OnInit, OnDestroy
|
|||||||
|
|
||||||
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
|
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
|
||||||
{
|
{
|
||||||
setTimeout(() => {
|
this.isLockedOpen = true;
|
||||||
this.isLockedOpen = true;
|
this.matSidenav.mode = 'side';
|
||||||
this.matSidenav.mode = 'side';
|
this.matSidenav.toggle(true);
|
||||||
this.matSidenav.open();
|
|
||||||
});
|
|
||||||
this.stopTransition = false;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setTimeout(() => {
|
this.isLockedOpen = false;
|
||||||
this.isLockedOpen = false;
|
this.matSidenav.mode = 'over';
|
||||||
this.matSidenav.mode = 'over';
|
this.matSidenav.toggle(false);
|
||||||
this.matSidenav.close();
|
|
||||||
});
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
this.stopTransition = false;
|
|
||||||
}, 3000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.matchMediaSubscription = this.fuseMatchMedia.onMediaChange.subscribe(() => {
|
this.matchMediaSubscription = this.fuseMatchMedia.onMediaChange.subscribe(() => {
|
||||||
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
|
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
|
||||||
{
|
{
|
||||||
setTimeout(() => {
|
this.isLockedOpen = true;
|
||||||
this.isLockedOpen = true;
|
this.matSidenav.mode = 'side';
|
||||||
this.matSidenav.mode = 'side';
|
this.matSidenav.toggle(true);
|
||||||
this.matSidenav.open();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setTimeout(() => {
|
this.isLockedOpen = false;
|
||||||
this.isLockedOpen = false;
|
this.matSidenav.mode = 'over';
|
||||||
this.matSidenav.mode = 'over';
|
this.matSidenav.toggle(false);
|
||||||
this.matSidenav.close();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnDestroy()
|
ngOnDestroy()
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
import { AfterViewInit, Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';
|
import { AfterViewInit, Directive, ElementRef, HostListener, OnDestroy } from '@angular/core';
|
||||||
import PerfectScrollbar from 'perfect-scrollbar';
|
|
||||||
import { FuseConfigService } from '../../services/config.service';
|
import { FuseConfigService } from '../../services/config.service';
|
||||||
import { Subscription } from 'rxjs/Subscription';
|
import { Subscription } from 'rxjs/Subscription';
|
||||||
import { Platform } from '@angular/cdk/platform';
|
import { Platform } from '@angular/cdk/platform';
|
||||||
|
import PerfectScrollbar from 'perfect-scrollbar';
|
||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: '[fusePerfectScrollbar]'
|
selector: '[fusePerfectScrollbar]'
|
||||||
})
|
})
|
||||||
export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnDestroy
|
export class FusePerfectScrollbarDirective implements AfterViewInit, OnDestroy
|
||||||
{
|
{
|
||||||
onSettingsChanged: Subscription;
|
onSettingsChanged: Subscription;
|
||||||
isDisableCustomScrollbars = false;
|
isDisableCustomScrollbars = false;
|
||||||
isMobile = false;
|
isMobile = false;
|
||||||
isInitialized = true;
|
isInitialized = true;
|
||||||
ps;
|
ps: PerfectScrollbar;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private element: ElementRef,
|
public element: ElementRef,
|
||||||
private fuseConfig: FuseConfigService,
|
private fuseConfig: FuseConfigService,
|
||||||
private platform: Platform
|
private platform: Platform
|
||||||
)
|
)
|
||||||
@@ -35,11 +35,6 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ngAfterViewInit()
|
ngAfterViewInit()
|
||||||
{
|
{
|
||||||
if ( this.isMobile || this.isDisableCustomScrollbars )
|
if ( this.isMobile || this.isDisableCustomScrollbars )
|
||||||
@@ -49,12 +44,14 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Initialize the perfect-scrollbar
|
// Initialize the perfect-scrollbar
|
||||||
this.ps = new PerfectScrollbar(this.element.nativeElement);
|
this.ps = new PerfectScrollbar(this.element.nativeElement, {
|
||||||
|
wheelPropagation: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnDestroy()
|
ngOnDestroy()
|
||||||
{
|
{
|
||||||
if ( !this.isInitialized )
|
if ( !this.isInitialized || !this.ps )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -65,6 +62,21 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD
|
|||||||
this.ps.destroy();
|
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()
|
update()
|
||||||
{
|
{
|
||||||
if ( !this.isInitialized )
|
if ( !this.isInitialized )
|
||||||
|
|||||||
@@ -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'
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ 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 { ColorPickerModule } from 'ngx-color-picker';
|
import { ColorPickerModule } from 'ngx-color-picker';
|
||||||
import { NgxDnDModule } from '@withinpixels/ngx-dnd';
|
import { NgxDnDModule } from '@swimlane/ngx-dnd';
|
||||||
import { NgxDatatableModule } from '@swimlane/ngx-datatable';
|
import { NgxDatatableModule } from '@swimlane/ngx-datatable';
|
||||||
|
|
||||||
import { FuseMatSidenavHelperDirective, FuseMatSidenavTogglerDirective } from '../directives/fuse-mat-sidenav-helper/fuse-mat-sidenav-helper.directive';
|
import { FuseMatSidenavHelperDirective, FuseMatSidenavTogglerDirective } from '../directives/fuse-mat-sidenav-helper/fuse-mat-sidenav-helper.directive';
|
||||||
@@ -15,13 +15,14 @@ import { FuseConfirmDialogComponent } from '../components/confirm-dialog/confirm
|
|||||||
import { FuseCountdownComponent } from '../components/countdown/countdown.component';
|
import { FuseCountdownComponent } from '../components/countdown/countdown.component';
|
||||||
import { FuseMatchMedia } from '../services/match-media.service';
|
import { FuseMatchMedia } from '../services/match-media.service';
|
||||||
import { FuseNavbarVerticalService } from '../../main/navbar/vertical/navbar-vertical.service';
|
import { FuseNavbarVerticalService } from '../../main/navbar/vertical/navbar-vertical.service';
|
||||||
import { FuseHljsComponent } from '../components/hljs/hljs.component';
|
import { FuseHighlightComponent } from '../components/highlight/highlight.component';
|
||||||
import { FusePerfectScrollbarDirective } from '../directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive';
|
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 { FuseTranslationLoaderService } from '../services/translation-loader.service';
|
||||||
import { CookieService } from 'ngx-cookie-service';
|
import { CookieService } from 'ngx-cookie-service';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { ChartsModule } from 'ng2-charts';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations : [
|
declarations : [
|
||||||
@@ -29,7 +30,7 @@ import { TranslateModule } from '@ngx-translate/core';
|
|||||||
FuseMatSidenavTogglerDirective,
|
FuseMatSidenavTogglerDirective,
|
||||||
FuseConfirmDialogComponent,
|
FuseConfirmDialogComponent,
|
||||||
FuseCountdownComponent,
|
FuseCountdownComponent,
|
||||||
FuseHljsComponent,
|
FuseHighlightComponent,
|
||||||
FuseIfOnDomDirective,
|
FuseIfOnDomDirective,
|
||||||
FusePerfectScrollbarDirective,
|
FusePerfectScrollbarDirective,
|
||||||
FuseMaterialColorPickerComponent
|
FuseMaterialColorPickerComponent
|
||||||
@@ -43,7 +44,8 @@ import { TranslateModule } from '@ngx-translate/core';
|
|||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
ColorPickerModule,
|
ColorPickerModule,
|
||||||
NgxDnDModule,
|
NgxDnDModule,
|
||||||
NgxDatatableModule
|
NgxDatatableModule,
|
||||||
|
ChartsModule
|
||||||
],
|
],
|
||||||
exports : [
|
exports : [
|
||||||
FlexLayoutModule,
|
FlexLayoutModule,
|
||||||
@@ -54,7 +56,7 @@ import { TranslateModule } from '@ngx-translate/core';
|
|||||||
FuseMatSidenavTogglerDirective,
|
FuseMatSidenavTogglerDirective,
|
||||||
FusePipesModule,
|
FusePipesModule,
|
||||||
FuseCountdownComponent,
|
FuseCountdownComponent,
|
||||||
FuseHljsComponent,
|
FuseHighlightComponent,
|
||||||
FusePerfectScrollbarDirective,
|
FusePerfectScrollbarDirective,
|
||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
ColorPickerModule,
|
ColorPickerModule,
|
||||||
@@ -62,7 +64,8 @@ import { TranslateModule } from '@ngx-translate/core';
|
|||||||
NgxDatatableModule,
|
NgxDatatableModule,
|
||||||
FuseIfOnDomDirective,
|
FuseIfOnDomDirective,
|
||||||
FuseMaterialColorPickerComponent,
|
FuseMaterialColorPickerComponent,
|
||||||
TranslateModule
|
TranslateModule,
|
||||||
|
ChartsModule
|
||||||
],
|
],
|
||||||
entryComponents: [
|
entryComponents: [
|
||||||
FuseConfirmDialogComponent
|
FuseConfirmDialogComponent
|
||||||
|
|||||||
@@ -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.css';
|
@import '~perfect-scrollbar/css/perfect-scrollbar';
|
||||||
|
|
||||||
// Fuse
|
// Fuse
|
||||||
@import "fuse";
|
@import "fuse";
|
||||||
|
|
||||||
|
|||||||
@@ -6,42 +6,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fix: "Sidenav opening with animations for the first time"
|
|
||||||
mat-sidenav-container {
|
|
||||||
|
|
||||||
mat-sidenav {
|
|
||||||
|
|
||||||
&[mat-is-locked-open].mat-stop-transition {
|
|
||||||
transition: none !important;
|
|
||||||
transform: translate3d(0, 0, 0) !important;
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
~ .mat-sidenav-content,
|
|
||||||
~ .mat-drawer-content {
|
|
||||||
transition: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.mat-sidenav-opened {
|
|
||||||
|
|
||||||
&.mat-drawer-side {
|
|
||||||
|
|
||||||
~ .mat-sidenav-content,
|
|
||||||
~ .mat-drawer-content {
|
|
||||||
transition: none !important;
|
|
||||||
transform: translate3d(0, 0, 0) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.mat-drawer-end {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.mat-drawer-content {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fix: "Inconsistent font sizes across elements"
|
// Fix: "Inconsistent font sizes across elements"
|
||||||
.mat-input-wrapper {
|
.mat-input-wrapper {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
@@ -56,11 +20,59 @@ mat-sidenav-container {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.mat-pseudo-checkbox-checked:after {
|
.mat-pseudo-checkbox-checked:after {
|
||||||
width: 14px;
|
width: 14px !important;
|
||||||
height: 7px;
|
height: 7px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fix: "Input underlines has wrong color opacity value"
|
// Fix: "Input underlines has wrong color opacity value"
|
||||||
.mat-form-field-underline {
|
.mat-form-field-underline {
|
||||||
background-color: rgba(0, 0, 0, 0.12);
|
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;
|
||||||
|
}
|
||||||
@@ -9,145 +9,52 @@
|
|||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-rich-media {
|
&.auto-width {
|
||||||
position: relative;
|
min-width: 0;
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
.card-title {
|
// Buttons
|
||||||
position: absolute;
|
.mat-button {
|
||||||
right: 16px;
|
min-width: 0 !important;
|
||||||
bottom: 16px;
|
padding: 0 8px !important;
|
||||||
left: 16px;
|
}
|
||||||
font-size: 20px;
|
|
||||||
color: white;
|
// Button Toggle Group
|
||||||
}
|
.mat-button-toggle-group,
|
||||||
}
|
.mat-button-toggle-standalone {
|
||||||
|
box-shadow: none !important;
|
||||||
.card-media-header {
|
}
|
||||||
display: flex;
|
|
||||||
padding: 16px;
|
// Tabs
|
||||||
align-items: center;
|
.mat-tab-labels {
|
||||||
|
justify-content: center;
|
||||||
&.medium {
|
}
|
||||||
align-items: flex-start;
|
|
||||||
|
.mat-tab-label {
|
||||||
.card-rich-media {
|
min-width: 0 !important;
|
||||||
width: 120px;
|
}
|
||||||
height: 120px;
|
|
||||||
}
|
// Divider
|
||||||
}
|
.card-divider {
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.12);
|
||||||
&.large {
|
margin: 16px;
|
||||||
align-items: flex-start;
|
|
||||||
|
&.light {
|
||||||
.card-rich-media {
|
border-top-color: rgba(255, 255, 255, 0.12);
|
||||||
width: 160px;
|
}
|
||||||
height: 160px;
|
|
||||||
}
|
&.full-width {
|
||||||
}
|
margin: 0;
|
||||||
|
|
||||||
.card-primary-title {
|
|
||||||
padding: 0 16px 0 0;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-rich-media {
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ div {
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-avatar-header {
|
|
||||||
display: flex;
|
|
||||||
padding: 16px;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.card-avatar {
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 100%;
|
|
||||||
margin-right: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-avatar-title {
|
|
||||||
|
|
||||||
.card-title {
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-subtitle {
|
|
||||||
font-size: 13px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-primary-title {
|
|
||||||
padding: 16px;
|
|
||||||
|
|
||||||
.card-title {
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-subtitle {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ div {
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-supporting-text {
|
|
||||||
padding: 16px;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 1.75;
|
|
||||||
|
|
||||||
+ div {
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-actions {
|
|
||||||
display: flex;
|
|
||||||
padding: 8px;
|
|
||||||
|
|
||||||
&.icon-buttons {
|
|
||||||
padding: 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.align-center {
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.align-right {
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mat-button {
|
|
||||||
min-width: 0 !important;
|
|
||||||
padding: 0 8px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-expander {
|
|
||||||
margin-left: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ div {
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Expand Area
|
||||||
.card-expand-area {
|
.card-expand-area {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
.card-expanded-supporting-text {
|
.card-expanded-content {
|
||||||
padding: 8px 16px 16px 16px;
|
padding: 8px 16px 16px 16px;
|
||||||
font-size: 14px;
|
|
||||||
line-height: 1.75;
|
line-height: 1.75;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,37 @@ $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%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-radius-2 {
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-radius-4 {
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-radius-8 {
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-radius-16 {
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ######################
|
||||||
|
// CURSOR HELPERS
|
||||||
|
// ######################
|
||||||
|
.cursor-pointer {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cursor-default {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -47,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 {
|
||||||
|
|||||||
@@ -42,8 +42,8 @@
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,3 +98,68 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[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,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
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -34,7 +34,7 @@ export class FuseConfigService
|
|||||||
footer : 'mat-fuse-dark-900-bg'
|
footer : 'mat-fuse-dark-900-bg'
|
||||||
},
|
},
|
||||||
customScrollbars: true,
|
customScrollbars: true,
|
||||||
routerAnimation : 'fadeIn' // fadeIn, slideUp, slideDown, slideRight, slideLeft
|
routerAnimation : 'fadeIn' // fadeIn, slideUp, slideDown, slideRight, slideLeft, none
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,18 +15,27 @@ export class FuseSplashScreenService
|
|||||||
private router: Router
|
private router: Router
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
// Get the splash screen element
|
||||||
this.splashScreenEl = this.document.body.querySelector('#fuse-splash-screen');
|
this.splashScreenEl = this.document.body.querySelector('#fuse-splash-screen');
|
||||||
|
|
||||||
const hideOnLoad = this.router.events.subscribe((event) => {
|
// If the splash screen element exists...
|
||||||
if ( event instanceof NavigationEnd )
|
if ( this.splashScreenEl )
|
||||||
{
|
{
|
||||||
setTimeout(() => {
|
// Hide it on the first NavigationEnd event
|
||||||
this.hide();
|
const hideOnLoad = this.router.events.subscribe((event) => {
|
||||||
hideOnLoad.unsubscribe();
|
if ( event instanceof NavigationEnd )
|
||||||
}, 0);
|
{
|
||||||
|
setTimeout(() => {
|
||||||
|
this.hide();
|
||||||
|
|
||||||
|
// Unsubscribe from this event so it
|
||||||
|
// won't get triggered again
|
||||||
|
hideOnLoad.unsubscribe();
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
);
|
||||||
);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
show()
|
show()
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';
|
||||||
|
import { FuseMainComponent } from '../../main.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector : 'fuse-navbar-horizontal',
|
selector : 'fuse-navbar-horizontal',
|
||||||
@@ -6,14 +7,19 @@ import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
|||||||
styleUrls : ['./navbar-horizontal.component.scss'],
|
styleUrls : ['./navbar-horizontal.component.scss'],
|
||||||
encapsulation: ViewEncapsulation.None
|
encapsulation: ViewEncapsulation.None
|
||||||
})
|
})
|
||||||
export class FuseNavbarHorizontalComponent implements OnInit
|
export class FuseNavbarHorizontalComponent implements OnInit, OnDestroy
|
||||||
{
|
{
|
||||||
constructor()
|
constructor(private fuseMainComponent: FuseMainComponent)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit()
|
ngOnInit()
|
||||||
{
|
{
|
||||||
|
this.fuseMainComponent.addClass('fuse-nav-bar-horizontal');
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy()
|
||||||
|
{
|
||||||
|
this.fuseMainComponent.removeClass('fuse-nav-bar-horizontal');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
fuse-main {
|
fuse-main {
|
||||||
|
|
||||||
&.fuse-nav-bar-folded {
|
&.fuse-nav-bar-folded:not(.fuse-nav-bar-horizontal) {
|
||||||
|
|
||||||
.content-wrapper {
|
.content-wrapper {
|
||||||
|
|
||||||
@@ -123,6 +123,7 @@ fuse-navbar-vertical {
|
|||||||
|
|
||||||
.logo-icon {
|
.logo-icon {
|
||||||
width: 38px;
|
width: 38px;
|
||||||
|
height: 38px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.logo-text {
|
.logo-text {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<mat-list class="date" cdk-focus-region-start>
|
<mat-list class="date" cdkFocusRegionStart>
|
||||||
|
|
||||||
<h3 matSubheader cdk-focus-init>
|
<h3 matSubheader cdkFocusInit>
|
||||||
<span>Today</span>
|
<span>Today</span>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</mat-list>
|
</mat-list>
|
||||||
|
|
||||||
<mat-divider cdk-focus-region-end></mat-divider>
|
<mat-divider cdkFocusRegionEnd></mat-divider>
|
||||||
|
|
||||||
<mat-list>
|
<mat-list>
|
||||||
<h3 matSubheader>
|
<h3 matSubheader>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
fuse-quick-panel {
|
fuse-quick-panel {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 330px;
|
width: 280px;
|
||||||
min-width: 330px;
|
min-width: 280px;
|
||||||
max-width: 330px;
|
max-width: 280px;
|
||||||
z-index: 99;
|
z-index: 99;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<mat-menu #userMenu="matMenu">
|
<mat-menu #userMenu="matMenu" [overlapTrigger]="false">
|
||||||
|
|
||||||
<button mat-menu-item>
|
<button mat-menu-item>
|
||||||
<mat-icon>account_circle</mat-icon>
|
<mat-icon>account_circle</mat-icon>
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<mat-menu #languageMenu="matMenu">
|
<mat-menu #languageMenu="matMenu" [overlapTrigger]="false">
|
||||||
|
|
||||||
<button mat-menu-item *ngFor="let lang of languages" (click)="setLanguage(lang)">
|
<button mat-menu-item *ngFor="let lang of languages" (click)="setLanguage(lang)">
|
||||||
<div fxLayout="row" fxLayoutAlign="start center">
|
<div fxLayout="row" fxLayoutAlign="start center">
|
||||||
|
|||||||
12
src/app/navigation/i18n/en.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
export const locale = {
|
||||||
|
lang: 'en',
|
||||||
|
data: {
|
||||||
|
'NAV': {
|
||||||
|
'APPLICATIONS': 'Applications',
|
||||||
|
'SAMPLE' : {
|
||||||
|
'TITLE': 'Sample',
|
||||||
|
'BADGE': '25'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
12
src/app/navigation/i18n/tr.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
export const locale = {
|
||||||
|
lang: 'tr',
|
||||||
|
data: {
|
||||||
|
'NAV': {
|
||||||
|
'APPLICATIONS': 'Programlar',
|
||||||
|
'SAMPLE' : {
|
||||||
|
'TITLE': 'Örnek',
|
||||||
|
'BADGE': '15'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
export class NavigationModel
|
import { FuseNavigationModelInterface } from '../core/components/navigation/navigation.model';
|
||||||
|
|
||||||
|
export class FuseNavigationModel implements FuseNavigationModelInterface
|
||||||
{
|
{
|
||||||
public model: any[];
|
public model: any[];
|
||||||
|
|
||||||
@@ -8,16 +10,19 @@ export class NavigationModel
|
|||||||
{
|
{
|
||||||
'id' : 'applications',
|
'id' : 'applications',
|
||||||
'title' : 'Applications',
|
'title' : 'Applications',
|
||||||
|
'translate': 'NAV.APPLICATIONS',
|
||||||
'type' : 'group',
|
'type' : 'group',
|
||||||
'children': [
|
'children': [
|
||||||
{
|
{
|
||||||
'id' : 'sample',
|
'id' : 'sample',
|
||||||
'title': 'Sample',
|
'title': 'Sample',
|
||||||
|
'translate': 'NAV.SAMPLE.TITLE',
|
||||||
'type' : 'item',
|
'type' : 'item',
|
||||||
'icon' : 'email',
|
'icon' : 'email',
|
||||||
'url' : '/sample',
|
'url' : '/sample',
|
||||||
'badge': {
|
'badge': {
|
||||||
'title': 25,
|
'title': 25,
|
||||||
|
'translate': 'NAV.SAMPLE.BADGE',
|
||||||
'bg' : '#F44336',
|
'bg' : '#F44336',
|
||||||
'fg' : '#FFFFFF'
|
'fg' : '#FFFFFF'
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 125 KiB |
BIN
src/assets/images/backgrounds/autumn.jpg
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
src/assets/images/backgrounds/dark-material-bg.jpg
Normal file
|
After Width: | Height: | Size: 385 KiB |
|
Before Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 146 KiB |
BIN
src/assets/images/backgrounds/spring.jpg
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
src/assets/images/backgrounds/summer.jpg
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
src/assets/images/backgrounds/winter.jpg
Normal file
|
After Width: | Height: | Size: 104 KiB |
@@ -15,5 +15,11 @@
|
|||||||
"es2017",
|
"es2017",
|
||||||
"dom"
|
"dom"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"angularCompilerOptions": {
|
||||||
|
"genDir": "release/",
|
||||||
|
"strictMetadataEmit": true,
|
||||||
|
"skipTemplateCodegen": true,
|
||||||
|
"annotationsAs": "decorators"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
15
tslint.json
@@ -15,7 +15,8 @@
|
|||||||
"forin": true,
|
"forin": true,
|
||||||
"import-blacklist": [
|
"import-blacklist": [
|
||||||
true,
|
true,
|
||||||
"rxjs"
|
"rxjs",
|
||||||
|
"rxjs/Rx"
|
||||||
],
|
],
|
||||||
"import-spacing": true,
|
"import-spacing": true,
|
||||||
"indent": [
|
"indent": [
|
||||||
@@ -31,8 +32,14 @@
|
|||||||
"member-access": false,
|
"member-access": false,
|
||||||
"member-ordering": [
|
"member-ordering": [
|
||||||
true,
|
true,
|
||||||
"static-before-instance",
|
{
|
||||||
"variables-before-functions"
|
"order": [
|
||||||
|
"static-field",
|
||||||
|
"instance-field",
|
||||||
|
"static-method",
|
||||||
|
"instance-method"
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"no-arg": true,
|
"no-arg": true,
|
||||||
"no-bitwise": true,
|
"no-bitwise": true,
|
||||||
@@ -63,7 +70,7 @@
|
|||||||
"no-trailing-whitespace": false,
|
"no-trailing-whitespace": false,
|
||||||
"no-unnecessary-initializer": true,
|
"no-unnecessary-initializer": true,
|
||||||
"no-unused-expression": true,
|
"no-unused-expression": true,
|
||||||
"no-use-before-declare": true,
|
"no-use-before-declare": false,
|
||||||
"no-var-keyword": true,
|
"no-var-keyword": true,
|
||||||
"object-literal-sort-keys": false,
|
"object-literal-sort-keys": false,
|
||||||
"one-line": false,
|
"one-line": false,
|
||||||
|
|||||||