// #region [Imports] =================================================================================================== // Libraries import { useMemo } from 'react'; import { Select, Input, InputNumber } from 'antd'; // Types import { ICartConditionField } from '../../../../../types/couponTemplates'; // Helpers import { getConditionOptions } from '../../../../../helpers/utils'; // #endregion [Imports] // #region [Variables] ================================================================================================= declare var acfwAdminApp: any; // #endregion [Variables] // #region [Interfaces]================================================================================================= interface IFieldData { condition: string; key: string; value: string; type: string; } interface IProps { field: ICartConditionField; onChange: (data: IFieldData) => void; } interface IMetaValueProps { value: string; type: string; handleChange: (dataKey: string, value: any) => void; } // #endregion [Interfaces] // #region [Component] ================================================================================================= const MetaValueInput = (props: IMetaValueProps) => { const { value, type, handleChange } = props; if (type === 'number') { return handleChange('value', value?.toString())} />; } if (type === 'price') { return ( handleChange('value', value?.toString())} decimalSeparator="." parser={(value) => parseFloat(value ?? '')} /> ); } return handleChange('value', e.target.value)} />; }; const CustomMeta = (props: IProps) => { const { field, onChange } = props; const { labels } = acfwAdminApp.coupon_templates_page; const handleChange = (dataKey: string, value: any) => { const data = { ...field.data, [dataKey]: value }; onChange(data); }; const conditionOptions = useMemo( () => getConditionOptions().map((option) => ({ ...option, disabled: ['<', '>'].includes(option.value) && field.data.type === 'string', })), [field.data.type] ); return (

{field.i18n.title}

handleChange('key', value)} />
); }; export default CustomMeta; // #endregion [Component] // #region [Validator] ================================================================================================= export const customMetaDataValidator = (rawData: unknown) => { const data = rawData as IFieldData; const errors: string[] = []; if (!data.type) { errors.push('type'); } if ((data.type === 'string' && !data.value) || parseInt(data.value) < 0 || data.value === '') { errors.push('value'); } if (!data.key) { errors.push('key'); } if (!data.condition) { errors.push('condition'); } return errors; }; // #endregion [Validator]