Skip to content

Commit

Permalink
Fix contexts
Browse files Browse the repository at this point in the history
  • Loading branch information
mj12albert committed Oct 17, 2024
1 parent 49598c5 commit bb49414
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <Accordion.Item /> component');
throw new Error(
'Base UI: AccordionItemContext is missing. Accordion parts must be placed within <Accordion.Item>.',
);
}
return context;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
7 changes: 1 addition & 6 deletions packages/mui-base/src/Accordion/Root/AccordionRoot.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -103,11 +103,6 @@ const AccordionRoot = React.forwardRef(function AccordionRoot(
});

export namespace AccordionRoot {
export interface Context extends Omit<useAccordionRoot.ReturnValue, 'getRootProps'> {
ownerState: OwnerState;
hiddenUntilFound: boolean;
}

export interface OwnerState {
value: useAccordionRoot.Value;
disabled: boolean;
Expand Down
15 changes: 10 additions & 5 deletions packages/mui-base/src/Accordion/Root/AccordionRootContext.tsx
Original file line number Diff line number Diff line change
@@ -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<AccordionRoot.Context | undefined>(
export interface AccordionRootContext extends Omit<useAccordionRoot.ReturnValue, 'getRootProps'> {
ownerState: AccordionRoot.OwnerState;
hiddenUntilFound: boolean;
}

export const AccordionRootContext = React.createContext<AccordionRootContext | undefined>(
undefined,
);

Expand All @@ -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 <Accordion.Root>.',
);
}
return context;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down

0 comments on commit bb49414

Please sign in to comment.