diff --git a/README.md b/README.md index abed358910..7cb1dc0b1c 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ The repository's `packages` also contains the following apps, which can be en-/d - **ocm:** Open Cloud Mesh integration to allow for collaboration across OpenCloud instances - **pdf-viewer:** An extension for opening PDF files without leaving the UI - **preview:** An extension for opening audio, video and image files -- **search:** An extension for registering search providers, which then get rendered into the layout in the **runtime** using a portal +- **search:** An extension for registering search providers, which then get rendered into the layout in the **runtime** using an extension point - **text-editor:** An extension for creating, opening and editing plain text files, like e.g. `.md` or `.txt` - **webfinger:** Redirect app for the OpenCloud webfinger service diff --git a/package.json b/package.json index dada0acad4..53a67ec166 100644 --- a/package.json +++ b/package.json @@ -106,8 +106,7 @@ "pnpm": { "patchedDependencies": { "caf@15.0.1": "patches/caf@15.0.1.patch", - "vue3-gettext@2.4.0": "patches/vue3-gettext@2.4.0.patch", - "portal-vue@3.0.0": "patches/portal-vue@3.0.0.patch" + "vue3-gettext@2.4.0": "patches/vue3-gettext@2.4.0.patch" } } } diff --git a/packages/design-system/docs/.vitepress/theme/index.ts b/packages/design-system/docs/.vitepress/theme/index.ts index 5ca6ee8e86..d1d147466f 100644 --- a/packages/design-system/docs/.vitepress/theme/index.ts +++ b/packages/design-system/docs/.vitepress/theme/index.ts @@ -1,6 +1,5 @@ import './tailwind.css' import DefaultTheme from 'vitepress/theme-without-fonts' -import PortalVue from 'portal-vue' import './../../../src/styles/layers.css' import { createGettext } from 'vue3-gettext' import { createPinia } from 'pinia' @@ -17,7 +16,6 @@ export default { const pinia = createPinia() app.use(gettext) app.use(pinia) - app.use(PortalVue) app.component('LiveCodeBlock', LiveCodeBlock) app.component('ComponentApi', ComponentApi) diff --git a/packages/design-system/docs/components/OcDrop/OcDrop.md b/packages/design-system/docs/components/OcDrop/OcDrop.md index 9075cca7fd..3cb270714c 100644 --- a/packages/design-system/docs/components/OcDrop/OcDrop.md +++ b/packages/design-system/docs/components/OcDrop/OcDrop.md @@ -52,7 +52,7 @@ The following example shows how to use the component to display action items. ### Mobile -The mobile version of the drop uses a bottom drawer to display its content. It requires a portal to `app.runtime.bottom.drawer` to be set up in your application layout. +The mobile version of the drop uses a bottom drawer to display its content. It requires a div with the id `app-runtime-bottom-drawer` to be set up in your application layout. You can specify a title for the bottom drawer using the `title` prop. diff --git a/packages/design-system/docs/components/OcDrop/mobile.vue b/packages/design-system/docs/components/OcDrop/mobile.vue index 9395a3bdef..4ee57c5caf 100644 --- a/packages/design-system/docs/components/OcDrop/mobile.vue +++ b/packages/design-system/docs/components/OcDrop/mobile.vue @@ -1,10 +1,7 @@ - diff --git a/packages/design-system/package.json b/packages/design-system/package.json index e2c0d3499d..11b02f9929 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -110,7 +110,6 @@ "fuse.js": "^7.0.0", "lodash-es": "^4.17.21", "luxon": "^3.5.0", - "portal-vue": "^3.0.0", "tippy.js": "^6.3.7", "vue-inline-svg": "^4.0.0", "vue-router": "^5.0.0", diff --git a/packages/design-system/src/components/OcDatepicker/__snapshots__/OcDatepicker.spec.ts.snap b/packages/design-system/src/components/OcDatepicker/__snapshots__/OcDatepicker.spec.ts.snap index 5f4f13d99d..35f5651715 100644 --- a/packages/design-system/src/components/OcDatepicker/__snapshots__/OcDatepicker.spec.ts.snap +++ b/packages/design-system/src/components/OcDatepicker/__snapshots__/OcDatepicker.spec.ts.snap @@ -5,12 +5,12 @@ exports[`OcDatePicker > renders 1`] = `
- +
- +
" `; diff --git a/packages/design-system/src/components/OcDrop/OcMobileDrop.spec.ts b/packages/design-system/src/components/OcDrop/OcMobileDrop.spec.ts index f2cde7686d..fe2c1c4b1e 100644 --- a/packages/design-system/src/components/OcDrop/OcMobileDrop.spec.ts +++ b/packages/design-system/src/components/OcDrop/OcMobileDrop.spec.ts @@ -143,7 +143,7 @@ const getWrapper = (props = { closeOnClick: false }) => { ...props }, attachTo: document.body, - global: { renderStubDefaultSlot: true, plugins } + global: { renderStubDefaultSlot: true, plugins, stubs: { Teleport: true } } }) } } diff --git a/packages/design-system/src/components/OcDrop/OcMobileDrop.vue b/packages/design-system/src/components/OcDrop/OcMobileDrop.vue index a143977640..f82f507b08 100644 --- a/packages/design-system/src/components/OcDrop/OcMobileDrop.vue +++ b/packages/design-system/src/components/OcDrop/OcMobileDrop.vue @@ -1,5 +1,5 @@ diff --git a/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue b/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue index 810b70dc6c..4cfa9acc29 100644 --- a/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue +++ b/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue @@ -102,11 +102,7 @@ - + @@ -100,6 +96,8 @@ import { ImageDimension } from '../../../../constants' import { ProcessorType } from '../../../../services' import { isLocationSpacesActive } from '../../../../router' import { useGettext } from 'vue3-gettext' +import CustomComponentTarget from '../../../CustomComponentTarget.vue' +import { fileSideBarSpaceDetailsTableExtensionPoint } from '../../../../extensionPoints' const { showShareIndicators = true } = defineProps<{ showShareIndicators?: boolean diff --git a/packages/web-pkg/src/components/index.ts b/packages/web-pkg/src/components/index.ts index bdef64448c..95daeca5c9 100644 --- a/packages/web-pkg/src/components/index.ts +++ b/packages/web-pkg/src/components/index.ts @@ -25,7 +25,6 @@ export { default as QuotaSelect } from './QuotaSelect.vue' export { default as SpaceQuota } from './SpaceQuota.vue' export { default as SearchBarFilter } from './SearchBarFilter.vue' export { default as ViewOptions } from './ViewOptions.vue' -export { default as PortalTarget } from './PortalTarget.vue' export { default as CreateShortcutModal } from './CreateShortcutModal.vue' export { default as CreateLinkModal } from './CreateLinkModal.vue' export { default as VersionCheck } from './VersionCheck.vue' diff --git a/packages/web-pkg/src/composables/index.ts b/packages/web-pkg/src/composables/index.ts index e1ce63ce9a..5e3617df4d 100644 --- a/packages/web-pkg/src/composables/index.ts +++ b/packages/web-pkg/src/composables/index.ts @@ -22,7 +22,6 @@ export * from './navItems' export * from './pagination' export * from './passwordPolicyService' export * from './piniaStores' -export * from './portalTarget' export * from './previewService' export * from './requestHeaders' export * from './resources' diff --git a/packages/web-pkg/src/composables/piniaStores/extensionRegistry/types.ts b/packages/web-pkg/src/composables/piniaStores/extensionRegistry/types.ts index 584491aae3..3af3b6308e 100644 --- a/packages/web-pkg/src/composables/piniaStores/extensionRegistry/types.ts +++ b/packages/web-pkg/src/composables/piniaStores/extensionRegistry/types.ts @@ -59,6 +59,7 @@ export interface FolderViewExtension extends Extension { export interface CustomComponentExtension extends Extension { type: 'customComponent' content: Slot | Component + componentProps?: () => Record } export interface AccountExtension extends Extension { diff --git a/packages/web-pkg/src/composables/portalTarget/eventTopics.ts b/packages/web-pkg/src/composables/portalTarget/eventTopics.ts deleted file mode 100644 index ba25403837..0000000000 --- a/packages/web-pkg/src/composables/portalTarget/eventTopics.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum PortalTargetEventTopics { - mounted = 'portal-target.mounted' -} diff --git a/packages/web-pkg/src/composables/portalTarget/index.ts b/packages/web-pkg/src/composables/portalTarget/index.ts deleted file mode 100644 index 5b2ee447cc..0000000000 --- a/packages/web-pkg/src/composables/portalTarget/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './eventTopics' -export * from './usePortalTarget' diff --git a/packages/web-pkg/src/composables/portalTarget/usePortalTarget.ts b/packages/web-pkg/src/composables/portalTarget/usePortalTarget.ts deleted file mode 100644 index 012b9d71e8..0000000000 --- a/packages/web-pkg/src/composables/portalTarget/usePortalTarget.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useWormhole } from 'portal-vue' -import { TransportInput } from 'portal-vue/types' -import { useEventBus } from '../eventBus' -import { PortalTargetEventTopics } from './eventTopics' - -export const usePortalTarget = () => { - const eventBus = useEventBus() - const wormhole = useWormhole() - - const registerPortal = (transportInput: TransportInput) => { - eventBus.subscribe(PortalTargetEventTopics.mounted, () => { - wormhole.open(transportInput) - }) - } - - return { - registerPortal - } -} diff --git a/packages/web-pkg/src/extensionPoints.ts b/packages/web-pkg/src/extensionPoints.ts new file mode 100644 index 0000000000..a5529b1b36 --- /dev/null +++ b/packages/web-pkg/src/extensionPoints.ts @@ -0,0 +1,14 @@ +import { CustomComponentExtension, ExtensionPoint } from './composables' +import { computed } from 'vue' + +export const fileSideBarSpaceDetailsTableExtensionPoint: ExtensionPoint = + { + id: 'app.files.sidebar.space-details.table', + extensionType: 'customComponent' + } + +export const extensionPoints = () => { + return computed[]>(() => { + return [fileSideBarSpaceDetailsTableExtensionPoint] + }) +} diff --git a/packages/web-pkg/src/index.ts b/packages/web-pkg/src/index.ts index 6a5b5ad470..fa9c551bac 100644 --- a/packages/web-pkg/src/index.ts +++ b/packages/web-pkg/src/index.ts @@ -3,6 +3,7 @@ export * from './components' export * from './composables' export * from './constants' export * from './errors' +export * from './extensionPoints' export * from './helpers' export * from './http' export * from './observer' diff --git a/packages/web-pkg/tests/unit/components/Filters/__snapshots__/DateFilter.spec.ts.snap b/packages/web-pkg/tests/unit/components/Filters/__snapshots__/DateFilter.spec.ts.snap index ff9960b32e..c097a8130e 100644 --- a/packages/web-pkg/tests/unit/components/Filters/__snapshots__/DateFilter.spec.ts.snap +++ b/packages/web-pkg/tests/unit/components/Filters/__snapshots__/DateFilter.spec.ts.snap @@ -85,25 +85,25 @@ exports[`DateFilter > can use a custom attribute as display name 1`] = `
- +
- +
- +
- +
- +
- +
" `; diff --git a/packages/web-runtime/package.json b/packages/web-runtime/package.json index ed50d024bb..cba3a0cc41 100644 --- a/packages/web-runtime/package.json +++ b/packages/web-runtime/package.json @@ -28,7 +28,6 @@ "oidc-client-ts": "^3.0.0", "p-queue": "9.1.0", "pinia": "3.0.4", - "portal-vue": "^3.0.0", "qs": "6.15.0", "uuid": "13.0.0", "vue-concurrency": "5.0.3", diff --git a/packages/web-runtime/src/components/Topbar/TopBar.vue b/packages/web-runtime/src/components/Topbar/TopBar.vue index e39f3af9e1..1c2cd2828c 100644 --- a/packages/web-runtime/src/components/Topbar/TopBar.vue +++ b/packages/web-runtime/src/components/Topbar/TopBar.vue @@ -1,11 +1,7 @@