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 {