Skip to content
{"_id":"682446302894466f244546ec","title":"HolyQuranRecitation","name":"holyQuranRecitation","path":"holyquranrecitation","type":"form","display":"form","tags":[""],"components":[{"label":"Marhum's Name","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"max-text-length","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":true,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"mehrumsName","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","addons":[],"inputType":"text","id":"em9jfg2","defaultValue":"","dataGridLabel":false},{"label":"Columns","columns":[{"components":[{"label":"HTML","tag":"div","className":"","attrs":[{"attr":"","value":""}],"content":"<label class=\"col-form-label field-required\">Number of Request(s)</label><input class=\"form-control counter quantity\" name=\"Number od Requests\" type=\"number\" min=\"1\" value=\"1\" max=\"20\">\n","refreshOnChange":false,"customClass":"","hidden":false,"modalEdit":false,"key":"html","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"htmlelement","input":false,"tableView":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":null,"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"id":"exf7hum","dataGridLabel":false},{"label":"HTML","tag":"div","className":"","attrs":[{"attr":"","value":""}],"content":"<div>\n <div class=\"counter_caption\">\n <span class=\"counter_value\">1</span> x <span class=\"currency_name\">USD</span> <span class=\"unit_price_value\">200</span> (unit price)\n </div>\n <div class=\"my-error formio-errors invalid-feedback\" ref=\"messageContainer\">\n <div class=\"form-text error\" id=\"e-eeaanz-mehrumsName\">\n Counter must be minimum 1 and max 100\n </div>\n </div>\n</div>\n","refreshOnChange":false,"customClass":"unit_price","hidden":false,"modalEdit":false,"key":"html2","tags":[],"properties":{},"conditional":{"show":"","when":"","eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"htmlelement","input":false,"tableView":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":null,"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"id":"eubhqrr","dataGridLabel":false}],"offset":0,"push":0,"pull":0,"size":"md","currentWidth":7,"width":7},{"components":[{"label":"HTML","tag":"div","className":"","attrs":[{"attr":"","value":""}],"content":"<p class=\"total_amount\"><span class=\"product_price\"> </span> <span class=\"currency_name\"> </span> </p>\n","refreshOnChange":false,"customClass":"total_currency_amount","hidden":false,"modalEdit":false,"key":"html1","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"htmlelement","input":false,"tableView":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":null,"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"id":"ec4w8i","dataGridLabel":false}],"offset":0,"push":0,"pull":0,"size":"md","currentWidth":5,"width":5}],"autoAdjust":false,"customClass":"","hidden":false,"modalEdit":false,"key":"columns","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"columns","input":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":false,"refreshOn":"","redrawOn":"","tableView":false,"labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":null,"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"tree":false,"lazyLoad":false,"id":"etq9b5e","dataGridLabel":false},{"label":"Donate","action":"submit","theme":"primary","size":"md","block":false,"leftIcon":"","rightIcon":"","shortcut":"","description":"","tooltip":"","customClass":"","tabindex":"","disableOnInvalid":false,"hidden":false,"autofocus":false,"disabled":false,"tableView":false,"modalEdit":false,"key":"submit","tags":[],"properties":{},"conditional":{"show":"","when":"","eq":"","json":""},"customConditional":"","logic":[],"attributes":{"data-source":"Record_HolyQuranRecitation_Form"},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"saveOnEnter":false,"type":"button","input":true,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","dataGridLabel":true,"labelPosition":"top","errorLabel":"","dbIndex":false,"customDefaultValue":"","calculateValue":"","calculateServer":false,"widget":{"type":"input"},"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"serverOverride":{},"id":"e37339","hideLabel":false},{"label":"Currencies","labelPosition":"top","widget":"choicesjs","placeholder":"","description":"","tooltip":"","customClass":"fo-hidden-field","tabindex":"","hidden":false,"hideLabel":false,"uniqueOptions":false,"autofocus":false,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"dataSrc":"values","data":{"values":[{"label":"USD","value":"USD"},{"label":"AUD","value":"AUD"},{"label":"EUR","value":"EUR"},{"label":"GBP","value":"GBP"},{"label":"CAD","value":"CAD"},{"label":"SGD","value":"SGD"}],"resource":"","json":"","url":"","custom":""},"valueProperty":"","dataType":"","idPath":"id","template":"<span>{{ item.label }}</span>","refreshOn":"","refreshOnBlur":"","clearOnRefresh":false,"searchEnabled":true,"selectThreshold":0.3,"readOnlyValue":false,"customOptions":{},"useExactSearch":false,"persistent":true,"protected":false,"dbIndex":false,"encrypted":false,"clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":false,"onlyAvailableItems":false,"customMessage":"","custom":"","customPrivate":false,"json":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"currencies","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"limit":100,"type":"select","input":true,"prefix":"","suffix":"","showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"fuseOptions":{"include":"score","threshold":0.3},"indexeddb":{"filter":{}},"id":"e8h837k","defaultValue":"USD","redrawOn":"","dataGridLabel":false,"authenticate":false,"ignoreCache":false,"lazyLoad":true,"filter":"","searchDebounce":0.3,"searchField":"","minSearch":0,"selectFields":""},{"label":"Product Id","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"fo-hidden-field","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"productId","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","addons":[],"inputType":"text","id":"ekikcmb","defaultValue":"34","dataGridLabel":false},{"label":"Variant Id","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"fo-hidden-field","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"variantId","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","addons":[],"inputType":"text","id":"enifdz6","defaultValue":"","dataGridLabel":false},{"label":"HandleErrorOnCount","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"fo-hidden-field","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"defaultValue":"valid","persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"valid = input === \"valid\"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"handleErrorOnCount","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","addons":[],"inputType":"text","id":"e5mr5lj","dataGridLabel":false},{"label":"FormLogic","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","displayMask":"","applyMaskOn":"change","allowMultipleMasks":false,"customClass":"fo-hidden-field","tabindex":"","autocomplete":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","truncateMultipleSpaces":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"((VERSION = \"18.0\") => {\r\n const logger = {\r\n log: (...args) => {\r\n if (localStorage.getItem(\"debug\") !== \"true\") return;\r\n console.debug(...args)\r\n }, error: (...args) => {\r\n if (localStorage.getItem(\"debug\") !== \"true\") return;\r\n console.error(...args)\r\n }, info: (...args) => {\r\n if (localStorage.getItem(\"debug\") !== \"true\") return;\r\n console.log(`%cℹ️ ${args.join(', ')}`, 'color: blue; font-weight: bold;');\r\n }\r\n }\r\n const runOnce = (config) => {\r\n instance.root.scriptRunOnced = instance.root.scriptRunOnced || false;\r\n if (!instance.root.scriptRunOnced) {\r\n instance.root.scriptRunOnced = true;\r\n instance.root.config = config;\r\n logger.info(`* FM :: version = ${VERSION}`);\r\n logger.info(`* FM :: Form > Id = ${form._id}, Title = ${form.title}`);\r\n logger.info(`* FM :: Product-Id = ${data.productId}`);\r\n\r\n return {counterMin: config.counterMin, counterMax: config.counterMax};\r\n }\r\n return {counterMin: instance.root.config.counterMin, counterMax: instance.root.config.counterMax};\r\n }\r\n data = data || {}\r\n logger.log(\"* FM :: data = \", JSON.stringify(data));\r\n\r\n const BASE_URL = 'https://akhyar.org/wp-json/brains/v1';\r\n const MAX_TEXT_LENGTH = 28;\r\n const prodPrice = document.querySelector('.product_price');\r\n const unitPrice = document.querySelector('.unit_price_value');\r\n const finalAmount = document.querySelector('.total_amount');\r\n const counter = document.querySelector('.counter');\r\n const counterCaption = document.querySelector('.counter_caption');\r\n const counterValueElem = document.querySelector('.counter_value');\r\n const maxTextLength = document.querySelector('.max-text-length');\r\n\r\n const handleErrorOnCount = instance.root.getComponent(\"handleErrorOnCount\");\r\n //const totalAmount = instance.root.getComponent(\"totalAmount\");\r\n const variantIdComponent = instance.root.getComponent('variantId');\r\n\r\n const {counterMin, counterMax} = runOnce({\r\n counterMin: counter ? counter.getAttribute(\"min\") || 1 : 1,\r\n counterMax: counter ? counter.getAttribute(\"max\") : 20\r\n });\r\n\r\n const container = document.querySelector('.formio-component-htmlelement');\r\n let labelText = \"Count\";\r\n let counterErrMsg;\r\n if (container) {\r\n const label = container.querySelector('.col-form-label');\r\n if (label) {\r\n labelText = label.textContent.trim();\r\n logger.log(\"Text here: \",labelText);\r\n } \r\n }\r\n counterErrMsg = `${labelText} must be min ${counterMin} and max ${counterMax}`;\r\n\r\n const currencyElem = document.querySelectorAll('.currency_name');\r\n const productid = data.productId;\r\n\r\n let currency = data.currencies || \"USD\";\r\n currency = currency.toUpperCase();\r\n\r\n const onCounterChange = function () {\r\n const product_price = Number(unitPrice.innerText || 0);\r\n const counterValue = Number(counter.value || 1);\r\n logger.log(\"* FM :: \", product_price, counterValue);\r\n counterValueElem.innerText = counterValue;\r\n prodPrice.innerText = product_price * counterValue;\r\n };\r\n\r\n const showHideError = function (e, show, message) {\r\n const myErrorElem = e.target.parentNode.parentNode.parentNode.querySelector(\".my-error\");\r\n if (!myErrorElem) {\r\n logger.log(\"* FM :: error comp not found\");\r\n return;\r\n }\r\n if (message) {\r\n myErrorElem.innerHTML = `<div class=\"form-text error\">${message}</div>`;\r\n }\r\n if (show) {\r\n myErrorElem.style.display = \"block\";\r\n e.target.classList.add(\"is-invalid\");\r\n handleErrorOnCount.setValue(\"error\");\r\n } else {\r\n myErrorElem.style.display = \"none\";\r\n e.target.classList.remove(\"is-invalid\");\r\n handleErrorOnCount.setValue(\"valid\");\r\n }\r\n }\r\n\r\n //showHideError({target: counter}, false);\r\n const onRefresh = function (e) {\r\n logger.log(\"* FM :: onRefresh \", Number(e.target.value), counterMax);\r\n\r\n if (currencyElem) currencyElem.forEach(el => el.innerText = currency);\r\n\r\n if (data.showFinalAmountWhenVariantIsSelected) {\r\n const show = variantIdComponent.getValue() !== '';\r\n if (finalAmount) finalAmount.style.display = show ? \"block\" : \"none\";\r\n if (counterCaption) counterCaption.style.display = show ? \"block\" : \"none\";\r\n }\r\n\r\n // if (!e.target.value || (e.target.value && Number(e.target.value) > Number(counterMax))) {\r\n // logger.log(\"* FM :: no counter value\");\r\n // return;\r\n // }\r\n\r\n let isValid = true;\r\n if (!e.target.value || Number(e.target.value) < Number(counterMin) || (counterMax && Number(e.target.value) > Number(counterMax))) {\r\n e.target.value = e.target.value.substring(0, counterMax.length)\r\n isValid = false;\r\n } else if (e.key === '0' && Number(e.target.value) < Number(counterMin)) {\r\n isValid = false;\r\n } else if (Number(e.target.value + e.key) > Number(counterMax)) {\r\n isValid = false;\r\n }\r\n if (!isValid) {\r\n showHideError(e, true, counterErrMsg);\r\n } else {\r\n showHideError(e, false);\r\n }\r\n\r\n if (isValid) {\r\n onCounterChange();\r\n }\r\n };\r\n\r\n const bindCounterEvents = () => {\r\n counter.onchange = onCounterChange;\r\n counter.onkeyup = function (e) {\r\n if (!e.target.value) {\r\n showHideError(e, true, counterErrMsg);\r\n }\r\n }\r\n counter.onkeydown = function (e) {\r\n if (['.', '+', '-', 'e'].includes(e.key)) return false;\r\n if (e.key === 'Backspace') {\r\n if (e.target.value.length === 1) {\r\n showHideError(e, true, counterErrMsg);\r\n }\r\n return true;\r\n }\r\n showHideError(e, false, counterErrMsg);\r\n if (e.key === '0' && Number(e.target.value) < Number(counterMin)) {\r\n showHideError(e, true, counterErrMsg);\r\n return false;\r\n }\r\n // if (Number(e.target.value + e.key) > Number(counterMax)) {\r\n // showHideError(e, true, counterErrMsg);\r\n // return false;\r\n // }\r\n }\r\n counter.oninput = function (e) {\r\n if (!e.target.value || Number(e.target.value) < Number(counterMin) || (counterMax && Number(e.target.value) > Number(counterMax))) {\r\n showHideError(e, true, counterErrMsg);\r\n e.target.value = e.target.value.substring(0, counterMax.length)\r\n } else {\r\n showHideError(e, false, counterErrMsg);\r\n }\r\n onCounterChange();\r\n };\r\n ['onpaste', 'oncopy', 'onselect'].forEach(method => {\r\n counter[method] = function (e) {\r\n e.preventDefault();\r\n };\r\n })\r\n }\r\n\r\n const setVariantId = (apidata) => {\r\n const key = Object.keys(data).filter((x) => {\r\n if (typeof (data[x]) === \"object\" && data[x].type === 'variant') return true;\r\n if (data[x] && data[x].charAt && data[x].charAt(0) === '{') return true;\r\n }).map((x) => {\r\n if (data[x] && data[x].charAt && data[x].charAt(0) === '{') {\r\n let jsonStr = data[x].replace(/'/g, '\"');\r\n const nData = JSON.parse(jsonStr);\r\n return `${nData.key}:${nData.value}`.toLowerCase();\r\n }\r\n return `${data[x].key}:${data[x].value}`.toLowerCase();\r\n }).sort().join('|');\r\n\r\n logger.log(\"* FM :: key = \", key);\r\n\r\n const variant = apidata.find(e => {\r\n return e.key === key;\r\n });\r\n\r\n if (!variant) {\r\n logger.info(\"* FM :: variant not found\");\r\n variantIdComponent.setValue('');\r\n return;\r\n }\r\n\r\n const variantId = variant.variant_id;\r\n logger.log(\"* FM :: variant = \", variant, variantId);\r\n\r\n if (unitPrice) unitPrice.innerText = variant.pricing_data[currency];\r\n\r\n if (prodPrice && counter) {\r\n const counterValue = Number(counter.value);\r\n prodPrice.innerText = counterValue * variant.pricing_data[currency];\r\n }\r\n\r\n if (variantIdComponent) {\r\n variantIdComponent.setValue(variantId, {fromSubmission: true});\r\n }\r\n if (variantId && data.showFinalAmountWhenVariantIsSelected) {\r\n finalAmount.style.display = \"block\";\r\n counterCaption.style.display = \"block\";\r\n }\r\n };\r\n\r\n const fetchVariantData = () => {\r\n logger.log(\"* FM :: fetching variant data\");\r\n const cahced_data = instance.root.variants_data;\r\n if (cahced_data) {\r\n logger.log(\"* FM :: cache detected\");\r\n return Promise.resolve(cahced_data);\r\n }\r\n logger.log(\"* FM :: cache detected\");\r\n return fetch(`${BASE_URL}/products/${productid}/variants`)\r\n .then(response => response.json()).then(apidata => {\r\n return apidata.map(d => {\r\n const vdata = d.variant_data;\r\n const v2 = Object.keys(vdata).map((key) => {\r\n return `${key}:${vdata[key]}`.toLocaleLowerCase();\r\n }).sort().join('|');\r\n logger.log(\"* FM :: keys \", v2);\r\n return {...d, key: v2};\r\n });\r\n });\r\n }\r\n\r\n fetchVariantData().then((apidata) => {\r\n logger.log(\"* FM :: \", apidata);\r\n instance.root.variants_data = apidata;\r\n\r\n setVariantId(apidata);\r\n }).catch((err) => {\r\n logger.log(\"* FM :: ERROR => in fetching variant data\")\r\n // delete instance.root.variants_data;\r\n }).then(() => {\r\n // setTimeout(() => {\r\n // const submitBtn = instance.root.getComponent('submit')\r\n // submitBtn.refs.button.disabled = false; \r\n // }, 300);\r\n });\r\n\r\n if (counter) {\r\n // setTimeout(() => {\r\n onRefresh({target: counter})\r\n // }, 0);\r\n bindCounterEvents();\r\n }\r\n\r\n if (maxTextLength) {\r\n maxTextLength.oninput = (e) => {\r\n if (e.target.value.length > MAX_TEXT_LENGTH) {\r\n e.target.value = e.target.value.substring(0, MAX_TEXT_LENGTH)\r\n }\r\n }\r\n }\r\n\r\n const logicToResetSearchField = () => {\r\n logger.log('* FM :: logicToResetSearchField');\r\n const logicToClearSearchField = (comp) => {\r\n const searchInput = comp.element?.querySelector('input');\r\n searchInput.addEventListener('blur', () => {\r\n logger.log('* FM :: Choices input blurred:', comp.key);\r\n comp.choices.input.value = '';\r\n comp.choices._handleSearch('', true);\r\n\r\n setTimeout(logicToResetSearchField, 600);\r\n comp.triggerRedraw();\r\n });\r\n }\r\n instance.root.getComponents().forEach(comp => {\r\n if ((!comp.columns && !comp.choices) || (comp.choices && !comp.choices.input)) return;\r\n\r\n if (comp.columns) {\r\n comp.getComponents().forEach((subComp) => {\r\n if (!subComp.choices || (subComp.choices && !subComp.choices.input)) return;\r\n logicToClearSearchField(subComp);\r\n })\r\n } else {\r\n logicToClearSearchField(comp);\r\n }\r\n });\r\n }\r\n logicToResetSearchField();\r\n})();\r\n","calculateServer":false,"allowCalculateOverride":false,"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"validateWhenHidden":false,"errorLabel":"","errors":"","key":"logicForm","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","serverOverride":{},"input":true,"refreshOn":"","addons":[],"inputType":"text","id":"ev3b8ir","defaultValue":"","dataGridLabel":false},{"label":"Show final amount when variant is selected","description":"","tooltip":"","shortcut":"","inputType":"checkbox","customClass":"fo-hidden-field","tabindex":"","hidden":false,"hideLabel":false,"autofocus":false,"disabled":false,"tableView":false,"modalEdit":false,"persistent":true,"protected":false,"dbIndex":false,"encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"serverOverride":{},"validate":{"required":false,"customMessage":"","custom":"","customPrivate":false,"json":"","strictDateValidation":false,"multiple":false,"unique":false},"validateWhenHidden":false,"errorLabel":"","errors":"","key":"showFinalAmountWhenVariantIsSelected","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"checkbox","input":true,"placeholder":"","prefix":"","suffix":"","multiple":false,"unique":false,"refreshOn":"","labelPosition":"right","widget":null,"validateOn":"change","showCharCount":false,"showWordCount":false,"allowMultipleMasks":false,"addons":[],"id":"ehd7w9","defaultValue":true,"dataGridLabel":true,"value":"","name":""}],"pdfComponents":[],"access":[{"type":"read_all","roles":["681af7ed317bacb5e067c4ca","681af7ed317bacb5e067c4dd","681af7ed317bacb5e067c4e9"]}],"submissionAccess":[],"created":"2025-05-14T07:28:48.193Z","modified":"2026-02-11T06:14:58.487Z","machineName":"holyQuranRecitatio"}
Holy Quran Recitation
for Marhumeen
After passing away, a person can no longer earn the reward of reciting the Holy Quran. However, their loved ones can gift them this reward, easing their trials and bringing divine mercy. Ahlulbayt (as) emphasized that reciting the Quran for the deceased benefits them greatly . Our foundation arranges for the complete recitation of the Quran on behalf of Marhumeen , bringing blessings and forgiveness for their souls.
The Holy Prophet (saw) says that: “The dead man is like a person drowning who helplessly holds on to any help given to him by his father or brother or friend and he clings on to these and loves these acts more than the world itself, and the gifts for the dead are charity and praying for their forgiveness.”
In the blessed words of the Holy Prophet Muhammad (saw)
How it Works
With every recitation, we carry your love and prayers to your M arhum as the Quran is recited in their name with utmost sincerity and respect.
Change Starts With You
A pure intention can light up lives across continents . Through Akhyar, your kindness becomes a wave of hope that uplifts, empowers, and transforms.
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
You can familiarize with our Privacy Policy
Strictly necessary cookies allow core website functionality such as user login and account management. The website cannot be used properly without strictly necessary cookies.
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
The technical storage or access that is used exclusively for statistical purposes.
The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
These cookies are used to see how visitors use the website, e.g. analytics and may be used to build a profile of visitor interests or show relevant ads on other websites.
Manage consent