diff --git a/ghost/admin/app/controllers/members.js b/ghost/admin/app/controllers/members.js index 37d98646ee..d877f0f439 100644 --- a/ghost/admin/app/controllers/members.js +++ b/ghost/admin/app/controllers/members.js @@ -1,4 +1,5 @@ import Controller from '@ember/controller'; +import {computed} from '@ember/object'; import {inject as service} from '@ember/service'; import {task} from 'ember-concurrency'; @@ -8,12 +9,30 @@ export default Controller.extend({ meta: null, members: null, + searchText: '', init() { this._super(...arguments); this.set('members', this.store.peekAll('member')); }, + filteredMembers: computed('members.@each.{name,email}', 'searchText', function () { + let {members, searchText} = this; + searchText = searchText.toLowerCase(); + + let filtered = members.filter((member) => { + if (!searchText) { + return true; + } + + let {name, email} = member; + return name.toLowerCase().indexOf(searchText) >= 0 + || email.toLowerCase().indexOf(searchText) >= 0; + }); + + return filtered; + }), + fetchMembers: task(function* () { let newFetchDate = new Date(); let results; diff --git a/ghost/admin/app/templates/members.hbs b/ghost/admin/app/templates/members.hbs index a2796ef812..cf82689784 100644 --- a/ghost/admin/app/templates/members.hbs +++ b/ghost/admin/app/templates/members.hbs @@ -13,13 +13,19 @@ (Loading...) {{/if}} +
+ +
- {{#if this.members}} + {{#if this.filteredMembers}} {{!-- members list, styles taken from .apps-grid --}}