{"version":3,"sources":["../../../../../Foundation/JavascriptCommon/code/scripts/common/formUtils.js","../../../../../Foundation/JavascriptCommon/code/scripts/common/alertMessage.js","shoppingCartIcon/miniCart.js","ShoppingCartIcon/main.js"],"names":["define","clearInvalidFeedback","formId","startsWith","$","removeClass","empty","displayInvalidFeedback","invalidFields","forEach","fieldMessage","field","FieldName","addClass","siblings","append","MessageText","collectFormData","disabledFields","find","prop","serializedData","serializeArray","formData","data","name","value","each","index","element","populateFormWithData","type","undefined","val","toString","disableFields","enableFields","initializeFloatingLabels","useToken","token","__RequestVerificationToken","show","messageText","okCallback","setIcon","setButtons","displayAlert","info","warning","error","displayDefaultMessage","CP","Messages","yesNoQuestion","yesCallback","noCallback","iconName","alertSelector","buttons","callback1","callback2","allButtonsSelector","buttonSelector","ok","off","yes","no","on","hideAndCallback","html","alertModal","alertElement","document","querySelector","bootstrap","Modal","getOrCreateInstance","backdrop","keyboard","console","log","callback","one","hide","formUtils","alertMessage","init","cartIconSelector","webuiPopover","trigger","placement","width","url","animation","multi","arrow","closeable","onShow","populateMiniCart","flash","options","pageTop","window","scrollTop","cartIconPosition","offset","top","offsetHeight","offsetTop","autoHideTimeout","spinner","postData","ajax","dataType","success","status","miniCartSelector","content","count","setTimeout","message","jq","errorThrown","complete","what","require","miniCart"],"mappings":"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","file":"ShoppingCartIcon.js","sourcesContent":["define('common/formUtils',[\r\n],\r\n function () {\r\n\r\n // Clears and deactivates all invalid feedback text on form fields\r\n function clearInvalidFeedback(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" .is-invalid\").removeClass(\"is-invalid\");\r\n $(formId + \" .invalid-feedback\").empty();\r\n }\r\n\r\n // Fills in and activates invalid feedback text on form fields\r\n function displayInvalidFeedback(invalidFields, formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n if (invalidFields) {\r\n invalidFields.forEach(function (fieldMessage) {\r\n var field = $(formId + \" [name='\" + fieldMessage.FieldName + \"']\");\r\n field.addClass(\"is-invalid\");\r\n field.siblings(\".invalid-feedback\").append(fieldMessage.MessageText);\r\n });\r\n }\r\n }\r\n\r\n // Collects the data from all form fields and returns them as object,\r\n // using \"name\" attribute values from form fields as object property names.\r\n function collectFormData(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n // the serializeArray() jQuery method doesn't take the values from disabled fields, so first I'll\r\n // temporarily enable all disabled fields, and then disable them again\r\n var disabledFields = $(formId).find(\":input:disabled\").prop(\"disabled\", false);\r\n var serializedData = $(formId).serializeArray();\r\n disabledFields.prop(\"disabled\", true);\r\n var formData = {};\r\n serializedData.forEach(function (data) {\r\n formData[data.name] = data.value;\r\n });\r\n // serializeArray does not return anything for unchecked checkboxes, so we'll add them now with value false\r\n $(formId + \" input[type='checkbox']:not(:checked)\").each(function (index, element) {\r\n formData[element.name] = false;\r\n });\r\n // serializeArray returns \"on\" for checked checkboxes, so we'll set them to true now\r\n $(formId + \" input[type='checkbox']:checked\").each(function (index, element) {\r\n formData[element.name] = true;\r\n });\r\n return formData;\r\n }\r\n\r\n // Goes through all input elements on the form and fills them with data from the\r\n // given object, matching \"name\" attribute of the input element with object property name.\r\n function populateFormWithData(formId, data) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").each(function (index, element) { \r\n if (element.type === \"radio\" ||\r\n element.type === \"checkbox\")\r\n {\r\n if (data[element.name] !== undefined)\r\n $(element).prop(\"checked\", $(element).val().toString() === data[element.name].toString());\r\n }\r\n else if (element.type === \"text\" ||\r\n element.type === \"email\" ||\r\n element.type === \"tel\" ||\r\n element.type === \"password\" ||\r\n element.type === \"textarea\" ||\r\n element.type === \"select-one\")\r\n {\r\n if (data[element.name] !== undefined)\r\n $(element).val(data[element.name]);\r\n else\r\n $(element).val(null);\r\n }\r\n });\r\n }\r\n\r\n function disableFields(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").prop(\"disabled\", true);\r\n }\r\n\r\n function enableFields(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" :input\").prop(\"disabled\", false);\r\n }\r\n\r\n function initializeFloatingLabels(formId) {\r\n if (!formId.startsWith(\"#\")) formId = \"#\" + formId;\r\n $(formId + \" .floating-label-container\").each(function (index, element) {\r\n var inputElement = $(element).find(\":input\")[0];\r\n if (inputElement.value) $(element).addClass(\"active\");\r\n else $(element).removeClass(\"active\");\r\n });\r\n }\r\n\r\n //adds the form token to the object for use with [ValidateAntiforgeryToken] attribute\r\n function useToken(data) { \r\n var token = $('input[name=\"__RequestVerificationToken\"]').val();\r\n data.__RequestVerificationToken = token;\r\n }\r\n\r\n return {\r\n clearInvalidFeedback: clearInvalidFeedback,\r\n displayInvalidFeedback: displayInvalidFeedback,\r\n collectFormData: collectFormData,\r\n populateFormWithData: populateFormWithData,\r\n disableFields: disableFields,\r\n enableFields: enableFields,\r\n initializeFloatingLabels: initializeFloatingLabels,\r\n useToken: useToken\r\n };\r\n });\r\n\n","define('common/alertMessage',[\r\n],\r\n function () {\r\n\r\n const alertSelector = \"#alertMessage\";\r\n const allButtonsSelector = alertSelector + \" .modal-footer button\";\r\n const buttonSelector = {\r\n ok: allButtonsSelector + \".ok\",\r\n yes: allButtonsSelector + \".yes\",\r\n no: allButtonsSelector + \".no\"\r\n };\r\n\r\n function show(messageText, okCallback) {\r\n setIcon();\r\n setButtons(\"ok\", okCallback);\r\n displayAlert(messageText);\r\n }\r\n\r\n function info(messageText, okCallback) {\r\n setIcon(\"info\");\r\n setButtons(\"ok\", okCallback);\r\n displayAlert(messageText);\r\n }\r\n\r\n function warning(messageText, okCallback) {\r\n setIcon(\"warning\");\r\n setButtons(\"ok\", okCallback);\r\n displayAlert(messageText);\r\n }\r\n \r\n function error(messageText, okCallback, displayDefaultMessage) {\r\n setIcon(\"error\");\r\n setButtons(\"ok\", okCallback); \r\n if (typeof messageText === 'undefined' || messageText === null) messageText = \"\";\r\n if (typeof displayDefaultMessage === 'undefined') displayDefaultMessage = true;\r\n if (displayDefaultMessage || messageText === \"\") {\r\n messageText = CP.Messages[\"General/Default Error Message\"] + messageText;\r\n }\r\n displayAlert(messageText);\r\n }\r\n\r\n function yesNoQuestion(messageText, yesCallback, noCallback) {\r\n setIcon(\"question\");\r\n setButtons(\"yes-no\", yesCallback, noCallback);\r\n displayAlert(messageText);\r\n }\r\n\r\n function setIcon(iconName) {\r\n $(alertSelector + \" .icons\").addClass(\"d-none\");\r\n $(alertSelector + \" i\").addClass(\"d-none\");\r\n if (iconName) {\r\n $(alertSelector + \" .icons\").removeClass(\"d-none\");\r\n $(alertSelector + \" i.\" + iconName).removeClass(\"d-none\");\r\n }\r\n }\r\n\r\n function setButtons(buttons, callback1, callback2) {\r\n $(allButtonsSelector).addClass(\"d-none\");\r\n $(buttonSelector.ok).off(\"click\");\r\n $(buttonSelector.yes).off(\"click\");\r\n $(buttonSelector.no).off(\"click\");\r\n if (buttons === \"yes-no\") {\r\n $(buttonSelector.yes).removeClass(\"d-none\");\r\n $(buttonSelector.no).removeClass(\"d-none\");\r\n $(buttonSelector.yes).on(\"click\", function () { hideAndCallback(callback1); });\r\n $(buttonSelector.no).on(\"click\", function () { hideAndCallback(callback2); });\r\n }\r\n else {\r\n $(buttonSelector.ok).removeClass(\"d-none\");\r\n $(buttonSelector.ok).on(\"click\", function () { hideAndCallback(callback1); });\r\n }\r\n }\r\n\r\n var alertModal;\r\n\r\n function displayAlert(messageText) {\r\n $(alertSelector + \" .alert-text\").empty().html(messageText);\r\n if (!alertModal) {\r\n // initializing alertModal\r\n var alertElement = document.querySelector(alertSelector);\r\n if (alertElement) {\r\n alertModal = bootstrap.Modal.getOrCreateInstance(alertElement, { backdrop: \"static\", keyboard: false });\r\n if (!alertModal) console.log(\"Alert modal not initialized for \" + alertSelector);\r\n }\r\n else console.log(\"There's no alert modal with selector \" + alertSelector);\r\n }\r\n if (alertModal) alertModal.show();\r\n }\r\n\r\n function hideAndCallback(callback) {\r\n if (callback) $(alertSelector).one(\"hidden.bs.modal\", callback);\r\n if (alertModal) alertModal.hide();\r\n }\r\n\r\n return {\r\n show: show,\r\n info: info,\r\n warning: warning,\r\n error: error,\r\n yesNoQuestion: yesNoQuestion\r\n };\r\n });\r\n\n","define('shoppingCartIcon/miniCart',[\r\n \"common/formUtils\",\r\n \"common/alertMessage\"\r\n],\r\nfunction (formUtils, alertMessage) {\r\n\r\n const miniCartSelector = \".mini-cart\";\r\n const cartIconSelector = \".shopping-cart-icon .the-icon\";\r\n var autoHideTimeout = 0;\r\n\r\n function init() {\r\n $(cartIconSelector).webuiPopover({\r\n trigger: \"click\",\r\n placement: \"bottom-left\",\r\n width: 400,\r\n type: \"html\",\r\n url: \".mini-cart\",\r\n animation: \"fade\",\r\n multi: true,\r\n arrow: false,\r\n closeable: true,\r\n onShow: populateMiniCart\r\n });\r\n }\r\n\r\n function flash() {\r\n // I've tried this by using some of the WebuiPopover methods (https://github.com/sandywalker/webui-popover),\r\n // but none of them worked for changing the options on the fly, so I'm accessing the popover options\r\n // directly from the data object on the cart icon element.\r\n var options = $(cartIconSelector).data(\"plugin_webuiPopover\").options;\r\n\r\n // setting the options for flashing the popover\r\n var pageTop = $(window).scrollTop();\r\n var cartIconPosition = $(cartIconSelector).offset().top + $(cartIconSelector)[0].offsetHeight;\r\n if (pageTop > cartIconPosition) {\r\n // cart icon is out of the view, offset the popover so it's visible\r\n options.offsetTop = pageTop - cartIconPosition;\r\n }\r\n autoHideTimeout = 3000; // auto hide the popup 3 seconds after its content has loaded\r\n\r\n // showing the popover\r\n $(cartIconSelector).webuiPopover(\"show\");\r\n\r\n // resetting the options back to default values\r\n options.offsetTop = 0;\r\n }\r\n\r\n function populateMiniCart() {\r\n spinner(\"show\");\r\n var postData = {};\r\n formUtils.useToken(postData);\r\n\r\n $.ajax({\r\n type: \"POST\",\r\n url: \"/customapi/Order/GetMiniCart\",\r\n dataType: \"json\",\r\n data: postData,\r\n success: function (data) {\r\n if (data.status === \"OK\") {\r\n $(miniCartSelector + \" .mini-cart-content\").empty().html(data.content);\r\n if (data.count > 0) {\r\n $(miniCartSelector + \" .mini-cart-button\").removeClass(\"d-none\");\r\n }\r\n if (autoHideTimeout > 0) {\r\n // hiding the minicart popup after a set timeout\r\n setTimeout(function () {\r\n $(cartIconSelector).webuiPopover(\"hide\");\r\n }, autoHideTimeout);\r\n autoHideTimeout = 0;\r\n }\r\n } else if (data.status === \"ERROR\") {\r\n alertMessage.error(data.message);\r\n }\r\n },\r\n error: function (jq, status, errorThrown) {\r\n alertMessage.error(status + \": \" + errorThrown);\r\n },\r\n complete: function () {\r\n spinner(\"hide\");\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n function spinner(what) {\r\n if (what === \"show\") {\r\n $(miniCartSelector + \" .mini-cart-content\").empty(); // remove previous content\r\n $(miniCartSelector + \" .mini-cart-button\").addClass(\"d-none\"); // hide button\r\n $(miniCartSelector + \" .spinner\").removeClass(\"d-none\"); // show spinner\r\n }\r\n else if (what === \"hide\") {\r\n $(miniCartSelector + \" .spinner\").addClass(\"d-none\");\r\n }\r\n\r\n }\r\n\r\n return {\r\n init: init,\r\n flash: flash\r\n };\r\n});\r\n\n","require([\r\n \"shoppingCartIcon/miniCart\"\r\n],\r\nfunction (miniCart) {\r\n miniCart.init();\r\n});\r\n\ndefine(\"ShoppingCartIcon/main\", function(){});\n\n"]}