From bb49414a115fd0251503b0d73c7510beb61f7dfe Mon Sep 17 00:00:00 2001 From: Albert Yu Date: Thu, 17 Oct 2024 17:44:58 +0800 Subject: [PATCH] Fix contexts --- .../src/Accordion/Header/AccordionHeader.test.tsx | 2 +- .../src/Accordion/Item/AccordionItem.test.tsx | 2 +- .../src/Accordion/Item/AccordionItemContext.tsx | 4 +++- .../src/Accordion/Panel/AccordionPanel.test.tsx | 2 +- .../mui-base/src/Accordion/Root/AccordionRoot.tsx | 7 +------ .../src/Accordion/Root/AccordionRootContext.tsx | 15 ++++++++++----- .../Accordion/Trigger/AccordionTrigger.test.tsx | 2 +- 7 files changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/mui-base/src/Accordion/Header/AccordionHeader.test.tsx b/packages/mui-base/src/Accordion/Header/AccordionHeader.test.tsx index 7243b46d7..9d0be264c 100644 --- a/packages/mui-base/src/Accordion/Header/AccordionHeader.test.tsx +++ b/packages/mui-base/src/Accordion/Header/AccordionHeader.test.tsx @@ -6,7 +6,7 @@ import { CollapsibleRootContext } from '../../Collapsible/Root/CollapsibleRootCo import { AccordionRootContext } from '../Root/AccordionRootContext'; import { AccordionItemContext } from '../Item/AccordionItemContext'; -const accordionRootContextValue: Accordion.Root.Context = { +const accordionRootContextValue: AccordionRootContext = { accordionItemRefs: { current: [] }, animated: false, direction: 'ltr', diff --git a/packages/mui-base/src/Accordion/Item/AccordionItem.test.tsx b/packages/mui-base/src/Accordion/Item/AccordionItem.test.tsx index 47b6363ff..725f1b5f3 100644 --- a/packages/mui-base/src/Accordion/Item/AccordionItem.test.tsx +++ b/packages/mui-base/src/Accordion/Item/AccordionItem.test.tsx @@ -4,7 +4,7 @@ import { describeConformance, createRenderer } from '#test-utils'; import { NOOP } from '../../utils/noop'; import { AccordionRootContext } from '../Root/AccordionRootContext'; -const accordionRootContextValue: Accordion.Root.Context = { +const accordionRootContextValue: AccordionRootContext = { accordionItemRefs: { current: [] }, animated: false, direction: 'ltr', diff --git a/packages/mui-base/src/Accordion/Item/AccordionItemContext.tsx b/packages/mui-base/src/Accordion/Item/AccordionItemContext.tsx index ff58ad475..1e4869738 100644 --- a/packages/mui-base/src/Accordion/Item/AccordionItemContext.tsx +++ b/packages/mui-base/src/Accordion/Item/AccordionItemContext.tsx @@ -22,7 +22,9 @@ if (process.env.NODE_ENV !== 'production') { export function useAccordionItemContext() { const context = React.useContext(AccordionItemContext); if (context === undefined) { - throw new Error('useAccordionItemContext must be used inside the component'); + throw new Error( + 'Base UI: AccordionItemContext is missing. Accordion parts must be placed within .', + ); } return context; } diff --git a/packages/mui-base/src/Accordion/Panel/AccordionPanel.test.tsx b/packages/mui-base/src/Accordion/Panel/AccordionPanel.test.tsx index c6da33561..bf07b284a 100644 --- a/packages/mui-base/src/Accordion/Panel/AccordionPanel.test.tsx +++ b/packages/mui-base/src/Accordion/Panel/AccordionPanel.test.tsx @@ -6,7 +6,7 @@ import { CollapsibleRootContext } from '../../Collapsible/Root/CollapsibleRootCo import { AccordionRootContext } from '../Root/AccordionRootContext'; import { AccordionItemContext } from '../Item/AccordionItemContext'; -const accordionRootContextValue: Accordion.Root.Context = { +const accordionRootContextValue: AccordionRootContext = { accordionItemRefs: { current: [] }, animated: false, direction: 'ltr', diff --git a/packages/mui-base/src/Accordion/Root/AccordionRoot.tsx b/packages/mui-base/src/Accordion/Root/AccordionRoot.tsx index ed606d9de..3dbb0d17d 100644 --- a/packages/mui-base/src/Accordion/Root/AccordionRoot.tsx +++ b/packages/mui-base/src/Accordion/Root/AccordionRoot.tsx @@ -68,7 +68,7 @@ const AccordionRoot = React.forwardRef(function AccordionRoot( [accordion.value, accordion.disabled, accordion.orientation], ); - const contextValue: AccordionRoot.Context = React.useMemo( + const contextValue: AccordionRootContext = React.useMemo( () => ({ ...accordion, hiddenUntilFound, @@ -103,11 +103,6 @@ const AccordionRoot = React.forwardRef(function AccordionRoot( }); export namespace AccordionRoot { - export interface Context extends Omit { - ownerState: OwnerState; - hiddenUntilFound: boolean; - } - export interface OwnerState { value: useAccordionRoot.Value; disabled: boolean; diff --git a/packages/mui-base/src/Accordion/Root/AccordionRootContext.tsx b/packages/mui-base/src/Accordion/Root/AccordionRootContext.tsx index 0f862f8dd..dda094d48 100644 --- a/packages/mui-base/src/Accordion/Root/AccordionRootContext.tsx +++ b/packages/mui-base/src/Accordion/Root/AccordionRootContext.tsx @@ -1,11 +1,14 @@ 'use client'; import * as React from 'react'; import type { AccordionRoot } from './AccordionRoot'; +import type { useAccordionRoot } from './useAccordionRoot'; -/** - * @ignore - internal component. - */ -export const AccordionRootContext = React.createContext( +export interface AccordionRootContext extends Omit { + ownerState: AccordionRoot.OwnerState; + hiddenUntilFound: boolean; +} + +export const AccordionRootContext = React.createContext( undefined, ); @@ -16,7 +19,9 @@ if (process.env.NODE_ENV !== 'production') { export function useAccordionRootContext() { const context = React.useContext(AccordionRootContext); if (context === undefined) { - throw new Error('useAccordionRootContext must be used inside a Accordion component'); + throw new Error( + 'Base UI: AccordionRootContext is missing. Accordion parts must be placed within .', + ); } return context; } diff --git a/packages/mui-base/src/Accordion/Trigger/AccordionTrigger.test.tsx b/packages/mui-base/src/Accordion/Trigger/AccordionTrigger.test.tsx index e1655d628..c29db1b65 100644 --- a/packages/mui-base/src/Accordion/Trigger/AccordionTrigger.test.tsx +++ b/packages/mui-base/src/Accordion/Trigger/AccordionTrigger.test.tsx @@ -6,7 +6,7 @@ import { CollapsibleRootContext } from '../../Collapsible/Root/CollapsibleRootCo import { AccordionRootContext } from '../Root/AccordionRootContext'; import { AccordionItemContext } from '../Item/AccordionItemContext'; -const accordionRootContextValue: Accordion.Root.Context = { +const accordionRootContextValue: AccordionRootContext = { accordionItemRefs: { current: [] }, animated: false, direction: 'ltr',