import React from 'react'; import { observer } from 'mobx-react-lite'; import { Box, Dropdown, listItemSelectBuilder } from '@wix/design-system'; import { CustomFieldModalState } from '@wix/bex-core'; import { useWixPatternsContainer } from '@wix/bex-core/react'; import { getFieldTypeIcon } from '../../utils/fieldTypePrefixIcons'; export interface CustomFieldTypeDropdownProps { state: CustomFieldModalState; } export const _CustomFieldTypeDropdown = ( props: CustomFieldTypeDropdownProps, ) => { const { state: { form: { $: { type, name }, }, mode, fieldManagement: { creatableFieldTypes }, generateUniqueKey, setKeyFieldIfNotDirty, }, } = props; const { translate: t } = useWixPatternsContainer(); const fieldTypeOptions = React.useMemo( () => creatableFieldTypes.map((option) => listItemSelectBuilder({ dataHook: `custom-field-modal-type-${option.id}`, id: option.id, prefix: ( {getFieldTypeIcon({ fieldType: option.patternsType, size: 'medium', })} ), title: option.label, label: option.label, }), ), [creatableFieldTypes], ); return ( option.label} selectedId={type.value} onSelect={({ id }) => { type.onChange(String(id)); setKeyFieldIfNotDirty(generateUniqueKey(name.value)); }} popoverProps={{ appendTo: 'window', zIndex: 5001 }} dropdownWidth="258px" placeholder={t( 'cairo.customFields.addCustomField.modal.fieldType.placeholder', )} options={fieldTypeOptions} /> ); }; export const CustomFieldTypeDropdown = observer(_CustomFieldTypeDropdown);