@wemake4u/form-controls 2.0.2 → 2.0.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/README.md +40 -0
- package/fesm2022/wemake4u-form-controls.mjs +2591 -226
- package/fesm2022/wemake4u-form-controls.mjs.map +1 -1
- package/package.json +1 -1
- package/types/wemake4u-form-controls.d.ts +716 -10
package/README.md
CHANGED
|
@@ -51,6 +51,31 @@ opzione, o si azzera da codice. Con `clearable` il pulsante viene mostrato e svu
|
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
|
|
54
|
+
## Valore nullo: `nullable` e `nullOptionLabel`
|
|
55
|
+
|
|
56
|
+
Di default i controlli si comportano come sempre. Con `nullable` textbox, number, date, time, datetime e select
|
|
57
|
+
singola mostrano dentro il campo il pulsante "X" del kit (`sirio-btn-reset`), che porta il valore a `null`.
|
|
58
|
+
Il pulsante compare solo quando il campo ha un valore e non è obbligatorio, in sola lettura o disabilitato; dopo
|
|
59
|
+
il clic il focus torna al campo. Il nome per i lettori di schermo è `nullLabel` seguito dalla label
|
|
60
|
+
("Nessun valore per Codice fiscale"). Nella textbox con `nullable` anche il testo cancellato arriva come `null`.
|
|
61
|
+
|
|
62
|
+
Il radio group con `nullable` aggiunge un'ultima opzione con valore `null` (in corsivo, testo `nullOptionLabel`,
|
|
63
|
+
default "Nessuna scelta"), non mostrata se il campo è obbligatorio.
|
|
64
|
+
|
|
65
|
+
La checkbox con `nullable` diventa un gruppo di radio Sì / No / Nessuna scelta (valori `true`, `false`, `null`),
|
|
66
|
+
con la label come nome del gruppo; i testi si cambiano con `trueLabel`, `falseLabel` e `nullOptionLabel`, e
|
|
67
|
+
l'opzione nulla non compare se il campo è obbligatorio.
|
|
68
|
+
|
|
69
|
+
```html
|
|
70
|
+
<wm-sirio-textbox label="Codice fiscale" nullable formControlName="cf" />
|
|
71
|
+
<wm-sirio-checkbox label="Ricevere la newsletter" nullable formControlName="newsletter" />
|
|
72
|
+
<wm-sirio-radio-group label="Tipo" [options]="tipi" nullable formControlName="tipo" />
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
In `wm-sirio-schema-form` i campi il cui tipo ammette `null` (es. `"type": ["string", "null"]`) sono `nullable`: la
|
|
76
|
+
"X" del campo scrive `null` nel JSON, mentre la gomma accanto alla label toglie la proprietà (non passata). I booleani
|
|
77
|
+
che ammettono `null` mostrano Sì / No / null, gli altri solo Sì / No.
|
|
78
|
+
|
|
54
79
|
## Select: opzioni in caricamento
|
|
55
80
|
|
|
56
81
|
Con `loading` la select mostra che le opzioni stanno arrivando (es. da un servizio): il campo chiuso mostra
|
|
@@ -155,6 +180,21 @@ Import unico: `imports: [SIRIO_DATA_GRID]`.
|
|
|
155
180
|
- **Errori**: oltre a `(loadError)`, la tabella mostra `loadErrorText` ("Non è stato possibile caricare i dati.") con
|
|
156
181
|
il pulsante "Riprova" (`retryLabel`), che richiama il data source; la paginazione resta per tornare indietro. Con
|
|
157
182
|
`<ng-template wmSirioGridError let-error let-retry="retry">` il contenuto è personalizzato.
|
|
183
|
+
- **Server OData** (`sirioRemoteGridSource`): trasforma la query della tabella in opzioni di query lato server
|
|
184
|
+
(`$top`, `$skip`, `$count`, `$orderby` e filtri nel modello di ag-grid), il formato di `@wemake4u/remoting`:
|
|
185
|
+
```ts
|
|
186
|
+
readonly source = sirioRemoteGridSource(options => this.service.getItems(options), {
|
|
187
|
+
filterTypes: { version: 'number', created: 'date', state: 'select' },
|
|
188
|
+
extraFilter: () => ({ state: sirioAnyOf(this.states()) })
|
|
189
|
+
});
|
|
190
|
+
```
|
|
191
|
+
La libreria non dipende da remoting: `SirioRemoteQueryOptions` ha la stessa forma di `QueryOptions`, quindi una
|
|
192
|
+
funzione di caricamento tipizzata con `QueryOptions` si passa così com'è. Il totale è quello che il caricamento
|
|
193
|
+
scrive in `options.totalCount` (remoting vi copia il `$count` della risposta). `filterTypes` indica il tipo dei
|
|
194
|
+
filtri non di testo (il `filter` delle colonne); `extraFilter`, letto a ogni query, aggiunge filtri che non sono
|
|
195
|
+
colonne (es. stati scelti con i chip). Le chiavi sono `field` / `sortKey` / `filterKey` delle colonne con i punti
|
|
196
|
+
(`properties.name`), che remoting trasforma nel path OData; le date dei filtri coprono l'intero giorno.
|
|
197
|
+
`sirioToQueryOptions` e `sirioToFilterModel` fanno la sola conversione.
|
|
158
198
|
- **Filtri per colonna** (`filter` sulla colonna): pulsante nell'intestazione che apre il popover del kit con i
|
|
159
199
|
controlli della libreria. Tipi: `text` (contiene, senza distinzione di maiuscole e accenti), `number` e `date`
|
|
160
200
|
(intervallo Da / A), `select` (con `filterOptions`, anche `filterMultiple`; **senza `filterOptions` la scelta è tra i
|