clickobserver.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /**
  2. * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* globals console, document */
  6. import Document from '../../../src/view/document';
  7. import DomEventObserver from '../../../src/view/observer/domeventobserver';
  8. import createViewRoot from '../_utils/createroot';
  9. const viewDocument = new Document();
  10. class ClickObserver1 extends DomEventObserver {
  11. constructor( viewDocument ) {
  12. super( viewDocument );
  13. this.id = 1;
  14. this.domEventType = 'click';
  15. }
  16. onDomEvent( domEvt ) {
  17. this.fire( 'click', domEvt, { id: this.id } );
  18. }
  19. }
  20. class ClickObserver2 extends DomEventObserver {
  21. constructor( viewDocument ) {
  22. super( viewDocument );
  23. this.id = 2;
  24. this.domEventType = 'click';
  25. }
  26. onDomEvent( domEvt ) {
  27. this.fire( 'click', domEvt, { id: this.id } );
  28. }
  29. }
  30. const observer1 = new ClickObserver1( viewDocument );
  31. viewDocument.on( 'click', ( evt, evtData ) => console.log( 'click', evtData.id, evtData.domTarget.id ) );
  32. document.getElementById( 'enable1' ).addEventListener( 'click', () => observer1.enable() );
  33. document.getElementById( 'disable1' ).addEventListener( 'click', () => observer1.disable() );
  34. // Random order.
  35. viewDocument.addObserver( ClickObserver1 );
  36. createViewRoot( viewDocument, 'div', 'clickerA' );
  37. viewDocument.attachDomRoot( document.getElementById( 'clickerA' ), 'clickerA' );
  38. viewDocument.addObserver( ClickObserver2 );
  39. createViewRoot( viewDocument, 'div', 'clickerB' );
  40. viewDocument.attachDomRoot( document.getElementById( 'clickerB' ), 'clickerB' );