Context
shadcn/ui์์๋ ์ด๋ ์์ดํ
์ ์ ์๋ค ํ๋ค ํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค ๋ Collapsible ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ฅผ ๋ถ์ํ๊ณ ๊ทธ ๋ด์ฉ์ ์ดํดํ๊ธฐ ์ํด ์ด ๊ธ์ ์์ฑํ์๋ค.
Agenda
โข
Collapsible ์ปดํฌ๋ํธ ๋ด์ฉ์ ๋ถ์ํ๊ณ ์ดํดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ
Contents
shadcn/ui์ Sidebar ์ปดํฌ๋ํธ์์๋ Group์ Sub Item์ ์ ์๋ค ํ๋ค ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ด ๊ธฐ๋ฅ์ Collapsible์ด๋ผ๋ ์ปดํฌ๋ํธ์ ๊ทธ ํ์ ์ปดํฌ๋ํธ๋ฅผ ์กฐํฉํ์ฌ ๊ตฌํ๋๋ค.
function Collapsible({
...props
}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
return <CollapsiblePrimitive.Root data-slot='collapsible' {...props} />;
}
TypeScript
๋ณต์ฌ
Collapsible ์ปดํฌ๋ํธ์ด๋ค. radix-ui์ Collapsible.Root์ ๊ฐ์ธ๋ ํ์์ผ๋ก ๊ตฌํ์ด ๋์ด์๋ค. ๊ธฐ๋ฅ์ ์ผ๋ก๋ ์ปจํ
์ธ ์ ํผ์ณ์ง๊ณผ ์ ํ๋ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ํ์ Trigger์ Content์ ์ปจํ
์คํธ๋ฅผ ์ ๊ณตํ๋ค.
function CollapsibleTrigger({
...props
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {
return (
<CollapsiblePrimitive.CollapsibleTrigger
data-slot='collapsible-trigger'
{...props}
/>
);
}
TypeScript
๋ณต์ฌ
CollapsibleTrigger ๋ํ radix-ui์ Collapsible Trigger๋ฅผ ๊ฐ์ธ๋ wrapper ์ปดํฌ๋ํธ์ด๋ค. ๊ธฐ๋ฅ์ ์ผ๋ก๋ Collapsible Root์ ํผ์นจ ์ ํ ์ํ๋ฅผ ํ ๊ธํ๋ ๋ฒํผ์ด๋ค.
function CollapsibleContent({
...props
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {
return (
<CollapsiblePrimitive.CollapsibleContent
data-slot='collapsible-content'
{...props}
/>
);
}
TypeScript
๋ณต์ฌ
CollapsibleContent๋ radix-ui์ Collapsible Content๋ฅผ ๊ฐ์ธ๋ wrapper ์ปดํฌ๋ํธ์ด๋ค. ์์ Collapsible ์ปดํฌ๋ํธ์ CollapsibleTrigger ์ปดํฌ๋ํธ์ ์ฐจ์ด์ ์์ด ๋ชจ๋ radix-ui์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ๋ wrapper ํํ์ด๋ค.
๋ฐฐ์น ํํ๋ ๋ค์๊ณผ ๊ฐ๋ค.
Collapsible (Root)
โโโ CollapsibleTrigger (์ด๊ณ ๋ซ๋ ๋ฒํผ)
โโโ CollapsibleContent (ํผ์ณ์ง ๋ด์ฉ)
Plain Text
๋ณต์ฌ
<Collapsible>
<CollapsibleTrigger>
์ด๊ธฐ / ๋ซ๊ธฐ
</CollapsibleTrigger>
<CollapsibleContent>
๋ด์ฉ
</CollapsibleContent>
</Collapsible>
JavaScript
๋ณต์ฌ
Collapsible์ด ์ต์๋จ์์ CollapsibleTrigger์ CollapsibleContent๋ฅผ ๊ฐ์ผ๋ค. CollapsibleTrigger์ CollapsibleContent๋ ํ์ depth์ ์์นํ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ค๋ช
ํ๊ฒ ์ฒ๋ผ CollapsibleTrigger๋ฅผ ํตํด CollapsibleContent๋ฅผ ํผ์น๊ฑฐ๋ ์ ์ ์ ์๋ค.