//import Component from angular core
import {Component} from 'angular2/core';
//import our Carousel Component
import {CSSCarouselComponent} from './carousel.component';
//@Component decorator
@Component({
//tag
selector: 'my-app',
//template
template: `
<div class="wrapper">
<css-carousel></css-carousel>
</div>
`,
//css
styles: [`
.wrapper{
width: 60%;
margin: 60px auto;
}
`],
//tell angular we are using the css-carousel tag in this component
directives: [CSSCarouselComponent]
})
//actual class
export class AppComponent { }
import {bootstrap} from 'angular2/platform/browser'
import {AppComponent} from './app.component'
bootstrap(AppComponent);
/*
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
*/
<!DOCTYPE html>
<html>
<head>
<title>CSS Carousel Angular 2 Compopnent</title>
<!-- 1. Load libraries -->
<!-- IE required polyfills, in this exact order -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.33.3/es6-shim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.16/system-polyfills.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.2/angular2-polyfills.js"></script>
<script src="https://code.angularjs.org/tools/system.js"></script>
<script src="https://code.angularjs.org/tools/typescript.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.2/Rx.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.2/angular2.dev.js"></script>
<!-- 2. Configure SystemJS -->
<script>
System.config({
transpiler: 'typescript',
typescriptOptions: { emitDecoratorMetadata: true },
packages: {'app': {defaultExtension: 'ts'}}
});
System.import('app/boot')
.then(null, console.error.bind(console));
</script>
</head>
<!-- 3. Display the application -->
<body>
<my-app>Loading...</my-app>
</body>
</html>
<!--
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
-->
//Import Component form the angular core package
import {Component} from 'angular2/core';
//Importt the Image interface
import {Image} from './image.interface';
//Compoent Decorator
@Component({
//Name of our tag
selector: 'css-carousel',
//Template for the tag
template: `
<div class="carousel">
<ul class="slides">
<li *ngFor="#image of images">
<h2>{{image.title}}</h2>
<img src="{{image.url}}" alt="">
</li>
</ul>
</div>
`,
//Styles for the tag
styles: [`
.carousel{
overflow:hidden;
width:100%;
}
.slides{
list-style:none;
position:relative;
width:500%; /* Number of panes * 100% */
overflow:hidden; /* Clear floats */
/* Slide effect Animations*/
-moz-animation:carousel 30s infinite;
-webkit-animation:carousel 30s infinite;
animation:carousel 30s infinite;
}
.slides > li{
position:relative;
float:left;
width: 20%; /* 100 / number of panes */
}
.carousel img{
display:block;
width:100%;
max-width:100%;
}
.carousel h2{
margin-bottom: 0;
font-size:1em;
padding:1.5em 0.5em 1.5em 0.5em;
position:absolute;
right:0px;
bottom:0px;
left:0px;
text-align:center;
color:#fff;
background-color:rgba(0,0,0,0.75);
text-transform: uppercase;
}
@keyframes carousel{
0% { left:-5%; }
11% { left:-5%; }
12.5% { left:-105%; }
23.5% { left:-105%; }
25% { left:-205%; }
36% { left:-205%; }
37.5% { left:-305%; }
48.5% { left:-305%; }
50% { left:-405%; }
61% { left:-405%; }
62.5% { left:-305%; }
73.5% { left:-305%; }
75% { left:-205%; }
86% { left:-205%; }
87.5% { left:-105%; }
98.5% { left:-105%; }
100% { left:-5%; }
}
`],
})
//Carousel Component itself
export class CSSCarouselComponent {
//images data to be bound to the template
public images = IMAGES;
}
//IMAGES array implementing Image interface
var IMAGES: Image[] = [
{ "title": "We are covered", "url": "https://raw.githubusercontent.com/christiannwamba/angular2-carousel-component/master/images/covered.jpg" },
{ "title": "Generation Gap", "url": "https://raw.githubusercontent.com/christiannwamba/angular2-carousel-component/master/images/generation.jpg" },
{ "title": "Potter Me", "url": "https://raw.githubusercontent.com/christiannwamba/angular2-carousel-component/master/images/potter.jpg" },
{ "title": "Pre-School Kids", "url": "https://raw.githubusercontent.com/christiannwamba/angular2-carousel-component/master/images/preschool.jpg" },
{ "title": "Young Peter Cech", "url": "https://raw.githubusercontent.com/christiannwamba/angular2-carousel-component/master/images/soccer.jpg" }
];
export interface Image {
title: string;
url: string;
}