MCPcopy Create free account
hub / github.com/adobe/react-spectrum / Disclosure

Function Disclosure

starters/hooks/src/Disclosure.tsx:19–51  ·  view source on GitHub ↗
(props: DisclosureProps)

Source from the content-addressed store, hash-verified

17}
18
19export function Disclosure(props: DisclosureProps) {
20 let state = useDisclosureState(props);
21 let panelRef = useRef<HTMLDivElement>(null);
22 let buttonRef = useRef<HTMLButtonElement>(null);
23 /*- begin highlight -*/
24 let {buttonProps, panelProps} = useDisclosure(props, state, panelRef);
25 /*- end highlight -*/
26 let {buttonProps: pressProps, isPressed} = useButton(buttonProps, buttonRef);
27 let {hoverProps, isHovered} = useHover({});
28 let {focusProps, isFocusVisible} = useFocusRing();
29
30 return (
31 <div className="react-aria-Disclosure" data-expanded={state.isExpanded || undefined}>
32 <h3 className="react-aria-Heading">
33 <button
34 {...mergeProps(pressProps, hoverProps, focusProps)}
35 ref={buttonRef}
36 slot="trigger"
37 className="disclosure-button"
38 data-pressed={isPressed || undefined}
39 data-hovered={isHovered || undefined}
40 data-focus-visible={isFocusVisible || undefined}
41 data-disabled={props.isDisabled || undefined}>
42 <ChevronRight size={16} />
43 <span>{props.title}</span>
44 </button>
45 </h3>
46 <div {...panelProps} ref={panelRef} className="react-aria-DisclosurePanel">
47 <div>{props.children}</div>
48 </div>
49 </div>
50 );
51}

Callers

nothing calls this directly

Calls 6

useDisclosureStateFunction · 0.90
useDisclosureFunction · 0.90
useButtonFunction · 0.90
useHoverFunction · 0.90
useFocusRingFunction · 0.90
mergePropsFunction · 0.90

Tested by

no test coverage detected