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>
5 lines
3.3 KiB
Plaintext
5 lines
3.3 KiB
Plaintext
define(['jquery','jquery-ui-modules/widget'],function($){'use strict';$.widget('mage.productListToolbarForm',{options:{modeControl:'[data-role="mode-switcher"]',directionControl:'[data-role="direction-switcher"]',orderControl:'[data-role="sorter"]',limitControl:'[data-role="limiter"]',mode:'product_list_mode',direction:'product_list_dir',order:'product_list_order',limit:'product_list_limit',page:'p',modeDefault:'grid',directionDefault:'asc',orderDefault:'position',limitDefault:'9',url:'',formKey:'',post:false},_create:function(){this._bind($(this.options.modeControl,this.element),this.options.mode,this.options.modeDefault);this._bind($(this.options.directionControl,this.element),this.options.direction,this.options.directionDefault);this._bind($(this.options.orderControl,this.element),this.options.order,this.options.orderDefault);this._bind($(this.options.limitControl,this.element),this.options.limit,this.options.limitDefault);},_bind:function(element,paramName,defaultValue){if(element.is('select')){element.on('change',{paramName:paramName,'default':defaultValue},$.proxy(this._processSelect,this));}else{element.on('click',{paramName:paramName,'default':defaultValue},$.proxy(this._processLink,this));}},_processLink:function(event){event.preventDefault();this.changeUrl(event.data.paramName,$(event.currentTarget).data('value'),event.data.default);},_processSelect:function(event){this.changeUrl(event.data.paramName,event.currentTarget.options[event.currentTarget.selectedIndex].value,event.data.default);},getUrlParams:function(){var decode=window.decodeURIComponent,urlPaths=this.options.url.split('?'),urlParams=urlPaths[1]?urlPaths[1].split('&'):[],params={},parameters,i;for(i=0;i<urlParams.length;i++){parameters=urlParams[i].split('=');params[decode(parameters[0])]=parameters[1]!==undefined?decode(parameters[1].replace(/\+/g,'%20')):'';}
|
|
return params;},getCurrentLimit:function(){return this.getUrlParams()[this.options.limit]||this.options.limitDefault;},getCurrentPage:function(){return this.getUrlParams()[this.options.page]||1;},changeUrl:function(paramName,paramValue,defaultValue){var urlPaths=this.options.url.split('?'),baseUrl=urlPaths[0],paramData=this.getUrlParams(),currentPage=this.getCurrentPage(),form,params,key,input,formKey,newPage;if(currentPage>1&¶mName===this.options.limit){newPage=Math.floor(this.getCurrentLimit()*(currentPage-1)/ paramValue)+1;if(newPage>1){paramData[this.options.page]=newPage;}else{delete paramData[this.options.page];}}
|
|
paramData[paramName]=paramValue;if(this.options.post){form=document.createElement('form');params=[this.options.mode,this.options.direction,this.options.order,this.options.limit];for(key in paramData){if(params.indexOf(key)!==-1){input=document.createElement('input');input.name=key;input.value=paramData[key];form.appendChild(input);delete paramData[key];}}
|
|
formKey=document.createElement('input');formKey.name='form_key';formKey.value=this.options.formKey;form.appendChild(formKey);paramData=$.param(paramData);baseUrl+=paramData.length?'?'+paramData:'';form.action=baseUrl;form.method='POST';document.body.appendChild(form);form.submit();}else{if(paramValue==defaultValue){delete paramData[paramName];}
|
|
paramData=$.param(paramData);location.href=baseUrl+(paramData.length?'?'+paramData:'');}}});return $.mage.productListToolbarForm;}); |