Skip to content
{"_id":"693fd69060d3ec406ca10bbf","title":"RajabSpecialMeals","name":"rajabSpecialMeals","path":"rajabspecialmeals","type":"form","display":"form","tags":[""],"components":[{"label":"Columns","columns":[{"components":[{"label":"HTML","tag":"div","className":"","attrs":[{"attr":"","value":""}],"content":"<label class=\"col-form-label field-required\">Quantity</label><input class=\"form-control counter quantity\" name=\"Quantity\" type=\"number\" min=\"1\" value=\"1\" max=\"20\">\n","refreshOnChange":false,"customClass":"","hidden":false,"modalEdit":false,"key":"html","tags":[],"properties":{},"conditional":{"show":"","when":"","eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"htmlelement","input":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"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":{},"id":"eeijpio","dataGridLabel":false},{"label":"HTML","tag":"div","className":"","attrs":[{"attr":"","value":""}],"content":"<div>\n <div class=\"counter_caption\"><span class=\"counter_value\">1</span> x <span class=\"currency_name\">USD</span> <span class=\"unit_price_value\"> </span> (unit price)</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":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"htmlelement","input":false,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"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":{},"id":"evtqr9q","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,"placeholder":"","prefix":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"clearOnHide":true,"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":{},"id":"ecfko4v","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":"e7fe5ni","dataGridLabel":false},{"label":"Donate","action":"submit","theme":"primary","size":"md","block":false,"leftIcon":"","rightIcon":"","shortcut":"","description":"","tooltip":"","customClass":"","tabindex":"","disableOnInvalid":true,"hidden":false,"autofocus":false,"disabled":false,"tableView":false,"modalEdit":false,"key":"submit","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{"data-source":"Record_RajabSpecialMeals_Form"},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"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":"egllgje","saveOnEnter":false,"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","defaultValue":"USD","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.value }}</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":"","when":"","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":"eqvh28g","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":"e42gm5h","defaultValue":"535","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":"ejnlppi","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,"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":"eo66zr","defaultValue":"valid","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 = \"17.9\") => {\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//api/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 counterErrMsg = `Count must be minimum ${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})();","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":"logicForm","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":"enirtk","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,"defaultValue":true,"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":"","when":"","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":"egh9vca","dataGridLabel":true,"value":"","name":""}],"pdfComponents":[],"access":[{"type":"read_all","roles":["681af7ed317bacb5e067c4ca","681af7ed317bacb5e067c4dd","681af7ed317bacb5e067c4e9"]}],"submissionAccess":[],"created":"2025-12-15T09:36:16.748Z","modified":"2026-01-27T11:53:15.963Z","machineName":"rajabSpecialMeals"}
Giving in the month of Rajab
In the blessed month of Rajab, giving charity and feeding fellow Mumineen is a highly encouraged deed. The Masumeen (as) remind us that such acts of generosity carry immense reward and open doors of divine mercy.
“Whoever gives charity in the month of Rajab, sincerely seeking the pleasure of Allah, Allah will honor him on the Day of Judgement with a reward in Paradise that no eye has ever seen, no ear has ever heard, and no heart has ever imagined.” Imam Ali (as) – Fada’il al-Ashhur al-Thalatha, p38
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