diff options
Diffstat (limited to 'app/assets/javascripts/repository/components/breadcrumbs.vue')
-rw-r--r-- | app/assets/javascripts/repository/components/breadcrumbs.vue | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/app/assets/javascripts/repository/components/breadcrumbs.vue b/app/assets/javascripts/repository/components/breadcrumbs.vue index 28d7dec85f4..0b8408643ac 100644 --- a/app/assets/javascripts/repository/components/breadcrumbs.vue +++ b/app/assets/javascripts/repository/components/breadcrumbs.vue @@ -5,6 +5,7 @@ import { GlDropdownSectionHeader, GlDropdownItem, GlIcon, + GlModalDirective, } from '@gitlab/ui'; import permissionsQuery from 'shared_queries/repository/permissions.query.graphql'; import { joinPaths, escapeFileUrl } from '~/lib/utils/url_utility'; @@ -12,12 +13,15 @@ import { __ } from '../../locale'; import getRefMixin from '../mixins/get_ref'; import projectPathQuery from '../queries/project_path.query.graphql'; import projectShortPathQuery from '../queries/project_short_path.query.graphql'; +import UploadBlobModal from './upload_blob_modal.vue'; const ROW_TYPES = { header: 'header', divider: 'divider', }; +const UPLOAD_BLOB_MODAL_ID = 'modal-upload-blob'; + export default { components: { GlDropdown, @@ -25,6 +29,7 @@ export default { GlDropdownSectionHeader, GlDropdownItem, GlIcon, + UploadBlobModal, }, apollo: { projectShortPath: { @@ -46,6 +51,9 @@ export default { }, }, }, + directives: { + GlModal: GlModalDirective, + }, mixins: [getRefMixin], props: { currentPath: { @@ -63,6 +71,21 @@ export default { required: false, default: false, }, + canPushCode: { + type: Boolean, + required: false, + default: false, + }, + selectedBranch: { + type: String, + required: false, + default: '', + }, + originalBranch: { + type: String, + required: false, + default: '', + }, newBranchPath: { type: String, required: false, @@ -93,7 +116,13 @@ export default { required: false, default: null, }, + uploadPath: { + type: String, + required: false, + default: '', + }, }, + uploadBlobModalId: UPLOAD_BLOB_MODAL_ID, data() { return { projectShortPath: '', @@ -126,7 +155,10 @@ export default { ); }, canCreateMrFromFork() { - return this.userPermissions.forkProject && this.userPermissions.createMergeRequestIn; + return this.userPermissions?.forkProject && this.userPermissions?.createMergeRequestIn; + }, + showUploadModal() { + return this.canEditTree && !this.$apollo.queries.userPermissions.loading; }, dropdownItems() { const items = []; @@ -149,10 +181,9 @@ export default { { attrs: { href: '#modal-upload-blob', - 'data-target': '#modal-upload-blob', - 'data-toggle': 'modal', }, text: __('Upload file'), + modalId: UPLOAD_BLOB_MODAL_ID, }, { attrs: { @@ -253,12 +284,26 @@ export default { <gl-icon name="chevron-down" :size="16" class="float-left" /> </template> <template v-for="(item, i) in dropdownItems"> - <component :is="getComponent(item.type)" :key="i" v-bind="item.attrs"> + <component + :is="getComponent(item.type)" + :key="i" + v-bind="item.attrs" + v-gl-modal="item.modalId || null" + > {{ item.text }} </component> </template> </gl-dropdown> </li> </ol> + <upload-blob-modal + v-if="showUploadModal" + :modal-id="$options.uploadBlobModalId" + :commit-message="__('Upload New File')" + :target-branch="selectedBranch" + :original-branch="originalBranch" + :can-push-code="canPushCode" + :path="uploadPath" + /> </nav> </template> |