In questâultimo paragrafo vedremo quali tecniche sono previste per personalizzare la resa grafica delle applicazioni sviluppate con il framework IonicUI.
Il tema #
Il tema è un oggetto JavaScript condiviso tra la sessione di lavoro e il codice del browser che gestisce lâinterfaccia dellâapplicazione. Le proprietĂ del tema permettono di personalizzare lâaspetto e i comportamenti del framework IonicUI.
Le proprietĂ specifiche riconosciute dal tema IonicUI sono presenti nella classe IonTheme contenuta nella libreria IonicFramework e sono le seguenti:
- ionPlatform: rappresenta la grafica di base dellâapplicazione e può valere âmdâ per Material Design oppure âiosâ per dispositivi Apple. Il valore predefinito viene calcolato automaticamente in base al dispositivo utilizzato, ma può essere modificato nellâevento onStart dellâapplicazione, prima dellâapertura della prima videata.
- primary: colore primario dellâapplicazione.
- secondary: colore secondario dellâapplicazione.
- danger: colore utilizzato per messaggio di errore o azioni distruttive.
- light: sfumatura di colore utilizzata per visualizzare elementi chiari.
- dark: sfumatura di colore utilizzata per visualizzare elementi scuri.
- bright: colore utilizzato per visualizzare elementi ad alto impatto visivo.
- vibrant: colore alternativo utilizzato per visualizzare elementi ad alto impatto visivo.
- focus: colore della sottolineatura di elementi che hanno il fuoco (usato se ionPlatform=âmdâ).
- ionIcons: versione del set di icone da utilizzare. I possibili valori sono 4 e 5. Si consiglia di usare il valore 4.
- iconSet: determina quale set di icone deve essere attivato. I possibili valori sono âmdâ e âiosâ e il default è uguale ad ionPlatform.
- tippy: parametri da passare al sistema di gestione dei tooltip tippy.js in formato oggetto JavaScript.
- darkMode: attiva o meno il darkMode per la sessione. I possibili valori sono âtrueâ, âfalseâ e âautoâ. Il default è âautoâ.
- darkPercent: percentuale di diminuzione della luminositĂ dei colori del tema quando si attiva il tema scuro. Default 0.30.
- gmapKey: comunica al browser il valore della chiave gmap da utilizzare per visualizzare le mappe. Deve essere impostato prima di caricare una mappa per la prima volta e deve iniziare con âkey=â. Ad esempio: âkey=aIsalz3fg4âŚâ.
Ă possibile modificare i parametri del tema sia a design time che da codice. Per modificare i parametri di tema a design time si deve procedere come segue:
- Creare allâinterno di una libreria una classe di tipo Tema che estende IonicFramework.IonTheme.
- Inserire nella classe le proprietĂ con il nome corrispondente ai parametri del tema da modificare. Impostare quindi il valore iniziale di ogni proprietĂ al valore da assegnare alla corrispondente proprietĂ di tema.
- Selezionando lâoggetto applicazione, impostare come proprietĂ Tema la classe tema appena creata.
A questo punto le proprietĂ del tema verranno applicate anche alle videate in anteprima nellâeditor delle videate. Dopo aver modificato il valore di una proprietĂ del tema, può essere richiesto lâaggiornamento manuale dellâanteprima dellâeditor delle videate.
La modifica di una proprietĂ di tema da codice è molto semplice. Se tale modifica avviene nellâevento onStart dellâapplicazione è necessario solamente modificare lâoggetto app.theme. Ad esempio per modificare un colore del tema è possibile scrivere:
app.theme.secondary = â#51d677â;
In questo caso la modifica non sarĂ visibile nellâanteprima dellâeditor delle videate ma solo quando lâapplicazione viene lanciata dallâIDE o in produzione.
Se la modifica al tema avviene dopo lâapertura della prima videata, sarĂ necessario chiamare il metodo app.updateTheme() per renderla effettiva. Ă possibile passare le proprietĂ da aggiornare direttamente a tale metodo, ad esempio:
app.updateTheme({secondary: â#51d677â, ...});
Editing del CSS #
La modalità piÚ completa per ottenere qualunque effetto grafico di interesse è quella di personalizzare il CSS del framework IonicUI. Questa modalità è estremamente potente, ma richiede la conoscenza degli inspector web dei browser e del linguaggio di configurazione dello stile degli elementi (CSS).
Per ottenere questo risultato è sufficiente aggiungere un foglio CSS alla propria applicazione e poi inserire le regole aggiornate.
Per testare quali selettori specificare e quali regole aggiornare, si consiglia di ispezionare il DOM della pagina browser in cui sono presenti gli elementi da modificare e poi testare al volo le modifiche necessarie. Dopo aver trovato la configurazione richiesta, si può procedere a definire il contenuto del proprio foglio CSS.
Il metodo setAttribute #
Alcuni elementi visuali del framework IonicUI vengono visualizzati creando diversi oggetti nel DOM del browser. La modifica di uno stile inline di un elemento visuale a design time o tramite codice agisce solo sullâoggetto DOM principale, solitamente quello che contiene tutti gli altri.
In alcuni casi, per modificare lo stile degli oggetti interni potrebbe quindi essere necessaria la creazione di una classe CSS apposita che possa arrivare agli oggetti interni attivando i selettori opportuni.
Una soluzione alternativa può essere quella di utilizzare il metodo setAttribute dellâelemento che, oltre a poter impostare gli attributi dell’elemento, è in grado di operare anche sugli oggetti interni.
Se ad esempio si volesse modificare il colore di sfondo di una navbar senza usare i colori del tema, potremmo scrivere il codice seguente:
$navbar.setAttribute("toolbar-background style",
"background-color:yellow");
Questa riga di codice fa sĂŹ che lâattributo style non venga modificato sullâoggetto DOM principale della navbar, ma su un suo sotto-oggetto che ha come classe toolbar-background, e che è quello che visualizza lo sfondo.
Per maggiori informazioni sulle varie configurazioni ammesse dal metodo setAttribute, si consiglia di leggere la documentazione in linea.