// #region [Imports] =================================================================================================== // Libraries import { Select, InputNumber } from 'antd'; // Components import DebounceSelect from '../../../../../components/DebounceSelect'; // Types import { ICartConditionField } from '../../../../../types/couponTemplates'; import { IFieldOption } from '../../../../../types/fields'; // Helpers import { getConditionOptions } from '../../../../../helpers/utils'; // #endregion [Imports] // #region [Variables] ================================================================================================= declare var ajaxurl: string; declare var acfwAdminApp: any; // #endregion [Variables] // #region [Interfaces]================================================================================================= interface IFieldData { condition: string; quantity: number; value: number[]; } interface IProps { field: ICartConditionField; onChange: (data: IFieldData) => void; } // #endregion [Interfaces] // #region [Component] ================================================================================================= const CouponsAppliedInCart = (props: IProps) => { const { field, onChange } = props; const { labels } = acfwAdminApp.coupon_templates_page; const searchCoupons = async (value: string) => { const response = await jQuery.ajax({ url: ajaxurl, type: 'GET', data: { action: 'acfw_search_coupons', term: value, security: acfwAdminApp.nonces.search_products, include: true, exclude: field.data.value, }, }); return Object.keys(response).map((key) => ({ label: response[key], value: key, })); }; const handleChange = (dataKey: string, value: any) => { const data = { ...field.data, [dataKey]: value }; onChange(data); }; return (

{field.i18n.title}

{field.i18n.desc}

handleChange( 'value', value.map((v) => v.value) ) } />
handleChange('quantity', value ?? undefined)} min={1} status={field?.errors?.includes('quantity') ? 'error' : ''} />
); }; export default CouponsAppliedInCart; // #endregion [Component] // #region [Validator] ================================================================================================= export const couponsInCartDataValidator = (rawData: unknown) => { const data = rawData as IFieldData; const errors: string[] = []; if (data.quantity < 0 || typeof data.quantity !== 'number') { errors.push('quantity'); } if (!data.condition) { errors.push('condition'); } if (data.value.length < 1) { errors.push('value'); } return errors; }; // #endregion [Validator]