From c2cbe513d1819fcaaa13dc11f59e5327c4adaf05 Mon Sep 17 00:00:00 2001 From: Marco Crapts Date: Mon, 22 May 2023 00:19:46 +0200 Subject: [PATCH] sync with local storage --- components.d.ts | 1 + src/App.vue | 17 ++---- src/components/Note/NoteEditor.vue | 24 ++++----- src/components/Search/SearchBar.vue | 4 +- src/components/Spinner.vue | 1 + src/components/TopBar.vue | 4 +- src/components/ViewModes/ListView.vue | 4 +- src/components/ViewModes/Note.vue | 2 +- src/composables/useFirebase.ts | 2 +- src/composables/useNotes.ts | 74 ++++++++++++++++++--------- src/composables/useViewMode.ts | 2 +- src/main.ts | 8 ++- src/style.scss | 6 +-- src/types.d.ts | 13 +++++ 14 files changed, 95 insertions(+), 67 deletions(-) create mode 100644 src/components/Spinner.vue diff --git a/components.d.ts b/components.d.ts index 7cd02e4..f7bba81 100644 --- a/components.d.ts +++ b/components.d.ts @@ -28,6 +28,7 @@ declare module '@vue/runtime-core' { SkeletonNote: typeof import('./src/components/Skeleton/SkeletonNote.vue')['default'] SkeletonSidebarItem: typeof import('./src/components/Skeleton/SkeletonSidebarItem.vue')['default'] SkeletonTopBar: typeof import('./src/components/Skeleton/SkeletonTopBar.vue')['default'] + Spinner: typeof import('./src/components/Spinner.vue')['default'] TopBar: typeof import('./src/components/TopBar.vue')['default'] } } diff --git a/src/App.vue b/src/App.vue index 54d9fc1..30168f0 100644 --- a/src/App.vue +++ b/src/App.vue @@ -6,23 +6,15 @@ import { initialized } from '@/composables/useFirebase' import firebase from 'firebase/compat/app' import * as firebaseui from 'firebaseui' -const sideBarCollapsed = ref(windowIsMobile()) +const sideBarCollapsed = ref(windowIsMobile()) -const Note = defineAsyncComponent(() => import('@/components/ViewModes/Note.vue')) -const ListView = defineAsyncComponent(() => import('@/components/ViewModes/ListView.vue')) -const Mindmap = defineAsyncComponent(() => import('@/components/ViewModes/Mindmap.vue')) +// const Note = defineAsyncComponent(() => import('@/components/ViewModes/Note.vue')) +// const ListView = defineAsyncComponent(() => import('@/components/ViewModes/ListView.vue')) +// const Mindmap = defineAsyncComponent(() => import('@/components/ViewModes/Mindmap.vue')) const firebaseAuthUI = firebaseui.auth.AuthUI.getInstance() || new firebaseui.auth.AuthUI(firebase.auth()) provide('firebaseAuthUI', firebaseAuthUI) - -// const setMinHeight = () => { -// const app = document.querySelector('#app') -// app?.setAttribute('style', `min-height: ${window.innerHeight}px`) -// } -// const handleResize = useDebounceFn(() => setMinHeight(), 100, { maxWait: 100 }) -// window.addEventListener('resize', handleResize) -// setMinHeight() - diff --git a/src/components/Note/NoteEditor.vue b/src/components/Note/NoteEditor.vue index a13e369..790a0fc 100644 --- a/src/components/Note/NoteEditor.vue +++ b/src/components/Note/NoteEditor.vue @@ -38,7 +38,7 @@ const editorConfig = { ParagraphPlugin, ListPlugin, AutoformatPlugin, - ContextedPlugin, + ContextedPlugin ], toolbar: { items: [ @@ -51,10 +51,10 @@ const editorConfig = { 'redo', 'heading', 'bulletedList', - 'numberedList', - ], + 'numberedList' + ] }, - placeholder: 'Click here to start typing...', + placeholder: 'Click here to start typing...' } const editorElement = ref(null) @@ -70,10 +70,10 @@ const handleClick = ({ data }: { data: any }) => { } const autocompleteRef = ref | null>(null) -const showAutocomplete = ref(false) -const autocompleteStyle = ref({}) -const autocompleteText = ref('') -const autocompleteReverse = ref(false) +const showAutocomplete = ref(false) +const autocompleteStyle = ref<{ [key: string]: any }>({}) +const autocompleteText = ref('') +const autocompleteReverse = ref(false) const handleAutocomplete = async (event: AutocompleteEvent) => { const position = event.position @@ -84,7 +84,7 @@ const handleAutocomplete = async (event: AutocompleteEvent) => { ) autocompleteStyle.value = { top: `${position.top - rect.top + lineHeight}px`, - left: `${position.left - rect.left}px`, + left: `${position.left - rect.left}px` } } autocompleteText.value = event.autocompleteText || '' @@ -99,12 +99,10 @@ const handleAutocomplete = async (event: AutocompleteEvent) => { editorRect && autocompleteRect.bottom > editorRect.bottom ) { - const autocompleteHeight = parseFloat( - window.getComputedStyle(autocompleteElem).height - ) + const autocompleteHeight = parseFloat(window.getComputedStyle(autocompleteElem).height) autocompleteStyle.value = { ...autocompleteStyle.value, - top: `${position.top - editorRect.top - autocompleteHeight}px`, + top: `${position.top - editorRect.top - autocompleteHeight}px` } autocompleteReverse.value = true } else { diff --git a/src/components/Search/SearchBar.vue b/src/components/Search/SearchBar.vue index 8669057..7185978 100644 --- a/src/components/Search/SearchBar.vue +++ b/src/components/Search/SearchBar.vue @@ -5,7 +5,7 @@ const emit = defineEmits<{ active: [active: boolean] }>() -const active = ref(false) +const active = ref(false) watch(active, () => { if (!active.value) { query.value = '' @@ -14,7 +14,7 @@ watch(active, () => { emit('active', active.value) }) -const query = ref('') +const query = ref('') const results = computed(() => { return query.value ? findNotes(query.value) : notes.value }) diff --git a/src/components/Spinner.vue b/src/components/Spinner.vue new file mode 100644 index 0000000..271ecf8 --- /dev/null +++ b/src/components/Spinner.vue @@ -0,0 +1 @@ + diff --git a/src/components/TopBar.vue b/src/components/TopBar.vue index 8839a46..7766c28 100644 --- a/src/components/TopBar.vue +++ b/src/components/TopBar.vue @@ -11,7 +11,7 @@ const emit = defineEmits<{ toggleSideBar: [] }>() -const searchActive = ref(false) +const searchActive = ref(false) const signOut = async (close: () => Promise) => { await firebaseSignOut() @@ -19,7 +19,7 @@ const signOut = async (close: () => Promise) => { } const authUI: any = inject('firebaseAuthUI') -const authModalInitialStateOpen = ref(authUI.isPendingRedirect()) +const authModalInitialStateOpen = ref(authUI.isPendingRedirect())