Todos los componentes del NIVEL 2 ya están implementados correctamente: - ✅ Notification Bar (#49) - ✅ Navbar (#50) - ✅ Hero Section (#51) - ✅ Sidebar (#52) - ✅ Footer (#53) Solo se actualizó notification-bar.css para usar variables CSS. Próximo paso: NIVEL 3 (Refinamientos visuales) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
14 lines
3.9 KiB
Plaintext
14 lines
3.9 KiB
Plaintext
define(['jquery','domReady','consoleLogger','Magento_PageCache/js/form-key-provider','jquery-ui-modules/widget','mage/cookies'],function($,domReady,consoleLogger,formKeyInit){'use strict';function generateRandomString(chars,length){var result='';length=length>0?length:1;while(length--){result+=chars[Math.round(Math.random()*(chars.length-1))];}
|
|
return result;}
|
|
$.fn.comments=function(){var elements=[],contents,elementContents;(function lookup(element){var iframeHostName;if($(element).prop('tagName')==='IFRAME'){iframeHostName=$('<a>').prop('href',$(element).prop('src')).prop('hostname');if(window.location.hostname!==iframeHostName){return[];}}
|
|
contents=function(elem){return $.map(elem,function(el){try{return el.nodeName.toLowerCase()==='iframe'?el.contentDocument||(el.contentWindow?el.contentWindow.document:[]):$.merge([],el.childNodes);}catch(e){consoleLogger.error(e);return[];}});};elementContents=contents($(element));$.each(elementContents,function(index,el){switch(el.nodeType){case 1:lookup(el);break;case 8:elements.push(el);break;case 9:lookup($(el).find('body'));break;}});})(this);return elements;};$.widget('mage.formKey',{options:{inputSelector:'input[name="form_key"]',allowedCharacters:'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',length:16},_create:function(){var formKey=$.mage.cookies.get('form_key'),options={secure:window.cookiesConfig?window.cookiesConfig.secure:false};if(!formKey){formKey=generateRandomString(this.options.allowedCharacters,this.options.length);$.mage.cookies.set('form_key',formKey,options);}
|
|
$(this.options.inputSelector).val(formKey);}});$.widget('mage.pageCache',{options:{url:'/',patternPlaceholderOpen:/^ BLOCK (.+) $/,patternPlaceholderClose:/^ \/BLOCK (.+) $/,versionCookieName:'private_content_version',handles:[]},_create:function(){var placeholders,version=$.mage.cookies.get(this.options.versionCookieName);if(!version){return;}
|
|
placeholders=this._searchPlaceholders(this.element.comments());if(placeholders&&placeholders.length){this._ajax(placeholders,version);}},_searchPlaceholders:function(elements){var placeholders=[],tmp={},ii,len,el,matches,name;if(!(elements&&elements.length)){return placeholders;}
|
|
for(ii=0,len=elements.length;ii<len;ii++){el=elements[ii];matches=this.options.patternPlaceholderOpen.exec(el.nodeValue);name=null;if(matches){name=matches[1];tmp[name]={name:name,openElement:el};}else{matches=this.options.patternPlaceholderClose.exec(el.nodeValue);if(matches){name=matches[1];if(tmp[name]){tmp[name].closeElement=el;placeholders.push(tmp[name]);delete tmp[name];}}}}
|
|
return placeholders;},_replacePlaceholder:function(placeholder,html){var startReplacing=false,prevSibling=null,parent,contents,yy,len,element;if(!placeholder||!html){return;}
|
|
parent=$(placeholder.openElement).parent();contents=parent.contents();for(yy=0,len=contents.length;yy<len;yy++){element=contents[yy];if(element==placeholder.openElement){startReplacing=true;}
|
|
if(startReplacing){$(element).remove();}else if(element.nodeType!=8){prevSibling=element;}
|
|
if(element==placeholder.closeElement){break;}}
|
|
if(prevSibling){$(prevSibling).after(html);}else{$(parent).prepend(html);}
|
|
$(parent).trigger('contentUpdated');},_ajax:function(placeholders,version){var ii,data={blocks:[],handles:this.options.handles,originalRequest:this.options.originalRequest,version:version};for(ii=0;ii<placeholders.length;ii++){data.blocks.push(placeholders[ii].name);}
|
|
data.blocks=JSON.stringify(data.blocks.sort());data.handles=JSON.stringify(data.handles);data.originalRequest=JSON.stringify(data.originalRequest);$.ajax({url:this.options.url,data:data,type:'GET',cache:true,dataType:'json',context:this,success:function(response){var placeholder,i;for(i=0;i<placeholders.length;i++){placeholder=placeholders[i];if(response.hasOwnProperty(placeholder.name)){this._replacePlaceholder(placeholder,response[placeholder.name]);}}}});}});domReady(function(){formKeyInit();});return{'pageCache':$.mage.pageCache,'formKey':$.mage.formKey};}); |