|
1 | 1 | import React, {useEffect, useState, type ComponentPropsWithoutRef, type ReactElement} from 'react' |
2 | | -import styled from 'styled-components' |
3 | 2 | import type {SxProp} from '../sx' |
4 | | -import sx from '../sx' |
5 | | -import {toggleStyledComponent} from '../internal/utils/toggleStyledComponent' |
6 | | -import {useFeatureFlag} from '../FeatureFlags' |
7 | 3 | import {clsx} from 'clsx' |
8 | 4 | import classes from './Details.module.css' |
9 | 5 | import {useMergedRefs} from '../internal/hooks/useMergedRefs' |
10 | | - |
11 | | -const CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_ga' |
12 | | - |
13 | | -const StyledDetails = toggleStyledComponent( |
14 | | - CSS_MODULES_FEATURE_FLAG, |
15 | | - 'details', |
16 | | - styled.details<SxProp>` |
17 | | - & > summary { |
18 | | - list-style: none; |
19 | | - } |
20 | | - & > summary::-webkit-details-marker { |
21 | | - display: none; |
22 | | - } |
23 | | -
|
24 | | - ${sx}; |
25 | | - `, |
26 | | -) |
| 6 | +import {defaultSxProp} from '../utils/defaultSxProp' |
| 7 | +import Box from '../Box' |
27 | 8 |
|
28 | 9 | const Root = React.forwardRef<HTMLDetailsElement, DetailsProps>( |
29 | | - ({className, children, ...rest}, forwardRef): ReactElement => { |
30 | | - const enabled = useFeatureFlag(CSS_MODULES_FEATURE_FLAG) |
| 10 | + ({className, children, sx: sxProp = defaultSxProp, ...rest}, forwardRef): ReactElement => { |
31 | 11 | const detailsRef = React.useRef<HTMLDetailsElement>(null) |
32 | 12 | const ref = useMergedRefs(forwardRef, detailsRef) |
33 | 13 | const [hasSummary, setHasSummary] = useState(false) |
@@ -60,12 +40,22 @@ const Root = React.forwardRef<HTMLDetailsElement, DetailsProps>( |
60 | 40 | } |
61 | 41 | }, []) |
62 | 42 |
|
| 43 | + if (sxProp !== defaultSxProp) { |
| 44 | + return ( |
| 45 | + <Box as={'details'} className={clsx(className, classes.Details)} {...rest} sx={sxProp} ref={ref}> |
| 46 | + {/* Include default summary if summary is not provided */} |
| 47 | + {!hasSummary && <Details.Summary data-default-summary>{'See Details'}</Details.Summary>} |
| 48 | + {children} |
| 49 | + </Box> |
| 50 | + ) |
| 51 | + } |
| 52 | + |
63 | 53 | return ( |
64 | | - <StyledDetails className={clsx(className, {[classes.Details]: enabled})} {...rest} ref={ref}> |
| 54 | + <details className={clsx(className, classes.Details)} {...rest} ref={ref}> |
65 | 55 | {/* Include default summary if summary is not provided */} |
66 | 56 | {!hasSummary && <Details.Summary data-default-summary>{'See Details'}</Details.Summary>} |
67 | 57 | {children} |
68 | | - </StyledDetails> |
| 58 | + </details> |
69 | 59 | ) |
70 | 60 | }, |
71 | 61 | ) |
|
0 commit comments