mat-contenteditable
Version:
Angular contenteditable directive for Angular forms and Material Design
61 lines • 7.45 kB
JavaScript
var MatCkeditorBalloonDirective_1;
import { __decorate, __metadata } from "tslib";
import { Directive, Input } from '@angular/core';
import { MatFormFieldControl } from '@angular/material/form-field';
import { MatCkeditorDirective } from './mat-ckeditor.directive';
let MatCkeditorBalloonDirective = MatCkeditorBalloonDirective_1 = class MatCkeditorBalloonDirective extends MatCkeditorDirective {
set toolbar(show) {
if (this.editor && show !== this.toolbarOpen) {
const balloon = this.editor.editorInstance.plugins.get('BalloonToolbar');
if (show) {
this.showToolbar(balloon);
}
else {
balloon.hide();
this.toolbarOpen = false;
}
}
}
ngOnInit() {
super.ngOnInit();
this.editor.ready.subscribe(editor => {
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) {
const balloon = this.editor.editorInstance.plugins.get('BalloonToolbar');
this.showToolbar(balloon);
}
});
}
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;
}
}
};
__decorate([
Input(),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [Boolean])
], MatCkeditorBalloonDirective.prototype, "toolbar", null);
MatCkeditorBalloonDirective = MatCkeditorBalloonDirective_1 = __decorate([
Directive({
selector: '[matCkeditorBalloon]',
providers: [
{ provide: MatFormFieldControl, useExisting: MatCkeditorBalloonDirective_1 },
]
})
], MatCkeditorBalloonDirective);
export { MatCkeditorBalloonDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWNrZWRpdG9yLWJhbGxvb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbWF0LWNvbnRlbnRlZGl0YWJsZS8iLCJzb3VyY2VzIjpbImxpYi9tYXQtY2tlZGl0b3ItYmFsbG9vbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVFoRSxJQUFhLDJCQUEyQixtQ0FBeEMsTUFBYSwyQkFBNEIsU0FBUSxvQkFBb0I7SUFHbkUsSUFBSSxPQUFPLENBQUMsSUFBYTtRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3pFLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBR0QsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUN2RSxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUFPO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDN0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztZQUNyRSxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUNuQixJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVc7Z0JBQ3pCLFFBQVEsRUFBRSxPQUFPLENBQUMsdUJBQXVCLEVBQUU7Z0JBQzNDLGdCQUFnQixFQUFFLHNCQUFzQjthQUN6QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtJQUNILENBQUM7Q0FFRixDQUFBO0FBMUNDO0lBREMsS0FBSyxFQUFFOzs7MERBV1A7QUFiVSwyQkFBMkI7SUFOdkMsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxTQUFTLEVBQUU7WUFDVCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsNkJBQTJCLEVBQUU7U0FDM0U7S0FDRixDQUFDO0dBQ1csMkJBQTJCLENBNkN2QztTQTdDWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbmltcG9ydCB7IE1hdENrZWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi9tYXQtY2tlZGl0b3IuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW21hdENrZWRpdG9yQmFsbG9vbl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNYXRDa2VkaXRvckJhbGxvb25EaXJlY3RpdmUgfSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNYXRDa2VkaXRvckJhbGxvb25EaXJlY3RpdmUgZXh0ZW5kcyBNYXRDa2VkaXRvckRpcmVjdGl2ZSB7XG5cbiAgQElucHV0KClcbiAgc2V0IHRvb2xiYXIoc2hvdzogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmVkaXRvciAmJiBzaG93ICE9PSB0aGlzLnRvb2xiYXJPcGVuKSB7XG4gICAgICBjb25zdCBiYWxsb29uID0gdGhpcy5lZGl0b3IuZWRpdG9ySW5zdGFuY2UucGx1Z2lucy5nZXQoJ0JhbGxvb25Ub29sYmFyJyk7XG4gICAgICBpZiAoc2hvdykge1xuICAgICAgICB0aGlzLnNob3dUb29sYmFyKGJhbGxvb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmFsbG9vbi5oaWRlKCk7XG4gICAgICAgIHRoaXMudG9vbGJhck9wZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSB0b29sYmFyT3BlbjogYm9vbGVhbjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuZWRpdG9yLnJlYWR5LnN1YnNjcmliZShlZGl0b3IgPT4ge1xuICAgICAgY29uc3QgYmFsbG9vbiA9IGVkaXRvci5wbHVnaW5zLmdldCgnQmFsbG9vblRvb2xiYXInKTtcbiAgICAgIGJhbGxvb24uc3RvcExpc3RlbmluZyhlZGl0b3IubW9kZWwuZG9jdW1lbnQuc2VsZWN0aW9uLCAnY2hhbmdlOnJhbmdlJyk7XG4gICAgICBiYWxsb29uLnN0b3BMaXN0ZW5pbmcoYmFsbG9vbiwgJ19zZWxlY3Rpb25DaGFuZ2VEZWJvdW5jZWQnKTtcbiAgICB9KTtcbiAgICB0aGlzLmVkaXRvci5mb2N1cy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudG9vbGJhck9wZW4pIHtcbiAgICAgICAgY29uc3QgYmFsbG9vbiA9IHRoaXMuZWRpdG9yLmVkaXRvckluc3RhbmNlLnBsdWdpbnMuZ2V0KCdCYWxsb29uVG9vbGJhcicpO1xuICAgICAgICB0aGlzLnNob3dUb29sYmFyKGJhbGxvb24pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93VG9vbGJhcihiYWxsb29uKSB7XG4gICAgaWYgKCFiYWxsb29uLl9iYWxsb29uLmhhc1ZpZXcoYmFsbG9vbi50b29sYmFyVmlldykpIHtcbiAgICAgIGJhbGxvb24ubGlzdGVuVG8odGhpcy5lZGl0b3IuZWRpdG9ySW5zdGFuY2UudWksICd1cGRhdGUnLCAoKSA9PiB7XG4gICAgICAgIGJhbGxvb24uX2JhbGxvb24udXBkYXRlUG9zaXRpb24oYmFsbG9vbi5fZ2V0QmFsbG9vblBvc2l0aW9uRGF0YSgpKTtcbiAgICAgIH0pO1xuICAgICAgYmFsbG9vbi5fYmFsbG9vbi5hZGQoe1xuICAgICAgICB2aWV3OiBiYWxsb29uLnRvb2xiYXJWaWV3LFxuICAgICAgICBwb3NpdGlvbjogYmFsbG9vbi5fZ2V0QmFsbG9vblBvc2l0aW9uRGF0YSgpLFxuICAgICAgICBiYWxsb29uQ2xhc3NOYW1lOiAnY2stdG9vbGJhci1jb250YWluZXInXG4gICAgICB9KTtcbiAgICAgIHRoaXMudG9vbGJhck9wZW4gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=