1- import React , { createContext , useCallback , useContext , useMemo , useState } from "react" ;
1+ import React , { Children , createContext , useCallback , useMemo , useState } from "react" ;
22import styled , { ThemeProvider } from "styled-components" ;
3- import DxcAccordion from "../accordion/Accordion" ;
43import { getMargin } from "../common/utils" ;
54import { spaces } from "../common/variables" ;
65import useTheme from "../useTheme" ;
7- import AccordionGroupPropsType , { AccordionGroupAccordionContextProps , AccordionPropsType } from "./types" ;
6+ import AccordionGroupAccordion from "./AccordionGroupAccordion" ;
7+ import AccordionGroupPropsType , { AccordionGroupAccordionContextProps } from "./types" ;
88
9- const AccordionGroupAccordionContext = createContext < AccordionGroupAccordionContextProps | null > ( null ) ;
10-
11- const AccordionGroupAccordion = ( { ...childProps } : AccordionPropsType ) : JSX . Element => {
12- const { activeIndex, handlerActiveChange, disabled, index } = useContext ( AccordionGroupAccordionContext ) ;
13-
14- return (
15- < DxcAccordion
16- isExpanded = { activeIndex === index }
17- onChange = { ( ) => {
18- handlerActiveChange ( index ) ;
19- } }
20- disabled = { disabled }
21- { ...childProps }
22- >
23- { childProps . children }
24- </ DxcAccordion >
25- ) ;
26- } ;
9+ export const AccordionGroupAccordionContext = createContext < AccordionGroupAccordionContextProps | null > ( null ) ;
2710
2811const DxcAccordionGroup = ( {
2912 defaultIndexActive,
@@ -35,6 +18,7 @@ const DxcAccordionGroup = ({
3518} : AccordionGroupPropsType ) : JSX . Element => {
3619 const colorsTheme = useTheme ( ) ;
3720 const [ innerIndexActive , setInnerIndexActive ] = useState ( defaultIndexActive ?? - 1 ) ;
21+
3822 const handlerActiveChange = useCallback (
3923 ( index : number ) => {
4024 indexActive ?? setInnerIndexActive ( ( prev ) => ( index === prev ? - 1 : index ) ) ;
@@ -50,21 +34,20 @@ const DxcAccordionGroup = ({
5034 return (
5135 < ThemeProvider theme = { colorsTheme . accordion } >
5236 < AccordionGroupContainer margin = { margin } disabled = { disabled } >
53- { ( Array . isArray ( children ) ? children : [ children ] )
54- . filter ( ( child ) => child . type === AccordionGroupAccordion )
55- . map ( ( accordion , index ) => (
56- < AccordionGroupAccordionContext . Provider key = { `accordion-${ index } ` } value = { { index, ...contextValue } } >
57- { accordion }
58- </ AccordionGroupAccordionContext . Provider >
59- ) ) }
37+ { Children . map ( children , ( accordion , index ) => (
38+ < AccordionGroupAccordionContext . Provider key = { `accordion-${ index } ` } value = { { index, ...contextValue } } >
39+ { accordion }
40+ </ AccordionGroupAccordionContext . Provider >
41+ ) ) }
6042 </ AccordionGroupContainer >
6143 </ ThemeProvider >
6244 ) ;
6345} ;
6446
6547DxcAccordionGroup . Accordion = AccordionGroupAccordion ;
6648
67- const calculateWidth = ( margin ) => `calc(100% - ${ getMargin ( margin , "left" ) } - ${ getMargin ( margin , "right" ) } )` ;
49+ const calculateWidth = ( margin : AccordionGroupPropsType [ "margin" ] ) =>
50+ `calc(100% - ${ getMargin ( margin , "left" ) } - ${ getMargin ( margin , "right" ) } )` ;
6851
6952const AccordionGroupContainer = styled . div < {
7053 margin : AccordionGroupPropsType [ "margin" ] ;
0 commit comments