{"version":3,"file":"Banner.stories.jsx","sourceRoot":"","sources":["../../../src/core/Banner/Banner.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Meta, StoryFn } from '@storybook/react';\nimport { useEffect, useState, useCallback, useReducer, useRef } from 'react';\nimport type { FormEvent, ReactNode } from 'react';\n\nimport { Banner, Button, ThemeOverride, Flex, Form, Input } from '@pega/cosmos-react-core';\nimport type { BannerProps, BannerMessage, BannerHandleValue } from '@pega/cosmos-react-core';\n\nimport { AppShellDemo } from '../AppShell/AppShell.stories';\nimport { loadingTimeoutMS } from '../Progress/Progress.mocks';\n\nimport { demoFields, fieldReducer, formActions } from './Banner.mocks';\nimport type { DemoFormField } from './Banner.mocks';\n\nexport default {\n  title: 'Core/Banner',\n  component: Banner,\n  excludeStories: ['ConfigurableErrorBanner']\n} as Meta;\n\ninterface BannerDemoProps extends Pick<BannerProps, 'variant' | 'headingText'> {\n  count?: number;\n  descriptions?: boolean;\n  actions?: boolean;\n  disableFocusControl?: boolean;\n}\n\nexport const BannerDemo: StoryFn<BannerDemoProps> = (args: BannerDemoProps) => {\n  const [show, setShow] = useState(true);\n  const bannerHandleRef = useRef<BannerHandleValue>(null);\n\n  const action: BannerMessage['action'] = args.actions\n    ? {\n        text: `Individual ${args.variant} action.`,\n        onClick: e => {\n          e.preventDefault();\n        },\n        href: 'https://pega.com'\n      }\n    : undefined;\n\n  const sliceMessages = (\n    messages: BannerProps['messages'],\n    count: number\n  ): [messages: BannerProps['messages'], count: number] => {\n    const currentMessages: BannerProps['messages'] = [];\n    let currentCount = 0;\n\n    messages.forEach(msg => {\n      if (currentCount < count) {\n        currentCount += 1;\n\n        if (typeof msg === 'string') {\n          currentMessages.push(msg);\n        } else if (!msg.items) {\n          currentMessages.push({ ...msg, action });\n        } else {\n          const [items, subCount] = sliceMessages(msg.items, count - currentCount);\n          currentCount += subCount;\n          currentMessages.push({\n            ...msg,\n            action,\n            items: items.length > 0 ? items : undefined\n          });\n        }\n      }\n    });\n\n    return [currentMessages, currentCount];\n  };\n\n  const [messagesToRender] = sliceMessages(\n    [\n      {\n        label: `Individual ${args.variant} label.`,\n        description: args.descriptions\n          ? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'\n          : undefined,\n        items: [`Child ${args.variant} label.`]\n      },\n      {\n        label: [\n          `Individual ${args.variant} label, `,\n          {\n            text: 'with a clickable link',\n            onClick: e => {\n              e.preventDefault();\n            },\n            href: 'https://pega.com'\n          },\n          ' within it.'\n        ],\n        description: args.descriptions ? `Individual ${args.variant} description.` : undefined\n      },\n      `Individual ${args.variant} label.`,\n      {\n        label: `Individual ${args.variant} label.`,\n        description: args.descriptions\n          ? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'\n          : undefined\n      },\n      {\n        label: `Grandparent ${args.variant} label.`,\n        items: [\n          {\n            label: `Parent ${args.variant} label.`,\n            items: [`Child ${args.variant} label.`]\n          }\n        ]\n      }\n    ],\n    args.count ?? Infinity\n  );\n\n  return (\n    <Flex container={{ direction: 'column', gap: 2 }}>\n      {show ? (\n        <Banner\n          headingText={args.headingText || undefined}\n          variant={args.variant}\n          messages={messagesToRender}\n          onDismiss={() => setShow(false)}\n          handle={bannerHandleRef}\n        />\n      ) : (\n        <Button onClick={() => setShow(true)}>Open banner</Button>\n      )}\n      {!args.disableFocusControl && (\n        <Button\n          onClick={() => bannerHandleRef.current?.focus()}\n          style={{ maxWidth: 'fit-content' }}\n        >\n          Focus\n        </Button>\n      )}\n    </Flex>\n  );\n};\n\nBannerDemo.args = {\n  headingText: '',\n  variant: 'info',\n  count: 8,\n  descriptions: true,\n  actions: true\n};\n\nBannerDemo.argTypes = {\n  headingText: { control: { type: 'text' } },\n  variant: { options: ['urgent', 'warning', 'success', 'info', 'ai'], control: { type: 'select' } },\n  count: { control: { type: 'range', min: 1, max: 8 } },\n  descriptions: { control: { type: 'boolean' } },\n  actions: { control: { type: 'boolean' } }\n};\n\ninterface ConfigurableErrorBannerProps {\n  background?: string;\n}\n\nexport const ConfigurableErrorBanner: StoryFn<ConfigurableErrorBannerProps> = (\n  args: ConfigurableErrorBannerProps\n) => {\n  return (\n    <ThemeOverride\n      theme={{\n        components: {\n          banner: {\n            urgent: {\n              background: args.background\n            }\n          }\n        }\n      }}\n    >\n      <Banner\n        variant='urgent'\n        messages={['Your request failed to send!', 'Please review your request and try again']}\n      />\n    </ThemeOverride>\n  );\n};\n\nConfigurableErrorBanner.args = {\n  background: '#d91c29'\n};\n\nConfigurableErrorBanner.argTypes = {\n  background: { control: { type: 'color' } }\n};\n\n// -----------------------------------------------------------------------------\n// Form story\n// -----------------------------------------------------------------------------\n\nexport const ShownInForm: StoryFn = () => {\n  const [fields, setField] = useReducer(fieldReducer, demoFields);\n  const [loading, setLoading] = useState(false);\n  const [banner, setBanner] = useState<ReactNode>(null);\n  const bannerHandleRef = useRef<BannerHandleValue>(null);\n\n  const onSubmit = useCallback((e: FormEvent) => {\n    e.preventDefault();\n    setLoading(true);\n    setTimeout(() => {\n      const errorFields = fields.filter(field => !field.validator(field.value));\n      let variant: 'success' | 'urgent' = 'success';\n      let messages = fields.map(f => `${f.name} was typed perfectly`);\n\n      if (errorFields.length > 0) {\n        variant = 'urgent';\n        messages = errorFields.map(f => `${f.name} was not typed correctly`);\n      }\n\n      setLoading(false);\n      setBanner(\n        <Banner\n          variant={variant}\n          messages={messages}\n          onDismiss={() => {\n            setBanner(false);\n          }}\n          handle={bannerHandleRef}\n        />\n      );\n    }, loadingTimeoutMS);\n  }, []);\n\n  useEffect(() => {\n    if (banner && fields.some(field => !field.validator(field.value)) && bannerHandleRef.current)\n      bannerHandleRef.current.focus();\n  }, [banner]);\n\n  return (\n    <Form\n      banners={banner}\n      actions={formActions}\n      onSubmit={onSubmit}\n      progress={loading ? 'Submitting...' : undefined}\n      style={{ margin: 'auto', padding: '2.5rem', maxWidth: '37.5rem' }}\n    >\n      {fields.map((field: DemoFormField) => {\n        return (\n          <Input\n            key={field.name}\n            name={field.name}\n            label={field.label}\n            info={field.info}\n            value={field.value}\n            onChange={e => setField(e.target)}\n          />\n        );\n      })}\n    </Form>\n  );\n};\n\n// -----------------------------------------------------------------------------\n// AppShell story\n// -----------------------------------------------------------------------------\nexport const ShownInAppShell: StoryFn = () => {\n  const [hasBanner, setHasBanner] = useState(true);\n  return (\n    <AppShellDemo\n      banners={\n        hasBanner && (\n          <Banner\n            onDismiss={() => setHasBanner(false)}\n            variant='success'\n            messages={[\n              'Uploaded pega_data.json successfully',\n              'Uploaded business-earnings.xlsx successfully'\n            ]}\n          />\n        )\n      }\n    />\n  );\n};\n\nShownInAppShell.parameters = {\n  layout: 'fullscreen'\n};\n"]}