import { toggle_overlay } from '../helper'; import { toggle_editing_mode } from './toggles'; // templates import logic_template from './templates/logic'; import product_category_template from './templates/product_category'; import customer_logged_in_status_template from './templates/customer_logged_in_status'; import customer_user_role_template from './templates/customer_user_role'; import disallowed_customer_user_role_template from './templates/disallowed_customer_user_role'; import cart_quantity_template from './templates/cart_quantity'; import cart_subtotal_template from './templates/cart_subtotal'; import condition_premium_template from './templates/condition_premium'; declare var jQuery: any; declare var acfw_edit_coupon: any; declare var vex: any; const $: any = jQuery; const { cart_condition_premium_notice, cart_condition_fields, upsell } = acfw_edit_coupon; /** * Add condition field. * * @since 1.0.0 */ export function add_condition_field(): void { // @ts-ignore const $button: JQuery = $(this), $condition_type: JQuery = $button.closest('.condition-group-actions').find('select.condition-types'), $condition_group: JQuery = $button.closest('.condition-group'), $condition_fields: JQuery = $condition_group.find('.condition-group-fields'), overlay = document.querySelector('#acfw_cart_conditions .acfw-overlay') as HTMLElement; const premiumConditions: string[] = $('#acfw_cart_conditions').data('premium-conditions'); const condition_type: string = $condition_type.val() + ''; const fields_count: number = $condition_fields.find('.condition-field,.condition-set').length; toggle_overlay(overlay, 'show'); if (premiumConditions && premiumConditions.indexOf(condition_type) > -1) { // upsell vex.dialog.alert({ unsafeMessage: upsell.cart_condition_field }); } else { const condition_field_markup: string = get_condition_field(condition_type, null, fields_count); if (condition_field_markup) { $condition_fields.find('.empty-conditions').remove(); $condition_fields.show().append(condition_field_markup); $condition_fields.find(`.${condition_type}-field`).find('input,select').trigger('change'); $('body').trigger('wc-enhanced-select-init'); toggle_editing_mode(true); } else vex.dialog.alert(acfw_edit_coupon.fail_add_condition_field); } toggle_overlay(overlay, 'hide'); $condition_group.find('.condition-group-actions .add-condition-form').hide(); $condition_group.find('.condition-group-actions .add-condition-trigger').show(); } /** * Remove condition field. * * @since 1.0.0 */ export function remove_condition_field(): void { // @ts-ignore const $button: JQuery = $(this), $condition_field: JQuery = $button.closest('.condition-field,.condition-set'), $condition_group: JQuery = $condition_field.closest('.condition-group'), $cfield_logic: JQuery = $condition_field.index() == 0 ? $condition_field.next('.logic-condition-field') : $condition_field.prev('.logic-condition-field'); const { empty_cart_conditions_field } = acfw_edit_coupon; $condition_field.remove(); $cfield_logic.remove(); if ($condition_group.find('.condition-field,.condition-set').length < 1) { $condition_group.find('.condition-group-fields').append(`