import React, { useEffect } from 'react'; import { observer } from 'mobx-react-lite'; import { Box, Cell, Checkbox, Collapse, Divider, FloatingNotification, FormField, InfoIcon, Input, Layout, Text, TextButton, } from '@wix/design-system'; import { useWixPatternsContainer } from '@wix/bex-core/react'; import { CustomFieldModalState } from '@wix/bex-core'; import { CustomFieldTypeDropdown } from './CustomFieldTypeDropdown'; import { ChevronDown, ChevronUp, InfoCircle } from '@wix/wix-ui-icons-common'; import { Trans } from '../Trans'; import { runInAction } from 'mobx'; import { PiiFormFields } from './CustomFieldFormPiiFields'; export interface CustomFieldFormProps { state: CustomFieldModalState; } export const _CustomFieldForm = (props: CustomFieldFormProps) => { const { state } = props; const { form: { $: { key, type, name, readApps, readUsers, writeApps, writeUsers, containsPii, }, }, errorToastConfig, disabledFields: { permissions }, mode, settings, customFieldModalBiReporter, generateUniqueKey, setKeyFieldIfNotDirty, } = state; const defaultPermissions = state.fieldManagement.permissions; const { reportAdvancedSettingsClick, reportKeyFormFieldChange } = customFieldModalBiReporter; const { translate: t, environment: { language }, } = useWixPatternsContainer(); useEffect(() => customFieldModalBiReporter.init(), []); return ( {errorToastConfig && ( } text={errorToastConfig.message} textButtonProps={ errorToastConfig?.action && { label: errorToastConfig.action.text, onClick: () => errorToastConfig?.action?.onClick?.(), } } onClose={() => { runInAction(() => { state.errorToastConfig = undefined; }); }} /> )} {mode === 'edit' && ( {t('cairo.customFields.editCustomField.fieldType.tooltip')} )} { name.onChange(e.target.value); setKeyFieldIfNotDirty(generateUniqueKey(e.target.value)); }} value={name.value} maxLength={64} placeholder={state.namePlaceholder} /> {state.fieldManagement.supportsPii && ( )} : } onClick={() => settings.toggle()} > {t('cairo.customFields.addCustomField.modal.advancedSettings')} { reportAdvancedSettingsClick('Open'); }} onCollapseAnimationEnd={() => { reportAdvancedSettingsClick('Close'); }} > {(!defaultPermissions?.installedApps?.hide || !defaultPermissions?.siteVisitors?.hide) && ( {t( 'cairo.customFields.addCustomField.modal.advancedSettings.readPermissions', )} {t( 'cairo.customFields.addCustomField.modal.advancedSettings.readPermissions.tooltip', )} )} {!defaultPermissions?.installedApps?.hide && ( {t( 'cairo.customFields.addCustomField.modal.advancedSettings.externalApps', )} } /> { readApps.onChange(!readApps.value); }} checked={readApps.value} > {t( 'cairo.customFields.addCustomField.modal.advancedSettings.read', )} { writeApps.onChange(!writeApps.value); }} checked={writeApps.value} > {t( 'cairo.customFields.addCustomField.modal.advancedSettings.write', )} )} {!defaultPermissions?.siteVisitors?.hide && ( <> {t( 'cairo.customFields.addCustomField.modal.advancedSettings.siteVisitors', )} ), }} /> } /> { readUsers.onChange(!readUsers.value); }} checked={readUsers.value} > {t( 'cairo.customFields.addCustomField.modal.advancedSettings.read', )} { writeUsers.onChange(!writeUsers.value); }} checked={writeUsers.value} > {t( 'cairo.customFields.addCustomField.modal.advancedSettings.write', )} ), }} /> )} { key.onChange(e.target.value.toLowerCase()); reportKeyFormFieldChange(); }} placeholder={t( 'cairo.customFields.addCustomField.modal.advancedSettings.key.placeholder', )} /> {!key.hasError && ( {mode === 'new' ? t( 'cairo.customFields.addCustomField.modal.advancedSettings.key.tooltip', ) : t('cairo.customFields.editCustomField.fieldKey.tooltip')} )} ); }; export const CustomFieldForm = observer(_CustomFieldForm);