editableview.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. 'use strict';
  6. import View from '../ui/view.js';
  7. import CKEditorError from '../ckeditorerror.js';
  8. /**
  9. * @class core.editable.EditableView
  10. * @extends core.ui.View
  11. */
  12. export default class EditableView extends View {
  13. /**
  14. * The element which is the main editable element (usually the one with `contentEditable="true"`).
  15. *
  16. * @member core.editable.EditableView#editableElement
  17. * @readonly
  18. * @type {HTMLElement}
  19. */
  20. setEditableElement( editableElement ) {
  21. const bind = this.attributeBinder;
  22. if ( this.editableElement ) {
  23. throw new CKEditorError(
  24. 'editableview-cannot-override-editableelement: The editableElement cannot be overriden.'
  25. );
  26. }
  27. this.editableElement = editableElement;
  28. this.applyTemplateToElement( editableElement, {
  29. on: {
  30. focus: () => {
  31. this.model.isFocused = true;
  32. },
  33. blur: () => {
  34. this.model.isFocused = false;
  35. }
  36. },
  37. attributes: {
  38. contentEditable: bind.to( 'isEditable' )
  39. }
  40. } );
  41. }
  42. }