{"version":3,"file":"SearchInput.stories.jsx","sourceRoot":"","sources":["../../../src/core/SearchInput/SearchInput.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Meta, StoryFn } from '@storybook/react';\nimport { useRef, useState } from 'react';\n\nimport { SearchInput, Select, Option, Grid, useI18n, Flex } from '@pega/cosmos-react-core';\nimport type { SearchInputProps } from '@pega/cosmos-react-core';\n\nimport { searchResults as mockSearchResults, recentSearches } from './SearchInput.mocks';\n\nexport default {\n  title: 'Core/SearchInput',\n  component: SearchInput\n} as Meta;\n\nexport const SearchInputFullDemo: StoryFn = () => {\n  return (\n    <Flex container={{ direction: 'column', rowGap: 2 }}>\n      <SearchInput\n        value='Search value'\n        onSearchChange={() => {}}\n        onSearchSubmit={() => {}}\n        filters={['Story', 'Very long filter']}\n      />\n      <SearchInput\n        value=''\n        onSearchChange={() => {}}\n        onSearchSubmit={() => {}}\n        filters={['Story', 'Very long filter']}\n      />\n      <SearchInput\n        value='Search value'\n        onSearchChange={() => {}}\n        onSearchSubmit={() => {}}\n        filters={undefined}\n      />\n      <SearchInput\n        value=''\n        onSearchChange={() => {}}\n        onSearchSubmit={() => {}}\n        filters={undefined}\n      />{' '}\n      <SearchInput\n        value='Search value'\n        onSearchChange={() => {}}\n        onSearchSubmit={undefined}\n        filters={['Story', 'Very long filter']}\n      />\n      <SearchInput\n        value=''\n        onSearchChange={() => {}}\n        onSearchSubmit={undefined}\n        filters={['Story', 'Very long filter']}\n      />\n      <SearchInput\n        value='Search value'\n        onSearchChange={() => {}}\n        onSearchSubmit={undefined}\n        filters={undefined}\n      />\n      <SearchInput\n        value=''\n        onSearchChange={() => {}}\n        onSearchSubmit={undefined}\n        filters={undefined}\n      />\n    </Flex>\n  );\n};\n\nexport const SearchInputDemo: StoryFn<SearchInputProps & { hideSubmitButton?: boolean }> = (\n  args: SearchInputProps & { hideSubmitButton?: boolean }\n) => {\n  const [value, setValue] = useState('');\n  return (\n    <SearchInput\n      onSearchSubmit={args.hideSubmitButton ? undefined : () => {}}\n      {...args}\n      onSearchChange={setValue}\n      value={value}\n    />\n  );\n};\n\nSearchInputDemo.args = {\n  hideSubmitButton: false\n};\n\nSearchInputDemo.argTypes = {\n  hideSubmitButton: { control: { type: 'boolean' } }\n};\n\nexport const EnhancedSearchInputDemo: StoryFn<SearchInputProps & { hideSubmitButton?: boolean }> = (\n  args: SearchInputProps & { hideSubmitButton?: boolean }\n) => {\n  const [value, setValue] = useState('');\n  const t = useI18n();\n  const [searchResults, setSearchResults] = useState<SearchInputProps['searchResults']>([]);\n  const [loading, setLoading] = useState(false);\n  const timeout = useRef<number | null>(null);\n  const onValueChange = (val: string) => {\n    setValue(val);\n    setLoading(true);\n    setSearchResults([]);\n    if (timeout.current) {\n      clearTimeout(timeout.current);\n    }\n    timeout.current = window.setTimeout(() => {\n      if (val) {\n        setSearchResults(\n          mockSearchResults.filter(res => {\n            return res.primary.toLowerCase().includes(val.toLowerCase());\n          })\n        );\n      }\n      setLoading(false);\n    }, 2200);\n  };\n\n  return (\n    <SearchInput\n      filters={['Story', 'Very long filter']}\n      filtersLabel={t('case_type')}\n      loading={loading}\n      searchResults={searchResults?.map(result => ({\n        ...result,\n        onClick: (id, e) => e.preventDefault()\n      }))}\n      value={value}\n      onSearchChange={onValueChange}\n      onSearchSubmit={args.hideSubmitButton ? undefined : () => {}}\n      recentSearches={recentSearches}\n      advancedSearchLink={{ href: '/?path=/story/work-searchresults--search-results-demo' }}\n    />\n  );\n};\n\nEnhancedSearchInputDemo.args = {\n  hideSubmitButton: false\n};\n\nEnhancedSearchInputDemo.argTypes = {\n  hideSubmitButton: { control: { type: 'boolean' } }\n};\n\nexport const ControlledSearchInputDemo: StoryFn = () => {\n  const [value, setValue] = useState('');\n  const [currentFilter, setCurrentFilter] = useState('');\n  const t = useI18n();\n\n  return (\n    <Grid container={{ gap: 2, areas: '\"a a\" \"b c\"', alignItems: 'end' }}>\n      <Grid item={{ area: 'a' }}>\n        <p>This demonstrates that SearchInput filter can be controlled from an external state.</p>\n      </Grid>\n      <Grid item={{ area: 'b' }}>\n        <SearchInput\n          currentFilter={currentFilter}\n          filters={Array.from({ length: 10 }, (_, i) => `Filter ${i + 1}`)}\n          filtersLabel={t('case_type')}\n          value={value}\n          onSearchChange={setValue}\n          onSearchSubmit={() => {}}\n          onFilterChange={setCurrentFilter}\n        />\n      </Grid>\n\n      <Grid item={{ area: 'c' }}>\n        <Select\n          label='Control Search Filter'\n          value={currentFilter}\n          onChange={e => setCurrentFilter(e.target.value)}\n        >\n          <Option>All</Option>\n          {Array.from({ length: 10 }, (_, i) => (\n            <Option>{`Filter ${(i + 1).toString()}`}</Option>\n          ))}\n        </Select>\n      </Grid>\n    </Grid>\n  );\n};\n"]}