From 8b7e7c0afdefea1c8fd0280413fee12f9d317519 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Mon, 18 May 2015 15:27:39 +0930 Subject: [PATCH] Clicking on an index nav item should always refresh the discussion list --- .../core/js/forum/src/components/index-nav-item.js | 10 ++++++++++ framework/core/js/forum/src/components/index-page.js | 4 ++-- framework/core/js/lib/component.js | 2 +- framework/core/js/lib/components/nav-item.js | 6 +++++- 4 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 framework/core/js/forum/src/components/index-nav-item.js diff --git a/framework/core/js/forum/src/components/index-nav-item.js b/framework/core/js/forum/src/components/index-nav-item.js new file mode 100644 index 000000000..07c76ce58 --- /dev/null +++ b/framework/core/js/forum/src/components/index-nav-item.js @@ -0,0 +1,10 @@ +import NavItem from 'flarum/components/nav-item' + +export default class IndexNavItem extends NavItem { + static props(props) { + props.onclick = props.onclick || function() { + app.cache.discussionList = null; + m.redraw.strategy('none'); + }; + } +} diff --git a/framework/core/js/forum/src/components/index-page.js b/framework/core/js/forum/src/components/index-page.js index 99f8897cb..1ac471c69 100644 --- a/framework/core/js/forum/src/components/index-page.js +++ b/framework/core/js/forum/src/components/index-page.js @@ -12,7 +12,7 @@ import DiscussionPage from 'flarum/components/discussion-page'; import SelectInput from 'flarum/components/select-input'; import ActionButton from 'flarum/components/action-button'; -import NavItem from 'flarum/components/nav-item'; +import IndexNavItem from 'flarum/components/index-nav-item'; import LoadingIndicator from 'flarum/components/loading-indicator'; import DropdownSelect from 'flarum/components/dropdown-select'; @@ -204,7 +204,7 @@ export default class IndexPage extends Component { var params = {sort: m.route.param('sort')}; items.add('allDiscussions', - NavItem.component({ + IndexNavItem.component({ href: app.route('index', params), label: 'All Discussions', icon: 'comments-o' diff --git a/framework/core/js/lib/component.js b/framework/core/js/lib/component.js index 0c41e2051..8a2d75048 100644 --- a/framework/core/js/lib/component.js +++ b/framework/core/js/lib/component.js @@ -32,7 +32,7 @@ export default class Component { static component(props) { props = props || {}; if (this.props) { - props = this.props(props); + this.props(props); } var view = function(component) { component.props = props; diff --git a/framework/core/js/lib/components/nav-item.js b/framework/core/js/lib/components/nav-item.js index 617571bd5..594e29516 100644 --- a/framework/core/js/lib/components/nav-item.js +++ b/framework/core/js/lib/components/nav-item.js @@ -4,7 +4,11 @@ import icon from 'flarum/helpers/icon' export default class NavItem extends Component { view() { var active = this.constructor.active(this.props); - return m('li'+(active ? '.active' : ''), m('a', {href: this.props.href, config: m.route}, [ + return m('li'+(active ? '.active' : ''), m('a', { + href: this.props.href, + onclick: this.props.onclick, + config: m.route + }, [ icon(this.props.icon+' icon'), this.props.label, ' ', this.props.badge ? m('span.count', this.props.badge) : ''