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>
|