Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 5 additions & 13 deletions packages/web-app-admin-settings/src/components/AppTemplate.vue
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
>
<div class="flex justify-between items-center h-12">
<oc-breadcrumb
v-if="!isMobileWidth"
v-if="!isMobile"
id="admin-settings-breadcrumb"
:items="breadcrumbs"
:mobile-breakpoint="isSideBarOpen ? 'md' : 'sm'"
Expand Down Expand Up @@ -78,17 +78,8 @@ import {
useSideBar,
MobileNav
} from '@opencloud-eu/web-pkg'
import {
defineComponent,
inject,
onBeforeUnmount,
PropType,
Ref,
ref,
unref,
useTemplateRef,
watch
} from 'vue'
import { defineComponent, onBeforeUnmount, PropType, ref, unref, useTemplateRef, watch } from 'vue'
import { useIsMobile } from '@opencloud-eu/design-system/composables'
import { useAppDefaults } from '@opencloud-eu/web-pkg'
import { SideBarPanel } from '@opencloud-eu/web-pkg'
import { BreadcrumbItem } from '@opencloud-eu/design-system/helpers'
Expand Down Expand Up @@ -156,6 +147,7 @@ export default defineComponent({
const appBarRef = useTemplateRef<HTMLElement>('appBarRef')
const limitedScreenSpace = ref(false)
const { isSticky } = useIsTopBarSticky()
const { isMobile } = useIsMobile()

const onResize = () => {
limitedScreenSpace.value = unref(isSideBarOpen)
Expand All @@ -181,7 +173,7 @@ export default defineComponent({
})

return {
isMobileWidth: inject<Ref<boolean>>('isMobileWidth'),
isMobile,
appBarRef,
limitedScreenSpace,
isSideBarOpen,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ref } from 'vue'
import { computed, ref } from 'vue'
import AppTemplate from '../../../src/components/AppTemplate.vue'
import {
defaultComponentMocks,
Expand All @@ -9,6 +9,7 @@ import {
import { SideBar, useIsTopBarSticky, useSideBar } from '@opencloud-eu/web-pkg'
import { mock } from 'vitest-mock-extended'
import { OcBreadcrumb } from '@opencloud-eu/design-system/components'
import { useIsMobile } from '@opencloud-eu/design-system/composables'

const stubSelectors = {
ocBreadcrumb: 'oc-breadcrumb-stub',
Expand All @@ -26,6 +27,14 @@ vi.mock('@opencloud-eu/web-pkg', async (importOriginal) => ({
useAppDefaults: vi.fn(() => ({}))
}))

vi.mock('@opencloud-eu/design-system/composables', async (importOriginal) => {
const actual = await importOriginal<typeof import('@opencloud-eu/design-system/composables')>()
return {
...actual,
useIsMobile: vi.fn()
}
})

describe('AppTemplate', () => {
describe('loading is true', () => {
it('should show app loading spinner component', () => {
Expand Down Expand Up @@ -76,7 +85,7 @@ describe('AppTemplate', () => {
).toEqual([{ text: 'Administration Settings' }, { text: 'Users' }])
})
it('does not show in mobile view', () => {
const { wrapper } = getWrapper({ isMobileWidth: true })
const { wrapper } = getWrapper({ isMobile: true })
expect(wrapper.find(stubSelectors.ocBreadcrumb).exists()).toBeFalsy()
})
})
Expand All @@ -96,8 +105,9 @@ describe('AppTemplate', () => {
})
})

function getWrapper({ props = {}, isMobileWidth = false, isSideBarOpen = true } = {}) {
function getWrapper({ props = {}, isMobile = false, isSideBarOpen = true } = {}) {
vi.mocked(useIsTopBarSticky).mockReturnValue({ isSticky: ref(true) })
vi.mocked(useIsMobile).mockReturnValue({ isMobile: computed(() => isMobile) })

const plugins = [...defaultPlugins()]
const sideBarStore = useSideBar()
Expand All @@ -113,7 +123,7 @@ function getWrapper({ props = {}, isMobileWidth = false, isSideBarOpen = true }
},
global: {
plugins,
provide: { isMobileWidth: ref(isMobileWidth) },
provide: {},
stubs: {
OcButton: false
},
Expand Down
10 changes: 4 additions & 6 deletions packages/web-app-files/src/components/Spaces/SpaceHeader.vue
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
<template>
<div
class="space-header p-4"
:class="{ flex: !imageExpanded && !isMobileWidth, 'space-header-squashed': isSideBarOpen }"
:class="{ flex: !imageExpanded && !isMobile, 'space-header-squashed': isSideBarOpen }"
>
<div
class="space-header-image mr-6 min-w-xs aspect-[16/9]"
:class="{
'space-header-image-expanded w-full max-w-full max-h-full mb-4':
imageExpanded || isMobileWidth,
'space-header-image-expanded w-full max-w-full max-h-full mb-4': imageExpanded || isMobile,
'w-xs max-h-40': !imageExpanded,
'hidden lg:block': isSideBarOpen
}"
Expand Down Expand Up @@ -104,11 +103,9 @@
<script setup lang="ts">
import {
computed,
inject,
nextTick,
onBeforeUnmount,
onMounted,
Ref,
ref,
unref,
useTemplateRef,
Expand All @@ -126,6 +123,7 @@ import {
useSideBar,
useSpacesStore
} from '@opencloud-eu/web-pkg'
import { useIsMobile } from '@opencloud-eu/design-system/composables'
import SpaceContextActions from './SpaceContextActions.vue'
import { useGettext } from 'vue3-gettext'
import { DriveItem } from '@opencloud-eu/web-client/graph/generated'
Expand All @@ -150,7 +148,7 @@ const { imagesLoading, readmesLoading } = storeToRefs(spacesStore)
const sidebarStore = useSideBar()
const { isSideBarOpen } = storeToRefs(sidebarStore)

const isMobileWidth = inject<Ref<boolean>>('isMobileWidth')
const { isMobile } = useIsMobile()

const isDropOpen = ref(false)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ref } from 'vue'
import { computed } from 'vue'
import SpaceHeader from '../../../../src/components/Spaces/SpaceHeader.vue'
import { DriveItem } from '@opencloud-eu/web-client/graph/generated'
import { SpaceResource, Resource, buildSpaceImageResource } from '@opencloud-eu/web-client'
Expand All @@ -7,6 +7,7 @@ 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'
import { useIsMobile } from '@opencloud-eu/design-system/composables'

vi.mock('@opencloud-eu/web-pkg', async (importOriginal) => ({
...(await importOriginal<any>()),
Expand All @@ -24,6 +25,14 @@ vi.mock('@opencloud-eu/web-client', async (importOriginal) => ({
buildSpaceImageResource: vi.fn()
}))

vi.mock('@opencloud-eu/design-system/composables', async (importOriginal) => {
const actual = await importOriginal<typeof import('@opencloud-eu/design-system/composables')>()
return {
...actual,
useIsMobile: vi.fn()
}
})

const getSpaceMock = (spaceImageData: DriveItem = undefined) =>
mock<SpaceResource>({
id: '1',
Expand Down Expand Up @@ -51,7 +60,7 @@ describe('SpaceHeader', () => {
it('should take full width in mobile view', () => {
const wrapper = getWrapper({
space: getSpaceMock({ webDavUrl: '/' }),
isMobileWidth: true
isMobile: true
})
expect(wrapper.find('.space-header').attributes('class')).not.toContain('flex')
expect(wrapper.find('.space-header-image').attributes('class')).toContain(
Expand Down Expand Up @@ -94,14 +103,14 @@ describe('SpaceHeader', () => {
function getWrapper({
space = {} as SpaceResource,
isSideBarOpen = false,
isMobileWidth = false,
isMobile = false,
imagesLoading = [],
readmesLoading = [],
memberCount = 0
}: {
space?: SpaceResource
isSideBarOpen?: boolean
isMobileWidth?: boolean
isMobile?: boolean
imagesLoading?: string[]
readmesLoading?: string[]
memberCount?: number
Expand All @@ -125,6 +134,8 @@ function getWrapper({
...defaultPlugins({ piniaOptions: { spacesState: { imagesLoading, readmesLoading } } })
]

vi.mocked(useIsMobile).mockReturnValue({ isMobile: computed(() => isMobile) })

const sideBarStore = useSideBar()
sideBarStore.isSideBarOpen = isSideBarOpen

Expand All @@ -135,7 +146,7 @@ function getWrapper({
global: {
mocks,
plugins,
provide: { ...mocks, isMobileWidth: ref(isMobileWidth) },
provide: { ...mocks },
stubs: {
'space-context-actions': true,
TextEditor: true
Expand Down
9 changes: 4 additions & 5 deletions packages/web-app-search/src/portals/SearchBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,6 @@ import {
ComponentPublicInstance,
computed,
defineComponent,
inject,
Ref,
ref,
onBeforeUnmount,
unref,
Expand All @@ -158,6 +156,7 @@ import { SearchBarFilter } from '@opencloud-eu/web-pkg'
import { useAvailableProviders } from '../composables'
import { RouteLocationNormalizedLoaded } from 'vue-router'
import { OcDrop } from '@opencloud-eu/design-system/components'
import { useIsMobile } from '@opencloud-eu/design-system/composables'

export default defineComponent({
name: 'SearchBar',
Expand All @@ -166,7 +165,7 @@ export default defineComponent({
const router = useRouter()
const capabilityStore = useCapabilityStore()
const showCancelButton = ref(false)
const isMobileWidth = inject<Ref<boolean>>('isMobileWidth')
const { isMobile } = useIsMobile()
const scopeQueryValue = useRouteQuery('scope')
const availableProviders = useAvailableProviders()
const isAppActive = useIsAppActive()
Expand Down Expand Up @@ -204,15 +203,15 @@ export default defineComponent({
() => unref(optionsDropRef)?.$refs.drop as HTMLElement
)

watch(isMobileWidth, () => {
watch(isMobile, () => {
const searchBarEl = document.getElementById('files-global-search-bar')
if (!searchBarEl) {
return
}

const optionDropVisible = !!document.querySelector('#files-global-search-options')

if (!unref(isMobileWidth)) {
if (!unref(isMobile)) {
searchBarEl.style.visibility = 'visible'
showCancelButton.value = false
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ function getMountedWrapper({
],
mocks: localMocks,
renderStubDefaultSlot: true,
provide: { ...localMocks, isMobileWidth: ref(false) },
provide: { ...localMocks },
stubs: {
'router-link': true,
OcDrop: ocDropStub
Expand Down
7 changes: 4 additions & 3 deletions packages/web-pkg/src/components/AppBar/AppBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,15 @@

<script lang="ts">
import last from 'lodash-es/last'
import { computed, defineComponent, inject, PropType, ref, Ref, unref, useSlots } from 'vue'
import { computed, defineComponent, PropType, ref, unref, useSlots } from 'vue'
import {
isPersonalSpaceResource,
isProjectSpaceResource,
isShareSpaceResource,
Resource,
SpaceResource
} from '@opencloud-eu/web-client'
import { useIsMobile } from '@opencloud-eu/design-system/composables'
import BatchActions from '../BatchActions.vue'
import ContextActions from '../FilesList/ContextActions.vue'
import ViewOptions from '../ViewOptions.vue'
Expand Down Expand Up @@ -240,10 +241,10 @@ export default defineComponent({
spacesStore.spaces.filter((s) => isPersonalSpaceResource(s) || isProjectSpaceResource(s))
)

const isMobileWidth = inject<Ref<boolean>>('isMobileWidth')
const { isMobile } = useIsMobile()
const isTrashLocation = useActiveLocation(isLocationTrashActive, 'files-trash-generic')
const showBreadcrumb = computed(() => {
if (!unref(isMobileWidth) && props.breadcrumbs.length) {
if (!unref(isMobile) && props.breadcrumbs.length) {
return true
}
if (unref(isTrashLocation) && unref(spaces).length === 1) {
Expand Down
17 changes: 14 additions & 3 deletions packages/web-pkg/tests/unit/components/AppBar/AppBar.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ref } from 'vue'
import { computed } from 'vue'
import AppBar from '../../../../src/components/AppBar/AppBar.vue'
import { mock } from 'vitest-mock-extended'
import { Resource, SpaceResource } from '@opencloud-eu/web-client'
Expand All @@ -13,6 +13,15 @@ import { ArchiverService } from '../../../../src/services'
import { FolderView } from '../../../../src/ui/types'
import { useExtensionRegistry, ViewOptions } from '../../../../src'
import { OcBreadcrumb } from '@opencloud-eu/design-system/components'
import { useIsMobile } from '@opencloud-eu/design-system/composables'

vi.mock('@opencloud-eu/design-system/composables', async (importOriginal) => {
const actual = await importOriginal<typeof import('@opencloud-eu/design-system/composables')>()
return {
...actual,
useIsMobile: vi.fn()
}
})

const selectors = {
ocBreadcrumbStub: 'oc-breadcrumb-stub',
Expand Down Expand Up @@ -145,8 +154,10 @@ function getShallowWrapper(
name: 'files-spaces-generic',
path: '/files/spaces/personal/admin'
}),
isMobileWidth = false
isMobile = false
) {
vi.mocked(useIsMobile).mockReturnValue({ isMobile: computed(() => isMobile) })

const plugins = defaultPlugins({
piniaOptions: {
resourcesStore: { resources: selected, selectedIds: selected.map(({ id }) => id) }
Expand All @@ -170,7 +181,7 @@ function getShallowWrapper(
slots,
global: {
plugins,
provide: { ...mocks, isMobileWidth: ref(isMobileWidth) },
provide: { ...mocks },
mocks
}
})
Expand Down
Loading