{"version":3,"file":"FilterPopover.mjs","sources":["../../../../admin/src/components/FilterPopover/FilterPopover.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n  Box,\n  Button,\n  Flex,\n  SingleSelectOption,\n  Popover,\n  SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n  [key in 'mime' | 'createdAt' | 'updatedAt']?:\n    | {\n        [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n          | string[]\n          | string\n          | { $contains: string[] };\n      }\n    | undefined;\n};\n\nexport interface FilterPopoverProps {\n  displayedFilters: {\n    name: string;\n    metadatas?: {\n      label?: string;\n    };\n    fieldSchema: {\n      type: string;\n      options?: {\n        value: string;\n      }[];\n      mainField?: {\n        schema: {\n          type: string;\n        };\n      };\n    };\n  }[];\n  filters: Filter[];\n  onSubmit: (filters: Filter[]) => void;\n  onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n  displayedFilters,\n  filters,\n  onSubmit,\n  onToggle,\n}: FilterPopoverProps) => {\n  const { formatMessage } = useIntl();\n\n  const [modifiedData, setModifiedData] = React.useState({\n    name: 'createdAt',\n    filter: '$eq',\n    value: '',\n  });\n\n  const handleChangeFilterField = (value: string | number) => {\n    const nextField = displayedFilters.find((f) => f.name === value);\n    if (!nextField) {\n      return;\n    }\n    const {\n      fieldSchema: { type, options },\n    } = nextField;\n    let filterValue = '';\n\n    if (type === 'enumeration') {\n      filterValue = options?.[0].value || '';\n    }\n\n    const filter = getFilterList(nextField)[0].value;\n\n    setModifiedData({ name: value.toString(), filter, value: filterValue });\n  };\n\n  const handleChangeOperator = (operator: string | number) => {\n    if (modifiedData.name === 'mime') {\n      setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n    } else {\n      setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n    }\n  };\n\n  const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    const encodedValue = encodeURIComponent(modifiedData.value);\n\n    if (encodedValue) {\n      if (modifiedData.name === 'mime') {\n        const alreadyAppliedFilters = filters.filter((filter) => {\n          return Object.keys(filter)[0] === 'mime';\n        });\n\n        if (modifiedData.value === 'file') {\n          const filtersWithoutMimeType = filters.filter((filter) => {\n            return Object.keys(filter)[0] !== 'mime';\n          });\n\n          let hasCurrentFilter = false;\n\n          let filterToAdd: Filter;\n\n          if (modifiedData.filter === '$contains') {\n            hasCurrentFilter =\n              alreadyAppliedFilters.find((filter) => {\n                if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n                  return filter.mime?.$not?.$contains !== undefined;\n                }\n              }) !== undefined;\n\n            filterToAdd = {\n              mime: {\n                $not: {\n                  $contains: ['image', 'video'],\n                },\n              },\n            };\n          } else {\n            hasCurrentFilter =\n              alreadyAppliedFilters.find((filter) => {\n                return Array.isArray(filter.mime?.$contains);\n              }) !== undefined;\n\n            filterToAdd = {\n              mime: {\n                $contains: ['image', 'video'],\n              },\n            };\n          }\n\n          if (hasCurrentFilter) {\n            onToggle();\n\n            return;\n          }\n\n          const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n          onSubmit(nextFilters);\n\n          onToggle();\n\n          return;\n        }\n\n        const hasFilter =\n          alreadyAppliedFilters.find((filter) => {\n            const modifiedDataFilter = modifiedData.filter;\n            return (\n              filter.mime &&\n              filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n            );\n          }) !== undefined;\n\n        // Don't apply the same filter twice\n        if (hasFilter) {\n          onToggle();\n\n          return;\n        }\n\n        const filtersWithoutFile = filters.filter((filter) => {\n          const filterType = Object.keys(filter)[0];\n\n          if (filterType !== 'mime') {\n            return true;\n          }\n\n          if (\n            typeof filter.mime?.$not !== 'string' &&\n            !Array.isArray(filter.mime?.$not) &&\n            filter.mime?.$not?.$contains !== undefined\n          ) {\n            return false;\n          }\n\n          if (Array.isArray(filter?.mime?.$contains)) {\n            return false;\n          }\n\n          return true;\n        });\n\n        const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n        const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n          return filter.mime?.[oppositeFilter] === modifiedData.value;\n        });\n        const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n        const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n        if (!hasOppositeFilter) {\n          const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n          onSubmit(nextFilters);\n\n          onToggle();\n\n          return;\n        }\n\n        if (hasOppositeFilter) {\n          const nextFilters = filtersWithoutFile.slice();\n          nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n          onSubmit(nextFilters);\n\n          onToggle();\n        }\n\n        return;\n      }\n\n      const hasFilter =\n        filters.find((filter) => {\n          const modifiedDataName = modifiedData.name as\n            | 'mime'\n            | 'createdAt'\n            | 'updatedAt'\n            | '$contains'\n            | '$notContains'\n            | '$eq'\n            | '$not';\n          return (\n            filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n            filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n              modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n            ] === encodedValue\n          );\n        }) !== undefined;\n\n      if (!hasFilter) {\n        const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: encodedValue } };\n\n        const nextFilters = [...filters, filterToAdd];\n\n        onSubmit(nextFilters);\n      }\n    }\n\n    onToggle();\n  };\n\n  const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n  return (\n    <Popover.Content sideOffset={4} style={{ zIndex: 499 }}>\n      <form onSubmit={handleSubmit}>\n        <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n          <Box>\n            <SingleSelect\n              aria-label={formatMessage({\n                id: 'app.utils.select-field',\n                defaultMessage: 'Select field',\n              })}\n              name=\"name\"\n              size=\"M\"\n              onChange={handleChangeFilterField}\n              value={modifiedData.name}\n            >\n              {displayedFilters.map((filter) => {\n                return (\n                  <SingleSelectOption key={filter.name} value={filter.name}>\n                    {filter.metadatas?.label}\n                  </SingleSelectOption>\n                );\n              })}\n            </SingleSelect>\n          </Box>\n          <Box>\n            <SingleSelect\n              aria-label={formatMessage({\n                id: 'app.utils.select-filter',\n                defaultMessage: 'Select filter',\n              })}\n              name=\"filter\"\n              size=\"M\"\n              value={modifiedData.filter}\n              onChange={handleChangeOperator}\n            >\n              {getFilterList(appliedFilter!).map((option) => {\n                return (\n                  <SingleSelectOption key={option.value} value={option.value}>\n                    {formatMessage(option.intlLabel)}\n                  </SingleSelectOption>\n                );\n              })}\n            </SingleSelect>\n          </Box>\n          <Box>\n            <FilterValueInput\n              {...appliedFilter?.metadatas}\n              {...appliedFilter?.fieldSchema}\n              value={modifiedData.value}\n              onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n            />\n          </Box>\n          <Box>\n            <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n              {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n            </Button>\n          </Box>\n        </Flex>\n      </form>\n    </Popover.Content>\n  );\n};\n"],"names":["FilterPopover","displayedFilters","filters","onSubmit","onToggle","formatMessage","useIntl","modifiedData","setModifiedData","React","useState","name","filter","value","handleChangeFilterField","nextField","find","f","fieldSchema","type","options","filterValue","getFilterList","toString","handleChangeOperator","operator","prev","handleSubmit","e","preventDefault","stopPropagation","encodedValue","encodeURIComponent","alreadyAppliedFilters","Object","keys","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","mime","$not","Array","isArray","$contains","undefined","nextFilters","hasFilter","modifiedDataFilter","filtersWithoutFile","filterType","oppositeFilter","oppositeFilterIndex","findIndex","hasOppositeFilter","slice","splice","modifiedDataName","appliedFilter","_jsx","Popover","Content","sideOffset","style","zIndex","form","_jsxs","Flex","padding","direction","alignItems","gap","minWidth","Box","SingleSelect","aria-label","id","defaultMessage","size","onChange","map","SingleSelectOption","metadatas","label","option","intlLabel","FilterValueInput","Button","variant","startIcon","Plus","fullWidth"],"mappings":"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"}