mirror of
https://github.com/kmc7468/arkvault.git
synced 2026-02-04 16:16:55 +00:00
Modal, AdaptiveDiv, BottomDiv 컴포넌트를 molecules 디렉터리로 이동 및 리팩토링
This commit is contained in:
1
src/lib/components/organisms/index.ts
Normal file
1
src/lib/components/organisms/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from "./modals";
|
||||
@@ -0,0 +1,18 @@
|
||||
<script lang="ts">
|
||||
import { TextInputModal } from "$lib/components/organisms";
|
||||
|
||||
interface Props {
|
||||
isOpen: boolean;
|
||||
oncreate: (name: string) => Promise<boolean>;
|
||||
}
|
||||
|
||||
let { isOpen = $bindable(), oncreate }: Props = $props();
|
||||
</script>
|
||||
|
||||
<TextInputModal
|
||||
bind:isOpen
|
||||
title="새 카테고리"
|
||||
placeholder="카테고리 이름"
|
||||
submitText="만들기"
|
||||
onsubmit={oncreate}
|
||||
/>
|
||||
22
src/lib/components/organisms/modals/RenameModal.svelte
Normal file
22
src/lib/components/organisms/modals/RenameModal.svelte
Normal file
@@ -0,0 +1,22 @@
|
||||
<script lang="ts">
|
||||
import { TextInputModal } from "$lib/components/organisms";
|
||||
|
||||
interface Props {
|
||||
isOpen: boolean;
|
||||
onbeforeclose?: () => void;
|
||||
onrename: (newName: string) => Promise<boolean>;
|
||||
originalName: string | undefined;
|
||||
}
|
||||
|
||||
let { isOpen = $bindable(), onbeforeclose, onrename, originalName }: Props = $props();
|
||||
</script>
|
||||
|
||||
<TextInputModal
|
||||
bind:isOpen
|
||||
{onbeforeclose}
|
||||
title="이름 바꾸기"
|
||||
placeholder="이름"
|
||||
defaultValue={originalName}
|
||||
submitText="바꾸기"
|
||||
onsubmit={onrename}
|
||||
/>
|
||||
42
src/lib/components/organisms/modals/TextInputModal.svelte
Normal file
42
src/lib/components/organisms/modals/TextInputModal.svelte
Normal file
@@ -0,0 +1,42 @@
|
||||
<script lang="ts">
|
||||
import { TextInput } from "$lib/components/atoms";
|
||||
import { ActionModal, type ConfirmHandler } from "$lib/components/molecules";
|
||||
|
||||
interface Props {
|
||||
defaultValue?: string;
|
||||
isOpen: boolean;
|
||||
onbeforeclose?: () => void;
|
||||
onsubmit: (value: string) => ReturnType<ConfirmHandler>;
|
||||
placeholder: string;
|
||||
submitText: string;
|
||||
title: string;
|
||||
}
|
||||
|
||||
let {
|
||||
defaultValue = "",
|
||||
isOpen = $bindable(),
|
||||
onbeforeclose,
|
||||
onsubmit,
|
||||
placeholder,
|
||||
submitText,
|
||||
title,
|
||||
}: Props = $props();
|
||||
|
||||
let value = $state(defaultValue);
|
||||
|
||||
$effect.pre(() => {
|
||||
if (isOpen) {
|
||||
value = defaultValue;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<ActionModal
|
||||
bind:isOpen
|
||||
{onbeforeclose}
|
||||
{title}
|
||||
confirmText={submitText}
|
||||
onconfirm={() => onsubmit(value)}
|
||||
>
|
||||
<TextInput bind:value {placeholder} class="mb-5" />
|
||||
</ActionModal>
|
||||
3
src/lib/components/organisms/modals/index.ts
Normal file
3
src/lib/components/organisms/modals/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export { default as CategoryCreateModal } from "./CategoryCreateModal.svelte";
|
||||
export { default as RenameModal } from "./RenameModal.svelte";
|
||||
export { default as TextInputModal } from "./TextInputModal.svelte";
|
||||
Reference in New Issue
Block a user