diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-04 09:08:20 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-04 09:08:20 +0000 |
commit | d80f3cd75e700b6e62910865bfd36734644ffa89 (patch) | |
tree | aa2fa2f2b4385854c13591bef8e74924ef661657 /app/assets/javascripts/releases | |
parent | be81c1578d65f25edfde8aa550f190b8d3e6d976 (diff) | |
download | gitlab-ce-d80f3cd75e700b6e62910865bfd36734644ffa89.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/releases')
9 files changed, 95 insertions, 22 deletions
diff --git a/app/assets/javascripts/releases/components/app_edit.vue b/app/assets/javascripts/releases/components/app_edit.vue index f6a4d00692e..6f4baaa5d74 100644 --- a/app/assets/javascripts/releases/components/app_edit.vue +++ b/app/assets/javascripts/releases/components/app_edit.vue @@ -1,10 +1,12 @@ <script> import { mapState, mapActions } from 'vuex'; -import { GlButton, GlFormInput, GlFormGroup } from '@gitlab/ui'; +import { GlButton, GlLink, GlFormInput, GlFormGroup } from '@gitlab/ui'; import { escape as esc } from 'lodash'; import { __, sprintf } from '~/locale'; import MarkdownField from '~/vue_shared/components/markdown/field.vue'; import autofocusonshow from '~/vue_shared/directives/autofocusonshow'; +import { BACK_URL_PARAM } from '~/releases/constants'; +import { getParameterByName } from '~/lib/utils/common_utils'; export default { name: 'ReleaseEditApp', @@ -12,6 +14,7 @@ export default { GlFormInput, GlFormGroup, GlButton, + GlLink, MarkdownField, }, directives: { @@ -74,6 +77,9 @@ export default { this.updateReleaseNotes(notes); }, }, + cancelPath() { + return getParameterByName(BACK_URL_PARAM) || this.releasesPagePath; + }, }, created() { this.fetchRelease(); @@ -84,7 +90,6 @@ export default { 'updateRelease', 'updateReleaseTitle', 'updateReleaseNotes', - 'navigateToReleasesPage', ]), }, }; @@ -157,15 +162,9 @@ export default { > {{ __('Save changes') }} </gl-button> - <gl-button - class="js-cancel-button" - variant="default" - type="button" - :aria-label="__('Cancel')" - @click="navigateToReleasesPage()" - > + <gl-link :href="cancelPath" class="js-cancel-button btn btn-default"> {{ __('Cancel') }} - </gl-button> + </gl-link> </div> </form> </div> diff --git a/app/assets/javascripts/releases/components/app_show.vue b/app/assets/javascripts/releases/components/app_show.vue new file mode 100644 index 00000000000..d521edcc361 --- /dev/null +++ b/app/assets/javascripts/releases/components/app_show.vue @@ -0,0 +1,29 @@ +<script> +import { mapState, mapActions } from 'vuex'; +import { GlSkeletonLoading } from '@gitlab/ui'; +import ReleaseBlock from './release_block.vue'; + +export default { + name: 'ReleaseShowApp', + components: { + GlSkeletonLoading, + ReleaseBlock, + }, + computed: { + ...mapState('detail', ['isFetchingRelease', 'fetchError', 'release']), + }, + created() { + this.fetchRelease(); + }, + methods: { + ...mapActions('detail', ['fetchRelease']), + }, +}; +</script> +<template> + <div class="prepend-top-default"> + <gl-skeleton-loading v-if="isFetchingRelease" /> + + <release-block v-else-if="!fetchError" :release="release" /> + </div> +</template> diff --git a/app/assets/javascripts/releases/components/release_block_header.vue b/app/assets/javascripts/releases/components/release_block_header.vue index 0bc2a5ce2eb..6f7e1dcfe2f 100644 --- a/app/assets/javascripts/releases/components/release_block_header.vue +++ b/app/assets/javascripts/releases/components/release_block_header.vue @@ -1,6 +1,8 @@ <script> import { GlTooltipDirective, GlLink, GlBadge } from '@gitlab/ui'; import Icon from '~/vue_shared/components/icon.vue'; +import { BACK_URL_PARAM } from '~/releases/constants'; +import { setUrlParams } from '~/lib/utils/url_utility'; export default { name: 'ReleaseBlockHeader', @@ -20,7 +22,15 @@ export default { }, computed: { editLink() { - return this.release._links?.editUrl; + if (this.release._links?.editUrl) { + const queryParams = { + [BACK_URL_PARAM]: window.location.href, + }; + + return setUrlParams(queryParams, this.release._links.editUrl); + } + + return undefined; }, selfLink() { return this.release._links?.self; diff --git a/app/assets/javascripts/releases/constants.js b/app/assets/javascripts/releases/constants.js index defcd917465..1db93323a87 100644 --- a/app/assets/javascripts/releases/constants.js +++ b/app/assets/javascripts/releases/constants.js @@ -1,7 +1,3 @@ -/* eslint-disable import/prefer-default-export */ -// This eslint-disable ^^^ can be removed when at least -// one more constant is added to this file. Currently -// constants.js files with only a single constant -// are flagged by this rule. - export const MAX_MILESTONES_TO_DISPLAY = 5; + +export const BACK_URL_PARAM = 'back_url'; diff --git a/app/assets/javascripts/releases/mount_edit.js b/app/assets/javascripts/releases/mount_edit.js index 2bc2728312a..102c4367aac 100644 --- a/app/assets/javascripts/releases/mount_edit.js +++ b/app/assets/javascripts/releases/mount_edit.js @@ -6,7 +6,15 @@ import detailModule from './stores/modules/detail'; export default () => { const el = document.getElementById('js-edit-release-page'); - const store = createStore({ detail: detailModule }); + const store = createStore({ + modules: { + detail: detailModule, + }, + featureFlags: { + releaseShowPage: Boolean(gon.features?.releaseShowPage), + }, + }); + store.dispatch('detail/setInitialState', el.dataset); return new Vue({ diff --git a/app/assets/javascripts/releases/mount_index.js b/app/assets/javascripts/releases/mount_index.js index 6fcb6d802e4..ad82d9a65d6 100644 --- a/app/assets/javascripts/releases/mount_index.js +++ b/app/assets/javascripts/releases/mount_index.js @@ -8,7 +8,11 @@ export default () => { return new Vue({ el, - store: createStore({ list: listModule }), + store: createStore({ + modules: { + list: listModule, + }, + }), render: h => h(ReleaseListApp, { props: { diff --git a/app/assets/javascripts/releases/mount_show.js b/app/assets/javascripts/releases/mount_show.js new file mode 100644 index 00000000000..73e34869b21 --- /dev/null +++ b/app/assets/javascripts/releases/mount_show.js @@ -0,0 +1,21 @@ +import Vue from 'vue'; +import ReleaseShowApp from './components/app_show.vue'; +import createStore from './stores'; +import detailModule from './stores/modules/detail'; + +export default () => { + const el = document.getElementById('js-show-release-page'); + + const store = createStore({ + modules: { + detail: detailModule, + }, + }); + store.dispatch('detail/setInitialState', el.dataset); + + return new Vue({ + el, + store, + render: h => h(ReleaseShowApp), + }); +}; diff --git a/app/assets/javascripts/releases/stores/index.js b/app/assets/javascripts/releases/stores/index.js index aa607906a0e..7f211145ccf 100644 --- a/app/assets/javascripts/releases/stores/index.js +++ b/app/assets/javascripts/releases/stores/index.js @@ -3,4 +3,8 @@ import Vuex from 'vuex'; Vue.use(Vuex); -export default modules => new Vuex.Store({ modules }); +export default ({ modules, featureFlags }) => + new Vuex.Store({ + modules, + state: { featureFlags }, + }); diff --git a/app/assets/javascripts/releases/stores/modules/detail/actions.js b/app/assets/javascripts/releases/stores/modules/detail/actions.js index f730af1c7dc..35901a654b0 100644 --- a/app/assets/javascripts/releases/stores/modules/detail/actions.js +++ b/app/assets/javascripts/releases/stores/modules/detail/actions.js @@ -33,9 +33,11 @@ export const updateReleaseTitle = ({ commit }, title) => commit(types.UPDATE_REL export const updateReleaseNotes = ({ commit }, notes) => commit(types.UPDATE_RELEASE_NOTES, notes); export const requestUpdateRelease = ({ commit }) => commit(types.REQUEST_UPDATE_RELEASE); -export const receiveUpdateReleaseSuccess = ({ commit, dispatch }) => { +export const receiveUpdateReleaseSuccess = ({ commit, state, rootState }) => { commit(types.RECEIVE_UPDATE_RELEASE_SUCCESS); - dispatch('navigateToReleasesPage'); + redirectTo( + rootState.featureFlags.releaseShowPage ? state.release._links.self : state.releasesPagePath, + ); }; export const receiveUpdateReleaseError = ({ commit }, error) => { commit(types.RECEIVE_UPDATE_RELEASE_ERROR, error); |