From fb435d91fbf115af96bd1fc580b40eee53c87e9b Mon Sep 17 00:00:00 2001
From: nixa <4dmitr@gmail.com>
Date: Fri, 13 May 2016 17:49:28 +0300
Subject: [PATCH] baBackTop component
---
src/app/pages/pages.component.ts | 5 +--
.../baBackTop/baBackTop.component.ts | 31 +++++++++++++++++++
.../theme/components/baBackTop/baBackTop.scss | 24 ++++++++++++++
src/app/theme/components/baBackTop/index.ts | 1 +
src/app/theme/components/index.ts | 1 +
5 files changed, 60 insertions(+), 2 deletions(-)
create mode 100644 src/app/theme/components/baBackTop/baBackTop.component.ts
create mode 100644 src/app/theme/components/baBackTop/baBackTop.scss
create mode 100644 src/app/theme/components/baBackTop/index.ts
diff --git a/src/app/pages/pages.component.ts b/src/app/pages/pages.component.ts
index becfe537..2a091c1d 100644
--- a/src/app/pages/pages.component.ts
+++ b/src/app/pages/pages.component.ts
@@ -1,7 +1,7 @@
import {Component, ViewEncapsulation} from '@angular/core';
import {RouteConfig} from '@angular/router-deprecated';
-import {PageTop, ContentTop, Sidebar} from '../theme/components';
+import {PageTop, ContentTop, Sidebar, BaBackTop} from '../theme/components';
import {Dashboard} from './dashboard';
import {Ui} from './ui';
@@ -13,7 +13,7 @@ import {Forms} from './forms';
selector: 'pages',
encapsulation: ViewEncapsulation.None,
styles: [],
- directives: [PageTop, Sidebar, ContentTop],
+ directives: [PageTop, Sidebar, ContentTop, BaBackTop],
template: `
@@ -35,6 +35,7 @@ import {Forms} from './forms';
+
`
})
@RouteConfig([
diff --git a/src/app/theme/components/baBackTop/baBackTop.component.ts b/src/app/theme/components/baBackTop/baBackTop.component.ts
new file mode 100644
index 00000000..84161e5e
--- /dev/null
+++ b/src/app/theme/components/baBackTop/baBackTop.component.ts
@@ -0,0 +1,31 @@
+import {Component, HostListener, Input, ElementRef} from '@angular/core';
+
+@Component({
+ selector: 'ba-back-top',
+ styles: [require('./baBackTop.scss')],
+ template: `
+
+ `
+})
+export class BaBackTop {
+
+ @Input() position:number = 400;
+ @Input() showSpeed:number = 500;
+ @Input() moveSpeed:number = 1000;
+
+ constructor (private _elementRef:ElementRef) {
+ this._onWindowScroll();
+ }
+
+ @HostListener('click')
+ _onClick():boolean {
+ $('html, body').animate({scrollTop:this.position}, {duration:this.moveSpeed});
+ return false;
+ }
+
+ @HostListener('window:scroll')
+ _onWindowScroll():void {
+ let el = this._elementRef.nativeElement.querySelector('.ba-back-top');
+ window.scrollY > this.position ? $(el).fadeIn(this.showSpeed) : $(el).fadeOut(this.showSpeed);
+ }
+}
diff --git a/src/app/theme/components/baBackTop/baBackTop.scss b/src/app/theme/components/baBackTop/baBackTop.scss
new file mode 100644
index 00000000..9fbe2b66
--- /dev/null
+++ b/src/app/theme/components/baBackTop/baBackTop.scss
@@ -0,0 +1,24 @@
+@import '../../../theme/sass/conf/conf';
+$height: 52px;
+
+.ba-back-top {
+ position: fixed;
+ width: $height;
+ height: $height;
+ cursor: pointer;
+ z-index: 9999;
+ display: none;
+ text-decoration: none;
+ right: (180px - $height) / 2;
+ bottom: 40px !important;
+ font-size: 45px;
+ text-align: center;
+ opacity: 0.4;
+ color: $primary;
+ background-color: rgba(0, 0, 0, 0.75);
+ border-radius: 50%;
+ line-height: 46px;
+ &:hover {
+ opacity: 0.8;
+ }
+}
diff --git a/src/app/theme/components/baBackTop/index.ts b/src/app/theme/components/baBackTop/index.ts
new file mode 100644
index 00000000..a2e03869
--- /dev/null
+++ b/src/app/theme/components/baBackTop/index.ts
@@ -0,0 +1 @@
+export * from './baBackTop.component.ts';
diff --git a/src/app/theme/components/index.ts b/src/app/theme/components/index.ts
index 06e6cae8..793ec218 100644
--- a/src/app/theme/components/index.ts
+++ b/src/app/theme/components/index.ts
@@ -5,3 +5,4 @@ export * from './contentTop';
export * from './baCard';
export * from './baAmChart';
export * from './baChartistChart';
+export * from './baBackTop';