Skip to content

Commit

Permalink
🐛 Controlled Accordion の初期値に対してアコーディオンが開かない (#1607)
Browse files Browse the repository at this point in the history
  • Loading branch information
deatiger committed Apr 25, 2024
1 parent f3337a1 commit 86c70f7
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 4 deletions.
5 changes: 5 additions & 0 deletions .changeset/twelve-spoons-wink.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"ingred-ui": patch
---

:bug: Fix to open accordion by controlled state
2 changes: 1 addition & 1 deletion src/components/Accordion/Accordion.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export const Multiple: StoryObj<AccordionProps> = {

export const Controlled: StoryObj<AccordionProps> = {
render: () => {
const [expanded, setExpanded] = React.useState<string | false>(false);
const [expanded, setExpanded] = React.useState<string | false>("title1");
const handleChange =
(panel: string) => (_: React.SyntheticEvent, newExpanded: boolean) => {
setExpanded(newExpanded ? panel : false);
Expand Down
11 changes: 8 additions & 3 deletions src/components/Accordion/Accordion.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@ const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(
const [overflow, setOverflow] = useState<"hidden" | "visible">("hidden");
const accordionContentContainerRef = useRef<HTMLDivElement>(null);

const handleChange = (event: React.SyntheticEvent, expanded: boolean) => {
setExpandedState(expanded);
onChange && onChange(event, expanded);
const setContentStyle = (expanded: boolean) => {
if (expanded) {
setHeight(`${accordionContentContainerRef.current?.scrollHeight ?? 0}px`);
} else {
Expand All @@ -39,6 +37,12 @@ const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(
}
};

const handleChange = (event: React.SyntheticEvent, expanded: boolean) => {
setExpandedState(expanded);
setContentStyle(expanded);
onChange && onChange(event, expanded);
};

const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {
handleChange(event, !expandedState);
};
Expand All @@ -58,6 +62,7 @@ const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(

useEffect(() => {
setExpandedState(expanded);
setContentStyle(expanded);
}, [expanded]);

return (
Expand Down

0 comments on commit 86c70f7

Please sign in to comment.