;
+
+}
+
diff --git a/src/components/tooltip.directive.ts b/src/components/tooltip.directive.ts
new file mode 100644
index 0000000..6dd2128
--- /dev/null
+++ b/src/components/tooltip.directive.ts
@@ -0,0 +1,57 @@
+/*!
+ * @license MIT
+ * Copyright (c) 2017 Bernhard Grünewaldt - codeclou.io
+ * https://github.com/cloukit/legal
+ */
+import {
+ Directive, Input, HostListener, ViewContainerRef, ComponentFactoryResolver,
+} from '@angular/core';
+import { DropoutService, DropoutComponentCreationRequest, DropoutComponentRefId, DropoutPlacement } from '@cloukit/dropout';
+import { CloukitTooltipComponent } from './children/tooltip.component';
+
+@Directive({
+ selector: '[cloukitTooltip]',
+})
+export class CloukitTooltipDirective {
+
+ @Input('cloukitTooltip')
+ cloukitDropout: string;
+
+ @Input('cloukitTooltipPlacement')
+ cloukitDropoutPlacement: DropoutPlacement = DropoutPlacement.HORIZONTAL_LEFT_BOTTOM;
+
+ private dropoutRef: DropoutComponentRefId;
+
+ constructor(private dropoutService: DropoutService,
+ private viewContainerRef: ViewContainerRef,
+ private componentFactoryResolver: ComponentFactoryResolver) {
+ }
+
+ _doActivate() {
+ const request = new DropoutComponentCreationRequest();
+ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(CloukitTooltipComponent);
+ const tooltipRef = this.viewContainerRef.createComponent(componentFactory);
+ tooltipRef.instance.tooltipText = this.cloukitDropout;
+ request.triggerElement = this.viewContainerRef.element.nativeElement;
+ request.template = tooltipRef.instance.tooltipTemplate;
+ request.placement = this.cloukitDropoutPlacement;
+ this.dropoutRef = this.dropoutService.requestDropoutCreation(request);
+ }
+
+ _doDeactivate() {
+ this.dropoutService.destroyComponent(this.dropoutRef);
+ this.dropoutRef = undefined;
+ }
+
+ @HostListener('focusin')
+ @HostListener('mouseenter')
+ activate() {
+ this._doActivate();
+ }
+
+ @HostListener('focusout')
+ @HostListener('mouseleave')
+ deactivate() {
+ this._doDeactivate();
+ }
+}
diff --git a/src/components/tooltip.module.ts b/src/components/tooltip.module.ts
new file mode 100644
index 0000000..bd86647
--- /dev/null
+++ b/src/components/tooltip.module.ts
@@ -0,0 +1,18 @@
+/*!
+ * @license MIT
+ * Copyright (c) 2017 Bernhard Grünewaldt - codeclou.io
+ * https://github.com/cloukit/legal
+ */
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { CloukitDropoutModule } from '@cloukit/dropout';
+import { CloukitTooltipDirective } from './tooltip.directive';
+import { CloukitTooltipComponent } from './children/tooltip.component';
+
+@NgModule({
+ imports: [ CommonModule, CloukitDropoutModule ],
+ exports: [ CloukitTooltipDirective ],
+ declarations: [ CloukitTooltipDirective, CloukitTooltipComponent ],
+ entryComponents: [ CloukitTooltipComponent ],
+})
+export class CloukitTooltipModule {}
diff --git a/src/demo/README.md b/src/demo/README.md
new file mode 100644
index 0000000..93a6d4e
--- /dev/null
+++ b/src/demo/README.md
@@ -0,0 +1,3 @@
+# Library Demo
+
+See https://github.com/cloukit/library-build-chain/blob/master/LIBRARY_DEMO.md
diff --git a/src/demo/demo.component.html b/src/demo/demo.component.html
new file mode 100644
index 0000000..27ea302
--- /dev/null
+++ b/src/demo/demo.component.html
@@ -0,0 +1,10 @@
+
+
+
+ There is a thing called
+ Bratwurst
+ which you should know. Hover the
+ Bratwurst
+ to see onmouseover dropout.
+
+
diff --git a/src/demo/demo.component.ts b/src/demo/demo.component.ts
new file mode 100644
index 0000000..adaf84e
--- /dev/null
+++ b/src/demo/demo.component.ts
@@ -0,0 +1,13 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'demo',
+ templateUrl: './demo.component.html',
+ styles: [
+ '.demo { font-family:sans-serif; }',
+ '.tooltip { color:#710ECC; cursor: pointer; }',
+ ],
+})
+export class DemoComponent {
+
+}
diff --git a/src/demo/demo.module.ts b/src/demo/demo.module.ts
new file mode 100644
index 0000000..5404188
--- /dev/null
+++ b/src/demo/demo.module.ts
@@ -0,0 +1,15 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { DemoComponent } from './demo.component';
+import { CloukitTooltipModule } from '../index';
+import { CloukitDropoutModule } from '@cloukit/dropout';
+
+@NgModule({
+ declarations: [ DemoComponent ],
+ exports: [ DemoComponent ],
+ imports: [ CommonModule, CloukitTooltipModule, CloukitDropoutModule ],
+ providers: [ ],
+ bootstrap: [ ]
+})
+export class DemoModule {
+}
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..7c82c08
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1 @@
+export * from './components/tooltip.module';
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..1a27c98
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "COMMENT": "ONLY USED FOR EDITOR!",
+ "compileOnSave": false,
+ "compilerOptions": {
+ "outDir": "./build/out-tsc",
+ "baseUrl": "src",
+ "sourceMap": true,
+ "declaration": false,
+ "moduleResolution": "node",
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "target": "es5",
+ "typeRoots": [
+ "node_modules/@types"
+ ],
+ "lib": [
+ "es2016",
+ "dom"
+ ]
+ }
+}