UNPKG

jlate

Version:

New Born jlate: javascript framework to build dynamic template

11 lines 2.66 kB
/*! * jlate JavaScript Library v0.0.2 * https://webphonix.com/ * * * Copyright webphonix * Released under the MIT license * Author: Gurudev Kumar * Date: 01-05-2022 */ function load_custom_tag(t){fetch(t).then(t=>{t.text().then(t=>{var e=document.createElement("html");e.innerHTML=t;var n=e.getElementsByTagName("jlate")[0],a=n.getAttribute("name"),r=document.getElementsByTagName(a),o=t;[...r].forEach(t=>{data=t.getAttribute("data"),data=JSON.parse(data);var e=_.template(o),n=e(data);t.insertAdjacentHTML("beforeend",n)})})})}function getParameterByName(t,e=window.location.href){t=t.replace(/[\[\]]/g,"\\$&");var n=new RegExp("[?&]"+t+"(=([^&#]*)|&|#|$)"),a=n.exec(e);return a?a[2]?decodeURIComponent(a[2].replace(/\+/g," ")):"":null}function load_jlate(t,e){const n=document.querySelectorAll(t);_.each(n,t=>{var n=t.getAttribute("type");switch(n){case"template":load_dynamic_template(t,e);break;case"select":load_dropdown(t,e);break;default:console.warn("jlate Type not defined."),load_dynamic_template(t,e)}})}function load_dropdown(t,e){attrs_array=[],0==e.length&&console.warn("jlate select warning: empty options data"),_.each(t.attributes,t=>{"type"!=t.name&&attrs_array.push(t.name+" = '"+t.value+"'")}),attrs=attrs_array.join(" "),options=[],e.map((t,e)=>{options.push(`<option value="${t.value}">${t.text}</option>`)}),options=options.join(""),templateHTML=`<select ${attrs}>${options}</select>`,t.insertAdjacentHTML("afterend",templateHTML),t.remove()}function load_dynamic_template(t,e){let n=t.getAttribute("src");fetch(n).then(n=>{n.text().then(n=>{var a=_.template(n),r=a(e);t.innerHTML="",t.insertAdjacentHTML("beforeend",r)})})}(function(){function t(){n.setAttribute("title","Webphonix")}function e(){n.removeAttribute("title")}Number.prototype.toCurrency=function(){return numberFormatting(this)},String.prototype.toCurrency=function(){return numberFormatting(this)};let n=document.getElementsByClassName("wp-branding")[0];n&&(n.addEventListener("mouseover",t),n.addEventListener("mouseout",e))})();var jlate=jl=$$=function(t){const e={element:document.querySelector(t),jlate:e=>{load_jlate(t,e)},on:(e,n,a)=>{if("jlate"!=e)throw"jlateError: event listener name is not correct";load_jlate(t,n),a(n)},hide:()=>{e.element.style.display="none"},attr:(t,n)=>{null==n?e.element.getAttribute(t):e.element.setAttribute(t,n)}};return e};jlate.url={href:window.location.href,searchKey:function(t){return getParameterByName(t)}},jl.import=jlate.import=function(t){t.forEach(t=>{load_custom_tag(t)})};let numberFormatting=function(t){const e=String(t).replace(/^\d+/,t=>[...t].map((t,e,n)=>(!e||(n.length-e)%3?"":",")+t).join(""));return e};