import React from 'react'; import { storybookArgTypes, storybookExcludedControlParams, StoryMetaType, StoryType, } from '@lg-tools/storybook-utils'; import { StoryObj } from '@storybook/react'; import { css } from '@leafygreen-ui/emotion'; import { Icon } from '@leafygreen-ui/icon'; import { MenuItem } from '@leafygreen-ui/menu'; import { FormFooter, FormFooterProps } from '.'; const wrapperStyle = css` min-width: 40vw; width: 100%; `; const meta: StoryMetaType = { title: 'Components/Inputs/FormFooter', component: FormFooter, decorators: [ StoryFn => (
), ], parameters: { default: 'LiveExample', controls: { exclude: [...storybookExcludedControlParams, 'contentClassName'], }, generate: { storyNames: ['LightMode', 'DarkMode'], combineArgs: { backButtonProps: [ undefined, { children: 'Back', leftGlyph: undefined }, { children: 'Back', leftGlyph: }, { children: 'Delete Trigger', variant: 'dangerOutline' }, ], cancelButtonProps: [undefined, { children: 'Cancel' }], primaryButtonProps: [ { children: 'Confirm', variant: 'primary' }, { children: 'Confirm', variant: 'danger' }, ], errorMessage: [undefined, 'This is an error message'], }, decorator: StoryFn => (
), }, }, args: { darkMode: false, errorMessage: 'Error message', }, argTypes: { darkMode: storybookArgTypes.darkMode, errorMessage: { control: 'text' }, contentClassName: { control: 'text' }, }, }; export default meta; type FormFooterStoryProps = FormFooterProps & { primaryButtonText?: string }; const Template: StoryType = ({ primaryButtonProps, ...args }: FormFooterStoryProps) => ( ); const StickyTemplate: StoryType = ({ primaryButtonProps, ...args }: FormFooterStoryProps) => (

Scroll down to see the sticky footer in action

This content creates scrollable space...

); export const LiveExample: StoryObj = { render: Template, parameters: { chromatic: { disableSnapshot: true, }, }, args: { backButtonProps: { children: 'Back' }, cancelButtonProps: { children: 'Cancel' }, }, }; export const CustomSplitButton: StoryObj = { render: Template, args: { cancelButtonProps: { label: 'More options', menuItems: [ Menu Item 1, Menu Item 2, Menu Item 3, ], }, }, }; export const LightMode: StoryObj = { render: Template, args: { darkMode: false, }, }; export const DarkMode: StoryObj = { render: Template, args: { darkMode: true, }, }; export const StickyFooter: StoryObj = { render: StickyTemplate, decorators: [], parameters: { layout: 'fullscreen', }, args: { backButtonProps: { children: 'Back' }, cancelButtonProps: { children: 'Cancel' }, }, };