{"version":3,"file":"MultiSelect.cjs","sources":["../../../src/components/MultiSelect/MultiSelect.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { useId, useUncontrolled } from '@raikou/hooks';\nimport {\n  BoxProps,\n  ElementProps,\n  extractStyleProps,\n  factory,\n  Factory,\n  StylesApiProps,\n  useProps,\n  useResolvedStylesApi,\n  useStyles,\n} from '../../core';\nimport { __CloseButtonProps } from '../CloseButton';\nimport {\n  Combobox,\n  ComboboxItem,\n  ComboboxLikeProps,\n  ComboboxLikeRenderOptionInput,\n  ComboboxLikeStylesNames,\n  getOptionsLockup,\n  getParsedComboboxData,\n  OptionsDropdown,\n  useCombobox,\n} from '../Combobox';\nimport { __BaseInputProps, __InputStylesNames } from '../Input';\nimport { Pill } from '../Pill';\nimport { PillsInput } from '../PillsInput';\nimport { ScrollAreaProps } from '../ScrollArea';\nimport { filterPickedValues } from './filter-picked-values';\n\nexport type MultiSelectStylesNames =\n  | __InputStylesNames\n  | ComboboxLikeStylesNames\n  | 'pill'\n  | 'pillsList'\n  | 'inputField';\n\nexport interface MultiSelectProps\n  extends BoxProps,\n    __BaseInputProps,\n    ComboboxLikeProps,\n    StylesApiProps<MultiSelectFactory>,\n    ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {\n  /** Controlled component value */\n  value?: string[];\n\n  /** Default value for uncontrolled component */\n  defaultValue?: string[];\n\n  /** Called when value changes */\n  onChange?: (value: string[]) => void;\n\n  /** Called with `value` of the removed item */\n  onRemove?: (value: string) => void;\n\n  /** Called when the clear button is clicked */\n  onClear?: () => void;\n\n  /** Controlled search value */\n  searchValue?: string;\n\n  /** Default search value */\n  defaultSearchValue?: string;\n\n  /** Called when search changes */\n  onSearchChange?: (value: string) => void;\n\n  /** Maximum number of values, `Infinity` by default */\n  maxValues?: number;\n\n  /** Determines whether the select should be searchable, `false` by default */\n  searchable?: boolean;\n\n  /** Message displayed when no option matches the current search query while the `searchable` prop is set or there is no data */\n  nothingFoundMessage?: React.ReactNode;\n\n  /** Determines whether check icon should be displayed near the selected option label, `true` by default */\n  withCheckIcon?: boolean;\n\n  /** Position of the check icon relative to the option label, `'left'` by default */\n  checkIconPosition?: 'left' | 'right';\n\n  /** Determines whether picked options should be removed from the options list, `false` by default */\n  hidePickedOptions?: boolean;\n\n  /** Determines whether the clear button should be displayed in the right section when the component has value, `false` by default */\n  clearable?: boolean;\n\n  /** Props passed down to the clear button */\n  clearButtonProps?: __CloseButtonProps & ElementProps<'button'>;\n\n  /** Props passed down to the hidden input */\n  hiddenInputProps?: Omit<React.ComponentPropsWithoutRef<'input'>, 'value'>;\n\n  /** Divider used to separate values in the hidden input `value` attribute, `','` by default */\n  hiddenInputValuesDivider?: string;\n\n  /** A function to render content of the option, replaces the default content of the option */\n  renderOption?: (item: ComboboxLikeRenderOptionInput<ComboboxItem>) => React.ReactNode;\n\n  /** Props passed down to the underlying `ScrollArea` component in the dropdown */\n  scrollAreaProps?: ScrollAreaProps;\n}\n\nexport type MultiSelectFactory = Factory<{\n  props: MultiSelectProps;\n  ref: HTMLInputElement;\n  stylesNames: MultiSelectStylesNames;\n}>;\n\nconst defaultProps: Partial<MultiSelectProps> = {\n  maxValues: Infinity,\n  withCheckIcon: true,\n  checkIconPosition: 'left',\n  hiddenInputValuesDivider: ',',\n};\n\nexport const MultiSelect = factory<MultiSelectFactory>((_props, ref) => {\n  const props = useProps('MultiSelect', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    size,\n    value,\n    defaultValue,\n    onChange,\n    onKeyDown,\n    variant,\n    data,\n    dropdownOpened,\n    defaultDropdownOpened,\n    onDropdownOpen,\n    onDropdownClose,\n    selectFirstOptionOnChange,\n    onOptionSubmit,\n    comboboxProps,\n    filter,\n    limit,\n    withScrollArea,\n    maxDropdownHeight,\n    searchValue,\n    defaultSearchValue,\n    onSearchChange,\n    readOnly,\n    disabled,\n    onFocus,\n    onBlur,\n    onPaste,\n    radius,\n    rightSection,\n    rightSectionWidth,\n    rightSectionPointerEvents,\n    rightSectionProps,\n    leftSection,\n    leftSectionWidth,\n    leftSectionPointerEvents,\n    leftSectionProps,\n    inputContainer,\n    inputWrapperOrder,\n    withAsterisk,\n    labelProps,\n    descriptionProps,\n    errorProps,\n    wrapperProps,\n    description,\n    label,\n    error,\n    maxValues,\n    searchable,\n    nothingFoundMessage,\n    withCheckIcon,\n    checkIconPosition,\n    hidePickedOptions,\n    withErrorStyles,\n    name,\n    form,\n    id,\n    clearable,\n    clearButtonProps,\n    hiddenInputProps,\n    placeholder,\n    hiddenInputValuesDivider,\n    required,\n    mod,\n    renderOption,\n    onRemove,\n    onClear,\n    scrollAreaProps,\n    ...others\n  } = props;\n\n  const _id = useId(id);\n  const parsedData = getParsedComboboxData(data);\n  const optionsLockup = getOptionsLockup(parsedData);\n\n  const combobox = useCombobox({\n    opened: dropdownOpened,\n    defaultOpened: defaultDropdownOpened,\n    onDropdownOpen,\n    onDropdownClose: () => {\n      onDropdownClose?.();\n      combobox.resetSelectedOption();\n    },\n  });\n\n  const {\n    styleProps,\n    rest: { type, autoComplete, ...rest },\n  } = extractStyleProps(others);\n\n  const [_value, setValue] = useUncontrolled({\n    value,\n    defaultValue,\n    finalValue: [],\n    onChange,\n  });\n\n  const [_searchValue, setSearchValue] = useUncontrolled({\n    value: searchValue,\n    defaultValue: defaultSearchValue,\n    finalValue: '',\n    onChange: onSearchChange,\n  });\n\n  const getStyles = useStyles<MultiSelectFactory>({\n    name: 'MultiSelect',\n    classes: {} as any,\n    props,\n    classNames,\n    styles,\n    unstyled,\n  });\n\n  const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MultiSelectFactory>({\n    props,\n    styles,\n    classNames,\n  });\n\n  const handleInputKeydown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    onKeyDown?.(event);\n\n    if (event.key === ' ' && !searchable) {\n      event.preventDefault();\n      combobox.toggleDropdown();\n    }\n\n    if (event.key === 'Backspace' && _searchValue.length === 0 && _value.length > 0) {\n      onRemove?.(_value[_value.length - 1]);\n      setValue(_value.slice(0, _value.length - 1));\n    }\n  };\n\n  const values = _value.map((item, index) => (\n    <Pill\n      key={`${item}-${index}`}\n      withRemoveButton={!readOnly && !optionsLockup[item]?.disabled}\n      onRemove={() => {\n        setValue(_value.filter((i) => item !== i));\n        onRemove?.(item);\n      }}\n      unstyled={unstyled}\n      disabled={disabled}\n      {...getStyles('pill')}\n    >\n      {optionsLockup[item]?.label || item}\n    </Pill>\n  ));\n\n  useEffect(() => {\n    if (selectFirstOptionOnChange) {\n      combobox.selectFirstOption();\n    }\n  }, [selectFirstOptionOnChange, _value]);\n\n  const clearButton = clearable && _value.length > 0 && !disabled && !readOnly && (\n    <Combobox.ClearButton\n      size={size as string}\n      {...clearButtonProps}\n      onClear={() => {\n        onClear?.();\n        setValue([]);\n        setSearchValue('');\n      }}\n    />\n  );\n\n  const filteredData = filterPickedValues({ data: parsedData, value: _value });\n\n  return (\n    <>\n      <Combobox\n        store={combobox}\n        classNames={resolvedClassNames}\n        styles={resolvedStyles}\n        unstyled={unstyled}\n        size={size}\n        readOnly={readOnly}\n        __staticSelector=\"MultiSelect\"\n        onOptionSubmit={(val) => {\n          onOptionSubmit?.(val);\n          setSearchValue('');\n          combobox.updateSelectedOptionIndex('selected');\n\n          if (_value.includes(optionsLockup[val].value)) {\n            setValue(_value.filter((v) => v !== optionsLockup[val].value));\n            onRemove?.(optionsLockup[val].value);\n          } else if (_value.length < maxValues!) {\n            setValue([..._value, optionsLockup[val].value]);\n          }\n        }}\n        {...comboboxProps}\n      >\n        <Combobox.DropdownTarget>\n          <PillsInput\n            {...styleProps}\n            __staticSelector=\"MultiSelect\"\n            classNames={resolvedClassNames}\n            styles={resolvedStyles}\n            unstyled={unstyled}\n            size={size}\n            className={className}\n            style={style}\n            variant={variant}\n            disabled={disabled}\n            radius={radius}\n            rightSection={\n              rightSection ||\n              clearButton || <Combobox.Chevron size={size} error={error} unstyled={unstyled} />\n            }\n            rightSectionPointerEvents={rightSectionPointerEvents || (clearButton ? 'all' : 'none')}\n            rightSectionWidth={rightSectionWidth}\n            rightSectionProps={rightSectionProps}\n            leftSection={leftSection}\n            leftSectionWidth={leftSectionWidth}\n            leftSectionPointerEvents={leftSectionPointerEvents}\n            leftSectionProps={leftSectionProps}\n            inputContainer={inputContainer}\n            inputWrapperOrder={inputWrapperOrder}\n            withAsterisk={withAsterisk}\n            labelProps={labelProps}\n            descriptionProps={descriptionProps}\n            errorProps={errorProps}\n            wrapperProps={wrapperProps}\n            description={description}\n            label={label}\n            error={error}\n            multiline\n            withErrorStyles={withErrorStyles}\n            __stylesApiProps={{\n              ...props,\n              rightSectionPointerEvents:\n                rightSectionPointerEvents || (clearButton ? 'all' : 'none'),\n              multiline: true,\n            }}\n            pointer={!searchable}\n            onClick={() => (searchable ? combobox.openDropdown() : combobox.toggleDropdown())}\n            data-expanded={combobox.dropdownOpened || undefined}\n            id={_id}\n            required={required}\n            mod={mod}\n          >\n            <Pill.Group disabled={disabled} unstyled={unstyled} {...getStyles('pillsList')}>\n              {values}\n              <Combobox.EventsTarget autoComplete={autoComplete}>\n                <PillsInput.Field\n                  {...rest}\n                  ref={ref}\n                  id={_id}\n                  placeholder={placeholder}\n                  type={!searchable && !placeholder ? 'hidden' : 'visible'}\n                  {...getStyles('inputField')}\n                  unstyled={unstyled}\n                  onFocus={(event) => {\n                    onFocus?.(event);\n                    searchable && combobox.openDropdown();\n                  }}\n                  onBlur={(event) => {\n                    onBlur?.(event);\n                    combobox.closeDropdown();\n                    setSearchValue('');\n                  }}\n                  onKeyDown={handleInputKeydown}\n                  value={_searchValue}\n                  onChange={(event) => {\n                    setSearchValue(event.currentTarget.value);\n                    searchable && combobox.openDropdown();\n                    selectFirstOptionOnChange && combobox.selectFirstOption();\n                  }}\n                  disabled={disabled}\n                  readOnly={readOnly || !searchable}\n                  pointer={!searchable}\n                />\n              </Combobox.EventsTarget>\n            </Pill.Group>\n          </PillsInput>\n        </Combobox.DropdownTarget>\n\n        <OptionsDropdown\n          data={hidePickedOptions ? filteredData : parsedData}\n          hidden={readOnly || disabled}\n          filter={filter}\n          search={_searchValue}\n          limit={limit}\n          hiddenWhenEmpty={!nothingFoundMessage}\n          withScrollArea={withScrollArea}\n          maxDropdownHeight={maxDropdownHeight}\n          filterOptions={searchable}\n          value={_value}\n          checkIconPosition={checkIconPosition}\n          withCheckIcon={withCheckIcon}\n          nothingFoundMessage={nothingFoundMessage}\n          unstyled={unstyled}\n          labelId={label ? `${_id}-label` : undefined}\n          aria-label={label ? undefined : others['aria-label']}\n          renderOption={renderOption}\n          scrollAreaProps={scrollAreaProps}\n        />\n      </Combobox>\n      <Combobox.HiddenInput\n        name={name}\n        valuesDivider={hiddenInputValuesDivider}\n        value={_value}\n        form={form}\n        disabled={disabled}\n        {...hiddenInputProps}\n      />\n    </>\n  );\n});\n\nMultiSelect.displayName = '@raikou/core/MultiSelect';\n"],"names":["factory","useProps","useId","getParsedComboboxData","getOptionsLockup","useCombobox","extractStyleProps","useUncontrolled","useStyles","useResolvedStylesApi","jsx","Pill","useEffect","Combobox","filterPickedValues","jsxs","Fragment","PillsInput","OptionsDropdown"],"mappings":"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"}