From 619f7ec8eff2999d8b9bef72e0345c4f390d031f Mon Sep 17 00:00:00 2001 From: Phil Hughes <me@iamphill.com> Date: Thu, 2 Feb 2017 14:54:45 +0000 Subject: [PATCH] Show empty state if filter returns empty results --- .../boards/components/modal/index.js.es6 | 3 ++- .../boards/components/modal/list.js.es6 | 17 +++++++++++++++++ app/assets/stylesheets/pages/boards.scss | 6 ++++++ spec/features/boards/modal_filter_spec.rb | 12 ++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/boards/components/modal/index.js.es6 b/app/assets/javascripts/boards/components/modal/index.js.es6 index 71f7f7eeb20..cab7d576194 100644 --- a/app/assets/javascripts/boards/components/modal/index.js.es6 +++ b/app/assets/javascripts/boards/components/modal/index.js.es6 @@ -75,7 +75,7 @@ }, 500), loadIssues(clearIssues = false) { if (!this.showAddIssuesModal) return; - + const data = Object.assign({}, this.filter, { search: this.searchTerm, page: this.page, @@ -138,6 +138,7 @@ :label-path="labelPath"> </modal-header> <modal-list + :image="blankStateImage" :issue-link-base="issueLinkBase" :root-path="rootPath" v-if="!loading && showList"></modal-list> diff --git a/app/assets/javascripts/boards/components/modal/list.js.es6 b/app/assets/javascripts/boards/components/modal/list.js.es6 index d0901219216..3730c1ecaeb 100644 --- a/app/assets/javascripts/boards/components/modal/list.js.es6 +++ b/app/assets/javascripts/boards/components/modal/list.js.es6 @@ -14,6 +14,10 @@ type: String, required: true, }, + image: { + type: String, + required: true, + }, }, data() { return ModalStore.store; @@ -110,6 +114,19 @@ <section class="add-issues-list add-issues-list-columns" ref="list"> + <div + class="empty-state add-issues-empty-state-filter text-center" + v-if="issuesCount > 0 && issues.length === 0"> + <div + class="svg-content" + v-html="image"> + </div> + <div class="text-content"> + <h4> + There are no issues to show. + </h4> + </div> + </div> <div v-for="group in groupedIssues" class="add-issues-list-column"> diff --git a/app/assets/stylesheets/pages/boards.scss b/app/assets/stylesheets/pages/boards.scss index 506cb108249..0d336a34131 100644 --- a/app/assets/stylesheets/pages/boards.scss +++ b/app/assets/stylesheets/pages/boards.scss @@ -389,6 +389,12 @@ flex: 1; margin-top: 0; + &.add-issues-empty-state-filter { + -webkit-flex-direction: column; + flex-direction: column; + margin-top: 50px; + } + > .row { width: 100%; margin: auto 0; diff --git a/spec/features/boards/modal_filter_spec.rb b/spec/features/boards/modal_filter_spec.rb index 44daa50a006..62b0efdb51c 100644 --- a/spec/features/boards/modal_filter_spec.rb +++ b/spec/features/boards/modal_filter_spec.rb @@ -16,6 +16,18 @@ describe 'Issue Boards add issue modal filtering', :feature, :js do login_as(user) end + it 'shows empty state when no results found' do + visit_board + + page.within('.add-issues-modal') do + find('.form-control').native.send_keys('testing empty state') + + wait_for_vue_resource + + expect(page).to have_content('There are no issues to show.') + end + end + it 'restores filters when closing' do visit_board -- GitLab