From aec8139a1932a8f37f102d8b190417c71ac9ff12 Mon Sep 17 00:00:00 2001 From: Amir Raminfar Date: Mon, 26 Aug 2024 07:58:39 -0700 Subject: [PATCH] feat: adds animations to bottom when in live mode (#3231) --- assets/auto-imports.d.ts | 9 ++++ .../components/LogViewer/EventSource.spec.ts | 5 ++- assets/components/LogViewer/LogList.vue | 12 +++--- .../__snapshots__/EventSource.spec.ts.snap | 2 +- assets/components/ScrollableView.vue | 42 +++++++++++++++---- assets/composable/eventStreams.ts | 2 +- assets/composable/logContext.ts | 1 + assets/composable/scrollContext.ts | 24 +++++++++++ tailwind.config.ts | 3 ++ 9 files changed, 83 insertions(+), 17 deletions(-) create mode 100644 assets/composable/scrollContext.ts diff --git a/assets/auto-imports.d.ts b/assets/auto-imports.d.ts index 148b4894..247ab533 100644 --- a/assets/auto-imports.d.ts +++ b/assets/auto-imports.d.ts @@ -107,6 +107,7 @@ declare global { const provideLocal: typeof import('@vueuse/core')['provideLocal'] const provideLogDetails: typeof import('./composable/showLogDetails')['provideLogDetails'] const provideLoggingContext: typeof import('./composable/logContext')['provideLoggingContext'] + const provideScrollContext: typeof import('./composable/scrollContext')['provideScrollContext'] const reactify: typeof import('@vueuse/core')['reactify'] const reactifyObject: typeof import('@vueuse/core')['reactifyObject'] const reactive: typeof import('vue')['reactive'] @@ -123,6 +124,7 @@ declare global { const resolveComponent: typeof import('vue')['resolveComponent'] const resolveRef: typeof import('@vueuse/core')['resolveRef'] const resolveUnref: typeof import('@vueuse/core')['resolveUnref'] + const scrollContextKey: typeof import('./composable/scrollContext')['scrollContextKey'] const search: typeof import('./stores/settings')['search'] const sessionHost: typeof import('./composable/storage')['sessionHost'] const setActivePinia: typeof import('pinia')['setActivePinia'] @@ -291,6 +293,7 @@ declare global { const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea'] const useScriptTag: typeof import('@vueuse/core')['useScriptTag'] const useScroll: typeof import('@vueuse/core')['useScroll'] + const useScrollContext: typeof import('./composable/scrollContext')['useScrollContext'] const useScrollLock: typeof import('@vueuse/core')['useScrollLock'] const useSearchFilter: typeof import('./composable/search')['useSearchFilter'] const useSeoMeta: typeof import('@vueuse/head')['useSeoMeta'] @@ -466,6 +469,7 @@ declare module 'vue' { readonly provide: UnwrapRef readonly provideLocal: UnwrapRef readonly provideLoggingContext: UnwrapRef + readonly provideScrollContext: UnwrapRef readonly reactify: UnwrapRef readonly reactifyObject: UnwrapRef readonly reactive: UnwrapRef @@ -482,6 +486,7 @@ declare module 'vue' { readonly resolveComponent: UnwrapRef readonly resolveRef: UnwrapRef readonly resolveUnref: UnwrapRef + readonly scrollContextKey: UnwrapRef readonly search: UnwrapRef readonly sessionHost: UnwrapRef readonly setActivePinia: UnwrapRef @@ -648,6 +653,7 @@ declare module 'vue' { readonly useScreenSafeArea: UnwrapRef readonly useScriptTag: UnwrapRef readonly useScroll: UnwrapRef + readonly useScrollContext: UnwrapRef readonly useScrollLock: UnwrapRef readonly useSearchFilter: UnwrapRef readonly useSeoMeta: UnwrapRef @@ -816,6 +822,7 @@ declare module '@vue/runtime-core' { readonly provide: UnwrapRef readonly provideLocal: UnwrapRef readonly provideLoggingContext: UnwrapRef + readonly provideScrollContext: UnwrapRef readonly reactify: UnwrapRef readonly reactifyObject: UnwrapRef readonly reactive: UnwrapRef @@ -832,6 +839,7 @@ declare module '@vue/runtime-core' { readonly resolveComponent: UnwrapRef readonly resolveRef: UnwrapRef readonly resolveUnref: UnwrapRef + readonly scrollContextKey: UnwrapRef readonly search: UnwrapRef readonly sessionHost: UnwrapRef readonly setActivePinia: UnwrapRef @@ -998,6 +1006,7 @@ declare module '@vue/runtime-core' { readonly useScreenSafeArea: UnwrapRef readonly useScriptTag: UnwrapRef readonly useScroll: UnwrapRef + readonly useScrollContext: UnwrapRef readonly useScrollLock: UnwrapRef readonly useSearchFilter: UnwrapRef readonly useSeoMeta: UnwrapRef diff --git a/assets/components/LogViewer/EventSource.spec.ts b/assets/components/LogViewer/EventSource.spec.ts index 2fb970e2..72b6e92f 100644 --- a/assets/components/LogViewer/EventSource.spec.ts +++ b/assets/components/LogViewer/EventSource.spec.ts @@ -74,7 +74,10 @@ describe("", () => { LogViewer, }, provide: { - scrollingPaused: computed(() => false), + [scrollContextKey as symbol]: { + paused: computed(() => false), + loading: computed(() => false), + }, [loggingContextKey as symbol]: { containers: computed(() => [{ id: "abc", image: "test:v123", host: "localhost" }]), streamConfig: reactive({ stdout: true, stderr: true }), diff --git a/assets/components/LogViewer/LogList.vue b/assets/components/LogViewer/LogList.vue index 536376aa..4bdd3afd 100644 --- a/assets/components/LogViewer/LogList.vue +++ b/assets/components/LogViewer/LogList.vue @@ -19,22 +19,24 @@ /> -
- -