diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-10 09:09:53 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-08-10 09:09:53 +0300 |
commit | 146abb4a88819f3625f1e42fb165bef63cb4eafb (patch) | |
tree | 7773bc38964c762561f7ef0484db30bf1eaec7e0 /app/assets/javascripts/releases | |
parent | a544d1da18a96411ed19ca820038833caa87208b (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/releases')
7 files changed, 102 insertions, 14 deletions
diff --git a/app/assets/javascripts/releases/components/form_field_container.vue b/app/assets/javascripts/releases/components/form_field_container.vue new file mode 100644 index 00000000000..19e275315a0 --- /dev/null +++ b/app/assets/javascripts/releases/components/form_field_container.vue @@ -0,0 +1,12 @@ +<script> +export default { + name: 'FormFieldContainer', +}; +</script> +<template> + <div class="row"> + <div class="col-md-6 col-lg-5 col-xl-4 gl-display-flex gl-flex-direction-column"> + <slot></slot> + </div> + </div> +</template> diff --git a/app/assets/javascripts/releases/components/tag_field_existing.vue b/app/assets/javascripts/releases/components/tag_field_existing.vue index 6267e7088c4..b84e713df26 100644 --- a/app/assets/javascripts/releases/components/tag_field_existing.vue +++ b/app/assets/javascripts/releases/components/tag_field_existing.vue @@ -2,10 +2,11 @@ import { mapState } from 'vuex'; import { uniqueId } from 'lodash'; import { GlFormGroup, GlFormInput, GlLink, GlSprintf } from '@gitlab/ui'; +import FormFieldContainer from './form_field_container.vue'; export default { name: 'TagFieldExisting', - components: { GlFormGroup, GlFormInput, GlSprintf, GlLink }, + components: { GlFormGroup, GlFormInput, GlSprintf, GlLink, FormFieldContainer }, computed: { ...mapState('detail', ['release', 'updateReleaseApiDocsPath']), inputId() { @@ -19,18 +20,16 @@ export default { </script> <template> <gl-form-group :label="__('Tag name')" :label-for="inputId"> - <div class="row"> - <div class="col-md-6 col-lg-5 col-xl-4"> - <gl-form-input - :id="inputId" - :value="release.tagName" - type="text" - class="form-control" - :aria-describedby="helpId" - disabled - /> - </div> - </div> + <form-field-container> + <gl-form-input + :id="inputId" + :value="release.tagName" + type="text" + class="form-control" + :aria-describedby="helpId" + disabled + /> + </form-field-container> <template #description> <div :id="helpId" data-testid="tag-name-help"> <gl-sprintf diff --git a/app/assets/javascripts/releases/components/tag_field_new.vue b/app/assets/javascripts/releases/components/tag_field_new.vue index 594ae77bfb0..e77998dd663 100644 --- a/app/assets/javascripts/releases/components/tag_field_new.vue +++ b/app/assets/javascripts/releases/components/tag_field_new.vue @@ -1,8 +1,72 @@ <script> +import { mapState, mapActions } from 'vuex'; +import { GlFormGroup, GlFormInput } from '@gitlab/ui'; +import { uniqueId } from 'lodash'; +import { __ } from '~/locale'; +import RefSelector from '~/ref/components/ref_selector.vue'; +import FormFieldContainer from './form_field_container.vue'; + export default { name: 'TagFieldNew', + components: { GlFormGroup, GlFormInput, RefSelector, FormFieldContainer }, + computed: { + ...mapState('detail', ['projectId', 'release', 'createFrom']), + tagName: { + get() { + return this.release.tagName; + }, + set(tagName) { + this.updateReleaseTagName(tagName); + }, + }, + createFromModel: { + get() { + return this.createFrom; + }, + set(createFrom) { + this.updateCreateFrom(createFrom); + }, + }, + tagNameInputId() { + return uniqueId('tag-name-input-'); + }, + createFromSelectorId() { + return uniqueId('create-from-selector-'); + }, + }, + methods: { + ...mapActions('detail', ['updateReleaseTagName', 'updateCreateFrom']), + }, + translations: { + noRefSelected: __('No source selected'), + searchPlaceholder: __('Search branches, tags, and commits'), + dropdownHeader: __('Select source'), + }, }; </script> <template> - <div></div> + <div> + <gl-form-group :label="__('Tag name')" :label-for="tagNameInputId" data-testid="tag-name-field"> + <form-field-container> + <gl-form-input :id="tagNameInputId" v-model="tagName" type="text" class="form-control" /> + </form-field-container> + </gl-form-group> + <gl-form-group + :label="__('Create from')" + :label-for="createFromSelectorId" + data-testid="create-from-field" + > + <form-field-container> + <ref-selector + :id="createFromSelectorId" + v-model="createFromModel" + :project-id="projectId" + :translations="$options.translations" + /> + </form-field-container> + <template #description> + {{ __('Existing branch name, tag, or commit SHA') }} + </template> + </gl-form-group> + </div> </template> diff --git a/app/assets/javascripts/releases/stores/modules/detail/actions.js b/app/assets/javascripts/releases/stores/modules/detail/actions.js index 2026eeba880..67d31d37384 100644 --- a/app/assets/javascripts/releases/stores/modules/detail/actions.js +++ b/app/assets/javascripts/releases/stores/modules/detail/actions.js @@ -34,6 +34,10 @@ export const fetchRelease = ({ dispatch, state }) => { }); }; +export const updateReleaseTagName = ({ commit }, tagName) => + commit(types.UPDATE_RELEASE_TAG_NAME, tagName); +export const updateCreateFrom = ({ commit }, createFrom) => + commit(types.UPDATE_CREATE_FROM, createFrom); export const updateReleaseTitle = ({ commit }, title) => commit(types.UPDATE_RELEASE_TITLE, title); export const updateReleaseNotes = ({ commit }, notes) => commit(types.UPDATE_RELEASE_NOTES, notes); export const updateReleaseMilestones = ({ commit }, milestones) => diff --git a/app/assets/javascripts/releases/stores/modules/detail/mutation_types.js b/app/assets/javascripts/releases/stores/modules/detail/mutation_types.js index 7b694120126..a50086693bf 100644 --- a/app/assets/javascripts/releases/stores/modules/detail/mutation_types.js +++ b/app/assets/javascripts/releases/stores/modules/detail/mutation_types.js @@ -2,6 +2,8 @@ export const REQUEST_RELEASE = 'REQUEST_RELEASE'; export const RECEIVE_RELEASE_SUCCESS = 'RECEIVE_RELEASE_SUCCESS'; export const RECEIVE_RELEASE_ERROR = 'RECEIVE_RELEASE_ERROR'; +export const UPDATE_RELEASE_TAG_NAME = 'UPDATE_RELEASE_TAG_NAME'; +export const UPDATE_CREATE_FROM = 'UPDATE_CREATE_FROM'; export const UPDATE_RELEASE_TITLE = 'UPDATE_RELEASE_TITLE'; export const UPDATE_RELEASE_NOTES = 'UPDATE_RELEASE_NOTES'; export const UPDATE_RELEASE_MILESTONES = 'UPDATE_RELEASE_MILESTONES'; diff --git a/app/assets/javascripts/releases/stores/modules/detail/mutations.js b/app/assets/javascripts/releases/stores/modules/detail/mutations.js index ca544151323..2a8e8a6eb93 100644 --- a/app/assets/javascripts/releases/stores/modules/detail/mutations.js +++ b/app/assets/javascripts/releases/stores/modules/detail/mutations.js @@ -22,6 +22,12 @@ export default { state.release = undefined; }, + [types.UPDATE_RELEASE_TAG_NAME](state, tagName) { + state.release.tagName = tagName; + }, + [types.UPDATE_CREATE_FROM](state, createFrom) { + state.createFrom = createFrom; + }, [types.UPDATE_RELEASE_TITLE](state, title) { state.release.name = title; }, diff --git a/app/assets/javascripts/releases/stores/modules/detail/state.js b/app/assets/javascripts/releases/stores/modules/detail/state.js index 1e634992d05..dc736c644d5 100644 --- a/app/assets/javascripts/releases/stores/modules/detail/state.js +++ b/app/assets/javascripts/releases/stores/modules/detail/state.js @@ -27,6 +27,7 @@ export default ({ releasesPagePath, defaultBranch, + createFrom: defaultBranch, /** The Release object */ release: null, |