Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitadc116d

Browse files
committed
refactor(CAccordion): move the context outside the component
1 parentd8fd24a commitadc116d

File tree

6 files changed

+29
-25
lines changed

6 files changed

+29
-25
lines changed

‎packages/coreui-react/src/components/accordion/CAccordion.tsx‎

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
importReact,{createContext,forwardRef,HTMLAttributes,useState}from'react'
1+
importReact,{forwardRef,HTMLAttributes,useState}from'react'
22
importPropTypesfrom'prop-types'
33
importclassNamesfrom'classnames'
44

5+
import{CAccordionContext}from'./CAccordionContext'
6+
57
exportinterfaceCAccordionPropsextendsHTMLAttributes<HTMLDivElement>{
68
/**
79
* The active item key.
@@ -21,14 +23,6 @@ export interface CAccordionProps extends HTMLAttributes<HTMLDivElement> {
2123
flush?:boolean
2224
}
2325

24-
exportinterfaceCAccordionContextProps{
25-
_activeItemKey?:number|string
26-
alwaysOpen?:boolean
27-
setActiveKey:React.Dispatch<React.SetStateAction<number|string|undefined>>
28-
}
29-
30-
exportconstCAccordionContext=createContext({}asCAccordionContextProps)
31-
3226
exportconstCAccordion=forwardRef<HTMLDivElement,CAccordionProps>(
3327
({ children, activeItemKey, alwaysOpen=false, className, flush, ...rest},ref)=>{
3428
const[_activeItemKey,setActiveKey]=useState(activeItemKey)
@@ -48,8 +42,8 @@ export const CAccordion = forwardRef<HTMLDivElement, CAccordionProps>(
4842
)
4943

5044
CAccordion.propTypes={
51-
alwaysOpen:PropTypes.bool,
5245
activeItemKey:PropTypes.oneOfType([PropTypes.number,PropTypes.string]),
46+
alwaysOpen:PropTypes.bool,
5347
children:PropTypes.node,
5448
className:PropTypes.string,
5549
flush:PropTypes.bool,

‎packages/coreui-react/src/components/accordion/CAccordionBody.tsx‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ import React, { forwardRef, HTMLAttributes, useContext } from 'react'
22
importPropTypesfrom'prop-types'
33
importclassNamesfrom'classnames'
44

5-
import{CAccordionItemContext}from'./CAccordionItem'
6-
75
import{CCollapse}from'./../collapse/CCollapse'
6+
import{CAccordionItemContext}from'./CAccordionItemContext'
87

98
exportinterfaceCAccordionBodyPropsextendsHTMLAttributes<HTMLDivElement>{
109
/**

‎packages/coreui-react/src/components/accordion/CAccordionButton.tsx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { forwardRef, HTMLAttributes, useContext } from 'react'
22
importPropTypesfrom'prop-types'
33
importclassNamesfrom'classnames'
44

5-
import{CAccordionItemContext}from'./CAccordionItem'
5+
import{CAccordionItemContext}from'./CAccordionItemContext'
66

77
exportinterfaceCAccordionButtonPropsextendsHTMLAttributes<HTMLButtonElement>{
88
/**
@@ -28,7 +28,7 @@ export const CAccordionButton = forwardRef<HTMLButtonElement, CAccordionButtonPr
2828
{children}
2929
</button>
3030
)
31-
},
31+
}
3232
)
3333

3434
CAccordionButton.propTypes={
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import{createContext}from'react'
2+
3+
exportinterfaceCAccordionContextProps{
4+
_activeItemKey?:number|string
5+
alwaysOpen?:boolean
6+
setActiveKey:React.Dispatch<React.SetStateAction<number|string|undefined>>
7+
}
8+
9+
exportconstCAccordionContext=createContext({}asCAccordionContextProps)

‎packages/coreui-react/src/components/accordion/CAccordionItem.tsx‎

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
importReact,{
2-
createContext,
32
forwardRef,
43
HTMLAttributes,
54
useContext,
@@ -11,15 +10,8 @@ import React, {
1110
importPropTypesfrom'prop-types'
1211
importclassNamesfrom'classnames'
1312

14-
import{CAccordionContext}from'./CAccordion'
15-
16-
exportinterfaceCAccordionItemContextProps{
17-
id:string
18-
setVisible:(a:boolean)=>void
19-
visible?:boolean
20-
}
21-
22-
exportconstCAccordionItemContext=createContext({}asCAccordionItemContextProps)
13+
import{CAccordionContext}from'./CAccordionContext'
14+
import{CAccordionItemContext}from'./CAccordionItemContext'
2315

2416
exportinterfaceCAccordionItemPropsextendsHTMLAttributes<HTMLDivElement>{
2517
/**
@@ -38,7 +30,8 @@ export interface CAccordionItemProps extends HTMLAttributes<HTMLDivElement> {
3830

3931
exportconstCAccordionItem=forwardRef<HTMLDivElement,CAccordionItemProps>(
4032
({ children, className, id, itemKey, ...rest},ref)=>{
41-
const_id=id??useId()
33+
constuniqueId=useId()
34+
const_id=id??uniqueId
4235
const_itemKey=useRef(itemKey??_id)
4336

4437
const{ _activeItemKey, alwaysOpen, setActiveKey}=useContext(CAccordionContext)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import{createContext}from'react'
2+
3+
exportinterfaceCAccordionItemContextProps{
4+
id:string
5+
setVisible:(a:boolean)=>void
6+
visible?:boolean
7+
}
8+
9+
exportconstCAccordionItemContext=createContext({}asCAccordionItemContextProps)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp