{"version":3,"file":"scripts/chunks/src_widgets_checkout-payment_checkout-payment_js.94dd9af58f4ec814447a.js","mappings":"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","sources":["webpack://disp0001/./src/widgets/checkout-payment/checkout-payment.js"],"sourcesContent":["Promise.all([\r\n import(/* webpackMode: \"eager\" */ './checkout-payment.scss'),\r\n import('../../scripts/dbs/dbs.semantic.form'),\r\n import('../../plugins/semantic/form.scss'),\r\n import('../../plugins/semantic/input.scss'),\r\n import('../../plugins/semantic/label.css'),\r\n import('../../plugins/cleave/cleave.js'),\r\n import('../../plugins/semantic/checkbox.css'),\r\n import('../../plugins/semantic/checkbox'),\r\n import('../../plugins/semantic/modal.scss'),\r\n import('../../plugins/semantic/modal'),\r\n import('../../plugins/semantic/dimmer.scss'),\r\n import('../../plugins/semantic/dimmer'),\r\n import('../../plugins/semantic/popup'),\r\n import('../../plugins/semantic/popup.css'),\r\n import('../book-now/book-now'),\r\n]).then(() => {\r\n $('.widget.checkout-payment').each(function (i, el) {\r\n $(el).data('widget', new CheckoutPayment(el))\r\n $(el).data('widget').init()\r\n })\r\n})\r\n\r\nfunction CheckoutPayment(el) {\r\n const self = this\r\n self.el = $(el)\r\n\r\n // IMPORTANT This must be placed before `dbs.form` init.\r\n $.fn.form.settings.onValid = function () {\r\n if (self.paymentForm) {\r\n if (self.paymentForm.form.length === 0) return\r\n\r\n const errorText = $(this).attr('data-prompts')\r\n if (errorText === undefined) return\r\n\r\n // Remove items from the errors messages list for fields that become valid by user editing the form field\r\n const errors = self.paymentForm.form.find('.ui.error.message ul.list')\r\n errors.children('li').each(function (i, item) {\r\n const itemText = $(item).html()\r\n if (errorText.trim().indexOf(itemText.trim()) === -1) return\r\n $(item).remove()\r\n })\r\n\r\n // If no errors, remove the 'error' CSS class from the form to hide the error messages panel\r\n if (errors.children('li').length === 0) {\r\n self.paymentForm.form.removeClass('error')\r\n }\r\n }\r\n }\r\n\r\n self.paymentForm = new dbs.form.genericForm()\r\n self.paymentForm.init(self.el.find('.ui.form.payment-form'))\r\n\r\n self.isFormValid = function () {\r\n return self.paymentForm.form.form('is valid')\r\n }\r\n\r\n self.validateForm = function () {\r\n // Validates form, updates UI, and calls onSuccess or onFailure\r\n // See https://semantic-ui.com/behaviors/form.html#behaviors\r\n return self.paymentForm.form.form('validate form')\r\n }\r\n\r\n self.submitForm = function () {\r\n let isFormValid = self.validateForm()\r\n\r\n if (isFormValid) {\r\n self.processPayment()\r\n return\r\n }\r\n\r\n self.paymentForm.scrollToErrors()\r\n\r\n window.dbs.globalEvents.emit('payment_form_error')\r\n }\r\n\r\n self.processPayment = function () {\r\n let depositAmount = null\r\n\r\n if ($('#payment-by-deposit').next('.payment-option').is(':visible')) {\r\n if ($('#payment-by-deposit').is(':checked')) {\r\n depositAmount = $('#actual-deposit-amount').text() * 100\r\n }\r\n }\r\n\r\n if ($('#payment-by-bnpl').next('.payment-option').is(':visible')) {\r\n if ($('#payment-by-bnpl').is(':checked')) {\r\n depositAmount = $('#actual-deposit-amount').text() * 100\r\n }\r\n }\r\n\r\n const data = {\r\n cartId: self.el.data('cart-id'),\r\n cartToken: self.el.data('cart-token'),\r\n subscribeToTopParks: $('.subscribeToTopParks').is(':checked'),\r\n subscribeToGDAY: $('.subscribeToGDAY').is(':checked'),\r\n sendGdayRewardsMembershipCard: $('.sendGdayRewardsMembershipCard').is(':checked'),\r\n depositAmount: depositAmount,\r\n isBNPL: $('#payment-by-bnpl').is(':checked'),\r\n }\r\n\r\n $.ajax({\r\n url: self.el.data('endpoint'),\r\n type: self.el.data('method'),\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n contentType: 'application/json',\r\n })\r\n .done(function (response) {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.log('[BPOINT]', 'DONE', self.el.data('endpoint'), response)\r\n console.log('[BPOINT]', 'AuthenticationKeyType?', response.AuthenticationKeyType)\r\n console.log('[BPOINT]', 'RedirectUrl?', response.RedirectUrl)\r\n }\r\n\r\n const bpointPaymentWidget = $('.widget.bpoint-payment').data('bpoint')\r\n\r\n // Handle case where order of total is $0, and we do not need to process Credit Card details.\r\n // Such as, in the case where a voucher code is applied and covers to total cost of the order.\r\n if (response.AuthenticationKeyType === 'ZeroPayment') {\r\n bpointPaymentWidget.ProcessPaymentResult(response.RedirectUrl)\r\n } else {\r\n bpointPaymentWidget.ProcessPayment(response)\r\n }\r\n })\r\n .fail(function (error) {\r\n console.error(error)\r\n\r\n if (error.responseJSON?.message) {\r\n self.el.find('.ui.error.message').html(`<ul class=\"list\">\r\n <li>${error.responseJSON.message}</li>\r\n </ul>`)\r\n }\r\n })\r\n\r\n return false\r\n }\r\n\r\n self.displayBpointErrors = function (errors) {\r\n console.log('displayBpointErrors', errors)\r\n // Build errors list that can display inside semantic-ui form error message block.\r\n // See https://semantic-ui.com/behaviors/form.html#displaying-error-messages\r\n function compileErrorsList(errors) {\r\n let html = '<ul class=\"list\">'\r\n $.each(errors, (i, value) => (html += `<li>${value.Message}</li>`))\r\n html += '</ul>'\r\n return $(html)\r\n }\r\n\r\n // Use semantic-ui form error message block to display server response errors.\r\n // NOTE This clears out any existing error messages, we are assuming client-side validation\r\n // has passed validation, since we are getting a server response now.\r\n self.paymentForm.el.find('.ui.error.message').html(compileErrorsList(errors))\r\n self.paymentForm.el.removeClass('success')\r\n self.paymentForm.el.addClass('error') // Used to show semantic-ui form error message block\r\n\r\n self.paymentForm.scrollToErrors()\r\n }\r\n\r\n // Handle credit card 'number' format\r\n const creditCardNumberInput = self.el.find('.cardnumber')\r\n if (creditCardNumberInput) {\r\n // eslint-disable-next-line no-unused-vars\r\n const cleaveCardNumber = new Cleave(creditCardNumberInput[0], {\r\n creditCard: true,\r\n onValueChanged: function (e) {\r\n // NOTE `.cardnumber-raw` is not found on the checkout payment page, so this is doing nothing.\r\n self.el.find('.cardnumber-raw').val(e.target.rawValue)\r\n },\r\n })\r\n }\r\n\r\n // Handle credit card 'expiry date' format\r\n const creditCardExpiryDateInput = self.el.find('.date.expiry-date')\r\n if (creditCardExpiryDateInput) {\r\n let forTestCards = creditCardExpiryDateInput.hasClass('expiry-date-valid-for-test-cards')\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n const cleaveCardExpiryDate = new Cleave(\r\n creditCardExpiryDateInput[0],\r\n forTestCards\r\n ? {\r\n delimiter: '/',\r\n blocks: [2, 2],\r\n }\r\n : {\r\n date: true,\r\n datePattern: ['m', 'y'],\r\n },\r\n )\r\n }\r\n\r\n self.voucherComponent = self.el.find('.redeem-voucher-component')\r\n self.showVoucherFormButon = self.el.find('.js-show-voucher-form')\r\n self.voucherForm = self.el.find('.redeem-voucher-form')\r\n self.voucherFormInput = self.el.find('input#voucherCode')\r\n self.validateVoucherEndpoint = self.voucherComponent.attr('data-validate-voucher-endpoint')\r\n self.validateVoucherEndpointMethod = self.voucherComponent.attr('data-validate-voucher-endpoint-method')\r\n self.removeVoucherEndpoint = self.voucherComponent.attr('data-remove-voucher-endpoint')\r\n self.removeVoucherEndpointMethod = self.voucherComponent.attr('data-remove-voucher-endpoint-method')\r\n self.updateCartEndpoint = self.voucherComponent.attr('data-update-cart-endpoint')\r\n self.updateCartEndpointMethod = self.voucherComponent.attr('data-update-cart-endpoint-method')\r\n\r\n /**\r\n * Handles UI updates and other events to add voucher to the order.\r\n * @function\r\n * @param {Object} voucher - Details about the voucher.\r\n * @param {bool} voucher.Valid\r\n * @param {string} voucher.VoucherCode\r\n * @param {number} voucher.VoucherType - 1 = Promo voucher, 2 = Gift voucher\r\n * @param {string} voucher.VoucherAmount - Total amount\r\n * @param {string} voucher.VoucherChargeTotal\r\n */\r\n self.updateVoucherDisplay = function (voucher) {\r\n console.log('[VOUCHER]', 'updateVoucherDisplay()') // TEMP\r\n\r\n self.showVoucherForm()\r\n\r\n // Format price values to 2 decimal places\r\n let voucherAmountFormatted = parseFloat(voucher.VoucherAmount).toFixed(2)\r\n let voucherChargeTotalFormatted = parseFloat(voucher.VoucherChargeTotal).toFixed(2)\r\n\r\n self.voucherFormInput.prop('disabled', true)\r\n self.voucherFormInput.val(voucher.VoucherCode)\r\n self.voucherComponent.find('.redeemed-amount').text('').text(voucherAmountFormatted)\r\n self.voucherComponent.addClass('valid')\r\n\r\n self.el.find('.field.terms .voucher-charge-total').html(voucherChargeTotalFormatted)\r\n self.el.find('.field.terms .additional-voucher-terms').show()\r\n\r\n // Remove widget loading state\r\n self.voucherComponent.removeClass('loading')\r\n }\r\n\r\n self.showVoucherNotification = function (text) {\r\n self.voucherComponent\r\n .popup({\r\n on: 'manual',\r\n position: 'top right',\r\n closable: true,\r\n content: text,\r\n onVisible: () => setTimeout(() => self.voucherComponent.popup('hide'), 5000),\r\n })\r\n .popup('show')\r\n }\r\n\r\n self.removeVoucherDisplay = function () {\r\n console.log('removeVoucherDisplay()') // TEMP\r\n\r\n self.voucherFormInput.val('')\r\n self.voucherFormInput.prop('disabled', false)\r\n self.voucherComponent.find('.redeemed-amount').text('')\r\n self.voucherComponent.removeClass('valid')\r\n\r\n self.el.find('.field.terms .voucher-charge-total').empty()\r\n self.el.find('.field.terms .additional-voucher-terms').hide()\r\n\r\n // Remove widget loading state\r\n self.voucherComponent.removeClass('loading')\r\n\r\n if (self.voucherComponent.hasClass('active')) {\r\n self.showVoucherNotification('Gift Voucher removed')\r\n }\r\n\r\n enablePaymentOptions()\r\n }\r\n\r\n self.updateOrder = function () {\r\n if (self.updateCartEndpoint === '/demo/api/voucher') {\r\n console.log('fake success')\r\n return Promise.resolve('/demo/api/voucher/update-cart.json')\r\n }\r\n\r\n let data = {\r\n cartId: self.el.attr('data-cart-id'),\r\n cartToken: self.el.attr('data-cart-token'),\r\n }\r\n\r\n console.log('[VOUCHER]', 'updateOrder()', data) // TEMP\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n url: self.updateCartEndpoint,\r\n type: self.updateCartEndpointMethod,\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n contentType: 'application/json',\r\n success: function (data) {\r\n console.log('[VOUCHER]', 'updateOrder()', 'response?', data) // TEMP\r\n resolve(data)\r\n },\r\n error: function (error) {\r\n if (error.status === 400) {\r\n reject(error)\r\n }\r\n\r\n reject(error)\r\n },\r\n })\r\n })\r\n }\r\n\r\n self.showVoucherForm = function () {\r\n self.voucherComponent.addClass('active')\r\n self.showVoucherFormButon.hide()\r\n }\r\n\r\n self.removeVoucher = function () {\r\n console.log('removeVoucher()') // TEMP\r\n\r\n self.voucherComponent.addClass('loading')\r\n\r\n // TEMP\r\n const demoJsonEndpoint = function () {\r\n return '/demo/api/voucher/remove-voucher.json'\r\n }\r\n\r\n let data = {\r\n token: self.el.attr('data-cart-token'),\r\n }\r\n\r\n console.log('[VOUCHER]', 'removeVoucher()', data) // TEMP\r\n $.ajax({\r\n url: self.removeVoucherEndpoint === '/demo/api/voucher' ? demoJsonEndpoint() : self.removeVoucherEndpoint, // TEMP\r\n type: self.removeVoucherEndpointMethod,\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n contentType: 'application/json',\r\n })\r\n .done(function (response) {\r\n console.log('[VOUCHER]', 'removeVoucher()', 'response?', response) // TEMP\r\n\r\n self\r\n .updateOrder()\r\n .then(() => window.dbs.globalEvents.emit('book_pricing'))\r\n .catch((error) => {\r\n self.voucherComponent.removeClass('loading')\r\n console.log(error)\r\n })\r\n })\r\n .fail(function (err) {\r\n // How do we handle voucher code API failures?\r\n console.error(err)\r\n })\r\n .always(function () {})\r\n }\r\n\r\n self.validateVoucher = function () {\r\n console.log('validateVoucher()') // TEMP\r\n\r\n let voucherInputValue = self.voucherFormInput.val().trim()\r\n let voucherError = self.voucherFormInput.next('.error')\r\n\r\n // reset error text\r\n voucherError.hide().text('')\r\n\r\n if (voucherInputValue === '') {\r\n voucherError.show().text(`Please enter a gift voucher code.`)\r\n return false\r\n }\r\n\r\n self.voucherComponent.addClass('loading')\r\n\r\n // TEMP\r\n const demoJsonEndpoint = function () {\r\n if (voucherInputValue.toLowerCase() === 'gift') return '/demo/api/voucher/valid-gift-voucher.json'\r\n if (voucherInputValue.toLowerCase() === 'promo') return '/demo/api/voucher/valid-promo-voucher.json'\r\n return '/demo/api/voucher/invalid-voucher.json'\r\n }\r\n\r\n let data = {\r\n voucherCode: voucherInputValue,\r\n token: self.el.attr('data-cart-token'),\r\n propertyId: $('.widget.book-now').attr('data-parkid'), // TODO set park ID as data on the checkout-payment widget\r\n }\r\n\r\n console.log('[VOUCHER]', 'validateVoucher()', data) // TEMP\r\n $.ajax({\r\n url: self.validateVoucherEndpoint === '/demo/api/voucher' ? demoJsonEndpoint() : self.validateVoucherEndpoint, // TEMP\r\n type: self.validateVoucherEndpointMethod,\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n contentType: 'application/json',\r\n })\r\n .done(function (response) {\r\n console.log('[VOUCHER]', 'validateVoucher()', 'response?', response) // TEMP\r\n\r\n if (response.Valid === true) {\r\n self\r\n .updateOrder()\r\n .then(() => {\r\n // NOTE Back-end takes care of updating the booking once the voucher is validated.\r\n // We just need to trigger a refresh of the booking to get the updates to the order displaying on the front-end.\r\n window.dbs.globalEvents.emit('book_pricing')\r\n })\r\n .catch((error) => {\r\n self.voucherComponent.removeClass('loading')\r\n voucherError.show().text('Sorry, but the voucher could not be applied the order. Please try again.')\r\n console.error(error)\r\n })\r\n return\r\n }\r\n\r\n if (response.Valid === false) {\r\n self.voucherComponent.removeClass('loading')\r\n voucherError.show().text(response.Message)\r\n return\r\n }\r\n\r\n console.error('There was an error validating the voucher.')\r\n })\r\n .fail(function (err) {\r\n // How do we handle voucher code API failures?\r\n console.error(err)\r\n self.voucherComponent.removeClass('loading')\r\n })\r\n .always(function () {})\r\n }\r\n\r\n const setPaymentOption = function (option) {\r\n console.log('setPaymentOption()', option) // TEMP\r\n\r\n const svgArrowRight =\r\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"10\" fill=\"none\"><path fill=\"#fff\" d=\"m10.7656 6.03906-3.74998 3.75C6.875 9.92969 6.6875 10 6.5 10c-.21094 0-.39844-.07031-.53906-.21094-.30469-.28125-.30469-.77344 0-1.05468L8.42188 6.25H1.25C.828125 6.25.5 5.92188.5 5.5c0-.39844.328125-.75.75-.75h7.17188L5.96094 2.28906c-.30469-.28125-.30469-.77344 0-1.05468.28125-.304692.77344-.304692 1.05468 0l3.74998 3.75c.3047.28124.3047.77343 0 1.05468Z\"/></svg>'\r\n\r\n // Reset form validation\r\n self.paymentForm.form.find('.ui.error.message').empty()\r\n self.paymentForm.form.form('reset')\r\n\r\n // IMPORTANT We check the terms field name exists before removing, else it will cause error\r\n self.paymentForm.form.form(\r\n 'remove fields',\r\n self.paymentFormTermsFields.filter((name) => self.paymentForm.fields[name]),\r\n )\r\n\r\n // Hide all terms checkboxes\r\n let checkboxes = $('#terms-payment-option-full, #terms-payment-option-bnpl')\r\n checkboxes.prop('checked', false).closest('.field.terms').hide()\r\n\r\n let formSubmitButtons = $('.widget.book-now .submit.book-now, .widget.book-now .submit.mobile-book-now')\r\n\r\n if (option === 'full' || option === 'deposit') {\r\n let checkbox = $('#terms-payment-option-full')\r\n checkbox.closest('.field.terms').show()\r\n self.paymentForm.form.form('add rule', checkbox.attr('name'), {\r\n rules: [\r\n {\r\n type: checkbox.attr('data-rules') ?? 'checked',\r\n prompt: checkbox.attr('data-prompts'),\r\n },\r\n ],\r\n })\r\n\r\n formSubmitButtons.html('CONFIRM AND PAY ' + svgArrowRight)\r\n }\r\n\r\n if (option === 'bnpl') {\r\n let checkbox = $('#terms-payment-option-bnpl')\r\n checkbox.closest('.field.terms').show()\r\n self.paymentForm.form.form('add rule', checkbox.attr('name'), {\r\n rules: [\r\n {\r\n type: checkbox.attr('data-rules') ?? 'checked',\r\n prompt: checkbox.attr('data-prompts'),\r\n },\r\n ],\r\n })\r\n\r\n formSubmitButtons.html('CONFIRM BOOKING ' + svgArrowRight)\r\n }\r\n\r\n // Re-trigger validation events\r\n // On payment option change, the above code has reset the form values and updated fields and rules to suit the options selected. As such,\r\n // we need to re-trigger the form validation, to re-emit any pub-sub events, for example, handling disabling of submit button if invalid fields.\r\n self.paymentForm.isValid()\r\n }\r\n\r\n const initPaymentOptionSelection = function () {\r\n console.log('initPaymentOptionSelection()') // TEMP\r\n\r\n // Build array of names of all 'terms' checkboxes found in the payment form.\r\n // Used to check before removing the field from the form when setting a new payment option selection.\r\n self.paymentFormTermsFields = []\r\n self.paymentForm.el.find('.field.terms input[type=\"checkbox\"]').each((i, checkbox) => {\r\n let name = $(checkbox).attr('name')\r\n self.paymentFormTermsFields.push(name)\r\n })\r\n\r\n $('#payment-in-full').change(function () {\r\n if ($(this).is(':checked')) setPaymentOption('full')\r\n })\r\n\r\n $('#payment-by-bnpl').change(function () {\r\n if ($(this).is(':checked')) setPaymentOption('bnpl')\r\n })\r\n\r\n $('#payment-by-deposit').change(function () {\r\n if ($(this).is(':checked')) setPaymentOption('deposit')\r\n })\r\n }\r\n\r\n const enablePaymentOptions = function (selector = '.payment-options input') {\r\n console.log('enablePaymentOptions()', selector)\r\n self.el.find(selector).each(function (i, option) {\r\n let checkbox = $(option)\r\n let label = $(option).next('label')\r\n\r\n checkbox.prop('disabled', false).prop('checked', i === 0)\r\n\r\n if (label.css('display') === 'none') return\r\n label.css('display', '') // Removes unwanted 'display: inline' on labels when revealed.\r\n })\r\n\r\n setPaymentOption('full') // default payment option selected\r\n }\r\n\r\n const disablePaymentOptions = function (selector = '.payment-options input') {\r\n console.log('disablePaymentOptions()', selector)\r\n self.el.find(selector).each(function (i, option) {\r\n let checkbox = $(option)\r\n let label = $(option).next('label')\r\n\r\n checkbox.prop('disabled', true).prop('checked', false)\r\n\r\n label.css('display', 'none')\r\n })\r\n\r\n // If only one payment option remains, then select it by default\r\n let labels = self.el.find('.payment-options label')\r\n let visibleLabels = labels.filter((i, el) => el.style.display !== 'none')\r\n if (visibleLabels.length === 1) {\r\n let checkbox = $(visibleLabels).prev('input')\r\n checkbox.prop('checked', true)\r\n }\r\n }\r\n\r\n self.promoCodeComponent = self.el.find('.promo-code-component')\r\n self.showPromoCodeFormButton = self.el.find('.js-show-promo-code-form')\r\n self.hidePromoCodeFormButton = self.el.find('.js-hide-promo-code-form')\r\n self.promoCodeForm = self.el.find('.promo-code-form')\r\n self.promoCodeFormInput = self.el.find('input#promoCode')\r\n self.promoCodeErrorText = self.promoCodeFormInput.next('.error')\r\n self.promoCodeSuccessText = self.promoCodeFormInput.nextAll('.success')\r\n\r\n self.showPromoCodeForm = function () {\r\n self.promoCodeComponent.addClass('active')\r\n self.showPromoCodeFormButton.hide()\r\n self.hidePromoCodeFormButton.show()\r\n }\r\n\r\n self.hidePromoCodeForm = function () {\r\n self.promoCodeComponent.removeClass('active')\r\n self.showPromoCodeFormButton.show()\r\n self.hidePromoCodeFormButton.hide()\r\n }\r\n\r\n self.validatePromoCode = function () {\r\n console.log('validatePromoCode()') // TEMP\r\n\r\n let promoCodeInputValue = self.promoCodeFormInput.val().trim()\r\n\r\n // reset error and success text\r\n self.promoCodeErrorText.hide().text('')\r\n self.promoCodeSuccessText.hide().text('')\r\n\r\n if (promoCodeInputValue === '') {\r\n self.promoCodeErrorText.show().text(`Please enter a promo code.`)\r\n return false\r\n }\r\n\r\n self.promoCodeComponent.addClass('loading')\r\n\r\n // TODO handle book now response on promo code 'apply' button click\r\n window.dbs.globalEvents.emit('add_promocode', { promoCode: promoCodeInputValue })\r\n /*setTimeout(function () {\r\n self.promoCodeComponent.removeClass('loading')\r\n self.promoCodeComponent.addClass('valid')\r\n self.promoCodeSuccessText.show().text(`Example deal special name.`)\r\n }, 1000) // TEMP*/\r\n }\r\n\r\n self.removePromoCode = function () {\r\n console.log('removePromoCode()') // TEMP\r\n\r\n // reset error and success text\r\n self.promoCodeErrorText.hide().text('')\r\n self.promoCodeSuccessText.hide().text('')\r\n\r\n // clear input\r\n self.promoCodeFormInput.val('')\r\n\r\n self.promoCodeComponent.addClass('loading')\r\n $('.widget.checkout-payment').data('widget')?.promoCodeFormInput?.val('__remove_promocode')\r\n $('.promo-code.input').val('')\r\n // TODO handle book now response on promo code 'remove' button click\r\n window.dbs.globalEvents.emit('remove_promocode', { promoCode: '' })\r\n /*setTimeout(function () {\r\n self.promoCodeComponent.removeClass('loading')\r\n self.promoCodeComponent.removeClass('valid')\r\n\r\n // Remove promo code value\r\n self.promoCodeFormInput.val('')\r\n }, 500) // TEMP*/\r\n }\r\n\r\n const getFieldRules = function (name) {\r\n const input = self.paymentForm.form.find(`input[name=${name}]`)\r\n const rules = input.attr('data-rules').split(',')\r\n const prompts = input.attr('data-prompts').split(',')\r\n\r\n const getRules = function () {\r\n let data = []\r\n for (let i = 0; i < rules.length; i++) {\r\n data.push({\r\n type: rules[i],\r\n prompt: prompts[i],\r\n })\r\n }\r\n return data\r\n }\r\n\r\n // See: https://semantic-ui.com/behaviors/form.html#adding-rules-programmatically\r\n return { rules: getRules() }\r\n }\r\n\r\n self.enableCreditCardFormValidation = function () {\r\n self.paymentForm.form.form('add rule', 'cardNumber', getFieldRules('cardNumber'))\r\n self.paymentForm.form.form('add rule', 'expiry', getFieldRules('expiry'))\r\n self.paymentForm.form.form('add rule', 'ccv', getFieldRules('ccv'))\r\n\r\n self.paymentForm.form.find('.credit-card-fields').removeClass('disabled')\r\n }\r\n\r\n self.disableCreditCardFormValidation = function () {\r\n self.paymentForm.form.form('remove fields', ['cardNumber', 'expiry', 'ccv'])\r\n\r\n self.paymentForm.form.find('.credit-card-fields').addClass('disabled')\r\n }\r\n\r\n self.init = function () {\r\n if (process.env.NODE_ENV === 'development') {\r\n console.log('CheckoutPayment init', self)\r\n }\r\n self.el.css('opacity', 1)\r\n\r\n self.paymentForm.events.subscribe('Form:isValid', function (isValid) {\r\n window.dbs.globalEvents.emit('payment_form_is_valid', isValid)\r\n })\r\n\r\n const params = new URLSearchParams(window.location.search)\r\n if (params.get('dealCode')) {\r\n self.promoCodeComponent.hide()\r\n } else {\r\n self.promoCodeComponent.show()\r\n }\r\n\r\n initPaymentOptionSelection()\r\n\r\n self.el.on('click', 'a.expander', function (e) {\r\n e.preventDefault()\r\n self.termsModal.find('.content').html(self.el.find('div[for=' + $(this).attr('name') + ']').html())\r\n self.termsModal.modal('show')\r\n })\r\n\r\n self.showPromoCodeFormButton.click(function () {\r\n self.showPromoCodeForm()\r\n })\r\n\r\n self.hidePromoCodeFormButton.click(function () {\r\n self.hidePromoCodeForm()\r\n })\r\n\r\n self.el.find('.js-submit-promo-code').click(function () {\r\n self.validatePromoCode()\r\n })\r\n\r\n self.el.find('.js-remove-promo-code').click(function () {\r\n self.removePromoCode()\r\n })\r\n\r\n self.promoCodeFormInput.on('keypress', function (e) {\r\n const ENTER_KEY = 13\r\n if (e.which === ENTER_KEY) {\r\n e.preventDefault()\r\n self.validatePromoCode()\r\n return false\r\n }\r\n })\r\n\r\n self.showVoucherFormButon.click(function () {\r\n self.showVoucherForm()\r\n })\r\n\r\n self.el.find('.js-submit-voucher-form').click(function () {\r\n self.validateVoucher()\r\n })\r\n\r\n self.el.find('.js-remove-applied-voucher').click(function () {\r\n self.removeVoucher()\r\n })\r\n\r\n self.voucherFormInput.on('keypress', function (e) {\r\n const ENTER_KEY = 13\r\n if (e.which === ENTER_KEY) {\r\n e.preventDefault()\r\n self.validateVoucher()\r\n return false\r\n }\r\n })\r\n\r\n self.termsModal = self.el.find('.terms-popup').modal()\r\n\r\n window.dbs.globalEvents.subscribe('bpoint_payment_error', function (errors) {\r\n console.error('bpoint_payment_error', errors)\r\n self.displayBpointErrors(errors)\r\n })\r\n\r\n window.dbs.globalEvents.subscribe('voucher_added_to_order', function (data) {\r\n console.log('[PUBSUB]', 'voucher_added_to_order', data) // TEMP\r\n disablePaymentOptions('#payment-by-bnpl')\r\n self.updateVoucherDisplay(data)\r\n })\r\n\r\n window.dbs.globalEvents.subscribe('voucher_removed_from_order', function (data) {\r\n console.log('[PUBSUB]', 'voucher_removed_from_order', data) // TEMP\r\n self.removeVoucherDisplay(data)\r\n })\r\n\r\n window.dbs.globalEvents.subscribe('disable_credit_card_validation', function () {\r\n self.disableCreditCardFormValidation()\r\n })\r\n\r\n window.dbs.globalEvents.subscribe('enable_credit_card_validation', function () {\r\n self.enableCreditCardFormValidation()\r\n })\r\n\r\n window.dbs.globalEvents.subscribe('disable_payment_options', function () {\r\n disablePaymentOptions()\r\n })\r\n\r\n window.dbs.globalEvents.subscribe('enable_payment_options', function () {\r\n enablePaymentOptions()\r\n })\r\n\r\n window.dbs.globalEvents.subscribe('promocode_applied', function (data) {\r\n console.log('promocode_applied?', data)\r\n self.showPromoCodeForm()\r\n self.promoCodeComponent.removeClass('loading')\r\n self.promoCodeComponent.addClass('valid')\r\n self.promoCodeComponent.removeClass('invalid')\r\n self.promoCodeFormInput.attr('disabled', true)\r\n self.promoCodeFormInput.val(data.DealCode)\r\n self.promoCodeSuccessText.show().text(data.DealSpecialName)\r\n self.promoCodeErrorText.hide().text('')\r\n })\r\n\r\n window.dbs.globalEvents.subscribe('promocode_not_applied', function () {\r\n console.log('promocode_not_applied')\r\n self.promoCodeComponent.removeClass('loading')\r\n self.promoCodeComponent.removeClass('valid')\r\n self.promoCodeComponent.removeClass('invalid')\r\n self.promoCodeFormInput.removeAttr('disabled')\r\n self.promoCodeFormInput.val('') // Remove promo code value\r\n })\r\n\r\n window.dbs.globalEvents.subscribe('promocode_invalid', function (data) {\r\n console.log('promocode_invalid', data)\r\n self.showPromoCodeForm()\r\n self.promoCodeComponent.removeClass('loading')\r\n self.promoCodeComponent.removeClass('valid')\r\n self.promoCodeComponent.addClass('invalid')\r\n self.promoCodeFormInput.removeAttr('disabled')\r\n self.promoCodeFormInput.val(data.DealCode)\r\n self.promoCodeSuccessText.hide().text('')\r\n self.promoCodeErrorText.show().text(`The promo code entered is invalid.`)\r\n })\r\n }\r\n}\r\n"],"names":["CheckoutPayment","el","self","this","$","fn","form","settings","onValid","paymentForm","length","errorText","attr","undefined","errors","find","children","each","i","item","itemText","html","trim","indexOf","remove","removeClass","dbs","genericForm","init","isFormValid","validateForm","submitForm","processPayment","scrollToErrors","window","globalEvents","emit","depositAmount","next","is","text","data","cartId","cartToken","subscribeToTopParks","subscribeToGDAY","sendGdayRewardsMembershipCard","isBNPL","ajax","url","type","JSON","stringify","dataType","contentType","done","response","bpointPaymentWidget","AuthenticationKeyType","ProcessPaymentResult","RedirectUrl","ProcessPayment","fail","error","console","responseJSON","message","displayBpointErrors","log","value","Message","compileErrorsList","addClass","creditCardNumberInput","Cleave","creditCard","onValueChanged","e","val","target","rawValue","creditCardExpiryDateInput","forTestCards","hasClass","delimiter","blocks","date","datePattern","voucherComponent","showVoucherFormButon","voucherForm","voucherFormInput","validateVoucherEndpoint","validateVoucherEndpointMethod","removeVoucherEndpoint","removeVoucherEndpointMethod","updateCartEndpoint","updateCartEndpointMethod","updateVoucherDisplay","voucher","showVoucherForm","voucherAmountFormatted","parseFloat","VoucherAmount","toFixed","voucherChargeTotalFormatted","VoucherChargeTotal","prop","VoucherCode","show","showVoucherNotification","popup","on","position","closable","content","onVisible","setTimeout","removeVoucherDisplay","empty","hide","enablePaymentOptions","updateOrder","Promise","resolve","reject","success","status","removeVoucher","token","then","catch","err","always","validateVoucher","voucherInputValue","voucherError","voucherCode","propertyId","toLowerCase","Valid","setPaymentOption","option","svgArrowRight","paymentFormTermsFields","filter","name","fields","closest","formSubmitButtons","checkbox","rules","prompt","isValid","selector","arguments","label","css","disablePaymentOptions","visibleLabels","style","display","prev","promoCodeComponent","showPromoCodeFormButton","hidePromoCodeFormButton","promoCodeForm","promoCodeFormInput","promoCodeErrorText","promoCodeSuccessText","nextAll","showPromoCodeForm","hidePromoCodeForm","validatePromoCode","promoCodeInputValue","promoCode","removePromoCode","getFieldRules","input","split","prompts","push","getRules","enableCreditCardFormValidation","disableCreditCardFormValidation","events","subscribe","URLSearchParams","location","search","get","change","preventDefault","termsModal","modal","click","which","DealCode","DealSpecialName","removeAttr","all"],"sourceRoot":""}