Support both `_actions` and `actions` for delegating
This commit is contained in:
parent
95c8d66fe0
commit
beac81d0ee
|
@ -1,6 +1,7 @@
|
||||||
import computed from 'ember-addons/ember-computed-decorators';
|
import computed from 'ember-addons/ember-computed-decorators';
|
||||||
|
import DelegatedActions from 'discourse/mixins/delegated-actions';
|
||||||
|
|
||||||
export default Ember.Component.extend({
|
export default Ember.Component.extend(DelegatedActions, {
|
||||||
elementId: 'topic-footer-buttons',
|
elementId: 'topic-footer-buttons',
|
||||||
|
|
||||||
// Allow us to extend it
|
// Allow us to extend it
|
||||||
|
@ -8,15 +9,7 @@ export default Ember.Component.extend({
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
this._super();
|
this._super();
|
||||||
|
this.delegateAll(this.get('topicDelegated'));
|
||||||
this._actions = this._actions || {};
|
|
||||||
|
|
||||||
(this.get('topicDelegated') || []).forEach(m => {
|
|
||||||
this._actions[m] = function() {
|
|
||||||
this.sendAction(m);
|
|
||||||
};
|
|
||||||
this.set(m, m);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
@computed('topic.details.can_invite_to')
|
@computed('topic.details.can_invite_to')
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
export const TARGET_NAME = (Ember.VERSION[0] === "2") ? 'actions' : '_actions';
|
||||||
|
|
||||||
|
export default Ember.Mixin.create({
|
||||||
|
|
||||||
|
delegateAll(actionNames) {
|
||||||
|
actionNames = actionNames || [];
|
||||||
|
|
||||||
|
this[TARGET_NAME] = this[TARGET_NAME] || {};
|
||||||
|
|
||||||
|
actionNames.forEach(m => {
|
||||||
|
this[TARGET_NAME][m] = function() { this.sendAction(m); };
|
||||||
|
this.set(m, m);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
|
@ -1,6 +1,11 @@
|
||||||
import { WidgetClickHook, WidgetClickOutsideHook, WidgetKeyUpHook, WidgetKeyDownHook, WidgetDragHook } from 'discourse/widgets/hooks';
|
import { WidgetClickHook,
|
||||||
|
WidgetClickOutsideHook,
|
||||||
|
WidgetKeyUpHook,
|
||||||
|
WidgetKeyDownHook,
|
||||||
|
WidgetDragHook } from 'discourse/widgets/hooks';
|
||||||
import { h } from 'virtual-dom';
|
import { h } from 'virtual-dom';
|
||||||
import DecoratorHelper from 'discourse/widgets/decorator-helper';
|
import DecoratorHelper from 'discourse/widgets/decorator-helper';
|
||||||
|
import { TARGET_NAME } from 'discourse/mixins/delegated-actions';
|
||||||
|
|
||||||
function emptyContent() { }
|
function emptyContent() { }
|
||||||
|
|
||||||
|
@ -266,7 +271,7 @@ export default class Widget {
|
||||||
|
|
||||||
if (target) {
|
if (target) {
|
||||||
// TODO: Use ember closure actions
|
// TODO: Use ember closure actions
|
||||||
const actions = target._actions || target.actionHooks || {};
|
const actions = target[TARGET_NAME] || target.actionHooks || {};
|
||||||
const method = actions[actionName];
|
const method = actions[actionName];
|
||||||
if (method) {
|
if (method) {
|
||||||
promise = method.call(target, param);
|
promise = method.call(target, param);
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
//= require ./discourse/lib/formatter
|
//= require ./discourse/lib/formatter
|
||||||
//= require ./discourse/lib/eyeline
|
//= require ./discourse/lib/eyeline
|
||||||
//= require ./discourse/mixins/scrolling
|
//= require ./discourse/mixins/scrolling
|
||||||
|
//= require ./discourse/mixins/scrolling
|
||||||
//= require ./discourse/models/model
|
//= require ./discourse/models/model
|
||||||
//= require ./discourse/models/rest
|
//= require ./discourse/models/rest
|
||||||
//= require ./discourse/models/badge-grouping
|
//= require ./discourse/models/badge-grouping
|
||||||
|
|
Loading…
Reference in New Issue