Custom perfect-scrollbar directive for better control (replaced the ngx-perfect-scrollbar with fuse-perfect-scrollbar)

This commit is contained in:
Sercan Yemen 2017-09-18 16:06:15 +03:00
parent b55bce2de4
commit 6d20c1d62d
84 changed files with 388 additions and 197 deletions

110
package-lock.json generated
View File

@ -12,7 +12,7 @@
"requires": { "requires": {
"loader-utils": "1.1.0", "loader-utils": "1.1.0",
"source-map": "0.5.6", "source-map": "0.5.6",
"typescript": "2.3.4", "typescript": "2.3.3",
"webpack-sources": "1.0.1" "webpack-sources": "1.0.1"
} }
}, },
@ -113,7 +113,7 @@
"style-loader": "0.13.2", "style-loader": "0.13.2",
"stylus": "0.54.5", "stylus": "0.54.5",
"stylus-loader": "3.0.1", "stylus-loader": "3.0.1",
"typescript": "2.3.4", "typescript": "2.3.3",
"url-loader": "0.5.9", "url-loader": "0.5.9",
"webpack": "3.5.6", "webpack": "3.5.6",
"webpack-concat-plugin": "1.4.0", "webpack-concat-plugin": "1.4.0",
@ -286,9 +286,9 @@
"dev": true "dev": true
}, },
"@types/jasminewd2": { "@types/jasminewd2": {
"version": "2.0.3", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.2.tgz",
"integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==", "integrity": "sha1-X2jh5pe/ELxv2Mvy4Aaj1nEsW2Q=",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/jasmine": "2.6.0" "@types/jasmine": "2.6.0"
@ -5181,22 +5181,45 @@
"dev": true "dev": true
}, },
"istanbul-api": { "istanbul-api": {
"version": "1.1.11", "version": "1.1.14",
"resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.11.tgz", "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.14.tgz",
"integrity": "sha1-/MC0YeKzvaceMFFVE4I4doJX2d4=", "integrity": "sha1-JbxXAffGgMD//5E95G42GaOm5oA=",
"dev": true, "dev": true,
"requires": { "requires": {
"async": "2.5.0", "async": "2.5.0",
"fileset": "2.0.3", "fileset": "2.0.3",
"istanbul-lib-coverage": "1.1.1", "istanbul-lib-coverage": "1.1.1",
"istanbul-lib-hook": "1.0.7", "istanbul-lib-hook": "1.0.7",
"istanbul-lib-instrument": "1.7.4", "istanbul-lib-instrument": "1.8.0",
"istanbul-lib-report": "1.1.1", "istanbul-lib-report": "1.1.1",
"istanbul-lib-source-maps": "1.2.1", "istanbul-lib-source-maps": "1.2.1",
"istanbul-reports": "1.1.1", "istanbul-reports": "1.1.2",
"js-yaml": "3.7.0", "js-yaml": "3.7.0",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"once": "1.4.0" "once": "1.4.0"
},
"dependencies": {
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
"dev": true
},
"istanbul-lib-instrument": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz",
"integrity": "sha1-ZvbJQhzJ7EcE928tsIS6kHiitTI=",
"dev": true,
"requires": {
"babel-generator": "6.25.0",
"babel-template": "6.25.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0",
"babylon": "6.18.0",
"istanbul-lib-coverage": "1.1.1",
"semver": "5.4.1"
}
}
} }
}, },
"istanbul-instrumenter-loader": { "istanbul-instrumenter-loader": {
@ -5281,9 +5304,9 @@
} }
}, },
"istanbul-reports": { "istanbul-reports": {
"version": "1.1.1", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
"integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==", "integrity": "sha1-D7Lj9qqZIr085F0F2KtNXo4HvU8=",
"dev": true, "dev": true,
"requires": { "requires": {
"handlebars": "4.0.10" "handlebars": "4.0.10"
@ -5361,15 +5384,15 @@
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"source-map": "0.5.6", "source-map": "0.5.7",
"uglify-to-browserify": "1.0.2", "uglify-to-browserify": "1.0.2",
"yargs": "3.10.0" "yargs": "3.10.0"
}, },
"dependencies": { "dependencies": {
"source-map": { "source-map": {
"version": "0.5.6", "version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true, "dev": true,
"optional": true "optional": true
} }
@ -5398,19 +5421,19 @@
"requires": { "requires": {
"exit": "0.1.2", "exit": "0.1.2",
"glob": "7.1.2", "glob": "7.1.2",
"jasmine-core": "2.6.4" "jasmine-core": "2.6.2"
} }
}, },
"jasmine-core": { "jasmine-core": {
"version": "2.6.4", "version": "2.6.2",
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.2.tgz",
"integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=", "integrity": "sha1-dOoffPQoaRryARB9YxI0AnoJ2qs=",
"dev": true "dev": true
}, },
"jasmine-spec-reporter": { "jasmine-spec-reporter": {
"version": "4.1.1", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.1.1.tgz", "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.1.0.tgz",
"integrity": "sha1-Wm1Yq11hvqcwn7wnkjlRF1axtYg=", "integrity": "sha1-uKp1hN9Y5Nq2Gs2++3bQlqo4Zj8=",
"dev": true, "dev": true,
"requires": { "requires": {
"colors": "1.1.2" "colors": "1.1.2"
@ -5610,13 +5633,12 @@
} }
}, },
"karma-coverage-istanbul-reporter": { "karma-coverage-istanbul-reporter": {
"version": "1.3.0", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.0.tgz", "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.2.1.tgz",
"integrity": "sha1-0ULNnFVzHJ42Pvc3To7xoxvr+ts=", "integrity": "sha1-XjynuaFT2xy63/70xG2XjTilMVQ=",
"dev": true, "dev": true,
"requires": { "requires": {
"istanbul-api": "1.1.11", "istanbul-api": "1.1.14"
"minimatch": "3.0.4"
} }
}, },
"karma-jasmine": { "karma-jasmine": {
@ -6805,6 +6827,11 @@
"sha.js": "2.4.8" "sha.js": "2.4.8"
} }
}, },
"perfect-scrollbar": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-0.8.1.tgz",
"integrity": "sha512-RNC5tX/JMRYR+qVdJTEAWnRxw0Yf9lvbO8lTuAOvgDODkiA8lveTSkvrNMhmaGKEyimJpJl+myb/syVS9YyPuw=="
},
"performance-now": { "performance-now": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
@ -8974,9 +9001,9 @@
"dev": true "dev": true
}, },
"ts-node": { "ts-node": {
"version": "3.0.6", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.0.6.tgz", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.0.4.tgz",
"integrity": "sha1-VRJ/95DH7r9rpowebd6UsJqqIeA=", "integrity": "sha1-oUdevyT9Ti7i+6ixqhYFuXe95QY=",
"dev": true, "dev": true,
"requires": { "requires": {
"arrify": "1.0.1", "arrify": "1.0.1",
@ -8988,7 +9015,7 @@
"source-map-support": "0.4.15", "source-map-support": "0.4.15",
"tsconfig": "6.0.0", "tsconfig": "6.0.0",
"v8flags": "2.1.1", "v8flags": "2.1.1",
"yn": "2.0.0" "yn": "1.3.0"
}, },
"dependencies": { "dependencies": {
"chalk": { "chalk": {
@ -9132,9 +9159,9 @@
} }
}, },
"typescript": { "typescript": {
"version": "2.3.4", "version": "2.3.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.3.tgz",
"integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", "integrity": "sha1-ljnzw7QBSOjKl/4IpR3RiRu2viI=",
"dev": true "dev": true
}, },
"uglify-js": { "uglify-js": {
@ -10168,10 +10195,13 @@
"dev": true "dev": true
}, },
"yn": { "yn": {
"version": "2.0.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", "resolved": "https://registry.npmjs.org/yn/-/yn-1.3.0.tgz",
"integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", "integrity": "sha1-GwgSq7jYBdSJZvjfOF3J2syaGdg=",
"dev": true "dev": true,
"requires": {
"object-assign": "4.1.1"
}
}, },
"zone.js": { "zone.js": {
"version": "0.8.17", "version": "0.8.17",

View File

@ -40,6 +40,7 @@
"ngx-color-picker": "4.3.1", "ngx-color-picker": "4.3.1",
"ngx-cookie-service": "1.0.7", "ngx-cookie-service": "1.0.7",
"ngx-perfect-scrollbar": "4.6.2", "ngx-perfect-scrollbar": "4.6.2",
"perfect-scrollbar": "0.8.1",
"rxjs": "5.4.3", "rxjs": "5.4.3",
"web-animations-js": "2.3.1", "web-animations-js": "2.3.1",
"zone.js": "0.8.17" "zone.js": "0.8.17"

View File

@ -9,7 +9,6 @@ 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 { 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 { 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 { PagesModule } from './main/content/pages/pages.module';
@ -69,8 +68,6 @@ const appRoutes: Routes = [
InMemoryWebApiModule.forRoot(FuseFakeDbService, {delay: 0}), InMemoryWebApiModule.forRoot(FuseFakeDbService, {delay: 0}),
PerfectScrollbarModule.forRoot(),
FuseMainModule, FuseMainModule,
ProjectModule, ProjectModule,

View File

@ -45,7 +45,7 @@
<div fxLayout="row" fxLayoutWrap <div fxLayout="row" fxLayoutWrap
fxLayoutAlign="start start" fxLayoutAlign="start start"
class="colors" perfectScrollbar> class="colors" fusePerfectScrollbar>
<div class="color" <div class="color"
[ngClass]="'md-'+color.key+'-bg'" [ngClass]="'md-'+color.key+'-bg'"
*ngFor="let color of (colors | keys)" *ngFor="let color of (colors | keys)"
@ -63,7 +63,7 @@
[@slideInRight]> [@slideInRight]>
<div fxLayout="row" fxLayoutWrap <div fxLayout="row" fxLayoutWrap
fxLayoutAlign="start start" fxLayoutAlign="start start"
class="colors" perfectScrollbar> 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'"

View File

@ -47,7 +47,7 @@
</md-input-container> </md-input-container>
<md-divider></md-divider> <md-divider></md-divider>
<md-nav-list *ngIf="!searching" style="max-height: 312px; overflow: auto" perfectScrollbar> <md-nav-list *ngIf="!searching" style="max-height: 312px; overflow: auto" fusePerfectScrollbar>
<md-list-item *ngFor="let shortcutItem of shortcutItems" <md-list-item *ngFor="let shortcutItem of shortcutItems"
(click)="toggleShortcut($event, shortcutItem)"> (click)="toggleShortcut($event, shortcutItem)">
@ -68,7 +68,7 @@
</md-list-item> </md-list-item>
</md-nav-list> </md-nav-list>
<md-nav-list *ngIf="searching" style="max-height: 312px; overflow: auto" perfectScrollbar> <md-nav-list *ngIf="searching" style="max-height: 312px; overflow: auto" fusePerfectScrollbar>
<md-list-item *ngFor="let navigationItem of filteredNavigationItems" <md-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">

View File

@ -0,0 +1,173 @@
import { AfterViewInit, Directive, ElementRef, NgZone, OnDestroy, OnInit } from '@angular/core';
import * as Ps from 'perfect-scrollbar';
import { FuseConfigService } from '../../services/config.service';
import { Subscription } from 'rxjs/Subscription';
import { Platform } from '@angular/cdk/platform';
@Directive({
selector: '[fusePerfectScrollbar]'
})
export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnDestroy
{
onSettingsChanged: Subscription;
isDisableCustomScrollbars = false;
isMobile = false;
isInitialized = true;
constructor(
private element: ElementRef,
private zone: NgZone,
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;
}
}
ngOnInit(): void
{
}
ngAfterViewInit(): void
{
if ( this.isMobile || this.isDisableCustomScrollbars )
{
this.isInitialized = false;
return;
}
this.zone.runOutsideAngular(() => {
// Initialize the perfect-scrollbar
Ps.initialize(this.element.nativeElement);
});
}
ngOnDestroy(): void
{
if ( !this.isInitialized )
{
return;
}
this.onSettingsChanged.unsubscribe();
// Destroy the perfect-scrollbar
Ps.destroy(this.element.nativeElement);
}
update()
{
if ( !this.isInitialized )
{
return;
}
// Update the perfect-scrollbar
Ps.update(this.element.nativeElement);
}
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);
}
}
}

View File

@ -4,7 +4,6 @@ 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';
@ -18,6 +17,7 @@ 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 { FuseMdSidenavHelperService } from '../directives/md-sidenav-helper/md-sidenav-helper.service'; import { FuseMdSidenavHelperService } from '../directives/md-sidenav-helper/md-sidenav-helper.service';
import { FuseHljsComponent } from '../components/hljs/hljs.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 { Md2Module } from 'md2'; import { Md2Module } from 'md2';
@ -31,6 +31,7 @@ import { CookieService } from 'ngx-cookie-service';
FuseCountdownComponent, FuseCountdownComponent,
FuseHljsComponent, FuseHljsComponent,
FuseIfOnDomDirective, FuseIfOnDomDirective,
FusePerfectScrollbarDirective,
FuseMaterialColorPickerComponent FuseMaterialColorPickerComponent
], ],
imports : [ imports : [
@ -39,7 +40,6 @@ import { CookieService } from 'ngx-cookie-service';
CommonModule, CommonModule,
FormsModule, FormsModule,
FusePipesModule, FusePipesModule,
PerfectScrollbarModule,
ReactiveFormsModule, ReactiveFormsModule,
ColorPickerModule, ColorPickerModule,
NgxDnDModule, NgxDnDModule,
@ -56,7 +56,7 @@ import { CookieService } from 'ngx-cookie-service';
FusePipesModule, FusePipesModule,
FuseCountdownComponent, FuseCountdownComponent,
FuseHljsComponent, FuseHljsComponent,
PerfectScrollbarModule, FusePerfectScrollbarDirective,
ReactiveFormsModule, ReactiveFormsModule,
ColorPickerModule, ColorPickerModule,
NgxDnDModule, NgxDnDModule,

View File

@ -2,8 +2,8 @@
@import '~@swimlane/ngx-datatable/release/index.css'; @import '~@swimlane/ngx-datatable/release/index.css';
@import '~@swimlane/ngx-datatable/release/themes/material.css'; @import '~@swimlane/ngx-datatable/release/themes/material.css';
@import '~@swimlane/ngx-datatable/release/assets/icons.css'; @import '~@swimlane/ngx-datatable/release/assets/icons.css';
// Perfect Scrollbar // Perfect scrollbar
@import "~ngx-perfect-scrollbar/dist/lib/perfect-scrollbar.component.css"; @import '~perfect-scrollbar/dist/css/perfect-scrollbar.min.css';
// Fuse // Fuse
@import "fuse"; @import "fuse";

View File

@ -309,10 +309,6 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
> .mat-drawer-content { > .mat-drawer-content {
flex: 1 0 auto; flex: 1 0 auto;
max-height: none; max-height: none;
> .center {
overflow: hidden;
}
} }
} }
} }
@ -483,10 +479,6 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png');
> .mat-sidenav-content, > .mat-sidenav-content,
> .mat-drawer-content { > .mat-drawer-content {
flex: 1 0 auto; flex: 1 0 auto;
> .center {
overflow: hidden;
}
} }
} }
} }

View File

@ -1,3 +1,5 @@
body:not(.is-mobile) {
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 12px; width: 12px;
height: 12px; height: 12px;
@ -18,3 +20,4 @@
box-shadow: inset 0 0 0 24px rgba(0, 0, 0, 0.54); box-shadow: inset 0 0 0 24px rgba(0, 0, 0, 0.54);
border-radius: 24px; border-radius: 24px;
} }
}

View File

@ -1,4 +1,5 @@
.ps { .ps {
position: relative;
> .ps__scrollbar-y-rail { > .ps__scrollbar-y-rail {
z-index: 99999; z-index: 99999;

View File

@ -1,4 +1,4 @@
<div id="calendar" class="page-layout simple fullwidth" perfectScrollbar> <div id="calendar" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header" [ngClass]="viewDate | date:'MMM'"> <div class="header" [ngClass]="viewDate | date:'MMM'">
@ -86,7 +86,7 @@
<!-- / HEADER --> <!-- / HEADER -->
<!-- CONTENT --> <!-- CONTENT -->
<div class="content" perfectScrollbar> <div class="content" fusePerfectScrollbar>
<div [ngSwitch]="view"> <div [ngSwitch]="view">
<mwl-calendar-month-view <mwl-calendar-month-view
*ngSwitchCase="'month'" *ngSwitchCase="'month'"

View File

@ -9,7 +9,7 @@
</div> </div>
</md-toolbar> </md-toolbar>
<div md-dialog-content class="p-24 m-0" perfectScrollbar> <div md-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<form name="eventForm" [formGroup]="eventForm" class="event-form" fxLayout="column" fxFlex> <form name="eventForm" [formGroup]="eventForm" class="event-form" fxLayout="column" fxFlex>

View File

@ -57,7 +57,7 @@
<!-- / CHAT TOOLBAR --> <!-- / CHAT TOOLBAR -->
<!-- CHAT CONTENT --> <!-- CHAT CONTENT -->
<div id="chat-content" fxFlex perfectScrollbar> <div id="chat-content" fxFlex fusePerfectScrollbar>
<!-- CHAT MESSAGES --> <!-- CHAT MESSAGES -->
<div class="chat-messages"> <div class="chat-messages">

View File

@ -1,7 +1,7 @@
import { AfterViewInit, Component, OnInit, ViewChild, ViewChildren } from '@angular/core'; import { AfterViewInit, Component, OnInit, ViewChild, ViewChildren } from '@angular/core';
import { ChatService } from '../chat.service'; import { ChatService } from '../chat.service';
import { NgForm } from '@angular/forms'; import { NgForm } from '@angular/forms';
import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar'; import { FusePerfectScrollbarDirective } from '../../../../../core/directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive';
@Component({ @Component({
selector : 'fuse-chat-view', selector : 'fuse-chat-view',
@ -16,7 +16,7 @@ export class FuseChatViewComponent implements OnInit, AfterViewInit
contact: any; contact: any;
replyInput: any; replyInput: any;
selectedChat: any; selectedChat: any;
@ViewChild(PerfectScrollbarDirective) directiveScroll: PerfectScrollbarDirective; @ViewChild(FusePerfectScrollbarDirective) directiveScroll: FusePerfectScrollbarDirective;
@ViewChildren('replyInput') replyInputField; @ViewChildren('replyInput') replyInputField;
@ViewChild('replyForm') replyForm: NgForm; @ViewChild('replyForm') replyForm: NgForm;

View File

@ -98,7 +98,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="sidenav-content" perfectScrollbar fxFlex> <div class="sidenav-content" fusePerfectScrollbar fxFlex>
<!-- CHATS CONTENT --> <!-- CHATS CONTENT -->
<div> <div>

View File

@ -29,7 +29,7 @@
</div> </div>
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="sidenav-content p-16" perfectScrollbar fxFlex> <div class="sidenav-content p-16" fusePerfectScrollbar fxFlex>
<!-- USER MOOD --> <!-- USER MOOD -->
<md-card> <md-card>

View File

@ -31,7 +31,7 @@
</div> </div>
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="sidenav-content p-16" perfectScrollbar fxFlex *ngIf="contact"> <div class="sidenav-content p-16" fusePerfectScrollbar fxFlex *ngIf="contact">
<!-- CONTACT MOOD --> <!-- CONTACT MOOD -->
<md-card> <md-card>

View File

@ -15,7 +15,7 @@
</md-toolbar-row> </md-toolbar-row>
</md-toolbar> </md-toolbar>
<div md-dialog-content class="p-24 m-0" perfectScrollbar> <div md-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<form [formGroup]="contactForm"> <form [formGroup]="contactForm">

View File

@ -1,4 +1,4 @@
<div id="contacts" class="page-layout simple left-sidenav inner-sidenav" perfectScrollbar> <div id="contacts" class="page-layout simple left-sidenav inner-sidenav" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="column" fxLayoutAlign="start start" <div class="header md-accent-bg p-24" fxLayout="column" fxLayoutAlign="start start"
@ -51,7 +51,7 @@
<!-- / SIDENAV --> <!-- / SIDENAV -->
<!-- CENTER --> <!-- CENTER -->
<div class="center p-24 pr-sm-92" perfectScrollbar> <div class="center p-24 pr-sm-92" fusePerfectScrollbar>
<!-- CONTENT --> <!-- CONTENT -->
<div class="content md-white-bg mat-elevation-z4"> <div class="content md-white-bg mat-elevation-z4">

View File

@ -13,7 +13,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content py-16" perfectScrollbar> <div class="content py-16" fusePerfectScrollbar>
<div class="nav"> <div class="nav">

View File

@ -1,9 +1,9 @@
<div id="dashboard-project" class="page-layout simple right-sidenav" fxLayout="row" perfectScrollbar> <div id="dashboard-project" class="page-layout simple right-sidenav" fxLayout="row">
<md-sidenav-container> <md-sidenav-container>
<!-- CENTER --> <!-- CENTER -->
<div class="center" fxFlex perfectScrollbar> <div class="center" fxFlex fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 pb-0" fxLayout="column" fxLayoutAlign="space-between"> <div class="header md-accent-bg p-24 pb-0" fxLayout="column" fxLayoutAlign="space-between">
@ -690,7 +690,7 @@
<!-- SIDENAV --> <!-- SIDENAV -->
<md-sidenav class="sidenav mat-sidenav-opened" align="end" mode="side" fuseMdSidenavHelper="dashboards-right-sidenav" md-is-locked-open="gt-md"> <md-sidenav class="sidenav mat-sidenav-opened" align="end" mode="side" fuseMdSidenavHelper="dashboards-right-sidenav" md-is-locked-open="gt-md">
<div class="sidenav-content" perfectScrollbar> <div class="sidenav-content" fusePerfectScrollbar>
<!-- WIDGET GROUP --> <!-- WIDGET GROUP -->
<div class="widget-group" fxLayout="column" fxFlex="100"> <div class="widget-group" fxLayout="column" fxFlex="100">

View File

@ -1,4 +1,4 @@
<div id="file-manager" class="page-layout simple right-sidenav" perfectScrollbar> <div id="file-manager" class="page-layout simple right-sidenav" fusePerfectScrollbar>
<md-sidenav-container> <md-sidenav-container>
@ -58,7 +58,7 @@
<!-- / HEADER --> <!-- / HEADER -->
<!-- CONTENT --> <!-- CONTENT -->
<div class="content md-white-bg" perfectScrollbar> <div class="content md-white-bg" fusePerfectScrollbar>
<fuse-file-list></fuse-file-list> <fuse-file-list></fuse-file-list>
</div> </div>
<!-- / CONTENT --> <!-- / CONTENT -->

View File

@ -27,7 +27,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content p-24 md-white-bg" perfectScrollbar> <div class="content p-24 md-white-bg" fusePerfectScrollbar>
<div class="file-details"> <div class="file-details">

View File

@ -10,7 +10,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content py-16" perfectScrollbar> <div class="content py-16" fusePerfectScrollbar>
<div class="nav"> <div class="nav">

View File

@ -9,7 +9,7 @@
</div> </div>
</md-toolbar> </md-toolbar>
<div md-dialog-content class="p-24 m-0" perfectScrollbar> <div md-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<form name="composeForm" [formGroup]="composeForm" class="compose-form" fxLayout="column" fxFlex> <form name="composeForm" [formGroup]="composeForm" class="compose-form" fxLayout="column" fxFlex>

View File

@ -1,4 +1,4 @@
<div id="mail" class="page-layout carded left-sidenav" perfectScrollbar> <div id="mail" class="page-layout carded left-sidenav" fusePerfectScrollbar>
<!-- TOP BACKGROUND --> <!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div> <div class="top-bg md-accent-bg"></div>
@ -96,9 +96,9 @@
<!-- CONTENT --> <!-- CONTENT -->
<div class="content" fxLayoutAlign="row"> <div class="content" fxLayoutAlign="row">
<fuse-mail-list perfectScrollbar fxFlex></fuse-mail-list> <fuse-mail-list fusePerfectScrollbar fxFlex></fuse-mail-list>
<fuse-mail-details perfectScrollbar fxFlex></fuse-mail-details> <fuse-mail-details fusePerfectScrollbar fxFlex></fuse-mail-details>
</div> </div>
<!-- / CONTENT --> <!-- / CONTENT -->

View File

@ -21,7 +21,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content" perfectScrollbar> <div class="content" fusePerfectScrollbar>
<div class="p-24"> <div class="p-24">
<button md-raised-button fxFlex <button md-raised-button fxFlex

View File

@ -123,7 +123,7 @@
</div> </div>
</md-toolbar> </md-toolbar>
<div *ngIf="card" md-dialog-content class="p-24 m-0" perfectScrollbar> <div *ngIf="card" md-dialog-content class="p-24 m-0" fusePerfectScrollbar>
<div fxLayout.gt-xs="row" fxLayoutAlign.gt-xs="space-between center" <div fxLayout.gt-xs="row" fxLayoutAlign.gt-xs="space-between center"
fxLayout.xs="column" fxLayoutAlign="center center"> fxLayout.xs="column" fxLayoutAlign="center center">

View File

@ -10,7 +10,7 @@
</button> </button>
</div> </div>
<div fxFlex fxLayout="column" perfectScrollbar> <div fxFlex fxLayout="column" fusePerfectScrollbar>
<div class="label pl-12 mx-8 mb-8" *ngFor="let label of board.labels" fxFlex="0 0 auto" fxLayout="row" fxFlexAlign="space-between center" <div class="label pl-12 mx-8 mb-8" *ngFor="let label of board.labels" fxFlex="0 0 auto" fxLayout="row" fxFlexAlign="space-between center"
[class]="label.color"> [class]="label.color">

View File

@ -26,7 +26,7 @@
<div class="list-cards ngx-dnd-container" <div class="list-cards ngx-dnd-container"
[model]="list.idCards" ngxDroppable="card" (out)="onDrop($event)" [model]="list.idCards" ngxDroppable="card" (out)="onDrop($event)"
perfectScrollbar #listScroll> fusePerfectScrollbar #listScroll>
<fuse-scrumboard-board-card ngxDraggable <fuse-scrumboard-board-card ngxDraggable
(click)="openCardDialog(cardId)" (click)="openCardDialog(cardId)"
class="scrumboard-board-card mat-elevation-z2 ngx-dnd-item" class="scrumboard-board-card mat-elevation-z2 ngx-dnd-item"

View File

@ -3,11 +3,11 @@ import { FuseUtils } from '../../../../../../core/fuseUtils';
import { ScrumboardService } from 'app/main/content/apps/scrumboard/scrumboard.service'; import { ScrumboardService } from 'app/main/content/apps/scrumboard/scrumboard.service';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs/Subscription'; import { Subscription } from 'rxjs/Subscription';
import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar';
import { MdDialog, MdDialogRef } from '@angular/material'; import { MdDialog, MdDialogRef } from '@angular/material';
import { FuseScrumboardCardDialogComponent } from '../dialogs/card/card.component'; import { FuseScrumboardCardDialogComponent } from '../dialogs/card/card.component';
import { FuseConfirmDialogComponent } from '../../../../../../core/components/confirm-dialog/confirm-dialog.component'; import { FuseConfirmDialogComponent } from '../../../../../../core/components/confirm-dialog/confirm-dialog.component';
import { Card } from '../../card.model'; import { Card } from '../../card.model';
import { FusePerfectScrollbarDirective } from '../../../../../../core/directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive';
@Component({ @Component({
selector : 'fuse-scrumboard-board-list', selector : 'fuse-scrumboard-board-list',
@ -21,7 +21,7 @@ export class FuseScrumboardBoardListComponent implements OnInit, OnDestroy
dialogRef: any; dialogRef: any;
@Input() list; @Input() list;
@ViewChild(PerfectScrollbarDirective) listScroll: PerfectScrollbarDirective; @ViewChild(FusePerfectScrollbarDirective) listScroll: FusePerfectScrollbarDirective;
onBoardChanged: Subscription; onBoardChanged: Subscription;

View File

@ -9,7 +9,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content py-16" perfectScrollbar> <div class="content py-16" fusePerfectScrollbar>
<div class="nav"> <div class="nav">
<div class="nav-item"> <div class="nav-item">
@ -67,7 +67,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content p-8" perfectScrollbar> <div class="content p-8" fusePerfectScrollbar>
<fuse-scrumboard-board-color-selector></fuse-scrumboard-board-color-selector> <fuse-scrumboard-board-color-selector></fuse-scrumboard-board-color-selector>
</div> </div>
<!-- / SIDENAV CONTENT --> <!-- / SIDENAV CONTENT -->

View File

@ -1,5 +1,5 @@
<!-- BOARDS --> <!-- BOARDS -->
<div id="boards" class="md-primary-400-bg" fxLayout="column" fxLayoutAlign="start center" fxFlex perfectScrollbar> <div id="boards" class="md-primary-400-bg" fxLayout="column" fxLayoutAlign="start center" fxFlex fusePerfectScrollbar>
<div class="header pt-44 pt-md-88" fxFlex="0 0 auto"> <div class="header pt-44 pt-md-88" fxFlex="0 0 auto">
<h1>Scrumboard App</h1> <h1>Scrumboard App</h1>

View File

@ -21,7 +21,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content" perfectScrollbar> <div class="content" fusePerfectScrollbar>
<div class="p-24"> <div class="p-24">
<button md-raised-button fxFlex <button md-raised-button fxFlex

View File

@ -1,4 +1,4 @@
<div id="todo" class="page-layout carded left-sidenav" perfectScrollbar> <div id="todo" class="page-layout carded left-sidenav" fusePerfectScrollbar>
<!-- TOP BACKGROUND --> <!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div> <div class="top-bg md-accent-bg"></div>
@ -82,9 +82,9 @@
<!-- CONTENT --> <!-- CONTENT -->
<div class="content" fxFlexAlign="row"> <div class="content" fxFlexAlign="row">
<fuse-todo-list perfectScrollbar fxFlex></fuse-todo-list> <fuse-todo-list fusePerfectScrollbar fxFlex></fuse-todo-list>
<fuse-todo-details perfectScrollbar fxFlex></fuse-todo-details> <fuse-todo-details fusePerfectScrollbar fxFlex></fuse-todo-details>
</div> </div>
<!-- / CONTENT --> <!-- / CONTENT -->

View File

@ -1,4 +1,4 @@
<div id="ngx-datatable" class="page-layout simple fullwidth" perfectScrollbar> <div id="ngx-datatable" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="space-between"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="space-between">

View File

@ -1,4 +1,4 @@
<div id="countdown" class="page-layout simple fullwidth" perfectScrollbar> <div id="countdown" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="hljs" class="page-layout simple fullwidth" perfectScrollbar> <div id="hljs" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="material-color-picker" class="page-layout simple fullwidth" perfectScrollbar> <div id="material-color-picker" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="navigation" class="page-layout simple fullwidth" perfectScrollbar> <div id="navigation" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="price-tables" class="page-layout simple fullwidth" perfectScrollbar> <div id="price-tables" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="search-bar" class="page-layout simple fullwidth" perfectScrollbar> <div id="search-bar" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="shortcuts" class="page-layout simple fullwidth" perfectScrollbar> <div id="shortcuts" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="widget" class="page-layout simple fullwidth" perfectScrollbar> <div id="widget" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="forgot-password" fxLayout="column" perfectScrollbar> <div id="forgot-password" fxLayout="column" fusePerfectScrollbar>
<div id="forgot-password-form-wrapper" fxLayout="column" fxLayoutAlign="center center"> <div id="forgot-password-form-wrapper" fxLayout="column" fxLayoutAlign="center center">

View File

@ -1,4 +1,4 @@
<div id="lock" fxLayout="column" perfectScrollbar> <div id="lock" fxLayout="column" fusePerfectScrollbar>
<div id="lock-form-wrapper" fxLayout="column" fxLayoutAlign="center center"> <div id="lock-form-wrapper" fxLayout="column" fxLayoutAlign="center center">

View File

@ -15,7 +15,7 @@
</div> </div>
</div> </div>
<div id="login-form-wrapper" perfectScrollbar> <div id="login-form-wrapper" fusePerfectScrollbar>
<div id="login-form"> <div id="login-form">

View File

@ -1,4 +1,4 @@
<div id="login" fxLayout="column" perfectScrollbar> <div id="login" fxLayout="column" fusePerfectScrollbar>
<div id="login-form-wrapper" fxLayout="column" fxLayoutAlign="center center"> <div id="login-form-wrapper" fxLayout="column" fxLayoutAlign="center center">

View File

@ -15,7 +15,7 @@
</div> </div>
</div> </div>
<div id="register-form-wrapper" perfectScrollbar> <div id="register-form-wrapper" fusePerfectScrollbar>
<div id="register-form"> <div id="register-form">

View File

@ -1,4 +1,4 @@
<div id="register" fxLayout="column" perfectScrollbar> <div id="register" fxLayout="column" fusePerfectScrollbar>
<div id="register-form-wrapper" fxLayout="column" fxLayoutAlign="center center"> <div id="register-form-wrapper" fxLayout="column" fxLayoutAlign="center center">

View File

@ -1,4 +1,4 @@
<div id="reset-password" fxLayout="column" perfectScrollbar> <div id="reset-password" fxLayout="column" fusePerfectScrollbar>
<div id="reset-password-form-wrapper" fxLayout="column" fxLayoutAlign="center center"> <div id="reset-password-form-wrapper" fxLayout="column" fxLayoutAlign="center center">

View File

@ -1,4 +1,4 @@
<div id="coming-soon" fxLayout="column" perfectScrollbar> <div id="coming-soon" fxLayout="column" fusePerfectScrollbar>
<div id="coming-soon-form-wrapper" fxLayout="column" fxLayoutAlign="center center"> <div id="coming-soon-form-wrapper" fxLayout="column" fxLayoutAlign="center center">

View File

@ -1,4 +1,4 @@
<div id="invoice" class="compact page-layout blank" fxLayout="row" perfectScrollbar> <div id="invoice" class="compact page-layout blank" fxLayout="row" fusePerfectScrollbar>
<div class="invoice-container"> <div class="invoice-container">

View File

@ -1,4 +1,4 @@
<div id="invoice" class="modern page-layout blank" fxLayout="row" perfectScrollbar> <div id="invoice" class="modern page-layout blank" fxLayout="row" fusePerfectScrollbar>
<div class="invoice-container"> <div class="invoice-container">

View File

@ -1,4 +1,4 @@
<div id="maintenance" fxLayout="column" perfectScrollbar> <div id="maintenance" fxLayout="column" fusePerfectScrollbar>
<div id="maintenance-form-wrapper" fxLayout="column" fxLayoutAlign="center center"> <div id="maintenance-form-wrapper" fxLayout="column" fxLayoutAlign="center center">

View File

@ -1,4 +1,4 @@
<div id="profile" class="page-layout simple tabbed" perfectScrollbar> <div id="profile" class="page-layout simple tabbed" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header p-24" fxLayout="column" fxLayoutAlign="center center" fxLayout.gt-sm="row" <div class="header p-24" fxLayout="column" fxLayoutAlign="center center" fxLayout.gt-sm="row"

View File

@ -1,4 +1,4 @@
<div id="search" class="page-layout simple tabbed" perfectScrollbar> <div id="search" class="page-layout simple tabbed" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="column" fxLayoutAlign="center center" fxLayout.gt-sm="row" <div class="header md-accent-bg p-24" fxLayout="column" fxLayoutAlign="center center" fxLayout.gt-sm="row"

View File

@ -1,4 +1,4 @@
<div id="config" class="page-layout simple fullwidth" perfectScrollbar> <div id="config" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="splash-screen" class="page-layout simple fullwidth" perfectScrollbar> <div id="splash-screen" class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="material-colors" class="page-layout simple tabbed" fxLayout="column" perfectScrollbar> <div id="material-colors" class="page-layout simple tabbed" fxLayout="column" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="space-between center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="space-between center">

View File

@ -1,4 +1,4 @@
<div id="forms" class="page-layout simple fullwidth" fxLayout="column" perfectScrollbar> <div id="forms" class="page-layout simple fullwidth" fxLayout="column" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="helper-classes" class="page-layout simple tabbed" fxLayout="column" perfectScrollbar> <div id="helper-classes" class="page-layout simple tabbed" fxLayout="column" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div id="helper-classes" class="page-layout simple tabbed" fxLayout="column" perfectScrollbar> <div id="helper-classes" class="page-layout simple tabbed" fxLayout="column" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="space-between center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="space-between center">

View File

@ -1,4 +1,4 @@
<div class="page-layout blank p-24" perfectScrollbar> <div class="page-layout blank p-24" fusePerfectScrollbar>
<h2>Blank Page</h2> <h2>Blank Page</h2>

View File

@ -1,4 +1,4 @@
<div class="page-layout carded fullwidth single-scroll" perfectScrollbar> <div class="page-layout carded fullwidth single-scroll" fusePerfectScrollbar>
<!-- TOP BACKGROUND --> <!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div> <div class="top-bg md-accent-bg"></div>

View File

@ -1,4 +1,4 @@
<div class="page-layout carded fullwidth" perfectScrollbar> <div class="page-layout carded fullwidth" fusePerfectScrollbar>
<!-- TOP BACKGROUND --> <!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div> <div class="top-bg md-accent-bg"></div>
@ -23,7 +23,7 @@
<!-- / CONTENT TOOLBAR --> <!-- / CONTENT TOOLBAR -->
<!-- CONTENT --> <!-- CONTENT -->
<div class="content p-24" perfectScrollbar> <div class="content p-24" fusePerfectScrollbar>
<fuse-demo-content></fuse-demo-content> <fuse-demo-content></fuse-demo-content>

View File

@ -1,4 +1,4 @@
<div class="page-layout carded left-sidenav single-scroll" perfectScrollbar> <div class="page-layout carded left-sidenav single-scroll" fusePerfectScrollbar>
<!-- TOP BACKGROUND --> <!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div> <div class="top-bg md-accent-bg"></div>
@ -17,7 +17,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content p-24" perfectScrollbar> <div class="content p-24" fusePerfectScrollbar>
<fuse-demo-sidenav></fuse-demo-sidenav> <fuse-demo-sidenav></fuse-demo-sidenav>
</div> </div>
<!-- / SIDENAV CONTENT --> <!-- / SIDENAV CONTENT -->
@ -50,7 +50,7 @@
<!-- / CONTENT TOOLBAR --> <!-- / CONTENT TOOLBAR -->
<!-- CONTENT --> <!-- CONTENT -->
<div class="content p-24" perfectScrollbar> <div class="content p-24" fusePerfectScrollbar>
<fuse-demo-content></fuse-demo-content> <fuse-demo-content></fuse-demo-content>

View File

@ -1,4 +1,4 @@
<div class="page-layout carded left-sidenav" perfectScrollbar> <div class="page-layout carded left-sidenav" fusePerfectScrollbar>
<!-- TOP BACKGROUND --> <!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div> <div class="top-bg md-accent-bg"></div>
@ -17,7 +17,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content p-24" perfectScrollbar> <div class="content p-24" fusePerfectScrollbar>
<fuse-demo-sidenav></fuse-demo-sidenav> <fuse-demo-sidenav></fuse-demo-sidenav>
@ -52,7 +52,7 @@
<!-- / CONTENT TOOLBAR --> <!-- / CONTENT TOOLBAR -->
<!-- CONTENT --> <!-- CONTENT -->
<div class="content p-24" perfectScrollbar> <div class="content p-24" fusePerfectScrollbar>
<fuse-demo-content></fuse-demo-content> <fuse-demo-content></fuse-demo-content>

View File

@ -1,4 +1,4 @@
<div class="page-layout carded right-sidenav single-scroll" perfectScrollbar> <div class="page-layout carded right-sidenav single-scroll" fusePerfectScrollbar>
<!-- TOP BACKGROUND --> <!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div> <div class="top-bg md-accent-bg"></div>
@ -31,7 +31,7 @@
<!-- / CONTENT TOOLBAR --> <!-- / CONTENT TOOLBAR -->
<!-- CONTENT --> <!-- CONTENT -->
<div class="content p-24" perfectScrollbar> <div class="content p-24" fusePerfectScrollbar>
<fuse-demo-content></fuse-demo-content> <fuse-demo-content></fuse-demo-content>
@ -55,7 +55,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content p-24" perfectScrollbar> <div class="content p-24" fusePerfectScrollbar>
<fuse-demo-sidenav></fuse-demo-sidenav> <fuse-demo-sidenav></fuse-demo-sidenav>
</div> </div>
<!-- / SIDENAV CONTENT --> <!-- / SIDENAV CONTENT -->

View File

@ -1,4 +1,4 @@
<div class="page-layout carded right-sidenav" perfectScrollbar> <div class="page-layout carded right-sidenav" fusePerfectScrollbar>
<!-- TOP BACKGROUND --> <!-- TOP BACKGROUND -->
<div class="top-bg md-accent-bg"></div> <div class="top-bg md-accent-bg"></div>
@ -31,7 +31,7 @@
<!-- / CONTENT TOOLBAR --> <!-- / CONTENT TOOLBAR -->
<!-- CONTENT --> <!-- CONTENT -->
<div class="content p-24" perfectScrollbar> <div class="content p-24" fusePerfectScrollbar>
<fuse-demo-content></fuse-demo-content> <fuse-demo-content></fuse-demo-content>
@ -55,7 +55,7 @@
<!-- / SIDENAV HEADER --> <!-- / SIDENAV HEADER -->
<!-- SIDENAV CONTENT --> <!-- SIDENAV CONTENT -->
<div class="content p-24" perfectScrollbar> <div class="content p-24" fusePerfectScrollbar>
<fuse-demo-sidenav></fuse-demo-sidenav> <fuse-demo-sidenav></fuse-demo-sidenav>
</div> </div>
<!-- / SIDENAV CONTENT --> <!-- / SIDENAV CONTENT -->

View File

@ -1,4 +1,4 @@
<div class="page-layout simple fullwidth" perfectScrollbar> <div class="page-layout simple fullwidth" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div class="page-layout simple left-sidenav single-scroll" perfectScrollbar> <div class="page-layout simple left-sidenav single-scroll" fusePerfectScrollbar>
<md-sidenav-container> <md-sidenav-container>
@ -12,7 +12,7 @@
<!-- / SIDENAV --> <!-- / SIDENAV -->
<!-- CENTER --> <!-- CENTER -->
<div class="center" perfectScrollbar> <div class="center" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div class="page-layout simple left-sidenav inner-sidenav" perfectScrollbar> <div class="page-layout simple left-sidenav inner-sidenav" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center">
@ -22,7 +22,7 @@
<md-sidenav class="sidenav mat-sidenav-opened" align="start" opened="true" mode="side" <md-sidenav class="sidenav mat-sidenav-opened" align="start" opened="true" mode="side"
fuseMdSidenavHelper="simple-left-sidenav-3" md-is-locked-open="gt-md"> fuseMdSidenavHelper="simple-left-sidenav-3" md-is-locked-open="gt-md">
<div class="sidenav-content" perfectScrollbar> <div class="sidenav-content" fusePerfectScrollbar>
<fuse-demo-sidenav></fuse-demo-sidenav> <fuse-demo-sidenav></fuse-demo-sidenav>
@ -32,7 +32,7 @@
<!-- / SIDENAV --> <!-- / SIDENAV -->
<!-- CENTER --> <!-- CENTER -->
<div class="center p-24" perfectScrollbar> <div class="center p-24" fusePerfectScrollbar>
<!-- CONTENT --> <!-- CONTENT -->
<div class="content p-24 mat-elevation-z4 md-white-bg"> <div class="content p-24 mat-elevation-z4 md-white-bg">

View File

@ -1,4 +1,4 @@
<div class="page-layout simple left-sidenav" perfectScrollbar> <div class="page-layout simple left-sidenav" fusePerfectScrollbar>
<md-sidenav-container> <md-sidenav-container>
@ -6,7 +6,7 @@
<md-sidenav class="sidenav mat-sidenav-opened" align="start" opened="true" mode="side" <md-sidenav class="sidenav mat-sidenav-opened" align="start" opened="true" mode="side"
fuseMdSidenavHelper="simple-left-sidenav" md-is-locked-open="gt-md"> fuseMdSidenavHelper="simple-left-sidenav" md-is-locked-open="gt-md">
<div class="sidenav-content p-24" perfectScrollbar> <div class="sidenav-content p-24" fusePerfectScrollbar>
<fuse-demo-sidenav></fuse-demo-sidenav> <fuse-demo-sidenav></fuse-demo-sidenav>
@ -16,7 +16,7 @@
<!-- / SIDENAV --> <!-- / SIDENAV -->
<!-- CENTER --> <!-- CENTER -->
<div class="center" perfectScrollbar> <div class="center" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,9 +1,9 @@
<div class="page-layout simple right-sidenav single-scroll" perfectScrollbar> <div class="page-layout simple right-sidenav single-scroll" fusePerfectScrollbar>
<md-sidenav-container> <md-sidenav-container>
<!-- CENTER --> <!-- CENTER -->
<div class="center" perfectScrollbar> <div class="center" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center">

View File

@ -1,4 +1,4 @@
<div class="page-layout simple right-sidenav inner-sidenav" perfectScrollbar> <div class="page-layout simple right-sidenav inner-sidenav" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center">
@ -19,7 +19,7 @@
<md-sidenav-container> <md-sidenav-container>
<!-- CENTER --> <!-- CENTER -->
<div class="center p-24" perfectScrollbar> <div class="center p-24" fusePerfectScrollbar>
<!-- CONTENT --> <!-- CONTENT -->
<div class="content p-24 mat-elevation-z4 md-white-bg"> <div class="content p-24 mat-elevation-z4 md-white-bg">
@ -36,7 +36,7 @@
<md-sidenav class="sidenav mat-sidenav-opened" align="end" opened="true" mode="side" <md-sidenav class="sidenav mat-sidenav-opened" align="end" opened="true" mode="side"
fuseMdSidenavHelper="simple-right-sidenav-3" md-is-locked-open="gt-md"> fuseMdSidenavHelper="simple-right-sidenav-3" md-is-locked-open="gt-md">
<div class="sidenav-content" perfectScrollbar> <div class="sidenav-content" fusePerfectScrollbar>
<fuse-demo-sidenav></fuse-demo-sidenav> <fuse-demo-sidenav></fuse-demo-sidenav>

View File

@ -1,9 +1,9 @@
<div class="page-layout simple right-sidenav" perfectScrollbar> <div class="page-layout simple right-sidenav" fusePerfectScrollbar>
<md-sidenav-container> <md-sidenav-container>
<!-- CENTER --> <!-- CENTER -->
<div class="center" perfectScrollbar> <div class="center" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24" fxLayout="row" fxLayoutAlign="start center">
@ -36,7 +36,7 @@
<md-sidenav class="sidenav mat-sidenav-opened" align="end" opened="true" mode="side" <md-sidenav class="sidenav mat-sidenav-opened" align="end" opened="true" mode="side"
fuseMdSidenavHelper="simple-right-sidenav" md-is-locked-open="gt-md"> fuseMdSidenavHelper="simple-right-sidenav" md-is-locked-open="gt-md">
<div class="sidenav-content p-24" perfectScrollbar> <div class="sidenav-content p-24" fusePerfectScrollbar>
<fuse-demo-sidenav></fuse-demo-sidenav> <fuse-demo-sidenav></fuse-demo-sidenav>

View File

@ -1,4 +1,4 @@
<div class="page-layout simple tabbed" perfectScrollbar> <div class="page-layout simple tabbed" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24"> <div class="header md-accent-bg p-24">

View File

@ -1,4 +1,4 @@
<div id="typography" class="page-layout simple tabbed" fxLayout="column" perfectScrollbar> <div id="typography" class="page-layout simple tabbed" fxLayout="column" fusePerfectScrollbar>
<!-- HEADER --> <!-- HEADER -->
<div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center"> <div class="header md-accent-bg p-24 h-160" fxLayout="row" fxLayoutAlign="start center">

View File

@ -12,19 +12,6 @@ fuse-main {
@include mat-elevation(8); @include mat-elevation(8);
} }
&.disable-perfect-scrollbar {
.ps {
-webkit-overflow-scrolling: touch !important;
overflow: auto !important;
}
.ps__scrollbar-x-rail,
.ps__scrollbar-y-rail {
display: none !important;
}
}
> .mat-sidenav-container { > .mat-sidenav-container {
display: flex; display: flex;
flex: 1; flex: 1;

View File

@ -1,6 +1,8 @@
import { Component, ElementRef, HostBinding, OnDestroy, OnInit, Renderer2, ViewEncapsulation } from '@angular/core'; import { Component, ElementRef, HostBinding, Inject, OnDestroy, OnInit, Renderer2, ViewEncapsulation } from '@angular/core';
import { Subscription } from 'rxjs/Subscription'; import { Subscription } from 'rxjs/Subscription';
import { FuseConfigService } from '../core/services/config.service'; import { FuseConfigService } from '../core/services/config.service';
import { Platform } from '@angular/cdk/platform';
import { DOCUMENT } from '@angular/common';
@Component({ @Component({
selector : 'fuse-main', selector : 'fuse-main',
@ -12,13 +14,14 @@ export class FuseMainComponent implements OnInit, OnDestroy
{ {
onSettingsChanged: Subscription; onSettingsChanged: Subscription;
fuseSettings: any; fuseSettings: any;
@HostBinding('class.disable-perfect-scrollbar') disableCustomScrollbars;
@HostBinding('class.boxed') boxed; @HostBinding('class.boxed') boxed;
constructor( constructor(
private _renderer: Renderer2, private _renderer: Renderer2,
private _elementRef: ElementRef, private _elementRef: ElementRef,
private fuseConfig: FuseConfigService private fuseConfig: FuseConfigService,
private platform: Platform,
@Inject(DOCUMENT) private document: any
) )
{ {
this.onSettingsChanged = this.onSettingsChanged =
@ -26,10 +29,14 @@ export class FuseMainComponent implements OnInit, OnDestroy
.subscribe( .subscribe(
(newSettings) => { (newSettings) => {
this.fuseSettings = newSettings; this.fuseSettings = newSettings;
this.disableCustomScrollbars = !this.fuseSettings.customScrollbars;
this.boxed = this.fuseSettings.layout.mode === 'boxed'; this.boxed = this.fuseSettings.layout.mode === 'boxed';
} }
); );
if ( this.platform.ANDROID || this.platform.IOS )
{
this.document.body.className += ' is-mobile';
}
} }
ngOnInit() ngOnInit()

View File

@ -15,6 +15,6 @@
</div> </div>
<div class="navbar-content" perfectScrollbar> <div class="navbar-content" fusePerfectScrollbar>
<fuse-navigation layout="vertical"></fuse-navigation> <fuse-navigation layout="vertical"></fuse-navigation>
</div> </div>

View File

@ -5,8 +5,8 @@ import { FuseNavbarVerticalService } from './navbar-vertical.service';
import { ObservableMedia } from '@angular/flex-layout'; import { ObservableMedia } from '@angular/flex-layout';
import { FuseMainComponent } from '../../main.component'; import { FuseMainComponent } from '../../main.component';
import { NavigationEnd, Router } from '@angular/router'; import { NavigationEnd, Router } from '@angular/router';
import { PerfectScrollbarDirective } from 'ngx-perfect-scrollbar';
import { FuseNavigationService } from '../../../core/components/navigation/navigation.service'; import { FuseNavigationService } from '../../../core/components/navigation/navigation.service';
import { FusePerfectScrollbarDirective } from '../../../core/directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive';
@Component({ @Component({
selector : 'fuse-navbar-vertical', selector : 'fuse-navbar-vertical',
@ -21,7 +21,7 @@ export class FuseNavbarVerticalComponent implements OnInit, OnDestroy
@HostBinding('class.folded-open') isFoldedOpen: boolean; @HostBinding('class.folded-open') isFoldedOpen: boolean;
@HostBinding('class.initialized') initialized: boolean; @HostBinding('class.initialized') initialized: boolean;
@Input('folded') foldedByDefault = false; @Input('folded') foldedByDefault = false;
@ViewChild(PerfectScrollbarDirective) perfectScrollbarDirective; @ViewChild(FusePerfectScrollbarDirective) fusePerfectScrollbarDirective;
matchMediaWatcher: Subscription; matchMediaWatcher: Subscription;
@ -39,7 +39,7 @@ export class FuseNavbarVerticalComponent implements OnInit, OnDestroy
this.fuseNavigationService.onNavCollapseToggled.subscribe(() => { this.fuseNavigationService.onNavCollapseToggled.subscribe(() => {
setTimeout(() => { setTimeout(() => {
this.perfectScrollbarDirective.update(); this.fusePerfectScrollbarDirective.update();
}, 310); }, 310);
}); });