diff --git a/app/assets/javascripts/repository/components/table/index.vue b/app/assets/javascripts/repository/components/table/index.vue index c1f350dccd6aa6d41be5e80f36d2fab02380d294..5e0ad7acdfd000c589c3fa767c7f264fed071060 100644 --- a/app/assets/javascripts/repository/components/table/index.vue +++ b/app/assets/javascripts/repository/components/table/index.vue @@ -97,6 +97,7 @@ export default { :path="entry.flatPath" :type="entry.type" :url="entry.webUrl" + :mode="entry.mode" :submodule-tree-url="entry.treeUrl" :lfs-oid="entry.lfsOid" :loading-path="loadingPath" diff --git a/app/assets/javascripts/repository/components/table/row.vue b/app/assets/javascripts/repository/components/table/row.vue index d53630163359b4126dfa270befe41f1cd32179d2..615e329f4154b47a444088bc15d8bfc92c471faa 100644 --- a/app/assets/javascripts/repository/components/table/row.vue +++ b/app/assets/javascripts/repository/components/table/row.vue @@ -66,6 +66,11 @@ export default { type: String, required: true, }, + mode: { + type: String, + required: false, + default: '', + }, type: { type: String, required: true, @@ -140,6 +145,7 @@ export default { > import { GlLoadingIcon, GlIcon } from '@gitlab/ui'; import getIconForFile from './file_icon/file_icon_map'; +import { FILE_SYMLINK_MODE } from '../constants'; /* This is a re-usable vue component for rendering a svg sprite icon @@ -24,6 +25,11 @@ export default { type: String, required: true, }, + fileMode: { + type: String, + required: false, + default: '', + }, folder: { type: Boolean, @@ -60,8 +66,12 @@ export default { }, }, computed: { + isSymlink() { + return this.fileMode === FILE_SYMLINK_MODE; + }, spriteHref() { const iconName = this.submodule ? 'folder-git' : getIconForFile(this.fileName) || 'file'; + return `${gon.sprite_file_icons}#${iconName}`; }, folderIconName() { @@ -75,13 +85,11 @@ export default { diff --git a/app/assets/javascripts/vue_shared/constants.js b/app/assets/javascripts/vue_shared/constants.js index 63ce421271768dfc3788e6d14f1e65badbcca1f6..235beb1f22df08ad071734ec27a2827b7f575bd1 100644 --- a/app/assets/javascripts/vue_shared/constants.js +++ b/app/assets/javascripts/vue_shared/constants.js @@ -6,6 +6,8 @@ const INTERVALS = { day: 'day', }; +export const FILE_SYMLINK_MODE = '120000'; + export const timeRanges = [ { label: __('30 minutes'), diff --git a/changelogs/unreleased/symlink-icon-ui.yml b/changelogs/unreleased/symlink-icon-ui.yml new file mode 100644 index 0000000000000000000000000000000000000000..6a907bec6cb1920b54672381abe863eba5ebfbb9 --- /dev/null +++ b/changelogs/unreleased/symlink-icon-ui.yml @@ -0,0 +1,5 @@ +--- +title: Show symlink icon in repository browser +merge_request: 36524 +author: +type: fixed diff --git a/spec/frontend/blob/components/__snapshots__/blob_header_filepath_spec.js.snap b/spec/frontend/blob/components/__snapshots__/blob_header_filepath_spec.js.snap index 005b2c5da1c4a0ff2571750140ce2f4b4f2e6734..0f5b3cd3f5ee38fd0b4bf32ecace6d81b009c275 100644 --- a/spec/frontend/blob/components/__snapshots__/blob_header_filepath_spec.js.snap +++ b/spec/frontend/blob/components/__snapshots__/blob_header_filepath_spec.js.snap @@ -8,6 +8,7 @@ exports[`Blob Header Filepath rendering matches the snapshot 1`] = `