--- /dev/null
+import { Copy2ClipboardButtonDirective } from './copy2clipboard-button.directive';
+
+describe('Copy2clipboardButtonDirective', () => {
+ it('should create an instance', () => {
+ const directive = new Copy2ClipboardButtonDirective(null, null, null);
+ expect(directive).toBeTruthy();
+ });
+});
--- /dev/null
+import { Directive, ElementRef, HostListener, Input, OnInit, Renderer2 } from '@angular/core';
+
+import { ToastsManager } from 'ng2-toastr';
+
+@Directive({
+ selector: '[cdCopy2ClipboardButton]'
+})
+export class Copy2ClipboardButtonDirective implements OnInit {
+
+ @Input('cdCopy2ClipboardButton') private cdCopy2ClipboardButton: string;
+
+ constructor(private elementRef: ElementRef,
+ private renderer: Renderer2,
+ private toastr: ToastsManager) {}
+
+ ngOnInit() {
+ const iElement = this.renderer.createElement('i');
+ this.renderer.addClass(iElement, 'icon-prepend');
+ this.renderer.addClass(iElement, 'fa');
+ this.renderer.addClass(iElement, 'fa-clipboard');
+ this.renderer.appendChild(this.elementRef.nativeElement, iElement);
+ }
+
+ private getInputElement() {
+ return document.getElementById(this.cdCopy2ClipboardButton) as HTMLInputElement;
+ }
+
+ @HostListener('click')
+ onClick() {
+ try {
+ // Create the input to hold our text.
+ const tmpInputElement = document.createElement('input');
+ tmpInputElement.value = this.getInputElement().value;
+ document.body.appendChild(tmpInputElement);
+ // Copy text to clipboard.
+ tmpInputElement.select();
+ document.execCommand('copy');
+ // Finally remove the element.
+ document.body.removeChild(tmpInputElement);
+
+ this.toastr.success('Copied text to the clipboard successfully.');
+ } catch (err) {
+ this.toastr.error('Failed to copy text to the clipboard.');
+ }
+ }
+}
import { ComponentsModule } from './components/components.module';
import { DataTableModule } from './datatable/datatable.module';
import { AutofocusDirective } from './directives/autofocus.directive';
+import { Copy2ClipboardButtonDirective } from './directives/copy2clipboard-button.directive';
import { DimlessBinaryDirective } from './directives/dimless-binary.directive';
import { PasswordButtonDirective } from './directives/password-button.directive';
import { PipesModule } from './pipes/pipes.module';
declarations: [
PasswordButtonDirective,
DimlessBinaryDirective,
+ Copy2ClipboardButtonDirective,
AutofocusDirective
],
exports: [
PipesModule,
ServicesModule,
PasswordButtonDirective,
+ Copy2ClipboardButtonDirective,
DimlessBinaryDirective,
DataTableModule,
ApiModule,