diff --git a/README.md b/README.md
index 03fb7a5..e2a197e 100644
--- a/README.md
+++ b/README.md
@@ -42,7 +42,10 @@ npm install nativescript-ng2-carousel --save
3. To use the CarouselDirective, create a template that applies the directive as an attribute to a paragraph GridLayout element:
-<GridLayout [carousel]="images" carouselLabelOverlay="true" carouselSpeed="2000">
+<GridLayout [carousel]="images"
+ carouselLabelOverlay="true"
+ carouselSpeed="2000"
+ (selectedImageChange)="select($event)">
</GridLayout>
@@ -135,6 +138,7 @@ Currently directive supported attributes:
* **carouselAnimationSpeed** _(optional)_ defines the animation speed (number in ms)
* **carouselArrows** _(optional)_ arrow type, accepted values _none_, _small_, _normal_, _bold_ or _narrow_ (default _normal_)
* **carouselLabelOverlay** _(optional)_ silde title over image, accepted values _true_ or _false_ (default false)
+* **selectedImageChange** _(optional)_ get the title of the selected image (key)
## Changelog
diff --git a/nativescript-ng2-carousel.ts b/nativescript-ng2-carousel.ts
index 4a133af..55bd51e 100644
--- a/nativescript-ng2-carousel.ts
+++ b/nativescript-ng2-carousel.ts
@@ -3,14 +3,10 @@ import {AnimationCurve} from "ui/enums";
import {Image} from "ui/image";
import {StackLayout} from "ui/layouts/stack-layout";
import {GridLayout, ItemSpec} from "ui/layouts/grid-layout";
-import {GridUnitType} from "ui/layouts/grid-layout";
-import {HorizontalAlignment} from "ui/enums";
import {Label} from "ui/label";
import {GestureTypes} from "ui/gestures";
import {View} from "ui/core/view";
-import {Visibility} from "ui/enums";
-import {fromFile} from "image-source";
-import {fromResource} from "image-source";
+import {fromFile, fromResource} from "image-source";
@Directive({selector: '[carousel]'})
export class CarouselDirective implements AfterViewInit {
@@ -40,6 +36,8 @@ export class CarouselDirective implements AfterViewInit {
@Input() carouselLabelOverlay: boolean; // title over image (bool)
@Input() carouselAnimationSpeed: number; // animation speed
+ @Output() selectedImageChange: EventEmitter = new EventEmitter();
+
constructor(private elem: ElementRef) {
this.container = elem.nativeElement;
}
@@ -128,16 +126,25 @@ export class CarouselDirective implements AfterViewInit {
if (slide.url) {
let image: Image = CarouselDirective.generateImageSliderFromUrl(slide.url);
+ image.on(GestureTypes.tap, () => {
+ this.selectedImageChange.emit( slide.title );
+ });
gridLayout.addChild(image);
}
if (slide.file && slide.file.indexOf('res://') !== 0) {
let image: Image = CarouselDirective.generateImageSliderFromFile(slide.file);
+ image.on(GestureTypes.tap, () => {
+ this.selectedImageChange.emit( slide.title );
+ });
gridLayout.addChild(image);
}
if (slide.file && slide.file.indexOf('res://') === 0) {
let image: Image = CarouselDirective.generateImageSliderFromResource(slide.file);
+ image.on(GestureTypes.tap, () => {
+ this.selectedImageChange.emit( slide.title );
+ });
gridLayout.addChild(image);
}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..aa5c790
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,47 @@
+{
+ "name": "nativescript-ng2-carousel",
+ "version": "0.1.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@angular/core": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.1.3.tgz",
+ "integrity": "sha512-pqRfQphqIEExhDWM3RRusvLY6gFN0zdITC7TqQy6Wof6VKgWOvfHiHPbiamw4kpEzflMekuOeNm0s6h6hIUnWA==",
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "rxjs": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
+ "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "tns-core-modules": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/tns-core-modules/-/tns-core-modules-4.2.0.tgz",
+ "integrity": "sha512-tEbQfeXVp6i9RJAmC+erd63mr6NYw5nX/gzYDVb1Va52/Jdj9ZeGbXKAPyjVXZ3BGI6O9QM1jQUem/Ow6v5FqQ==",
+ "requires": {
+ "tns-core-modules-widgets": "4.2.0"
+ }
+ },
+ "tns-core-modules-widgets": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/tns-core-modules-widgets/-/tns-core-modules-widgets-4.2.0.tgz",
+ "integrity": "sha512-0YlfWN1Wy2qFlnzwrwit910whA9TC9en1PxS/5Yx63lL9uXHyOB53C8POnKfM82YUFVPxifcpuYtCC7+DBXbag=="
+ },
+ "tslib": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
+ },
+ "zone.js": {
+ "version": "0.8.26",
+ "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz",
+ "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA=="
+ }
+ }
+}