{"version":3,"file":"SelectTree.mjs","sources":["../../../../admin/src/components/SelectTree/SelectTree.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { Cross, CaretDown } from '@strapi/icons';\nimport ReactSelect, {\n  components,\n  GroupBase,\n  StylesConfig,\n  ClearIndicatorProps,\n} from 'react-select';\nimport { styled, useTheme, DefaultTheme } from 'styled-components';\n\nimport { Option } from './Option';\nimport { flattenTree, FlattenedNode } from './utils/flattenTree';\nimport { getOpenValues } from './utils/getOpenValues';\nimport { getValuesToClose } from './utils/getValuesToClose';\n\nconst hasParent = (option: FlattenedNode<string | number | null>) => !option.parent;\n\nexport type OptionSelectTree = {\n  value: string | number | null;\n  label?: string;\n  children?: OptionSelectTree[];\n};\n\nexport interface SelectTreeProps<\n  Option = unknown,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  IsMulti extends boolean = false,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n  maxDisplayDepth?: number;\n  defaultValue?: {\n    value?: string | number | null;\n  };\n  options: OptionSelectTree[];\n  onChange?: (value: Record<string, string | number>) => void;\n  name?: string;\n  menuPortalTarget?: HTMLElement | null;\n  inputId?: string;\n  error?: string;\n  ariaErrorMessage?: string;\n  isDisabled?: boolean;\n  disabled?: boolean;\n}\n\nexport const SelectTree = ({\n  options: defaultOptions,\n  maxDisplayDepth = 5,\n  defaultValue,\n  ...props\n}: SelectTreeProps) => {\n  const flatDefaultOptions = React.useMemo(() => flattenTree(defaultOptions), [defaultOptions]);\n  const optionsFiltered = React.useMemo(\n    () => flatDefaultOptions.filter(hasParent),\n    [flatDefaultOptions]\n  );\n  const [options, setOptions] = React.useState(optionsFiltered);\n  const [openValues, setOpenValues] = React.useState(\n    getOpenValues(flatDefaultOptions, defaultValue)\n  );\n\n  React.useEffect(() => {\n    if (openValues.length === 0) {\n      setOptions(flatDefaultOptions.filter((option) => option.parent === undefined));\n    } else {\n      const allOpenValues = openValues.reduce<(string | number | null)[]>((acc, value) => {\n        const options = flatDefaultOptions.filter(\n          (option) => option.value === value || option.parent === value\n        );\n\n        options.forEach((option) => {\n          const values = getOpenValues(flatDefaultOptions, option);\n          acc = [...acc, ...values];\n        });\n\n        return acc;\n      }, []);\n\n      const nextOptions = flatDefaultOptions.filter((option) =>\n        allOpenValues.includes(option.value)\n      );\n\n      setOptions(nextOptions);\n    }\n  }, [openValues, flatDefaultOptions, optionsFiltered]);\n\n  const handleToggle = (value: string | number | null) => {\n    if (openValues.includes(value)) {\n      const valuesToClose = getValuesToClose(flatDefaultOptions, value);\n      setOpenValues((prev) => prev.filter((prevData) => !valuesToClose.includes(prevData)));\n    } else {\n      setOpenValues((prev) => [...prev, value]);\n    }\n  };\n\n  return (\n    <Select\n      components={{ Option }}\n      options={options}\n      defaultValue={defaultValue}\n      isSearchable={false}\n      /* -- custom props, used by the Option component */\n      maxDisplayDepth={maxDisplayDepth}\n      openValues={openValues}\n      onOptionToggle={handleToggle}\n      /* -- / custom props */\n      {...props}\n    />\n  );\n};\n\ntype SelectOption = { value?: string | number | null; label?: string };\n\ninterface SelectProps<\n  Option = SelectOption,\n  IsMulti extends boolean = false,\n  Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n  components?: object;\n  styles?: StylesConfig<Option, IsMulti, Group>;\n  error?: string;\n  ariaErrorMessage?: string;\n  options: OptionSelectTree[];\n  defaultValue?: {\n    value?: string | number | null;\n  };\n  isSearchable?: boolean;\n  maxDisplayDepth?: number;\n  openValues?: (string | number | null)[];\n  onOptionToggle?: (value: string | number | null) => void;\n}\n\nconst Select = ({\n  components = {},\n  styles = {},\n  error,\n  ariaErrorMessage,\n  ...props\n}: SelectProps) => {\n  const theme = useTheme();\n  const customStyles = getSelectStyles(theme, error);\n\n  return (\n    <ReactSelect\n      menuPosition=\"fixed\"\n      components={{\n        ...components,\n        ClearIndicator,\n        DropdownIndicator,\n        IndicatorSeparator: () => null,\n        LoadingIndicator: () => null,\n      }}\n      aria-errormessage={error && ariaErrorMessage}\n      aria-invalid={!!error}\n      styles={\n        { ...customStyles, ...styles } as StylesConfig<SelectOption, false, GroupBase<SelectOption>>\n      }\n      {...props}\n    />\n  );\n};\n\nconst IconBox = styled(Box)`\n  background: transparent;\n  border: none;\n  position: relative;\n  z-index: 1;\n\n  svg {\n    height: 1.1rem;\n    width: 1.1rem;\n  }\n\n  svg path {\n    fill: ${({ theme }) => theme.colors.neutral600};\n  }\n`;\n\nconst ClearIndicator = (\n  props: ClearIndicatorProps<SelectOption, false, GroupBase<SelectOption>>\n) => {\n  const Component = components.ClearIndicator;\n\n  return (\n    <Component {...props}>\n      <IconBox tag=\"button\" type=\"button\">\n        <Cross />\n      </IconBox>\n    </Component>\n  );\n};\n\nconst CarretBox = styled(IconBox)`\n  display: flex;\n  background: none;\n  border: none;\n\n  svg {\n    width: 0.9rem;\n  }\n`;\n\nconst DropdownIndicator = ({ innerProps }: { innerProps: object }) => {\n  return (\n    <CarretBox paddingRight={3} {...innerProps}>\n      <CaretDown />\n    </CarretBox>\n  );\n};\n\nconst getSelectStyles = (\n  theme: DefaultTheme,\n  error?: string\n): StylesConfig<SelectOption, false, GroupBase<SelectOption>> => {\n  return {\n    clearIndicator: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n    container: (base: object) => ({\n      ...base,\n      background: theme.colors.neutral0,\n      lineHeight: 'normal',\n    }),\n    control(base: object, state: { isFocused: boolean; isDisabled: boolean }) {\n      let borderColor = theme.colors.neutral200;\n      let boxShadowColor: string | undefined = undefined;\n      let backgroundColor: string | undefined = undefined;\n\n      if (state.isFocused) {\n        borderColor = theme.colors.primary600;\n        boxShadowColor = theme.colors.primary600;\n      } else if (error) {\n        borderColor = theme.colors.danger600;\n      }\n\n      if (state.isDisabled) {\n        backgroundColor = `${theme.colors.neutral150} !important`;\n      }\n\n      return {\n        ...base,\n        fontSize: theme.fontSizes[2],\n        height: 40,\n        border: `1px solid ${borderColor} !important`,\n        outline: 0,\n        backgroundColor,\n        borderRadius: theme.borderRadius,\n        boxShadow: boxShadowColor ? `${boxShadowColor} 0px 0px 0px 2px` : '',\n      };\n    },\n    indicatorsContainer: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n    input: (base: object) => ({\n      ...base,\n      margin: 0,\n      padding: 0,\n      color: theme.colors.neutral800,\n      gridTemplateColumns: '0 100%',\n    }),\n    menuPortal: (base: object) => ({\n      ...base,\n      zIndex: theme.zIndices.dialog,\n      pointerEvents: 'auto',\n    }),\n    menu(base: object) {\n      return {\n        ...base,\n        width: '100%',\n        marginTop: theme.spaces[1],\n        backgroundColor: theme.colors.neutral0,\n        color: theme.colors.neutral800,\n        borderRadius: theme.borderRadius,\n        border: `1px solid ${theme.colors.neutral200}`,\n        boxShadow: theme.shadows.tableShadow,\n        fontSize: theme.fontSizes[2],\n        zIndex: 2,\n      };\n    },\n    menuList: (base: object) => ({\n      ...base,\n      paddingLeft: theme.spaces[1],\n      paddingTop: theme.spaces[1],\n      paddingRight: theme.spaces[1],\n      paddingBottom: theme.spaces[1],\n    }),\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    option(base: any, state: { isFocused: boolean; isSelected: boolean }) {\n      let backgroundColor = base?.backgroundColor as string;\n\n      if (state.isFocused || state.isSelected) {\n        backgroundColor = theme.colors.primary100;\n      }\n\n      return {\n        ...base,\n        color: theme.colors.neutral800,\n        lineHeight: theme.spaces[5],\n        backgroundColor,\n        borderRadius: theme.borderRadius,\n        '&:active': {\n          backgroundColor: theme.colors.primary100,\n        },\n      };\n    },\n    placeholder: (base: object) => ({\n      ...base,\n      color: theme.colors.neutral600,\n      marginLeft: 0,\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      whiteSpace: 'nowrap',\n      maxWidth: '80%',\n    }),\n    singleValue(base: object, state: { isDisabled: boolean }) {\n      let color = theme.colors.neutral800;\n\n      if (state.isDisabled) {\n        color = theme.colors.neutral600;\n      }\n\n      return { ...base, marginLeft: 0, color };\n    },\n    valueContainer: (base: object) => ({\n      ...base,\n      cursor: 'pointer',\n      padding: 0,\n      paddingLeft: theme.spaces[4],\n      marginLeft: 0,\n      marginRight: 0,\n    }),\n  };\n};\n"],"names":["hasParent","option","parent","SelectTree","options","defaultOptions","maxDisplayDepth","defaultValue","props","flatDefaultOptions","React","useMemo","flattenTree","optionsFiltered","filter","setOptions","useState","openValues","setOpenValues","getOpenValues","useEffect","length","undefined","allOpenValues","reduce","acc","value","forEach","values","nextOptions","includes","handleToggle","valuesToClose","getValuesToClose","prev","prevData","_jsx","Select","components","Option","isSearchable","onOptionToggle","styles","error","ariaErrorMessage","theme","useTheme","customStyles","getSelectStyles","ReactSelect","menuPosition","ClearIndicator","DropdownIndicator","IndicatorSeparator","LoadingIndicator","aria-errormessage","aria-invalid","IconBox","styled","Box","colors","neutral600","Component","tag","type","Cross","CarretBox","innerProps","paddingRight","CaretDown","clearIndicator","base","padding","spaces","container","background","neutral0","lineHeight","control","state","borderColor","neutral200","boxShadowColor","backgroundColor","isFocused","primary600","danger600","isDisabled","neutral150","fontSize","fontSizes","height","border","outline","borderRadius","boxShadow","indicatorsContainer","input","margin","color","neutral800","gridTemplateColumns","menuPortal","zIndex","zIndices","dialog","pointerEvents","menu","width","marginTop","shadows","tableShadow","menuList","paddingLeft","paddingTop","paddingBottom","isSelected","primary100","placeholder","marginLeft","overflow","textOverflow","whiteSpace","maxWidth","singleValue","valueContainer","cursor","marginRight"],"mappings":"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"}