mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-24 15:27:43 +01:00
Vite permette di utilizzare i moduli ES6, in modo da caricare le views dei moduli custom tramite Import Maps (automatico). Gli assets devono essere inseriti nella cartella resources/static invece che nella cartella public. Altri miglioramenti: - I componenti sono stati migliorati, in modo da utilizzare collect.js (le collections di Laravel in JS) e classnames (per l'aggiunta di classi CSS ai componenti) - Ogni cartella ha ora un file `index.js` così da poter importare facilmente i componenti nei moduli custom - Possibilità di aggiungere un titolo nella pagina, definendolo nella route -
57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
import {Vnode} from 'mithril';
|
|
import {sync as render} from 'mithril-node-render';
|
|
|
|
import Component from './Component';
|
|
|
|
/**
|
|
* The `Page` component
|
|
*
|
|
* @abstract
|
|
*/
|
|
export default class Page extends Component {
|
|
page: {
|
|
component: string,
|
|
locale: string,
|
|
props: Object,
|
|
translations: Object,
|
|
url: string,
|
|
version: string,
|
|
...
|
|
} = JSON.parse($('#app').attr('data-page'));
|
|
|
|
/**
|
|
* Ritorna una traduzione
|
|
*
|
|
* @param {string|Vnode} key Stringa di cui prelevare la traduzione
|
|
* @param {Object|boolean} replace Eventuali parametri da rimpiazzare.
|
|
* Se il parametro è "true" (valore booleano), verrà ritornato il valore come stringa
|
|
* (stesso funzionamento del parametro dedicato (sotto ↓))
|
|
* @param {boolean} returnAsString Se impostato a "true" vien ritornata una stringa invece di
|
|
* un Vnode di Mithril
|
|
*
|
|
* @returns {Vnode}
|
|
*
|
|
* @protected
|
|
*/
|
|
__(
|
|
key: string | Vnode,
|
|
replace: Object | boolean = {},
|
|
returnAsString: boolean = false
|
|
): Vnode {
|
|
let translation = (this.page.translations && this.page.translations[key])
|
|
? this.page.translations[key] : key;
|
|
|
|
// Ritorna la traduzione come stringa (senza sostituzione di parametri)
|
|
if (replace === true) {
|
|
return translation;
|
|
}
|
|
|
|
for (const k of Object.keys(replace)) {
|
|
// `'attrs' in replace[k]` controlla se replace[k] è un vnode di Mithril
|
|
translation = translation.replace(`:${k}`, ((typeof replace[k] === 'object' && 'attrs' in replace[k]) ? render(replace[k]) : replace[k]));
|
|
}
|
|
|
|
return returnAsString ? translation : window.m.trust(translation);
|
|
}
|
|
}
|