diff --git a/packages/ember-glimmer/tests/integration/event-dispatcher-test.js b/packages/ember-glimmer/tests/integration/event-dispatcher-test.js index 7c100131a5d..5d478671e92 100644 --- a/packages/ember-glimmer/tests/integration/event-dispatcher-test.js +++ b/packages/ember-glimmer/tests/integration/event-dispatcher-test.js @@ -6,7 +6,6 @@ import { run } from 'ember-metal'; import { EMBER_IMPROVED_INSTRUMENTATION } from 'ember/features'; -import { EventDispatcher } from 'ember-views'; let canDataTransfer = !!document.createEvent('HTMLEvents').dataTransfer; @@ -90,33 +89,6 @@ moduleFor('EventDispatcher', class extends RenderingTest { assert.notOk(hasReceivedEvent, 'change event has not been received'); } - ['@test dispatches to the nearest event manager'](assert) { - let receivedEvent; - - this.registerComponent('x-foo', { - ComponentClass: Component.extend({ - click() { - assert.notOk(true, 'should not trigger `click` on component'); - }, - - eventManager: { - click(event) { - receivedEvent = event; - } - } - }), - - template: `` - }); - - - expectDeprecation(/`eventManager` has been deprecated/); - this.render(`{{x-foo}}`); - - this.runTask(() => this.$('#is-done').trigger('click')); - assert.strictEqual(receivedEvent.target, this.$('#is-done')[0]); - } - ['@test event handlers are wrapped in a run loop'](assert) { this.registerComponent('x-foo', { ComponentClass: Component.extend({ @@ -160,20 +132,6 @@ moduleFor('EventDispatcher#setup', class extends RenderingTest { this.$('div').trigger('myevent'); } - ['@test eventManager is deprecated']() { - this.registerComponent('x-foo', { - ComponentClass: Component.extend({ - eventManager: { - myEvent() {} - } - }), - template: `
Hello!
` - }); - - expectDeprecation(/`eventManager` has been deprecated/); - this.render(`{{x-foo}}`); - } - ['@test a rootElement can be specified'](assert) { this.element.innerHTML = ''; // this.$().append(''); @@ -217,27 +175,6 @@ moduleFor('EventDispatcher#setup', class extends RenderingTest { } }); -moduleFor('custom EventDispatcher subclass with #setup', class extends RenderingTest { - constructor() { - super(); - - let dispatcher = this.owner.lookup('event_dispatcher:main'); - run(dispatcher, 'destroy'); - this.owner.__container__.reset('event_dispatcher:main'); - this.owner.unregister('event_dispatcher:main'); - } - - ['@test canDispatchToEventManager is deprecated in EventDispatcher']() { - let MyDispatcher = EventDispatcher.extend({ - canDispatchToEventManager: null - }); - this.owner.register('event_dispatcher:main', MyDispatcher); - - expectDeprecation(/`canDispatchToEventManager` has been deprecated/); - this.owner.lookup('event_dispatcher:main'); - } -}); - if (EMBER_IMPROVED_INSTRUMENTATION) { moduleFor('EventDispatcher - Instrumentation', class extends RenderingTest { teardown() { diff --git a/packages/ember-views/lib/mixins/view_support.js b/packages/ember-views/lib/mixins/view_support.js index bf561484960..9c36f30a80b 100644 --- a/packages/ember-views/lib/mixins/view_support.js +++ b/packages/ember-views/lib/mixins/view_support.js @@ -1,4 +1,4 @@ -import { guidFor, getOwner } from 'ember-utils'; +import { guidFor } from 'ember-utils'; import { descriptor, descriptorFor, Mixin } from 'ember-metal'; import { assert, deprecate } from 'ember-debug'; import { environment, ENV } from 'ember-environment'; @@ -415,27 +415,6 @@ export default Mixin.create({ this.elementId = guidFor(this); } - // if we find an `eventManager` property, deopt the - // `EventDispatcher`'s `canDispatchToEventManager` property - // if `null` - if (this.eventManager) { - let owner = getOwner(this); - let dispatcher = owner && owner.lookup('event_dispatcher:main'); - - deprecate( - `\`eventManager\` has been deprecated in ${this}.`, - false, - { - id: 'ember-views.event-dispatcher.canDispatchToEventManager', - until: '2.17.0' - } - ); - - if (dispatcher && !('canDispatchToEventManager' in dispatcher)) { - dispatcher.canDispatchToEventManager = true; - } - } - if (environment._ENABLE_DID_INIT_ATTRS_SUPPORT) { deprecate( `[DEPRECATED] didInitAttrs called in ${this.toString()}.`, diff --git a/packages/ember-views/lib/system/event_dispatcher.js b/packages/ember-views/lib/system/event_dispatcher.js index 165e067ea2a..16bc2c21ec2 100644 --- a/packages/ember-views/lib/system/event_dispatcher.js +++ b/packages/ember-views/lib/system/event_dispatcher.js @@ -4,8 +4,7 @@ import { assign, getOwner } from 'ember-utils'; import { assert } from 'ember-debug'; -import { get, set, isNone, run } from 'ember-metal'; -import { deprecate } from 'ember-debug'; +import { get, set, isNone } from 'ember-metal'; import { Object as EmberObject } from 'ember-runtime'; import jQuery from './jquery'; import ActionManager from './action_manager'; @@ -103,36 +102,6 @@ export default EmberObject.extend({ */ rootElement: 'body', - /** - It enables events to be dispatched to the view's `eventManager.` When present, - this object takes precedence over handling of events on the view itself. - - Note that most Ember applications do not use this feature. If your app also - does not use it, consider setting this property to false to gain some performance - improvement by allowing the EventDispatcher to skip the search for the - `eventManager` on the view tree. - - ```javascript - let EventDispatcher = Em.EventDispatcher.extend({ - events: { - click : 'click', - focusin : 'focusIn', - focusout : 'focusOut', - change : 'change' - }, - canDispatchToEventManager: false - }); - container.register('event_dispatcher:main', EventDispatcher); - ``` - - @property canDispatchToEventManager - @type boolean - @default false - @since 1.7.0 - @deprecated - @private - */ - init() { this._super(); @@ -143,15 +112,6 @@ export default EmberObject.extend({ return environment.isInteractive; })()); - deprecate( - `\`canDispatchToEventManager\` has been deprecated in ${this}.`, - !('canDispatchToEventManager' in this), - { - id: 'ember-views.event-dispatcher.canDispatchToEventManager', - until: '2.17.0' - } - ); - this._eventHandlers = Object.create(null); }, @@ -239,23 +199,17 @@ export default EmberObject.extend({ @param {Object} viewRegistry */ setupHandler(rootElement, event, eventName, viewRegistry) { - let self = this; - if (eventName === null) { return; } if (HAS_JQUERY) { - rootElement.on(`${event}.ember`, '.ember-view', function(evt, triggeringManager) { + rootElement.on(`${event}.ember`, '.ember-view', function(evt) { let view = viewRegistry[this.id]; let result = true; - let manager = self.canDispatchToEventManager ? self._findNearestEventManager(view, eventName) : null; - - if (manager && manager !== triggeringManager) { - result = self._dispatchEvent(manager, evt, eventName, view); - } else if (view) { - result = self._bubbleEvent(view, evt, eventName); + if (view) { + result = view.handleEvent(eventName, evt); } return result; @@ -291,7 +245,7 @@ export default EmberObject.extend({ let result = true; if (view) { - result = this._bubbleEvent(view, event, eventName); + result = view.handleEvent(eventName, event); } return result; @@ -367,38 +321,6 @@ export default EmberObject.extend({ return viewRegistry; }, - _findNearestEventManager(view, eventName) { - let manager = null; - - while (view) { - manager = get(view, 'eventManager'); - if (manager && manager[eventName]) { break; } - - view = get(view, 'parentView'); - } - - return manager; - }, - - _dispatchEvent(object, evt, eventName, view) { - let result = true; - - let handler = object[eventName]; - if (typeof handler === 'function') { - result = run(object, handler, evt, view); - // Do not preventDefault in eventManagers. - evt.stopPropagation(); - } else { - result = this._bubbleEvent(view, evt, eventName); - } - - return result; - }, - - _bubbleEvent(view, evt, eventName) { - return view.handleEvent(eventName, evt); - }, - destroy() { let rootElementSelector = get(this, 'rootElement'); let rootElement;