diff --git a/.changeset/lemon-rice-wave.md b/.changeset/lemon-rice-wave.md new file mode 100644 index 0000000000..ee1ae350b9 --- /dev/null +++ b/.changeset/lemon-rice-wave.md @@ -0,0 +1,6 @@ +--- +'@twilio-paste/minimizable-dialog': minor +'@twilio-paste/core': minor +--- + +[Minimizable Dialog] Add toggleMinimized function to the object useMinimizableDialogState returns. Update styles to align with new Paste Twilio theme. diff --git a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialog.tsx b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialog.tsx index 0b5aad8f7a..663251d889 100644 --- a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialog.tsx +++ b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialog.tsx @@ -7,21 +7,20 @@ import {NonModalDialogPrimitive} from '@twilio-paste/non-modal-dialog-primitive' import {MinimizableDialogContext} from './MinimizableDialogContext'; import type {MinimizableDialogContextProps} from './MinimizableDialogContext'; +import {StyledMinimizableDialog} from './StyledMinimizableDialog'; interface StyledMinimizableDialogProps extends BoxProps, MinimizableDialogContextProps { minimized?: boolean; } -const StyledMinimizableDialog = React.forwardRef( +const StyledMinimizableDialogContainer = React.forwardRef( ({minimized, style, ...props}, ref) => ( { children: React.ReactNode; @@ -46,16 +45,14 @@ export const MinimizableDialog = React.forwardRef {/* import Paste Theme Based Styles due to portal positioning. */} - - {children} - + {children} ); diff --git a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContainer.tsx b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContainer.tsx index c36588b9c3..9ec437b05c 100644 --- a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContainer.tsx +++ b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContainer.tsx @@ -22,10 +22,11 @@ export const useMinimizableDialogState = ({ const [minimized, setMinimized] = React.useState(minimizedArg); const minimize = (): void => setMinimized(true); const expand = (): void => setMinimized(false); + const toggleMinimized = (): void => setMinimized((prev) => !prev); const dialog = useNonModalDialogPrimitiveState({...initialState}); - return {...dialog, minimized, minimize, expand}; + return {...dialog, minimized, minimize, expand, toggleMinimized}; }; export interface MinimizableDialogContainerProps extends NonModalDialogPrimitivePopoverInitialState { diff --git a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContent.tsx b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContent.tsx index a0479bf132..fda8d85a4a 100644 --- a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContent.tsx +++ b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContent.tsx @@ -15,14 +15,7 @@ const MinimizableDialogContent = React.forwardRef + {children} ); diff --git a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContext.tsx b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContext.tsx index 3c1f1b2df6..0dc9fe1fca 100644 --- a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContext.tsx +++ b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogContext.tsx @@ -5,6 +5,7 @@ export type MinimizableDialogContextProps = Partial void; expand?: () => void; + toggleMinimized?: () => void; }; const MinimizableDialogContext = React.createContext({}); diff --git a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogHeader.tsx b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogHeader.tsx index b9db573c78..d2a6cc4864 100644 --- a/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogHeader.tsx +++ b/packages/paste-core/components/minimizable-dialog/src/MinimizableDialogHeader.tsx @@ -39,13 +39,16 @@ const MinimizableDialogHeader = React.forwardRef >> = ({ + element, + children, +}) => ( + + {children} + +); + +StyledMinimizableDialog.displayName = 'StyledMinimizableDialog'; diff --git a/packages/paste-core/components/minimizable-dialog/stories/index.stories.tsx b/packages/paste-core/components/minimizable-dialog/stories/index.stories.tsx index 88aad508fc..524f2d2c86 100644 --- a/packages/paste-core/components/minimizable-dialog/stories/index.stories.tsx +++ b/packages/paste-core/components/minimizable-dialog/stories/index.stories.tsx @@ -18,6 +18,8 @@ import { MinimizableDialogContent, useMinimizableDialogState, } from '../src'; +import {MinimizableDialogContext} from '../src/MinimizableDialogContext'; +import {StyledMinimizableDialog} from '../src/StyledMinimizableDialog'; // eslint-disable-next-line import/no-default-export export default { @@ -30,12 +32,11 @@ const DialogExample: React.FC> = const emailID = useUID(); const questionID = useUID(); + const dialog = useMinimizableDialogState({minimized, visible: true}); + return ( - - - - - + + Live chat @@ -62,14 +63,18 @@ const DialogExample: React.FC> = - - + + ); }; -export const Default: StoryFn = () => ; -export const DefaultMinimized: StoryFn = () => ; +export const DefaultForVRT: StoryFn = () => ; +export const DefaultMinimizedForVRT: StoryFn = () => ; +/* + * Run chromatic on this story even though all the dialogs are on top of + * each other to verify that they are positioned correctly on the screen + */ export const FloatingButton: StoryFn = () => { const nameID = useUID(); const emailID = useUID(); @@ -120,6 +125,7 @@ export const FloatingButton: StoryFn = () => { export const StateHookExample: StoryFn = () => { const dialog = useMinimizableDialogState({}); + return ( @@ -155,6 +161,20 @@ export const StateHookExample: StoryFn = () => { Expand dialog + + + + + + ); }; + +StateHookExample.parameters = { + chromatic: {disableSnapshot: true}, +}; diff --git a/packages/paste-website/src/component-examples/MinimizableDialogExamples.ts b/packages/paste-website/src/component-examples/MinimizableDialogExamples.ts index 6151d4ab4d..ac33bff496 100644 --- a/packages/paste-website/src/component-examples/MinimizableDialogExamples.ts +++ b/packages/paste-website/src/component-examples/MinimizableDialogExamples.ts @@ -8,26 +8,28 @@ const MinimizableDialogExample = () => { Live chat - - Hi there! - - We’re here to help. Please give us some info to get started. - - - - + + + Hi there! + + We’re here to help. Please give us some info to get started. + + + + + + + + + + + +