diff --git a/README.md b/README.md index 1d286a3..ef0a58e 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Then most users will use it in the following manner: ```typescript import React, { lazy } from 'react'; -import { Features, ToggleFeature, Disable, Enable, FeatureDescription } from 'react-enable'; +import { Features, ToggleFeatures, Disable, Enable, FeatureDescription } from 'react-enable'; const NewVersion = lazy(() => import('./src/new-version')); const OldVersion = lazy(() => import('./src/old-version')); diff --git a/src/ToggleFeatures.tsx b/src/ToggleFeatures.tsx index 3d7324b..4e33217 100644 --- a/src/ToggleFeatures.tsx +++ b/src/ToggleFeatures.tsx @@ -185,7 +185,7 @@ function ShadowContent({ root, children }: { children: ReactNode; root: Element /// a list of features to toggle and their current override state. you can override on or override off, /// or unset the override and go back to default value. // eslint-disable-next-line no-undef -export function ToggleFeatures({ defaultOpen = false }: { defaultOpen?: boolean }): JSX.Element | null { +export function ToggleFeatures({ defaultOpen = false, hidden = false }: { defaultOpen?: boolean; hidden?: boolean }): JSX.Element | null { const [root, setCoreRoot] = useState(null); const setRoot = (host: HTMLDivElement | null) => { @@ -201,6 +201,10 @@ export function ToggleFeatures({ defaultOpen = false }: { defaultOpen?: boolean setCoreRoot(renderDiv); }; + if (hidden) { + return null; + } + return (
{root != null ? ( @@ -214,7 +218,7 @@ export function ToggleFeatures({ defaultOpen = false }: { defaultOpen?: boolean /// Like ToggleFeatures, but does not inject styles into a shadow DOM root node. /// useful if you're using tailwind. -export function ToggleFeatureUnwrapped({ defaultOpen = false }: { defaultOpen?: boolean }): JSX.Element | null { +export function ToggleFeatureUnwrapped({ defaultOpen = false, hidden = false }: { defaultOpen?: boolean; hidden?: boolean }): JSX.Element | null { const [open, setOpen] = useState(defaultOpen); const context = useContext(FeatureContext); @@ -222,6 +226,10 @@ export function ToggleFeatureUnwrapped({ defaultOpen = false }: { defaultOpen?: return null; } + if (hidden) { + return null; + } + // We want: Real value after all nestings, value of the override. we toggle override const { featuresDescription } = context; diff --git a/src/index.tsx b/src/index.tsx index 1d116ef..0b6858f 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -8,6 +8,6 @@ export { useAllDisabled } from './useAllDisabled'; export { useAllEnabled } from './useAllEnabled'; export type { EnableContextType } from './EnableContext'; export type { FeatureContextType } from './FeatureContext'; -export type { FeatureValue, FeatureState, FeatureDispatch } from './FeatureState'; +export type { FeatureValue, FeatureState, FeatureDescription, FeatureDispatch } from './FeatureState'; export { EnableContext } from './EnableContext'; export { ToggleFeatures } from './ToggleFeatures';