@massimo-cassandro/minimo 1.32.2 → 1.32.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@massimo-cassandro/minimo",
3
- "version": "1.32.2",
3
+ "version": "1.32.3",
4
4
  "description": "Light css framework & utilities",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -194,7 +194,7 @@ cols: [
194
194
 
195
195
  _title, // Testo del tooltip sull'intestazione (attributo `title` dell'<abbr>).
196
196
 
197
- _render, // Template HTML per il contenuto della cella.
197
+ _cellRender, // Template HTML per il contenuto della cella.
198
198
  // Accetta:
199
199
  // - stringa mustache-like: i segnaposto [[chiave]] vengono sostituiti
200
200
  // con i valori della riga (notazione punto: [[owner.nome]]).
@@ -203,14 +203,33 @@ cols: [
203
203
  // warning (il dato è semplicemente assente, non un errore di config).
204
204
  // - funzione (row) => string
205
205
 
206
- _renderMode, // Preset di visualizzazione predefiniti. Valori disponibili:
207
- // 'id' – colonna numerica, non ricercabile, allineata a destra
208
- // 'email' – va a capo prima e dopo la @
209
- // 'boolean' – icona spunta/croce con colore semantico
210
- // 'sf_datetime' – data/ora da oggetto Symfony ({ date, timezone })
206
+ _renderMode, // Preset di visualizzazione predefiniti (vedi parseCols). Vengono
207
+ // applicati solo se la colonna non definisce già l'opzione nativa
208
+ // `render`. Valori disponibili:
209
+ // 'id' – colonna numerica (type 'number'), non ricercabile,
210
+ // allineata a destra
211
+ // 'email' – va a capo prima e dopo la @
212
+ // 'bool_true_only' – come type: 'boolean' (icona spunta con colore
213
+ // semantico) ma per i valori falsi non mostra
214
+ // nessuna icona. Per il booleano standard
215
+ // (spunta/croce) usare la proprietà nativa
216
+ // type: 'boolean', non è previsto un _renderMode.
217
+ // 'sf_datetime' – data e ora da oggetto Symfony ({ date, timezone }),
218
+ // pre-elaborato in _load
219
+ // 'sf_date' – come 'sf_datetime', ma mostra solo la data
220
+ // 'datetime' – data e ora da stringa/valore parsabile da `new Date()`
221
+ // 'date' – come 'datetime', ma mostra solo la data
222
+ // (date/datetime: formato it-IT, allineamento a destra,
223
+ // data-order impostato per l'ordinamento; null → '—')
224
+ // 'numeric' – numero formattato it-IT (separatore migliaia,
225
+ // decimali come nel dato), type 'number', classi
226
+ // text-end text-numeric; null/NaN → '—'
227
+ // 'euro' – come 'numeric', con 2 decimali fissi, senza simbolo
228
+ // 'euro_currency' – come 'euro', con simbolo di valuta (€)
229
+ // 'euro_no_dec' – come 'euro', senza decimali
211
230
 
212
231
  _sortValue, // Percorso del campo da usare per l'ORDINAMENTO al posto del contenuto
213
- // visualizzato. Utile quando la cella contiene HTML composto (_render).
232
+ // visualizzato. Utile quando la cella contiene HTML composto (_cellRender).
214
233
  // Supporta notazione punto.
215
234
  // Implementato tramite l'attributo data-order sulla cella, letto
216
235
  // nativamente da simple-datatables.
@@ -285,7 +304,7 @@ cols: [
285
304
  // ricerca o multisearch.
286
305
 
287
306
  _collapsePlaceholder, // Testo da mostrare al posto del valore ripetuto. Accetta lo stesso
288
- // ventaglio di _render/_cellTitle: stringa semplice, stringa mustache-like
307
+ // ventaglio di _cellRender/_cellTitle: stringa semplice, stringa mustache-like
289
308
  // con segnaposto [[chiave]] (interpolati sulla riga corrente), oppure
290
309
  // funzione (row) => string. Default null (anche se la funzione ritorna
291
310
  // null/undefined) = il testo della cella resta invariato (utile insieme
@@ -308,7 +327,8 @@ cols: [
308
327
 
309
328
  render, // Callback (data, cell, rowIndex, cellIndex) => contenuto cella.
310
329
  // È l'opzione nativa usata internamente per implementare i preset
311
- // _renderMode e (indirettamente) _render/_renderTpl: se impostata
330
+ // _renderMode. Se `_cellRender` è impostata, `render` viene annullata
331
+ // (per evitare conflitti); se invece `render` è impostata
312
332
  // esplicitamente dal consumer, i preset _renderMode vengono
313
333
  // ignorati (vedi parseCols — la logica dei preset scatta solo se
314
334
  // `render` non è già definita sulla colonna).
@@ -358,12 +378,12 @@ const cols = [
358
378
  {
359
379
  _field: 'commessa',
360
380
  _heading: 'Commessa / fornitore',
361
- _render: '[[commessa]]<br><small class="text-muted">[[fornitore]]</small>',
381
+ _cellRender: '[[commessa]]<br><small class="text-muted">[[fornitore]]</small>',
362
382
  },
363
383
  {
364
384
  _field: 'owner.cognome',
365
385
  _heading: 'Owner',
366
- _render: '[[owner.nome]] [[owner.cognome]]',
386
+ _cellRender: '[[owner.nome]] [[owner.cognome]]',
367
387
  _sortValue: 'owner.cognome', // ordina per cognome
368
388
  _searchValue: 'owner.cognome owner.nome', // cerca su cognome e nome (AND)
369
389
  },
@@ -266,8 +266,15 @@ function computeCellValue(row, col_item, globalNullAs, col_idx) {
266
266
 
267
267
  // Applica _renderNullAs al valore della cella se null/undefined
268
268
  // e la cella non ha già un template che gestisce la visualizzazione.
269
- // se _renderMode è impostato, il valore null è gestito direttamente dal gestore predefinito
270
- if (value == null && col_item._cellRender == null && col_item._renderMode == null) {
269
+ // se _renderMode è impostato, il valore null è gestito direttamente dal gestore predefinito;
270
+ // le colonne booleane (type: 'boolean', anche senza _renderMode) sono escluse allo stesso modo,
271
+ // altrimenti nullAs (stringa non vuota) verrebbe letto come true dal render booleano
272
+ if (
273
+ value == null &&
274
+ col_item._cellRender == null &&
275
+ col_item._renderMode == null &&
276
+ col_item.type !== 'boolean'
277
+ ) {
271
278
  value = nullAs;
272
279
  }
273
280
 
@@ -1,5 +1,5 @@
1
1
 
2
- /* frontend/src/web-components/s-datatable-component.module.css */
2
+ /* minimo s-datatable-component.module.css */
3
3
 
4
4
  /* import delle custom properties gestito da jit-props */
5
5
 
@@ -53,7 +53,9 @@ export function parseCols(col_obj){
53
53
 
54
54
  // campi booleani
55
55
  } else if (col_obj.type === 'boolean' || col_obj._renderMode === 'bool_true_only') {
56
- // TODO caso in cui il valore è null nel caso si voglia differenziarlo da false
56
+ // il valore null arriva qui "genuino" (computeCellValue non applica _renderNullAs
57
+ // alle colonne booleane), ma è comunque trattato come false (icona rossa/vuota)
58
+ // TODO distinguere visivamente il caso null da false, se necessario
57
59
 
58
60
  return {
59
61
  ...col_obj,