debian-mirror-gitlab/app/assets/javascripts/blob/components/blob_header.vue

100 lines
2.2 KiB
Vue
Raw Normal View History

2020-03-13 15:44:24 +05:30
<script>
import DefaultActions from './blob_header_default_actions.vue';
import BlobFilepath from './blob_header_filepath.vue';
2021-03-11 19:13:27 +05:30
import ViewerSwitcher from './blob_header_viewer_switcher.vue';
2020-03-13 15:44:24 +05:30
import { SIMPLE_BLOB_VIEWER } from './constants';
2021-12-11 22:18:48 +05:30
import TableOfContents from './table_contents.vue';
2020-03-13 15:44:24 +05:30
export default {
components: {
ViewerSwitcher,
DefaultActions,
BlobFilepath,
2021-12-11 22:18:48 +05:30
TableOfContents,
2020-03-13 15:44:24 +05:30
},
props: {
blob: {
type: Object,
required: true,
},
hideDefaultActions: {
type: Boolean,
required: false,
default: false,
},
hideViewerSwitcher: {
type: Boolean,
required: false,
default: false,
},
2021-10-27 15:23:28 +05:30
isBinary: {
type: Boolean,
required: false,
default: false,
},
2020-03-13 15:44:24 +05:30
activeViewerType: {
type: String,
required: false,
default: SIMPLE_BLOB_VIEWER,
},
2020-06-23 00:09:42 +05:30
hasRenderError: {
type: Boolean,
required: false,
default: false,
},
2020-03-13 15:44:24 +05:30
},
data() {
return {
viewer: this.hideViewerSwitcher ? null : this.activeViewerType,
};
},
computed: {
showViewerSwitcher() {
return !this.hideViewerSwitcher && Boolean(this.blob.simpleViewer && this.blob.richViewer);
},
showDefaultActions() {
return !this.hideDefaultActions;
},
},
watch: {
viewer(newVal, oldVal) {
if (!this.hideViewerSwitcher && newVal !== oldVal) {
this.$emit('viewer-changed', newVal);
}
},
},
methods: {
proxyCopyRequest() {
this.$emit('copy');
},
},
};
</script>
<template>
<div class="js-file-title file-title-flex-parent">
2021-12-11 22:18:48 +05:30
<div class="gl-display-flex">
<table-of-contents class="gl-pr-2" />
<blob-filepath :blob="blob">
<template #filepath-prepend>
<slot name="prepend"></slot>
</template>
</blob-filepath>
</div>
2020-03-13 15:44:24 +05:30
2022-03-02 08:16:31 +05:30
<div class="gl-sm-display-flex file-actions">
2020-03-13 15:44:24 +05:30
<viewer-switcher v-if="showViewerSwitcher" v-model="viewer" />
<slot name="actions"></slot>
<default-actions
v-if="showDefaultActions"
:raw-path="blob.rawPath"
:active-viewer="viewer"
2020-06-23 00:09:42 +05:30
:has-render-error="hasRenderError"
2021-10-27 15:23:28 +05:30
:is-binary="isBinary"
2020-03-13 15:44:24 +05:30
@copy="proxyCopyRequest"
/>
</div>
</div>
</template>