import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; import { FormControl } from "@angular/forms"; import { AngularEditorConfig } from "@kolkov/angular-editor"; @Component({ selector: 'rich-text-editor-component', template: `
{{(placeholder? (placeholder | translate) : '') + (required ? ' *': '')}}
`, styleUrls: ['./rich-text-editor.component.scss'], // TODO: performance issue with this control. changed the change detection strategy in case it improves changeDetection: ChangeDetectionStrategy.OnPush }) export class RichTextEditorComponent { @Input() form: FormControl; @Input() id: string = "editor1"; @Input() placeholder: string = "Enter text"; @Input() required: boolean = false; @Input() wrapperClasses: string = ""; @Input() editable: boolean = true; editorConfig: AngularEditorConfig = { editable: this.editable, spellcheck: true, height: 'auto', minHeight: '0', maxHeight: 'auto', width: '100%', minWidth: '0', translate: 'yes', enableToolbar: true, showToolbar: true, placeholder: '', defaultParagraphSeparator: '', defaultFontName: '', defaultFontSize: '', sanitize: true, toolbarPosition: 'top', customClasses: [ { name: 'H1 header', class: '', tag: 'h1' }, { name: 'H2 header', class: '', tag: 'h2' }, { name: 'H3 header', class: '', tag: 'h3' }, { name: 'H4 header', class: '', tag: 'h4' }, { name: 'H5 header', class: '', tag: 'h5' }, { name: 'H6 header', class: '', tag: 'h6' } ], toolbarHiddenButtons: [ [ 'heading', 'fontName' ], [ 'fontSize', // 'backgroundColor', // 'customClasses', 'insertImage', 'insertVideo', // 'removeFormat', 'toggleEditorMode' ] ] }; ngOnInit() { console.log('ngOnInit: '); } ngAfterContentInit() { this.editorConfig.editable = this.editable; } pasteWithoutFormatting($event) { $event.preventDefault(); const text = $event.clipboardData.getData("text/plain"); window.document.execCommand("insertText", false, text); } }