Skip to content

Commit

Permalink
Merge pull request #1 from vdanyliv/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
vdanyliv authored Jan 17, 2019
2 parents 7fe0f14 + ff48b33 commit 98223e4
Show file tree
Hide file tree
Showing 14 changed files with 235 additions and 74 deletions.
81 changes: 63 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,72 @@
# NgxTinySliderWrapper
# ngx-tiny-slider
Angular component that gives you possibility to use [tiny-slider](https://www.npmjs.com/package/tiny-slider) library.
1. Demo [page](http://ganlanyuan.github.io/tiny-slider/demo/)
2. tiny-slider official [repo](https://github.com/ganlanyuan/tiny-slider#readme)

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.0.3.
# How to use

## Development server
1. Import NgxTinySliderModule into your module
2. Use in your component template <ngx-tiny-slider>

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.
# Usage example
Your component template
```html
<ngx-tiny-slider [config]="tinySliderConfig">
<ng-container class="items">
<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>

## Code scaffolding
<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>

## Build
<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>
</ng-container>
</ngx-tiny-slider>
```

Your component defenition

```javascript
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
tinySliderConfig: NgxTinySliderSettingsInterface;

## Running unit tests
ngOnInit() {
this.tinySliderConfig = {
arrowKeys: true,
autoWidth: true,
gutter: 10,
centerNavigation: true,
customControlsStyle: true,
controlsText: ['<', '>'],
};
}
}

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
```
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"@angular/router": "~7.0.0",
"core-js": "^2.5.4",
"rxjs": "~6.3.3",
"tiny-slider": "^2.9.1",
"zone.js": "~0.8.26"
},
"devDependencies": {
Expand Down
5 changes: 4 additions & 1 deletion projects/ngx-tiny-slider/ng-package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "./dist/ngx-tiny-slider",
"whitelistedNonPeerDependencies": [
"tiny-slider"
],
"lib": {
"entryFile": "src/public_api.ts"
}
}
}
6 changes: 5 additions & 1 deletion projects/ngx-tiny-slider/package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
{
"name": "ngx-tiny-slider",
"version": "0.0.1",
"dependencies": {
"tiny-slider": "^2.9.1"
},
"peerDependencies": {
"@angular/common": "^7.0.0",
"@angular/core": "^7.0.0"
}
},
"author": "Volodymyr Danyliv"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import {TinySliderSettings} from 'tiny-slider';

export interface NgxTinySliderSettingsInterface extends TinySliderSettings {
centerNavigation?: boolean;
customControlsStyle?: boolean;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<div class="slider-wrapper" [ngClass]="{'slider-wrapper-nav-center': config?.centerNavigation, 'slider-wrapper-custom-nav-style': config?.customControlsStyle}">
<div class="slide-items" #slideItems>
<ng-content select=".items"></ng-content>
</div>
</div>
41 changes: 40 additions & 1 deletion projects/ngx-tiny-slider/src/lib/ngx-tiny-slider.component.scss
Original file line number Diff line number Diff line change
@@ -1 +1,40 @@
@import "~tiny-slider/dist/tiny-slider.css";
@import "~tiny-slider/dist/tiny-slider.css";

.slider-wrapper {
&-nav-center {
position: relative;
padding: 0 28px;

.tns-controls {
position: absolute;
width: 100%;
left: 0;
top: 50%;

[data-controls*='next'] {
right: 0;
position: absolute;
}

[data-controls*='prev'] {
left: 0;
position: absolute;
}
}
}

&-custom-nav-style {
.tns-controls {
button {
width: 25px;
height: 25px;
color: #fff;
background: #808080;
border-radius: 12px;
padding: 0;
font-size: 18px;
outline: none;
}
}
}
}
25 changes: 19 additions & 6 deletions projects/ngx-tiny-slider/src/lib/ngx-tiny-slider.component.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,32 @@
import {Component, OnInit, ViewChild} from '@angular/core';
import {Component, Input, OnInit, ViewChild, ViewEncapsulation} from '@angular/core';

import {NgxTinySliderService} from './ngx-tiny-slider.service';

@Component({
selector: 'lib-ngx-tiny-slider',
templateUrl: 'ngx-tiny-slider.component.ts',
styleUrls: ['ngx-tiny-slider.component.scss']
selector: 'ngx-tiny-slider',
templateUrl: 'ngx-tiny-slider.component.html',
styleUrls: ['ngx-tiny-slider.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class NgxTinySliderComponent implements OnInit {
@ViewChild('ref') containerRef;
@Input() config;
@ViewChild('slideItems') slideItemsContainerRef;

defaultConfig = this.ngxTinySliderService.getDefaultConfig();

constructor(private ngxTinySliderService: NgxTinySliderService) {
}

ngOnInit() {
this.ngxTinySliderService.initSlider(this.containerRef);
this.extendConfig();
this.initSlider();
}

private extendConfig() {
Object.keys(this.config).forEach(i => this.defaultConfig[i] = this.config[i]);
}

private initSlider() {
this.ngxTinySliderService.initSlider(this.defaultConfig, this.slideItemsContainerRef);
}
}
24 changes: 15 additions & 9 deletions projects/ngx-tiny-slider/src/lib/ngx-tiny-slider.module.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';

import {NgxTinySliderComponent} from './ngx-tiny-slider.component';

import {NgxTinySliderService} from './ngx-tiny-slider.service';

@NgModule({
declarations: [
NgxTinySliderComponent
],
imports: [
NgxTinySliderService
],
exports: [
NgxTinySliderComponent
]
imports: [
CommonModule
],
declarations: [
NgxTinySliderComponent
],
providers: [
NgxTinySliderService
],
exports: [
NgxTinySliderComponent
]
})
export class NgxTinySliderModule {
}
21 changes: 13 additions & 8 deletions projects/ngx-tiny-slider/src/lib/ngx-tiny-slider.service.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Injectable} from '@angular/core';
import {tns} from 'tiny-slider';
import {ElementRef, Injectable} from '@angular/core';
import {tns} from 'tiny-slider/src/tiny-slider';

@Injectable({
providedIn: 'root'
Expand All @@ -9,12 +9,17 @@ export class NgxTinySliderService {
constructor() {
}

initSlider(elementRef) {
return tns({
container: elementRef,
initSlider(config, elementRef: ElementRef) {
return tns(Object.assign({container: elementRef.nativeElement}, config));
}

getDefaultConfig() {
return {
items: 3,
slideBy: 'page',
autoplay: true
});
nav: false,
mode: 'carousel',
controlsPosition: 'bottom',
speed: 400,
};
}
}
1 change: 0 additions & 1 deletion projects/ngx-tiny-slider/tslint.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"component-selector": [
true,
"element",
"lib",
"kebab-case"
]
}
Expand Down
53 changes: 34 additions & 19 deletions src/app/app.component.html
Original file line number Diff line number Diff line change
@@ -1,20 +1,35 @@
<!--The content below is only a placeholder and can be replaced.-->
<div style="text-align:center">
<h1>
Welcome to {{ title }}!
</h1>
<img width="300" alt="Angular Logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg==">
</div>
<h2>Here are some links to help you start: </h2>
<ul>
<li>
<h2><a target="_blank" rel="noopener" href="https://angular.io/tutorial">Tour of Heroes</a></h2>
</li>
<li>
<h2><a target="_blank" rel="noopener" href="https://github.com/angular/angular-cli/wiki">CLI Documentation</a></h2>
</li>
<li>
<h2><a target="_blank" rel="noopener" href="https://blog.angular.io/">Angular blog</a></h2>
</li>
</ul>
<div class="component-wrapper">
<ngx-tiny-slider [config]="tinySliderConfig">
<ng-container class="items">
<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>

<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>

<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>

<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>

<div class="item">
<a target="_blank" href="google.com">
<img src="http://www.mattsorger.com/newsletterpics/gsw07_01.jpg">
</a>
</div>
</ng-container>
</ngx-tiny-slider>
</div>
18 changes: 15 additions & 3 deletions src/app/app.component.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
import { Component } from '@angular/core';
import {Component, OnInit} from '@angular/core';
import {NgxTinySliderSettingsInterface} from '../../projects/ngx-tiny-slider/src/lib/interfaces/ngx-tiny-slider-settings.interface';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'ngx-tiny-slider-wrapper';
export class AppComponent implements OnInit {
tinySliderConfig: NgxTinySliderSettingsInterface;

ngOnInit() {
this.tinySliderConfig = {
arrowKeys: true,
autoWidth: true,
gutter: 10,
centerNavigation: true,
customControlsStyle: true,
controlsText: ['<', '>'],
};
}
}
Loading

0 comments on commit 98223e4

Please sign in to comment.