diff --git a/packages/web-app-admin-settings/src/components/AppTemplate.vue b/packages/web-app-admin-settings/src/components/AppTemplate.vue index d328b804f9..74c4a5ecb3 100644 --- a/packages/web-app-admin-settings/src/components/AppTemplate.vue +++ b/packages/web-app-admin-settings/src/components/AppTemplate.vue @@ -48,13 +48,9 @@ diff --git a/packages/web-app-files/src/views/shares/SharedViaLink.vue b/packages/web-app-files/src/views/shares/SharedViaLink.vue index 40718eab47..24333bb8a3 100644 --- a/packages/web-app-files/src/views/shares/SharedViaLink.vue +++ b/packages/web-app-files/src/views/shares/SharedViaLink.vue @@ -1,7 +1,7 @@ - + diff --git a/packages/web-app-files/src/views/shares/SharedWithMe.vue b/packages/web-app-files/src/views/shares/SharedWithMe.vue index 29f6b2f827..3251f8d3df 100644 --- a/packages/web-app-files/src/views/shares/SharedWithMe.vue +++ b/packages/web-app-files/src/views/shares/SharedWithMe.vue @@ -1,7 +1,7 @@ - + @@ -150,8 +145,6 @@ export default defineComponent({ loadResourcesTask, selectedResources, selectedResourcesIds, - sideBarActivePanel, - isSideBarOpen, paginatedResources, scrollToResourceFromRoute } = resourcesViewDefaults @@ -287,8 +280,6 @@ export default defineComponent({ selectedResources, selectedResourcesIds, fileListHeaderY, - isSideBarOpen, - sideBarActivePanel, selectedShareSpace, areHiddenFilesShown, diff --git a/packages/web-app-files/src/views/shares/SharedWithOthers.vue b/packages/web-app-files/src/views/shares/SharedWithOthers.vue index 953540e13b..03376a05ad 100644 --- a/packages/web-app-files/src/views/shares/SharedWithOthers.vue +++ b/packages/web-app-files/src/views/shares/SharedWithOthers.vue @@ -1,7 +1,7 @@ - + diff --git a/packages/web-app-files/src/views/spaces/GenericSpace.vue b/packages/web-app-files/src/views/spaces/GenericSpace.vue index 4583971591..087c52facb 100644 --- a/packages/web-app-files/src/views/spaces/GenericSpace.vue +++ b/packages/web-app-files/src/views/spaces/GenericSpace.vue @@ -8,7 +8,6 @@ :has-bulk-actions="displayFullAppBar" :show-actions-on-selection="displayFullAppBar" :has-view-options="displayFullAppBar" - :is-side-bar-open="isSideBarOpen" :space="space" :view-modes="viewModes" @item-dropped="fileDropped" @@ -32,12 +31,7 @@ :class="{ 'h-[55vh]': isSpaceFrontpage }" /> - + diff --git a/packages/web-app-files/src/views/spaces/GenericTrash.vue b/packages/web-app-files/src/views/spaces/GenericTrash.vue index e5c2e59237..962f8fff33 100644 --- a/packages/web-app-files/src/views/spaces/GenericTrash.vue +++ b/packages/web-app-files/src/views/spaces/GenericTrash.vue @@ -4,7 +4,6 @@ @@ -40,7 +39,6 @@ :is="folderView.component" v-else v-model:selected-ids="selectedResourcesIds" - :is-side-bar-open="isSideBarOpen" :fields-displayed="['name', 'ddate']" :are-paths-displayed="true" :resources="paginatedResources" @@ -69,7 +67,7 @@ - + @@ -117,12 +115,10 @@ const { paginationPages, paginationPage, selectedResourcesIds, - isSideBarOpen, fileListHeaderY, sortBy, sortDir, handleSort, - sideBarActivePanel, selectedResources, isResourceInSelection, viewMode, diff --git a/packages/web-app-files/src/views/spaces/Projects.vue b/packages/web-app-files/src/views/spaces/Projects.vue index a868d6ae89..3a10cdb554 100644 --- a/packages/web-app-files/src/views/spaces/Projects.vue +++ b/packages/web-app-files/src/views/spaces/Projects.vue @@ -9,7 +9,6 @@ :has-file-extensions="false" :has-pagination="false" :batch-actions-loading="batchActionsLoading" - :is-side-bar-open="isSideBarOpen" :view-modes="viewModes" :view-mode-default="FolderViewModeConstants.defaultModeName" > @@ -53,7 +52,6 @@ :sort-by="sortBy" :sort-dir="sortDir" :header-position="fileListHeaderY" - :is-side-bar-open="isSideBarOpen" :view-size="viewSize" :view-mode="viewMode" v-bind="folderView.componentAttrs?.()" @@ -130,11 +128,7 @@ - + @@ -160,7 +154,8 @@ import { useRoute, Pagination, FileSideBar, - NoContentMessage + NoContentMessage, + useSideBar } from '@opencloud-eu/web-pkg' import SpaceContextActions from '../../components/Spaces/SpaceContextActions.vue' import { @@ -170,7 +165,6 @@ import { } from '@opencloud-eu/web-client' import FilesViewWrapper from '../../components/FilesViewWrapper.vue' import { eventBus } from '@opencloud-eu/web-pkg' -import { SideBarEventTopics, useSideBar } from '@opencloud-eu/web-pkg' import { sortFields as availableSortFields, translateSortFields } from '@opencloud-eu/web-pkg' import { defaultFuseOptions, formatFileSize, ResourceIcon } from '@opencloud-eu/web-pkg' import { useGettext } from 'vue3-gettext' @@ -195,7 +189,7 @@ const { $gettext, $ngettext } = language const filterTerm = ref('') const resourcesStore = useResourcesStore() const { imagesLoading } = storeToRefs(spacesStore) -const { isSideBarOpen, sideBarActivePanel } = useSideBar() +const { openSideBarPanel } = useSideBar() const { setSelection, initResourceList, clearResourceList, setAncestorMetaData } = resourcesStore const { areDisabledSpacesShown } = storeToRefs(resourcesStore) @@ -439,6 +433,6 @@ const showSpaceMemberLabel = computed(() => { const openSidebarSharePanel = (space: SpaceResource) => { setSelection([space.id]) - eventBus.publish(SideBarEventTopics.openWithPanel, 'space-share') + openSideBarPanel('space-share') } diff --git a/packages/web-app-files/src/views/trash/Overview.vue b/packages/web-app-files/src/views/trash/Overview.vue index 3212aa4185..6903446d86 100644 --- a/packages/web-app-files/src/views/trash/Overview.vue +++ b/packages/web-app-files/src/views/trash/Overview.vue @@ -35,7 +35,6 @@ :sort-by="sortBy" :sort-dir="sortDir" :sort-fields="sortFields.filter((field) => field.name === 'name')" - :is-side-bar-open="isSideBarOpen" :header-position="fileListHeaderY" :are-thumbnails-displayed="false" :are-paths-displayed="false" @@ -70,7 +69,7 @@ - + @@ -122,16 +121,8 @@ const resourcesViewDefaults = useResourcesViewDefaults( folderViewExtensionPoint: folderViewsTrashOverviewExtensionPoint }) -const { - isSideBarOpen, - fileListHeaderY, - sideBarActivePanel, - viewMode, - viewModes, - viewSize, - sortFields, - folderView -} = resourcesViewDefaults +const { fileListHeaderY, viewMode, viewModes, viewSize, sortFields, folderView } = + resourcesViewDefaults const { loadPreview } = useLoadPreview(viewMode) diff --git a/packages/web-app-files/tests/mocks/useResourcesViewDefaultsMock.ts b/packages/web-app-files/tests/mocks/useResourcesViewDefaultsMock.ts index d90aa409aa..caf53d76a8 100644 --- a/packages/web-app-files/tests/mocks/useResourcesViewDefaultsMock.ts +++ b/packages/web-app-files/tests/mocks/useResourcesViewDefaultsMock.ts @@ -37,8 +37,6 @@ export const useResourcesViewDefaultsMock = ( selectedResourcesIds: ref([]), selectedResourceSpace: ref(mock()), isResourceInSelection: vi.fn(() => false), - isSideBarOpen: ref(false), - sideBarActivePanel: ref(''), scrollToResource: vi.fn(), scrollToResourceFromRoute: vi.fn(), viewMode: ref('resource-table'), diff --git a/packages/web-app-files/tests/unit/components/Spaces/SpaceHeader.spec.ts b/packages/web-app-files/tests/unit/components/Spaces/SpaceHeader.spec.ts index c8a58c1f81..56b8f1bd20 100644 --- a/packages/web-app-files/tests/unit/components/Spaces/SpaceHeader.spec.ts +++ b/packages/web-app-files/tests/unit/components/Spaces/SpaceHeader.spec.ts @@ -6,6 +6,7 @@ import { defaultPlugins, mount, defaultComponentMocks } from '@opencloud-eu/web- import { mock } from 'vitest-mock-extended' import { GetFileContentsResponse } from '@opencloud-eu/web-client/webdav' import { flushPromises } from '@vue/test-utils' +import { useSideBar } from '@opencloud-eu/web-pkg' vi.mock('@opencloud-eu/web-pkg', async (importOriginal) => ({ ...(await importOriginal()), @@ -120,16 +121,20 @@ function getWrapper({ count: memberCount }) + const plugins = [ + ...defaultPlugins({ piniaOptions: { spacesState: { imagesLoading, readmesLoading } } }) + ] + + const sideBarStore = useSideBar() + sideBarStore.isSideBarOpen = isSideBarOpen + return mount(SpaceHeader, { props: { - space, - isSideBarOpen + space }, global: { mocks, - plugins: [ - ...defaultPlugins({ piniaOptions: { spacesState: { imagesLoading, readmesLoading } } }) - ], + plugins, provide: { ...mocks, isMobileWidth: ref(isMobileWidth) }, stubs: { 'space-context-actions': true, 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 50195f6a34..5fecc7216d 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 @@ -4,7 +4,7 @@ exports[`Projects view > different files view states > lists all available proje "
- +
- +
- +
" `; diff --git a/packages/web-app-files/tests/unit/views/trash/__snapshots__/Overview.spec.ts.snap b/packages/web-app-files/tests/unit/views/trash/__snapshots__/Overview.spec.ts.snap index 7c6ab5d8ee..7911138b9b 100644 --- a/packages/web-app-files/tests/unit/views/trash/__snapshots__/Overview.spec.ts.snap +++ b/packages/web-app-files/tests/unit/views/trash/__snapshots__/Overview.spec.ts.snap @@ -4,7 +4,7 @@ exports[`TrashOverview > view states > should render trash list 1`] = ` "
- +
- +
- +
" `; diff --git a/packages/web-app-mail/src/components/MailAttachmentList.vue b/packages/web-app-mail/src/components/MailAttachmentList.vue index a6e92b2c2a..ab3b6f1e81 100644 --- a/packages/web-app-mail/src/components/MailAttachmentList.vue +++ b/packages/web-app-mail/src/components/MailAttachmentList.vue @@ -1,5 +1,5 @@ @@ -88,6 +88,7 @@ import { UnsavedChangesModal } from '../Modals' import { formatFileSize, getSharedDriveItem } from '../../helpers' import toNumber from 'lodash-es/toNumber' import { useIsMobile } from '@opencloud-eu/design-system/composables' +import { storeToRefs } from 'pinia' const { applicationId, @@ -121,7 +122,8 @@ const resourcesStore = useResourcesStore() const sharesStore = useSharesStore() const eventBus = useEventBus() const { isMobile } = useIsMobile() -const { isSideBarOpen, sideBarActivePanel } = useSideBar() +const sidebarStore = useSideBar() +const { isSideBarOpen } = storeToRefs(sidebarStore) const { actions: openWithAppActions } = useFileActionsOpenWithApp({ appId: applicationId diff --git a/packages/web-pkg/src/components/FilesList/ResourceTable.vue b/packages/web-pkg/src/components/FilesList/ResourceTable.vue index fa5e9bf2b1..c7abaf357f 100644 --- a/packages/web-pkg/src/components/FilesList/ResourceTable.vue +++ b/packages/web-pkg/src/components/FilesList/ResourceTable.vue @@ -142,7 +142,7 @@ v-if="item.tags.length > 2" size="small" class="resource-table-tag-more align-text-bottom cursor-pointer" - @click="openTagsSidebar()" + @click="sidebarStore.openSideBar()" > + {{ item.tags.length - 2 }} @@ -285,14 +285,13 @@ import { useResourcesStore, useResourceViewHelpers, useRouter, - useSpaceActionsRename + useSpaceActionsRename, + useSideBar } from '../../composables' import ResourceListItem from './ResourceListItem.vue' import ResourceGhostElement from './ResourceGhostElement.vue' import ResourceSize from './ResourceSize.vue' -import { eventBus } from '../../services' import { formatDateFromJSDate, formatRelativeDateFromJSDate } from '../../helpers' -import { SideBarEventTopics } from '../../composables/sideBar' import ContextMenuQuickAction from '../ContextActions/ContextMenuQuickAction.vue' import { useInterceptModifierClick } from '../../composables/keyboardActions' import { determineResourceTableSortFields } from '../../helpers/ui/resourceTable' @@ -318,7 +317,6 @@ const { areResourcesClickable = true, headerPosition = 0, isSelectable = true, - isSideBarOpen = false, dragDrop = false, viewMode = FolderViewModeConstants.defaultModeName, hover = true, @@ -338,7 +336,6 @@ const { areResourcesClickable?: boolean headerPosition?: number isSelectable?: boolean - isSideBarOpen?: boolean dragDrop?: boolean viewMode?: | typeof FolderViewModeConstants.name.condensedTable @@ -418,6 +415,9 @@ const { emit }) +const sidebarStore = useSideBar() +const { isSideBarOpen } = storeToRefs(sidebarStore) + const authStore = useAuthStore() const { userContextReady } = storeToRefs(authStore) @@ -674,9 +674,6 @@ const openRenameDialog = (item: Resource) => { resources: [item] }) } -const openTagsSidebar = () => { - eventBus.publish(SideBarEventTopics.open) -} const formatDate = (date: string) => { return formatDateFromJSDate(new Date(date), currentLanguage) diff --git a/packages/web-pkg/src/components/FilesList/ResourceTiles.vue b/packages/web-pkg/src/components/FilesList/ResourceTiles.vue index 4d5ba7a3a4..b5a048d1a0 100644 --- a/packages/web-pkg/src/components/FilesList/ResourceTiles.vue +++ b/packages/web-pkg/src/components/FilesList/ResourceTiles.vue @@ -211,7 +211,8 @@ const viewSizeMax = useViewSizeMax() const viewSizeCurrent = computed(() => { return Math.min(unref(viewSizeMax), viewSize) }) -const { isSideBarOpen } = useSideBar() +const sidebarStore = useSideBar() +const { isSideBarOpen } = storeToRefs(sidebarStore) const { disabledResources, isResourceSelected, diff --git a/packages/web-pkg/src/components/SideBar/FileSideBar.vue b/packages/web-pkg/src/components/SideBar/FileSideBar.vue index 0b6e66dac2..ecc2dd2942 100644 --- a/packages/web-pkg/src/components/SideBar/FileSideBar.vue +++ b/packages/web-pkg/src/components/SideBar/FileSideBar.vue @@ -3,15 +3,11 @@ v-if="isOpen" ref="sidebar" class="files-side-bar z-30" - :is-open="isOpen" - :active-panel="activePanel" :available-panels="availablePanels" :panel-context="panelContext" :loading="isLoading" v-bind="$attrs" data-custom-key-bindings-disabled="true" - @select-panel="setActiveSideBarPanel" - @close="closeSideBar" >