Normativa front guia implementacion themes en distintos ámbitos Vigente Versión: 1.0.1Estado: ACTIVOEntrada en vigor desde:Obligado cumplimiento desde: Sept-2023 | Normativa front guia implementacion themes en distintos ámbitos PRE-RELEASE Versión: 1.0.0Estado: RELEASEEntrada en vigor desde:Obligado cumplimiento desde: - |
---|
Las normas expuestas son de obligado cumplimiento. La STIC podrá estudiar los casos excepcionales los cuales serán gestionados a través de los responsables del proyecto correspondiente y autorizados por el Área de Gobernanza de la STIC. Asimismo cualquier aspecto no recogido en estas normas deberá regirse en primera instancia por las guías técnicas correspondientes al esquema nacional de seguridad y esquema nacional de interoperabilidad según correspondencia y en su defecto a los marcos normativos y de desarrollo software establecidos por la Junta de Andalucía, debiendo ser puesto de manifiesto ante la STIC.
La STIC se reserva el derecho a la modificación de la norma sin previo aviso, tras lo cual, notificará del cambio a los actores implicados para su adopción inmediata según la planificación de cada proyecto.
En el caso de que algún actor considere conveniente y/o necesario el incumplimiento de alguna de las normas y/o recomendaciones, deberá aportar previamente la correspondiente justificación fehaciente documentada de la solución alternativa propuesta, así como toda aquella documentación que le sea requerida por la STIC para proceder a su validación técnica.
Contacto Arquitectura: l-arquitectura.stic@juntadeandalucia.es
Los cambios en la normativa vendrán acompañados de un registro de las modificaciones. De este modo se podrá realizar un seguimiento y consultar su evolución. Ordenándose de mas recientes a menos recientes, prestando especial cuidado a las cabeceras de la tablas dónde se indican las fechas de entrada en vigor y versión.
Esta guía técnica aporta información sobre cómo realizar el desarrollo de los distintos themes en los ámbitos establecidos:
Los nombres de los componentes, deberían seguir el siguiente esquema:
<area_de_negocio> se sustituirá por las siguientes letras:
De manera general se define un sistema de diseño como un conjunto de reglas y normas que el equipo de una organización establece internamente y que les permite trabajar de forma alineada a través de un lenguaje común.
El Sistema de Diseño STIC proporciona pautas, componentes y plantillas para el desarrollo homogéneo de las aplicaciones del SAS.
El Sistema de Diseño STIC se basa en las directivas de Material Design, adaptando sus pautas a las normativas a seguir en el SAS para el desarrollo de aplicaciones web.
Material Design v2 es un sistema de diseño creado por Google en distintos lenguajes, pero el que nos impacta es la parte web. Ofrece una serie de componentes e indicaciones sobre el diseño y personalización de estos, a cerca de su entorno, interacción, características propias de los componentes... y todo esto trasladado a la visión de UX/UI para mejorar la interactuación con el usuario en nuestras aplicaciones, intentando equilibrar el impacto visual entre todas las aplicaciones del SAS.
Los objetivos del Sistema de Diseño STIC son los siguientes:
El Sistema de Diseño STIC basa su construcción en el paradigma Atomic Design. Para más información acerca del paradigma Atomic Design puede consultar su sección dentro de nuestra normativa de front.
El theme es la instancia técnica del sistema de diseño. Mediante el mismo se logra la homogeneización visual de todos los componentes, pudiéndose extender para adaptarlo a nuestros diseños particulares.
El principal objetivo del theme es definir una api de diseño y desarrollo con la cual lograr que todas las aplicaciones/componentes creados en la STIC tengan una visualización homogénea.
Como se ha visto anteriormente en punto 1, se tendrán tres tipos de componentes theme:
typo | Carpeta en la que se incluyen todas los ficheros que incluyen variables para cada elemento tipográfico (p.e. typo.body.css.ts) |
color | Fichero que incluye todas las variables relacionadas con los colores usados en el theme |
shape | Fichero que incluye todas las variables relacionadas con las formas usadas en el theme |
state | Fichero que incluye todas las variables relacionadas con los estados usados en el theme |
shared | Fichero que incluye todas las variables compartidas por los distintos ficheros CSS que se usan en el theme |
Theme STIC nos proporciona una serie de variables custom CSS a través de su API con los que homogeneizar los estilos de todos los componentes/aplicaciones desarrollados.
El theme STIC se organiza en una serie de carpetas y archivos para facilitar su comprensión y desarrollo, y cuya estructura es la siguiente:
De dicha estructura, destacan l@s siguientes carpetas/ficheros:
Definición | ||||
---|---|---|---|---|
src | Carpeta que contiene todo el código fuente del theme | |||
css | Carpeta que contiene todos los ficheros referentes a las variables custom CSS del theme | |||
typo | Carpeta en la que se incluyen todas los ficheros que incluyen variables para cada elemento tipográfico (p.e. typo.body.css.ts) | |||
typo.bundle.css.ts | Fichero que incluye la exportación de manera única de todos los elementos tipográficos | |||
typo.base.css.ts | Fichero que actúa como base de todos los elementos tipográficos disponibles, y cuyas propiedades son comunes a todos ellos. | |||
color.css.ts | Fichero que incluye todas las variables relacionadas con los colores usados en el theme | |||
shape.css.ts | Fichero que incluye todas las variables relacionadas con las formas usadas en el theme | |||
state.css.ts | Fichero que incluye todas las variables relacionadas con los estados usados en el theme | |||
shared.css.ts | Fichero que incluye todas las variables compartidas por los distintos ficheros CSS que se usan en el theme | |||
WcTheme.ts | Incluye la clase exportable del theme | |||
stories | Carpeta que contiene los ficheros |
color.css.ts (Colores)
La aplicación de un modelo de color para el theme ha pasado por varias fases. En una primera fase se aplicó el modelo de color Hexadecimal. Posteriormente se pasó al modelo de color RGBA ya que se necesitaba aplicar transparencia sobre los colores, cosa que con el modelo hexadecimal no se podía. En una tercera fase se decidió usar el modelo de color HSL frente al modelo RGBA ya que HSL nos permite la creación de colores sólidos aplicando una opacidad (mediante la luminosidad), mientras que con RGBA no se podía lograr esto ya que la aplicación de la opacidad sobre el color en RGBA se logra mediante la transparencia, no obteniendo colores sólidos. [hsl( hue , saturation , lightness )]. Puede encontrar más información en normativa → sección theming → color.
En este fichero hay definidos dos bloques:
shape.css.ts (Formas)
Este fichero incluye un bloque con las variables usadas en el ámbito de las formas del theming, cada una de ellas usadas para las distintas categorías establecidas dentro de esta parte (más información en normativa → sección theming → formas).
state.css.ts (Formas)
Este fichero incluye un bloque con las variables custom css usadas en el ámbito de los estados del theming, organizados por cada uno de los estados disponibles [Disabled, Hover, Focus, Selected, Activated, Pressed, Dragged] (más información en normativa → sección theming → estados).
Las variables correspondientes al color (estado disabled) se definen de la misma forma que las definidas en el archivo color.css.ts, mientras que las variables correspondientes a la elevación usan las variables creadas en fichero shared.css.ts dentro del bloque de estados, y correspondientes a los distintos dp (elevation - shadows) definidos.
Carpeta typo (Tipografías)
En la tabla anterior se ha hecho referencia a dos ficheros concretos que son la base de esta carpeta, pero en esta sección se va a comentar sobre los distintos bloques que forman parte de los ficheros de los distintos elementos tipográficos (más información en normativa → sección theming → tipografías).
Se tienen dos casos de usos posibles:
shared.css.ts (Compartidos)
Este fichero incluye varios bloques con las variables custom css usadas en los otros ficheros, de modo de se podrán compartir entre los mis mos :
En esta sección se describirán los diferentes usos del theme según su utilización en una aplicación o componente, distinguiendo los casos de usos en los mismos, y explicando su instalación y configuración en cada uno de ellos.
1) Casos de uso : Se distinguen tres casos de uso del theme dentro de una aplicación:
Caso de uso 1: Aplicaciones desarrolladas solo con web components | ||
---|---|---|
En la aplicaciones desarrolladas solo con web components solo se deberá realizar la carga del theme (Variables Custom CSS) dentro de la aplicación. El consumo de dichas variables se realizará directamente en los componentes. | ||
Paso | Descripción | Enlace |
P1 | Instalación del theme | |
P2 | Carga del theme |
Caso de uso 2: Aplicaciones que usan web components dentro de otros desarrollos en los que no se usaban web components | ||
---|---|---|
El uso de web components en una aplicación que utiliza elementos HTML implica la instalación del componente stic-theme. Todos los desarrollos anteriores tendrán definidos unos estilos, de manera inline o con fichero(s) CSS, y para no crear conflicto con ellos, será la aplicación la encargada de gestionar dichos estilos redefiniendo todos los tags html que se usen en el theme. | ||
Paso | Descripción | Enlace |
P1 | Instalación del theme | |
P2 | Carga del theme | |
P3.1 | Configuración si se usan estilos INLINE | Ir al contenido |
P3.2 | Configuración si se usan ficheros CSS (Typescript) | Ir al contenido |
P4 | Definición | Ir al contenido |
NOTA P4 | La definición se limita incluir la clase stic-theme dentro del tag body del HTML de nuestro desarrollo. |
Caso de uso 3: Aplicaciones sin web components | ||
---|---|---|
Si no se tienen web components no es necesario, por normativa, aplicar el theme, por lo que el desarrollo anterior podrá continuar con sus estilos de la manera que lo hacía anteriormente. En el caso que se quiera incluir el theme para usar las variables que ofrece: | ||
Paso | Descripción | Enlace |
P1 | Instalación del theme | |
P2 | Carga del theme |
1) Casos de uso: El único caso de uso posible es aquel en el que se tenga que aplicar el theme sobre web components.
Caso de uso 1: Aplicación en web components | ||
---|---|---|
En este caso de uso no es necesaria la instalación ni carga del theme, ya que esto será responsabilidad única de la aplicación. | ||
Paso | Descripción | Enlace |
P1 | Redefinición de variables custom CSS expuestas por el componente | |
P2 | Sobreescritura de valores de un HTML tag en el componente | |
NOTA | Todas las modificaciones expuestas en este punto se harán sobre los ficheros creados por el scaffolding para este motivo (carpeta /src/css/ - fichero <nombre-componente>.theme.css.js) | |
NOTA P2 | Todas las propiedades creadas han de exponer una variable custom CSS para dicha propiedad en el componente, así como tener una valor por defecto (fallback) en caso que dicha variable expuesta no haya sido utilizada. |
Anexo Caso de uso 1: Instalación del theme en web components para verificar su desarrollo | ||
---|---|---|
Para instalar el theme y poder verificar la correcta aplicación del mismo en fase de desarrollo de web components: | ||
Paso | Descripción | Enlace |
P1 | Instalación del theme (dependencia de desarrollo) | |
P2 | Carga del theme |
En esta sección se explica cómo customizar el theme de la STIC en todos los ámbitos disponibles, ya sea para modificar los valores de sus variables como para crear variables nuevas.
La creación de un theme de negocio/aplicación es necesaria cuando por requisito de diseño o bien necesito modificar alguno de los valores de las variables expuestas o bien necesito crear alguna variable que no exista el el theme.
Como se dijo anteriormente, el theme de la STIC se usa para poder consumir las variables definidas en él. Al heredar todas las variables del theme de la STIC, solo se tendrán que incluir en el theme creado las variables que se necesiten sobrescribir, y las que no se incluyan tomarán el valor que tienen del theme de la STIC.
Pasos para crear un theme | |||
---|---|---|---|
Los pasos necesarios para crear un theme se detallan a continuación. En cada paso, en caso que se necesario, se especificando dos soluciones, una por cada ámbito posible: Negocio / Aplicación | |||
Paso | Descripción | Enlace | |
P1 | Crear el componente | Ámbito de negocio | Ámbito de aplicación |
P2 | Instalación del theme | ||
P3 | Extender theme STIC | ||
NOTA P3 | Modificar el fichero ./src/Wc<nombre_theme>Theme.ts y, en él, realizar las importaciones del tema de la STIC para poder extenderlo (se usará CamelCase para el nombre de la clase) |
Customización de variables | |||
---|---|---|---|
Paso | Descripción | Enlace | |
P1 | Customizar variables | ||
NOTA P1 | Crear el fichero ./src/css/<tipo_css>.ts y, en él, incluir las variables a modificar y sus valores. |
Creación de variables | |||
---|---|---|---|
En el caso justificado de tener que crear nuevas variables para exponerlas en nuestro theme creado, se procederá de la siguiente manera: | |||
Paso | Descripción | Enlace | |
P1 | Creación de nuevas variables dentro de los distintos ámbitos | Ámbito de negocio | Ámbito de aplicación |
P2 | Redefinición y valor por defecto de las variables en los distintos ámbitos | Ámbito de negocio | |
NOTA P2 | En el ámbito de aplicación, podría suceder que estuviera definido el ámbito de negocio (caso 1) o que no estuviera definido el ámbito de negocio (caso 2). |