diff options
Diffstat (limited to 'app/assets/javascripts/static_site_editor/components/edit_meta_modal.vue')
-rw-r--r-- | app/assets/javascripts/static_site_editor/components/edit_meta_modal.vue | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/app/assets/javascripts/static_site_editor/components/edit_meta_modal.vue b/app/assets/javascripts/static_site_editor/components/edit_meta_modal.vue index 4e5245bd892..f583d2049af 100644 --- a/app/assets/javascripts/static_site_editor/components/edit_meta_modal.vue +++ b/app/assets/javascripts/static_site_editor/components/edit_meta_modal.vue @@ -1,22 +1,38 @@ <script> import { GlModal } from '@gitlab/ui'; import { __, s__, sprintf } from '~/locale'; +import Api from '~/api'; +import LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue'; import EditMetaControls from './edit_meta_controls.vue'; +import { ISSUABLE_TYPE, MR_META_LOCAL_STORAGE_KEY } from '../constants'; + export default { components: { GlModal, EditMetaControls, + LocalStorageSync, }, props: { sourcePath: { type: String, required: true, }, + namespace: { + type: String, + required: true, + }, + project: { + type: String, + required: true, + }, }, data() { return { + clearStorage: false, + currentTemplate: null, + mergeRequestTemplates: null, mergeRequestMeta: { title: sprintf(s__(`StaticSiteEditor|Update %{sourcePath} file`), { sourcePath: this.sourcePath, @@ -42,24 +58,42 @@ export default { }; }, }, + mounted() { + this.initTemplates(); + }, methods: { hide() { this.$refs.modal.hide(); }, + initTemplates() { + const { namespace, project } = this; + Api.issueTemplates(namespace, project, ISSUABLE_TYPE, (err, templates) => { + if (err) return; // Error handled by global AJAX error handler + this.mergeRequestTemplates = templates; + }); + }, show() { this.$refs.modal.show(); }, onPrimary() { this.$emit('primary', this.mergeRequestMeta); - this.$refs.editMetaControls.resetCachedEditable(); + this.clearStorage = true; }, onSecondary() { this.hide(); }, + onChangeTemplate(template) { + this.currentTemplate = template; + + const description = this.currentTemplate ? this.currentTemplate.content : ''; + const mergeRequestMeta = { ...this.mergeRequestMeta, description }; + this.onUpdateSettings(mergeRequestMeta); + }, onUpdateSettings(mergeRequestMeta) { this.mergeRequestMeta = { ...mergeRequestMeta }; }, }, + storageKey: MR_META_LOCAL_STORAGE_KEY, }; </script> @@ -75,11 +109,20 @@ export default { @secondary="onSecondary" @hide="() => $emit('hide')" > + <local-storage-sync + v-model="mergeRequestMeta" + :storage-key="$options.storageKey" + :clear="clearStorage" + as-json + /> <edit-meta-controls ref="editMetaControls" :title="mergeRequestMeta.title" :description="mergeRequestMeta.description" + :templates="mergeRequestTemplates" + :current-template="currentTemplate" @updateSettings="onUpdateSettings" + @changeTemplate="onChangeTemplate" /> </gl-modal> </template> |