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>
4 lines
1.2 KiB
Plaintext
4 lines
1.2 KiB
Plaintext
define(['ko','uiClass'],function(ko,Class){'use strict';return Class.extend({initialize:function(){this._super().initObservable();return this;},initObservable:function(){this.errorMessages=ko.observableArray([]);this.successMessages=ko.observableArray([]);return this;},add:function(messageObj,type){var expr=/([%])\w+/g,message;if(!messageObj.hasOwnProperty('parameters')){this.clear();type.push(messageObj.message);return true;}
|
|
message=messageObj.message.replace(expr,function(varName){varName=varName.substr(1);if(!isNaN(varName)){varName--;}
|
|
if(messageObj.parameters.hasOwnProperty(varName)){return messageObj.parameters[varName];}
|
|
return messageObj.parameters.shift();});this.clear();type.push(message);return true;},addSuccessMessage:function(message){return this.add(message,this.successMessages);},addErrorMessage:function(message){return this.add(message,this.errorMessages);},getErrorMessages:function(){return this.errorMessages;},getSuccessMessages:function(){return this.successMessages;},hasMessages:function(){return this.errorMessages().length>0||this.successMessages().length>0;},clear:function(){this.errorMessages.removeAll();this.successMessages.removeAll();}});}); |