diff --git a/packages/design-system/src/components/OcResource/OcResource.vue b/packages/design-system/src/components/OcResource/OcResource.vue
index 1eb5a1c63b1..ee64e4b0a79 100644
--- a/packages/design-system/src/components/OcResource/OcResource.vue
+++ b/packages/design-system/src/components/OcResource/OcResource.vue
@@ -51,7 +51,7 @@
class="parent-folder"
@click.stop="$emit('parentFolderClicked')"
>
-
+
@@ -102,6 +102,14 @@ export default defineComponent({
required: false,
default: null
},
+ /**
+ * The resource parent folder link path icon additional attributes
+ */
+ parentFolderLinkIconAdditionalAttributes: {
+ type: Object,
+ required: false,
+ default: () => {}
+ },
/**
* The resource to be displayed
*/
@@ -176,6 +184,15 @@ export default defineComponent({
}
},
+ parentFolderLinkIconAttrs() {
+ return {
+ 'fill-type': 'line',
+ name: 'folder-2',
+ size: 'small',
+ ...this.parentFolderLinkIconAdditionalAttributes
+ }
+ },
+
hasThumbnail() {
return (
this.isThumbnailDisplayed &&
diff --git a/packages/web-app-files/src/components/FilesList/ResourceTable.vue b/packages/web-app-files/src/components/FilesList/ResourceTable.vue
index 3c68ca2e3e4..c6f38d3e504 100644
--- a/packages/web-app-files/src/components/FilesList/ResourceTable.vue
+++ b/packages/web-app-files/src/components/FilesList/ResourceTable.vue
@@ -67,6 +67,9 @@
:is-resource-clickable="isResourceClickable(item.id)"
:folder-link="folderLink(item)"
:parent-folder-link="parentFolderLink(item)"
+ :parent-folder-link-icon-additional-attributes="
+ parentFolderLinkIconAdditionalAttributes(item)
+ "
:class="{ 'resource-table-resource-cut': isResourceCut(item) }"
@click="emitFileClick(item)"
/>
@@ -562,6 +565,15 @@ export default defineComponent({
wrap: 'nowrap',
width: 'shrink'
},
+ {
+ name: 'status',
+ prop: 'disabled',
+ title: this.$gettext('Status'),
+ type: 'slot',
+ alignH: 'right',
+ wrap: 'nowrap',
+ width: 'shrink'
+ },
this.hasTags
? {
name: 'tags',
@@ -753,6 +765,21 @@ export default defineComponent({
resource: file
})
},
+ parentFolderLinkIconAdditionalAttributes(file) {
+ // Identify if resource is project space or is part of a project space and the resource is located in its root
+ if (
+ isProjectSpaceResource(file) ||
+ (isProjectSpaceResource(this.getInternalSpace(file.storageId) || ({} as Resource)) &&
+ file.path.split('/').length === 2)
+ ) {
+ return {
+ name: 'layout-grid',
+ 'fill-type': 'fill'
+ }
+ }
+
+ return {}
+ },
fileDragged(file) {
this.addSelectedResource(file)
},
diff --git a/packages/web-app-files/src/components/Search/Preview.vue b/packages/web-app-files/src/components/Search/Preview.vue
index c1def68a98d..7af8a8b96c2 100644
--- a/packages/web-app-files/src/components/Search/Preview.vue
+++ b/packages/web-app-files/src/components/Search/Preview.vue
@@ -12,6 +12,7 @@
:is-path-displayed="true"
:is-resource-clickable="false"
:parent-folder-link="parentFolderLink"
+ :parent-folder-link-icon-additional-attributes="parentFolderLinkIconAdditionalAttributes"
:parent-folder-name-default="defaultParentFolderName"
:is-thumbnail-displayed="displayThumbnails"
@parent-folder-clicked="parentFolderClicked"
@@ -29,7 +30,7 @@ import { computed, defineComponent, ref, unref } from 'vue'
import { mapGetters } from 'vuex'
import { createLocationShares, createLocationSpaces } from '../../router'
import { basename, dirname } from 'path'
-import { useCapabilityShareJailEnabled } from 'web-pkg/src/composables'
+import { useCapabilityShareJailEnabled, useGetMatchingSpace } from 'web-pkg/src/composables'
import { buildShareSpaceResource, isProjectSpaceResource, Resource } from 'web-client/src/helpers'
import { configurationManager } from 'web-pkg/src/configuration'
import { eventBus } from 'web-pkg/src/services/eventBus'
@@ -53,6 +54,7 @@ export default defineComponent({
}
},
setup(props) {
+ const { getInternalSpace } = useGetMatchingSpace()
const previewData = ref()
const resource = computed((): Resource => {
return {
@@ -65,6 +67,7 @@ export default defineComponent({
})
return {
...useFileActions(),
+ getInternalSpace,
hasShareJail: useCapabilityShareJailEnabled(),
previewData,
resource
@@ -142,6 +145,24 @@ export default defineComponent({
return createLocationSpaces('files-spaces-projects')
}
return this.createFolderLink(dirname(this.resource.path), this.resource.parentFolderId)
+ },
+
+ parentFolderLinkIconAdditionalAttributes() {
+ // Identify if resource is project space or is part of a project space and the resource is located in its root
+ if (
+ isProjectSpaceResource(this.resource) ||
+ (isProjectSpaceResource(
+ this.getInternalSpace(this.resource.storageId) || ({} as Resource)
+ ) &&
+ this.resource.path.split('/').length === 2)
+ ) {
+ return {
+ name: 'layout-grid',
+ 'fill-type': 'fill'
+ }
+ }
+
+ return {}
}
},
mounted() {
diff --git a/packages/web-app-files/src/composables/actions/files/useFileActionsCreateSpaceFromResource.ts b/packages/web-app-files/src/composables/actions/files/useFileActionsCreateSpaceFromResource.ts
index 855c60b8cff..40333955efa 100644
--- a/packages/web-app-files/src/composables/actions/files/useFileActionsCreateSpaceFromResource.ts
+++ b/packages/web-app-files/src/composables/actions/files/useFileActionsCreateSpaceFromResource.ts
@@ -94,7 +94,7 @@ export const useFileActionsCreateSpaceFromResource = ({ store }: { store?: Store
return [
{
name: 'create-space-from-resource',
- icon: 'layout-grid',
+ icon: 'function',
handler,
label: () => {
return $gettext('Create Space from selection')
diff --git a/packages/web-app-files/src/views/spaces/Projects.vue b/packages/web-app-files/src/views/spaces/Projects.vue
index 34e75d69999..68d74e3fe4a 100644
--- a/packages/web-app-files/src/views/spaces/Projects.vue
+++ b/packages/web-app-files/src/views/spaces/Projects.vue
@@ -191,6 +191,7 @@ export default defineComponent({
'totalQuota',
'usedQuota',
'remainingQuota',
+ 'status',
'mdate'
]
diff --git a/packages/web-app-files/tests/unit/views/spaces/__snapshots__/Projects.spec.ts.snap b/packages/web-app-files/tests/unit/views/spaces/__snapshots__/Projects.spec.ts.snap
index 663d99fd6a7..34a03be3183 100644
--- a/packages/web-app-files/tests/unit/views/spaces/__snapshots__/Projects.spec.ts.snap
+++ b/packages/web-app-files/tests/unit/views/spaces/__snapshots__/Projects.spec.ts.snap
@@ -6,7 +6,7 @@ exports[`Projects view different files view states lists all available project s