DialogChatSettings.svelte 883 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <script lang="ts">
  2. import * as Dialog from '$lib/components/ui/dialog';
  3. import { ChatSettings } from '$lib/components/app';
  4. interface Props {
  5. onOpenChange?: (open: boolean) => void;
  6. open?: boolean;
  7. }
  8. let { onOpenChange, open = false }: Props = $props();
  9. let chatSettingsRef: ChatSettings | undefined = $state();
  10. function handleClose() {
  11. onOpenChange?.(false);
  12. }
  13. function handleSave() {
  14. onOpenChange?.(false);
  15. }
  16. $effect(() => {
  17. if (open && chatSettingsRef) {
  18. chatSettingsRef.reset();
  19. }
  20. });
  21. </script>
  22. <Dialog.Root {open} onOpenChange={handleClose}>
  23. <Dialog.Content
  24. class="z-999999 flex h-[100dvh] max-h-[100dvh] min-h-[100dvh] flex-col gap-0 rounded-none p-0
  25. md:h-[64vh] md:max-h-[64vh] md:min-h-0 md:rounded-lg"
  26. style="max-width: 48rem;"
  27. >
  28. <ChatSettings bind:this={chatSettingsRef} onSave={handleSave} />
  29. </Dialog.Content>
  30. </Dialog.Root>