From 6e5d349246357fdab80089cca0e3f55617b67e7d Mon Sep 17 00:00:00 2001
From: Sascha Eggenberger
Date: Wed, 26 Jul 2023 17:54:34 +0200
Subject: [PATCH] Settings badges: Use GlCard
Changelog: changed
---
.../badges/components/badge_form.vue | 66 ++++---
.../badges/components/badge_list.vue | 168 +++++++++++++++---
.../badges/components/badge_list_row.vue | 81 ---------
.../badges/components/badge_settings.vue | 89 ++++++++--
app/assets/javascripts/badges/constants.js | 2 +
locale/gitlab.pot | 13 +-
qa/qa/page/component/badges.rb | 4 +-
.../groups/settings/group_badges_spec.rb | 41 +++--
.../projects/settings/project_badges_spec.rb | 41 +++--
.../badges/components/badge_form_spec.js | 14 +-
.../badges/components/badge_list_row_spec.js | 119 -------------
.../badges/components/badge_list_spec.js | 94 ++++++++--
.../badges/components/badge_settings_spec.js | 40 +++--
13 files changed, 432 insertions(+), 340 deletions(-)
delete mode 100644 app/assets/javascripts/badges/components/badge_list_row.vue
delete mode 100644 spec/frontend/badges/components/badge_list_row_spec.js
diff --git a/app/assets/javascripts/badges/components/badge_form.vue b/app/assets/javascripts/badges/components/badge_form.vue
index 1a80030c7e6ef2..23873922618872 100644
--- a/app/assets/javascripts/badges/components/badge_form.vue
+++ b/app/assets/javascripts/badges/components/badge_form.vue
@@ -28,6 +28,11 @@ export default {
type: Boolean,
required: true,
},
+ inModal: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
},
data() {
return {
@@ -119,16 +124,28 @@ export default {
exampleUrl,
});
},
+ cancelButtonType() {
+ return this.isEditing ? 'button' : 'reset';
+ },
+ saveText() {
+ return this.isEditing ? s__('Badges|Save changes') : s__('Badges|Add badge');
+ },
+ },
+ mounted() {
+ // declared here to make it cancel-able
+ this.debouncedPreview = debounce(function search() {
+ this.renderBadge();
+ }, badgePreviewDelayInMilliseconds);
},
methods: {
...mapActions(['addBadge', 'renderBadge', 'saveBadge', 'stopEditing', 'updateBadgeInForm']),
- debouncedPreview: debounce(function preview() {
- this.renderBadge();
- }, badgePreviewDelayInMilliseconds),
- onCancel() {
- this.stopEditing();
+ updatePreview() {
+ this.debouncedPreview();
},
onSubmit() {
+ this.debouncedPreview.cancel();
+ this.renderBadge();
+
const form = this.$el;
if (!form.checkValidity()) {
this.wasValidated = true;
@@ -161,6 +178,7 @@ export default {
variant: VARIANT_INFO,
});
this.wasValidated = false;
+ this.$emit('close-add-form');
})
.catch((error) => {
createAlert({
@@ -171,6 +189,17 @@ export default {
throw error;
});
},
+ closeForm() {
+ this.$refs.form.reset();
+ this.$emit('close-add-form');
+ },
+ handleCancel() {
+ if (this.isEditing) {
+ this.stopEditing();
+ } else {
+ this.closeForm();
+ }
+ },
},
safeHtmlConfig: { ALLOW_TAGS: ['a', 'code'] },
};
@@ -178,6 +207,7 @@ export default {
{{ s__('Badges|Enter a valid URL') }}
{{ badgeLinkUrlExample }}
@@ -213,7 +243,7 @@ export default {
type="URL"
class="form-control gl-form-input"
required
- @input="debouncedPreview"
+ @input="updatePreview"
/>
{{ s__('Badges|Enter a valid URL') }}
{{ badgeImageUrlExample }}
@@ -235,29 +265,23 @@ export default {
-
-
- {{ __('Cancel') }}
-
+
- {{ s__('Badges|Save changes') }}
+ {{ saveText }}
-
-
- {{ s__('Badges|Add badge') }}
+ {{ __('Cancel') }}
diff --git a/app/assets/javascripts/badges/components/badge_list.vue b/app/assets/javascripts/badges/components/badge_list.vue
index 76625fe9a607bc..dbb692a389e290 100644
--- a/app/assets/javascripts/badges/components/badge_list.vue
+++ b/app/assets/javascripts/badges/components/badge_list.vue
@@ -1,15 +1,42 @@
-
-
-
-
- {{ s__('Badges|This group has no badges') }}
- {{ s__('Badges|This project has no badges') }}
-
-
-
+
+
+
+
+
+ {{ badgeKindText(item) }}
+
+
+
+
+
+
+
+ {{ item.linkUrl }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/javascripts/badges/components/badge_list_row.vue b/app/assets/javascripts/badges/components/badge_list_row.vue
deleted file mode 100644
index 4c2b700c7ffc31..00000000000000
--- a/app/assets/javascripts/badges/components/badge_list_row.vue
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
-
-
-
- {{ badgeKindText }}
-
-
{{ badge.linkUrl }}
-
-
-
diff --git a/app/assets/javascripts/badges/components/badge_settings.vue b/app/assets/javascripts/badges/components/badge_settings.vue
index 09f997d73aa2c1..6fe772e717c580 100644
--- a/app/assets/javascripts/badges/components/badge_settings.vue
+++ b/app/assets/javascripts/badges/components/badge_settings.vue
@@ -1,5 +1,5 @@