ng-ytl-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
51 lines (42 loc) • 1.42 kB
text/typescript
import { Directive, ElementRef, HostBinding, HostListener, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
({
selector: '[nz-icon-copy]'
})
export class NzIconCopyDirective {
('class.copied') copied = false;
('click')
onClick() {
this.copy(`<i class="${this._el.nativeElement.children[ 0 ].className}"></i>`).then(() => {
this.copied = true;
setTimeout(() => {
this.copied = false;
}, 1000);
});
}
copy(value: string): Promise<string> {
const promise = new Promise<string>(
(resolve, reject): void => {
let copyTextArea = null as HTMLTextAreaElement;
try {
copyTextArea = this.dom.createElement('textarea');
copyTextArea.style.height = '0px';
copyTextArea.style.opacity = '0';
copyTextArea.style.width = '0px';
this.dom.body.appendChild(copyTextArea);
copyTextArea.value = value;
copyTextArea.select();
this.dom.execCommand('copy');
resolve(value);
} finally {
if (copyTextArea && copyTextArea.parentNode) {
copyTextArea.parentNode.removeChild(copyTextArea);
}
}
}
);
return ( promise );
}
constructor((DOCUMENT) private dom: Document, private _el: ElementRef) {
}
}