UNPKG

strong-arc

Version:

A visual suite for the StrongLoop API Platform

54 lines (53 loc) 1.63 kB
/** * Binds a TinyMCE widget to <textarea> elements. */ angular.module('ui.directives').directive('uiTinymce', ['ui.config', function (uiConfig) { uiConfig.tinymce = uiConfig.tinymce || {}; return { require: 'ngModel', link: function (scope, elm, attrs, ngModel) { var expression, options = { // Update model on button click onchange_callback: function (inst) { if (inst.isDirty()) { inst.save(); ngModel.$setViewValue(elm.val()); if (!scope.$$phase) scope.$apply(); } }, // Update model on keypress handle_event_callback: function (e) { if (this.isDirty()) { this.save(); ngModel.$setViewValue(elm.val()); if (!scope.$$phase) scope.$apply(); } return true; // Continue handling }, // Update model when calling setContent (such as from the source editor popup) setup: function (ed) { ed.onSetContent.add(function (ed, o) { if (ed.isDirty()) { ed.save(); ngModel.$setViewValue(elm.val()); if (!scope.$$phase) scope.$apply(); } }); } }; if (attrs.uiTinymce) { expression = scope.$eval(attrs.uiTinymce); } else { expression = {}; } angular.extend(options, uiConfig.tinymce, expression); setTimeout(function () { elm.tinymce(options); }); } }; }]);