From f61b5201d17041c98a16b825de3151cb636c89c6 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov <38059171+askvortsov1@users.noreply.github.com> Date: Wed, 23 Sep 2020 23:00:15 -0400 Subject: [PATCH] Mithril 2 Update (#93) Update for Mithril 2 - TagLinkButtons now have children passed in, even though those children are not directly shown. This is because those children are used if that TagLinkButton is the active element in a dropdown. - Since `m.redraw.strategy('all')` is no longer an option, we use keys to force a full-page rerender after rearranging tag order in the admin dashboard --- extensions/tags/js/src/admin/addTagsPane.js | 7 +- .../js/src/admin/addTagsPermissionScope.js | 17 +- .../js/src/admin/components/EditTagModal.js | 31 ++-- .../src/admin/components/TagSettingsModal.js | 5 +- .../tags/js/src/admin/components/TagsPage.js | 151 +++++++++--------- .../tags/js/src/common/helpers/tagLabel.js | 3 +- .../tags/js/src/forum/addTagComposer.js | 20 ++- extensions/tags/js/src/forum/addTagControl.js | 8 +- extensions/tags/js/src/forum/addTagFilter.js | 10 +- extensions/tags/js/src/forum/addTagLabels.js | 6 +- extensions/tags/js/src/forum/addTagList.js | 25 +-- .../forum/components/DiscussionTaggedPost.js | 32 ++-- .../forum/components/TagDiscussionModal.js | 43 +++-- .../tags/js/src/forum/components/TagHero.js | 2 +- .../js/src/forum/components/TagLinkButton.js | 28 ++-- .../tags/js/src/forum/components/TagsPage.js | 22 ++- extensions/tags/js/src/forum/index.js | 6 +- 17 files changed, 207 insertions(+), 209 deletions(-) diff --git a/extensions/tags/js/src/admin/addTagsPane.js b/extensions/tags/js/src/admin/addTagsPane.js index cb7769771..12bf1c606 100644 --- a/extensions/tags/js/src/admin/addTagsPane.js +++ b/extensions/tags/js/src/admin/addTagsPane.js @@ -5,16 +5,15 @@ import AdminLinkButton from 'flarum/components/AdminLinkButton'; import TagsPage from './components/TagsPage'; export default function() { - app.routes.tags = {path: '/tags', component: TagsPage.component()}; + app.routes.tags = {path: '/tags', component: TagsPage}; - app.extensionSettings['flarum-tags'] = () => m.route(app.route('tags')); + app.extensionSettings['flarum-tags'] = () => m.route.set(app.route('tags')); extend(AdminNav.prototype, 'items', items => { items.add('tags', AdminLinkButton.component({ href: app.route('tags'), icon: 'fas fa-tags', - children: app.translator.trans('flarum-tags.admin.nav.tags_button'), description: app.translator.trans('flarum-tags.admin.nav.tags_text') - })); + }, app.translator.trans('flarum-tags.admin.nav.tags_button'))); }); } diff --git a/extensions/tags/js/src/admin/addTagsPermissionScope.js b/extensions/tags/js/src/admin/addTagsPermissionScope.js index 55f9c480d..f6593d6f3 100644 --- a/extensions/tags/js/src/admin/addTagsPermissionScope.js +++ b/extensions/tags/js/src/admin/addTagsPermissionScope.js @@ -48,18 +48,11 @@ export default function() { const tags = sortTags(app.store.all('tags').filter(tag => !tag.isRestricted())); if (tags.length) { - items.add('tag', Dropdown.component({ - className: 'Dropdown--restrictByTag', - buttonClassName: 'Button Button--text', - label: app.translator.trans('flarum-tags.admin.permissions.restrict_by_tag_heading'), - icon: 'fas fa-plus', - caretIcon: null, - children: tags.map(tag => Button.component({ - icon: true, - children: [tagIcon(tag, {className: 'Button-icon'}), ' ', tag.name()], - onclick: () => tag.save({isRestricted: true}) - })) - })); + items.add('tag', + {tags.map(tag => )} + ); } }); } diff --git a/extensions/tags/js/src/admin/components/EditTagModal.js b/extensions/tags/js/src/admin/components/EditTagModal.js index ef9176834..b237c9247 100644 --- a/extensions/tags/js/src/admin/components/EditTagModal.js +++ b/extensions/tags/js/src/admin/components/EditTagModal.js @@ -10,17 +10,17 @@ import tagLabel from '../../common/helpers/tagLabel'; * to create or edit a tag. */ export default class EditTagModal extends Modal { - init() { - super.init(); + oninit(vnode) { + super.oninit(vnode); - this.tag = this.props.tag || app.store.createRecord('tags'); + this.tag = this.attrs.model || app.store.createRecord('tags'); - this.name = m.prop(this.tag.name() || ''); - this.slug = m.prop(this.tag.slug() || ''); - this.description = m.prop(this.tag.description() || ''); - this.color = m.prop(this.tag.color() || ''); - this.icon = m.prop(this.tag.icon() || ''); - this.isHidden = m.prop(this.tag.isHidden() || false); + this.name = m.stream(this.tag.name() || ''); + this.slug = m.stream(this.tag.slug() || ''); + this.description = m.stream(this.tag.description() || ''); + this.color = m.stream(this.tag.color() || ''); + this.icon = m.stream(this.tag.icon() || ''); + this.isHidden = m.stream(this.tag.isHidden() || false); } className() { @@ -60,17 +60,17 @@ export default class EditTagModal extends Modal { items.add('slug',
- +
, 40); items.add('description',
-