Skip to content
Snippets Groups Projects

Update description field component

All threads resolved!
5 files
+ 115
159
Compare changes
  • Side-by-side
  • Inline
Files
5
@@ -27,6 +27,7 @@ export default {
@@ -27,6 +27,7 @@ export default {
i18n: {
i18n: {
editDescription: s__('DesignManagement|Edit description'),
editDescription: s__('DesignManagement|Edit description'),
descriptionLabel: s__('DesignManagement|Description'),
descriptionLabel: s__('DesignManagement|Description'),
 
addDescriptionLabel: s__('DesignManagement|Add a description'),
},
},
formFieldProps: {
formFieldProps: {
id: 'design-description',
id: 'design-description',
@@ -49,16 +50,11 @@ export default {
@@ -49,16 +50,11 @@ export default {
type: Object,
type: Object,
required: true,
required: true,
},
},
initiallyOpen: {
type: Boolean,
required: false,
default: false,
},
},
},
data() {
data() {
return {
return {
descriptionText: this.design.description || '',
descriptionText: this.design.description || '',
showEditor: this.initiallyOpen,
showEditor: false,
isSubmitting: false,
isSubmitting: false,
errorMessage: '',
errorMessage: '',
autosaveKey: `Issue/${getIdFromGraphQLId(this.design.issue.id)}/Design/${getIdFromGraphQLId(
autosaveKey: `Issue/${getIdFromGraphQLId(this.design.issue.id)}/Design/${getIdFromGraphQLId(
@@ -70,6 +66,9 @@ export default {
@@ -70,6 +66,9 @@ export default {
canUpdate() {
canUpdate() {
return this.design.issue?.userPermissions?.updateDesign && !this.showEditor;
return this.design.issue?.userPermissions?.updateDesign && !this.showEditor;
},
},
 
showAddDescriptionButton() {
 
return this.design.issue?.userPermissions?.updateDesign && !this.design.descriptionHtml;
 
},
},
},
watch: {
watch: {
'design.descriptionHtml': {
'design.descriptionHtml': {
@@ -86,7 +85,6 @@ export default {
@@ -86,7 +85,6 @@ export default {
this.showEditor = true;
this.showEditor = true;
},
},
closeForm() {
closeForm() {
this.$emit('editorClosed');
// If description text is empty on cancel,
// If description text is empty on cancel,
// restore the old description
// restore the old description
if (!this.descriptionText) {
if (!this.descriptionText) {
@@ -200,7 +198,7 @@ export default {
@@ -200,7 +198,7 @@ export default {
:loading="isSubmitting"
:loading="isSubmitting"
data-testid="save-description"
data-testid="save-description"
@click="updateDesignDescription"
@click="updateDesignDescription"
>{{ s__('DesignManagement|Save') }}
>{{ s__('DesignManagement|Save changes') }}
</gl-button>
</gl-button>
<gl-button category="tertiary" class="gl-ml-3" data-testid="cancel" @click="closeForm"
<gl-button category="tertiary" class="gl-ml-3" data-testid="cancel" @click="closeForm"
>{{ s__('DesignManagement|Cancel') }}
>{{ s__('DesignManagement|Cancel') }}
@@ -208,34 +206,49 @@ export default {
@@ -208,34 +206,49 @@ export default {
</div>
</div>
</gl-form-group>
</gl-form-group>
<div v-else class="design-description-view">
<div v-else class="design-description-view">
<div
<gl-button
class="design-description-header gl-display-flex gl-justify-content-space-between gl-mb-2"
v-if="showAddDescriptionButton"
 
class="gl-ml-auto"
 
size="small"
 
data-testid="add-design-description"
 
:aria-label="$options.i18n.addDescriptionLabel"
 
@click="startEditing"
>
>
<h3 class="gl-line-height-20! gl-font-lg gl-m-0">
{{ $options.i18n.addDescriptionLabel }}
{{ $options.i18n.descriptionLabel }}
</gl-button>
</h3>
<template v-else>
<gl-button
v-if="canUpdate"
v-gl-tooltip
class="gl-ml-auto"
size="small"
category="tertiary"
:aria-label="$options.i18n.editDescription"
:title="$options.i18n.editDescription"
data-testid="edit-description"
icon="pencil"
@click="startEditing"
/>
</div>
<div v-if="design.descriptionHtml" class="design-description js-task-list-container">
<div
<div
ref="gfm-content"
class="design-description-header gl-display-flex gl-justify-content-space-between gl-mb-2"
v-safe-html="design.descriptionHtml"
>
class="md gl-mb-4"
<h3 class="gl-line-height-20! gl-font-lg gl-m-0">
data-testid="design-description-content"
{{ $options.i18n.descriptionLabel }}
@change="toggleCheckboxes"
</h3>
></div>
<gl-button
</div>
v-if="canUpdate"
 
v-gl-tooltip
 
class="gl-ml-auto"
 
size="small"
 
category="tertiary"
 
:aria-label="$options.i18n.editDescription"
 
:title="$options.i18n.editDescription"
 
data-testid="edit-description"
 
icon="pencil"
 
@click="startEditing"
 
/>
 
</div>
 
<div v-if="design.descriptionHtml" class="design-description js-task-list-container">
 
<div
 
ref="gfm-content"
 
v-safe-html="design.descriptionHtml"
 
class="md gl-mb-4"
 
data-testid="design-description-content"
 
@change="toggleCheckboxes"
 
></div>
 
</div>
 
<div v-else data-testid="design-description-none" class="gl-text-secondary gl-mb-5">
 
{{ s__('DesignManagement|None') }}
 
</div>
 
</template>
</div>
</div>
</div>
</div>
</template>
</template>
Loading