All files / libs/design-system/ext/src/lib/forms/formik-simple-select FormikSimpleSelect.tsx

100% Statements 38/38
100% Branches 1/1
100% Functions 1/1
100% Lines 38/38

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 391x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 1x 1x  
import { memo } from 'react';
 
import {
  SimpleSelect,
  type SelectOptionGroup,
  type SimpleSelectOption,
  type SimpleSelectProps,
} from '@allshares/studio-design-system';
import { useFormikFieldAdapter, type FormikFieldProps } from '@amalia/ext/formik';
 
export type FormikSimpleSelectProps<
  TOption extends SimpleSelectOption = SimpleSelectOption,
  TUseOptionAsValue extends boolean | undefined = undefined,
  TGroup extends SelectOptionGroup<TOption> = SelectOptionGroup<TOption>,
> = FormikFieldProps<SimpleSelectProps<TOption, TUseOptionAsValue, TGroup>>;
 
export const FormikSimpleSelectBase = function FormikSimpleSelect<
  TOption extends SimpleSelectOption = SimpleSelectOption,
  TUseOptionAsValue extends boolean | undefined = undefined,
  TGroup extends SelectOptionGroup<TOption> = SelectOptionGroup<TOption>,
>({
  validate, // Omit validate and any props not passed to Select.
  ...props
}: FormikSimpleSelectProps<TOption, TUseOptionAsValue, TGroup>) {
  const formikFieldProps = useFormikFieldAdapter<SimpleSelectProps<TOption, TUseOptionAsValue, TGroup>['value']>({
    ...props,
    validate,
  });
 
  return (
    <SimpleSelect<TOption, TUseOptionAsValue, TGroup>
      {...props}
      {...formikFieldProps}
    />
  );
};
 
export const FormikSimpleSelect = memo(FormikSimpleSelectBase) as typeof FormikSimpleSelectBase;