Customizar Loading mask

Descripción

Tapestry 5.4 viene con una loading-mask que se muestra mientras se descarga y ejecuta todo el javascript relativo a la página. Por defecto, este loading-mask es muy útil, sin embargo puede quedar algo "feo" en ciertos proyectos. Con un poco de css podemos cambiar por completo su aspecto y dejar el comportamiento que trae Tapestry por defecto.

Si lo que deseas es deshabilitar la loading-mask, tapestry incluye un símbolo para poder hacerlo:

public class AppModule {

	public static void contributeApplicationDefaults(
	        final MappedConfiguration<String, Object> configuration) {
		
		configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en,es");
		...
		configuration.add(SymbolConstants.ENABLE_PAGELOADING_MASK, false);
		...

	}
	
}

Demo

Para este ejemplo se muestra la loading mask durante 3 segundos. Puedes pulsar sobre los siguientes botones para verla con más detenimiento. El segundo enlace muestra ligada a un mixin.

Mostrar loading-mask durante 3 segundosInvocar a operación costosa y mostrar la loading-mask mediante un mixin

Códigos fuente

.pageloading-mask {
   animation-name: none;
   -webkit-animation-name: none;
   display: table;
   height: 100%;
   width: 100%;
   background-color: rgba(155, 155, 155, 0.7);
   opacity: 1;
}

.pageloading-mask div {
   display: table-cell;
   vertical-align: middle;
   text-align: center;
   width: 100px;
   height: 100px;
   background-image: none;
}

.pageloading-mask div:before {
   content: "";
   width: 122px;
   height: 122px;
   position: absolute;
   left: 0;
   right: 0;
   margin: 0 auto;
   z-index: 99;
   margin-top: -75px;
   border: 1px solid #fb961b;
   border-top-color: white;
   border-radius: 50%;
   animation: spin 1s infinite linear;
}

@keyframes spin { 
   0% {
      transform: rotate(0deg);
   }
   100%{
      transform: rotate(360deg);
   }
}

body.en .pageloading-mask div:after {
   content: "Wait please...";
}

body.es .pageloading-mask div:after {
   content: "Espera por favor...";
}

.pageloading-mask div:after {
/*    content: "Generic text for all languages or empty for no-text"; */
   margin: 0 auto;
   position: absolute;
   text-align: center;
   left: 0;
   height: 160px;
   right: 0;
   padding-top: 128px;
   width: 140px;
   background-color: white;
   border-radius: 15px;
   background-image: url('../img/loading-mask-logo.png');
   background-repeat: no-repeat;
   background-position: center 9px;
   background-size: 114px 114px;
   margin-top: -80px;
}