UNPKG

mat-contenteditable

Version:

Angular contenteditable directive for Angular forms and Material Design

79 lines (78 loc) 7.47 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Directive, Input } from '@angular/core'; import { MatFormFieldControl } from '@angular/material/form-field'; import { MatCkeditorDirective } from './mat-ckeditor.directive'; export class MatCkeditorBalloonDirective extends MatCkeditorDirective { /** * @param {?} show * @return {?} */ set toolbar(show) { if (this.editor && show !== this.toolbarOpen) { /** @type {?} */ const balloon = this.editor.editorInstance.plugins.get('BalloonToolbar'); if (show) { this.showToolbar(balloon); } else { balloon.hide(); this.toolbarOpen = false; } } } /** * @return {?} */ ngOnInit() { super.ngOnInit(); this.editor.ready.subscribe(editor => { /** @type {?} */ const balloon = editor.plugins.get('BalloonToolbar'); balloon.stopListening(editor.model.document.selection, 'change:range'); balloon.stopListening(balloon, '_selectionChangeDebounced'); }); this.editor.focus.subscribe(() => { if (this.toolbarOpen) { /** @type {?} */ const balloon = this.editor.editorInstance.plugins.get('BalloonToolbar'); this.showToolbar(balloon); } }); } /** * @param {?} balloon * @return {?} */ showToolbar(balloon) { if (!balloon._balloon.hasView(balloon.toolbarView)) { balloon.listenTo(this.editor.editorInstance.ui, 'update', () => { balloon._balloon.updatePosition(balloon._getBalloonPositionData()); }); balloon._balloon.add({ view: balloon.toolbarView, position: balloon._getBalloonPositionData(), balloonClassName: 'ck-toolbar-container' }); this.toolbarOpen = true; } } } MatCkeditorBalloonDirective.decorators = [ { type: Directive, args: [{ selector: '[matCkeditorBalloon]', providers: [ { provide: MatFormFieldControl, useExisting: MatCkeditorBalloonDirective }, ] },] } ]; MatCkeditorBalloonDirective.propDecorators = { toolbar: [{ type: Input }] }; if (false) { /** @type {?} */ MatCkeditorBalloonDirective.prototype.toolbarOpen; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWNrZWRpdG9yLWJhbGxvb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbWF0LWNvbnRlbnRlZGl0YWJsZS8iLCJzb3VyY2VzIjpbImxpYi9tYXQtY2tlZGl0b3ItYmFsbG9vbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBUWhFLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxvQkFBb0I7Ozs7O0lBRW5FLElBQ0ksT0FBTyxDQUFDLElBQWE7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFOztZQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDekUsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMzQjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUI7U0FDRjtLQUNGOzs7O0lBR0QsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7O1lBQ25DLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDckQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDdkUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztTQUM3RCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTs7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMzQjtTQUNGLENBQUMsQ0FBQztLQUNKOzs7OztJQUVPLFdBQVcsQ0FBQyxPQUFPO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDN0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQzthQUNwRSxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUN6QixRQUFRLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixFQUFFO2dCQUMzQyxnQkFBZ0IsRUFBRSxzQkFBc0I7YUFDekMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7Ozs7WUFoREosU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFNBQVMsRUFBRTtvQkFDVCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUU7aUJBQzNFO2FBQ0Y7OztzQkFHRSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5pbXBvcnQgeyBNYXRDa2VkaXRvckRpcmVjdGl2ZSB9IGZyb20gJy4vbWF0LWNrZWRpdG9yLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXRDa2VkaXRvckJhbGxvb25dJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTWF0Q2tlZGl0b3JCYWxsb29uRGlyZWN0aXZlIH0sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWF0Q2tlZGl0b3JCYWxsb29uRGlyZWN0aXZlIGV4dGVuZHMgTWF0Q2tlZGl0b3JEaXJlY3RpdmUge1xuXG4gIEBJbnB1dCgpXG4gIHNldCB0b29sYmFyKHNob3c6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5lZGl0b3IgJiYgc2hvdyAhPT0gdGhpcy50b29sYmFyT3Blbikge1xuICAgICAgY29uc3QgYmFsbG9vbiA9IHRoaXMuZWRpdG9yLmVkaXRvckluc3RhbmNlLnBsdWdpbnMuZ2V0KCdCYWxsb29uVG9vbGJhcicpO1xuICAgICAgaWYgKHNob3cpIHtcbiAgICAgICAgdGhpcy5zaG93VG9vbGJhcihiYWxsb29uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhbGxvb24uaGlkZSgpO1xuICAgICAgICB0aGlzLnRvb2xiYXJPcGVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHByaXZhdGUgdG9vbGJhck9wZW46IGJvb2xlYW47XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmVkaXRvci5yZWFkeS5zdWJzY3JpYmUoZWRpdG9yID0+IHtcbiAgICAgIGNvbnN0IGJhbGxvb24gPSBlZGl0b3IucGx1Z2lucy5nZXQoJ0JhbGxvb25Ub29sYmFyJyk7XG4gICAgICBiYWxsb29uLnN0b3BMaXN0ZW5pbmcoZWRpdG9yLm1vZGVsLmRvY3VtZW50LnNlbGVjdGlvbiwgJ2NoYW5nZTpyYW5nZScpO1xuICAgICAgYmFsbG9vbi5zdG9wTGlzdGVuaW5nKGJhbGxvb24sICdfc2VsZWN0aW9uQ2hhbmdlRGVib3VuY2VkJyk7XG4gICAgfSk7XG4gICAgdGhpcy5lZGl0b3IuZm9jdXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRvb2xiYXJPcGVuKSB7XG4gICAgICAgIGNvbnN0IGJhbGxvb24gPSB0aGlzLmVkaXRvci5lZGl0b3JJbnN0YW5jZS5wbHVnaW5zLmdldCgnQmFsbG9vblRvb2xiYXInKTtcbiAgICAgICAgdGhpcy5zaG93VG9vbGJhcihiYWxsb29uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1Rvb2xiYXIoYmFsbG9vbikge1xuICAgIGlmICghYmFsbG9vbi5fYmFsbG9vbi5oYXNWaWV3KGJhbGxvb24udG9vbGJhclZpZXcpKSB7XG4gICAgICBiYWxsb29uLmxpc3RlblRvKHRoaXMuZWRpdG9yLmVkaXRvckluc3RhbmNlLnVpLCAndXBkYXRlJywgKCkgPT4ge1xuICAgICAgICBiYWxsb29uLl9iYWxsb29uLnVwZGF0ZVBvc2l0aW9uKGJhbGxvb24uX2dldEJhbGxvb25Qb3NpdGlvbkRhdGEoKSk7XG4gICAgICB9KTtcbiAgICAgIGJhbGxvb24uX2JhbGxvb24uYWRkKHtcbiAgICAgICAgdmlldzogYmFsbG9vbi50b29sYmFyVmlldyxcbiAgICAgICAgcG9zaXRpb246IGJhbGxvb24uX2dldEJhbGxvb25Qb3NpdGlvbkRhdGEoKSxcbiAgICAgICAgYmFsbG9vbkNsYXNzTmFtZTogJ2NrLXRvb2xiYXItY29udGFpbmVyJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnRvb2xiYXJPcGVuID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxufVxuIl19