From 4551e82b6bb8baf0bdfd778943c2af57b8a63b27 Mon Sep 17 00:00:00 2001
From: Florie Guibert <fguibert@gitlab.com>
Date: Mon, 22 Apr 2024 17:06:24 +1000
Subject: [PATCH] Display default text for empty sidebar dropdown

---
 .../work_item_sidebar_dropdown_widget_with_edit.vue      | 9 +++++++--
 locale/gitlab.pot                                        | 3 +++
 .../work_item_sidebar_dropdown_widget_with_edit_spec.js  | 8 ++++++++
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/app/assets/javascripts/work_items/components/shared/work_item_sidebar_dropdown_widget_with_edit.vue b/app/assets/javascripts/work_items/components/shared/work_item_sidebar_dropdown_widget_with_edit.vue
index 14276cac23a47..fe1d73e9b94db 100644
--- a/app/assets/javascripts/work_items/components/shared/work_item_sidebar_dropdown_widget_with_edit.vue
+++ b/app/assets/javascripts/work_items/components/shared/work_item_sidebar_dropdown_widget_with_edit.vue
@@ -3,7 +3,7 @@ import { GlButton, GlForm, GlLoadingIcon, GlCollapsibleListbox } from '@gitlab/u
 import { isEmpty, debounce } from 'lodash';
 import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';
 
-import { s__, __ } from '~/locale';
+import { s__, __, sprintf } from '~/locale';
 
 export default {
   i18n: {
@@ -116,6 +116,11 @@ export default {
     resetButton() {
       return this.resetButtonLabel || this.$options.i18n.resetButtonText;
     },
+    toggleText() {
+      return !this.toggleDropdownText && !this.hasValue
+        ? sprintf(__(`No %{label}`), { label: this.dropdownLabel.toLowerCase() })
+        : this.toggleDropdownText;
+    },
   },
   watch: {
     itemValue: {
@@ -212,7 +217,7 @@ export default {
         :infinite-scroll="infiniteScroll"
         :searching="loading"
         :header-text="headerText"
-        :toggle-text="toggleDropdownText"
+        :toggle-text="toggleText"
         :no-results-text="$options.i18n.noMatchingResults"
         :items="listItems"
         :selected="localSelectedItem"
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 3896d4b92ce75..e66b6071511ac 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -33827,6 +33827,9 @@ msgstr ""
 msgid "No %{header} for this request."
 msgstr ""
 
+msgid "No %{label}"
+msgstr ""
+
 msgid "No %{providerTitle} repositories found"
 msgstr ""
 
diff --git a/spec/frontend/work_items/components/shared/work_item_sidebar_dropdown_widget_with_edit_spec.js b/spec/frontend/work_items/components/shared/work_item_sidebar_dropdown_widget_with_edit_spec.js
index 3278ef657182d..673d3cc95507d 100644
--- a/spec/frontend/work_items/components/shared/work_item_sidebar_dropdown_widget_with_edit_spec.js
+++ b/spec/frontend/work_items/components/shared/work_item_sidebar_dropdown_widget_with_edit_spec.js
@@ -220,5 +220,13 @@ describe('WorkItemSidebarDropdownWidgetWithEdit component', () => {
 
       expect(findCollapsibleListbox().props('infiniteScrollLoading')).toBe(true);
     });
+
+    it('displays default dropdown label when no value is selected', async () => {
+      createComponent({ isEditing: true });
+
+      await nextTick();
+
+      expect(findCollapsibleListbox().props('toggleText')).toBe('No iteration');
+    });
   });
 });
-- 
GitLab