Skip to content
Snippets Groups Projects

Update description field component

All threads resolved!
5 files
+ 107
36
Compare changes
  • Side-by-side
  • Inline
Files
5
@@ -27,7 +27,7 @@ export default {
@@ -27,7 +27,7 @@ export default {
i18n: {
i18n: {
edit: __('Edit'),
edit: __('Edit'),
editDescription: s__('DesignManagement|Edit description'),
editDescription: s__('DesignManagement|Edit description'),
descriptionLabel: s__('DesignManagement|Design description'),
descriptionLabel: s__('DesignManagement|Description'),
},
},
formFieldProps: {
formFieldProps: {
id: 'design-description',
id: 'design-description',
@@ -37,6 +37,7 @@ export default {
@@ -37,6 +37,7 @@ export default {
},
},
markdownDocsPath: helpPagePath('user/markdown'),
markdownDocsPath: helpPagePath('user/markdown'),
quickActionsDocsPath: helpPagePath('user/project/quick_actions'),
quickActionsDocsPath: helpPagePath('user/project/quick_actions'),
 
descriptionLabelClass: 'gl-line-height-20! gl-font-lg!',
props: {
props: {
design: {
design: {
type: Object,
type: Object,
@@ -50,11 +51,16 @@ export default {
@@ -50,11 +51,16 @@ export default {
type: Object,
type: Object,
required: true,
required: true,
},
},
 
openDescriptionForm: {
 
type: Boolean,
 
required: false,
 
default: false,
 
},
},
},
data() {
data() {
return {
return {
descriptionText: this.design.description || '',
descriptionText: this.design.description || '',
showEditor: false,
showEditor: this.openDescriptionForm,
isSubmitting: false,
isSubmitting: false,
errorMessage: '',
errorMessage: '',
autosaveKey: `Issue/${getIdFromGraphQLId(this.design.issue.id)}/Design/${getIdFromGraphQLId(
autosaveKey: `Issue/${getIdFromGraphQLId(this.design.issue.id)}/Design/${getIdFromGraphQLId(
@@ -82,6 +88,12 @@ export default {
@@ -82,6 +88,12 @@ export default {
this.showEditor = true;
this.showEditor = true;
},
},
closeForm() {
closeForm() {
 
this.$emit('editorClosed');
 
// If description text is empty on cancel,
 
// restore the old description
 
if (!this.descriptionText) {
 
this.descriptionText = this.design.description;
 
}
this.showEditor = false;
this.showEditor = false;
},
},
async renderGFM() {
async renderGFM() {
@@ -160,6 +172,7 @@ export default {
@@ -160,6 +172,7 @@ export default {
v-if="showEditor"
v-if="showEditor"
class="design-description-form common-note-form"
class="design-description-form common-note-form"
:label="$options.i18n.descriptionLabel"
:label="$options.i18n.descriptionLabel"
 
:label-class="$options.descriptionLabelClass"
>
>
<div v-if="errorMessage" class="gl-pb-3">
<div v-if="errorMessage" class="gl-pb-3">
<gl-alert variant="danger" @dismiss="errorMessage = null">
<gl-alert variant="danger" @dismiss="errorMessage = null">
@@ -200,29 +213,23 @@ export default {
@@ -200,29 +213,23 @@ export default {
<div
<div
class="design-description-header gl-display-flex gl-justify-content-space-between gl-mb-2"
class="design-description-header gl-display-flex gl-justify-content-space-between gl-mb-2"
>
>
<label class="gl-m-0">
<h3 class="gl-line-height-20! gl-font-lg gl-m-0">
{{ $options.i18n.descriptionLabel }}
{{ $options.i18n.descriptionLabel }}
</label>
</h3>
<gl-button
<gl-button
v-if="canUpdate"
v-if="canUpdate"
v-gl-tooltip
v-gl-tooltip
class="gl-ml-auto"
class="gl-ml-auto"
size="small"
size="small"
data-testid="edit-description"
category="tertiary"
:aria-label="$options.i18n.editDescription"
:aria-label="$options.i18n.editDescription"
 
:title="$options.i18n.editDescription"
 
data-testid="edit-description"
 
icon="pencil"
@click="startEditing"
@click="startEditing"
>
/>
{{ $options.i18n.edit }}
</gl-button>
</div>
<div
v-if="!design.descriptionHtml"
data-testid="design-description-none"
class="gl-text-secondary gl-mb-5"
>
{{ s__('DesignManagement|None') }}
</div>
</div>
<div v-else class="design-description js-task-list-container">
<div v-if="design.descriptionHtml" class="design-description js-task-list-container">
<div
<div
ref="gfm-content"
ref="gfm-content"
v-safe-html="design.descriptionHtml"
v-safe-html="design.descriptionHtml"
Loading