From feb2fb56c67be75e2df57e6d4da809774aa3a098 Mon Sep 17 00:00:00 2001 From: Peaceultime Date: Sun, 19 Oct 2025 23:35:11 +0200 Subject: [PATCH] New default layout without vuejs rendering (still needs some fixes) --- app.vue | 12 +-- db.sqlite | Bin 761856 -> 761856 bytes db.sqlite-shm | Bin 32768 -> 32768 bytes db.sqlite-wal | Bin 0 -> 922912 bytes layouts/default.vue | 142 +++++++++++--------------- pages/character/[id]/index.client.vue | 4 +- shared/character.util.ts | 12 ++- shared/components.util.ts | 2 +- 8 files changed, 73 insertions(+), 99 deletions(-) diff --git a/app.vue b/app.vue index 210c286..d386b6b 100644 --- a/app.vue +++ b/app.vue @@ -1,13 +1,11 @@ diff --git a/db.sqlite b/db.sqlite index 7c426253c1533eda40437c617ca9a78fbf947fc5..76c388d5771e66739c84f1d482797eb82d906ee8 100644 GIT binary patch delta 183 zcmZoTpx1CfZ^QX`&aWQ785kJ!I9Vp&&R5y|C!SG(87S1$(AL1%*1*)(z`U)2h4BJ6 zZw~_#S1torF3+#ch60IP0H4J?co zxPfYzcz!YP_VE1LY^ZRRN3v0akC#D|)0eT)lA%!s!RDR*D~5FvOG_ayZ~KH;Rv=~r UVs;?r0Afxc=Gs0Xmb<_S0B;Z~mH+?% diff --git a/db.sqlite-shm b/db.sqlite-shm index fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10..74c3d56208c3f3589cda652d5a85999ba7c4941d 100644 GIT binary patch literal 32768 zcmeI)MQj%^6oBz>Fktxb;qDA~cXyZJ?(XjH?ydudySoi{4<|^taV3F2aDW3B62gIe zFL`a#G)?+zdwpT=!ub|&0~rLN-})1Q{8aUG#xl{-QC&XP8T6%j-O$L0Jnuh51g8u8 z!}Wo!zQ@}@`{kGTG5fQP9TQIjcG@=R3XhAF5(3bXeq%&RVPEUH%m;MZ7 zFhd#6NJcZ3@l0egQ<=_8W;2)hEMzfDSBvAPvXG4&tIPem$ImFm=_Hg%~_LmJbR=Cq_W5wxQNo#;Y0 zdeDnL^kV>n7{V|{Fp4pZV*-}4MZ zIK&Z-1!@wX;tc1wz$LD5jT_wJHg~ztLmu;#=e*?g_bSH!)pdCo1r$&~0Rr Dn9UO0 diff --git a/db.sqlite-wal b/db.sqlite-wal index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..268e8802f0a9d9474c3a9b18ddb4a9d13f361a93 100644 GIT binary patch literal 922912 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 - -
-
- - - - - -
- - - - - Personnages - - - Personnages publics - Nouveau personnage - - - -
- -
-
-
- - -
-
-
- -
-
-
- -
-
-
- Mentions légales - Conditions d'utilisations -

Copyright Peaceultime - 2025

-
-
- - -
-
+
+
\ No newline at end of file diff --git a/pages/character/[id]/index.client.vue b/pages/character/[id]/index.client.vue index be35e0c..592068e 100644 --- a/pages/character/[id]/index.client.vue +++ b/pages/character/[id]/index.client.vue @@ -26,12 +26,12 @@ onMounted(() => { if(container.value && id) { const character = new CharacterSheet(id, user); - container.value.appendChild(character.container); + container.value.replaceWith(character.container); } }); }); \ No newline at end of file diff --git a/shared/character.util.ts b/shared/character.util.ts index 1763587..3d8cbf4 100644 --- a/shared/character.util.ts +++ b/shared/character.util.ts @@ -374,7 +374,7 @@ export class CharacterCompiler } saveNotes() { - useRequestFetch()(`/api/character/${this.character.id}/notes`, { + return useRequestFetch()(`/api/character/${this.character.id}/notes`, { method: 'POST', body: this._character.notes, }).then(() => {}).catch(() => { @@ -1233,7 +1233,7 @@ export class CharacterSheet { user: ComputedRef; character?: CharacterCompiler; - container: HTMLElement = div(); + container: HTMLElement = div('flex h-full'); tabs?: HTMLDivElement & { refresh: () => void }; constructor(id: string, user: ComputedRef) { @@ -1274,6 +1274,10 @@ export class CharacterSheet const publicNotes = new MarkdownEditor(); const privateNotes = new MarkdownEditor(); + const loadableIcon = icon('radix-icons:paper-plane', { width: 16, height: 16 }); + const saveLoading = loading('small'); + const saveNotes = () => { loadableIcon.replaceWith(saveLoading); this.character?.saveNotes().finally(() => { saveLoading.replaceWith(loadableIcon) }); } + publicNotes.onChange = (v) => this.character!.character.notes!.public = v; privateNotes.onChange = (v) => this.character!.character.notes!.private = v; publicNotes.content = this.character!.character.notes!.public!; @@ -1292,8 +1296,8 @@ export class CharacterSheet { id: 'notes', title: [ text('Notes') ], content: () => [ div('flex flex-col gap-2', [ - div('flex flex-col gap-2 border-b border-light-35 dark:border-dark-35 pb-4', [ div('flex flex-row w-full items-center justify-between', [ span('text-lg font-bold', 'Notes publics'), tooltip(button(icon('radix-icons:paper-plane', { width: 16, height: 16 }), () => this.character!.saveNotes(), 'p-1'), 'Enregistrer', 'right') ]), div('border border-light-35 dark:border-dark-35 p-1', [ publicNotes.dom ]) ]), - div('flex flex-col gap-2', [ span('text-lg font-bold', 'Notes privés'), div('border border-light-35 dark:border-dark-35 p-1', [ privateNotes.dom ]) ]), + div('flex flex-col gap-2 border-b border-light-35 dark:border-dark-35 pb-4', [ div('flex flex-row w-full items-center justify-between', [ span('text-lg font-bold', 'Notes publics'), tooltip(button(loadableIcon, saveNotes, 'p-1 items-center justify-center'), 'Enregistrer', 'right') ]), div('border border-light-35 dark:border-dark-35 bg-light20 dark:bg-dark-20 p-1 h-64', [ publicNotes.dom ]) ]), + div('flex flex-col gap-2', [ span('text-lg font-bold', 'Notes privés'), div('border border-light-35 dark:border-dark-35 bg-light20 dark:bg-dark-20 p-1 h-64', [ privateNotes.dom ]) ]), ]) ] }, ], { focused: 'abilities', class: { container: 'flex-1 gap-4 px-4 w-[960px]' } }); diff --git a/shared/components.util.ts b/shared/components.util.ts index d7d6965..00e12b3 100644 --- a/shared/components.util.ts +++ b/shared/components.util.ts @@ -5,7 +5,7 @@ import { clamp } from "./general.util"; import { Tree } from "./tree"; import type { Placement } from "@floating-ui/dom"; -export function link(properties?: NodeProperties & { active?: Class }, link?: RouteLocationAsRelativeTyped, children?: NodeChildren) +export function link(children: NodeChildren, properties?: NodeProperties & { active?: Class }, link?: RouteLocationAsRelativeTyped) { const router = useRouter(); const nav = link ? router.resolve(link) : undefined;