ng-feedback
Version:
An angular directive for sending feedback featuring Angular 6, Html2canvas, Angular Material, Rxjs, inspired by Google send feedback, based on angular-cli.
140 lines (139 loc) • 10.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Directive, HostListener, EventEmitter, Output, Input } from '@angular/core';
import { MatDialog } from '@angular/material';
import { FeedbackDialogComponent } from './feedback-dialog/feedback-dialog.component';
import { FeedbackService } from './feedback.service';
import { Overlay } from '@angular/cdk/overlay';
var FeedbackDirective = /** @class */ (function () {
function FeedbackDirective(dialogRef, feedbackService, overlay) {
var _this = this;
this.dialogRef = dialogRef;
this.feedbackService = feedbackService;
this.title = 'Send feedback';
this.placeholder = 'Describe your issue or share your ideas';
this.editTip = 'Click to highlight or hide info';
this.checkboxLabel = 'Include screenshot';
this.cancelLabel = 'CANCEL';
this.sendLabel = 'SEND';
this.moveToolbarTip = 'move toolbar';
this.drawRectTip = 'Draw using yellow to highlight issues or black to hide sensitive info';
this.highlightTip = 'highlight issues';
this.hideTip = 'hide sensitive info';
this.editDoneLabel = 'DONE';
this.send = new EventEmitter();
this.feedbackService.feedback$.subscribe(function (feedback) {
_this.send.emit(feedback);
});
this.overlay = overlay;
}
/**
* @return {?}
*/
FeedbackDirective.prototype.onClick = /**
* @return {?}
*/
function () {
this.openFeedbackDialog();
};
/**
* @return {?}
*/
FeedbackDirective.prototype.openFeedbackDialog = /**
* @return {?}
*/
function () {
this.feedbackService.initScreenshotCanvas();
/** @type {?} */
var dialogRef = this.dialogRef.open(FeedbackDialogComponent, {
panelClass: 'feedbackDialog',
backdropClass: 'dialogBackDrop',
disableClose: true,
height: 'auto',
width: 'auto',
scrollStrategy: this.overlay.scrollStrategies.reposition()
});
};
/**
* @return {?}
*/
FeedbackDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.feedbackService.initialVariables = {
title: this.title,
placeholder: this.placeholder,
editTip: this.editTip,
checkboxLabel: this.checkboxLabel,
cancelLabel: this.cancelLabel,
sendLabel: this.sendLabel,
moveToolbarTip: this.moveToolbarTip,
drawRectTip: this.drawRectTip,
highlightTip: this.highlightTip,
hideTip: this.hideTip,
editDoneLabel: this.editDoneLabel
};
};
FeedbackDirective.decorators = [
{ type: Directive, args: [{ selector: '[feedback]' },] }
];
/** @nocollapse */
FeedbackDirective.ctorParameters = function () { return [
{ type: MatDialog },
{ type: FeedbackService },
{ type: Overlay }
]; };
FeedbackDirective.propDecorators = {
title: [{ type: Input }],
placeholder: [{ type: Input }],
editTip: [{ type: Input }],
checkboxLabel: [{ type: Input }],
cancelLabel: [{ type: Input }],
sendLabel: [{ type: Input }],
moveToolbarTip: [{ type: Input }],
drawRectTip: [{ type: Input }],
highlightTip: [{ type: Input }],
hideTip: [{ type: Input }],
editDoneLabel: [{ type: Input }],
send: [{ type: Output }],
onClick: [{ type: HostListener, args: ['click',] }]
};
return FeedbackDirective;
}());
export { FeedbackDirective };
if (false) {
/** @type {?} */
FeedbackDirective.prototype.overlay;
/** @type {?} */
FeedbackDirective.prototype.title;
/** @type {?} */
FeedbackDirective.prototype.placeholder;
/** @type {?} */
FeedbackDirective.prototype.editTip;
/** @type {?} */
FeedbackDirective.prototype.checkboxLabel;
/** @type {?} */
FeedbackDirective.prototype.cancelLabel;
/** @type {?} */
FeedbackDirective.prototype.sendLabel;
/** @type {?} */
FeedbackDirective.prototype.moveToolbarTip;
/** @type {?} */
FeedbackDirective.prototype.drawRectTip;
/** @type {?} */
FeedbackDirective.prototype.highlightTip;
/** @type {?} */
FeedbackDirective.prototype.hideTip;
/** @type {?} */
FeedbackDirective.prototype.editDoneLabel;
/** @type {?} */
FeedbackDirective.prototype.send;
/** @type {?} */
FeedbackDirective.prototype.dialogRef;
/** @type {?} */
FeedbackDirective.prototype.feedbackService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2suZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZmVlZGJhY2svIiwic291cmNlcyI6WyJsaWIvZmVlZGJhY2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7K0JBa0JoQixTQUFvQixFQUFVLGVBQWdDLEVBQUUsT0FBZ0I7O1FBQWhGLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7cUJBYmhFLGVBQWU7MkJBQ1QseUNBQXlDO3VCQUNyRCxpQ0FBaUM7NkJBQzNCLG9CQUFvQjsyQkFDdEIsUUFBUTt5QkFDVixNQUFNOzhCQUNELGNBQWM7MkJBQ2pCLHVFQUF1RTs0QkFDdEUsa0JBQWtCO3VCQUN2QixxQkFBcUI7NkJBQ2YsTUFBTTtvQkFDUCxJQUFJLFlBQVksRUFBVTtRQUdoRCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQ3RDLFVBQUMsUUFBUTtZQUNQLEtBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFCLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDOzs7OztJQUlsQixtQ0FBTzs7O0lBRGQ7UUFFRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztLQUMzQjs7OztJQUVNLDhDQUFrQjs7OztRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixFQUFFLENBQUM7O1FBQzVDLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQzdELFVBQVUsRUFBRSxnQkFBZ0I7WUFDNUIsYUFBYSxFQUFFLGdCQUFnQjtZQUMvQixZQUFZLEVBQUUsSUFBSTtZQUNsQixNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1NBQzNELENBQUMsQ0FBQzs7Ozs7SUFHTCxvQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDbEMsQ0FBQztLQUNIOztnQkF4REYsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQzs7OztnQkFMM0IsU0FBUztnQkFFVCxlQUFlO2dCQUNmLE9BQU87Ozt3QkFLWixLQUFLOzhCQUNMLEtBQUs7MEJBQ0wsS0FBSztnQ0FDTCxLQUFLOzhCQUNMLEtBQUs7NEJBQ0wsS0FBSztpQ0FDTCxLQUFLOzhCQUNMLEtBQUs7K0JBQ0wsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUs7dUJBQ0wsTUFBTTswQkFXTixZQUFZLFNBQUMsT0FBTzs7NEJBL0J2Qjs7U0FPYSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XHJcbmltcG9ydCB7RmVlZGJhY2tEaWFsb2dDb21wb25lbnR9IGZyb20gJy4vZmVlZGJhY2stZGlhbG9nL2ZlZWRiYWNrLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0ZlZWRiYWNrU2VydmljZX0gZnJvbSAnLi9mZWVkYmFjay5zZXJ2aWNlJztcclxuaW1wb3J0IHtPdmVybGF5fSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcblxyXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ1tmZWVkYmFja10nfSlcclxuZXhwb3J0IGNsYXNzIEZlZWRiYWNrRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXk7XHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICdTZW5kIGZlZWRiYWNrJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ0Rlc2NyaWJlIHlvdXIgaXNzdWUgb3Igc2hhcmUgeW91ciBpZGVhcyc7XHJcbiAgQElucHV0KCkgZWRpdFRpcCA9ICdDbGljayB0byBoaWdobGlnaHQgb3IgaGlkZSBpbmZvJztcclxuICBASW5wdXQoKSBjaGVja2JveExhYmVsID0gJ0luY2x1ZGUgc2NyZWVuc2hvdCc7XHJcbiAgQElucHV0KCkgY2FuY2VsTGFiZWwgPSAnQ0FOQ0VMJztcclxuICBASW5wdXQoKSBzZW5kTGFiZWwgPSAnU0VORCc7XHJcbiAgQElucHV0KCkgbW92ZVRvb2xiYXJUaXAgPSAnbW92ZSB0b29sYmFyJztcclxuICBASW5wdXQoKSBkcmF3UmVjdFRpcCA9ICdEcmF3IHVzaW5nIHllbGxvdyB0byBoaWdobGlnaHQgaXNzdWVzIG9yIGJsYWNrIHRvIGhpZGUgc2Vuc2l0aXZlIGluZm8nO1xyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodFRpcCA9ICdoaWdobGlnaHQgaXNzdWVzJztcclxuICBASW5wdXQoKSBoaWRlVGlwID0gJ2hpZGUgc2Vuc2l0aXZlIGluZm8nO1xyXG4gIEBJbnB1dCgpIGVkaXREb25lTGFiZWwgPSAnRE9ORSc7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBzZW5kID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nLCBwcml2YXRlIGZlZWRiYWNrU2VydmljZTogRmVlZGJhY2tTZXJ2aWNlLCBvdmVybGF5OiBPdmVybGF5KSB7XHJcbiAgICB0aGlzLmZlZWRiYWNrU2VydmljZS5mZWVkYmFjayQuc3Vic2NyaWJlKFxyXG4gICAgICAoZmVlZGJhY2spID0+IHtcclxuICAgICAgICB0aGlzLnNlbmQuZW1pdChmZWVkYmFjayk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLm92ZXJsYXkgPSBvdmVybGF5O1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIHB1YmxpYyBvbkNsaWNrKCkge1xyXG4gICAgdGhpcy5vcGVuRmVlZGJhY2tEaWFsb2coKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuRmVlZGJhY2tEaWFsb2coKSB7XHJcbiAgICB0aGlzLmZlZWRiYWNrU2VydmljZS5pbml0U2NyZWVuc2hvdENhbnZhcygpO1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2dSZWYub3BlbihGZWVkYmFja0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBwYW5lbENsYXNzOiAnZmVlZGJhY2tEaWFsb2cnLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiAnZGlhbG9nQmFja0Ryb3AnLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhlaWdodDogJ2F1dG8nLFxyXG4gICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mZWVkYmFja1NlcnZpY2UuaW5pdGlhbFZhcmlhYmxlcyA9IHtcclxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnBsYWNlaG9sZGVyLFxyXG4gICAgICBlZGl0VGlwOiB0aGlzLmVkaXRUaXAsXHJcbiAgICAgIGNoZWNrYm94TGFiZWw6IHRoaXMuY2hlY2tib3hMYWJlbCxcclxuICAgICAgY2FuY2VsTGFiZWw6IHRoaXMuY2FuY2VsTGFiZWwsXHJcbiAgICAgIHNlbmRMYWJlbDogdGhpcy5zZW5kTGFiZWwsXHJcbiAgICAgIG1vdmVUb29sYmFyVGlwOiB0aGlzLm1vdmVUb29sYmFyVGlwLFxyXG4gICAgICBkcmF3UmVjdFRpcDogdGhpcy5kcmF3UmVjdFRpcCxcclxuICAgICAgaGlnaGxpZ2h0VGlwOiB0aGlzLmhpZ2hsaWdodFRpcCxcclxuICAgICAgaGlkZVRpcDogdGhpcy5oaWRlVGlwLFxyXG4gICAgICBlZGl0RG9uZUxhYmVsOiB0aGlzLmVkaXREb25lTGFiZWxcclxuICAgIH07XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=