import { Component, Input, Output, EventEmitter, OnChanges, OnDestroy } from '@angular/core'; import { RdLib } from '../../base/rdLib'; import { RdComponent } from '../../base/rdComponent'; import { ScriptLoaderService } from "../../library/script-loader.service"; declare const tinymce: any; @Component({ selector: 'rd-text-editor', template: `
` }) export class RdTextEditor extends RdComponent implements OnChanges, OnDestroy { constructor(private script: ScriptLoaderService) { super(); this.script.load(['./assets/js/tinymce/tinymce.min.js']).then(() => { tinymce.init({ selector: 'textarea', entity_encoding: "raw", height: "29em", menubar: true, plugins: [ 'advlist autolink lists link image charmap print preview anchor', 'searchreplace visualblocks code fullscreen hr', 'insertdatetime media table contextmenu paste', 'wordcount' ], toolbar: 'bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image code', table_toolbar: "tableprops cellprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol", powerpaste_allow_local_images: true, powerpaste_word_import: 'prompt', powerpaste_html_import: 'prompt', // content_css: [ // '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i', // '//www.tinymce.com/css/codepen.min.css' // ], setup: editor => { this.editor = editor; editor.on('init', () => { if (this.model) this.editor.setContent(this.model, { format: 'raw' }); }); // editor.on('change', (e) => { // if (editor.getContent()) this.contentEvent.emit(editor.getContent()); // else RdLib.screenOperations.toastr.warning(this.translate('İçerik Boş Bırakılamaz')) // }); } }); if (this.lang != "en_US") tinymce.overrideDefaults({ language: this.lang }); }); } @Input("rd-model") model; @Input("rd-lang") lang = "en_US"; @Output("rd-content") contentEvent: EventEmitter = new EventEmitter(); editor; btnText = RdLib.localization.translateEn("Save"); ngOnChanges() { if (!this.model) { this.editor ? this.editor.setContent("") : null; return; } if (this.editor) this.editor.setContent(this.model); else tinymce.init({}); } ngOnDestroy() { tinymce.remove(this.editor); } }