wickes-css2 2.105.0-develop.2 → 2.105.0-gift-cards.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/Readme.md +4 -2
  2. package/build/css/components/checkout-payment-details-v2.css +1 -1
  3. package/build/css/main.css +1 -1
  4. package/build/css/pages/checkout-new.css +1 -1
  5. package/build/css/pages/page_checkout_delivery-new.css +1 -1
  6. package/build/img/giftcard.svg +28 -0
  7. package/build/js/account-members.min.js +1 -1
  8. package/build/js/add-project-list-id.min.js +1 -1
  9. package/build/js/address-book.min.js +1 -1
  10. package/build/js/basket.min.js +2 -2
  11. package/build/js/bundle.min.js +1 -1
  12. package/build/js/change-password.min.js +1 -1
  13. package/build/js/checkout.min.js +2 -2
  14. package/build/js/emulation.min.js +291 -16
  15. package/build/js/general.bundle.min.js +1 -1
  16. package/build/js/gift-cards.min.js +1 -0
  17. package/build/js/kitchen/kitchen-plp.min.js +1 -1
  18. package/build/js/merged-checkout.min.js +2 -2
  19. package/build/js/page/basket-v2.js +2 -0
  20. package/build/js/page/components/billie-modal.js +31 -0
  21. package/build/js/page/components/gift-cards.js +915 -0
  22. package/build/js/page/components/order-summary.js +42 -25
  23. package/build/js/page/components/toggle-password-visibility.js +22 -0
  24. package/build/js/page/utils/gift-cards-utils.js +188 -0
  25. package/build/js/page/utils/input-handling.js +92 -0
  26. package/build/js/page/utils/show-hide-input.js +28 -0
  27. package/build/js/page/utils/validation.js +46 -1
  28. package/build/js/pdp.bundle.min.js +1 -1
  29. package/build/js/personal-details.min.js +1 -1
  30. package/build/js/plp.bundle.min.js +1 -1
  31. package/build/js/project-list.min.js +44 -1
  32. package/build/js/quiz.min.js +1 -1
  33. package/build/js/track-my-order.min.js +1 -1
  34. package/package.json +5 -3
  35. package/src/components/checkout-payment-details-v2.hbs +3 -2
  36. package/src/components/generate-project-id.hbs +1 -1
  37. package/src/components/gift-cards-hint.hbs +9 -0
  38. package/src/components/gift-cards.hbs +90 -0
  39. package/src/components/giftcard-chip.hbs +23 -0
  40. package/src/components/giftcard-summary.hbs +6 -0
  41. package/src/components/shopping-list-with-share-list-v2.hbs +28 -10
  42. package/src/components/shopping-list.hbs +5 -5
  43. package/src/elements/form-row.hbs +1 -1
  44. package/src/elements/input.hbs +31 -2
  45. package/src/img/giftcard.svg +28 -0
  46. package/src/js/components/general/notification.js +2 -1
  47. package/src/js/components/pdp-billie-modal-scroll-reset.js +53 -0
  48. package/src/js/emulation/billie-modal.js +17 -0
  49. package/src/js/emulation/checkout-data.js +35 -0
  50. package/src/js/emulation/checkout-payment-details.js +25 -16
  51. package/src/js/emulation/forms.js +7 -0
  52. package/src/js/emulation/gift-cards.js +205 -0
  53. package/src/js/page/basket-v2.js +2 -0
  54. package/src/js/page/components/billie-modal.js +31 -0
  55. package/src/js/page/components/gift-cards.js +915 -0
  56. package/src/js/page/components/order-summary.js +42 -25
  57. package/src/js/page/components/toggle-password-visibility.js +22 -0
  58. package/src/js/page/utils/gift-cards-utils.js +188 -0
  59. package/src/js/page/utils/input-handling.js +92 -0
  60. package/src/js/page/utils/show-hide-input.js +28 -0
  61. package/src/js/page/utils/validation.js +46 -1
  62. package/src/layouts/checkout.hbs +1 -5
  63. package/src/page_my-account_change-password.html +1 -0
  64. package/src/page_my-shopping-list-hide-download.html +1 -1
  65. package/src/page_payment-details-with-gift-card.html +8 -5
  66. package/src/page_project-list-with-new-share-popup-android.html +14 -0
  67. package/src/page_project-list-with-new-share-popup-ios.html +14 -0
  68. package/src/scss/components/_gift-cards.scss +360 -0
  69. package/src/scss/components/_shared-shopping-list.scss +22 -0
  70. package/src/scss/components/_shopping-list.scss +18 -8
  71. package/src/scss/components/checkout-payment-details-v2.scss +2 -0
  72. package/src/scss/pages/_checkout-confirmation-new.scss +49 -21
  73. package/src/scss/pages/page_checkout_delivery-new.scss +26 -0
  74. package/src/sitemap.html +9 -1
  75. package/src/js/components/toggle-password-visibility.js +0 -58
@@ -1 +1 @@
1
- !function n(r,o,a){function l(t,e){if(!o[t]){if(!r[t]){var i="function"==typeof require&&require;if(!e&&i)return i(t,!0);if(u)return u(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}i=o[t]={exports:{}},r[t][0].call(i.exports,function(e){return l(r[t][1][e]||e)},i,i.exports,n,r,o,a)}return o[t].exports}for(var u="function"==typeof require&&require,e=0;e<a.length;e++)l(a[e]);return l}({1:[function(e,t,i){"use strict";var r=e("./utils/create-event"),n=e("./utils/validation"),o=e("./utils/helpers");function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(t,e){var i,n=Object.keys(t);return Object.getOwnPropertySymbols&&(i=Object.getOwnPropertySymbols(t),e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)),n}function u(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?l(Object(r),!0).forEach(function(e){var t,i;t=n,i=r[e=e],(e=function(e){e=function(e,t){if("object"!==a(e)||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0===i)return("string"===t?String:Number)(e);i=i.call(e,t||"default");if("object"!==a(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"===a(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))})}return n}var d=window.Wick||{};d.Quiz={STYLE_QUIZ_EMAIL:"styleQuizEmail",el:{quizContainer:".main-quiz",quizActions:".quiz-actions",body:"body",html:"html",input:'input[type="text"]',modal:".quiz-modal",modalEmail:"#quiz-modal",modalEmailFinal:"#quiz-modal-final",btnQuizEmail:"#email-results-quiz",cancelBtn:".quiz-modal__controls .btn-cancel",submitBtn:'.quiz-modal__controls [type="submit"]',quizForm:".quiz-modal__form",btnPrintResultQuiz:"#print-results-quiz",emailInput:"#email",firstNameInput:"#firstName",surnameInput:"#surname",formInvalidClass:"form_invalid"},errorMessages:{errorFirstName:"Please enter a first name",errorSurname:"Please enter a surname",errorEmail:"Please enter a valid email address"},getFieldsConfigurations:function(){return[{input:d.Quiz.el.firstNameInput,validator:n.isValidInputTextField,error:d.Quiz.errorMessages.errorFirstName},{input:d.Quiz.el.surnameInput,validator:n.isValidInputTextField,error:d.Quiz.errorMessages.errorSurname},{input:d.Quiz.el.emailInput,validator:n.isValidEmail,error:d.Quiz.errorMessages.errorEmail}]},showModal:function(e){$(e).modal("show")},closeModal:function(e,t){t&&t.preventDefault(),$(e).modal("hide")},validateInput:function(e,t,i){t=t($(e).val());return(0,n.updateStylingError)(e,t,i),t},validateForm:function(){var e=d.Quiz.getFieldsConfigurations(),t=!0;return e.forEach(function(e){e=d.Quiz.validateInput(e.input,e.validator,e.error);t=t&&e}),t},clearAllForm:function(){$(d.Quiz.el.modalEmail+" ".concat(d.Quiz.el.input)).val("")},disableButton:function(e){$(e).attr("disabled",!0)},enableButton:function(e){$(e).removeAttr("disabled")},requestToEmailResult:function(){var n={email:$(d.Quiz.el.emailInput).val(),firstName:$(d.Quiz.el.firstNameInput).val(),lastName:$(d.Quiz.el.surnameInput).val()};return d.Quiz.disableButton(d.Quiz.el.submitBtn),new Promise(function(e,t){var i=u({},n),i=(0,r.createEvent)(d.Quiz.STYLE_QUIZ_EMAIL,i,{resolve:e,reject:t});window.dispatchEvent(i)}).then(function(){d.Quiz.closeModal(d.Quiz.el.modalEmail)}).catch(function(e){console.error(e)}).finally(function(){d.Quiz.clearAllForm(),d.Quiz.showModal(d.Quiz.el.modalEmailFinal),d.Quiz.enableButton(d.Quiz.el.submitBtn)})},submitForm:function(e){e.preventDefault(),d.Quiz.validateForm()?d.Quiz.requestToEmailResult():$(d.Quiz.el.quizForm).addClass(d.Quiz.el.formInvalidClass)},loadScript:function(e,t){var i=document.createElement("script");i.src=e,i.onload=t,i.onerror=function(){return console.error("Failed to load script:",e)},document.head.appendChild(i)},handleSaveAsPDF:function(){"undefined"==typeof html2pdf?d.Quiz.loadScript("https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.2/html2pdf.bundle.min.js",function(){d.Quiz.generatePDF()}):d.Quiz.generatePDF()},convertSvgToCanvas:function(t){return new Promise(function(r,o){var e=document.querySelectorAll(t+' img[src*=".svg"]'),a=e.length;0===a&&r(),e.forEach(function(e){var t=document.createElement("canvas"),i=t.getContext("2d"),n=new Image;n.crossOrigin="Anonymous",n.onload=function(){t.width=2*n.width,t.height=2*n.height,i.drawImage(n,0,0,t.width,t.height);try{e.src=t.toDataURL("image/png"),--a}catch(e){return void o(e)}0===a&&r()},n.onerror=function(){o(new Error("Failed to load image"))},n.src=e.src})})},generatePDF:function(){var e=document.body.querySelector(d.Quiz.el.quizContainer);d.Quiz.convertSvgToCanvas(d.Quiz.el.quizContainer).then(function(){var t={margin:1,filename:"Wickes Matchmaker Quiz result.pdf",image:{type:"jpeg",quality:.98},html2canvas:{scale:2,useCORS:!0,windowWidth:770},jsPDF:{format:[695.28,200]}};html2pdf().set(t).from(e).output("datauristring").then(function(e){window.ReactNativeWebView&&window.ReactNativeWebView.postMessage?window.ReactNativeWebView.postMessage(JSON.stringify({event:"matchMakertoolResultBase64",data:{filename:t.filename,file:e}})):console.warn("ReactNativeWebView not available")}).save()}).catch(function(e){return console.error("Error converting SVGs:",e)})},handlePrint:function(){var e=d.Quiz.el.html,t=document.createElement("iframe"),i=(t.name="printFrame",t.style.display="none",document.body.appendChild(t),t.contentWindow),e=(i.document.write("<html><head>"),$('[type="text/css"]').each(function(e,t){i.document.write(t.outerHTML)}),i.document.write("</head><body>"),$(e).clone());e.find("script, iframe").remove(),e.find("svg").each(function(){this.setAttribute("xmlns","http://www.w3.org/2000/svg")}),i.document.write(e.html()),i.document.write("</body></html>"),i.document.close(),i.focus(),t.onload=function(){setTimeout(function(){i.print(),document.body.removeChild(t)},500)}},handlePrintOrPDFInteraction:function(e){e.preventDefault(),(0,o.isTouchDevice)()?d.Quiz.handleSaveAsPDF():d.Quiz.handlePrint()},init:function(){$(d.Quiz.el.body).on("click",d.Quiz.el.btnQuizEmail,function(e){e.preventDefault(),d.Quiz.showModal(d.Quiz.el.modalEmail)}),$(d.Quiz.el.cancelBtn).on("click",function(e){d.Quiz.closeModal(d.Quiz.el.modal,e)}),$(d.Quiz.el.body).on("submit",d.Quiz.el.quizForm,d.Quiz.submitForm);var t=_.debounce(d.Quiz.handlePrintOrPDFInteraction,500);$(d.Quiz.el.btnPrintResultQuiz).on("click",function(e){e.preventDefault(),t(e)})}},$(document).ready(function(){d.Quiz.init()})},{"./utils/create-event":2,"./utils/helpers":3,"./utils/validation":4}],2:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.createEvent=function(e,t,i){return new CustomEvent(e,{detail:{payload:t,resolve:i.resolve,reject:i.reject}})}},{}],3:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.countLetters=function(e){e=e.match(/[a-zA-Z]/g);return e?e.length:0},i.createImageElements=function(e,t){return e.map(function(e){return $("<img>").attr("src",e).attr("alt",t)})},i.highlightCharacter=function(e,t,i){return e.includes(t)?(t=new RegExp("\\".concat(t,"+"),"g"),i='<span class="'.concat(i,'">$&</span>'),e.replace(t,i)):e},i.isApp=function(){return navigator.userAgent.match(/TradeProMobile_iOS|TradeProMobile_Android|DIYMobile_iOS|DIYMobile_Android|DIYApp_Guest_Mobile_iOS|DIYApp_Guest_Mobile_Android|AGENT_PLACEHOLDER/i)},i.isHasSymbol=function(e,t){return e.includes(t)},i.isKeyboardOpen=function(){var e=window.innerHeight,t=window.visualViewport.height;return e!==t},i.isTouchDevice=function(){return"ontouchstart"in window},i.scrollToElement=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:20,e=$(e);0<e.length&&$("html, body").animate({scrollTop:e.offset().top-t},300)},i.scrollToTop=function(e){e.scrollTop(0)},i.trimFields=function(){Wick.AddressBook.getFieldsConfigurations().forEach(function(e){var t=e.input.val().trim();e.input.val(t)})}},{}],4:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.addErrorMessage=_,i.addFieldValidation=function(e,i){$(e).each(function(e,t){$(t).blur(function(){a(this),i(this),n.idsOfInputsWithNoNeedToUpdateDuringTyping.includes(t.id)||$(this).keyup(function(){a(this),i(this)})})})},i.clearValidationErrors=function(e){e=$(e);e.hasClass("form_invalid")&&e.removeClass("form_invalid").find(".form-row[data-row-required]").removeClass("form-row_validation-error").find(".form-row__error").remove()},i.isNameOnCardContainsAtLeast14Digits=b,i.isNameOnCardContainsOnly16Digits=w,i.isValidAddress2=h,i.isValidAddressSelection=p,i.isValidEmail=l,i.isValidFieldSize=s,i.isValidHouseName=v,i.isValidInputTextField=c,i.isValidOrderNumber=function(e){return 9<=e.length},i.isValidPassword=u,i.isValidPasswordSize=function(e){return 5<e.length&&e.length<256},i.isValidPhoneNumber=f,i.isValidPostcodeField=m,i.isValidStoreId=y,i.isValidTitle=d,i.isValidVoucher=g,i.removeErrorStyling=Q,i.showValidationErrors=function(e,t){e=$(e);e.hasClass(r.formInvalid)?e.find(r.fieldRow).find(".form-row__error").text(t):(e.find(".form-row__error").remove(),e.addClass(r.formInvalid).find(r.fieldRow).append(function(e){return'<div class="form-row__error"> '.concat(e||"Error message here","</div>")}(t)).addClass(r.rowValidationError));t=e.find(r.fieldRow).first();{var i;t.length&&!function(e){"function"==typeof jQuery&&e instanceof jQuery&&(e=e[0]);e=e.getBoundingClientRect();return 0<=e.top&&0<=e.left&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)}(t)&&(e=t.closest(".modal").length,i=e?t.closest(".modal"):$("html, body"),e=e?0:t.offset().top-30,i.animate({scrollTop:e},300))}},i.updateInputValueBeforeValidation=a,i.updateStylingError=z,i.updateStylingErrorForElement=E,i.validateAddress1=function(e){z(e.id,c(e.value),invalidAddressOne)},i.validateAddress2=function(e){z(e.id,h(e.value),invalidAddressTwo)},i.validateAddressSelection=function(e){z(e.id,p(e),selectAddressMessage)},i.validateCity=function(e){z(e.id,c(e.value),invalidTownCity)},i.validateEmail=function(e){z(e.id,l(e.value),invalidEmailAddress)},i.validateFirstName=function(e){z(e.id,c(e.value),invalidFirstName)},i.validateGuidPattern=function(e){return o.guidPattern.test(e)},i.validateHouseName=function(e){z(e.id,v(e.value))},i.validateLastName=function(e){z(e.id,c(e.value),invalidLastName)},i.validateMobile=function(e,t){z(e.id,f(e.value,t),invalidMobile)},i.validateNameOnCard=function(e){z(e.id,!0);var t=c(e.value);t?e.value.length>nameOnCardMaxLength?z(e.id,!1,invalidNameOnCardLength):w(e.value)?z(e.id,!1,invalidCustomNameOnCard):b(e.value)&&z(e.id,!1,validationWarnNameOnCard):z(e.id,t,invalidNameOnCard)},i.validatePassword=function(e){z(e.id,u(e.value),invalidPassword)},i.validatePhone=function(e){z(e.id,f(e.value,!0),invalidTelephone)},i.validatePostcode=function(e,t){var i=e.value,n=m(i);t&&n&&(i=i.replace(/\s/g,""),$("#"+$.escapeSelector(e.id)).val(i.substr(0,i.length-3)+" "+i.substr(i.length-3)));z(e.id,n,invalidPostCode)},i.validateStoreId=function(e){z(e.id,y(e.value),invalidStoreId)},i.validateTitle=function(e){z(e.id,d(e.value),invalidTitle)},i.validateUserFriendlyIdPattern=function(e){return o.userFriendlyIdPattern.test(e)},i.validateVoucher=function(e){E(e,g(e.value),invalidVoucherCode)},i.wrapWithError=P;var n={idsOfInputsWithNoNeedToUpdateDuringTyping:["address-lookup-query","modal-address-lookup-query"]},r={formInvalid:"form_invalid",fieldRow:".form-row[data-row-required]",rowValidationError:"form-row_validation-error"},o={guidPattern:/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i,userFriendlyIdPattern:/^[A-Za-z]{2,3}\d{6}$/};function a(e){$(e).val($.trim($(e).val()))}function l(e){var t=new RegExp("^(?=.{1,64}@)[\\w\\+-]+(\\.[\\w\\+-]+)*@(([A-Za-z\\d]+[A-Za-z\\d-]*\\.){1,3}[A-Za-z]{2,16}|(?:(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?)\\.){3}(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?))$"),i=e.length<=254;return t.test(e)&&i}function u(e){return 0<e.length}function d(e){return 0<e.length}function s(e){return 0<e.length&&e.length<256}function c(e){var t=new RegExp("^[\\w ()/&.,'-]+$|^$");return s(e)&&t.test(e)}function f(e,t){e=e.replace(/\s+/g,"");var i=new RegExp("^0{1}\\d{10}$|^0{1}\\d{5}\\s{1}\\d{5}$|^0{1}\\d{4}\\s{1}\\d{6}$|^0{1}\\d{3}\\s{1}\\d{3}\\s{1}\\d{4}$|^0{1}\\d{2}\\s{1}\\d{4}\\s{1}\\d{4}$|^0{1}\\d{3}\\s{1}\\d{7}$"),n=new RegExp("^0{1}\\d{9}$|^0{1}\\d{5}\\s{1}\\d{4}$|^0{1}\\d{4}\\s{1}\\d{5}$"),i=i.test(e)||n.test(e);return t?0===e.length||i:0<e.length&&i}function m(e){var e=e.toUpperCase().replaceAll(" ",""),t=new RegExp("^(GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))[0-9][A-BD-HJLNP-UW-Z]{2})$");return 4<e.replace(/\s+/g,"").length&&t.test(e)}function v(e){var t=new RegExp("^[\\w ()/&.,'-]+$|^$");return 0<e.length&&t.test(e)}function p(e){return!$("#"+$.escapeSelector(e.id)).is(":visible")}function h(e){var t=new RegExp("^[\\w ().,'-]+$|^$");return 0===e.length||t.test(e)}function g(e){return 0<e.trim().length}function w(e){return new RegExp("^\\d{16}$").test(e)}function b(e){return new RegExp("^(.*\\d){14,}.*$").test(e)}function y(e){return"0"!==e}function z(e,t,i){E($(e),t,i)}function E(e,t,i){e=$(e).closest(".form-row");e.is(":visible")&&(Q(e),t||(P(e),_(e,i)))}function Q(e){e.removeClass("form-row_validation-error"),e.find(".form-row__error").remove()}function P(e){$(e).addClass("form-row_validation-error")}function _(e,t){t&&$(e).append('<div class="form-row__error">'+t+"</div>")}},{}]},{},[1]);
1
+ !function n(r,o,a){function l(t,e){if(!o[t]){if(!r[t]){var i="function"==typeof require&&require;if(!e&&i)return i(t,!0);if(u)return u(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}i=o[t]={exports:{}},r[t][0].call(i.exports,function(e){return l(r[t][1][e]||e)},i,i.exports,n,r,o,a)}return o[t].exports}for(var u="function"==typeof require&&require,e=0;e<a.length;e++)l(a[e]);return l}({1:[function(e,t,i){"use strict";var r=e("./utils/create-event"),n=e("./utils/validation"),o=e("./utils/helpers");function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function l(t,e){var i,n=Object.keys(t);return Object.getOwnPropertySymbols&&(i=Object.getOwnPropertySymbols(t),e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,i)),n}function u(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?l(Object(r),!0).forEach(function(e){var t,i;t=n,i=r[e=e],(e=function(e){e=function(e,t){if("object"!==a(e)||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0===i)return("string"===t?String:Number)(e);i=i.call(e,t||"default");if("object"!==a(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"===a(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))})}return n}var d=window.Wick||{};d.Quiz={STYLE_QUIZ_EMAIL:"styleQuizEmail",el:{quizContainer:".main-quiz",quizActions:".quiz-actions",body:"body",html:"html",input:'input[type="text"]',modal:".quiz-modal",modalEmail:"#quiz-modal",modalEmailFinal:"#quiz-modal-final",btnQuizEmail:"#email-results-quiz",cancelBtn:".quiz-modal__controls .btn-cancel",submitBtn:'.quiz-modal__controls [type="submit"]',quizForm:".quiz-modal__form",btnPrintResultQuiz:"#print-results-quiz",emailInput:"#email",firstNameInput:"#firstName",surnameInput:"#surname",formInvalidClass:"form_invalid"},errorMessages:{errorFirstName:"Please enter a first name",errorSurname:"Please enter a surname",errorEmail:"Please enter a valid email address"},getFieldsConfigurations:function(){return[{input:d.Quiz.el.firstNameInput,validator:n.isValidInputTextField,error:d.Quiz.errorMessages.errorFirstName},{input:d.Quiz.el.surnameInput,validator:n.isValidInputTextField,error:d.Quiz.errorMessages.errorSurname},{input:d.Quiz.el.emailInput,validator:n.isValidEmail,error:d.Quiz.errorMessages.errorEmail}]},showModal:function(e){$(e).modal("show")},closeModal:function(e,t){t&&t.preventDefault(),$(e).modal("hide")},validateInput:function(e,t,i){t=t($(e).val());return(0,n.updateStylingError)(e,t,i),t},validateForm:function(){var e=d.Quiz.getFieldsConfigurations(),t=!0;return e.forEach(function(e){e=d.Quiz.validateInput(e.input,e.validator,e.error);t=t&&e}),t},clearAllForm:function(){$(d.Quiz.el.modalEmail+" ".concat(d.Quiz.el.input)).val("")},disableButton:function(e){$(e).attr("disabled",!0)},enableButton:function(e){$(e).removeAttr("disabled")},requestToEmailResult:function(){var n={email:$(d.Quiz.el.emailInput).val(),firstName:$(d.Quiz.el.firstNameInput).val(),lastName:$(d.Quiz.el.surnameInput).val()};return d.Quiz.disableButton(d.Quiz.el.submitBtn),new Promise(function(e,t){var i=u({},n),i=(0,r.createEvent)(d.Quiz.STYLE_QUIZ_EMAIL,i,{resolve:e,reject:t});window.dispatchEvent(i)}).then(function(){d.Quiz.closeModal(d.Quiz.el.modalEmail)}).catch(function(e){console.error(e)}).finally(function(){d.Quiz.clearAllForm(),d.Quiz.showModal(d.Quiz.el.modalEmailFinal),d.Quiz.enableButton(d.Quiz.el.submitBtn)})},submitForm:function(e){e.preventDefault(),d.Quiz.validateForm()?d.Quiz.requestToEmailResult():$(d.Quiz.el.quizForm).addClass(d.Quiz.el.formInvalidClass)},loadScript:function(e,t){var i=document.createElement("script");i.src=e,i.onload=t,i.onerror=function(){return console.error("Failed to load script:",e)},document.head.appendChild(i)},handleSaveAsPDF:function(){"undefined"==typeof html2pdf?d.Quiz.loadScript("https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.2/html2pdf.bundle.min.js",function(){d.Quiz.generatePDF()}):d.Quiz.generatePDF()},convertSvgToCanvas:function(t){return new Promise(function(r,o){var e=document.querySelectorAll(t+' img[src*=".svg"]'),a=e.length;0===a&&r(),e.forEach(function(e){var t=document.createElement("canvas"),i=t.getContext("2d"),n=new Image;n.crossOrigin="Anonymous",n.onload=function(){t.width=2*n.width,t.height=2*n.height,i.drawImage(n,0,0,t.width,t.height);try{e.src=t.toDataURL("image/png"),--a}catch(e){return void o(e)}0===a&&r()},n.onerror=function(){o(new Error("Failed to load image"))},n.src=e.src})})},generatePDF:function(){var e=document.body.querySelector(d.Quiz.el.quizContainer);d.Quiz.convertSvgToCanvas(d.Quiz.el.quizContainer).then(function(){var t={margin:1,filename:"Wickes Matchmaker Quiz result.pdf",image:{type:"jpeg",quality:.98},html2canvas:{scale:2,useCORS:!0,windowWidth:770},jsPDF:{format:[695.28,200]}};html2pdf().set(t).from(e).output("datauristring").then(function(e){window.ReactNativeWebView&&window.ReactNativeWebView.postMessage?window.ReactNativeWebView.postMessage(JSON.stringify({event:"matchMakertoolResultBase64",data:{filename:t.filename,file:e}})):console.warn("ReactNativeWebView not available")}).save()}).catch(function(e){return console.error("Error converting SVGs:",e)})},handlePrint:function(){var e=d.Quiz.el.html,t=document.createElement("iframe"),i=(t.name="printFrame",t.style.display="none",document.body.appendChild(t),t.contentWindow),e=(i.document.write("<html><head>"),$('[type="text/css"]').each(function(e,t){i.document.write(t.outerHTML)}),i.document.write("</head><body>"),$(e).clone());e.find("script, iframe").remove(),e.find("svg").each(function(){this.setAttribute("xmlns","http://www.w3.org/2000/svg")}),i.document.write(e.html()),i.document.write("</body></html>"),i.document.close(),i.focus(),t.onload=function(){setTimeout(function(){i.print(),document.body.removeChild(t)},500)}},handlePrintOrPDFInteraction:function(e){e.preventDefault(),(0,o.isTouchDevice)()?d.Quiz.handleSaveAsPDF():d.Quiz.handlePrint()},init:function(){$(d.Quiz.el.body).on("click",d.Quiz.el.btnQuizEmail,function(e){e.preventDefault(),d.Quiz.showModal(d.Quiz.el.modalEmail)}),$(d.Quiz.el.cancelBtn).on("click",function(e){d.Quiz.closeModal(d.Quiz.el.modal,e)}),$(d.Quiz.el.body).on("submit",d.Quiz.el.quizForm,d.Quiz.submitForm);var t=_.debounce(d.Quiz.handlePrintOrPDFInteraction,500);$(d.Quiz.el.btnPrintResultQuiz).on("click",function(e){e.preventDefault(),t(e)})}},$(document).ready(function(){d.Quiz.init()})},{"./utils/create-event":2,"./utils/helpers":3,"./utils/validation":4}],2:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.createEvent=function(e,t,i){return new CustomEvent(e,{detail:{payload:t,resolve:i.resolve,reject:i.reject}})}},{}],3:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.countLetters=function(e){e=e.match(/[a-zA-Z]/g);return e?e.length:0},i.createImageElements=function(e,t){return e.map(function(e){return $("<img>").attr("src",e).attr("alt",t)})},i.highlightCharacter=function(e,t,i){return e.includes(t)?(t=new RegExp("\\".concat(t,"+"),"g"),i='<span class="'.concat(i,'">$&</span>'),e.replace(t,i)):e},i.isApp=function(){return navigator.userAgent.match(/TradeProMobile_iOS|TradeProMobile_Android|DIYMobile_iOS|DIYMobile_Android|DIYApp_Guest_Mobile_iOS|DIYApp_Guest_Mobile_Android|AGENT_PLACEHOLDER/i)},i.isHasSymbol=function(e,t){return e.includes(t)},i.isKeyboardOpen=function(){var e=window.innerHeight,t=window.visualViewport.height;return e!==t},i.isTouchDevice=function(){return"ontouchstart"in window},i.scrollToElement=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:20,e=$(e);0<e.length&&$("html, body").animate({scrollTop:e.offset().top-t},300)},i.scrollToTop=function(e){e.scrollTop(0)},i.trimFields=function(){Wick.AddressBook.getFieldsConfigurations().forEach(function(e){var t=e.input.val().trim();e.input.val(t)})}},{}],4:[function(e,t,i){"use strict";Object.defineProperty(i,"__esModule",{value:!0}),i.addErrorMessage=A,i.addFieldValidation=function(e,i){$(e).each(function(e,t){$(t).blur(function(){a(this),i(this),n.idsOfInputsWithNoNeedToUpdateDuringTyping.includes(t.id)||$(this).keyup(function(){a(this),i(this)})})})},i.clearErrorText=C,i.clearValidationErrors=function(e){e=$(e);e.hasClass("form_invalid")&&e.removeClass("form_invalid").find(".form-row[data-row-required]").removeClass("form-row_validation-error").find(".form-row__error").remove()},i.isNameOnCardContainsAtLeast14Digits=b,i.isNameOnCardContainsOnly16Digits=w,i.isValidAddress2=h,i.isValidAddressSelection=p,i.isValidEmail=l,i.isValidFieldSize=s,i.isValidHouseName=v,i.isValidInputTextField=c,i.isValidOrderNumber=function(e){return 9<=e.length},i.isValidPassword=u,i.isValidPasswordSize=function(e){return 5<e.length&&e.length<256},i.isValidPhoneNumber=f,i.isValidPostcodeField=m,i.isValidStoreId=y,i.isValidTitle=d,i.isValidVoucher=g,i.removeErrorStyling=Q,i.showErrorText=_,i.showValidationErrors=function(e,t){e=$(e);e.hasClass(r.formInvalid)?e.find(r.fieldRow).find(".form-row__error").text(t):(e.find(".form-row__error").remove(),e.addClass(r.formInvalid).find(r.fieldRow).append(function(e){return'<div class="form-row__error"> '.concat(e||"Error message here","</div>")}(t)).addClass(r.rowValidationError));t=e.find(r.fieldRow).first();{var i;t.length&&!function(e){"function"==typeof jQuery&&e instanceof jQuery&&(e=e[0]);e=e.getBoundingClientRect();return 0<=e.top&&0<=e.left&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)}(t)&&(e=t.closest(".modal").length,i=e?t.closest(".modal"):$("html, body"),e=e?0:t.offset().top-30,i.animate({scrollTop:e},300))}},i.updateInputValueBeforeValidation=a,i.updateStylingError=z,i.updateStylingErrorForElement=E,i.validateAddress1=function(e){z(e.id,c(e.value),invalidAddressOne)},i.validateAddress2=function(e){z(e.id,h(e.value),invalidAddressTwo)},i.validateAddressSelection=function(e){z(e.id,p(e),selectAddressMessage)},i.validateCity=function(e){z(e.id,c(e.value),invalidTownCity)},i.validateEmail=function(e){z(e.id,l(e.value),invalidEmailAddress)},i.validateExactDigits=function(e,i,t,n){return function(e,t,i,n){var r=n.fieldSelector,o=n.errorText,a=n.fieldError,n=n.ariaInvalidAttr,t=!!t(String(e.val()||""));t?C(e,r,o,a,n):_(e,i,r,o,a,n);return t}(e,function(e){return t=i,function(e){return String(e||"").replace(/\D/g,"")}(e).length===Number(t);var t},t,n)},i.validateFirstName=function(e){z(e.id,c(e.value),invalidFirstName)},i.validateGuidPattern=function(e){return o.guidPattern.test(e)},i.validateHouseName=function(e){z(e.id,v(e.value))},i.validateLastName=function(e){z(e.id,c(e.value),invalidLastName)},i.validateMobile=function(e,t){z(e.id,f(e.value,t),invalidMobile)},i.validateNameOnCard=function(e){z(e.id,!0);var t=c(e.value);t?e.value.length>nameOnCardMaxLength?z(e.id,!1,invalidNameOnCardLength):w(e.value)?z(e.id,!1,invalidCustomNameOnCard):b(e.value)&&z(e.id,!1,validationWarnNameOnCard):z(e.id,t,invalidNameOnCard)},i.validatePassword=function(e){z(e.id,u(e.value),invalidPassword)},i.validatePhone=function(e){z(e.id,f(e.value,!0),invalidTelephone)},i.validatePostcode=function(e,t){var i=e.value,n=m(i);t&&n&&(i=i.replace(/\s/g,""),$("#"+$.escapeSelector(e.id)).val(i.substr(0,i.length-3)+" "+i.substr(i.length-3)));z(e.id,n,invalidPostCode)},i.validateStoreId=function(e){z(e.id,y(e.value),invalidStoreId)},i.validateTitle=function(e){z(e.id,d(e.value),invalidTitle)},i.validateUserFriendlyIdPattern=function(e){return o.userFriendlyIdPattern.test(e)},i.validateVoucher=function(e){E(e,g(e.value),invalidVoucherCode)},i.wrapWithError=P;var n={idsOfInputsWithNoNeedToUpdateDuringTyping:["address-lookup-query","modal-address-lookup-query"]},r={formInvalid:"form_invalid",fieldRow:".form-row[data-row-required]",rowValidationError:"form-row_validation-error"},o={guidPattern:/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i,userFriendlyIdPattern:/^[A-Za-z]{2,3}\d{6}$/};function a(e){$(e).val($.trim($(e).val()))}function l(e){var t=new RegExp("^(?=.{1,64}@)[\\w\\+-]+(\\.[\\w\\+-]+)*@(([A-Za-z\\d]+[A-Za-z\\d-]*\\.){1,3}[A-Za-z]{2,16}|(?:(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?)\\.){3}(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?))$"),i=e.length<=254;return t.test(e)&&i}function u(e){return 0<e.length}function d(e){return 0<e.length}function s(e){return 0<e.length&&e.length<256}function c(e){var t=new RegExp("^[\\w ()/&.,'-]+$|^$");return s(e)&&t.test(e)}function f(e,t){e=e.replace(/\s+/g,"");var i=new RegExp("^0{1}\\d{10}$|^0{1}\\d{5}\\s{1}\\d{5}$|^0{1}\\d{4}\\s{1}\\d{6}$|^0{1}\\d{3}\\s{1}\\d{3}\\s{1}\\d{4}$|^0{1}\\d{2}\\s{1}\\d{4}\\s{1}\\d{4}$|^0{1}\\d{3}\\s{1}\\d{7}$"),n=new RegExp("^0{1}\\d{9}$|^0{1}\\d{5}\\s{1}\\d{4}$|^0{1}\\d{4}\\s{1}\\d{5}$"),i=i.test(e)||n.test(e);return t?0===e.length||i:0<e.length&&i}function m(e){var e=e.toUpperCase().replaceAll(" ",""),t=new RegExp("^(GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))[0-9][A-BD-HJLNP-UW-Z]{2})$");return 4<e.replace(/\s+/g,"").length&&t.test(e)}function v(e){var t=new RegExp("^[\\w ()/&.,'-]+$|^$");return 0<e.length&&t.test(e)}function p(e){return!$("#"+$.escapeSelector(e.id)).is(":visible")}function h(e){var t=new RegExp("^[\\w ().,'-]+$|^$");return 0===e.length||t.test(e)}function g(e){return 0<e.trim().length}function w(e){return new RegExp("^\\d{16}$").test(e)}function b(e){return new RegExp("^(.*\\d){14,}.*$").test(e)}function y(e){return"0"!==e}function z(e,t,i){E($(e),t,i)}function E(e,t,i){e=$(e).closest(".form-row");e.is(":visible")&&(Q(e),t||(P(e),A(e,i)))}function Q(e){e.removeClass("form-row_validation-error"),e.find(".form-row__error").remove()}function P(e){$(e).addClass("form-row_validation-error")}function A(e,t){t&&$(e).append('<div class="form-row__error">'+t+"</div>")}function _(e,t,i,n,r,o){i=e.closest(i),i.addClass(r),e.attr(o,"true"),r=i.find(n);(r=r.length?r:$('<div class="'.concat(n.slice(1),'" />')).appendTo(i)).text(t)}function C(e,t,i,n,r){t=e.closest(t);t.removeClass(n),e.removeAttr(r),t.find(i).remove()}},{}]},{},[1]);
@@ -1 +1 @@
1
- !function n(i,a,o){function d(e,r){if(!a[e]){if(!i[e]){var t="function"==typeof require&&require;if(!r&&t)return t(e,!0);if(l)return l(e,!0);throw(r=new Error("Cannot find module '"+e+"'")).code="MODULE_NOT_FOUND",r}t=a[e]={exports:{}},i[e][0].call(t.exports,function(r){return d(i[e][1][r]||r)},t,t.exports,n,i,a,o)}return a[e].exports}for(var l="function"==typeof require&&require,r=0;r<o.length;r++)d(o[r]);return d}({1:[function(r,e,t){"use strict";var i=r("./utils/validation"),n=window.Wick||{};n.TrackMyOrder={el:{$trackMyOrder:$(".track-order"),$tabOptionsInputs:$('input[name="track-order-options"]'),$trackOrderForm:$(".track-order-form"),$trackOrderMainSection:$(".track-order__main"),formRow:".track-order-form .form-row",formRowOptionsInput:".track-order-form .tab-content input",orderInput:"#order",telInput:"#tel",emailInput:"#email",postcodeInput:"#postcode",formInvalidClass:"form_invalid",notification:".notification",fieldError:".form-row.form-row_validation-error",tabContentActive:".tab-content .tab-pane.active",options:".tab-content",$myOrderSection:$(".my-order"),btnPrint:".btn--print",tooltip:".icon-info-component"},errorMessages:{errorOrderNumber:"Please enter a valid order number",errorTel:"Please enter a valid phone number",errorPostcode:"Please enter a valid billing postcode",errorEmail:"Please enter a valid email address"},getFieldsConfigurations:function(){return[{input:n.TrackMyOrder.el.orderInput,validator:i.isValidOrderNumber,error:n.TrackMyOrder.errorMessages.errorOrderNumber},{input:n.TrackMyOrder.el.telInput,validator:i.isValidPhoneNumber,error:n.TrackMyOrder.errorMessages.errorTel},{input:n.TrackMyOrder.el.postcodeInput,validator:i.isValidTitle,error:n.TrackMyOrder.errorMessages.errorPostcode},{input:n.TrackMyOrder.el.emailInput,validator:i.isValidEmail,error:n.TrackMyOrder.errorMessages.errorEmail}]},validateInput:function(r,e,t){var n=$(r).val().trim(),e=($(r).val(n),e(n));return(0,i.updateStylingError)(r,e,t),e},validateForm:function(){var r=!0,e=$(n.TrackMyOrder.el.orderInput),r=n.TrackMyOrder.validateInput(e,i.isValidOrderNumber,n.TrackMyOrder.errorMessages.errorOrderNumber)&&r,t=$(n.TrackMyOrder.el.tabContentActive).find("input");return r=r&&t.length&&(e=n.TrackMyOrder.getFieldsConfigurations().find(function(r){return r.input==="#".concat(t.attr("id"))}))?n.TrackMyOrder.validateInput(e.input,e.validator,e.error)&&r:r},resetTabContentFieldInputs:function(){$(n.TrackMyOrder.el.formRowOptionsInput).each(function(){$(this).val("")})},bindTabOptionsClick:function(){n.TrackMyOrder.el.$tabOptionsInputs.click(function(){$(this).tab("show"),$(this).removeClass("active");var r=$(n.TrackMyOrder.el.options).find(n.TrackMyOrder.el.fieldError);r.length&&(0,i.removeErrorStyling)(r),n.TrackMyOrder.resetTabContentFieldInputs()})},handleTrackOrderFormSubmit:function(){n.TrackMyOrder.el.$trackOrderForm.on("submit",function(r){r.preventDefault(),n.TrackMyOrder.validateForm()&&r.target.submit()})},scrollToElement:function(r){r.length&&$("html, body").animate({scrollTop:r.offset().top-20},300)},handleScrollBehaviorOnLoad:function(){$(n.TrackMyOrder.el.fieldError).length?n.TrackMyOrder.scrollToElement(n.TrackMyOrder.el.$trackOrderMainSection):n.TrackMyOrder.el.$myOrderSection.length&&n.TrackMyOrder.scrollToElement(n.TrackMyOrder.el.$myOrderSection)},handlePrint:function(){$(n.TrackMyOrder.el.btnPrint).click(function(r){r.preventDefault(),console.log("Print button clicked"),window.print()})},handleTooltip:function(){$(n.TrackMyOrder.el.tooltip).on("click",function(r){r.preventDefault(),r.stopPropagation()})},init:function(){n.TrackMyOrder.handleScrollBehaviorOnLoad(),n.TrackMyOrder.handleTrackOrderFormSubmit(),n.TrackMyOrder.bindTabOptionsClick(),n.TrackMyOrder.handlePrint(),n.TrackMyOrder.handleTooltip()}},$(document).ready(function(){n.TrackMyOrder.el.$trackMyOrder.length&&n.TrackMyOrder.init()})},{"./utils/validation":2}],2:[function(r,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addErrorMessage=E,t.addFieldValidation=function(r,t){$(r).each(function(r,e){$(e).blur(function(){o(this),t(this),n.idsOfInputsWithNoNeedToUpdateDuringTyping.includes(e.id)||$(this).keyup(function(){o(this),t(this)})})})},t.clearValidationErrors=function(r){r=$(r);r.hasClass("form_invalid")&&r.removeClass("form_invalid").find(".form-row[data-row-required]").removeClass("form-row_validation-error").find(".form-row__error").remove()},t.isNameOnCardContainsAtLeast14Digits=y,t.isNameOnCardContainsOnly16Digits=h,t.isValidAddress2=O,t.isValidAddressSelection=p,t.isValidEmail=d,t.isValidFieldSize=u,t.isValidHouseName=m,t.isValidInputTextField=c,t.isValidOrderNumber=function(r){return 9<=r.length},t.isValidPassword=l,t.isValidPasswordSize=function(r){return 5<r.length&&r.length<256},t.isValidPhoneNumber=f,t.isValidPostcodeField=v,t.isValidStoreId=T,t.isValidTitle=s,t.isValidVoucher=g,t.removeErrorStyling=M,t.showValidationErrors=function(r,e){r=$(r);r.hasClass(i.formInvalid)?r.find(i.fieldRow).find(".form-row__error").text(e):(r.find(".form-row__error").remove(),r.addClass(i.formInvalid).find(i.fieldRow).append(function(r){return'<div class="form-row__error"> '.concat(r||"Error message here","</div>")}(e)).addClass(i.rowValidationError));e=r.find(i.fieldRow).first();{var t;e.length&&!function(r){"function"==typeof jQuery&&r instanceof jQuery&&(r=r[0]);r=r.getBoundingClientRect();return 0<=r.top&&0<=r.left&&r.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&r.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)&&(r=e.closest(".modal").length,t=r?e.closest(".modal"):$("html, body"),r=r?0:e.offset().top-30,t.animate({scrollTop:r},300))}},t.updateInputValueBeforeValidation=o,t.updateStylingError=k,t.updateStylingErrorForElement=w,t.validateAddress1=function(r){k(r.id,c(r.value),invalidAddressOne)},t.validateAddress2=function(r){k(r.id,O(r.value),invalidAddressTwo)},t.validateAddressSelection=function(r){k(r.id,p(r),selectAddressMessage)},t.validateCity=function(r){k(r.id,c(r.value),invalidTownCity)},t.validateEmail=function(r){k(r.id,d(r.value),invalidEmailAddress)},t.validateFirstName=function(r){k(r.id,c(r.value),invalidFirstName)},t.validateGuidPattern=function(r){return a.guidPattern.test(r)},t.validateHouseName=function(r){k(r.id,m(r.value))},t.validateLastName=function(r){k(r.id,c(r.value),invalidLastName)},t.validateMobile=function(r,e){k(r.id,f(r.value,e),invalidMobile)},t.validateNameOnCard=function(r){k(r.id,!0);var e=c(r.value);e?r.value.length>nameOnCardMaxLength?k(r.id,!1,invalidNameOnCardLength):h(r.value)?k(r.id,!1,invalidCustomNameOnCard):y(r.value)&&k(r.id,!1,validationWarnNameOnCard):k(r.id,e,invalidNameOnCard)},t.validatePassword=function(r){k(r.id,l(r.value),invalidPassword)},t.validatePhone=function(r){k(r.id,f(r.value,!0),invalidTelephone)},t.validatePostcode=function(r,e){var t=r.value,n=v(t);e&&n&&(t=t.replace(/\s/g,""),$("#"+$.escapeSelector(r.id)).val(t.substr(0,t.length-3)+" "+t.substr(t.length-3)));k(r.id,n,invalidPostCode)},t.validateStoreId=function(r){k(r.id,T(r.value),invalidStoreId)},t.validateTitle=function(r){k(r.id,s(r.value),invalidTitle)},t.validateUserFriendlyIdPattern=function(r){return a.userFriendlyIdPattern.test(r)},t.validateVoucher=function(r){w(r,g(r.value),invalidVoucherCode)},t.wrapWithError=b;var n={idsOfInputsWithNoNeedToUpdateDuringTyping:["address-lookup-query","modal-address-lookup-query"]},i={formInvalid:"form_invalid",fieldRow:".form-row[data-row-required]",rowValidationError:"form-row_validation-error"},a={guidPattern:/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i,userFriendlyIdPattern:/^[A-Za-z]{2,3}\d{6}$/};function o(r){$(r).val($.trim($(r).val()))}function d(r){var e=new RegExp("^(?=.{1,64}@)[\\w\\+-]+(\\.[\\w\\+-]+)*@(([A-Za-z\\d]+[A-Za-z\\d-]*\\.){1,3}[A-Za-z]{2,16}|(?:(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?)\\.){3}(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?))$"),t=r.length<=254;return e.test(r)&&t}function l(r){return 0<r.length}function s(r){return 0<r.length}function u(r){return 0<r.length&&r.length<256}function c(r){var e=new RegExp("^[\\w ()/&.,'-]+$|^$");return u(r)&&e.test(r)}function f(r,e){r=r.replace(/\s+/g,"");var t=new RegExp("^0{1}\\d{10}$|^0{1}\\d{5}\\s{1}\\d{5}$|^0{1}\\d{4}\\s{1}\\d{6}$|^0{1}\\d{3}\\s{1}\\d{3}\\s{1}\\d{4}$|^0{1}\\d{2}\\s{1}\\d{4}\\s{1}\\d{4}$|^0{1}\\d{3}\\s{1}\\d{7}$"),n=new RegExp("^0{1}\\d{9}$|^0{1}\\d{5}\\s{1}\\d{4}$|^0{1}\\d{4}\\s{1}\\d{5}$"),t=t.test(r)||n.test(r);return e?0===r.length||t:0<r.length&&t}function v(r){var r=r.toUpperCase().replaceAll(" ",""),e=new RegExp("^(GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))[0-9][A-BD-HJLNP-UW-Z]{2})$");return 4<r.replace(/\s+/g,"").length&&e.test(r)}function m(r){var e=new RegExp("^[\\w ()/&.,'-]+$|^$");return 0<r.length&&e.test(r)}function p(r){return!$("#"+$.escapeSelector(r.id)).is(":visible")}function O(r){var e=new RegExp("^[\\w ().,'-]+$|^$");return 0===r.length||e.test(r)}function g(r){return 0<r.trim().length}function h(r){return new RegExp("^\\d{16}$").test(r)}function y(r){return new RegExp("^(.*\\d){14,}.*$").test(r)}function T(r){return"0"!==r}function k(r,e,t){w($(r),e,t)}function w(r,e,t){r=$(r).closest(".form-row");r.is(":visible")&&(M(r),e||(b(r),E(r,t)))}function M(r){r.removeClass("form-row_validation-error"),r.find(".form-row__error").remove()}function b(r){$(r).addClass("form-row_validation-error")}function E(r,e){e&&$(r).append('<div class="form-row__error">'+e+"</div>")}},{}]},{},[1]);
1
+ !function n(i,a,o){function d(e,r){if(!a[e]){if(!i[e]){var t="function"==typeof require&&require;if(!r&&t)return t(e,!0);if(l)return l(e,!0);throw(r=new Error("Cannot find module '"+e+"'")).code="MODULE_NOT_FOUND",r}t=a[e]={exports:{}},i[e][0].call(t.exports,function(r){return d(i[e][1][r]||r)},t,t.exports,n,i,a,o)}return a[e].exports}for(var l="function"==typeof require&&require,r=0;r<o.length;r++)d(o[r]);return d}({1:[function(r,e,t){"use strict";var i=r("./utils/validation"),n=window.Wick||{};n.TrackMyOrder={el:{$trackMyOrder:$(".track-order"),$tabOptionsInputs:$('input[name="track-order-options"]'),$trackOrderForm:$(".track-order-form"),$trackOrderMainSection:$(".track-order__main"),formRow:".track-order-form .form-row",formRowOptionsInput:".track-order-form .tab-content input",orderInput:"#order",telInput:"#tel",emailInput:"#email",postcodeInput:"#postcode",formInvalidClass:"form_invalid",notification:".notification",fieldError:".form-row.form-row_validation-error",tabContentActive:".tab-content .tab-pane.active",options:".tab-content",$myOrderSection:$(".my-order"),btnPrint:".btn--print",tooltip:".icon-info-component"},errorMessages:{errorOrderNumber:"Please enter a valid order number",errorTel:"Please enter a valid phone number",errorPostcode:"Please enter a valid billing postcode",errorEmail:"Please enter a valid email address"},getFieldsConfigurations:function(){return[{input:n.TrackMyOrder.el.orderInput,validator:i.isValidOrderNumber,error:n.TrackMyOrder.errorMessages.errorOrderNumber},{input:n.TrackMyOrder.el.telInput,validator:i.isValidPhoneNumber,error:n.TrackMyOrder.errorMessages.errorTel},{input:n.TrackMyOrder.el.postcodeInput,validator:i.isValidTitle,error:n.TrackMyOrder.errorMessages.errorPostcode},{input:n.TrackMyOrder.el.emailInput,validator:i.isValidEmail,error:n.TrackMyOrder.errorMessages.errorEmail}]},validateInput:function(r,e,t){var n=$(r).val().trim(),e=($(r).val(n),e(n));return(0,i.updateStylingError)(r,e,t),e},validateForm:function(){var r=!0,e=$(n.TrackMyOrder.el.orderInput),r=n.TrackMyOrder.validateInput(e,i.isValidOrderNumber,n.TrackMyOrder.errorMessages.errorOrderNumber)&&r,t=$(n.TrackMyOrder.el.tabContentActive).find("input");return r=r&&t.length&&(e=n.TrackMyOrder.getFieldsConfigurations().find(function(r){return r.input==="#".concat(t.attr("id"))}))?n.TrackMyOrder.validateInput(e.input,e.validator,e.error)&&r:r},resetTabContentFieldInputs:function(){$(n.TrackMyOrder.el.formRowOptionsInput).each(function(){$(this).val("")})},bindTabOptionsClick:function(){n.TrackMyOrder.el.$tabOptionsInputs.click(function(){$(this).tab("show"),$(this).removeClass("active");var r=$(n.TrackMyOrder.el.options).find(n.TrackMyOrder.el.fieldError);r.length&&(0,i.removeErrorStyling)(r),n.TrackMyOrder.resetTabContentFieldInputs()})},handleTrackOrderFormSubmit:function(){n.TrackMyOrder.el.$trackOrderForm.on("submit",function(r){r.preventDefault(),n.TrackMyOrder.validateForm()&&r.target.submit()})},scrollToElement:function(r){r.length&&$("html, body").animate({scrollTop:r.offset().top-20},300)},handleScrollBehaviorOnLoad:function(){$(n.TrackMyOrder.el.fieldError).length?n.TrackMyOrder.scrollToElement(n.TrackMyOrder.el.$trackOrderMainSection):n.TrackMyOrder.el.$myOrderSection.length&&n.TrackMyOrder.scrollToElement(n.TrackMyOrder.el.$myOrderSection)},handlePrint:function(){$(n.TrackMyOrder.el.btnPrint).click(function(r){r.preventDefault(),console.log("Print button clicked"),window.print()})},handleTooltip:function(){$(n.TrackMyOrder.el.tooltip).on("click",function(r){r.preventDefault(),r.stopPropagation()})},init:function(){n.TrackMyOrder.handleScrollBehaviorOnLoad(),n.TrackMyOrder.handleTrackOrderFormSubmit(),n.TrackMyOrder.bindTabOptionsClick(),n.TrackMyOrder.handlePrint(),n.TrackMyOrder.handleTooltip()}},$(document).ready(function(){n.TrackMyOrder.el.$trackMyOrder.length&&n.TrackMyOrder.init()})},{"./utils/validation":2}],2:[function(r,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addErrorMessage=E,t.addFieldValidation=function(r,t){$(r).each(function(r,e){$(e).blur(function(){o(this),t(this),n.idsOfInputsWithNoNeedToUpdateDuringTyping.includes(e.id)||$(this).keyup(function(){o(this),t(this)})})})},t.clearErrorText=P,t.clearValidationErrors=function(r){r=$(r);r.hasClass("form_invalid")&&r.removeClass("form_invalid").find(".form-row[data-row-required]").removeClass("form-row_validation-error").find(".form-row__error").remove()},t.isNameOnCardContainsAtLeast14Digits=T,t.isNameOnCardContainsOnly16Digits=h,t.isValidAddress2=g,t.isValidAddressSelection=p,t.isValidEmail=d,t.isValidFieldSize=u,t.isValidHouseName=m,t.isValidInputTextField=c,t.isValidOrderNumber=function(r){return 9<=r.length},t.isValidPassword=l,t.isValidPasswordSize=function(r){return 5<r.length&&r.length<256},t.isValidPhoneNumber=f,t.isValidPostcodeField=v,t.isValidStoreId=y,t.isValidTitle=s,t.isValidVoucher=O,t.removeErrorStyling=M,t.showErrorText=C,t.showValidationErrors=function(r,e){r=$(r);r.hasClass(i.formInvalid)?r.find(i.fieldRow).find(".form-row__error").text(e):(r.find(".form-row__error").remove(),r.addClass(i.formInvalid).find(i.fieldRow).append(function(r){return'<div class="form-row__error"> '.concat(r||"Error message here","</div>")}(e)).addClass(i.rowValidationError));e=r.find(i.fieldRow).first();{var t;e.length&&!function(r){"function"==typeof jQuery&&r instanceof jQuery&&(r=r[0]);r=r.getBoundingClientRect();return 0<=r.top&&0<=r.left&&r.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&r.right<=(window.innerWidth||document.documentElement.clientWidth)}(e)&&(r=e.closest(".modal").length,t=r?e.closest(".modal"):$("html, body"),r=r?0:e.offset().top-30,t.animate({scrollTop:r},300))}},t.updateInputValueBeforeValidation=o,t.updateStylingError=k,t.updateStylingErrorForElement=w,t.validateAddress1=function(r){k(r.id,c(r.value),invalidAddressOne)},t.validateAddress2=function(r){k(r.id,g(r.value),invalidAddressTwo)},t.validateAddressSelection=function(r){k(r.id,p(r),selectAddressMessage)},t.validateCity=function(r){k(r.id,c(r.value),invalidTownCity)},t.validateEmail=function(r){k(r.id,d(r.value),invalidEmailAddress)},t.validateExactDigits=function(r,t,e,n){return function(r,e,t,n){var i=n.fieldSelector,a=n.errorText,o=n.fieldError,n=n.ariaInvalidAttr,e=!!e(String(r.val()||""));e?P(r,i,a,o,n):C(r,t,i,a,o,n);return e}(r,function(r){return e=t,function(r){return String(r||"").replace(/\D/g,"")}(r).length===Number(e);var e},e,n)},t.validateFirstName=function(r){k(r.id,c(r.value),invalidFirstName)},t.validateGuidPattern=function(r){return a.guidPattern.test(r)},t.validateHouseName=function(r){k(r.id,m(r.value))},t.validateLastName=function(r){k(r.id,c(r.value),invalidLastName)},t.validateMobile=function(r,e){k(r.id,f(r.value,e),invalidMobile)},t.validateNameOnCard=function(r){k(r.id,!0);var e=c(r.value);e?r.value.length>nameOnCardMaxLength?k(r.id,!1,invalidNameOnCardLength):h(r.value)?k(r.id,!1,invalidCustomNameOnCard):T(r.value)&&k(r.id,!1,validationWarnNameOnCard):k(r.id,e,invalidNameOnCard)},t.validatePassword=function(r){k(r.id,l(r.value),invalidPassword)},t.validatePhone=function(r){k(r.id,f(r.value,!0),invalidTelephone)},t.validatePostcode=function(r,e){var t=r.value,n=v(t);e&&n&&(t=t.replace(/\s/g,""),$("#"+$.escapeSelector(r.id)).val(t.substr(0,t.length-3)+" "+t.substr(t.length-3)));k(r.id,n,invalidPostCode)},t.validateStoreId=function(r){k(r.id,y(r.value),invalidStoreId)},t.validateTitle=function(r){k(r.id,s(r.value),invalidTitle)},t.validateUserFriendlyIdPattern=function(r){return a.userFriendlyIdPattern.test(r)},t.validateVoucher=function(r){w(r,O(r.value),invalidVoucherCode)},t.wrapWithError=b;var n={idsOfInputsWithNoNeedToUpdateDuringTyping:["address-lookup-query","modal-address-lookup-query"]},i={formInvalid:"form_invalid",fieldRow:".form-row[data-row-required]",rowValidationError:"form-row_validation-error"},a={guidPattern:/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i,userFriendlyIdPattern:/^[A-Za-z]{2,3}\d{6}$/};function o(r){$(r).val($.trim($(r).val()))}function d(r){var e=new RegExp("^(?=.{1,64}@)[\\w\\+-]+(\\.[\\w\\+-]+)*@(([A-Za-z\\d]+[A-Za-z\\d-]*\\.){1,3}[A-Za-z]{2,16}|(?:(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?)\\.){3}(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?))$"),t=r.length<=254;return e.test(r)&&t}function l(r){return 0<r.length}function s(r){return 0<r.length}function u(r){return 0<r.length&&r.length<256}function c(r){var e=new RegExp("^[\\w ()/&.,'-]+$|^$");return u(r)&&e.test(r)}function f(r,e){r=r.replace(/\s+/g,"");var t=new RegExp("^0{1}\\d{10}$|^0{1}\\d{5}\\s{1}\\d{5}$|^0{1}\\d{4}\\s{1}\\d{6}$|^0{1}\\d{3}\\s{1}\\d{3}\\s{1}\\d{4}$|^0{1}\\d{2}\\s{1}\\d{4}\\s{1}\\d{4}$|^0{1}\\d{3}\\s{1}\\d{7}$"),n=new RegExp("^0{1}\\d{9}$|^0{1}\\d{5}\\s{1}\\d{4}$|^0{1}\\d{4}\\s{1}\\d{5}$"),t=t.test(r)||n.test(r);return e?0===r.length||t:0<r.length&&t}function v(r){var r=r.toUpperCase().replaceAll(" ",""),e=new RegExp("^(GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))[0-9][A-BD-HJLNP-UW-Z]{2})$");return 4<r.replace(/\s+/g,"").length&&e.test(r)}function m(r){var e=new RegExp("^[\\w ()/&.,'-]+$|^$");return 0<r.length&&e.test(r)}function p(r){return!$("#"+$.escapeSelector(r.id)).is(":visible")}function g(r){var e=new RegExp("^[\\w ().,'-]+$|^$");return 0===r.length||e.test(r)}function O(r){return 0<r.trim().length}function h(r){return new RegExp("^\\d{16}$").test(r)}function T(r){return new RegExp("^(.*\\d){14,}.*$").test(r)}function y(r){return"0"!==r}function k(r,e,t){w($(r),e,t)}function w(r,e,t){r=$(r).closest(".form-row");r.is(":visible")&&(M(r),e||(b(r),E(r,t)))}function M(r){r.removeClass("form-row_validation-error"),r.find(".form-row__error").remove()}function b(r){$(r).addClass("form-row_validation-error")}function E(r,e){e&&$(r).append('<div class="form-row__error">'+e+"</div>")}function C(r,e,t,n,i,a){t=r.closest(t),t.addClass(i),r.attr(a,"true"),i=t.find(n);(i=i.length?i:$('<div class="'.concat(n.slice(1),'" />')).appendTo(t)).text(e)}function P(r,e,t,n,i){e=r.closest(e);e.removeClass(n),r.removeAttr(i),e.find(t).remove()}},{}]},{},[1]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickes-css2",
3
- "version": "2.105.0-develop.2",
3
+ "version": "2.105.0-gift-cards.2",
4
4
  "description": "CSS and JS and page templates in use by Wickes",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -15,8 +15,9 @@
15
15
  "prettier --write"
16
16
  ],
17
17
  "src/scss/**/*.{scss,css}": [
18
+ "sass-lint-auto-fix",
18
19
  "prettier --write",
19
- "sass-lint-auto-fix"
20
+ "sass-lint -c .sasslintrc"
20
21
  ]
21
22
  },
22
23
  "keywords": [
@@ -70,6 +71,7 @@
70
71
  "prettier": "^3.7.4",
71
72
  "pug": "2.0.4",
72
73
  "sass": "^1.54.9",
74
+ "sass-lint": "^1.13.1",
73
75
  "sass-lint-auto-fix": "^0.21.2",
74
76
  "semantic-release": "^16.0.0-beta.9",
75
77
  "through2": "^4.0.2",
@@ -123,7 +125,7 @@
123
125
  "branches": [
124
126
  "alt-master",
125
127
  {
126
- "name": "develop",
128
+ "name": "custom-tag/gift-cards",
127
129
  "prerelease": "${name.replace(/^custom-tag\\//g, '')}"
128
130
  }
129
131
  ],
@@ -5,7 +5,7 @@
5
5
  <div class="checkout-payment-details__descr">
6
6
  <h3 class="checkout-payment-details__title">Payment method</h3>
7
7
  <div class="form-row">
8
- <div class="form-row__field">
8
+ <div class="form-row__field form-row__card-payment">
9
9
  {{> radiobutton
10
10
  labelIcons=(array "./img/visa-logo.svg" "./img/mastercard.svg")
11
11
  name="payment-method"
@@ -121,7 +121,7 @@
121
121
  </div>
122
122
  {{/if}}
123
123
  <div class="form-row">
124
- <div class="form-row__field">
124
+ <div class="form-row__field form-row__field-paypal">
125
125
  <label class="rbn rbn_align" for="checkout-payment-details-paypal">
126
126
  <input type="radio" id="checkout-payment-details-paypal" name="payment-method" value="paypal">
127
127
  <ins></ins>
@@ -130,6 +130,7 @@
130
130
  </label>
131
131
  </div>
132
132
  </div>
133
+ {{> gift-cards }}
133
134
  </div>
134
135
  </div>
135
136
 
@@ -4,7 +4,7 @@
4
4
  <div class="row">
5
5
  <div class="col-12 generate-project-id__col">
6
6
  <button class="generate-project-id__btn btn btn-transparent">
7
- <span class="btn_text btn-transparent__text">Generate a project ID</span>
7
+ <span class="btn_text btn-transparent__text">Generate project ID</span>
8
8
  <i class="btn-transparent__icon far fa-download"></i>
9
9
  <a href="#" class="copy-barcode page-footer__copy" style="display:none;">
10
10
  <i class="far fa-copy"></i>
@@ -0,0 +1,9 @@
1
+ <p class="{{hintClass}}">
2
+ {{#if canAdd}}
3
+ <span class="giftcard-summary__add js-giftcard-add">Add another Gift Card</span>
4
+ or pay the remaining balance with a Credit/Debit card.
5
+ {{else}}
6
+ Maximum number of Gift Cards added, please pay remaining balance with a Credit/Debit card.
7
+ {{/if}}
8
+ {{> info-icon title="If you’d like to pay with a different payment method, please remove any / all applied Gift Cards." data-placement="top"}}
9
+ </p>
@@ -0,0 +1,90 @@
1
+ <div class="form-row giftcard-row">
2
+ <div class="giftcard">
3
+ <div class="giftcard__wrapper">
4
+ <span
5
+ class="giftcard-add"
6
+ id="giftcard-toggle"
7
+ role="button"
8
+ tabindex="0"
9
+ aria-controls="giftcard-inline"
10
+ aria-expanded="false"
11
+ >
12
+ <span class="icon">
13
+ <i class="fas fa-plus giftcard-add__icon" aria-hidden="true"></i>
14
+ </span>
15
+ <span class="giftcard-add__text">Add Wickes Gift Card</span>
16
+ </span>
17
+ <span class="giftcard-hint">Combine with Credit/Debit card</span>
18
+ </div>
19
+
20
+ <div class="giftcard__container">
21
+ <div class="giftcard-inline" id="giftcard-inline" hidden>
22
+ <div class="giftcard-inline__header">
23
+ <span class="giftcard-inline__title">Add Wickes Gift Card</span>
24
+ <a href="https://www.showmybalance.com/" target="_blank" class="giftcard-inline__balance">Check balance</a>
25
+ <span class="giftcard-inline__close">
26
+ <i class="fal fa-times" aria-hidden="true"></i>
27
+ </span>
28
+ </div>
29
+
30
+ {{> notifications classModifier="notification_error" error=true withCloseBtn="true"}}
31
+
32
+ <form class="giftcard-inline__form">
33
+ <div class="giftcard-inline__fields">
34
+ {{> form-row
35
+ id="giftcard-number"
36
+ label="Gift Card number"
37
+ required="true"
38
+ placeholder="0000-0000-0000-0000"
39
+ row-mod="giftcard__field giftcard__field--number"
40
+ name="giftcard-number"
41
+ maxlength="19"
42
+ inputmode="numeric"
43
+ type="tel"
44
+ autocomplete="off"
45
+ input-mod="giftcard__input"
46
+ skipGlobalValidation=true
47
+ }}
48
+
49
+ {{> form-row
50
+ id="giftcard-pin"
51
+ label="Gift Card PIN"
52
+ required="true"
53
+ placeholder="00000000"
54
+ row-mod="giftcard__field giftcard__field--pin"
55
+ name="giftcard-pin"
56
+ maxlength="8"
57
+ type="password"
58
+ inputmode="numeric"
59
+ autocomplete="off"
60
+ input-mod="giftcard__input"
61
+ skipGlobalValidation=true
62
+ showContent=(hash
63
+ idToggleIcon="giftcard-pin-toggle"
64
+ classCustomIcon="fas fa-eye-slash"
65
+ idCustomIcon="giftcard-pin-eye"
66
+ )
67
+ }}
68
+
69
+ <div class="giftcard__actions">
70
+ {{> button text="Add" modification="giftcard__btn" }}
71
+ </div>
72
+ </div>
73
+ </form>
74
+ </div>
75
+
76
+ </div>
77
+
78
+ </div>
79
+
80
+ <div class="giftcard-applied" id="giftcard-applied" hidden>
81
+ <div class="giftcard-applied__inner" role="status" aria-live="polite">
82
+ <span class="giftcard-applied__icon" aria-hidden="true">
83
+ <i class="fas fa-check-circle"></i>
84
+ </span>
85
+ <p class="giftcard-applied__text">
86
+ Gift Card added successfully, basket total updated
87
+ </p>
88
+ </div>
89
+ </div>
90
+ </div>
@@ -0,0 +1,23 @@
1
+ <div class="giftcard-chip" data-giftcard-id="{{id}}">
2
+ <div class="giftcard-chip__icon" aria-hidden="true">
3
+ <img src="https://eu-images.contentstack.com/v3/assets/blt066259863543a0d2/blt0af9cb9d86356305/69130779467abd2df07b7e79/giftcard.svg" alt="giftcard" />
4
+ </div>
5
+
6
+ <div class="giftcard-chip__content">
7
+ <div class="giftcard-chip__line">
8
+ <span
9
+ class="giftcard-chip__number"
10
+ aria-label="{{maskedNumber}}">
11
+ {{maskedNumber}}
12
+ </span>
13
+ </div>
14
+
15
+ <div class="giftcard-chip__line">
16
+ <span class="giftcard-chip__applied">{{currency}}{{amount}} applied</span>
17
+ </div>
18
+ </div>
19
+
20
+ <span class="giftcard-chip__close">
21
+ <i class="fal fa-times" aria-hidden="true"></i>
22
+ </span>
23
+ </div>
@@ -0,0 +1,6 @@
1
+ <div class="giftcard-summary" style="display:none">
2
+ <div class="giftcard-chip-list">
3
+ {{> loader hidden=true }}
4
+ </div>
5
+ <p class="giftcard-summary__hint"></p>
6
+ </div>
@@ -2,9 +2,12 @@
2
2
  <div class="container component pt-0 globalMessages">
3
3
  <div class="row">
4
4
  <div class="col-12">
5
- <div class="primary-text mb-3">{{> notifications notification-page.success-product-added-to-shop-list withCloseBtn="true"}}</div>
6
- <div class="primary-text mb-3">{{> notifications notification-page.warning-product-added-to-shop-list withCloseBtn="true"}}</div>
7
- <div class="primary-text">{{> notifications notification-page.error-load-pdf-to-shop-list withCloseBtn="true"}}</div>
5
+ <div
6
+ class="primary-text mb-3">{{> notifications notification-page.success-product-added-to-shop-list withCloseBtn="true"}}</div>
7
+ <div
8
+ class="primary-text mb-3">{{> notifications notification-page.warning-product-added-to-shop-list withCloseBtn="true"}}</div>
9
+ <div
10
+ class="primary-text">{{> notifications notification-page.error-load-pdf-to-shop-list withCloseBtn="true"}}</div>
8
11
  </div>
9
12
  </div>
10
13
  </div>
@@ -13,6 +16,7 @@
13
16
  <h1 class="page-header__title">Hill - 24-07-23 - Ohio White</h1>
14
17
  </div>
15
18
  </div>
19
+ {{> generate-project-id}}
16
20
  {{#if emptyShopList}}
17
21
  <div class="container component py-4">
18
22
  <div class="row">
@@ -35,15 +39,29 @@
35
39
  <div class="row m-0">
36
40
  <div class="actions actions--v2">
37
41
  <div class="dropdown-share-list">
38
- <button class="btn btn_full btn-secondary share-call share-call__desktop" role="button" id="dropdownShareLinks" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-display="static">
39
- <i class="fas fa-share-alt icon"></i>
42
+ <button class="btn btn_full btn-secondary share-call share-call__desktop" role="button"
43
+ id="dropdownShareLinks" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"
44
+ data-display="static">
45
+ {{#if isAndroid}}
46
+ <i class="fas fa-share-alt icon"></i>
47
+ {{else}}
48
+ <svg class="ios-custom-share-icon" width="14" height="24" viewBox="0 0 14 16" fill="none"
49
+ xmlns="http://www.w3.org/2000/svg">
50
+ <path
51
+ d="M7.70625 0.292969C7.31563 -0.0976562 6.68125 -0.0976562 6.29063 0.292969L2.29063 4.29297C1.9 4.68359 1.9 5.31797 2.29063 5.70859C2.68125 6.09922 3.31562 6.09922 3.70625 5.70859L6 3.41484V9.99922C6 10.5523 6.44688 10.9992 7 10.9992C7.55312 10.9992 8 10.5523 8 9.99922V3.41484L10.2937 5.70859C10.6844 6.09922 11.3188 6.09922 11.7094 5.70859C12.1 5.31797 12.1 4.68359 11.7094 4.29297L7.70937 0.292969H7.70625ZM2 10.9992C2 10.4461 1.55313 9.99922 1 9.99922C0.446875 9.99922 0 10.4461 0 10.9992V12.9992C0 14.6555 1.34375 15.9992 3 15.9992H11C12.6562 15.9992 14 14.6555 14 12.9992V10.9992C14 10.4461 13.5531 9.99922 13 9.99922C12.4469 9.99922 12 10.4461 12 10.9992V12.9992C12 13.5523 11.5531 13.9992 11 13.9992H3C2.44688 13.9992 2 13.5523 2 12.9992V10.9992Z"
52
+ fill="#0277BD" />
53
+ </svg>
54
+ {{/if}}
40
55
  <span>Share</span>
41
56
  </button>
42
57
  <div class="dropdown-menu" aria-labelledby="dropdownShareLinks">
43
- <div class="a2a_kit a2a_kit_size_32 a2a_default_style" data-a2a-url="https://www-uat1.dev.wickes.co.uk/project-list/be91b064-13ad-4e27-b51d-67e77a53f430" data-a2a-title="Please check my Wickes project list" style="line-height: 32px;">
58
+ <div class="a2a_kit a2a_kit_size_32 a2a_default_style"
59
+ data-a2a-url="https://www-uat1.dev.wickes.co.uk/project-list/be91b064-13ad-4e27-b51d-67e77a53f430"
60
+ data-a2a-title="Please check my Wickes project list" style="line-height: 32px;">
44
61
  <ul class="socials__list">
45
62
  <li class="socials__item">
46
- <a type="button" href="#" class="a2a_button_email" data-toggle="modal" data-target="#share-list-modal"></a>
63
+ <a type="button" href="#" class="a2a_button_email" data-toggle="modal"
64
+ data-target="#share-list-modal"></a>
47
65
  </li>
48
66
  <li class="socials__item">
49
67
  <a class="a2a_button_facebook" target="_blank" rel="nofollow noopener" href="/#facebook"></a>
@@ -58,9 +76,9 @@
58
76
  </div>
59
77
  </div>
60
78
  </div>
61
- <button href="#" class="btn btn_full btn-secondary download-pdf">
79
+ <button href="#" class="btn btn_full btn-primary download-pdf">
62
80
  <i class="fas fa-file-download icon"></i>
63
- <span>Download</span>
81
+ <span>Download pdf</span>
64
82
  </button>
65
83
  </div>
66
84
 
@@ -71,7 +89,7 @@
71
89
  <div class="content shop-list-info d-flex">
72
90
  <div class="shop-list-info_item heading-4">
73
91
  <span class="shop-list-info_count">5</span> item<span class="shop-list-info_one-item">s</span> (<span
74
- class="shop-list-info_left">95</span> left)
92
+ class="shop-list-info_left">95</span> left)
75
93
  </div>
76
94
  </div>
77
95
  </div>
@@ -1,10 +1,10 @@
1
1
  <div class="container mb-3">
2
- <a class="btn btn-secondary btn-back-to-project-list" href="/page_my-project-list-multiple.html">
3
- <i class="fas fa-arrow-left"></i>
4
- <span>
2
+ <a class="btn btn-secondary btn-back-to-project-list" href="/page_my-project-list-multiple.html">
3
+ <i class="fas fa-arrow-left"></i>
4
+ <span>
5
5
  Back to Project Lists hub
6
6
  </span>
7
- </a>
7
+ </a>
8
8
  </div>
9
9
  <div class="globalMessages container component pt-0 pb-0">
10
10
  <div class="row">
@@ -64,7 +64,7 @@
64
64
  <i class="fas fa-share-alt icon"></i>
65
65
  <span>Share</span>
66
66
  </button>
67
- <button href="#" class="btn btn_full btn-secondary download-pdf {{#if hideDownload}}d-none{{/if}}">
67
+ <button href="#" class="btn btn_full btn-secondary download-pdf">
68
68
  <i class="fas fa-file-download icon"></i>
69
69
  <span>Download</span>
70
70
  </button>
@@ -1,4 +1,4 @@
1
- <div class="form-row {{#if clearInput}}form-row--clear-input{{/if}} {{#if error}}form-row_validation-error{{/if}} {{#if locked}}form-row--locked{{/if}} {{row-mod}}" {{#if required}}data-row-required{{/if}} {{#if clearInput}}data-clearable{{/if}} {{#if showContent}}data-show-content{{/if}} data-form-field>
1
+ <div class="form-row {{#if clearInput}}form-row--clear-input{{/if}} {{#if error}}form-row_validation-error{{/if}} {{#if locked}}form-row--locked{{/if}} {{row-mod}}" {{#if required}}data-row-required{{/if}} {{#if clearInput}}data-clearable{{/if}} {{#if showContent}}data-show-content{{/if}} {{#if skipGlobalValidation}}data-no-global-validation{{/if}} data-form-field>
2
2
  <label class="form-row__label {{#if required}}form-row__label_required{{/if}} {{#if label-hidden}}sr-only{{/if}}" for="{{id}}">
3
3
  {{label}}
4
4
  {{#if tooltip}}
@@ -1,7 +1,36 @@
1
1
  {{#if textarea}}
2
2
  <textarea class="tbx {{#if textarea}}tbx_textarea{{/if}} {{#if error}}tbx_error{{/if}}" rows="{{textareaRows}}" cols="{{textareaCols}}" value="{{value}}" maxlength="{{maxlength}}" id="{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" {{#if disabled}}disabled{{/if}}></textarea>
3
3
  {{else if type}}
4
- <input type="{{type}}" class="tbx {{#if error}}tbx_error{{/if}} {{input-mod}}" value="{{value}}" id="{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" placeholder="{{placeholder}}" {{#if (or locked disabled)}}disabled{{/if}} {{#if need-pattern}}pattern=""{{/if}} {{#if readonly}}readonly{{/if}} {{#if data-tag}}data-tag="{{data-tag}}"{{/if}}>
4
+ <input
5
+ type="{{type}}"
6
+ class="tbx {{#if error}}tbx_error{{/if}} {{input-mod}}"
7
+ value="{{value}}"
8
+ id="{{id}}"
9
+ name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}"
10
+ placeholder="{{placeholder}}"
11
+ {{#if (or locked disabled)}}disabled{{/if}}
12
+ {{#if need-pattern}}pattern=""{{/if}}
13
+ {{#if readonly}}readonly{{/if}}
14
+ {{#if data-tag}}data-tag="{{data-tag}}"{{/if}}
15
+ {{#if maxlength}}maxlength="{{maxlength}}"{{/if}}
16
+ {{#if inputmode}}inputmode="{{inputmode}}"{{/if}}
17
+ {{#if autocomplete}}autocomplete="{{autocomplete}}"{{/if}}
18
+ >
5
19
  {{else}}
6
- <input type="text" class="tbx {{#if error}}tbx_error{{/if}} {{input-mod}}" value="{{value}}" id="{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" placeholder="{{placeholder}}" {{#if (or locked disabled)}}disabled{{/if}} {{#if need-pattern}}pattern=""{{/if}} {{#if readonly}}readonly{{/if}} {{#if data-tag}}data-tag="{{data-tag}}"{{/if}}>
20
+ <input
21
+ type="text"
22
+ class="tbx {{#if error}}tbx_error{{/if}} {{input-mod}}"
23
+ value="{{value}}"
24
+ id="{{id}}"
25
+ name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}"
26
+ placeholder="{{placeholder}}"
27
+ {{#if (or locked disabled)}}disabled{{/if}}
28
+ {{#if need-pattern}}pattern=""{{/if}}
29
+ {{#if readonly}}readonly{{/if}}
30
+ {{#if data-tag}}data-tag="{{data-tag}}"{{/if}}
31
+ {{#if error}}aria-invalid="true"{{/if}}
32
+ {{#if maxlength}}maxlength="{{maxlength}}"{{/if}}
33
+ {{#if inputmode}}inputmode="{{inputmode}}"{{/if}}
34
+ {{#if autocomplete}}autocomplete="{{autocomplete}}"{{/if}}
35
+ >
7
36
  {{/if}}
@@ -0,0 +1,28 @@
1
+ <svg width="48" height="31" viewBox="0 0 48 31" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_9507_79257)">
3
+ <rect y="0.207031" width="48" height="30" rx="3" fill="white"/>
4
+ <path d="M42.5 26.207C39.5 25.707 36.5 21.207 36.5 21.207C36.5 21.207 34 25.207 31 26.207" stroke="#004587" stroke-width="1.8"/>
5
+ <path d="M29.7862 18.5774C30.7643 19.8755 32.9202 20.2323 35.2567 20.6584C35.2241 18.7373 34.7506 16.8572 33.7724 15.5591C32.7942 14.261 31.3287 13.7129 30.0307 14.691C28.7326 15.6692 28.808 17.2793 29.7862 18.5774Z" fill="white" stroke="#004587" stroke-width="1.8"/>
6
+ <path d="M43.164 18.5774C42.1859 19.8755 40.03 20.2323 37.6935 20.6584C37.7261 18.7373 38.1996 16.8572 39.1778 15.5591C40.1559 14.261 41.6215 13.7129 42.9195 14.691C44.2176 15.6692 44.1422 17.2793 43.164 18.5774Z" fill="white" stroke="#004587" stroke-width="1.8"/>
7
+ <g clip-path="url(#clip1_9507_79257)">
8
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M3 0.207031V12.4151L16.5154 15.1785L30.0427 12.3838V0.207031H3Z" fill="white"/>
9
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M3.90234 1.08984V11.6893L16.5155 14.2625L29.1463 11.6881V1.08984H3.90234Z" fill="#004587"/>
10
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M15.7783 7.92572C15.7696 7.62779 15.5026 7.41921 15.207 7.41921C14.5493 7.41921 14.4462 7.96811 14.4462 8.45635C14.4462 8.91044 14.6458 9.37843 15.1424 9.37843C15.5498 9.37843 15.7562 9.14851 15.8118 8.77483H16.9531C16.8474 9.71885 16.1003 10.2603 15.1504 10.2603C14.0724 10.2603 13.2715 9.53599 13.2715 8.45635C13.2715 7.33602 13.9969 6.53516 15.1504 6.53516C16.0389 6.53516 16.8342 6.99838 16.9153 7.92572H15.7783Z" fill="white"/>
11
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M17.1543 5.31641H18.3288V7.81242L19.4004 6.63986H20.7594L19.4483 7.96917L20.9249 10.16H19.5089L18.6344 8.74224L18.3288 9.03322V10.16H17.1543V5.31641Z" fill="white"/>
12
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M21.7333 8.67923C21.7536 9.16013 22.0363 9.47999 22.535 9.47999C22.8166 9.47999 23.0924 9.35193 23.2046 9.09401H24.3016C24.0876 9.90917 23.32 10.2602 22.5192 10.2602C21.3542 10.2602 20.5586 9.56984 20.5586 8.38984C20.5586 7.30951 21.4374 6.53516 22.4916 6.53516C23.7754 6.53516 24.4182 7.48632 24.3632 8.67923H21.7333ZM23.189 8.03592C23.169 7.64149 22.8853 7.31607 22.4916 7.31607C22.0778 7.31607 21.8021 7.60794 21.7333 8.03592H23.189Z" fill="white"/>
13
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M25.5842 8.99642C25.5842 9.17551 25.6574 9.30418 25.7769 9.39104C25.8863 9.47275 26.0451 9.51434 26.2117 9.51434C26.4397 9.51434 26.7649 9.42043 26.7649 9.13997C26.7649 8.86835 26.3976 8.81603 26.1918 8.76798C25.4513 8.58432 24.5267 8.56159 24.5267 7.61548C24.5267 6.76836 25.4589 6.53516 26.1636 6.53516C26.9515 6.53516 27.7712 6.76041 27.8136 7.67723H26.7287C26.7287 7.52613 26.6751 7.43222 26.5773 7.36908C26.4792 7.30941 26.3507 7.28013 26.2052 7.28013C26.0108 7.28013 25.7017 7.30207 25.7017 7.54688C25.7017 7.87886 26.4881 7.93992 27.0274 8.05399C27.75 8.19744 27.9381 8.71249 27.9381 9.00545C27.9381 9.94987 27.0274 10.2602 26.2187 10.2602C25.3684 10.2602 24.4986 9.98342 24.4639 8.99642H25.5842Z" fill="white"/>
14
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M10.3756 10.16H9.08877L8.41406 6.82332H8.3981L7.72329 10.16H6.41975L5.08691 5.31641H6.36913L7.0693 8.85571H7.08112L7.80504 5.31641H9.01268L9.73841 8.85571H9.75195L10.4494 5.31641H11.7329L10.3756 10.16Z" fill="white"/>
15
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M11.8215 6.19887H12.9972V5.31641H11.8215V6.19887ZM11.8213 10.1601H12.997V6.63986H11.8213V10.1601Z" fill="white"/>
16
+ </g>
17
+ <path d="M36.5 0.207031V21.707M36.5 30.207V21.707M36.5 21.707H47.5M36.5 21.707H1" stroke="#004587" stroke-width="1.8"/>
18
+ </g>
19
+ <rect x="0.5" y="0.707031" width="47" height="29" rx="2.5" stroke="#CCCCCC"/>
20
+ <defs>
21
+ <clipPath id="clip0_9507_79257">
22
+ <rect y="0.207031" width="48" height="30" rx="3" fill="white"/>
23
+ </clipPath>
24
+ <clipPath id="clip1_9507_79257">
25
+ <rect width="27" height="14.9703" fill="white" transform="translate(3 0.207031)"/>
26
+ </clipPath>
27
+ </defs>
28
+ </svg>
@@ -4,13 +4,14 @@ Wick.Notification = (function(){
4
4
  var self = this,
5
5
  iconSuccess = '<span class="icon notification__icon"><span class="fas fa-check-circle"></span></span>',
6
6
  iconWarning = '<span class="icon notification__icon"><span class="fas fa-exclamation-circle"></span></span>',
7
+ iconError = '<span class="icon notification__icon"><span class="fas fa-times-circle"></span></span>',
7
8
  closeBtn = '<span class="icon notification__close"><span class="far fa-times"></span></span>';
8
9
 
9
10
  this.$self = $('<div/>', {
10
11
  'class': 'notification notification_general notification_' + params.type,
11
12
  html: params.text
12
13
  })
13
- .prepend(params.type === 'success' ? iconSuccess : params.type === 'warning' ? iconWarning : params.type === 'error' ? iconWarning : '')
14
+ .prepend(params.type === 'success' ? iconSuccess : params.type === 'warning' ? iconWarning : params.type === 'error' ? iconError : '')
14
15
  .prepend(params.closeBtn ? closeBtn : '')
15
16
  .prependTo(params.container);
16
17
 
@@ -0,0 +1,53 @@
1
+ var Wick = window.Wick || {};
2
+ window.Wick = Wick;
3
+
4
+ Wick.BillieModalScrollReset = (function () {
5
+ const MODAL_ID = '#billieLearnMoreModal';
6
+ const OPEN_LINK = '.billie__link[data-target="#billieLearnMoreModal"]';
7
+ const SCROLL_BODY = '.modal-body.modal-box__body';
8
+ const CONTENT = '.modal-content.modal-box__content';
9
+
10
+ function resetScroll($modal) {
11
+ if (!$modal || !$modal.length) {
12
+ return;
13
+ }
14
+
15
+ let bodyEl = $modal.find(SCROLL_BODY)[0];
16
+ if (bodyEl) {
17
+ bodyEl.scrollTop = 0;
18
+ }
19
+
20
+ $modal.find(CONTENT).attr('data-scroll-state', 'top');
21
+ }
22
+
23
+ function bindEvents($modal) {
24
+ $(document).on('click', OPEN_LINK, function () {
25
+ resetScroll($modal);
26
+ });
27
+
28
+ $(document).on('shown.bs.modal', MODAL_ID, function () {
29
+ resetScroll($modal);
30
+ requestAnimationFrame(function () { resetScroll($modal); });
31
+ setTimeout(function () { resetScroll($modal); }, 30);
32
+ });
33
+
34
+ $(document).on('hidden.bs.modal', MODAL_ID, function () {
35
+ resetScroll($modal);
36
+ });
37
+ }
38
+
39
+ function init() {
40
+ $(function () {
41
+ let $modal = $(MODAL_ID);
42
+ if (!$modal.length) return;
43
+
44
+ bindEvents($modal);
45
+ });
46
+ }
47
+
48
+ return {
49
+ init: init,
50
+ };
51
+ })();
52
+
53
+ Wick.BillieModalScrollReset.init();
@@ -27,6 +27,14 @@
27
27
  return ORDER[index];
28
28
  }
29
29
 
30
+ function resetBillieModalScroll($modal) {
31
+ const $body = $modal.find(".modal-body");
32
+ const $content = $modal.find(".modal-content");
33
+
34
+ $body.scrollTop(0);
35
+ $content.attr("data-scroll-state", "top");
36
+ }
37
+
30
38
  function applyBillieTerms(terms) {
31
39
  const copy = COPY[terms] || COPY["30"];
32
40
  const $modal = $("#billieLearnMoreModal");
@@ -36,6 +44,15 @@
36
44
  $modal.attr("data-billie-terms", terms);
37
45
  }
38
46
 
47
+ $(document).on("shown.bs.modal", "#billieLearnMoreModal", function () {
48
+ const $modal = $(this);
49
+ requestAnimationFrame(() => resetBillieModalScroll($modal));
50
+ });
51
+
52
+ $(document).on("hidden.bs.modal", "#billieLearnMoreModal", function () {
53
+ resetBillieModalScroll($(this));
54
+ });
55
+
39
56
  $(document).on("click", ".billie__link", function (e) {
40
57
  e.preventDefault();
41
58