1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-24 15:27:43 +01:00
Maicol Battistini 2d37c8eda4
feat: Sostituito Laravel Mix con Vite
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
-
2021-09-07 13:28:20 +02:00

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);
}
}