@besaitech/ng-design-system-mcp 0.0.5
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 +97 -0
- package/data/docs.json +4110 -0
- package/dist/doc-index.schema.js +143 -0
- package/dist/index.js +72 -0
- package/dist/load-index.js +109 -0
- package/dist/prompts.js +47 -0
- package/dist/render.js +102 -0
- package/dist/server.js +225 -0
- package/dist/validate-usage.js +162 -0
- package/package.json +37 -0
package/data/docs.json
ADDED
|
@@ -0,0 +1,4110 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0.0",
|
|
3
|
+
"libraryVersion": "0.0.29",
|
|
4
|
+
"packageName": "@besaitech/ng-design-system",
|
|
5
|
+
"devImport": "saitech-design-system",
|
|
6
|
+
"generatedAt": "2026-08-31T22:12:44.950Z",
|
|
7
|
+
"componentCount": 30,
|
|
8
|
+
"components": [
|
|
9
|
+
{
|
|
10
|
+
"className": "SdsAccordion",
|
|
11
|
+
"selector": "sds-accordion",
|
|
12
|
+
"kind": "component",
|
|
13
|
+
"group": "data",
|
|
14
|
+
"importName": "SdsAccordion, SdsAccordionPanel, SdsAccordionHeader, SdsAccordionContent",
|
|
15
|
+
"description": "Panneaux dépliables composables. <sds-accordion> coordonne ses <sds-accordion-panel> ; chaque panneau porte un [value] et contient un <sds-accordion-header> et un <sds-accordion-content>. Le panneau ouvert est la valeur [value] (liaison bidirectionnelle [(value)]). [multiple] autorise plusieurs panneaux ouverts (la valeur devient un tableau). Repli animé, navigation clavier (flèches, Début, Fin).",
|
|
16
|
+
"overviewDescription": "Panneaux dépliables : mode simple ou multiple, clavier.",
|
|
17
|
+
"jsdoc": "Root of an accordion. Compose with <sds-accordion-panel> children, each\nholding an <sds-accordion-header> and an <sds-accordion-content>. The open\npanel is the [value], matched against each panel's [value]; it is two-way\nbindable via [(value)]. With [multiple], several panels may be open at once\nand [value] is an array.",
|
|
18
|
+
"example": "<sds-accordion [(value)]=\"open\">\n <sds-accordion-panel value=\"0\">\n <sds-accordion-header>Section 1</sds-accordion-header>\n <sds-accordion-content>…</sds-accordion-content>\n </sds-accordion-panel>\n</sds-accordion>",
|
|
19
|
+
"cva": false,
|
|
20
|
+
"usesNgModel": false,
|
|
21
|
+
"inputs": [
|
|
22
|
+
{
|
|
23
|
+
"name": "value",
|
|
24
|
+
"type": "SdsAccordionActive",
|
|
25
|
+
"default": "null",
|
|
26
|
+
"required": false,
|
|
27
|
+
"transform": null,
|
|
28
|
+
"alias": null,
|
|
29
|
+
"jsdoc": "Open panel value, or array of values in multiple mode (two-way)."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "multiple",
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"default": "false",
|
|
35
|
+
"required": false,
|
|
36
|
+
"transform": "booleanAttribute",
|
|
37
|
+
"alias": null,
|
|
38
|
+
"jsdoc": "Allow more than one panel open at a time."
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"outputs": [
|
|
42
|
+
{
|
|
43
|
+
"name": "valueChange",
|
|
44
|
+
"type": "SdsAccordionActive",
|
|
45
|
+
"fromModel": true
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"exportedTypes": [],
|
|
49
|
+
"projectionSlots": [],
|
|
50
|
+
"hostBindings": {
|
|
51
|
+
"class": "block divide-y divide-border overflow-hidden rounded-card border border-border bg-surface",
|
|
52
|
+
"(keydown)": "onKeydown($event)"
|
|
53
|
+
},
|
|
54
|
+
"examples": [
|
|
55
|
+
{
|
|
56
|
+
"sectionTitle": "Basique",
|
|
57
|
+
"sectionDescription": "Mode simple : un seul panneau ouvert ; recliquer le replie.",
|
|
58
|
+
"code": "<sds-accordion value=\"0\">\n <sds-accordion-panel value=\"0\">\n <sds-accordion-header>Admission du patient</sds-accordion-header>\n <sds-accordion-content>…</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"1\">\n <sds-accordion-header>Dossier médical</sds-accordion-header>\n <sds-accordion-content>…</sds-accordion-content>\n </sds-accordion-panel>\n</sds-accordion>",
|
|
59
|
+
"runnableExample": "<sds-accordion value=\"0\">\n <sds-accordion-panel value=\"0\">\n <sds-accordion-header>Admission du patient</sds-accordion-header>\n <sds-accordion-content>\n Procédure d'enregistrement : identité, couverture mutuelle et\n affectation au service compétent.\n </sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"1\">\n <sds-accordion-header>Dossier médical</sds-accordion-header>\n <sds-accordion-content>\n Antécédents, allergies et traitements en cours, consultables par\n l'équipe soignante autorisée.\n </sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"2\">\n <sds-accordion-header>Sortie & suivi</sds-accordion-header>\n <sds-accordion-content>\n Compte rendu d'hospitalisation, ordonnances et planification du\n suivi ambulatoire.\n </sds-accordion-content>\n </sds-accordion-panel>\n </sds-accordion>",
|
|
60
|
+
"stack": true,
|
|
61
|
+
"dark": false
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"sectionTitle": "Multiple",
|
|
65
|
+
"sectionDescription": "[multiple] autorise plusieurs panneaux ouverts ; [value] est un tableau.",
|
|
66
|
+
"code": "<sds-accordion multiple [value]=\"['0', '1']\">\n <sds-accordion-panel value=\"0\">\n <sds-accordion-header>Cardiologie</sds-accordion-header>\n <sds-accordion-content>…</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"1\">…</sds-accordion-panel>\n <sds-accordion-panel value=\"2\">…</sds-accordion-panel>\n</sds-accordion>",
|
|
67
|
+
"runnableExample": "<sds-accordion multiple [value]=\"['0', '1']\">\n <sds-accordion-panel value=\"0\">\n <sds-accordion-header>Cardiologie</sds-accordion-header>\n <sds-accordion-content>Unité de soins intensifs cardiologiques.</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"1\">\n <sds-accordion-header>Pédiatrie</sds-accordion-header>\n <sds-accordion-content>Hospitalisation et consultations pédiatriques.</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"2\">\n <sds-accordion-header>Radiologie</sds-accordion-header>\n <sds-accordion-content>Imagerie médicale : IRM, scanner et échographie.</sds-accordion-content>\n </sds-accordion-panel>\n </sds-accordion>",
|
|
68
|
+
"stack": true,
|
|
69
|
+
"dark": false
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"sectionTitle": "En-têtes avec icônes",
|
|
73
|
+
"sectionDescription": "Projetez un <sds-icon> dans l'en-tête.",
|
|
74
|
+
"code": "<sds-accordion value=\"profile\">\n <sds-accordion-panel value=\"profile\">\n <sds-accordion-header><sds-icon name=\"circle-user\" [size]=\"18\" /> Profil</sds-accordion-header>\n <sds-accordion-content>…</sds-accordion-content>\n </sds-accordion-panel>\n …\n</sds-accordion>",
|
|
75
|
+
"runnableExample": "<sds-accordion value=\"profile\">\n <sds-accordion-panel value=\"profile\">\n <sds-accordion-header><sds-icon name=\"circle-user\" [size]=\"18\" /> Profil</sds-accordion-header>\n <sds-accordion-content>Nom, fonction et coordonnées du membre du personnel.</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"notifications\">\n <sds-accordion-header><sds-icon name=\"bell\" [size]=\"18\" /> Notifications</sds-accordion-header>\n <sds-accordion-content>Préférences d'alertes et de rappels.</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"security\">\n <sds-accordion-header><sds-icon name=\"settings\" [size]=\"18\" /> Sécurité</sds-accordion-header>\n <sds-accordion-content>Mot de passe, double authentification et sessions actives.</sds-accordion-content>\n </sds-accordion-panel>\n </sds-accordion>",
|
|
76
|
+
"stack": true,
|
|
77
|
+
"dark": false
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"sectionTitle": "Panneau désactivé",
|
|
81
|
+
"sectionDescription": null,
|
|
82
|
+
"code": "<sds-accordion value=\"0\">\n <sds-accordion-panel value=\"0\">…</sds-accordion-panel>\n <sds-accordion-panel value=\"1\" disabled>\n <sds-accordion-header>Indisponible</sds-accordion-header>\n <sds-accordion-content>…</sds-accordion-content>\n </sds-accordion-panel>\n</sds-accordion>",
|
|
83
|
+
"runnableExample": "<sds-accordion value=\"0\">\n <sds-accordion-panel value=\"0\">\n <sds-accordion-header>Disponible</sds-accordion-header>\n <sds-accordion-content>Ce panneau est accessible.</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"1\" disabled>\n <sds-accordion-header>Indisponible</sds-accordion-header>\n <sds-accordion-content>Ce contenu ne peut pas être ouvert.</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"2\">\n <sds-accordion-header>Archives</sds-accordion-header>\n <sds-accordion-content>Documents archivés du dossier.</sds-accordion-content>\n </sds-accordion-panel>\n </sds-accordion>",
|
|
84
|
+
"stack": true,
|
|
85
|
+
"dark": false
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"sectionTitle": "Contrôlé (two-way)",
|
|
89
|
+
"sectionDescription": "Liaison [(value)] vers un signal ; pilotable depuis l'extérieur.",
|
|
90
|
+
"code": "<sds-button (click)=\"open.set('a')\">Ouvrir A</sds-button>\n<sds-button (click)=\"open.set(null)\">Tout replier</sds-button>\n\n<sds-accordion [(value)]=\"open\">\n <sds-accordion-panel value=\"a\">\n <sds-accordion-header>Panneau A</sds-accordion-header>\n <sds-accordion-content>Contenu A</sds-accordion-content>\n </sds-accordion-panel>\n …\n</sds-accordion>\n\n// open = signal<SdsAccordionActive>('a');",
|
|
91
|
+
"runnableExample": "<div class=\"flex flex-wrap items-center gap-2\">\n <sds-button size=\"sm\" variant=\"secondary\" (click)=\"open.set('a')\">Ouvrir A</sds-button>\n <sds-button size=\"sm\" variant=\"secondary\" (click)=\"open.set('c')\">Ouvrir C</sds-button>\n <sds-button size=\"sm\" variant=\"ghost\" (click)=\"open.set(null)\">Tout replier</sds-button>\n <span class=\"text-sm text-ink-soft\">\n Ouvert : <span class=\"font-medium text-ink\">{{ open() ?? '—' }}</span>\n </span>\n </div>\n\n <sds-accordion [(value)]=\"open\">\n <sds-accordion-panel value=\"a\">\n <sds-accordion-header>Panneau A</sds-accordion-header>\n <sds-accordion-content>Contenu A</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"b\">\n <sds-accordion-header>Panneau B</sds-accordion-header>\n <sds-accordion-content>Contenu B</sds-accordion-content>\n </sds-accordion-panel>\n <sds-accordion-panel value=\"c\">\n <sds-accordion-header>Panneau C</sds-accordion-header>\n <sds-accordion-content>Contenu C</sds-accordion-content>\n </sds-accordion-panel>\n </sds-accordion>",
|
|
92
|
+
"stack": true,
|
|
93
|
+
"dark": false
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"sectionTitle": "Dynamique (FAQ)",
|
|
97
|
+
"sectionDescription": "Générez les panneaux avec @for.",
|
|
98
|
+
"code": "<sds-accordion multiple>\n @for (f of faqs; track f.value) {\n <sds-accordion-panel [value]=\"f.value\">\n <sds-accordion-header>{{ f.question }}</sds-accordion-header>\n <sds-accordion-content>{{ f.answer }}</sds-accordion-content>\n </sds-accordion-panel>\n }\n</sds-accordion>",
|
|
99
|
+
"runnableExample": "<sds-accordion multiple>\n @for (f of faqs; track f.value) {\n <sds-accordion-panel [value]=\"f.value\">\n <sds-accordion-header>{{ f.question }}</sds-accordion-header>\n <sds-accordion-content>{{ f.answer }}</sds-accordion-content>\n </sds-accordion-panel>\n }\n </sds-accordion>",
|
|
100
|
+
"stack": true,
|
|
101
|
+
"dark": false
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"className": "SdsAccordionContent",
|
|
107
|
+
"selector": "sds-accordion-content",
|
|
108
|
+
"kind": "component",
|
|
109
|
+
"group": "data",
|
|
110
|
+
"importName": "SdsAccordionContent",
|
|
111
|
+
"description": null,
|
|
112
|
+
"overviewDescription": null,
|
|
113
|
+
"jsdoc": "Collapsible content region of an accordion panel. Animates open/closed with a\nCSS grid-rows transition; while closed it is `inert` (not focusable, hidden\nfrom assistive tech) but kept in the DOM, so its state persists.",
|
|
114
|
+
"example": null,
|
|
115
|
+
"cva": false,
|
|
116
|
+
"usesNgModel": false,
|
|
117
|
+
"inputs": [],
|
|
118
|
+
"outputs": [],
|
|
119
|
+
"exportedTypes": [],
|
|
120
|
+
"projectionSlots": [],
|
|
121
|
+
"hostBindings": {
|
|
122
|
+
"class": "block"
|
|
123
|
+
},
|
|
124
|
+
"examples": []
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"className": "SdsAccordionHeader",
|
|
128
|
+
"selector": "sds-accordion-header",
|
|
129
|
+
"kind": "component",
|
|
130
|
+
"group": "data",
|
|
131
|
+
"importName": "SdsAccordionHeader",
|
|
132
|
+
"description": null,
|
|
133
|
+
"overviewDescription": null,
|
|
134
|
+
"jsdoc": "Clickable header of an accordion panel. Project the label text and,\noptionally, an <sds-icon>. Renders a chevron that rotates when open.",
|
|
135
|
+
"example": null,
|
|
136
|
+
"cva": false,
|
|
137
|
+
"usesNgModel": false,
|
|
138
|
+
"inputs": [],
|
|
139
|
+
"outputs": [],
|
|
140
|
+
"exportedTypes": [],
|
|
141
|
+
"projectionSlots": [],
|
|
142
|
+
"hostBindings": {
|
|
143
|
+
"class": "block"
|
|
144
|
+
},
|
|
145
|
+
"examples": []
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"className": "SdsAccordionPanel",
|
|
149
|
+
"selector": "sds-accordion-panel",
|
|
150
|
+
"kind": "component",
|
|
151
|
+
"group": "data",
|
|
152
|
+
"importName": "SdsAccordionPanel",
|
|
153
|
+
"description": null,
|
|
154
|
+
"overviewDescription": null,
|
|
155
|
+
"jsdoc": "One accordion section. Holds the [value] and optional [disabled] state shared\nwith its projected <sds-accordion-header> and <sds-accordion-content>.",
|
|
156
|
+
"example": null,
|
|
157
|
+
"cva": false,
|
|
158
|
+
"usesNgModel": false,
|
|
159
|
+
"inputs": [
|
|
160
|
+
{
|
|
161
|
+
"name": "value",
|
|
162
|
+
"type": "SdsAccordionValue",
|
|
163
|
+
"default": null,
|
|
164
|
+
"required": true,
|
|
165
|
+
"transform": null,
|
|
166
|
+
"alias": null,
|
|
167
|
+
"jsdoc": null
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"name": "disabled",
|
|
171
|
+
"type": "boolean",
|
|
172
|
+
"default": "false",
|
|
173
|
+
"required": false,
|
|
174
|
+
"transform": "booleanAttribute",
|
|
175
|
+
"alias": null,
|
|
176
|
+
"jsdoc": null
|
|
177
|
+
}
|
|
178
|
+
],
|
|
179
|
+
"outputs": [],
|
|
180
|
+
"exportedTypes": [],
|
|
181
|
+
"projectionSlots": [],
|
|
182
|
+
"hostBindings": {
|
|
183
|
+
"class": "block"
|
|
184
|
+
},
|
|
185
|
+
"examples": []
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"className": "SdsAvatar",
|
|
189
|
+
"selector": "sds-avatar",
|
|
190
|
+
"kind": "component",
|
|
191
|
+
"group": "primitive",
|
|
192
|
+
"importName": "SdsAvatar",
|
|
193
|
+
"description": "Avatar circulaire affichant une image ou des initiales, avec pastille de statut optionnelle.",
|
|
194
|
+
"overviewDescription": "Avatars avec initiales, image et indicateur de statut.",
|
|
195
|
+
"jsdoc": "Circular avatar showing an image or initials, with an optional status dot.",
|
|
196
|
+
"example": null,
|
|
197
|
+
"cva": false,
|
|
198
|
+
"usesNgModel": false,
|
|
199
|
+
"inputs": [
|
|
200
|
+
{
|
|
201
|
+
"name": "name",
|
|
202
|
+
"type": "string",
|
|
203
|
+
"default": "''",
|
|
204
|
+
"required": false,
|
|
205
|
+
"transform": null,
|
|
206
|
+
"alias": null,
|
|
207
|
+
"jsdoc": null
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"name": "initials",
|
|
211
|
+
"type": "string",
|
|
212
|
+
"default": "''",
|
|
213
|
+
"required": false,
|
|
214
|
+
"transform": null,
|
|
215
|
+
"alias": null,
|
|
216
|
+
"jsdoc": null
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"name": "src",
|
|
220
|
+
"type": "string | null",
|
|
221
|
+
"default": "null",
|
|
222
|
+
"required": false,
|
|
223
|
+
"transform": null,
|
|
224
|
+
"alias": null,
|
|
225
|
+
"jsdoc": null
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"name": "size",
|
|
229
|
+
"type": "number",
|
|
230
|
+
"default": "36",
|
|
231
|
+
"required": false,
|
|
232
|
+
"transform": null,
|
|
233
|
+
"alias": null,
|
|
234
|
+
"jsdoc": null
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"name": "status",
|
|
238
|
+
"type": "SdsAvatarStatus | null",
|
|
239
|
+
"default": "null",
|
|
240
|
+
"required": false,
|
|
241
|
+
"transform": null,
|
|
242
|
+
"alias": null,
|
|
243
|
+
"jsdoc": null
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"name": "bgClass",
|
|
247
|
+
"type": "string",
|
|
248
|
+
"default": "'bg-brand-400'",
|
|
249
|
+
"required": false,
|
|
250
|
+
"transform": null,
|
|
251
|
+
"alias": null,
|
|
252
|
+
"jsdoc": "Tailwind bg utility for the initials background."
|
|
253
|
+
}
|
|
254
|
+
],
|
|
255
|
+
"outputs": [],
|
|
256
|
+
"exportedTypes": [
|
|
257
|
+
{
|
|
258
|
+
"name": "SdsAvatarStatus",
|
|
259
|
+
"kind": "union",
|
|
260
|
+
"body": "'online' | 'offline' | 'busy' | 'away'"
|
|
261
|
+
}
|
|
262
|
+
],
|
|
263
|
+
"projectionSlots": [],
|
|
264
|
+
"hostBindings": {
|
|
265
|
+
"class": "inline-block shrink-0 align-middle"
|
|
266
|
+
},
|
|
267
|
+
"examples": [
|
|
268
|
+
{
|
|
269
|
+
"sectionTitle": "Initiales",
|
|
270
|
+
"sectionDescription": null,
|
|
271
|
+
"code": "<sds-avatar initials=\"AS\"></sds-avatar>\n<sds-avatar name=\"Marie Curie\"></sds-avatar>",
|
|
272
|
+
"runnableExample": "<sds-avatar initials=\"AS\"></sds-avatar>\n <sds-avatar name=\"Marie Curie\"></sds-avatar>",
|
|
273
|
+
"stack": false,
|
|
274
|
+
"dark": false
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"sectionTitle": "Tailles",
|
|
278
|
+
"sectionDescription": null,
|
|
279
|
+
"code": "<sds-avatar name=\"Sophie Bernard\" [size]=\"28\"></sds-avatar>\n<sds-avatar name=\"Sophie Bernard\" [size]=\"36\"></sds-avatar>\n<sds-avatar name=\"Sophie Bernard\" [size]=\"48\"></sds-avatar>\n<sds-avatar name=\"Sophie Bernard\" [size]=\"64\"></sds-avatar>",
|
|
280
|
+
"runnableExample": "<sds-avatar name=\"Sophie Bernard\" [size]=\"28\"></sds-avatar>\n <sds-avatar name=\"Sophie Bernard\" [size]=\"36\"></sds-avatar>\n <sds-avatar name=\"Sophie Bernard\" [size]=\"48\"></sds-avatar>\n <sds-avatar name=\"Sophie Bernard\" [size]=\"64\"></sds-avatar>",
|
|
281
|
+
"stack": false,
|
|
282
|
+
"dark": false
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"sectionTitle": "Statut",
|
|
286
|
+
"sectionDescription": null,
|
|
287
|
+
"code": "<sds-avatar name=\"Léa Dubois\" status=\"online\"></sds-avatar>\n<sds-avatar name=\"Léa Dubois\" status=\"busy\"></sds-avatar>\n<sds-avatar name=\"Léa Dubois\" status=\"away\"></sds-avatar>\n<sds-avatar name=\"Léa Dubois\" status=\"offline\"></sds-avatar>",
|
|
288
|
+
"runnableExample": "<sds-avatar name=\"Léa Dubois\" status=\"online\"></sds-avatar>\n <sds-avatar name=\"Léa Dubois\" status=\"busy\"></sds-avatar>\n <sds-avatar name=\"Léa Dubois\" status=\"away\"></sds-avatar>\n <sds-avatar name=\"Léa Dubois\" status=\"offline\"></sds-avatar>",
|
|
289
|
+
"stack": false,
|
|
290
|
+
"dark": false
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"sectionTitle": "Couleur de fond",
|
|
294
|
+
"sectionDescription": null,
|
|
295
|
+
"code": "<sds-avatar name=\"Inès Moreau\" bgClass=\"bg-accent-indigo\"></sds-avatar>\n<sds-avatar name=\"Gaël Petit\" bgClass=\"bg-accent-green\"></sds-avatar>\n<sds-avatar name=\"Yann Roux\" bgClass=\"bg-accent-amber\"></sds-avatar>",
|
|
296
|
+
"runnableExample": "<sds-avatar name=\"Inès Moreau\" bgClass=\"bg-accent-indigo\"></sds-avatar>\n <sds-avatar name=\"Gaël Petit\" bgClass=\"bg-accent-green\"></sds-avatar>\n <sds-avatar name=\"Yann Roux\" bgClass=\"bg-accent-amber\"></sds-avatar>",
|
|
297
|
+
"stack": false,
|
|
298
|
+
"dark": false
|
|
299
|
+
}
|
|
300
|
+
]
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"className": "SdsBadge",
|
|
304
|
+
"selector": "sds-badge",
|
|
305
|
+
"kind": "component",
|
|
306
|
+
"group": "primitive",
|
|
307
|
+
"importName": "SdsBadge",
|
|
308
|
+
"description": "Petite pastille d'état ou d'étiquette, avec variantes de couleur, deux tailles et un point indicateur optionnel.",
|
|
309
|
+
"overviewDescription": "Pastilles de statut et étiquettes.",
|
|
310
|
+
"jsdoc": "Small status/label pill. Used e.g. for the \"TEST V.1.0.0\" version chip.",
|
|
311
|
+
"example": null,
|
|
312
|
+
"cva": false,
|
|
313
|
+
"usesNgModel": false,
|
|
314
|
+
"inputs": [
|
|
315
|
+
{
|
|
316
|
+
"name": "variant",
|
|
317
|
+
"type": "SdsBadgeVariant",
|
|
318
|
+
"default": "'neutral'",
|
|
319
|
+
"required": false,
|
|
320
|
+
"transform": null,
|
|
321
|
+
"alias": null,
|
|
322
|
+
"jsdoc": null
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"name": "size",
|
|
326
|
+
"type": "SdsBadgeSize",
|
|
327
|
+
"default": "'md'",
|
|
328
|
+
"required": false,
|
|
329
|
+
"transform": null,
|
|
330
|
+
"alias": null,
|
|
331
|
+
"jsdoc": null
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"name": "dot",
|
|
335
|
+
"type": "boolean",
|
|
336
|
+
"default": "false",
|
|
337
|
+
"required": false,
|
|
338
|
+
"transform": "booleanAttribute",
|
|
339
|
+
"alias": null,
|
|
340
|
+
"jsdoc": null
|
|
341
|
+
}
|
|
342
|
+
],
|
|
343
|
+
"outputs": [],
|
|
344
|
+
"exportedTypes": [
|
|
345
|
+
{
|
|
346
|
+
"name": "SdsBadgeVariant",
|
|
347
|
+
"kind": "union",
|
|
348
|
+
"body": "| 'neutral' | 'brand' | 'info' | 'success' | 'warning' | 'danger'"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"name": "SdsBadgeSize",
|
|
352
|
+
"kind": "union",
|
|
353
|
+
"body": "'sm' | 'md'"
|
|
354
|
+
}
|
|
355
|
+
],
|
|
356
|
+
"projectionSlots": [],
|
|
357
|
+
"hostBindings": {
|
|
358
|
+
"class": "inline-flex"
|
|
359
|
+
},
|
|
360
|
+
"examples": [
|
|
361
|
+
{
|
|
362
|
+
"sectionTitle": "Variantes",
|
|
363
|
+
"sectionDescription": null,
|
|
364
|
+
"code": "<sds-badge variant=\"neutral\">Neutre</sds-badge>\n<sds-badge variant=\"brand\">Service</sds-badge>\n<sds-badge variant=\"info\">Information</sds-badge>\n<sds-badge variant=\"success\">Validé</sds-badge>\n<sds-badge variant=\"warning\">En attente</sds-badge>\n<sds-badge variant=\"danger\">Urgent</sds-badge>",
|
|
365
|
+
"runnableExample": "<sds-badge variant=\"neutral\">Neutre</sds-badge>\n <sds-badge variant=\"brand\">Service</sds-badge>\n <sds-badge variant=\"info\">Information</sds-badge>\n <sds-badge variant=\"success\">Validé</sds-badge>\n <sds-badge variant=\"warning\">En attente</sds-badge>\n <sds-badge variant=\"danger\">Urgent</sds-badge>",
|
|
366
|
+
"stack": false,
|
|
367
|
+
"dark": false
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"sectionTitle": "Avec point",
|
|
371
|
+
"sectionDescription": null,
|
|
372
|
+
"code": "<sds-badge variant=\"success\" dot>Actif</sds-badge>\n<sds-badge variant=\"warning\" dot>Test V.1.0.0</sds-badge>\n<sds-badge variant=\"danger\" dot>Hors service</sds-badge>\n<sds-badge variant=\"info\" dot>En cours</sds-badge>",
|
|
373
|
+
"runnableExample": "<sds-badge variant=\"success\" dot>Actif</sds-badge>\n <sds-badge variant=\"warning\" dot>Test V.1.0.0</sds-badge>\n <sds-badge variant=\"danger\" dot>Hors service</sds-badge>\n <sds-badge variant=\"info\" dot>En cours</sds-badge>",
|
|
374
|
+
"stack": false,
|
|
375
|
+
"dark": false
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"sectionTitle": "Tailles",
|
|
379
|
+
"sectionDescription": null,
|
|
380
|
+
"code": "<sds-badge variant=\"brand\" size=\"sm\">Petite</sds-badge>\n<sds-badge variant=\"brand\" size=\"md\">Moyenne</sds-badge>",
|
|
381
|
+
"runnableExample": "<sds-badge variant=\"brand\" size=\"sm\">Petite</sds-badge>\n <sds-badge variant=\"brand\" size=\"md\">Moyenne</sds-badge>",
|
|
382
|
+
"stack": false,
|
|
383
|
+
"dark": false
|
|
384
|
+
}
|
|
385
|
+
]
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"className": "SdsButton",
|
|
389
|
+
"selector": "sds-button",
|
|
390
|
+
"kind": "component",
|
|
391
|
+
"group": "primitive",
|
|
392
|
+
"importName": "SdsButton",
|
|
393
|
+
"description": "Bouton d'action avec variantes, tailles, états de chargement et icônes.",
|
|
394
|
+
"overviewDescription": "Boutons d'action : variantes, tailles, états et icônes.",
|
|
395
|
+
"jsdoc": "Brand button. Project an <sds-icon sdsIconLeading/> or <sds-icon sdsIconTrailing/>\nfor icons, or set [iconOnly]=\"true\" for a square icon button.",
|
|
396
|
+
"example": "<sds-button variant=\"primary\" (click)=\"save()\">Enregistrer</sds-button>",
|
|
397
|
+
"cva": false,
|
|
398
|
+
"usesNgModel": false,
|
|
399
|
+
"inputs": [
|
|
400
|
+
{
|
|
401
|
+
"name": "variant",
|
|
402
|
+
"type": "SdsButtonVariant",
|
|
403
|
+
"default": "'primary'",
|
|
404
|
+
"required": false,
|
|
405
|
+
"transform": null,
|
|
406
|
+
"alias": null,
|
|
407
|
+
"jsdoc": null
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"name": "size",
|
|
411
|
+
"type": "SdsButtonSize",
|
|
412
|
+
"default": "'md'",
|
|
413
|
+
"required": false,
|
|
414
|
+
"transform": null,
|
|
415
|
+
"alias": null,
|
|
416
|
+
"jsdoc": null
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"name": "type",
|
|
420
|
+
"type": "'button' | 'submit' | 'reset'",
|
|
421
|
+
"default": "'button'",
|
|
422
|
+
"required": false,
|
|
423
|
+
"transform": null,
|
|
424
|
+
"alias": null,
|
|
425
|
+
"jsdoc": null
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"name": "disabled",
|
|
429
|
+
"type": "boolean",
|
|
430
|
+
"default": "false",
|
|
431
|
+
"required": false,
|
|
432
|
+
"transform": "booleanAttribute",
|
|
433
|
+
"alias": null,
|
|
434
|
+
"jsdoc": null
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"name": "loading",
|
|
438
|
+
"type": "boolean",
|
|
439
|
+
"default": "false",
|
|
440
|
+
"required": false,
|
|
441
|
+
"transform": "booleanAttribute",
|
|
442
|
+
"alias": null,
|
|
443
|
+
"jsdoc": null
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"name": "block",
|
|
447
|
+
"type": "boolean",
|
|
448
|
+
"default": "false",
|
|
449
|
+
"required": false,
|
|
450
|
+
"transform": "booleanAttribute",
|
|
451
|
+
"alias": null,
|
|
452
|
+
"jsdoc": "Full-width button."
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"name": "iconOnly",
|
|
456
|
+
"type": "boolean",
|
|
457
|
+
"default": "false",
|
|
458
|
+
"required": false,
|
|
459
|
+
"transform": "booleanAttribute",
|
|
460
|
+
"alias": null,
|
|
461
|
+
"jsdoc": "Square icon-only button (provide [ariaLabel] for accessibility)."
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
"name": "ariaLabel",
|
|
465
|
+
"type": "string | null",
|
|
466
|
+
"default": "null",
|
|
467
|
+
"required": false,
|
|
468
|
+
"transform": null,
|
|
469
|
+
"alias": null,
|
|
470
|
+
"jsdoc": null
|
|
471
|
+
}
|
|
472
|
+
],
|
|
473
|
+
"outputs": [],
|
|
474
|
+
"exportedTypes": [
|
|
475
|
+
{
|
|
476
|
+
"name": "SdsButtonVariant",
|
|
477
|
+
"kind": "union",
|
|
478
|
+
"body": "| 'primary' | 'secondary' | 'tertiary' | 'ghost' | 'danger'"
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"name": "SdsButtonSize",
|
|
482
|
+
"kind": "union",
|
|
483
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
484
|
+
}
|
|
485
|
+
],
|
|
486
|
+
"projectionSlots": [
|
|
487
|
+
"[sdsIconLeading]",
|
|
488
|
+
"[sdsIconTrailing]"
|
|
489
|
+
],
|
|
490
|
+
"hostBindings": {
|
|
491
|
+
"[class]": "hostClass()",
|
|
492
|
+
"[attr.aria-disabled]": "(disabled() || loading()) ? \"true\" : null",
|
|
493
|
+
"[style.pointer-events]": "(disabled() || loading()) ? \"none\" : null",
|
|
494
|
+
"(click)": "onHostClick($event)"
|
|
495
|
+
},
|
|
496
|
+
"examples": [
|
|
497
|
+
{
|
|
498
|
+
"sectionTitle": "Variantes",
|
|
499
|
+
"sectionDescription": null,
|
|
500
|
+
"code": "<sds-button variant=\"primary\">Primary</sds-button>\n<sds-button variant=\"secondary\">Secondary</sds-button>\n<sds-button variant=\"tertiary\">Tertiary</sds-button>\n<sds-button variant=\"ghost\">Ghost</sds-button>\n<sds-button variant=\"danger\">Danger</sds-button>",
|
|
501
|
+
"runnableExample": "<sds-button variant=\"primary\">Primary</sds-button>\n <sds-button variant=\"secondary\">Secondary</sds-button>\n <sds-button variant=\"tertiary\">Tertiary</sds-button>\n <sds-button variant=\"ghost\">Ghost</sds-button>\n <sds-button variant=\"danger\">Danger</sds-button>",
|
|
502
|
+
"stack": false,
|
|
503
|
+
"dark": false
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
"sectionTitle": "Tailles",
|
|
507
|
+
"sectionDescription": null,
|
|
508
|
+
"code": "<sds-button size=\"sm\">Small</sds-button>\n<sds-button size=\"md\">Medium</sds-button>\n<sds-button size=\"lg\">Large</sds-button>",
|
|
509
|
+
"runnableExample": "<sds-button size=\"sm\">Small</sds-button>\n <sds-button size=\"md\">Medium</sds-button>\n <sds-button size=\"lg\">Large</sds-button>",
|
|
510
|
+
"stack": false,
|
|
511
|
+
"dark": false
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"sectionTitle": "États",
|
|
515
|
+
"sectionDescription": null,
|
|
516
|
+
"code": "<sds-button disabled>Désactivé</sds-button>\n<sds-button loading>Chargement</sds-button>",
|
|
517
|
+
"runnableExample": "<sds-button disabled>Désactivé</sds-button>\n <sds-button loading>Chargement</sds-button>",
|
|
518
|
+
"stack": false,
|
|
519
|
+
"dark": false
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"sectionTitle": "Avec icônes",
|
|
523
|
+
"sectionDescription": null,
|
|
524
|
+
"code": "<sds-button variant=\"primary\">\n <sds-icon sdsIconLeading name=\"user-plus\" [size]=\"18\" />\n Créer un membre\n</sds-button>\n\n<sds-button variant=\"secondary\">\n Suivant\n <sds-icon sdsIconTrailing name=\"chevron-right\" [size]=\"18\" />\n</sds-button>",
|
|
525
|
+
"runnableExample": "<sds-button variant=\"primary\">\n <sds-icon sdsIconLeading name=\"user-plus\" [size]=\"18\" />\n Créer un membre\n </sds-button>\n <sds-button variant=\"secondary\">\n Suivant\n <sds-icon sdsIconTrailing name=\"chevron-right\" [size]=\"18\" />\n </sds-button>",
|
|
526
|
+
"stack": false,
|
|
527
|
+
"dark": false
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"sectionTitle": "Bouton icône seul",
|
|
531
|
+
"sectionDescription": "Fournissez ariaLabel pour l'accessibilité.",
|
|
532
|
+
"code": "<sds-button iconOnly ariaLabel=\"Paramètres\" variant=\"secondary\">\n <sds-icon sdsIconLeading name=\"settings\" [size]=\"18\" />\n</sds-button>",
|
|
533
|
+
"runnableExample": "<sds-button iconOnly ariaLabel=\"Paramètres\" variant=\"secondary\">\n <sds-icon sdsIconLeading name=\"settings\" [size]=\"18\" />\n </sds-button>\n <sds-button iconOnly ariaLabel=\"Rechercher\" variant=\"ghost\">\n <sds-icon sdsIconLeading name=\"search\" [size]=\"18\" />\n </sds-button>",
|
|
534
|
+
"stack": false,
|
|
535
|
+
"dark": false
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"sectionTitle": "Pleine largeur",
|
|
539
|
+
"sectionDescription": null,
|
|
540
|
+
"code": "<sds-button block variant=\"primary\">Enregistrer</sds-button>",
|
|
541
|
+
"runnableExample": "<sds-button block variant=\"primary\">Enregistrer</sds-button>",
|
|
542
|
+
"stack": true,
|
|
543
|
+
"dark": false
|
|
544
|
+
}
|
|
545
|
+
]
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"className": "SdsCalendar",
|
|
549
|
+
"selector": "sds-calendar",
|
|
550
|
+
"kind": "component",
|
|
551
|
+
"group": "form",
|
|
552
|
+
"importName": "SdsCalendar",
|
|
553
|
+
"description": null,
|
|
554
|
+
"overviewDescription": null,
|
|
555
|
+
"jsdoc": "Inline month calendar with day → month → year drill-down navigation,\nmin/max bounds and keyboard support. Used standalone (inline) or inside\n<sds-date-picker>.",
|
|
556
|
+
"example": null,
|
|
557
|
+
"cva": false,
|
|
558
|
+
"usesNgModel": false,
|
|
559
|
+
"inputs": [
|
|
560
|
+
{
|
|
561
|
+
"name": "value",
|
|
562
|
+
"type": "Date | null",
|
|
563
|
+
"default": "null",
|
|
564
|
+
"required": false,
|
|
565
|
+
"transform": null,
|
|
566
|
+
"alias": null,
|
|
567
|
+
"jsdoc": null
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"name": "min",
|
|
571
|
+
"type": "Date | null",
|
|
572
|
+
"default": "null",
|
|
573
|
+
"required": false,
|
|
574
|
+
"transform": null,
|
|
575
|
+
"alias": null,
|
|
576
|
+
"jsdoc": null
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"name": "max",
|
|
580
|
+
"type": "Date | null",
|
|
581
|
+
"default": "null",
|
|
582
|
+
"required": false,
|
|
583
|
+
"transform": null,
|
|
584
|
+
"alias": null,
|
|
585
|
+
"jsdoc": null
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
"name": "firstDayOfWeek",
|
|
589
|
+
"type": "0 | 1",
|
|
590
|
+
"default": "1",
|
|
591
|
+
"required": false,
|
|
592
|
+
"transform": null,
|
|
593
|
+
"alias": null,
|
|
594
|
+
"jsdoc": "0 = Sunday, 1 = Monday (default, European)."
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
"name": "locale",
|
|
598
|
+
"type": "string",
|
|
599
|
+
"default": "'fr-FR'",
|
|
600
|
+
"required": false,
|
|
601
|
+
"transform": null,
|
|
602
|
+
"alias": null,
|
|
603
|
+
"jsdoc": null
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"name": "showActions",
|
|
607
|
+
"type": "boolean",
|
|
608
|
+
"default": "true",
|
|
609
|
+
"required": false,
|
|
610
|
+
"transform": null,
|
|
611
|
+
"alias": null,
|
|
612
|
+
"jsdoc": null
|
|
613
|
+
}
|
|
614
|
+
],
|
|
615
|
+
"outputs": [
|
|
616
|
+
{
|
|
617
|
+
"name": "valueChange",
|
|
618
|
+
"type": "Date | null",
|
|
619
|
+
"fromModel": true
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"name": "dateSelect",
|
|
623
|
+
"type": "Date",
|
|
624
|
+
"fromModel": false
|
|
625
|
+
}
|
|
626
|
+
],
|
|
627
|
+
"exportedTypes": [],
|
|
628
|
+
"projectionSlots": [],
|
|
629
|
+
"hostBindings": {
|
|
630
|
+
"class": "block"
|
|
631
|
+
},
|
|
632
|
+
"examples": []
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
"className": "SdsCard",
|
|
636
|
+
"selector": "sds-card",
|
|
637
|
+
"kind": "component",
|
|
638
|
+
"group": "primitive",
|
|
639
|
+
"importName": "SdsCard",
|
|
640
|
+
"description": "Conteneur de surface générique avec variantes, padding configurable et affordance interactive au survol.",
|
|
641
|
+
"overviewDescription": "Conteneurs de surface : élevé, contour, subtil.",
|
|
642
|
+
"jsdoc": "Generic surface container. Set [interactive]=\"true\" for hover affordance\n(used by the dashboard action cards).",
|
|
643
|
+
"example": null,
|
|
644
|
+
"cva": false,
|
|
645
|
+
"usesNgModel": false,
|
|
646
|
+
"inputs": [
|
|
647
|
+
{
|
|
648
|
+
"name": "variant",
|
|
649
|
+
"type": "SdsCardVariant",
|
|
650
|
+
"default": "'elevated'",
|
|
651
|
+
"required": false,
|
|
652
|
+
"transform": null,
|
|
653
|
+
"alias": null,
|
|
654
|
+
"jsdoc": null
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
"name": "padding",
|
|
658
|
+
"type": "string",
|
|
659
|
+
"default": "'p-5'",
|
|
660
|
+
"required": false,
|
|
661
|
+
"transform": null,
|
|
662
|
+
"alias": null,
|
|
663
|
+
"jsdoc": "Inner padding utility (override with e.g. \"p-4\")."
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
"name": "interactive",
|
|
667
|
+
"type": "boolean",
|
|
668
|
+
"default": "false",
|
|
669
|
+
"required": false,
|
|
670
|
+
"transform": "booleanAttribute",
|
|
671
|
+
"alias": null,
|
|
672
|
+
"jsdoc": null
|
|
673
|
+
}
|
|
674
|
+
],
|
|
675
|
+
"outputs": [],
|
|
676
|
+
"exportedTypes": [
|
|
677
|
+
{
|
|
678
|
+
"name": "SdsCardVariant",
|
|
679
|
+
"kind": "union",
|
|
680
|
+
"body": "'elevated' | 'outlined' | 'subtle'"
|
|
681
|
+
}
|
|
682
|
+
],
|
|
683
|
+
"projectionSlots": [],
|
|
684
|
+
"hostBindings": {
|
|
685
|
+
"[class]": "hostClass()"
|
|
686
|
+
},
|
|
687
|
+
"examples": [
|
|
688
|
+
{
|
|
689
|
+
"sectionTitle": "Variantes",
|
|
690
|
+
"sectionDescription": null,
|
|
691
|
+
"code": "<sds-card variant=\"elevated\">\n <div class=\"text-ink font-semibold\">Effectif du service</div>\n <div class=\"text-sm text-ink-soft\">\n 24 soignants planifiés aujourd'hui sur l'unité de cardiologie.\n </div>\n</sds-card>\n<sds-card variant=\"outlined\">\n <div class=\"text-ink font-semibold\">Demandes de congés</div>\n <div class=\"text-sm text-ink-soft\">\n 3 demandes en attente de validation par le cadre de santé.\n </div>\n</sds-card>\n<sds-card variant=\"subtle\">\n <div class=\"text-ink font-semibold\">Heures supplémentaires</div>\n <div class=\"text-sm text-ink-soft\">\n Total cumulé de 18 h sur la semaine pour l'équipe de nuit.\n </div>\n</sds-card>",
|
|
692
|
+
"runnableExample": "<sds-card variant=\"elevated\">\n <div class=\"text-ink font-semibold\">Effectif du service</div>\n <div class=\"text-sm text-ink-soft\">\n 24 soignants planifiés aujourd'hui sur l'unité de cardiologie.\n </div>\n </sds-card>\n <sds-card variant=\"outlined\">\n <div class=\"text-ink font-semibold\">Demandes de congés</div>\n <div class=\"text-sm text-ink-soft\">\n 3 demandes en attente de validation par le cadre de santé.\n </div>\n </sds-card>\n <sds-card variant=\"subtle\">\n <div class=\"text-ink font-semibold\">Heures supplémentaires</div>\n <div class=\"text-sm text-ink-soft\">\n Total cumulé de 18 h sur la semaine pour l'équipe de nuit.\n </div>\n </sds-card>",
|
|
693
|
+
"stack": true,
|
|
694
|
+
"dark": false
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
"sectionTitle": "Interactif",
|
|
698
|
+
"sectionDescription": null,
|
|
699
|
+
"code": "<sds-card interactive>\n <div class=\"text-ink font-semibold\">Planifier une garde</div>\n <div class=\"text-sm text-ink-soft\">\n Survolez cette carte pour afficher l'affordance de clic, puis ouvrez le planning du service.\n </div>\n</sds-card>",
|
|
700
|
+
"runnableExample": "<sds-card interactive>\n <div class=\"text-ink font-semibold\">Planifier une garde</div>\n <div class=\"text-sm text-ink-soft\">\n Survolez cette carte pour afficher l'affordance de clic, puis ouvrez le planning du service.\n </div>\n </sds-card>",
|
|
701
|
+
"stack": true,
|
|
702
|
+
"dark": false
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
"sectionTitle": "Padding personnalisé",
|
|
706
|
+
"sectionDescription": null,
|
|
707
|
+
"code": "<sds-card variant=\"outlined\" padding=\"p-8\">\n <div class=\"text-ink font-semibold\">Note du cadre de santé</div>\n <div class=\"text-sm text-ink-soft\">\n Espacement intérieur élargi (p-8) pour les contenus mis en avant.\n </div>\n</sds-card>",
|
|
708
|
+
"runnableExample": "<sds-card variant=\"outlined\" padding=\"p-8\">\n <div class=\"text-ink font-semibold\">Note du cadre de santé</div>\n <div class=\"text-sm text-ink-soft\">\n Espacement intérieur élargi (p-8) pour les contenus mis en avant.\n </div>\n </sds-card>",
|
|
709
|
+
"stack": true,
|
|
710
|
+
"dark": false
|
|
711
|
+
}
|
|
712
|
+
]
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
"className": "SdsCheckbox",
|
|
716
|
+
"selector": "sds-checkbox",
|
|
717
|
+
"kind": "component",
|
|
718
|
+
"group": "form",
|
|
719
|
+
"importName": "SdsCheckbox",
|
|
720
|
+
"description": null,
|
|
721
|
+
"overviewDescription": null,
|
|
722
|
+
"jsdoc": "Boolean checkbox. Implements ControlValueAccessor — use with reactive forms\nor `[(ngModel)]`. Renders a styled box (brand-filled with a check when on)\nand an optional inline label.",
|
|
723
|
+
"example": "<sds-checkbox label=\"Fusion automatique\" [(ngModel)]=\"autoMerge\" />",
|
|
724
|
+
"cva": true,
|
|
725
|
+
"usesNgModel": true,
|
|
726
|
+
"inputs": [
|
|
727
|
+
{
|
|
728
|
+
"name": "label",
|
|
729
|
+
"type": "string",
|
|
730
|
+
"default": "''",
|
|
731
|
+
"required": false,
|
|
732
|
+
"transform": null,
|
|
733
|
+
"alias": null,
|
|
734
|
+
"jsdoc": null
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
"name": "ariaLabel",
|
|
738
|
+
"type": "string",
|
|
739
|
+
"default": "''",
|
|
740
|
+
"required": false,
|
|
741
|
+
"transform": null,
|
|
742
|
+
"alias": null,
|
|
743
|
+
"jsdoc": "Accessible name used when no visible [label] is provided."
|
|
744
|
+
},
|
|
745
|
+
{
|
|
746
|
+
"name": "size",
|
|
747
|
+
"type": "SdsCheckboxSize",
|
|
748
|
+
"default": "'md'",
|
|
749
|
+
"required": false,
|
|
750
|
+
"transform": null,
|
|
751
|
+
"alias": null,
|
|
752
|
+
"jsdoc": null
|
|
753
|
+
},
|
|
754
|
+
{
|
|
755
|
+
"name": "disabled",
|
|
756
|
+
"type": "boolean",
|
|
757
|
+
"default": "false",
|
|
758
|
+
"required": false,
|
|
759
|
+
"transform": "booleanAttribute",
|
|
760
|
+
"alias": null,
|
|
761
|
+
"jsdoc": null
|
|
762
|
+
}
|
|
763
|
+
],
|
|
764
|
+
"outputs": [],
|
|
765
|
+
"exportedTypes": [
|
|
766
|
+
{
|
|
767
|
+
"name": "SdsCheckboxSize",
|
|
768
|
+
"kind": "union",
|
|
769
|
+
"body": "'sm' | 'md'"
|
|
770
|
+
}
|
|
771
|
+
],
|
|
772
|
+
"projectionSlots": [],
|
|
773
|
+
"hostBindings": {
|
|
774
|
+
"class": "inline-flex"
|
|
775
|
+
},
|
|
776
|
+
"examples": []
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
"className": "SdsDatePicker",
|
|
780
|
+
"selector": "sds-date-picker",
|
|
781
|
+
"kind": "component",
|
|
782
|
+
"group": "form",
|
|
783
|
+
"importName": "SdsDatePicker",
|
|
784
|
+
"description": "Sélecteur de date : champ avec calendrier en surimpression (navigation jour → mois → année), ou calendrier en ligne. Bornes min/max, effacement, et support clavier. Implémente ControlValueAccessor (valeur Date | null).",
|
|
785
|
+
"overviewDescription": "Sélecteur de date avec calendrier, bornes et mode inline.",
|
|
786
|
+
"jsdoc": "Date picker: a read-only field that opens a calendar overlay, or an inline\ncalendar. Implements ControlValueAccessor — use with reactive forms or\n[(ngModel)]; the value is a `Date | null`.",
|
|
787
|
+
"example": "<sds-date-picker label=\"Date de garde\" [(ngModel)]=\"date\" />",
|
|
788
|
+
"cva": true,
|
|
789
|
+
"usesNgModel": true,
|
|
790
|
+
"inputs": [
|
|
791
|
+
{
|
|
792
|
+
"name": "label",
|
|
793
|
+
"type": "string",
|
|
794
|
+
"default": "''",
|
|
795
|
+
"required": false,
|
|
796
|
+
"transform": null,
|
|
797
|
+
"alias": null,
|
|
798
|
+
"jsdoc": null
|
|
799
|
+
},
|
|
800
|
+
{
|
|
801
|
+
"name": "ariaLabel",
|
|
802
|
+
"type": "string",
|
|
803
|
+
"default": "''",
|
|
804
|
+
"required": false,
|
|
805
|
+
"transform": null,
|
|
806
|
+
"alias": null,
|
|
807
|
+
"jsdoc": null
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"name": "placeholder",
|
|
811
|
+
"type": "string",
|
|
812
|
+
"default": "'jj/mm/aaaa'",
|
|
813
|
+
"required": false,
|
|
814
|
+
"transform": null,
|
|
815
|
+
"alias": null,
|
|
816
|
+
"jsdoc": null
|
|
817
|
+
},
|
|
818
|
+
{
|
|
819
|
+
"name": "hint",
|
|
820
|
+
"type": "string",
|
|
821
|
+
"default": "''",
|
|
822
|
+
"required": false,
|
|
823
|
+
"transform": null,
|
|
824
|
+
"alias": null,
|
|
825
|
+
"jsdoc": null
|
|
826
|
+
},
|
|
827
|
+
{
|
|
828
|
+
"name": "error",
|
|
829
|
+
"type": "string",
|
|
830
|
+
"default": "''",
|
|
831
|
+
"required": false,
|
|
832
|
+
"transform": null,
|
|
833
|
+
"alias": null,
|
|
834
|
+
"jsdoc": null
|
|
835
|
+
},
|
|
836
|
+
{
|
|
837
|
+
"name": "size",
|
|
838
|
+
"type": "SdsDatePickerSize",
|
|
839
|
+
"default": "'md'",
|
|
840
|
+
"required": false,
|
|
841
|
+
"transform": null,
|
|
842
|
+
"alias": null,
|
|
843
|
+
"jsdoc": null
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
"name": "min",
|
|
847
|
+
"type": "Date | null",
|
|
848
|
+
"default": "null",
|
|
849
|
+
"required": false,
|
|
850
|
+
"transform": null,
|
|
851
|
+
"alias": null,
|
|
852
|
+
"jsdoc": null
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"name": "max",
|
|
856
|
+
"type": "Date | null",
|
|
857
|
+
"default": "null",
|
|
858
|
+
"required": false,
|
|
859
|
+
"transform": null,
|
|
860
|
+
"alias": null,
|
|
861
|
+
"jsdoc": null
|
|
862
|
+
},
|
|
863
|
+
{
|
|
864
|
+
"name": "firstDayOfWeek",
|
|
865
|
+
"type": "0 | 1",
|
|
866
|
+
"default": "1",
|
|
867
|
+
"required": false,
|
|
868
|
+
"transform": null,
|
|
869
|
+
"alias": null,
|
|
870
|
+
"jsdoc": null
|
|
871
|
+
},
|
|
872
|
+
{
|
|
873
|
+
"name": "locale",
|
|
874
|
+
"type": "string",
|
|
875
|
+
"default": "'fr-FR'",
|
|
876
|
+
"required": false,
|
|
877
|
+
"transform": null,
|
|
878
|
+
"alias": null,
|
|
879
|
+
"jsdoc": null
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
"name": "inline",
|
|
883
|
+
"type": "boolean",
|
|
884
|
+
"default": "false",
|
|
885
|
+
"required": false,
|
|
886
|
+
"transform": "booleanAttribute",
|
|
887
|
+
"alias": null,
|
|
888
|
+
"jsdoc": null
|
|
889
|
+
},
|
|
890
|
+
{
|
|
891
|
+
"name": "clearable",
|
|
892
|
+
"type": "boolean",
|
|
893
|
+
"default": "true",
|
|
894
|
+
"required": false,
|
|
895
|
+
"transform": "booleanAttribute",
|
|
896
|
+
"alias": null,
|
|
897
|
+
"jsdoc": null
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
"name": "showActions",
|
|
901
|
+
"type": "boolean",
|
|
902
|
+
"default": "true",
|
|
903
|
+
"required": false,
|
|
904
|
+
"transform": "booleanAttribute",
|
|
905
|
+
"alias": null,
|
|
906
|
+
"jsdoc": null
|
|
907
|
+
},
|
|
908
|
+
{
|
|
909
|
+
"name": "disabled",
|
|
910
|
+
"type": "boolean",
|
|
911
|
+
"default": "false",
|
|
912
|
+
"required": false,
|
|
913
|
+
"transform": "booleanAttribute",
|
|
914
|
+
"alias": null,
|
|
915
|
+
"jsdoc": null
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
"name": "format",
|
|
919
|
+
"type": "(d: Date) => string",
|
|
920
|
+
"default": "formatDdMmYyyy",
|
|
921
|
+
"required": false,
|
|
922
|
+
"transform": null,
|
|
923
|
+
"alias": null,
|
|
924
|
+
"jsdoc": "Custom display formatter (default dd/MM/yyyy)."
|
|
925
|
+
}
|
|
926
|
+
],
|
|
927
|
+
"outputs": [],
|
|
928
|
+
"exportedTypes": [
|
|
929
|
+
{
|
|
930
|
+
"name": "SdsDatePickerSize",
|
|
931
|
+
"kind": "union",
|
|
932
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
933
|
+
}
|
|
934
|
+
],
|
|
935
|
+
"projectionSlots": [],
|
|
936
|
+
"hostBindings": {
|
|
937
|
+
"class": "block",
|
|
938
|
+
"(document:click)": "onDocumentClick($event)",
|
|
939
|
+
"(keydown.escape)": "close(true)"
|
|
940
|
+
},
|
|
941
|
+
"examples": [
|
|
942
|
+
{
|
|
943
|
+
"sectionTitle": "Basique",
|
|
944
|
+
"sectionDescription": null,
|
|
945
|
+
"code": "<sds-date-picker label=\"Date de garde\" placeholder=\"jj/mm/aaaa\" />",
|
|
946
|
+
"runnableExample": "<sds-date-picker label=\"Date de garde\" placeholder=\"jj/mm/aaaa\" />",
|
|
947
|
+
"stack": true,
|
|
948
|
+
"dark": false
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
"sectionTitle": "Lié au formulaire (ngModel)",
|
|
952
|
+
"sectionDescription": "La valeur est un objet Date.",
|
|
953
|
+
"code": "<sds-date-picker label=\"Date de garde\" [(ngModel)]=\"date\" />\n<p>Sélection : {{ date ? display(date) : '—' }}</p>\n\n// date: Date | null = null;",
|
|
954
|
+
"runnableExample": "<sds-date-picker label=\"Date de garde\" [(ngModel)]=\"date\" />\n <p class=\"text-sm text-ink-soft\">\n Sélection : <span class=\"font-medium text-ink\">{{ date ? display(date) : '—' }}</span>\n </p>",
|
|
955
|
+
"stack": true,
|
|
956
|
+
"dark": false
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
"sectionTitle": "Bornes (min / max)",
|
|
960
|
+
"sectionDescription": "Les dates hors de l'intervalle sont désactivées.",
|
|
961
|
+
"code": "<sds-date-picker label=\"Dans les 45 prochains jours\" [min]=\"min\" [max]=\"max\" />\n\n// min = new Date(); // aujourd'hui\n// max = new Date(); max.setDate(max.getDate() + 45);",
|
|
962
|
+
"runnableExample": "<sds-date-picker label=\"Dans les 45 prochains jours\" [min]=\"min\" [max]=\"max\" />",
|
|
963
|
+
"stack": true,
|
|
964
|
+
"dark": false
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
"sectionTitle": "Calendrier en ligne (inline)",
|
|
968
|
+
"sectionDescription": null,
|
|
969
|
+
"code": "<sds-date-picker inline [(ngModel)]=\"date2\" />",
|
|
970
|
+
"runnableExample": "<sds-date-picker inline [(ngModel)]=\"date2\" />",
|
|
971
|
+
"stack": true,
|
|
972
|
+
"dark": false
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
"sectionTitle": "Désactivé",
|
|
976
|
+
"sectionDescription": null,
|
|
977
|
+
"code": "<sds-date-picker label=\"Indisponible\" disabled />",
|
|
978
|
+
"runnableExample": "<sds-date-picker label=\"Indisponible\" disabled />",
|
|
979
|
+
"stack": true,
|
|
980
|
+
"dark": false
|
|
981
|
+
}
|
|
982
|
+
]
|
|
983
|
+
},
|
|
984
|
+
{
|
|
985
|
+
"className": "SdsIcon",
|
|
986
|
+
"selector": "sds-icon",
|
|
987
|
+
"kind": "component",
|
|
988
|
+
"group": "primitive",
|
|
989
|
+
"importName": "SdsIcon",
|
|
990
|
+
"description": "Icône SVG vectorielle issue d'un registre interne, avec taille et épaisseur de trait ajustables.",
|
|
991
|
+
"overviewDescription": "Bibliothèque d'icônes SVG intégrée.",
|
|
992
|
+
"jsdoc": "Inline SVG icon backed by a curated, dependency-free registry.",
|
|
993
|
+
"example": "<sds-icon name=\"search\" />\n<sds-icon name=\"home\" [size]=\"18\" />",
|
|
994
|
+
"cva": false,
|
|
995
|
+
"usesNgModel": false,
|
|
996
|
+
"inputs": [
|
|
997
|
+
{
|
|
998
|
+
"name": "name",
|
|
999
|
+
"type": "SdsIconName",
|
|
1000
|
+
"default": null,
|
|
1001
|
+
"required": true,
|
|
1002
|
+
"transform": null,
|
|
1003
|
+
"alias": null,
|
|
1004
|
+
"jsdoc": "Icon identifier from the registry."
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
"name": "size",
|
|
1008
|
+
"type": "number | string",
|
|
1009
|
+
"default": "20",
|
|
1010
|
+
"required": false,
|
|
1011
|
+
"transform": "toIconPx",
|
|
1012
|
+
"alias": null,
|
|
1013
|
+
"jsdoc": "Square size: a pixel number, a numeric string, or a keyword (sm·md·lg·xl)."
|
|
1014
|
+
},
|
|
1015
|
+
{
|
|
1016
|
+
"name": "strokeWidth",
|
|
1017
|
+
"type": "number",
|
|
1018
|
+
"default": "2",
|
|
1019
|
+
"required": false,
|
|
1020
|
+
"transform": null,
|
|
1021
|
+
"alias": null,
|
|
1022
|
+
"jsdoc": "Stroke width of the line icon."
|
|
1023
|
+
}
|
|
1024
|
+
],
|
|
1025
|
+
"outputs": [],
|
|
1026
|
+
"exportedTypes": [
|
|
1027
|
+
{
|
|
1028
|
+
"name": "SdsIconSize",
|
|
1029
|
+
"kind": "union",
|
|
1030
|
+
"body": "'sm' | 'md' | 'lg' | 'xl'"
|
|
1031
|
+
}
|
|
1032
|
+
],
|
|
1033
|
+
"projectionSlots": [],
|
|
1034
|
+
"hostBindings": {
|
|
1035
|
+
"class": "sds-icon inline-flex shrink-0 items-center justify-center",
|
|
1036
|
+
"[style.width.px]": "size()",
|
|
1037
|
+
"[style.height.px]": "size()",
|
|
1038
|
+
"[innerHTML]": "svg()",
|
|
1039
|
+
"[attr.aria-hidden]": "\"true\""
|
|
1040
|
+
},
|
|
1041
|
+
"examples": [
|
|
1042
|
+
{
|
|
1043
|
+
"sectionTitle": "Usage",
|
|
1044
|
+
"sectionDescription": null,
|
|
1045
|
+
"code": "<sds-icon name=\"home\" />\n<sds-icon name=\"search\" />\n<sds-icon name=\"user-plus\" />\n<sds-icon name=\"bell\" />",
|
|
1046
|
+
"runnableExample": "<sds-icon name=\"home\" />\n <sds-icon name=\"search\" />\n <sds-icon name=\"user-plus\" />\n <sds-icon name=\"bell\" />",
|
|
1047
|
+
"stack": false,
|
|
1048
|
+
"dark": false
|
|
1049
|
+
},
|
|
1050
|
+
{
|
|
1051
|
+
"sectionTitle": "Tailles",
|
|
1052
|
+
"sectionDescription": null,
|
|
1053
|
+
"code": "<sds-icon name=\"calendar\" [size]=\"16\" />\n<sds-icon name=\"calendar\" [size]=\"20\" />\n<sds-icon name=\"calendar\" [size]=\"24\" />\n<sds-icon name=\"calendar\" [size]=\"32\" />",
|
|
1054
|
+
"runnableExample": "<sds-icon name=\"calendar\" [size]=\"16\" />\n <sds-icon name=\"calendar\" [size]=\"20\" />\n <sds-icon name=\"calendar\" [size]=\"24\" />\n <sds-icon name=\"calendar\" [size]=\"32\" />",
|
|
1055
|
+
"stack": false,
|
|
1056
|
+
"dark": false
|
|
1057
|
+
},
|
|
1058
|
+
{
|
|
1059
|
+
"sectionTitle": "Épaisseur du trait",
|
|
1060
|
+
"sectionDescription": null,
|
|
1061
|
+
"code": "<sds-icon name=\"users\" [strokeWidth]=\"1\" />\n<sds-icon name=\"users\" [strokeWidth]=\"1.5\" />\n<sds-icon name=\"users\" [strokeWidth]=\"2\" />\n<sds-icon name=\"users\" [strokeWidth]=\"2.5\" />",
|
|
1062
|
+
"runnableExample": "<sds-icon name=\"users\" [strokeWidth]=\"1\" />\n <sds-icon name=\"users\" [strokeWidth]=\"1.5\" />\n <sds-icon name=\"users\" [strokeWidth]=\"2\" />\n <sds-icon name=\"users\" [strokeWidth]=\"2.5\" />",
|
|
1063
|
+
"stack": false,
|
|
1064
|
+
"dark": false
|
|
1065
|
+
}
|
|
1066
|
+
]
|
|
1067
|
+
},
|
|
1068
|
+
{
|
|
1069
|
+
"className": "SdsInput",
|
|
1070
|
+
"selector": "sds-input",
|
|
1071
|
+
"kind": "component",
|
|
1072
|
+
"group": "form",
|
|
1073
|
+
"importName": "SdsInput",
|
|
1074
|
+
"description": "Champ de saisie avec label, aide, erreur, tailles, icônes et bouton d'effacement. Implémente ControlValueAccessor.",
|
|
1075
|
+
"overviewDescription": "Champs de saisie avec label, aide, erreur et icônes.",
|
|
1076
|
+
"jsdoc": "Text input with label, hint/error, optional leading/trailing icons and a\nclear button. Implements ControlValueAccessor — use with reactive forms or\n[(ngModel)]. The `on-brand` appearance is tuned for dark surfaces (e.g. the\nsidebar search field).",
|
|
1077
|
+
"example": null,
|
|
1078
|
+
"cva": true,
|
|
1079
|
+
"usesNgModel": true,
|
|
1080
|
+
"inputs": [
|
|
1081
|
+
{
|
|
1082
|
+
"name": "label",
|
|
1083
|
+
"type": "string",
|
|
1084
|
+
"default": "''",
|
|
1085
|
+
"required": false,
|
|
1086
|
+
"transform": null,
|
|
1087
|
+
"alias": null,
|
|
1088
|
+
"jsdoc": null
|
|
1089
|
+
},
|
|
1090
|
+
{
|
|
1091
|
+
"name": "ariaLabel",
|
|
1092
|
+
"type": "string",
|
|
1093
|
+
"default": "''",
|
|
1094
|
+
"required": false,
|
|
1095
|
+
"transform": null,
|
|
1096
|
+
"alias": null,
|
|
1097
|
+
"jsdoc": "Accessible name used when no visible [label] is provided."
|
|
1098
|
+
},
|
|
1099
|
+
{
|
|
1100
|
+
"name": "placeholder",
|
|
1101
|
+
"type": "string",
|
|
1102
|
+
"default": "''",
|
|
1103
|
+
"required": false,
|
|
1104
|
+
"transform": null,
|
|
1105
|
+
"alias": null,
|
|
1106
|
+
"jsdoc": null
|
|
1107
|
+
},
|
|
1108
|
+
{
|
|
1109
|
+
"name": "hint",
|
|
1110
|
+
"type": "string",
|
|
1111
|
+
"default": "''",
|
|
1112
|
+
"required": false,
|
|
1113
|
+
"transform": null,
|
|
1114
|
+
"alias": null,
|
|
1115
|
+
"jsdoc": null
|
|
1116
|
+
},
|
|
1117
|
+
{
|
|
1118
|
+
"name": "error",
|
|
1119
|
+
"type": "string",
|
|
1120
|
+
"default": "''",
|
|
1121
|
+
"required": false,
|
|
1122
|
+
"transform": null,
|
|
1123
|
+
"alias": null,
|
|
1124
|
+
"jsdoc": null
|
|
1125
|
+
},
|
|
1126
|
+
{
|
|
1127
|
+
"name": "type",
|
|
1128
|
+
"type": "SdsInputType",
|
|
1129
|
+
"default": "'text'",
|
|
1130
|
+
"required": false,
|
|
1131
|
+
"transform": null,
|
|
1132
|
+
"alias": null,
|
|
1133
|
+
"jsdoc": "`search` is the semantically right type for a search field, and the template strips the WebKit\nsearch decorations that come with it. Without that, a `search` field with {@link clearable} draws\nTWO clear buttons — the component's and the browser's own, which no stylesheet can reach and which\nsits outside the field's own padding."
|
|
1134
|
+
},
|
|
1135
|
+
{
|
|
1136
|
+
"name": "size",
|
|
1137
|
+
"type": "SdsInputSize",
|
|
1138
|
+
"default": "'md'",
|
|
1139
|
+
"required": false,
|
|
1140
|
+
"transform": null,
|
|
1141
|
+
"alias": null,
|
|
1142
|
+
"jsdoc": null
|
|
1143
|
+
},
|
|
1144
|
+
{
|
|
1145
|
+
"name": "appearance",
|
|
1146
|
+
"type": "SdsInputAppearance",
|
|
1147
|
+
"default": "'default'",
|
|
1148
|
+
"required": false,
|
|
1149
|
+
"transform": null,
|
|
1150
|
+
"alias": null,
|
|
1151
|
+
"jsdoc": "`filled` is a borderless field on a muted ground, for a search box that has to sit inside a page\nrather than announce itself as a form control — a storefront's search pill above all.\n`on-brand` is the same field tuned for a dark surface."
|
|
1152
|
+
},
|
|
1153
|
+
{
|
|
1154
|
+
"name": "shape",
|
|
1155
|
+
"type": "SdsInputShape",
|
|
1156
|
+
"default": "'control'",
|
|
1157
|
+
"required": false,
|
|
1158
|
+
"transform": null,
|
|
1159
|
+
"alias": null,
|
|
1160
|
+
"jsdoc": "`pill` fully rounds the field. Separate from {@link appearance} on purpose: a bordered pill and a\nfilled box are both real designs, and folding the two axes into one enum would forbid half of them."
|
|
1161
|
+
},
|
|
1162
|
+
{
|
|
1163
|
+
"name": "disabled",
|
|
1164
|
+
"type": "boolean",
|
|
1165
|
+
"default": "false",
|
|
1166
|
+
"required": false,
|
|
1167
|
+
"transform": "booleanAttribute",
|
|
1168
|
+
"alias": null,
|
|
1169
|
+
"jsdoc": null
|
|
1170
|
+
},
|
|
1171
|
+
{
|
|
1172
|
+
"name": "clearable",
|
|
1173
|
+
"type": "boolean",
|
|
1174
|
+
"default": "false",
|
|
1175
|
+
"required": false,
|
|
1176
|
+
"transform": "booleanAttribute",
|
|
1177
|
+
"alias": null,
|
|
1178
|
+
"jsdoc": null
|
|
1179
|
+
},
|
|
1180
|
+
{
|
|
1181
|
+
"name": "clearLabel",
|
|
1182
|
+
"type": "string",
|
|
1183
|
+
"default": "'Effacer'",
|
|
1184
|
+
"required": false,
|
|
1185
|
+
"transform": null,
|
|
1186
|
+
"alias": null,
|
|
1187
|
+
"jsdoc": "Accessible name for the clear button. French default so existing consumers are unchanged, but an\napp serving more than one language MUST translate it — it is an icon-only control, so this string\nis its only name."
|
|
1188
|
+
},
|
|
1189
|
+
{
|
|
1190
|
+
"name": "leadingIcon",
|
|
1191
|
+
"type": "SdsIconName | null",
|
|
1192
|
+
"default": "null",
|
|
1193
|
+
"required": false,
|
|
1194
|
+
"transform": null,
|
|
1195
|
+
"alias": null,
|
|
1196
|
+
"jsdoc": null
|
|
1197
|
+
},
|
|
1198
|
+
{
|
|
1199
|
+
"name": "trailingIcon",
|
|
1200
|
+
"type": "SdsIconName | null",
|
|
1201
|
+
"default": "null",
|
|
1202
|
+
"required": false,
|
|
1203
|
+
"transform": null,
|
|
1204
|
+
"alias": null,
|
|
1205
|
+
"jsdoc": null
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
"name": "trailingAction",
|
|
1209
|
+
"type": "SdsIconName | null",
|
|
1210
|
+
"default": "null",
|
|
1211
|
+
"required": false,
|
|
1212
|
+
"transform": null,
|
|
1213
|
+
"alias": null,
|
|
1214
|
+
"jsdoc": "A CLICKABLE trailing icon, for the affordances that belong to the field itself — password reveal\nabove all. Distinct from {@link trailingIcon}, which is decorative and explicitly\n`pointer-events-none`; a consumer who needed a working control previously had to abandon\n`sds-input` and rebuild the whole field, losing the label/error/aria wiring with it.\n\nAlways pair it with {@link trailingActionLabel} — an icon-only button with no accessible name is\nunusable by a screen reader. For a toggle, also bind {@link trailingActionPressed}."
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
"name": "trailingActionLabel",
|
|
1218
|
+
"type": "string",
|
|
1219
|
+
"default": "''",
|
|
1220
|
+
"required": false,
|
|
1221
|
+
"transform": null,
|
|
1222
|
+
"alias": null,
|
|
1223
|
+
"jsdoc": "Accessible name for {@link trailingAction}. Translate it in the consuming app."
|
|
1224
|
+
},
|
|
1225
|
+
{
|
|
1226
|
+
"name": "trailingActionPressed",
|
|
1227
|
+
"type": "boolean | null",
|
|
1228
|
+
"default": "null",
|
|
1229
|
+
"required": false,
|
|
1230
|
+
"transform": null,
|
|
1231
|
+
"alias": null,
|
|
1232
|
+
"jsdoc": "`aria-pressed` for a toggling action (e.g. show/hide password). Null renders no attribute."
|
|
1233
|
+
}
|
|
1234
|
+
],
|
|
1235
|
+
"outputs": [
|
|
1236
|
+
{
|
|
1237
|
+
"name": "trailingActionClick",
|
|
1238
|
+
"type": "void",
|
|
1239
|
+
"fromModel": false
|
|
1240
|
+
}
|
|
1241
|
+
],
|
|
1242
|
+
"exportedTypes": [
|
|
1243
|
+
{
|
|
1244
|
+
"name": "SdsInputSize",
|
|
1245
|
+
"kind": "union",
|
|
1246
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
"name": "SdsInputAppearance",
|
|
1250
|
+
"kind": "union",
|
|
1251
|
+
"body": "'default' | 'filled' | 'on-brand'"
|
|
1252
|
+
},
|
|
1253
|
+
{
|
|
1254
|
+
"name": "SdsInputShape",
|
|
1255
|
+
"kind": "union",
|
|
1256
|
+
"body": "'control' | 'pill'"
|
|
1257
|
+
},
|
|
1258
|
+
{
|
|
1259
|
+
"name": "SdsInputType",
|
|
1260
|
+
"kind": "union",
|
|
1261
|
+
"body": "| 'text' | 'email' | 'password' | 'number' | 'tel' | 'search' | 'url'"
|
|
1262
|
+
}
|
|
1263
|
+
],
|
|
1264
|
+
"projectionSlots": [],
|
|
1265
|
+
"hostBindings": {
|
|
1266
|
+
"class": "block"
|
|
1267
|
+
},
|
|
1268
|
+
"examples": [
|
|
1269
|
+
{
|
|
1270
|
+
"sectionTitle": "Basique",
|
|
1271
|
+
"sectionDescription": null,
|
|
1272
|
+
"code": "<sds-input label=\"Nom du soignant\" placeholder=\"Ex. Marie Dupont\" />",
|
|
1273
|
+
"runnableExample": "<sds-input label=\"Nom du soignant\" placeholder=\"Ex. Marie Dupont\" />",
|
|
1274
|
+
"stack": true,
|
|
1275
|
+
"dark": false
|
|
1276
|
+
},
|
|
1277
|
+
{
|
|
1278
|
+
"sectionTitle": "Avec aide",
|
|
1279
|
+
"sectionDescription": null,
|
|
1280
|
+
"code": "<sds-input\n label=\"Matricule\"\n placeholder=\"Ex. STK-04821\"\n hint=\"Identifiant interne figurant sur le badge.\"\n/>",
|
|
1281
|
+
"runnableExample": "<sds-input\n label=\"Matricule\"\n placeholder=\"Ex. STK-04821\"\n hint=\"Identifiant interne figurant sur le badge.\"\n />",
|
|
1282
|
+
"stack": true,
|
|
1283
|
+
"dark": false
|
|
1284
|
+
},
|
|
1285
|
+
{
|
|
1286
|
+
"sectionTitle": "Erreur",
|
|
1287
|
+
"sectionDescription": null,
|
|
1288
|
+
"code": "<sds-input\n label=\"Adresse email\"\n type=\"email\"\n placeholder=\"prenom.nom@chu.fr\"\n [error]=\"'Adresse email requise.'\"\n/>",
|
|
1289
|
+
"runnableExample": "<sds-input\n label=\"Adresse email\"\n type=\"email\"\n placeholder=\"prenom.nom@chu.fr\"\n [error]=\"'Adresse email requise.'\"\n />",
|
|
1290
|
+
"stack": true,
|
|
1291
|
+
"dark": false
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
"sectionTitle": "Icônes",
|
|
1295
|
+
"sectionDescription": null,
|
|
1296
|
+
"code": "<sds-input\n label=\"Rechercher un agent\"\n placeholder=\"Nom, service, matricule…\"\n leadingIcon=\"search\"\n/>\n<sds-input\n label=\"Date de garde\"\n placeholder=\"JJ/MM/AAAA\"\n trailingIcon=\"calendar\"\n/>\n<sds-input\n label=\"Filtrer le planning\"\n placeholder=\"Filtrer…\"\n clearable\n [(ngModel)]=\"query\"\n/>",
|
|
1297
|
+
"runnableExample": "<sds-input\n label=\"Rechercher un agent\"\n placeholder=\"Nom, service, matricule…\"\n leadingIcon=\"search\"\n />\n <sds-input\n label=\"Date de garde\"\n placeholder=\"JJ/MM/AAAA\"\n trailingIcon=\"calendar\"\n />\n <sds-input\n label=\"Filtrer le planning\"\n placeholder=\"Filtrer…\"\n clearable\n [(ngModel)]=\"query\"\n />",
|
|
1298
|
+
"stack": true,
|
|
1299
|
+
"dark": false
|
|
1300
|
+
},
|
|
1301
|
+
{
|
|
1302
|
+
"sectionTitle": "Tailles",
|
|
1303
|
+
"sectionDescription": null,
|
|
1304
|
+
"code": "<sds-input size=\"sm\" label=\"Petit (sm)\" placeholder=\"Service\" />\n<sds-input size=\"md\" label=\"Moyen (md)\" placeholder=\"Service\" />\n<sds-input size=\"lg\" label=\"Grand (lg)\" placeholder=\"Service\" />",
|
|
1305
|
+
"runnableExample": "<sds-input size=\"sm\" label=\"Petit (sm)\" placeholder=\"Service\" />\n <sds-input size=\"md\" label=\"Moyen (md)\" placeholder=\"Service\" />\n <sds-input size=\"lg\" label=\"Grand (lg)\" placeholder=\"Service\" />",
|
|
1306
|
+
"stack": true,
|
|
1307
|
+
"dark": false
|
|
1308
|
+
},
|
|
1309
|
+
{
|
|
1310
|
+
"sectionTitle": "Désactivé",
|
|
1311
|
+
"sectionDescription": null,
|
|
1312
|
+
"code": "<sds-input\n label=\"Établissement\"\n placeholder=\"CHU de Lille\"\n disabled\n/>",
|
|
1313
|
+
"runnableExample": "<sds-input\n label=\"Établissement\"\n placeholder=\"CHU de Lille\"\n disabled\n />",
|
|
1314
|
+
"stack": true,
|
|
1315
|
+
"dark": false
|
|
1316
|
+
},
|
|
1317
|
+
{
|
|
1318
|
+
"sectionTitle": "Sur fond foncé (on-brand)",
|
|
1319
|
+
"sectionDescription": null,
|
|
1320
|
+
"code": "<sds-input\n appearance=\"on-brand\"\n ariaLabel=\"Rechercher dans WebApp\"\n placeholder=\"Rechercher…\"\n trailingIcon=\"search\"\n/>\n<sds-input\n appearance=\"on-brand\"\n label=\"Code d'accès\"\n placeholder=\"••••••\"\n/>",
|
|
1321
|
+
"runnableExample": "<sds-input\n appearance=\"on-brand\"\n ariaLabel=\"Rechercher dans WebApp\"\n placeholder=\"Rechercher…\"\n trailingIcon=\"search\"\n />\n <sds-input\n appearance=\"on-brand\"\n label=\"Code d'accès\"\n placeholder=\"••••••\"\n />",
|
|
1322
|
+
"stack": true,
|
|
1323
|
+
"dark": true
|
|
1324
|
+
}
|
|
1325
|
+
]
|
|
1326
|
+
},
|
|
1327
|
+
{
|
|
1328
|
+
"className": "SdsMultiSelect",
|
|
1329
|
+
"selector": "sds-multi-select",
|
|
1330
|
+
"kind": "component",
|
|
1331
|
+
"group": "form",
|
|
1332
|
+
"importName": "SdsMultiSelect",
|
|
1333
|
+
"description": "Liste déroulante à sélection multiple (la valeur est un tableau). Cases à cocher par option, « Tout sélectionner », affichage en puces ou en texte, filtre, effacement et navigation clavier. Overlay attaché au <body>. Implémente ControlValueAccessor.",
|
|
1334
|
+
"overviewDescription": "Sélection multiple : puces, « tout sélectionner » et filtre.",
|
|
1335
|
+
"jsdoc": "Multi-select dropdown (value is an array). Options may be primitives or\nobjects (configure via [optionLabel]/[optionValue]/[optionDisabled]). The\noverlay is appended to <body>. Supports a \"select all\" toggle, per-option\ncheckboxes, chip or comma display, filtering, clearing and keyboard nav.\nImplements ControlValueAccessor — use with reactive forms or [(ngModel)].\n\nFor object options, set [optionValue] or [dataKey] so written values match by\nkey; otherwise matching falls back to reference equality.",
|
|
1336
|
+
"example": "<sds-multi-select [options]=\"services\" optionLabel=\"name\" optionValue=\"code\"\n display=\"chip\" filter [(ngModel)]=\"codes\" />",
|
|
1337
|
+
"cva": true,
|
|
1338
|
+
"usesNgModel": true,
|
|
1339
|
+
"inputs": [
|
|
1340
|
+
{
|
|
1341
|
+
"name": "options",
|
|
1342
|
+
"type": "readonly unknown[]",
|
|
1343
|
+
"default": "[]",
|
|
1344
|
+
"required": false,
|
|
1345
|
+
"transform": null,
|
|
1346
|
+
"alias": null,
|
|
1347
|
+
"jsdoc": null
|
|
1348
|
+
},
|
|
1349
|
+
{
|
|
1350
|
+
"name": "optionLabel",
|
|
1351
|
+
"type": "string",
|
|
1352
|
+
"default": "'label'",
|
|
1353
|
+
"required": false,
|
|
1354
|
+
"transform": null,
|
|
1355
|
+
"alias": null,
|
|
1356
|
+
"jsdoc": null
|
|
1357
|
+
},
|
|
1358
|
+
{
|
|
1359
|
+
"name": "optionValue",
|
|
1360
|
+
"type": "string",
|
|
1361
|
+
"default": "''",
|
|
1362
|
+
"required": false,
|
|
1363
|
+
"transform": null,
|
|
1364
|
+
"alias": null,
|
|
1365
|
+
"jsdoc": null
|
|
1366
|
+
},
|
|
1367
|
+
{
|
|
1368
|
+
"name": "optionDisabled",
|
|
1369
|
+
"type": "string",
|
|
1370
|
+
"default": "'disabled'",
|
|
1371
|
+
"required": false,
|
|
1372
|
+
"transform": null,
|
|
1373
|
+
"alias": null,
|
|
1374
|
+
"jsdoc": null
|
|
1375
|
+
},
|
|
1376
|
+
{
|
|
1377
|
+
"name": "dataKey",
|
|
1378
|
+
"type": "string",
|
|
1379
|
+
"default": "''",
|
|
1380
|
+
"required": false,
|
|
1381
|
+
"transform": null,
|
|
1382
|
+
"alias": null,
|
|
1383
|
+
"jsdoc": null
|
|
1384
|
+
},
|
|
1385
|
+
{
|
|
1386
|
+
"name": "placeholder",
|
|
1387
|
+
"type": "string",
|
|
1388
|
+
"default": "'Sélectionner…'",
|
|
1389
|
+
"required": false,
|
|
1390
|
+
"transform": null,
|
|
1391
|
+
"alias": null,
|
|
1392
|
+
"jsdoc": null
|
|
1393
|
+
},
|
|
1394
|
+
{
|
|
1395
|
+
"name": "label",
|
|
1396
|
+
"type": "string",
|
|
1397
|
+
"default": "''",
|
|
1398
|
+
"required": false,
|
|
1399
|
+
"transform": null,
|
|
1400
|
+
"alias": null,
|
|
1401
|
+
"jsdoc": null
|
|
1402
|
+
},
|
|
1403
|
+
{
|
|
1404
|
+
"name": "ariaLabel",
|
|
1405
|
+
"type": "string",
|
|
1406
|
+
"default": "''",
|
|
1407
|
+
"required": false,
|
|
1408
|
+
"transform": null,
|
|
1409
|
+
"alias": null,
|
|
1410
|
+
"jsdoc": null
|
|
1411
|
+
},
|
|
1412
|
+
{
|
|
1413
|
+
"name": "hint",
|
|
1414
|
+
"type": "string",
|
|
1415
|
+
"default": "''",
|
|
1416
|
+
"required": false,
|
|
1417
|
+
"transform": null,
|
|
1418
|
+
"alias": null,
|
|
1419
|
+
"jsdoc": null
|
|
1420
|
+
},
|
|
1421
|
+
{
|
|
1422
|
+
"name": "error",
|
|
1423
|
+
"type": "string",
|
|
1424
|
+
"default": "''",
|
|
1425
|
+
"required": false,
|
|
1426
|
+
"transform": null,
|
|
1427
|
+
"alias": null,
|
|
1428
|
+
"jsdoc": null
|
|
1429
|
+
},
|
|
1430
|
+
{
|
|
1431
|
+
"name": "size",
|
|
1432
|
+
"type": "SdsMultiSelectSize",
|
|
1433
|
+
"default": "'md'",
|
|
1434
|
+
"required": false,
|
|
1435
|
+
"transform": null,
|
|
1436
|
+
"alias": null,
|
|
1437
|
+
"jsdoc": null
|
|
1438
|
+
},
|
|
1439
|
+
{
|
|
1440
|
+
"name": "display",
|
|
1441
|
+
"type": "SdsMultiSelectDisplay",
|
|
1442
|
+
"default": "'comma'",
|
|
1443
|
+
"required": false,
|
|
1444
|
+
"transform": null,
|
|
1445
|
+
"alias": null,
|
|
1446
|
+
"jsdoc": null
|
|
1447
|
+
},
|
|
1448
|
+
{
|
|
1449
|
+
"name": "maxSelectedLabels",
|
|
1450
|
+
"type": "number",
|
|
1451
|
+
"default": "3",
|
|
1452
|
+
"required": false,
|
|
1453
|
+
"transform": "numberAttribute",
|
|
1454
|
+
"alias": null,
|
|
1455
|
+
"jsdoc": "In comma mode, show a count label once more than this many are selected."
|
|
1456
|
+
},
|
|
1457
|
+
{
|
|
1458
|
+
"name": "selectedItemsLabel",
|
|
1459
|
+
"type": "string",
|
|
1460
|
+
"default": "'{0} éléments sélectionnés'",
|
|
1461
|
+
"required": false,
|
|
1462
|
+
"transform": null,
|
|
1463
|
+
"alias": null,
|
|
1464
|
+
"jsdoc": null
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
"name": "showToggleAll",
|
|
1468
|
+
"type": "boolean",
|
|
1469
|
+
"default": "true",
|
|
1470
|
+
"required": false,
|
|
1471
|
+
"transform": "booleanAttribute",
|
|
1472
|
+
"alias": null,
|
|
1473
|
+
"jsdoc": null
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
"name": "disabled",
|
|
1477
|
+
"type": "boolean",
|
|
1478
|
+
"default": "false",
|
|
1479
|
+
"required": false,
|
|
1480
|
+
"transform": "booleanAttribute",
|
|
1481
|
+
"alias": null,
|
|
1482
|
+
"jsdoc": null
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
"name": "clearable",
|
|
1486
|
+
"type": "boolean",
|
|
1487
|
+
"default": "false",
|
|
1488
|
+
"required": false,
|
|
1489
|
+
"transform": "booleanAttribute",
|
|
1490
|
+
"alias": null,
|
|
1491
|
+
"jsdoc": null
|
|
1492
|
+
},
|
|
1493
|
+
{
|
|
1494
|
+
"name": "filter",
|
|
1495
|
+
"type": "boolean",
|
|
1496
|
+
"default": "false",
|
|
1497
|
+
"required": false,
|
|
1498
|
+
"transform": "booleanAttribute",
|
|
1499
|
+
"alias": null,
|
|
1500
|
+
"jsdoc": null
|
|
1501
|
+
},
|
|
1502
|
+
{
|
|
1503
|
+
"name": "filterPlaceholder",
|
|
1504
|
+
"type": "string",
|
|
1505
|
+
"default": "'Rechercher…'",
|
|
1506
|
+
"required": false,
|
|
1507
|
+
"transform": null,
|
|
1508
|
+
"alias": null,
|
|
1509
|
+
"jsdoc": null
|
|
1510
|
+
},
|
|
1511
|
+
{
|
|
1512
|
+
"name": "emptyMessage",
|
|
1513
|
+
"type": "string",
|
|
1514
|
+
"default": "'Aucun résultat'",
|
|
1515
|
+
"required": false,
|
|
1516
|
+
"transform": null,
|
|
1517
|
+
"alias": null,
|
|
1518
|
+
"jsdoc": null
|
|
1519
|
+
}
|
|
1520
|
+
],
|
|
1521
|
+
"outputs": [],
|
|
1522
|
+
"exportedTypes": [
|
|
1523
|
+
{
|
|
1524
|
+
"name": "SdsMultiSelectSize",
|
|
1525
|
+
"kind": "union",
|
|
1526
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
1527
|
+
},
|
|
1528
|
+
{
|
|
1529
|
+
"name": "SdsMultiSelectDisplay",
|
|
1530
|
+
"kind": "union",
|
|
1531
|
+
"body": "'comma' | 'chip'"
|
|
1532
|
+
}
|
|
1533
|
+
],
|
|
1534
|
+
"projectionSlots": [],
|
|
1535
|
+
"hostBindings": {
|
|
1536
|
+
"class": "block",
|
|
1537
|
+
"(document:click)": "onDocumentClick($event)"
|
|
1538
|
+
},
|
|
1539
|
+
"examples": [
|
|
1540
|
+
{
|
|
1541
|
+
"sectionTitle": "Basique",
|
|
1542
|
+
"sectionDescription": "Affichage des libellés séparés par des virgules.",
|
|
1543
|
+
"code": "<sds-multi-select [options]=\"roles\" placeholder=\"Choisir des rôles\" />\n\n// roles = ['Médecin', 'Infirmier', 'Aide-soignant', 'Cadre de santé'];",
|
|
1544
|
+
"runnableExample": "<sds-multi-select [options]=\"roles\" placeholder=\"Choisir des rôles\" />",
|
|
1545
|
+
"stack": true,
|
|
1546
|
+
"dark": false
|
|
1547
|
+
},
|
|
1548
|
+
{
|
|
1549
|
+
"sectionTitle": "Affichage en puces (chip)",
|
|
1550
|
+
"sectionDescription": null,
|
|
1551
|
+
"code": "<sds-multi-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n display=\"chip\"\n placeholder=\"Choisir des services\"\n/>",
|
|
1552
|
+
"runnableExample": "<sds-multi-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n display=\"chip\"\n placeholder=\"Choisir des services\"\n />",
|
|
1553
|
+
"stack": true,
|
|
1554
|
+
"dark": false
|
|
1555
|
+
},
|
|
1556
|
+
{
|
|
1557
|
+
"sectionTitle": "Filtre + Tout sélectionner",
|
|
1558
|
+
"sectionDescription": null,
|
|
1559
|
+
"code": "<sds-multi-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n filter\n placeholder=\"Choisir des services\"\n/>",
|
|
1560
|
+
"runnableExample": "<sds-multi-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n filter\n placeholder=\"Choisir des services\"\n />",
|
|
1561
|
+
"stack": true,
|
|
1562
|
+
"dark": false
|
|
1563
|
+
},
|
|
1564
|
+
{
|
|
1565
|
+
"sectionTitle": "Effaçable + lié (ngModel)",
|
|
1566
|
+
"sectionDescription": null,
|
|
1567
|
+
"code": "<sds-multi-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n display=\"chip\"\n filter\n clearable\n [(ngModel)]=\"codes\"\n/>\n<p>Codes : {{ codes.length ? codes.join(', ') : '—' }}</p>\n\n// codes: string[] = [];",
|
|
1568
|
+
"runnableExample": "<sds-multi-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n display=\"chip\"\n filter\n clearable\n [(ngModel)]=\"codes\"\n />\n <p class=\"text-sm text-ink-soft\">\n Codes : <span class=\"font-medium text-ink\">{{ codes.length ? codes.join(', ') : '—' }}</span>\n </p>",
|
|
1569
|
+
"stack": true,
|
|
1570
|
+
"dark": false
|
|
1571
|
+
},
|
|
1572
|
+
{
|
|
1573
|
+
"sectionTitle": "Étiquette de comptage",
|
|
1574
|
+
"sectionDescription": "Au-delà de [maxSelectedLabels], un libellé de comptage remplace la liste.",
|
|
1575
|
+
"code": "<sds-multi-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n [maxSelectedLabels]=\"2\"\n placeholder=\"Choisir des services\"\n/>",
|
|
1576
|
+
"runnableExample": "<sds-multi-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n [maxSelectedLabels]=\"2\"\n placeholder=\"Choisir des services\"\n />",
|
|
1577
|
+
"stack": true,
|
|
1578
|
+
"dark": false
|
|
1579
|
+
},
|
|
1580
|
+
{
|
|
1581
|
+
"sectionTitle": "Désactivé",
|
|
1582
|
+
"sectionDescription": null,
|
|
1583
|
+
"code": "<sds-multi-select [options]=\"roles\" placeholder=\"Indisponible\" disabled />",
|
|
1584
|
+
"runnableExample": "<sds-multi-select [options]=\"roles\" placeholder=\"Indisponible\" disabled />",
|
|
1585
|
+
"stack": true,
|
|
1586
|
+
"dark": false
|
|
1587
|
+
}
|
|
1588
|
+
]
|
|
1589
|
+
},
|
|
1590
|
+
{
|
|
1591
|
+
"className": "SdsNavGroup",
|
|
1592
|
+
"selector": "sds-nav-group",
|
|
1593
|
+
"kind": "component",
|
|
1594
|
+
"group": "layout",
|
|
1595
|
+
"importName": "SdsNavGroup",
|
|
1596
|
+
"description": null,
|
|
1597
|
+
"overviewDescription": null,
|
|
1598
|
+
"jsdoc": "Groups nav items under an optional uppercase section label.\n\nTwo modes:\n- **Section** (default) — a static label over its items. The label is replaced by a divider when\n the rail is collapsed.\n- **Collapsible** (`[collapsible]`) — the label becomes a button that expands and collapses the\n group. Set `[basePath]` and the group opens itself whenever the active route is inside it, so a\n deep link or a browser Back lands with the right section already open instead of the person\n having to find and re-open it.\n\nCollapsible mode exists because a flat rail stops scaling somewhere around a dozen destinations,\nand the alternative — showing every child of every section at once — buries the ones in use.\n\nOn the collapsed desktop rail there is nowhere to put a header, so a collapsible group renders\nexactly like a section: divider, children visible. Hiding them there would leave the rail with\nunreachable destinations and no affordance to reveal them.",
|
|
1599
|
+
"example": null,
|
|
1600
|
+
"cva": false,
|
|
1601
|
+
"usesNgModel": false,
|
|
1602
|
+
"inputs": [
|
|
1603
|
+
{
|
|
1604
|
+
"name": "label",
|
|
1605
|
+
"type": "string",
|
|
1606
|
+
"default": "''",
|
|
1607
|
+
"required": false,
|
|
1608
|
+
"transform": null,
|
|
1609
|
+
"alias": null,
|
|
1610
|
+
"jsdoc": null
|
|
1611
|
+
},
|
|
1612
|
+
{
|
|
1613
|
+
"name": "collapsible",
|
|
1614
|
+
"type": "boolean",
|
|
1615
|
+
"default": "false",
|
|
1616
|
+
"required": false,
|
|
1617
|
+
"transform": "booleanAttribute",
|
|
1618
|
+
"alias": null,
|
|
1619
|
+
"jsdoc": "Turn the label into an expand/collapse control."
|
|
1620
|
+
},
|
|
1621
|
+
{
|
|
1622
|
+
"name": "icon",
|
|
1623
|
+
"type": "SdsIconName | null",
|
|
1624
|
+
"default": "null",
|
|
1625
|
+
"required": false,
|
|
1626
|
+
"transform": null,
|
|
1627
|
+
"alias": null,
|
|
1628
|
+
"jsdoc": "Icon for a collapsible header, so it reads at the same weight as the items it sits among."
|
|
1629
|
+
},
|
|
1630
|
+
{
|
|
1631
|
+
"name": "basePath",
|
|
1632
|
+
"type": "string | null",
|
|
1633
|
+
"default": "null",
|
|
1634
|
+
"required": false,
|
|
1635
|
+
"transform": null,
|
|
1636
|
+
"alias": null,
|
|
1637
|
+
"jsdoc": "URL prefix owned by this group, e.g. `/payments`. While the active route starts with it the\ngroup counts as active and opens itself — unless the person has explicitly toggled it since."
|
|
1638
|
+
}
|
|
1639
|
+
],
|
|
1640
|
+
"outputs": [
|
|
1641
|
+
{
|
|
1642
|
+
"name": "expandedChange",
|
|
1643
|
+
"type": "boolean",
|
|
1644
|
+
"fromModel": false
|
|
1645
|
+
}
|
|
1646
|
+
],
|
|
1647
|
+
"exportedTypes": [],
|
|
1648
|
+
"projectionSlots": [],
|
|
1649
|
+
"hostBindings": {
|
|
1650
|
+
"class": "block"
|
|
1651
|
+
},
|
|
1652
|
+
"examples": []
|
|
1653
|
+
},
|
|
1654
|
+
{
|
|
1655
|
+
"className": "SdsNavItem",
|
|
1656
|
+
"selector": "sds-nav-item",
|
|
1657
|
+
"kind": "component",
|
|
1658
|
+
"group": "layout",
|
|
1659
|
+
"importName": "SdsNavItem",
|
|
1660
|
+
"description": null,
|
|
1661
|
+
"overviewDescription": null,
|
|
1662
|
+
"jsdoc": "A single sidebar navigation entry. Renders an anchor when [link] is set\n(with automatic active state via routerLinkActive) or a button otherwise.\n\nRequires the host application to provide the Angular Router (`provideRouter`),\nas it depends on RouterLink/RouterLinkActive even when used as a button.",
|
|
1663
|
+
"example": "<sds-nav-item icon=\"home\" label=\"Accueil\" link=\"/\" [exact]=\"true\" />",
|
|
1664
|
+
"cva": false,
|
|
1665
|
+
"usesNgModel": false,
|
|
1666
|
+
"inputs": [
|
|
1667
|
+
{
|
|
1668
|
+
"name": "icon",
|
|
1669
|
+
"type": "SdsIconName | null",
|
|
1670
|
+
"default": "null",
|
|
1671
|
+
"required": false,
|
|
1672
|
+
"transform": null,
|
|
1673
|
+
"alias": null,
|
|
1674
|
+
"jsdoc": null
|
|
1675
|
+
},
|
|
1676
|
+
{
|
|
1677
|
+
"name": "label",
|
|
1678
|
+
"type": "string",
|
|
1679
|
+
"default": null,
|
|
1680
|
+
"required": true,
|
|
1681
|
+
"transform": null,
|
|
1682
|
+
"alias": null,
|
|
1683
|
+
"jsdoc": null
|
|
1684
|
+
},
|
|
1685
|
+
{
|
|
1686
|
+
"name": "link",
|
|
1687
|
+
"type": "string | unknown[] | null",
|
|
1688
|
+
"default": "null",
|
|
1689
|
+
"required": false,
|
|
1690
|
+
"transform": null,
|
|
1691
|
+
"alias": null,
|
|
1692
|
+
"jsdoc": "Router link target; when null, the item behaves as a button."
|
|
1693
|
+
},
|
|
1694
|
+
{
|
|
1695
|
+
"name": "exact",
|
|
1696
|
+
"type": "boolean",
|
|
1697
|
+
"default": "false",
|
|
1698
|
+
"required": false,
|
|
1699
|
+
"transform": "booleanAttribute",
|
|
1700
|
+
"alias": null,
|
|
1701
|
+
"jsdoc": null
|
|
1702
|
+
},
|
|
1703
|
+
{
|
|
1704
|
+
"name": "active",
|
|
1705
|
+
"type": "boolean",
|
|
1706
|
+
"default": "false",
|
|
1707
|
+
"required": false,
|
|
1708
|
+
"transform": "booleanAttribute",
|
|
1709
|
+
"alias": null,
|
|
1710
|
+
"jsdoc": "Manual active state (combined with routerLinkActive when a link is set)."
|
|
1711
|
+
}
|
|
1712
|
+
],
|
|
1713
|
+
"outputs": [
|
|
1714
|
+
{
|
|
1715
|
+
"name": "select",
|
|
1716
|
+
"type": "void",
|
|
1717
|
+
"fromModel": false
|
|
1718
|
+
}
|
|
1719
|
+
],
|
|
1720
|
+
"exportedTypes": [],
|
|
1721
|
+
"projectionSlots": [],
|
|
1722
|
+
"hostBindings": {
|
|
1723
|
+
"class": "block"
|
|
1724
|
+
},
|
|
1725
|
+
"examples": []
|
|
1726
|
+
},
|
|
1727
|
+
{
|
|
1728
|
+
"className": "SdsPaginator",
|
|
1729
|
+
"selector": "sds-paginator",
|
|
1730
|
+
"kind": "component",
|
|
1731
|
+
"group": "data",
|
|
1732
|
+
"importName": "SdsPaginator",
|
|
1733
|
+
"description": "Pagination avec fenêtre glissante de pages, navigation première / précédente / suivante / dernière, choix du nombre de lignes par page, rapport de page courante et saisie directe. État exposé via [(first)] et [(rows)] ; l'événement (pageChange) fournit l'état complet.",
|
|
1734
|
+
"overviewDescription": "Pagination : fenêtre de pages, lignes par page et rapport.",
|
|
1735
|
+
"jsdoc": "Pagination control (mirrors PrimeNG's paginator). Drives a sliding window of\npage links with first/prev/next/last navigation, an optional rows-per-page\ndropdown (reuses <sds-select>), a current-page report and a jump-to-page input.\n\nState is exposed as two-way models: [first] (zero-based index of the first\nrecord on the page) and [rows] (page size). A combined (pageChange) event\ncarries the full {@link SdsPaginatorState} on every change.",
|
|
1736
|
+
"example": "<sds-paginator\n [totalRecords]=\"120\"\n [(first)]=\"first\"\n [(rows)]=\"rows\"\n [rowsPerPageOptions]=\"[10, 20, 50]\"\n showCurrentPageReport\n (pageChange)=\"load($event)\"\n/>",
|
|
1737
|
+
"cva": false,
|
|
1738
|
+
"usesNgModel": false,
|
|
1739
|
+
"inputs": [
|
|
1740
|
+
{
|
|
1741
|
+
"name": "totalRecords",
|
|
1742
|
+
"type": "number",
|
|
1743
|
+
"default": "0",
|
|
1744
|
+
"required": false,
|
|
1745
|
+
"transform": "numberAttribute",
|
|
1746
|
+
"alias": null,
|
|
1747
|
+
"jsdoc": "Total number of records to paginate."
|
|
1748
|
+
},
|
|
1749
|
+
{
|
|
1750
|
+
"name": "first",
|
|
1751
|
+
"type": "number",
|
|
1752
|
+
"default": "0",
|
|
1753
|
+
"required": false,
|
|
1754
|
+
"transform": null,
|
|
1755
|
+
"alias": null,
|
|
1756
|
+
"jsdoc": "Zero-based index of the first record on the current page (two-way)."
|
|
1757
|
+
},
|
|
1758
|
+
{
|
|
1759
|
+
"name": "rows",
|
|
1760
|
+
"type": "number",
|
|
1761
|
+
"default": "10",
|
|
1762
|
+
"required": false,
|
|
1763
|
+
"transform": null,
|
|
1764
|
+
"alias": null,
|
|
1765
|
+
"jsdoc": "Rows displayed per page (two-way)."
|
|
1766
|
+
},
|
|
1767
|
+
{
|
|
1768
|
+
"name": "rowsPerPageOptions",
|
|
1769
|
+
"type": "number[]",
|
|
1770
|
+
"default": "[]",
|
|
1771
|
+
"required": false,
|
|
1772
|
+
"transform": null,
|
|
1773
|
+
"alias": null,
|
|
1774
|
+
"jsdoc": "When non-empty, renders a rows-per-page dropdown with these choices."
|
|
1775
|
+
},
|
|
1776
|
+
{
|
|
1777
|
+
"name": "pageLinkSize",
|
|
1778
|
+
"type": "number",
|
|
1779
|
+
"default": "5",
|
|
1780
|
+
"required": false,
|
|
1781
|
+
"transform": "numberAttribute",
|
|
1782
|
+
"alias": null,
|
|
1783
|
+
"jsdoc": "Maximum count of numbered page links shown in the sliding window."
|
|
1784
|
+
},
|
|
1785
|
+
{
|
|
1786
|
+
"name": "showFirstLastIcon",
|
|
1787
|
+
"type": "boolean",
|
|
1788
|
+
"default": "true",
|
|
1789
|
+
"required": false,
|
|
1790
|
+
"transform": "booleanAttribute",
|
|
1791
|
+
"alias": null,
|
|
1792
|
+
"jsdoc": null
|
|
1793
|
+
},
|
|
1794
|
+
{
|
|
1795
|
+
"name": "showPageLinks",
|
|
1796
|
+
"type": "boolean",
|
|
1797
|
+
"default": "true",
|
|
1798
|
+
"required": false,
|
|
1799
|
+
"transform": "booleanAttribute",
|
|
1800
|
+
"alias": null,
|
|
1801
|
+
"jsdoc": null
|
|
1802
|
+
},
|
|
1803
|
+
{
|
|
1804
|
+
"name": "showCurrentPageReport",
|
|
1805
|
+
"type": "boolean",
|
|
1806
|
+
"default": "false",
|
|
1807
|
+
"required": false,
|
|
1808
|
+
"transform": "booleanAttribute",
|
|
1809
|
+
"alias": null,
|
|
1810
|
+
"jsdoc": null
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
"name": "currentPageReportTemplate",
|
|
1814
|
+
"type": "string",
|
|
1815
|
+
"default": "'{first} – {last} sur {totalRecords}'",
|
|
1816
|
+
"required": false,
|
|
1817
|
+
"transform": null,
|
|
1818
|
+
"alias": null,
|
|
1819
|
+
"jsdoc": "Tokens: {first} {last} {totalRecords} {currentPage} {totalPages} {rows}."
|
|
1820
|
+
},
|
|
1821
|
+
{
|
|
1822
|
+
"name": "showJumpToPageInput",
|
|
1823
|
+
"type": "boolean",
|
|
1824
|
+
"default": "false",
|
|
1825
|
+
"required": false,
|
|
1826
|
+
"transform": "booleanAttribute",
|
|
1827
|
+
"alias": null,
|
|
1828
|
+
"jsdoc": null
|
|
1829
|
+
},
|
|
1830
|
+
{
|
|
1831
|
+
"name": "rowsPerPageLabel",
|
|
1832
|
+
"type": "string",
|
|
1833
|
+
"default": "'Lignes par page'",
|
|
1834
|
+
"required": false,
|
|
1835
|
+
"transform": null,
|
|
1836
|
+
"alias": null,
|
|
1837
|
+
"jsdoc": null
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
"name": "jumpToPageLabel",
|
|
1841
|
+
"type": "string",
|
|
1842
|
+
"default": "'Aller à'",
|
|
1843
|
+
"required": false,
|
|
1844
|
+
"transform": null,
|
|
1845
|
+
"alias": null,
|
|
1846
|
+
"jsdoc": null
|
|
1847
|
+
},
|
|
1848
|
+
{
|
|
1849
|
+
"name": "size",
|
|
1850
|
+
"type": "SdsPaginatorSize",
|
|
1851
|
+
"default": "'md'",
|
|
1852
|
+
"required": false,
|
|
1853
|
+
"transform": null,
|
|
1854
|
+
"alias": null,
|
|
1855
|
+
"jsdoc": null
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
"name": "disabled",
|
|
1859
|
+
"type": "boolean",
|
|
1860
|
+
"default": "false",
|
|
1861
|
+
"required": false,
|
|
1862
|
+
"transform": "booleanAttribute",
|
|
1863
|
+
"alias": null,
|
|
1864
|
+
"jsdoc": null
|
|
1865
|
+
}
|
|
1866
|
+
],
|
|
1867
|
+
"outputs": [
|
|
1868
|
+
{
|
|
1869
|
+
"name": "firstChange",
|
|
1870
|
+
"type": "number",
|
|
1871
|
+
"fromModel": true
|
|
1872
|
+
},
|
|
1873
|
+
{
|
|
1874
|
+
"name": "rowsChange",
|
|
1875
|
+
"type": "number",
|
|
1876
|
+
"fromModel": true
|
|
1877
|
+
},
|
|
1878
|
+
{
|
|
1879
|
+
"name": "pageChange",
|
|
1880
|
+
"type": "SdsPaginatorState",
|
|
1881
|
+
"fromModel": false
|
|
1882
|
+
}
|
|
1883
|
+
],
|
|
1884
|
+
"exportedTypes": [
|
|
1885
|
+
{
|
|
1886
|
+
"name": "SdsPaginatorSize",
|
|
1887
|
+
"kind": "union",
|
|
1888
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
1889
|
+
},
|
|
1890
|
+
{
|
|
1891
|
+
"name": "SdsPaginatorState",
|
|
1892
|
+
"kind": "interface",
|
|
1893
|
+
"body": "interface SdsPaginatorState { /** Zero-based index of the current page. */ page: number; /** Zero-based index of the first record on the current page. */ first: number; /** Rows displayed per page. */ rows: number; /** Total number of pages. */ pageCount: number; /** Total number of records. */ totalRecords: number; }"
|
|
1894
|
+
}
|
|
1895
|
+
],
|
|
1896
|
+
"projectionSlots": [],
|
|
1897
|
+
"hostBindings": {
|
|
1898
|
+
"[class]": "hostClass()"
|
|
1899
|
+
},
|
|
1900
|
+
"examples": [
|
|
1901
|
+
{
|
|
1902
|
+
"sectionTitle": "Basique",
|
|
1903
|
+
"sectionDescription": "120 enregistrements, 10 par page.",
|
|
1904
|
+
"code": "<sds-paginator [totalRecords]=\"120\" />",
|
|
1905
|
+
"runnableExample": "<sds-paginator [totalRecords]=\"120\" />",
|
|
1906
|
+
"stack": true,
|
|
1907
|
+
"dark": false
|
|
1908
|
+
},
|
|
1909
|
+
{
|
|
1910
|
+
"sectionTitle": "Lignes par page",
|
|
1911
|
+
"sectionDescription": "Fournissez rowsPerPageOptions pour afficher la liste déroulante (réutilise sds-select).",
|
|
1912
|
+
"code": "<sds-paginator [totalRecords]=\"120\" [rowsPerPageOptions]=\"[10, 20, 50]\" />",
|
|
1913
|
+
"runnableExample": "<sds-paginator [totalRecords]=\"120\" [rowsPerPageOptions]=\"[10, 20, 50]\" />",
|
|
1914
|
+
"stack": true,
|
|
1915
|
+
"dark": false
|
|
1916
|
+
},
|
|
1917
|
+
{
|
|
1918
|
+
"sectionTitle": "Rapport de page courante",
|
|
1919
|
+
"sectionDescription": "currentPageReportTemplate accepte {first} {last} {totalRecords} {currentPage} {totalPages} {rows}.",
|
|
1920
|
+
"code": "<sds-paginator\n [totalRecords]=\"248\"\n [rowsPerPageOptions]=\"[10, 25, 50]\"\n showCurrentPageReport\n currentPageReportTemplate=\"{first} – {last} sur {totalRecords}\"\n/>",
|
|
1921
|
+
"runnableExample": "<sds-paginator\n [totalRecords]=\"248\"\n [rowsPerPageOptions]=\"[10, 25, 50]\"\n showCurrentPageReport\n currentPageReportTemplate=\"{first} – {last} sur {totalRecords}\"\n />",
|
|
1922
|
+
"stack": true,
|
|
1923
|
+
"dark": false
|
|
1924
|
+
},
|
|
1925
|
+
{
|
|
1926
|
+
"sectionTitle": "Saisie de page",
|
|
1927
|
+
"sectionDescription": "Saisie directe du numéro de page.",
|
|
1928
|
+
"code": "<sds-paginator [totalRecords]=\"300\" showJumpToPageInput />",
|
|
1929
|
+
"runnableExample": "<sds-paginator [totalRecords]=\"300\" showJumpToPageInput />",
|
|
1930
|
+
"stack": true,
|
|
1931
|
+
"dark": false
|
|
1932
|
+
},
|
|
1933
|
+
{
|
|
1934
|
+
"sectionTitle": "Lié au modèle (pageChange)",
|
|
1935
|
+
"sectionDescription": "Liaison bidirectionnelle [(first)] / [(rows)] et événement combiné.",
|
|
1936
|
+
"code": "<sds-paginator\n [totalRecords]=\"people.length\"\n [(first)]=\"first\"\n [(rows)]=\"rows\"\n [rowsPerPageOptions]=\"[5, 10, 20]\"\n showCurrentPageReport\n (pageChange)=\"onPage($event)\"\n/>\n\n// first = signal(0); rows = signal(5);\n// visiblePeople = () => people.slice(first(), first() + rows());",
|
|
1937
|
+
"runnableExample": "<sds-paginator\n [totalRecords]=\"people.length\"\n [(first)]=\"first\"\n [(rows)]=\"rows\"\n [rowsPerPageOptions]=\"[5, 10, 20]\"\n showCurrentPageReport\n (pageChange)=\"onPage($event)\"\n />\n\n <ul class=\"divide-y divide-border overflow-hidden rounded-card border border-border bg-surface\">\n @for (p of visiblePeople(); track p) {\n <li class=\"px-4 py-2.5 text-sm text-ink\">{{ p }}</li>\n }\n </ul>\n\n <p class=\"text-sm text-ink-soft\">\n Page <span class=\"font-medium text-ink\">{{ lastState()?.page ?? 0 }}</span> ·\n first <span class=\"font-medium text-ink\">{{ first() }}</span> ·\n rows <span class=\"font-medium text-ink\">{{ rows() }}</span>\n </p>",
|
|
1938
|
+
"stack": true,
|
|
1939
|
+
"dark": false
|
|
1940
|
+
},
|
|
1941
|
+
{
|
|
1942
|
+
"sectionTitle": "Tailles",
|
|
1943
|
+
"sectionDescription": "size : sm · md (défaut) · lg.",
|
|
1944
|
+
"code": "<sds-paginator [totalRecords]=\"80\" size=\"sm\" />\n<sds-paginator [totalRecords]=\"80\" size=\"md\" />\n<sds-paginator [totalRecords]=\"80\" size=\"lg\" />",
|
|
1945
|
+
"runnableExample": "<sds-paginator [totalRecords]=\"80\" size=\"sm\" />\n <sds-paginator [totalRecords]=\"80\" size=\"md\" />\n <sds-paginator [totalRecords]=\"80\" size=\"lg\" />",
|
|
1946
|
+
"stack": true,
|
|
1947
|
+
"dark": false
|
|
1948
|
+
},
|
|
1949
|
+
{
|
|
1950
|
+
"sectionTitle": "Désactivé",
|
|
1951
|
+
"sectionDescription": null,
|
|
1952
|
+
"code": "<sds-paginator [totalRecords]=\"120\" [rowsPerPageOptions]=\"[10, 20]\" disabled />",
|
|
1953
|
+
"runnableExample": "<sds-paginator [totalRecords]=\"120\" [rowsPerPageOptions]=\"[10, 20]\" disabled />",
|
|
1954
|
+
"stack": true,
|
|
1955
|
+
"dark": false
|
|
1956
|
+
}
|
|
1957
|
+
]
|
|
1958
|
+
},
|
|
1959
|
+
{
|
|
1960
|
+
"className": "SdsPhoneInput",
|
|
1961
|
+
"selector": "sds-phone-input",
|
|
1962
|
+
"kind": "component",
|
|
1963
|
+
"group": "form",
|
|
1964
|
+
"importName": "SdsPhoneInput",
|
|
1965
|
+
"description": "Saisie de numéro de téléphone international : sélecteur de pays (code ISO + indicatif) avec liste déroulante recherchable, et champ national formaté automatiquement selon le pays. La valeur liée est au format E.164 (« +32470123456 ») ; la longueur nationale est validée par pays (Validator + ControlValueAccessor).",
|
|
1966
|
+
"overviewDescription": "Numéro international : sélecteur de pays, format et validation.",
|
|
1967
|
+
"jsdoc": "International phone number input: a country selector (ISO chip + dial code)\nwith a searchable, body-appended dropdown, plus a formatted national-number\nfield. Implements ControlValueAccessor (value is an E.164 string such as\n'+32470123456') and Validator (national length is checked per country).",
|
|
1968
|
+
"example": "<sds-phone-input label=\"Téléphone\" defaultCountry=\"BE\"\n [preferredCountries]=\"['BE','FR','LU']\"\n [(ngModel)]=\"phone\" required />",
|
|
1969
|
+
"cva": true,
|
|
1970
|
+
"usesNgModel": true,
|
|
1971
|
+
"inputs": [
|
|
1972
|
+
{
|
|
1973
|
+
"name": "label",
|
|
1974
|
+
"type": "string",
|
|
1975
|
+
"default": "''",
|
|
1976
|
+
"required": false,
|
|
1977
|
+
"transform": null,
|
|
1978
|
+
"alias": null,
|
|
1979
|
+
"jsdoc": null
|
|
1980
|
+
},
|
|
1981
|
+
{
|
|
1982
|
+
"name": "hint",
|
|
1983
|
+
"type": "string",
|
|
1984
|
+
"default": "''",
|
|
1985
|
+
"required": false,
|
|
1986
|
+
"transform": null,
|
|
1987
|
+
"alias": null,
|
|
1988
|
+
"jsdoc": null
|
|
1989
|
+
},
|
|
1990
|
+
{
|
|
1991
|
+
"name": "error",
|
|
1992
|
+
"type": "string",
|
|
1993
|
+
"default": "''",
|
|
1994
|
+
"required": false,
|
|
1995
|
+
"transform": null,
|
|
1996
|
+
"alias": null,
|
|
1997
|
+
"jsdoc": "External error message; overrides the built-in validation message."
|
|
1998
|
+
},
|
|
1999
|
+
{
|
|
2000
|
+
"name": "size",
|
|
2001
|
+
"type": "SdsPhoneInputSize",
|
|
2002
|
+
"default": "'md'",
|
|
2003
|
+
"required": false,
|
|
2004
|
+
"transform": null,
|
|
2005
|
+
"alias": null,
|
|
2006
|
+
"jsdoc": null
|
|
2007
|
+
},
|
|
2008
|
+
{
|
|
2009
|
+
"name": "disabled",
|
|
2010
|
+
"type": "boolean",
|
|
2011
|
+
"default": "false",
|
|
2012
|
+
"required": false,
|
|
2013
|
+
"transform": "booleanAttribute",
|
|
2014
|
+
"alias": null,
|
|
2015
|
+
"jsdoc": null
|
|
2016
|
+
},
|
|
2017
|
+
{
|
|
2018
|
+
"name": "required",
|
|
2019
|
+
"type": "boolean",
|
|
2020
|
+
"default": "false",
|
|
2021
|
+
"required": false,
|
|
2022
|
+
"transform": "booleanAttribute",
|
|
2023
|
+
"alias": null,
|
|
2024
|
+
"jsdoc": null
|
|
2025
|
+
},
|
|
2026
|
+
{
|
|
2027
|
+
"name": "clearable",
|
|
2028
|
+
"type": "boolean",
|
|
2029
|
+
"default": "false",
|
|
2030
|
+
"required": false,
|
|
2031
|
+
"transform": "booleanAttribute",
|
|
2032
|
+
"alias": null,
|
|
2033
|
+
"jsdoc": null
|
|
2034
|
+
},
|
|
2035
|
+
{
|
|
2036
|
+
"name": "defaultCountry",
|
|
2037
|
+
"type": "string",
|
|
2038
|
+
"default": "'BE'",
|
|
2039
|
+
"required": false,
|
|
2040
|
+
"transform": null,
|
|
2041
|
+
"alias": null,
|
|
2042
|
+
"jsdoc": "Initial country (ISO2) when no value is written."
|
|
2043
|
+
},
|
|
2044
|
+
{
|
|
2045
|
+
"name": "preferredCountries",
|
|
2046
|
+
"type": "string[]",
|
|
2047
|
+
"default": "[]",
|
|
2048
|
+
"required": false,
|
|
2049
|
+
"transform": null,
|
|
2050
|
+
"alias": null,
|
|
2051
|
+
"jsdoc": "ISO2 codes shown first in the list."
|
|
2052
|
+
},
|
|
2053
|
+
{
|
|
2054
|
+
"name": "onlyCountries",
|
|
2055
|
+
"type": "string[]",
|
|
2056
|
+
"default": "[]",
|
|
2057
|
+
"required": false,
|
|
2058
|
+
"transform": null,
|
|
2059
|
+
"alias": null,
|
|
2060
|
+
"jsdoc": "Restrict the list to these ISO2 codes (empty = all)."
|
|
2061
|
+
},
|
|
2062
|
+
{
|
|
2063
|
+
"name": "showExampleHint",
|
|
2064
|
+
"type": "boolean",
|
|
2065
|
+
"default": "true",
|
|
2066
|
+
"required": false,
|
|
2067
|
+
"transform": "booleanAttribute",
|
|
2068
|
+
"alias": null,
|
|
2069
|
+
"jsdoc": "Show an example number as a hint when no [hint] is provided."
|
|
2070
|
+
},
|
|
2071
|
+
{
|
|
2072
|
+
"name": "requiredMessage",
|
|
2073
|
+
"type": "string",
|
|
2074
|
+
"default": "'Numéro de téléphone requis'",
|
|
2075
|
+
"required": false,
|
|
2076
|
+
"transform": null,
|
|
2077
|
+
"alias": null,
|
|
2078
|
+
"jsdoc": null
|
|
2079
|
+
}
|
|
2080
|
+
],
|
|
2081
|
+
"outputs": [
|
|
2082
|
+
{
|
|
2083
|
+
"name": "phoneChange",
|
|
2084
|
+
"type": "SdsPhoneValue",
|
|
2085
|
+
"fromModel": false
|
|
2086
|
+
}
|
|
2087
|
+
],
|
|
2088
|
+
"exportedTypes": [
|
|
2089
|
+
{
|
|
2090
|
+
"name": "SdsPhoneInputSize",
|
|
2091
|
+
"kind": "union",
|
|
2092
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
2093
|
+
},
|
|
2094
|
+
{
|
|
2095
|
+
"name": "SdsPhoneValue",
|
|
2096
|
+
"kind": "interface",
|
|
2097
|
+
"body": "interface SdsPhoneValue { /** E.164 string, e.g. '+32470123456' (empty when no number is entered). */ e164: string; /** Selected country ISO2 code. */ country: string; /** Dial code without '+', e.g. '32'. */ dialCode: string; /** National-significant digits, e.g. '470123456'. */ national: string; /** Whether the national number matches an expected length for the country. */ valid: boolean; }"
|
|
2098
|
+
}
|
|
2099
|
+
],
|
|
2100
|
+
"projectionSlots": [],
|
|
2101
|
+
"hostBindings": {
|
|
2102
|
+
"class": "block",
|
|
2103
|
+
"(document:click)": "onDocumentClick($event)"
|
|
2104
|
+
},
|
|
2105
|
+
"examples": [
|
|
2106
|
+
{
|
|
2107
|
+
"sectionTitle": "Basique",
|
|
2108
|
+
"sectionDescription": "Pays par défaut : Belgique. Le champ se formate à la frappe.",
|
|
2109
|
+
"code": "<sds-phone-input label=\"Téléphone\" [(ngModel)]=\"phone\" />\n\n// phone === '+32470123456' (E.164)",
|
|
2110
|
+
"runnableExample": "<sds-phone-input label=\"Téléphone\" [(ngModel)]=\"phone\" />\n <p class=\"text-sm text-ink-soft\">\n Valeur (E.164) : <span class=\"font-medium text-ink\">{{ phone || '—' }}</span>\n </p>",
|
|
2111
|
+
"stack": true,
|
|
2112
|
+
"dark": false
|
|
2113
|
+
},
|
|
2114
|
+
{
|
|
2115
|
+
"sectionTitle": "Pays par défaut & pays préférés",
|
|
2116
|
+
"sectionDescription": "defaultCountry définit la sélection initiale ; preferredCountries les place en tête de liste.",
|
|
2117
|
+
"code": "<sds-phone-input\n label=\"Mobile\"\n defaultCountry=\"FR\"\n [preferredCountries]=\"['BE', 'FR', 'LU', 'NL']\"\n/>",
|
|
2118
|
+
"runnableExample": "<sds-phone-input\n label=\"Mobile\"\n defaultCountry=\"FR\"\n [preferredCountries]=\"['BE', 'FR', 'LU', 'NL']\"\n />",
|
|
2119
|
+
"stack": true,
|
|
2120
|
+
"dark": false
|
|
2121
|
+
},
|
|
2122
|
+
{
|
|
2123
|
+
"sectionTitle": "Liste restreinte",
|
|
2124
|
+
"sectionDescription": "onlyCountries limite les pays proposés.",
|
|
2125
|
+
"code": "<sds-phone-input\n label=\"Téléphone (zone Benelux)\"\n defaultCountry=\"BE\"\n [onlyCountries]=\"['BE', 'NL', 'LU']\"\n/>",
|
|
2126
|
+
"runnableExample": "<sds-phone-input\n label=\"Téléphone (zone Benelux)\"\n defaultCountry=\"BE\"\n [onlyCountries]=\"['BE', 'NL', 'LU']\"\n />",
|
|
2127
|
+
"stack": true,
|
|
2128
|
+
"dark": false
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"sectionTitle": "Validation (longueur par pays)",
|
|
2132
|
+
"sectionDescription": "required + validation de longueur. L'erreur s'affiche après le premier blur.",
|
|
2133
|
+
"code": "<sds-phone-input\n label=\"Téléphone professionnel\"\n defaultCountry=\"BE\"\n required\n clearable\n (phoneChange)=\"onChange($event)\"\n/>\n\n// $event: { e164, country, dialCode, national, valid }\n// Validator: { phoneInvalid: { expectedLengths, actualLength } } | { required }",
|
|
2134
|
+
"runnableExample": "<sds-phone-input\n label=\"Téléphone professionnel\"\n defaultCountry=\"BE\"\n required\n clearable\n (phoneChange)=\"last.set($event)\"\n />\n @if (last(); as v) {\n <div class=\"rounded-control bg-muted px-3 py-2 text-sm text-ink-soft\">\n <div>E.164 : <span class=\"font-medium text-ink\">{{ v.e164 || '—' }}</span></div>\n <div>Pays : <span class=\"font-medium text-ink\">{{ v.country }}</span> · National : {{ v.national || '—' }}</div>\n <div>\n Valide :\n <span class=\"font-medium\" [class]=\"v.valid ? 'text-success' : 'text-danger'\">\n {{ v.valid ? 'oui' : 'non' }}\n </span>\n </div>\n </div>\n }",
|
|
2135
|
+
"stack": true,
|
|
2136
|
+
"dark": false
|
|
2137
|
+
},
|
|
2138
|
+
{
|
|
2139
|
+
"sectionTitle": "Tailles",
|
|
2140
|
+
"sectionDescription": null,
|
|
2141
|
+
"code": "<sds-phone-input size=\"sm\" defaultCountry=\"BE\" label=\"Small\" />\n<sds-phone-input size=\"md\" defaultCountry=\"BE\" label=\"Medium\" />\n<sds-phone-input size=\"lg\" defaultCountry=\"BE\" label=\"Large\" />",
|
|
2142
|
+
"runnableExample": "<sds-phone-input size=\"sm\" defaultCountry=\"BE\" label=\"Small\" />\n <sds-phone-input size=\"md\" defaultCountry=\"BE\" label=\"Medium\" />\n <sds-phone-input size=\"lg\" defaultCountry=\"BE\" label=\"Large\" />",
|
|
2143
|
+
"stack": true,
|
|
2144
|
+
"dark": false
|
|
2145
|
+
},
|
|
2146
|
+
{
|
|
2147
|
+
"sectionTitle": "Désactivé",
|
|
2148
|
+
"sectionDescription": null,
|
|
2149
|
+
"code": "<sds-phone-input label=\"Téléphone\" [ngModel]=\"'+32470123456'\" disabled />",
|
|
2150
|
+
"runnableExample": "<sds-phone-input label=\"Téléphone\" defaultCountry=\"BE\" [ngModel]=\"'+32470123456'\" disabled />",
|
|
2151
|
+
"stack": true,
|
|
2152
|
+
"dark": false
|
|
2153
|
+
}
|
|
2154
|
+
]
|
|
2155
|
+
},
|
|
2156
|
+
{
|
|
2157
|
+
"className": "SdsSelect",
|
|
2158
|
+
"selector": "sds-select",
|
|
2159
|
+
"kind": "component",
|
|
2160
|
+
"group": "form",
|
|
2161
|
+
"importName": "SdsSelect",
|
|
2162
|
+
"description": "Liste déroulante à sélection unique. Options primitives ou objets (via optionLabel / optionValue / optionDisabled). Overlay attaché au <body>, filtre, effacement et navigation clavier complète. Implémente ControlValueAccessor.",
|
|
2163
|
+
"overviewDescription": "Liste déroulante avec filtre, effacement et navigation clavier.",
|
|
2164
|
+
"jsdoc": "Single-select dropdown. Options may be primitives or objects (configure via\n[optionLabel]/[optionValue]/[optionDisabled]). The overlay is appended to\n<body>. Supports filtering, clearing, and full keyboard navigation.\nImplements ControlValueAccessor — use with reactive forms or [(ngModel)].\n\nFor object options, set [optionValue] or [dataKey] so written values match by\nkey; otherwise selection matching falls back to reference equality (a written\ncopy of an option will not match).",
|
|
2165
|
+
"example": "<sds-select [options]=\"services\" optionLabel=\"name\" optionValue=\"id\"\n placeholder=\"Choisir un service\" [(ngModel)]=\"serviceId\" filter clearable />",
|
|
2166
|
+
"cva": true,
|
|
2167
|
+
"usesNgModel": true,
|
|
2168
|
+
"inputs": [
|
|
2169
|
+
{
|
|
2170
|
+
"name": "options",
|
|
2171
|
+
"type": "readonly unknown[]",
|
|
2172
|
+
"default": "[]",
|
|
2173
|
+
"required": false,
|
|
2174
|
+
"transform": null,
|
|
2175
|
+
"alias": null,
|
|
2176
|
+
"jsdoc": null
|
|
2177
|
+
},
|
|
2178
|
+
{
|
|
2179
|
+
"name": "optionLabel",
|
|
2180
|
+
"type": "string",
|
|
2181
|
+
"default": "'label'",
|
|
2182
|
+
"required": false,
|
|
2183
|
+
"transform": null,
|
|
2184
|
+
"alias": null,
|
|
2185
|
+
"jsdoc": null
|
|
2186
|
+
},
|
|
2187
|
+
{
|
|
2188
|
+
"name": "optionValue",
|
|
2189
|
+
"type": "string",
|
|
2190
|
+
"default": "''",
|
|
2191
|
+
"required": false,
|
|
2192
|
+
"transform": null,
|
|
2193
|
+
"alias": null,
|
|
2194
|
+
"jsdoc": null
|
|
2195
|
+
},
|
|
2196
|
+
{
|
|
2197
|
+
"name": "optionDisabled",
|
|
2198
|
+
"type": "string",
|
|
2199
|
+
"default": "'disabled'",
|
|
2200
|
+
"required": false,
|
|
2201
|
+
"transform": null,
|
|
2202
|
+
"alias": null,
|
|
2203
|
+
"jsdoc": null
|
|
2204
|
+
},
|
|
2205
|
+
{
|
|
2206
|
+
"name": "dataKey",
|
|
2207
|
+
"type": "string",
|
|
2208
|
+
"default": "''",
|
|
2209
|
+
"required": false,
|
|
2210
|
+
"transform": null,
|
|
2211
|
+
"alias": null,
|
|
2212
|
+
"jsdoc": "Key used to compare object values for selection equality."
|
|
2213
|
+
},
|
|
2214
|
+
{
|
|
2215
|
+
"name": "placeholder",
|
|
2216
|
+
"type": "string",
|
|
2217
|
+
"default": "'Sélectionner…'",
|
|
2218
|
+
"required": false,
|
|
2219
|
+
"transform": null,
|
|
2220
|
+
"alias": null,
|
|
2221
|
+
"jsdoc": null
|
|
2222
|
+
},
|
|
2223
|
+
{
|
|
2224
|
+
"name": "label",
|
|
2225
|
+
"type": "string",
|
|
2226
|
+
"default": "''",
|
|
2227
|
+
"required": false,
|
|
2228
|
+
"transform": null,
|
|
2229
|
+
"alias": null,
|
|
2230
|
+
"jsdoc": null
|
|
2231
|
+
},
|
|
2232
|
+
{
|
|
2233
|
+
"name": "ariaLabel",
|
|
2234
|
+
"type": "string",
|
|
2235
|
+
"default": "''",
|
|
2236
|
+
"required": false,
|
|
2237
|
+
"transform": null,
|
|
2238
|
+
"alias": null,
|
|
2239
|
+
"jsdoc": null
|
|
2240
|
+
},
|
|
2241
|
+
{
|
|
2242
|
+
"name": "hint",
|
|
2243
|
+
"type": "string",
|
|
2244
|
+
"default": "''",
|
|
2245
|
+
"required": false,
|
|
2246
|
+
"transform": null,
|
|
2247
|
+
"alias": null,
|
|
2248
|
+
"jsdoc": null
|
|
2249
|
+
},
|
|
2250
|
+
{
|
|
2251
|
+
"name": "error",
|
|
2252
|
+
"type": "string",
|
|
2253
|
+
"default": "''",
|
|
2254
|
+
"required": false,
|
|
2255
|
+
"transform": null,
|
|
2256
|
+
"alias": null,
|
|
2257
|
+
"jsdoc": null
|
|
2258
|
+
},
|
|
2259
|
+
{
|
|
2260
|
+
"name": "size",
|
|
2261
|
+
"type": "SdsSelectSize",
|
|
2262
|
+
"default": "'md'",
|
|
2263
|
+
"required": false,
|
|
2264
|
+
"transform": null,
|
|
2265
|
+
"alias": null,
|
|
2266
|
+
"jsdoc": null
|
|
2267
|
+
},
|
|
2268
|
+
{
|
|
2269
|
+
"name": "disabled",
|
|
2270
|
+
"type": "boolean",
|
|
2271
|
+
"default": "false",
|
|
2272
|
+
"required": false,
|
|
2273
|
+
"transform": "booleanAttribute",
|
|
2274
|
+
"alias": null,
|
|
2275
|
+
"jsdoc": null
|
|
2276
|
+
},
|
|
2277
|
+
{
|
|
2278
|
+
"name": "clearable",
|
|
2279
|
+
"type": "boolean",
|
|
2280
|
+
"default": "false",
|
|
2281
|
+
"required": false,
|
|
2282
|
+
"transform": "booleanAttribute",
|
|
2283
|
+
"alias": null,
|
|
2284
|
+
"jsdoc": null
|
|
2285
|
+
},
|
|
2286
|
+
{
|
|
2287
|
+
"name": "filter",
|
|
2288
|
+
"type": "boolean",
|
|
2289
|
+
"default": "false",
|
|
2290
|
+
"required": false,
|
|
2291
|
+
"transform": "booleanAttribute",
|
|
2292
|
+
"alias": null,
|
|
2293
|
+
"jsdoc": null
|
|
2294
|
+
},
|
|
2295
|
+
{
|
|
2296
|
+
"name": "filterPlaceholder",
|
|
2297
|
+
"type": "string",
|
|
2298
|
+
"default": "'Rechercher…'",
|
|
2299
|
+
"required": false,
|
|
2300
|
+
"transform": null,
|
|
2301
|
+
"alias": null,
|
|
2302
|
+
"jsdoc": null
|
|
2303
|
+
},
|
|
2304
|
+
{
|
|
2305
|
+
"name": "emptyMessage",
|
|
2306
|
+
"type": "string",
|
|
2307
|
+
"default": "'Aucun résultat'",
|
|
2308
|
+
"required": false,
|
|
2309
|
+
"transform": null,
|
|
2310
|
+
"alias": null,
|
|
2311
|
+
"jsdoc": null
|
|
2312
|
+
}
|
|
2313
|
+
],
|
|
2314
|
+
"outputs": [],
|
|
2315
|
+
"exportedTypes": [
|
|
2316
|
+
{
|
|
2317
|
+
"name": "SdsSelectSize",
|
|
2318
|
+
"kind": "union",
|
|
2319
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
2320
|
+
}
|
|
2321
|
+
],
|
|
2322
|
+
"projectionSlots": [],
|
|
2323
|
+
"hostBindings": {
|
|
2324
|
+
"class": "block",
|
|
2325
|
+
"(document:click)": "onDocumentClick($event)"
|
|
2326
|
+
},
|
|
2327
|
+
"examples": [
|
|
2328
|
+
{
|
|
2329
|
+
"sectionTitle": "Basique",
|
|
2330
|
+
"sectionDescription": "Options sous forme de chaînes simples.",
|
|
2331
|
+
"code": "<sds-select [options]=\"roles\" placeholder=\"Choisir un rôle\" />\n\n// roles = ['Médecin', 'Infirmier', 'Aide-soignant', 'Cadre de santé'];",
|
|
2332
|
+
"runnableExample": "<sds-select [options]=\"roles\" placeholder=\"Choisir un rôle\" />",
|
|
2333
|
+
"stack": true,
|
|
2334
|
+
"dark": false
|
|
2335
|
+
},
|
|
2336
|
+
{
|
|
2337
|
+
"sectionTitle": "Objets (optionLabel / optionValue)",
|
|
2338
|
+
"sectionDescription": "La valeur liée est le code ; l'étiquette affichée est le nom.",
|
|
2339
|
+
"code": "<sds-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n placeholder=\"Choisir un service\"\n/>\n\n// services = [{ name: 'Cardiologie', code: 'CARD' }, …];",
|
|
2340
|
+
"runnableExample": "<sds-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n placeholder=\"Choisir un service\"\n />",
|
|
2341
|
+
"stack": true,
|
|
2342
|
+
"dark": false
|
|
2343
|
+
},
|
|
2344
|
+
{
|
|
2345
|
+
"sectionTitle": "Avec filtre",
|
|
2346
|
+
"sectionDescription": null,
|
|
2347
|
+
"code": "<sds-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n placeholder=\"Choisir un service\"\n filter\n/>",
|
|
2348
|
+
"runnableExample": "<sds-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n placeholder=\"Choisir un service\"\n filter\n />",
|
|
2349
|
+
"stack": true,
|
|
2350
|
+
"dark": false
|
|
2351
|
+
},
|
|
2352
|
+
{
|
|
2353
|
+
"sectionTitle": "Effaçable",
|
|
2354
|
+
"sectionDescription": "Affiche un bouton d'effacement quand une valeur est sélectionnée.",
|
|
2355
|
+
"code": "<sds-select\n [options]=\"roles\"\n placeholder=\"Choisir un rôle\"\n clearable\n [(ngModel)]=\"role\"\n/>",
|
|
2356
|
+
"runnableExample": "<sds-select\n [options]=\"roles\"\n placeholder=\"Choisir un rôle\"\n clearable\n [(ngModel)]=\"role\"\n />",
|
|
2357
|
+
"stack": true,
|
|
2358
|
+
"dark": false
|
|
2359
|
+
},
|
|
2360
|
+
{
|
|
2361
|
+
"sectionTitle": "Lié au formulaire (ngModel)",
|
|
2362
|
+
"sectionDescription": null,
|
|
2363
|
+
"code": "<sds-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n placeholder=\"Choisir un service\"\n filter\n clearable\n [(ngModel)]=\"serviceCode\"\n/>\n<p>Code sélectionné : {{ serviceCode || '—' }}</p>",
|
|
2364
|
+
"runnableExample": "<sds-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n placeholder=\"Choisir un service\"\n filter\n clearable\n [(ngModel)]=\"serviceCode\"\n />\n <p class=\"text-sm text-ink-soft\">\n Code sélectionné : <span class=\"font-medium text-ink\">{{ serviceCode || '—' }}</span>\n </p>",
|
|
2365
|
+
"stack": true,
|
|
2366
|
+
"dark": false
|
|
2367
|
+
},
|
|
2368
|
+
{
|
|
2369
|
+
"sectionTitle": "Option désactivée",
|
|
2370
|
+
"sectionDescription": "« Maternité » est désactivée (optionDisabled).",
|
|
2371
|
+
"code": "<sds-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n optionDisabled=\"disabled\"\n placeholder=\"Choisir un service\"\n/>\n\n// { name: 'Maternité', code: 'MAT', disabled: true }",
|
|
2372
|
+
"runnableExample": "<sds-select\n [options]=\"services\"\n optionLabel=\"name\"\n optionValue=\"code\"\n optionDisabled=\"disabled\"\n placeholder=\"Choisir un service\"\n />",
|
|
2373
|
+
"stack": true,
|
|
2374
|
+
"dark": false
|
|
2375
|
+
},
|
|
2376
|
+
{
|
|
2377
|
+
"sectionTitle": "Désactivé",
|
|
2378
|
+
"sectionDescription": null,
|
|
2379
|
+
"code": "<sds-select [options]=\"roles\" placeholder=\"Indisponible\" disabled />",
|
|
2380
|
+
"runnableExample": "<sds-select [options]=\"roles\" placeholder=\"Indisponible\" disabled />",
|
|
2381
|
+
"stack": true,
|
|
2382
|
+
"dark": false
|
|
2383
|
+
}
|
|
2384
|
+
]
|
|
2385
|
+
},
|
|
2386
|
+
{
|
|
2387
|
+
"className": "SdsShell",
|
|
2388
|
+
"selector": "sds-shell",
|
|
2389
|
+
"kind": "component",
|
|
2390
|
+
"group": "layout",
|
|
2391
|
+
"importName": "SdsShell",
|
|
2392
|
+
"description": "Disposition globale de l'application : une colonne pleine hauteur avec la barre supérieure en haut, puis une rangée contenant la sidebar et le contenu défilant. Vous le voyez à l'œuvre tout autour de cette page.",
|
|
2393
|
+
"overviewDescription": "Disposition globale : barre + sidebar + contenu.",
|
|
2394
|
+
"jsdoc": "App layout shell: a full-height column with the top bar across the top and a\nrow below holding the sidebar and the scrollable main content.",
|
|
2395
|
+
"example": "<sds-shell>\n <sds-topbar sdsTopbar … />\n <sds-sidebar sdsSidebar> … </sds-sidebar>\n <!-- routed page content -->\n <router-outlet />\n</sds-shell>",
|
|
2396
|
+
"cva": false,
|
|
2397
|
+
"usesNgModel": false,
|
|
2398
|
+
"inputs": [],
|
|
2399
|
+
"outputs": [],
|
|
2400
|
+
"exportedTypes": [],
|
|
2401
|
+
"projectionSlots": [
|
|
2402
|
+
"[sdsTopbar]",
|
|
2403
|
+
"[sdsSidebar]"
|
|
2404
|
+
],
|
|
2405
|
+
"hostBindings": {
|
|
2406
|
+
"class": "block"
|
|
2407
|
+
},
|
|
2408
|
+
"examples": [
|
|
2409
|
+
{
|
|
2410
|
+
"sectionTitle": "Structure",
|
|
2411
|
+
"sectionDescription": "Projetez la barre via [sdsTopbar], la sidebar via [sdsSidebar], et le contenu (souvent un <router-outlet />) dans l'emplacement par défaut.",
|
|
2412
|
+
"code": "<sds-shell>\n <sds-topbar sdsTopbar appName=\"WebApp\" />\n\n <sds-sidebar sdsSidebar>\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" link=\"/membres/creer\" />\n </sds-nav-group>\n </sds-sidebar>\n\n <router-outlet />\n</sds-shell>",
|
|
2413
|
+
"runnableExample": "<div class=\"w-full overflow-hidden rounded-card border border-border\">\n <div class=\"flex h-8 items-center bg-linear-to-r from-brand-800 via-brand-700 to-brand-600 px-3 text-xs font-semibold text-white\">\n sdsTopbar\n </div>\n <div class=\"flex h-52\">\n <div class=\"flex w-32 items-start justify-center bg-brand-900 p-3 text-xs font-medium text-white/70\">\n sdsSidebar\n </div>\n <div class=\"flex flex-1 items-center justify-center bg-canvas text-xs text-ink-faint\">\n <router-outlet />\n </div>\n </div>\n </div>",
|
|
2414
|
+
"stack": true,
|
|
2415
|
+
"dark": false
|
|
2416
|
+
}
|
|
2417
|
+
]
|
|
2418
|
+
},
|
|
2419
|
+
{
|
|
2420
|
+
"className": "SdsSidebar",
|
|
2421
|
+
"selector": "sds-sidebar",
|
|
2422
|
+
"kind": "component",
|
|
2423
|
+
"group": "layout",
|
|
2424
|
+
"importName": "SdsSidebar, SdsNavGroup, SdsNavItem, SidebarStore",
|
|
2425
|
+
"description": "Rail de navigation repliable. Projetez des <sds-nav-group> / <sds-nav-item> et un pied de page via [sdsFooter]. L'état replié est partagé par SidebarStore. Utilisez le bouton en haut du rail pour replier.",
|
|
2426
|
+
"overviewDescription": "Navigation latérale repliable et groupée.",
|
|
2427
|
+
"jsdoc": "Collapsible navigation rail. Project <sds-nav-group>/<sds-nav-item> as the\ndefault content, and pin a footer (e.g. search + version badge) via the\n[sdsFooter] slot. Collapse state is shared through SidebarStore.",
|
|
2428
|
+
"example": "<sds-sidebar>\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" link=\"/membres/new\" />\n </sds-nav-group>\n <div sdsFooter>…</div>\n</sds-sidebar>",
|
|
2429
|
+
"cva": false,
|
|
2430
|
+
"usesNgModel": false,
|
|
2431
|
+
"inputs": [
|
|
2432
|
+
{
|
|
2433
|
+
"name": "collapseLabel",
|
|
2434
|
+
"type": "string",
|
|
2435
|
+
"default": "'Replier le menu'",
|
|
2436
|
+
"required": false,
|
|
2437
|
+
"transform": null,
|
|
2438
|
+
"alias": null,
|
|
2439
|
+
"jsdoc": "Accessible names for the rail's three icon-only controls. French defaults keep existing consumers\nunchanged; a multilingual app must pass translated values, since an icon-only button's aria-label\nis its only name."
|
|
2440
|
+
},
|
|
2441
|
+
{
|
|
2442
|
+
"name": "expandLabel",
|
|
2443
|
+
"type": "string",
|
|
2444
|
+
"default": "'Déplier le menu'",
|
|
2445
|
+
"required": false,
|
|
2446
|
+
"transform": null,
|
|
2447
|
+
"alias": null,
|
|
2448
|
+
"jsdoc": null
|
|
2449
|
+
},
|
|
2450
|
+
{
|
|
2451
|
+
"name": "closeLabel",
|
|
2452
|
+
"type": "string",
|
|
2453
|
+
"default": "'Fermer le menu'",
|
|
2454
|
+
"required": false,
|
|
2455
|
+
"transform": null,
|
|
2456
|
+
"alias": null,
|
|
2457
|
+
"jsdoc": null
|
|
2458
|
+
}
|
|
2459
|
+
],
|
|
2460
|
+
"outputs": [],
|
|
2461
|
+
"exportedTypes": [],
|
|
2462
|
+
"projectionSlots": [
|
|
2463
|
+
"[sdsFooter]"
|
|
2464
|
+
],
|
|
2465
|
+
"hostBindings": {
|
|
2466
|
+
"class": "block h-full"
|
|
2467
|
+
},
|
|
2468
|
+
"examples": [
|
|
2469
|
+
{
|
|
2470
|
+
"sectionTitle": "Navigation",
|
|
2471
|
+
"sectionDescription": "Les items acceptent [link] (routerLink avec état actif automatique) ; ici active est défini manuellement pour la démo.",
|
|
2472
|
+
"code": "<sds-sidebar>\n <sds-nav-group>\n <sds-nav-item icon=\"home\" label=\"Accueil\" link=\"/\" exact />\n </sds-nav-group>\n\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" link=\"/membres/creer\" />\n <sds-nav-item icon=\"building-2\" label=\"Recherche Occupants\" link=\"/membres/occupants\" />\n </sds-nav-group>\n\n <div sdsFooter>\n <sds-badge variant=\"warning\" dot>TEST V.1.0.0</sds-badge>\n </div>\n</sds-sidebar>",
|
|
2473
|
+
"runnableExample": "<div class=\"h-[460px] w-fit overflow-hidden rounded-card border border-border\">\n <sds-sidebar>\n <sds-nav-group>\n <sds-nav-item icon=\"home\" label=\"Accueil\" active />\n </sds-nav-group>\n\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" />\n <sds-nav-item icon=\"building-2\" label=\"Recherche Occupants\" />\n </sds-nav-group>\n\n <sds-nav-group label=\"Dotations\">\n <sds-nav-item icon=\"package-plus\" label=\"Créer une dotation\" />\n <sds-nav-item icon=\"rotate-ccw\" label=\"Retour de dotation\" />\n </sds-nav-group>\n\n <div sdsFooter>\n <sds-badge variant=\"warning\" dot>TEST V.1.0.0</sds-badge>\n </div>\n </sds-sidebar>\n </div>",
|
|
2474
|
+
"stack": true,
|
|
2475
|
+
"dark": false
|
|
2476
|
+
}
|
|
2477
|
+
]
|
|
2478
|
+
},
|
|
2479
|
+
{
|
|
2480
|
+
"className": "SdsTab",
|
|
2481
|
+
"selector": "sds-tab",
|
|
2482
|
+
"kind": "component",
|
|
2483
|
+
"group": "data",
|
|
2484
|
+
"importName": "SdsTab",
|
|
2485
|
+
"description": null,
|
|
2486
|
+
"overviewDescription": null,
|
|
2487
|
+
"jsdoc": "A single tab header (role=\"tab\"). Project the label and, optionally, an\n<sds-icon> for an icon + text header. Set [disabled] to make it unselectable.",
|
|
2488
|
+
"example": null,
|
|
2489
|
+
"cva": false,
|
|
2490
|
+
"usesNgModel": false,
|
|
2491
|
+
"inputs": [
|
|
2492
|
+
{
|
|
2493
|
+
"name": "value",
|
|
2494
|
+
"type": "SdsTabValue",
|
|
2495
|
+
"default": null,
|
|
2496
|
+
"required": true,
|
|
2497
|
+
"transform": null,
|
|
2498
|
+
"alias": null,
|
|
2499
|
+
"jsdoc": null
|
|
2500
|
+
},
|
|
2501
|
+
{
|
|
2502
|
+
"name": "disabled",
|
|
2503
|
+
"type": "boolean",
|
|
2504
|
+
"default": "false",
|
|
2505
|
+
"required": false,
|
|
2506
|
+
"transform": "booleanAttribute",
|
|
2507
|
+
"alias": null,
|
|
2508
|
+
"jsdoc": null
|
|
2509
|
+
}
|
|
2510
|
+
],
|
|
2511
|
+
"outputs": [],
|
|
2512
|
+
"exportedTypes": [],
|
|
2513
|
+
"projectionSlots": [],
|
|
2514
|
+
"hostBindings": {
|
|
2515
|
+
"class": "contents"
|
|
2516
|
+
},
|
|
2517
|
+
"examples": []
|
|
2518
|
+
},
|
|
2519
|
+
{
|
|
2520
|
+
"className": "SdsTable",
|
|
2521
|
+
"selector": "sds-table",
|
|
2522
|
+
"kind": "component",
|
|
2523
|
+
"group": "data",
|
|
2524
|
+
"importName": "SdsTable, SdsTableCell",
|
|
2525
|
+
"description": "Tableau de données côté client : tri, pagination (réutilise sds-paginator), recherche globale, sélection simple/multiple, modèles de cellules personnalisés, états de chargement/vide et variantes visuelles. Activez « lazy » pour déléguer tri/filtre/pagination au parent via (lazyLoad).",
|
|
2526
|
+
"overviewDescription": "Tableau : tri, pagination, filtre, sélection, cellules.",
|
|
2527
|
+
"jsdoc": "Client-side data table mirroring PrimeNG's table, scoped to a strong local\nfeature set: sorting, pagination (reuses {@link SdsPaginator}), global filter,\nsingle/multiple selection, custom cell templates (via {@link SdsTableCell}),\nloading/empty states and visual variants. Set `lazy` to delegate\nsort/filter/paging to the host through `(lazyLoad)`.",
|
|
2528
|
+
"example": "<sds-table [value]=\"staff\" [columns]=\"cols\" dataKey=\"id\"\n sortable paginator [rows]=\"10\" globalFilter\n selectionMode=\"multiple\" [(selection)]=\"selected\">\n <ng-template sdsCell=\"statut\" let-value let-row=\"row\">\n <sds-badge [variant]=\"row.actif ? 'success' : 'neutral'\">{{ value }}</sds-badge>\n </ng-template>\n</sds-table>",
|
|
2529
|
+
"cva": false,
|
|
2530
|
+
"usesNgModel": false,
|
|
2531
|
+
"inputs": [
|
|
2532
|
+
{
|
|
2533
|
+
"name": "value",
|
|
2534
|
+
"type": "readonly any[]",
|
|
2535
|
+
"default": "[]",
|
|
2536
|
+
"required": false,
|
|
2537
|
+
"transform": null,
|
|
2538
|
+
"alias": null,
|
|
2539
|
+
"jsdoc": null
|
|
2540
|
+
},
|
|
2541
|
+
{
|
|
2542
|
+
"name": "columns",
|
|
2543
|
+
"type": "SdsTableColumn[]",
|
|
2544
|
+
"default": "[]",
|
|
2545
|
+
"required": false,
|
|
2546
|
+
"transform": null,
|
|
2547
|
+
"alias": null,
|
|
2548
|
+
"jsdoc": null
|
|
2549
|
+
},
|
|
2550
|
+
{
|
|
2551
|
+
"name": "dataKey",
|
|
2552
|
+
"type": "string",
|
|
2553
|
+
"default": "''",
|
|
2554
|
+
"required": false,
|
|
2555
|
+
"transform": null,
|
|
2556
|
+
"alias": null,
|
|
2557
|
+
"jsdoc": null
|
|
2558
|
+
},
|
|
2559
|
+
{
|
|
2560
|
+
"name": "size",
|
|
2561
|
+
"type": "SdsTableSize",
|
|
2562
|
+
"default": "'md'",
|
|
2563
|
+
"required": false,
|
|
2564
|
+
"transform": null,
|
|
2565
|
+
"alias": null,
|
|
2566
|
+
"jsdoc": null
|
|
2567
|
+
},
|
|
2568
|
+
{
|
|
2569
|
+
"name": "striped",
|
|
2570
|
+
"type": "boolean",
|
|
2571
|
+
"default": "false",
|
|
2572
|
+
"required": false,
|
|
2573
|
+
"transform": "booleanAttribute",
|
|
2574
|
+
"alias": null,
|
|
2575
|
+
"jsdoc": null
|
|
2576
|
+
},
|
|
2577
|
+
{
|
|
2578
|
+
"name": "gridlines",
|
|
2579
|
+
"type": "boolean",
|
|
2580
|
+
"default": "false",
|
|
2581
|
+
"required": false,
|
|
2582
|
+
"transform": "booleanAttribute",
|
|
2583
|
+
"alias": null,
|
|
2584
|
+
"jsdoc": null
|
|
2585
|
+
},
|
|
2586
|
+
{
|
|
2587
|
+
"name": "hoverable",
|
|
2588
|
+
"type": "boolean",
|
|
2589
|
+
"default": "true",
|
|
2590
|
+
"required": false,
|
|
2591
|
+
"transform": "booleanAttribute",
|
|
2592
|
+
"alias": null,
|
|
2593
|
+
"jsdoc": null
|
|
2594
|
+
},
|
|
2595
|
+
{
|
|
2596
|
+
"name": "sortable",
|
|
2597
|
+
"type": "boolean",
|
|
2598
|
+
"default": "true",
|
|
2599
|
+
"required": false,
|
|
2600
|
+
"transform": "booleanAttribute",
|
|
2601
|
+
"alias": null,
|
|
2602
|
+
"jsdoc": "Master sort switch; per-column `sortable` is still required."
|
|
2603
|
+
},
|
|
2604
|
+
{
|
|
2605
|
+
"name": "paginator",
|
|
2606
|
+
"type": "boolean",
|
|
2607
|
+
"default": "false",
|
|
2608
|
+
"required": false,
|
|
2609
|
+
"transform": "booleanAttribute",
|
|
2610
|
+
"alias": null,
|
|
2611
|
+
"jsdoc": null
|
|
2612
|
+
},
|
|
2613
|
+
{
|
|
2614
|
+
"name": "rows",
|
|
2615
|
+
"type": "number",
|
|
2616
|
+
"default": "10",
|
|
2617
|
+
"required": false,
|
|
2618
|
+
"transform": "numberAttribute",
|
|
2619
|
+
"alias": null,
|
|
2620
|
+
"jsdoc": null
|
|
2621
|
+
},
|
|
2622
|
+
{
|
|
2623
|
+
"name": "rowsPerPageOptions",
|
|
2624
|
+
"type": "number[]",
|
|
2625
|
+
"default": "[10, 20, 50]",
|
|
2626
|
+
"required": false,
|
|
2627
|
+
"transform": null,
|
|
2628
|
+
"alias": null,
|
|
2629
|
+
"jsdoc": null
|
|
2630
|
+
},
|
|
2631
|
+
{
|
|
2632
|
+
"name": "showCurrentPageReport",
|
|
2633
|
+
"type": "boolean",
|
|
2634
|
+
"default": "true",
|
|
2635
|
+
"required": false,
|
|
2636
|
+
"transform": "booleanAttribute",
|
|
2637
|
+
"alias": null,
|
|
2638
|
+
"jsdoc": null
|
|
2639
|
+
},
|
|
2640
|
+
{
|
|
2641
|
+
"name": "globalFilter",
|
|
2642
|
+
"type": "boolean",
|
|
2643
|
+
"default": "false",
|
|
2644
|
+
"required": false,
|
|
2645
|
+
"transform": "booleanAttribute",
|
|
2646
|
+
"alias": null,
|
|
2647
|
+
"jsdoc": null
|
|
2648
|
+
},
|
|
2649
|
+
{
|
|
2650
|
+
"name": "globalFilterPlaceholder",
|
|
2651
|
+
"type": "string",
|
|
2652
|
+
"default": "'Rechercher…'",
|
|
2653
|
+
"required": false,
|
|
2654
|
+
"transform": null,
|
|
2655
|
+
"alias": null,
|
|
2656
|
+
"jsdoc": null
|
|
2657
|
+
},
|
|
2658
|
+
{
|
|
2659
|
+
"name": "globalFilterAriaLabel",
|
|
2660
|
+
"type": "string",
|
|
2661
|
+
"default": "'Rechercher dans le tableau'",
|
|
2662
|
+
"required": false,
|
|
2663
|
+
"transform": null,
|
|
2664
|
+
"alias": null,
|
|
2665
|
+
"jsdoc": "Accessible name for the global-filter input."
|
|
2666
|
+
},
|
|
2667
|
+
{
|
|
2668
|
+
"name": "globalFilterFields",
|
|
2669
|
+
"type": "string[]",
|
|
2670
|
+
"default": "[]",
|
|
2671
|
+
"required": false,
|
|
2672
|
+
"transform": null,
|
|
2673
|
+
"alias": null,
|
|
2674
|
+
"jsdoc": "Fields searched by the global filter. Empty = every column field."
|
|
2675
|
+
},
|
|
2676
|
+
{
|
|
2677
|
+
"name": "selectionMode",
|
|
2678
|
+
"type": "SdsSelectionMode",
|
|
2679
|
+
"default": "null",
|
|
2680
|
+
"required": false,
|
|
2681
|
+
"transform": null,
|
|
2682
|
+
"alias": null,
|
|
2683
|
+
"jsdoc": null
|
|
2684
|
+
},
|
|
2685
|
+
{
|
|
2686
|
+
"name": "selection",
|
|
2687
|
+
"type": "any",
|
|
2688
|
+
"default": "null",
|
|
2689
|
+
"required": false,
|
|
2690
|
+
"transform": null,
|
|
2691
|
+
"alias": null,
|
|
2692
|
+
"jsdoc": "Two-way: a single row (single mode) or an array of rows (multiple)."
|
|
2693
|
+
},
|
|
2694
|
+
{
|
|
2695
|
+
"name": "loading",
|
|
2696
|
+
"type": "boolean",
|
|
2697
|
+
"default": "false",
|
|
2698
|
+
"required": false,
|
|
2699
|
+
"transform": "booleanAttribute",
|
|
2700
|
+
"alias": null,
|
|
2701
|
+
"jsdoc": null
|
|
2702
|
+
},
|
|
2703
|
+
{
|
|
2704
|
+
"name": "emptyMessage",
|
|
2705
|
+
"type": "string",
|
|
2706
|
+
"default": "'Aucune donnée'",
|
|
2707
|
+
"required": false,
|
|
2708
|
+
"transform": null,
|
|
2709
|
+
"alias": null,
|
|
2710
|
+
"jsdoc": null
|
|
2711
|
+
},
|
|
2712
|
+
{
|
|
2713
|
+
"name": "caption",
|
|
2714
|
+
"type": "string",
|
|
2715
|
+
"default": "''",
|
|
2716
|
+
"required": false,
|
|
2717
|
+
"transform": null,
|
|
2718
|
+
"alias": null,
|
|
2719
|
+
"jsdoc": null
|
|
2720
|
+
},
|
|
2721
|
+
{
|
|
2722
|
+
"name": "ariaLabel",
|
|
2723
|
+
"type": "string",
|
|
2724
|
+
"default": "'Tableau de données'",
|
|
2725
|
+
"required": false,
|
|
2726
|
+
"transform": null,
|
|
2727
|
+
"alias": null,
|
|
2728
|
+
"jsdoc": "Fallback accessible name for the `<table>` when no `caption` is set."
|
|
2729
|
+
},
|
|
2730
|
+
{
|
|
2731
|
+
"name": "scrollHeight",
|
|
2732
|
+
"type": "string",
|
|
2733
|
+
"default": "''",
|
|
2734
|
+
"required": false,
|
|
2735
|
+
"transform": null,
|
|
2736
|
+
"alias": null,
|
|
2737
|
+
"jsdoc": "When set, the body scrolls vertically with a sticky header, e.g. `'320px'`."
|
|
2738
|
+
},
|
|
2739
|
+
{
|
|
2740
|
+
"name": "lazy",
|
|
2741
|
+
"type": "boolean",
|
|
2742
|
+
"default": "false",
|
|
2743
|
+
"required": false,
|
|
2744
|
+
"transform": "booleanAttribute",
|
|
2745
|
+
"alias": null,
|
|
2746
|
+
"jsdoc": "When true: skip internal sort/filter/slice; emit (lazyLoad) instead."
|
|
2747
|
+
},
|
|
2748
|
+
{
|
|
2749
|
+
"name": "totalRecords",
|
|
2750
|
+
"type": "number",
|
|
2751
|
+
"default": "0",
|
|
2752
|
+
"required": false,
|
|
2753
|
+
"transform": "numberAttribute",
|
|
2754
|
+
"alias": null,
|
|
2755
|
+
"jsdoc": "Total records for the paginator when `lazy`."
|
|
2756
|
+
},
|
|
2757
|
+
{
|
|
2758
|
+
"name": "expandable",
|
|
2759
|
+
"type": "boolean",
|
|
2760
|
+
"default": "false",
|
|
2761
|
+
"required": false,
|
|
2762
|
+
"transform": "booleanAttribute",
|
|
2763
|
+
"alias": null,
|
|
2764
|
+
"jsdoc": "Adds a leading expander column; details come from `<ng-template sdsRowExpansion>`."
|
|
2765
|
+
},
|
|
2766
|
+
{
|
|
2767
|
+
"name": "resizableColumns",
|
|
2768
|
+
"type": "boolean",
|
|
2769
|
+
"default": "false",
|
|
2770
|
+
"required": false,
|
|
2771
|
+
"transform": "booleanAttribute",
|
|
2772
|
+
"alias": null,
|
|
2773
|
+
"jsdoc": "Drag the right edge of a column header to resize it."
|
|
2774
|
+
},
|
|
2775
|
+
{
|
|
2776
|
+
"name": "reorderableColumns",
|
|
2777
|
+
"type": "boolean",
|
|
2778
|
+
"default": "false",
|
|
2779
|
+
"required": false,
|
|
2780
|
+
"transform": "booleanAttribute",
|
|
2781
|
+
"alias": null,
|
|
2782
|
+
"jsdoc": "Drag a column header to reorder columns."
|
|
2783
|
+
}
|
|
2784
|
+
],
|
|
2785
|
+
"outputs": [
|
|
2786
|
+
{
|
|
2787
|
+
"name": "selectionChange",
|
|
2788
|
+
"type": "any",
|
|
2789
|
+
"fromModel": true
|
|
2790
|
+
},
|
|
2791
|
+
{
|
|
2792
|
+
"name": "sortChange",
|
|
2793
|
+
"type": "SdsTableSortEvent",
|
|
2794
|
+
"fromModel": false
|
|
2795
|
+
},
|
|
2796
|
+
{
|
|
2797
|
+
"name": "pageChange",
|
|
2798
|
+
"type": "SdsPaginatorState",
|
|
2799
|
+
"fromModel": false
|
|
2800
|
+
},
|
|
2801
|
+
{
|
|
2802
|
+
"name": "rowSelect",
|
|
2803
|
+
"type": "any",
|
|
2804
|
+
"fromModel": false
|
|
2805
|
+
},
|
|
2806
|
+
{
|
|
2807
|
+
"name": "rowUnselect",
|
|
2808
|
+
"type": "any",
|
|
2809
|
+
"fromModel": false
|
|
2810
|
+
},
|
|
2811
|
+
{
|
|
2812
|
+
"name": "lazyLoad",
|
|
2813
|
+
"type": "SdsTableLazyEvent",
|
|
2814
|
+
"fromModel": false
|
|
2815
|
+
},
|
|
2816
|
+
{
|
|
2817
|
+
"name": "rowClick",
|
|
2818
|
+
"type": "any",
|
|
2819
|
+
"fromModel": false
|
|
2820
|
+
},
|
|
2821
|
+
{
|
|
2822
|
+
"name": "rowExpand",
|
|
2823
|
+
"type": "any",
|
|
2824
|
+
"fromModel": false
|
|
2825
|
+
},
|
|
2826
|
+
{
|
|
2827
|
+
"name": "rowCollapse",
|
|
2828
|
+
"type": "any",
|
|
2829
|
+
"fromModel": false
|
|
2830
|
+
},
|
|
2831
|
+
{
|
|
2832
|
+
"name": "colReorder",
|
|
2833
|
+
"type": "{ field: string; fromIndex: number; toIndex: number }",
|
|
2834
|
+
"fromModel": false
|
|
2835
|
+
}
|
|
2836
|
+
],
|
|
2837
|
+
"exportedTypes": [
|
|
2838
|
+
{
|
|
2839
|
+
"name": "SdsTableSize",
|
|
2840
|
+
"kind": "union",
|
|
2841
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
2842
|
+
},
|
|
2843
|
+
{
|
|
2844
|
+
"name": "SdsSortOrder",
|
|
2845
|
+
"kind": "union",
|
|
2846
|
+
"body": "1 | -1 | 0"
|
|
2847
|
+
},
|
|
2848
|
+
{
|
|
2849
|
+
"name": "SdsTableColumn",
|
|
2850
|
+
"kind": "interface",
|
|
2851
|
+
"body": "interface SdsTableColumn { /** Row field rendered in this column. Supports dot-paths. */ field: string; /** Header label. */ header: string; /** Allow sorting on this column (also requires the table's `sortable`). */ sortable?: boolean; /** Text alignment for header + body cells. */ align?: 'left' | 'center' | 'right'; /** Fixed column width, e.g. `'120px'` or `'20%'`. */ width?: string; }"
|
|
2852
|
+
},
|
|
2853
|
+
{
|
|
2854
|
+
"name": "SdsTableSortEvent",
|
|
2855
|
+
"kind": "interface",
|
|
2856
|
+
"body": "interface SdsTableSortEvent { field: string; order: SdsSortOrder; }"
|
|
2857
|
+
},
|
|
2858
|
+
{
|
|
2859
|
+
"name": "SdsTableLazyEvent",
|
|
2860
|
+
"kind": "interface",
|
|
2861
|
+
"body": "interface SdsTableLazyEvent { first: number; rows: number; sortField: string | null; sortOrder: SdsSortOrder; globalFilter: string; }"
|
|
2862
|
+
}
|
|
2863
|
+
],
|
|
2864
|
+
"projectionSlots": [],
|
|
2865
|
+
"hostBindings": {
|
|
2866
|
+
"class": "block"
|
|
2867
|
+
},
|
|
2868
|
+
"examples": [
|
|
2869
|
+
{
|
|
2870
|
+
"sectionTitle": "Basique",
|
|
2871
|
+
"sectionDescription": "Données (value) et configuration des colonnes (columns).",
|
|
2872
|
+
"code": "<sds-table [value]=\"staff\" [columns]=\"columns\" />\n\n// columns = [\n// { field: 'nom', header: 'Nom' },\n// { field: 'service', header: 'Service' },\n// { field: 'role', header: 'Rôle' },\n// { field: 'statut', header: 'Statut' },\n// ];",
|
|
2873
|
+
"runnableExample": "<sds-table [value]=\"staff\" [columns]=\"columns\" />",
|
|
2874
|
+
"stack": true,
|
|
2875
|
+
"dark": false
|
|
2876
|
+
},
|
|
2877
|
+
{
|
|
2878
|
+
"sectionTitle": "Tri",
|
|
2879
|
+
"sectionDescription": "Colonnes triables : clic pour cycler croissant → décroissant → aucun.",
|
|
2880
|
+
"code": "<sds-table [value]=\"staff\" [columns]=\"sortableColumns\" sortable />\n\n// { field: 'nom', header: 'Nom', sortable: true }, …",
|
|
2881
|
+
"runnableExample": "<sds-table [value]=\"staff\" [columns]=\"sortableColumns\" sortable />",
|
|
2882
|
+
"stack": true,
|
|
2883
|
+
"dark": false
|
|
2884
|
+
},
|
|
2885
|
+
{
|
|
2886
|
+
"sectionTitle": "Pagination",
|
|
2887
|
+
"sectionDescription": "paginator + rows + rowsPerPageOptions + showCurrentPageReport.",
|
|
2888
|
+
"code": "<sds-table\n [value]=\"staff\"\n [columns]=\"columns\"\n paginator\n [rows]=\"5\"\n [rowsPerPageOptions]=\"[5, 10, 20]\"\n showCurrentPageReport\n/>",
|
|
2889
|
+
"runnableExample": "<sds-table\n [value]=\"staff\"\n [columns]=\"columns\"\n paginator\n [rows]=\"5\"\n [rowsPerPageOptions]=\"[5, 10, 20]\"\n showCurrentPageReport\n />",
|
|
2890
|
+
"stack": true,
|
|
2891
|
+
"dark": false
|
|
2892
|
+
},
|
|
2893
|
+
{
|
|
2894
|
+
"sectionTitle": "Recherche globale",
|
|
2895
|
+
"sectionDescription": "Filtre toutes les colonnes (ou globalFilterFields).",
|
|
2896
|
+
"code": "<sds-table\n [value]=\"staff\"\n [columns]=\"sortableColumns\"\n sortable\n globalFilter\n paginator\n [rows]=\"5\"\n globalFilterPlaceholder=\"Rechercher un membre…\"\n/>",
|
|
2897
|
+
"runnableExample": "<sds-table\n [value]=\"staff\"\n [columns]=\"sortableColumns\"\n sortable\n globalFilter\n paginator\n [rows]=\"5\"\n globalFilterPlaceholder=\"Rechercher un membre…\"\n />",
|
|
2898
|
+
"stack": true,
|
|
2899
|
+
"dark": false
|
|
2900
|
+
},
|
|
2901
|
+
{
|
|
2902
|
+
"sectionTitle": "Sélection multiple",
|
|
2903
|
+
"sectionDescription": "selectionMode='multiple', dataKey='id', [(selection)].",
|
|
2904
|
+
"code": "<sds-table\n [value]=\"staff\"\n [columns]=\"columns\"\n dataKey=\"id\"\n selectionMode=\"multiple\"\n [(selection)]=\"selected\"\n paginator\n [rows]=\"5\"\n/>\n<p>Sélection : {{ selected.length }} ligne(s)</p>",
|
|
2905
|
+
"runnableExample": "<sds-table\n [value]=\"staff\"\n [columns]=\"columns\"\n dataKey=\"id\"\n selectionMode=\"multiple\"\n [(selection)]=\"selected\"\n paginator\n [rows]=\"5\"\n />\n <p class=\"text-sm text-ink-soft\">\n Sélection :\n <span class=\"font-medium text-ink\">{{ selected.length }}</span> ligne(s)\n </p>",
|
|
2906
|
+
"stack": true,
|
|
2907
|
+
"dark": false
|
|
2908
|
+
},
|
|
2909
|
+
{
|
|
2910
|
+
"sectionTitle": "Cellules personnalisées",
|
|
2911
|
+
"sectionDescription": "Modèles via <ng-template sdsCell=…> : un badge de statut et une colonne d'actions.",
|
|
2912
|
+
"code": "<sds-table [value]=\"staff\" [columns]=\"templateColumns\" dataKey=\"id\">\n <ng-template sdsCell=\"statut\" let-value let-row=\"row\">\n <sds-badge [variant]=\"statutVariant(row.statut)\">{{ value }}</sds-badge>\n </ng-template>\n\n <ng-template sdsCell=\"dispo\" let-value>\n @if (value) {\n <span class=\"inline-flex items-center gap-1 text-success\">\n <sds-icon name=\"check\" [size]=\"16\" /> Disponible\n </span>\n } @else {\n <span class=\"inline-flex items-center gap-1 text-ink-faint\">\n <sds-icon name=\"x\" [size]=\"16\" /> Non\n </span>\n }\n </ng-template>\n\n <ng-template sdsCell=\"actions\" let-row=\"row\">\n <div class=\"flex justify-end gap-2\">\n <sds-button size=\"sm\" variant=\"secondary\" (click)=\"edit(row)\">Modifier</sds-button>\n <sds-button size=\"sm\" variant=\"ghost\" (click)=\"remove(row)\">Supprimer</sds-button>\n </div>\n </ng-template>\n</sds-table>\n\n// templateColumns inclut { field: 'actions', header: '', align: 'right' }",
|
|
2913
|
+
"runnableExample": "<sds-table [value]=\"staff\" [columns]=\"templateColumns\" dataKey=\"id\">\n <ng-template sdsCell=\"statut\" let-value let-row=\"row\">\n <sds-badge [variant]=\"statutVariant(row.statut)\">{{ value }}</sds-badge>\n </ng-template>\n\n <ng-template sdsCell=\"dispo\" let-value>\n @if (value) {\n <span class=\"inline-flex items-center gap-1 text-success\">\n <sds-icon name=\"check\" [size]=\"16\" /> Disponible\n </span>\n } @else {\n <span class=\"inline-flex items-center gap-1 text-ink-faint\">\n <sds-icon name=\"x\" [size]=\"16\" /> Non\n </span>\n }\n </ng-template>\n\n <ng-template sdsCell=\"actions\" let-row=\"row\">\n <div class=\"flex justify-end gap-2\">\n <sds-button size=\"sm\" variant=\"secondary\" (click)=\"edit(row)\">Modifier</sds-button>\n <sds-button size=\"sm\" variant=\"ghost\" (click)=\"remove(row)\">Supprimer</sds-button>\n </div>\n </ng-template>\n </sds-table>",
|
|
2914
|
+
"stack": true,
|
|
2915
|
+
"dark": false
|
|
2916
|
+
},
|
|
2917
|
+
{
|
|
2918
|
+
"sectionTitle": "Variantes",
|
|
2919
|
+
"sectionDescription": "striped, gridlines et tailles (sm / md / lg).",
|
|
2920
|
+
"code": "<sds-table\n [value]=\"staff\"\n [columns]=\"columns\"\n striped\n gridlines\n size=\"sm\"\n/>",
|
|
2921
|
+
"runnableExample": "<sds-table [value]=\"staff.slice(0, 5)\" [columns]=\"columns\" striped gridlines size=\"sm\" />",
|
|
2922
|
+
"stack": true,
|
|
2923
|
+
"dark": false
|
|
2924
|
+
},
|
|
2925
|
+
{
|
|
2926
|
+
"sectionTitle": "États",
|
|
2927
|
+
"sectionDescription": "Chargement (overlay) et tableau vide.",
|
|
2928
|
+
"code": "<!-- Chargement -->\n<sds-table [value]=\"staff\" [columns]=\"columns\" [loading]=\"loading()\" />\n\n<!-- Vide -->\n<sds-table [value]=\"[]\" [columns]=\"columns\" emptyMessage=\"Aucun membre du personnel\" />",
|
|
2929
|
+
"runnableExample": "<div class=\"flex items-center gap-3\">\n <sds-button size=\"sm\" variant=\"secondary\" (click)=\"toggleLoading()\">\n {{ loading() ? 'Arrêter' : 'Simuler le chargement' }}\n </sds-button>\n </div>\n <sds-table [value]=\"staff.slice(0, 5)\" [columns]=\"columns\" [loading]=\"loading()\" />\n\n <p class=\"text-sm font-medium text-ink-soft\">Tableau vide :</p>\n <sds-table [value]=\"[]\" [columns]=\"columns\" emptyMessage=\"Aucun membre du personnel\" />",
|
|
2930
|
+
"stack": true,
|
|
2931
|
+
"dark": false
|
|
2932
|
+
},
|
|
2933
|
+
{
|
|
2934
|
+
"sectionTitle": "Lignes extensibles",
|
|
2935
|
+
"sectionDescription": "expandable + <ng-template sdsRowExpansion> : cliquez le chevron pour afficher le détail d'un membre.",
|
|
2936
|
+
"code": "<sds-table [value]=\"staff\" [columns]=\"columns\" dataKey=\"id\" expandable>\n <ng-template sdsRowExpansion let-row>\n <div class=\"flex items-center gap-6 text-sm text-ink-soft\">\n <span>\n <sds-icon name=\"calendar\" [size]=\"16\" /> Embauché le {{ row.embauche }}\n </span>\n <sds-badge [variant]=\"statutVariant(row.statut)\">{{ row.statut }}</sds-badge>\n </div>\n </ng-template>\n</sds-table>\n\n// (rowExpand)/(rowCollapse) émettent la ligne concernée.",
|
|
2937
|
+
"runnableExample": "<sds-table [value]=\"staff.slice(0, 6)\" [columns]=\"columns\" dataKey=\"id\" expandable>\n <ng-template sdsRowExpansion let-row>\n <div class=\"flex flex-wrap items-center gap-x-6 gap-y-2 text-sm text-ink-soft\">\n <span class=\"inline-flex items-center gap-1.5\">\n <sds-icon name=\"calendar\" [size]=\"16\" class=\"text-ink-faint\" />\n Embauché le <span class=\"font-medium text-ink\">{{ row.embauche }}</span>\n </span>\n <span class=\"inline-flex items-center gap-1.5\">\n <sds-icon name=\"building-2\" [size]=\"16\" class=\"text-ink-faint\" />\n <span class=\"font-medium text-ink\">{{ row.service }}</span>\n </span>\n <sds-badge [variant]=\"statutVariant(row.statut)\">{{ row.statut }}</sds-badge>\n @if (row.dispo) {\n <sds-badge variant=\"success\">Disponible</sds-badge>\n } @else {\n <sds-badge variant=\"neutral\">Indisponible</sds-badge>\n }\n </div>\n </ng-template>\n </sds-table>",
|
|
2938
|
+
"stack": true,
|
|
2939
|
+
"dark": false
|
|
2940
|
+
},
|
|
2941
|
+
{
|
|
2942
|
+
"sectionTitle": "Colonnes redimensionnables",
|
|
2943
|
+
"sectionDescription": "resizableColumns : glissez le bord droit d'un en-tête pour ajuster sa largeur.",
|
|
2944
|
+
"code": "<sds-table\n [value]=\"staff\"\n [columns]=\"sortableColumns\"\n sortable\n resizableColumns\n/>\n\n<!-- Glissez le bord droit d'un en-tête pour le redimensionner. -->",
|
|
2945
|
+
"runnableExample": "<sds-table [value]=\"staff.slice(0, 6)\" [columns]=\"sortableColumns\" sortable resizableColumns />",
|
|
2946
|
+
"stack": true,
|
|
2947
|
+
"dark": false
|
|
2948
|
+
},
|
|
2949
|
+
{
|
|
2950
|
+
"sectionTitle": "Colonnes réordonnables",
|
|
2951
|
+
"sectionDescription": "reorderableColumns : glissez un en-tête de colonne pour le déplacer.",
|
|
2952
|
+
"code": "<sds-table\n [value]=\"staff\"\n [columns]=\"sortableColumns\"\n sortable\n reorderableColumns\n (colReorder)=\"onReorder($event)\"\n/>\n\n<!-- Glissez un en-tête de colonne pour le déplacer. -->",
|
|
2953
|
+
"runnableExample": "<sds-table\n [value]=\"staff.slice(0, 6)\"\n [columns]=\"sortableColumns\"\n sortable\n reorderableColumns\n />",
|
|
2954
|
+
"stack": true,
|
|
2955
|
+
"dark": false
|
|
2956
|
+
},
|
|
2957
|
+
{
|
|
2958
|
+
"sectionTitle": "Données serveur (lazy)",
|
|
2959
|
+
"sectionDescription": "lazy + totalRecords + loading : tri/filtre/pagination délégués au parent via (lazyLoad). Ici un faux backend (setTimeout) sur les mêmes données.",
|
|
2960
|
+
"code": "<sds-table\n [value]=\"lazyRows()\"\n [columns]=\"sortableColumns\"\n lazy\n [totalRecords]=\"lazyTotal()\"\n [loading]=\"lazyLoading()\"\n paginator\n [rows]=\"5\"\n [rowsPerPageOptions]=\"[5, 10]\"\n sortable\n globalFilter\n (lazyLoad)=\"onLazyLoad($event)\"\n/>\n\n// loadLazy(e) { setTimeout(() => { /* filtre -> tri -> slice */ }, 600); }",
|
|
2961
|
+
"runnableExample": "<sds-table\n [value]=\"lazyRows()\"\n [columns]=\"sortableColumns\"\n lazy\n [totalRecords]=\"lazyTotal()\"\n [loading]=\"lazyLoading()\"\n paginator\n [rows]=\"5\"\n [rowsPerPageOptions]=\"[5, 10]\"\n sortable\n globalFilter\n globalFilterPlaceholder=\"Rechercher (côté serveur)…\"\n (lazyLoad)=\"onLazyLoad($event)\"\n />",
|
|
2962
|
+
"stack": true,
|
|
2963
|
+
"dark": false
|
|
2964
|
+
}
|
|
2965
|
+
]
|
|
2966
|
+
},
|
|
2967
|
+
{
|
|
2968
|
+
"className": "SdsTabList",
|
|
2969
|
+
"selector": "sds-tab-list",
|
|
2970
|
+
"kind": "component",
|
|
2971
|
+
"group": "data",
|
|
2972
|
+
"importName": "SdsTabList",
|
|
2973
|
+
"description": null,
|
|
2974
|
+
"overviewDescription": null,
|
|
2975
|
+
"jsdoc": "Container (role=\"tablist\") for the <sds-tab> headers. Renders the bottom rule\nand handles roving-focus keyboard navigation (Arrow keys, Home, End) with\nautomatic activation.",
|
|
2976
|
+
"example": null,
|
|
2977
|
+
"cva": false,
|
|
2978
|
+
"usesNgModel": false,
|
|
2979
|
+
"inputs": [],
|
|
2980
|
+
"outputs": [],
|
|
2981
|
+
"exportedTypes": [],
|
|
2982
|
+
"projectionSlots": [],
|
|
2983
|
+
"hostBindings": {
|
|
2984
|
+
"role": "tablist",
|
|
2985
|
+
"[class]": "listClass()",
|
|
2986
|
+
"(keydown)": "onKeydown($event)"
|
|
2987
|
+
},
|
|
2988
|
+
"examples": []
|
|
2989
|
+
},
|
|
2990
|
+
{
|
|
2991
|
+
"className": "SdsTabPanel",
|
|
2992
|
+
"selector": "sds-tab-panel",
|
|
2993
|
+
"kind": "component",
|
|
2994
|
+
"group": "data",
|
|
2995
|
+
"importName": "SdsTabPanel",
|
|
2996
|
+
"description": null,
|
|
2997
|
+
"overviewDescription": null,
|
|
2998
|
+
"jsdoc": "Content for one tab (role=\"tabpanel\"); shown only while its [value] matches\nthe active tab. Inactive panels are not rendered (their content is created\non activation), so panel state does not persist across switches.",
|
|
2999
|
+
"example": null,
|
|
3000
|
+
"cva": false,
|
|
3001
|
+
"usesNgModel": false,
|
|
3002
|
+
"inputs": [
|
|
3003
|
+
{
|
|
3004
|
+
"name": "value",
|
|
3005
|
+
"type": "SdsTabValue",
|
|
3006
|
+
"default": null,
|
|
3007
|
+
"required": true,
|
|
3008
|
+
"transform": null,
|
|
3009
|
+
"alias": null,
|
|
3010
|
+
"jsdoc": null
|
|
3011
|
+
}
|
|
3012
|
+
],
|
|
3013
|
+
"outputs": [],
|
|
3014
|
+
"exportedTypes": [],
|
|
3015
|
+
"projectionSlots": [],
|
|
3016
|
+
"hostBindings": {
|
|
3017
|
+
"class": "block"
|
|
3018
|
+
},
|
|
3019
|
+
"examples": []
|
|
3020
|
+
},
|
|
3021
|
+
{
|
|
3022
|
+
"className": "SdsTabPanels",
|
|
3023
|
+
"selector": "sds-tab-panels",
|
|
3024
|
+
"kind": "component",
|
|
3025
|
+
"group": "data",
|
|
3026
|
+
"importName": "SdsTabPanels",
|
|
3027
|
+
"description": null,
|
|
3028
|
+
"overviewDescription": null,
|
|
3029
|
+
"jsdoc": "Wrapper for the <sds-tab-panel> content blocks of a tab set.",
|
|
3030
|
+
"example": null,
|
|
3031
|
+
"cva": false,
|
|
3032
|
+
"usesNgModel": false,
|
|
3033
|
+
"inputs": [],
|
|
3034
|
+
"outputs": [],
|
|
3035
|
+
"exportedTypes": [],
|
|
3036
|
+
"projectionSlots": [],
|
|
3037
|
+
"hostBindings": {
|
|
3038
|
+
"class": "block"
|
|
3039
|
+
},
|
|
3040
|
+
"examples": []
|
|
3041
|
+
},
|
|
3042
|
+
{
|
|
3043
|
+
"className": "SdsTabs",
|
|
3044
|
+
"selector": "sds-tabs",
|
|
3045
|
+
"kind": "component",
|
|
3046
|
+
"group": "data",
|
|
3047
|
+
"importName": "SdsTabs, SdsTabList, SdsTab, SdsTabPanels, SdsTabPanel",
|
|
3048
|
+
"description": "Onglets composables. <sds-tabs> coordonne <sds-tab-list> (en-têtes) et <sds-tab-panels> (contenus) ; l'onglet actif est la valeur [value], appariée par [value] sur chaque <sds-tab> / <sds-tab-panel>. Liaison bidirectionnelle [(value)], en-têtes avec icônes, défilement horizontal et navigation clavier (flèches, Début, Fin).",
|
|
3049
|
+
"overviewDescription": "Onglets composables : icônes, défilement et navigation clavier.",
|
|
3050
|
+
"jsdoc": "Root of a tab set. Compose with <sds-tab-list> (headers) and <sds-tab-panels>\n(content). The active tab is the [value], matched against each <sds-tab> /\n<sds-tab-panel> [value]; it is two-way bindable via [(value)]. When omitted,\nthe first registered tab is selected.",
|
|
3051
|
+
"example": "<sds-tabs [(value)]=\"active\">\n <sds-tab-list>\n <sds-tab value=\"0\">Détails</sds-tab>\n <sds-tab value=\"1\">Historique</sds-tab>\n </sds-tab-list>\n <sds-tab-panels>\n <sds-tab-panel value=\"0\">…</sds-tab-panel>\n <sds-tab-panel value=\"1\">…</sds-tab-panel>\n </sds-tab-panels>\n</sds-tabs>",
|
|
3052
|
+
"cva": false,
|
|
3053
|
+
"usesNgModel": false,
|
|
3054
|
+
"inputs": [
|
|
3055
|
+
{
|
|
3056
|
+
"name": "value",
|
|
3057
|
+
"type": "SdsTabValue",
|
|
3058
|
+
"default": "null",
|
|
3059
|
+
"required": false,
|
|
3060
|
+
"transform": null,
|
|
3061
|
+
"alias": null,
|
|
3062
|
+
"jsdoc": "Value of the active tab (two-way)."
|
|
3063
|
+
},
|
|
3064
|
+
{
|
|
3065
|
+
"name": "scrollable",
|
|
3066
|
+
"type": "boolean",
|
|
3067
|
+
"default": "false",
|
|
3068
|
+
"required": false,
|
|
3069
|
+
"transform": "booleanAttribute",
|
|
3070
|
+
"alias": null,
|
|
3071
|
+
"jsdoc": "Let the tab list scroll horizontally instead of overflowing."
|
|
3072
|
+
}
|
|
3073
|
+
],
|
|
3074
|
+
"outputs": [
|
|
3075
|
+
{
|
|
3076
|
+
"name": "valueChange",
|
|
3077
|
+
"type": "SdsTabValue",
|
|
3078
|
+
"fromModel": true
|
|
3079
|
+
}
|
|
3080
|
+
],
|
|
3081
|
+
"exportedTypes": [],
|
|
3082
|
+
"projectionSlots": [],
|
|
3083
|
+
"hostBindings": {
|
|
3084
|
+
"class": "block"
|
|
3085
|
+
},
|
|
3086
|
+
"examples": [
|
|
3087
|
+
{
|
|
3088
|
+
"sectionTitle": "Basique",
|
|
3089
|
+
"sectionDescription": "Le premier onglet est sélectionné par défaut.",
|
|
3090
|
+
"code": "<sds-tabs value=\"0\">\n <sds-tab-list>\n <sds-tab value=\"0\">Détails</sds-tab>\n <sds-tab value=\"1\">Historique</sds-tab>\n <sds-tab value=\"2\">Documents</sds-tab>\n </sds-tab-list>\n <sds-tab-panels>\n <sds-tab-panel value=\"0\">…</sds-tab-panel>\n <sds-tab-panel value=\"1\">…</sds-tab-panel>\n <sds-tab-panel value=\"2\">…</sds-tab-panel>\n </sds-tab-panels>\n</sds-tabs>",
|
|
3091
|
+
"runnableExample": "<sds-tabs value=\"0\">\n <sds-tab-list>\n <sds-tab value=\"0\">Détails</sds-tab>\n <sds-tab value=\"1\">Historique</sds-tab>\n <sds-tab value=\"2\">Documents</sds-tab>\n </sds-tab-list>\n <sds-tab-panels>\n <sds-tab-panel value=\"0\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">\n Informations générales du dossier patient : identité, service et\n médecin référent.\n </p>\n </sds-tab-panel>\n <sds-tab-panel value=\"1\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">\n Historique des admissions, consultations et actes réalisés.\n </p>\n </sds-tab-panel>\n <sds-tab-panel value=\"2\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">\n Comptes rendus, ordonnances et résultats d'examens téléversés.\n </p>\n </sds-tab-panel>\n </sds-tab-panels>\n </sds-tabs>",
|
|
3092
|
+
"stack": true,
|
|
3093
|
+
"dark": false
|
|
3094
|
+
},
|
|
3095
|
+
{
|
|
3096
|
+
"sectionTitle": "En-têtes avec icônes",
|
|
3097
|
+
"sectionDescription": "Projetez un <sds-icon> dans l'en-tête.",
|
|
3098
|
+
"code": "<sds-tabs value=\"overview\">\n <sds-tab-list>\n <sds-tab value=\"overview\"><sds-icon name=\"book-open\" [size]=\"16\" /> Vue d'ensemble</sds-tab>\n <sds-tab value=\"team\"><sds-icon name=\"users\" [size]=\"16\" /> Équipe</sds-tab>\n <sds-tab value=\"settings\"><sds-icon name=\"settings\" [size]=\"16\" /> Paramètres</sds-tab>\n </sds-tab-list>\n <sds-tab-panels>…</sds-tab-panels>\n</sds-tabs>",
|
|
3099
|
+
"runnableExample": "<sds-tabs value=\"overview\">\n <sds-tab-list>\n <sds-tab value=\"overview\"><sds-icon name=\"book-open\" [size]=\"16\" /> Vue d'ensemble</sds-tab>\n <sds-tab value=\"team\"><sds-icon name=\"users\" [size]=\"16\" /> Équipe</sds-tab>\n <sds-tab value=\"settings\"><sds-icon name=\"settings\" [size]=\"16\" /> Paramètres</sds-tab>\n </sds-tab-list>\n <sds-tab-panels>\n <sds-tab-panel value=\"overview\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">Synthèse de l'unité de soins.</p>\n </sds-tab-panel>\n <sds-tab-panel value=\"team\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">Membres de l'équipe et plannings.</p>\n </sds-tab-panel>\n <sds-tab-panel value=\"settings\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">Préférences et droits d'accès.</p>\n </sds-tab-panel>\n </sds-tab-panels>\n </sds-tabs>",
|
|
3100
|
+
"stack": true,
|
|
3101
|
+
"dark": false
|
|
3102
|
+
},
|
|
3103
|
+
{
|
|
3104
|
+
"sectionTitle": "Onglet désactivé",
|
|
3105
|
+
"sectionDescription": null,
|
|
3106
|
+
"code": "<sds-tabs value=\"0\">\n <sds-tab-list>\n <sds-tab value=\"0\">Actif</sds-tab>\n <sds-tab value=\"1\" disabled>Indisponible</sds-tab>\n <sds-tab value=\"2\">Archives</sds-tab>\n </sds-tab-list>\n <sds-tab-panels>…</sds-tab-panels>\n</sds-tabs>",
|
|
3107
|
+
"runnableExample": "<sds-tabs value=\"0\">\n <sds-tab-list>\n <sds-tab value=\"0\">Actif</sds-tab>\n <sds-tab value=\"1\" disabled>Indisponible</sds-tab>\n <sds-tab value=\"2\">Archives</sds-tab>\n </sds-tab-list>\n <sds-tab-panels>\n <sds-tab-panel value=\"0\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">Contenu de l'onglet actif.</p>\n </sds-tab-panel>\n <sds-tab-panel value=\"2\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">Contenu des archives.</p>\n </sds-tab-panel>\n </sds-tab-panels>\n </sds-tabs>",
|
|
3108
|
+
"stack": true,
|
|
3109
|
+
"dark": false
|
|
3110
|
+
},
|
|
3111
|
+
{
|
|
3112
|
+
"sectionTitle": "Défilement",
|
|
3113
|
+
"sectionDescription": "scrollable garde les en-têtes sur une seule ligne avec défilement horizontal.",
|
|
3114
|
+
"code": "<sds-tabs value=\"s1\" scrollable>\n <sds-tab-list>\n @for (s of services; track s) {\n <sds-tab [value]=\"s.value\">{{ s.title }}</sds-tab>\n }\n </sds-tab-list>\n <sds-tab-panels>\n @for (s of services; track s) {\n <sds-tab-panel [value]=\"s.value\">…</sds-tab-panel>\n }\n </sds-tab-panels>\n</sds-tabs>",
|
|
3115
|
+
"runnableExample": "<sds-tabs value=\"s1\" scrollable>\n <sds-tab-list>\n @for (s of services; track s) {\n <sds-tab [value]=\"s.value\">{{ s.title }}</sds-tab>\n }\n </sds-tab-list>\n <sds-tab-panels>\n @for (s of services; track s) {\n <sds-tab-panel [value]=\"s.value\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">Service : {{ s.title }}</p>\n </sds-tab-panel>\n }\n </sds-tab-panels>\n </sds-tabs>",
|
|
3116
|
+
"stack": true,
|
|
3117
|
+
"dark": false
|
|
3118
|
+
},
|
|
3119
|
+
{
|
|
3120
|
+
"sectionTitle": "Contrôlé (two-way)",
|
|
3121
|
+
"sectionDescription": "Liaison [(value)] vers un signal ; pilotable depuis l'extérieur.",
|
|
3122
|
+
"code": "<sds-button (click)=\"active.set('a')\">Aller à A</sds-button>\n<sds-button (click)=\"active.set('c')\">Aller à C</sds-button>\n\n<sds-tabs [(value)]=\"active\">\n <sds-tab-list>\n <sds-tab value=\"a\">Onglet A</sds-tab>\n <sds-tab value=\"b\">Onglet B</sds-tab>\n <sds-tab value=\"c\">Onglet C</sds-tab>\n </sds-tab-list>\n <sds-tab-panels>…</sds-tab-panels>\n</sds-tabs>\n\n// active = signal<SdsTabValue>('a');",
|
|
3123
|
+
"runnableExample": "<div class=\"flex flex-wrap items-center gap-2\">\n <sds-button size=\"sm\" variant=\"secondary\" (click)=\"active.set('a')\">Aller à A</sds-button>\n <sds-button size=\"sm\" variant=\"secondary\" (click)=\"active.set('c')\">Aller à C</sds-button>\n <span class=\"text-sm text-ink-soft\">\n Onglet actif : <span class=\"font-medium text-ink\">{{ active() }}</span>\n </span>\n </div>\n\n <sds-tabs [(value)]=\"active\">\n <sds-tab-list>\n <sds-tab value=\"a\">Onglet A</sds-tab>\n <sds-tab value=\"b\">Onglet B</sds-tab>\n <sds-tab value=\"c\">Onglet C</sds-tab>\n </sds-tab-list>\n <sds-tab-panels>\n <sds-tab-panel value=\"a\"><p class=\"text-sm text-ink-soft\">Panneau A</p></sds-tab-panel>\n <sds-tab-panel value=\"b\"><p class=\"text-sm text-ink-soft\">Panneau B</p></sds-tab-panel>\n <sds-tab-panel value=\"c\"><p class=\"text-sm text-ink-soft\">Panneau C</p></sds-tab-panel>\n </sds-tab-panels>\n </sds-tabs>",
|
|
3124
|
+
"stack": true,
|
|
3125
|
+
"dark": false
|
|
3126
|
+
},
|
|
3127
|
+
{
|
|
3128
|
+
"sectionTitle": "Onglets dynamiques",
|
|
3129
|
+
"sectionDescription": "Générez en-têtes et panneaux avec @for.",
|
|
3130
|
+
"code": "<sds-tabs [value]=\"dynamicTabs[0].value\">\n <sds-tab-list>\n @for (t of dynamicTabs; track t.value) {\n <sds-tab [value]=\"t.value\">{{ t.title }}</sds-tab>\n }\n </sds-tab-list>\n <sds-tab-panels>\n @for (t of dynamicTabs; track t.value) {\n <sds-tab-panel [value]=\"t.value\">{{ t.body }}</sds-tab-panel>\n }\n </sds-tab-panels>\n</sds-tabs>",
|
|
3131
|
+
"runnableExample": "<sds-tabs [value]=\"dynamicTabs[0].value\">\n <sds-tab-list>\n @for (t of dynamicTabs; track t.value) {\n <sds-tab [value]=\"t.value\">{{ t.title }}</sds-tab>\n }\n </sds-tab-list>\n <sds-tab-panels>\n @for (t of dynamicTabs; track t.value) {\n <sds-tab-panel [value]=\"t.value\">\n <p class=\"text-sm leading-relaxed text-ink-soft\">{{ t.body }}</p>\n </sds-tab-panel>\n }\n </sds-tab-panels>\n </sds-tabs>",
|
|
3132
|
+
"stack": true,
|
|
3133
|
+
"dark": false
|
|
3134
|
+
}
|
|
3135
|
+
]
|
|
3136
|
+
},
|
|
3137
|
+
{
|
|
3138
|
+
"className": "SdsTextarea",
|
|
3139
|
+
"selector": "sds-textarea",
|
|
3140
|
+
"kind": "component",
|
|
3141
|
+
"group": "form",
|
|
3142
|
+
"importName": "SdsTextarea",
|
|
3143
|
+
"description": "Champ de saisie multiligne avec label, aide, erreur, tailles, redimensionnement automatique et compteur de caractères. Implémente ControlValueAccessor — utilisable avec les formulaires réactifs ou [(ngModel)].",
|
|
3144
|
+
"overviewDescription": "Saisie multiligne : auto-redimensionnement et compteur.",
|
|
3145
|
+
"jsdoc": "Multi-line text field with label, hint/error, character counter and optional\nauto-resize. Implements ControlValueAccessor — use with reactive forms or\n[(ngModel)].",
|
|
3146
|
+
"example": null,
|
|
3147
|
+
"cva": true,
|
|
3148
|
+
"usesNgModel": true,
|
|
3149
|
+
"inputs": [
|
|
3150
|
+
{
|
|
3151
|
+
"name": "label",
|
|
3152
|
+
"type": "string",
|
|
3153
|
+
"default": "''",
|
|
3154
|
+
"required": false,
|
|
3155
|
+
"transform": null,
|
|
3156
|
+
"alias": null,
|
|
3157
|
+
"jsdoc": null
|
|
3158
|
+
},
|
|
3159
|
+
{
|
|
3160
|
+
"name": "ariaLabel",
|
|
3161
|
+
"type": "string",
|
|
3162
|
+
"default": "''",
|
|
3163
|
+
"required": false,
|
|
3164
|
+
"transform": null,
|
|
3165
|
+
"alias": null,
|
|
3166
|
+
"jsdoc": "Accessible name used when no visible [label] is provided."
|
|
3167
|
+
},
|
|
3168
|
+
{
|
|
3169
|
+
"name": "placeholder",
|
|
3170
|
+
"type": "string",
|
|
3171
|
+
"default": "''",
|
|
3172
|
+
"required": false,
|
|
3173
|
+
"transform": null,
|
|
3174
|
+
"alias": null,
|
|
3175
|
+
"jsdoc": null
|
|
3176
|
+
},
|
|
3177
|
+
{
|
|
3178
|
+
"name": "hint",
|
|
3179
|
+
"type": "string",
|
|
3180
|
+
"default": "''",
|
|
3181
|
+
"required": false,
|
|
3182
|
+
"transform": null,
|
|
3183
|
+
"alias": null,
|
|
3184
|
+
"jsdoc": null
|
|
3185
|
+
},
|
|
3186
|
+
{
|
|
3187
|
+
"name": "error",
|
|
3188
|
+
"type": "string",
|
|
3189
|
+
"default": "''",
|
|
3190
|
+
"required": false,
|
|
3191
|
+
"transform": null,
|
|
3192
|
+
"alias": null,
|
|
3193
|
+
"jsdoc": null
|
|
3194
|
+
},
|
|
3195
|
+
{
|
|
3196
|
+
"name": "size",
|
|
3197
|
+
"type": "SdsTextareaSize",
|
|
3198
|
+
"default": "'md'",
|
|
3199
|
+
"required": false,
|
|
3200
|
+
"transform": null,
|
|
3201
|
+
"alias": null,
|
|
3202
|
+
"jsdoc": null
|
|
3203
|
+
},
|
|
3204
|
+
{
|
|
3205
|
+
"name": "disabled",
|
|
3206
|
+
"type": "boolean",
|
|
3207
|
+
"default": "false",
|
|
3208
|
+
"required": false,
|
|
3209
|
+
"transform": "booleanAttribute",
|
|
3210
|
+
"alias": null,
|
|
3211
|
+
"jsdoc": null
|
|
3212
|
+
},
|
|
3213
|
+
{
|
|
3214
|
+
"name": "readonly",
|
|
3215
|
+
"type": "boolean",
|
|
3216
|
+
"default": "false",
|
|
3217
|
+
"required": false,
|
|
3218
|
+
"transform": "booleanAttribute",
|
|
3219
|
+
"alias": null,
|
|
3220
|
+
"jsdoc": null
|
|
3221
|
+
},
|
|
3222
|
+
{
|
|
3223
|
+
"name": "required",
|
|
3224
|
+
"type": "boolean",
|
|
3225
|
+
"default": "false",
|
|
3226
|
+
"required": false,
|
|
3227
|
+
"transform": "booleanAttribute",
|
|
3228
|
+
"alias": null,
|
|
3229
|
+
"jsdoc": null
|
|
3230
|
+
},
|
|
3231
|
+
{
|
|
3232
|
+
"name": "rows",
|
|
3233
|
+
"type": "number",
|
|
3234
|
+
"default": "3",
|
|
3235
|
+
"required": false,
|
|
3236
|
+
"transform": "numberAttribute",
|
|
3237
|
+
"alias": null,
|
|
3238
|
+
"jsdoc": "Minimum visible rows."
|
|
3239
|
+
},
|
|
3240
|
+
{
|
|
3241
|
+
"name": "autoResize",
|
|
3242
|
+
"type": "boolean",
|
|
3243
|
+
"default": "false",
|
|
3244
|
+
"required": false,
|
|
3245
|
+
"transform": "booleanAttribute",
|
|
3246
|
+
"alias": null,
|
|
3247
|
+
"jsdoc": "Grow the field to fit its content as the user types."
|
|
3248
|
+
},
|
|
3249
|
+
{
|
|
3250
|
+
"name": "maxLength",
|
|
3251
|
+
"type": "number",
|
|
3252
|
+
"default": "0",
|
|
3253
|
+
"required": false,
|
|
3254
|
+
"transform": "numberAttribute",
|
|
3255
|
+
"alias": null,
|
|
3256
|
+
"jsdoc": "Hard character cap; 0 means no limit."
|
|
3257
|
+
},
|
|
3258
|
+
{
|
|
3259
|
+
"name": "showCount",
|
|
3260
|
+
"type": "boolean",
|
|
3261
|
+
"default": "false",
|
|
3262
|
+
"required": false,
|
|
3263
|
+
"transform": "booleanAttribute",
|
|
3264
|
+
"alias": null,
|
|
3265
|
+
"jsdoc": "Show a character counter row."
|
|
3266
|
+
},
|
|
3267
|
+
{
|
|
3268
|
+
"name": "resize",
|
|
3269
|
+
"type": "SdsTextareaResize",
|
|
3270
|
+
"default": "'vertical'",
|
|
3271
|
+
"required": false,
|
|
3272
|
+
"transform": null,
|
|
3273
|
+
"alias": null,
|
|
3274
|
+
"jsdoc": null
|
|
3275
|
+
}
|
|
3276
|
+
],
|
|
3277
|
+
"outputs": [],
|
|
3278
|
+
"exportedTypes": [
|
|
3279
|
+
{
|
|
3280
|
+
"name": "SdsTextareaSize",
|
|
3281
|
+
"kind": "union",
|
|
3282
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
3283
|
+
},
|
|
3284
|
+
{
|
|
3285
|
+
"name": "SdsTextareaResize",
|
|
3286
|
+
"kind": "union",
|
|
3287
|
+
"body": "'none' | 'vertical' | 'both'"
|
|
3288
|
+
}
|
|
3289
|
+
],
|
|
3290
|
+
"projectionSlots": [],
|
|
3291
|
+
"hostBindings": {
|
|
3292
|
+
"class": "block"
|
|
3293
|
+
},
|
|
3294
|
+
"examples": [
|
|
3295
|
+
{
|
|
3296
|
+
"sectionTitle": "Basique",
|
|
3297
|
+
"sectionDescription": null,
|
|
3298
|
+
"code": "<sds-textarea\n label=\"Motif d'admission\"\n placeholder=\"Décrivez le motif de l'admission du patient…\"\n/>",
|
|
3299
|
+
"runnableExample": "<sds-textarea\n label=\"Motif d'admission\"\n placeholder=\"Décrivez le motif de l'admission du patient…\"\n />",
|
|
3300
|
+
"stack": true,
|
|
3301
|
+
"dark": false
|
|
3302
|
+
},
|
|
3303
|
+
{
|
|
3304
|
+
"sectionTitle": "Avec aide",
|
|
3305
|
+
"sectionDescription": null,
|
|
3306
|
+
"code": "<sds-textarea\n label=\"Consignes de soins\"\n placeholder=\"Ex. surveillance tensionnelle toutes les 4 h…\"\n hint=\"Visible par l'ensemble de l'équipe soignante du service.\"\n/>",
|
|
3307
|
+
"runnableExample": "<sds-textarea\n label=\"Consignes de soins\"\n placeholder=\"Ex. surveillance tensionnelle toutes les 4 h…\"\n hint=\"Visible par l'ensemble de l'équipe soignante du service.\"\n />",
|
|
3308
|
+
"stack": true,
|
|
3309
|
+
"dark": false
|
|
3310
|
+
},
|
|
3311
|
+
{
|
|
3312
|
+
"sectionTitle": "Lignes (rows)",
|
|
3313
|
+
"sectionDescription": "Définit le nombre minimal de lignes visibles.",
|
|
3314
|
+
"code": "<sds-textarea\n label=\"Compte rendu d'intervention\"\n placeholder=\"Saisissez le compte rendu complet…\"\n [rows]=\"6\"\n/>",
|
|
3315
|
+
"runnableExample": "<sds-textarea\n label=\"Compte rendu d'intervention\"\n placeholder=\"Saisissez le compte rendu complet…\"\n [rows]=\"6\"\n />",
|
|
3316
|
+
"stack": true,
|
|
3317
|
+
"dark": false
|
|
3318
|
+
},
|
|
3319
|
+
{
|
|
3320
|
+
"sectionTitle": "Redimensionnement auto",
|
|
3321
|
+
"sectionDescription": "Le champ s'agrandit automatiquement au fil de la saisie.",
|
|
3322
|
+
"code": "<sds-textarea\n label=\"Transmissions infirmières\"\n placeholder=\"Ajoutez vos transmissions…\"\n autoResize\n [rows]=\"2\"\n/>",
|
|
3323
|
+
"runnableExample": "<sds-textarea\n label=\"Transmissions infirmières\"\n placeholder=\"Ajoutez vos transmissions…\"\n autoResize\n [rows]=\"2\"\n />",
|
|
3324
|
+
"stack": true,
|
|
3325
|
+
"dark": false
|
|
3326
|
+
},
|
|
3327
|
+
{
|
|
3328
|
+
"sectionTitle": "Compteur de caractères",
|
|
3329
|
+
"sectionDescription": "Affiche le nombre de caractères saisis, avec une limite optionnelle.",
|
|
3330
|
+
"code": "<sds-textarea\n label=\"Note de synthèse\"\n placeholder=\"280 caractères maximum…\"\n [maxLength]=\"280\"\n showCount\n [(ngModel)]=\"summary\"\n/>\n<p>Longueur : {{ summary.length }} caractère(s)</p>",
|
|
3331
|
+
"runnableExample": "<sds-textarea\n label=\"Note de synthèse\"\n placeholder=\"280 caractères maximum…\"\n [maxLength]=\"280\"\n showCount\n [(ngModel)]=\"summary\"\n />\n <p class=\"text-sm text-ink-soft\">\n Longueur : <span class=\"font-medium text-ink\">{{ summary.length }}</span>\n caractère(s)\n </p>",
|
|
3332
|
+
"stack": true,
|
|
3333
|
+
"dark": false
|
|
3334
|
+
},
|
|
3335
|
+
{
|
|
3336
|
+
"sectionTitle": "Erreur / requis",
|
|
3337
|
+
"sectionDescription": null,
|
|
3338
|
+
"code": "<sds-textarea\n label=\"Allergies connues\"\n placeholder=\"Listez les allergies du patient…\"\n required\n [error]=\"'Ce champ est obligatoire avant validation du dossier.'\"\n/>",
|
|
3339
|
+
"runnableExample": "<sds-textarea\n label=\"Allergies connues\"\n placeholder=\"Listez les allergies du patient…\"\n required\n [error]=\"'Ce champ est obligatoire avant validation du dossier.'\"\n />",
|
|
3340
|
+
"stack": true,
|
|
3341
|
+
"dark": false
|
|
3342
|
+
},
|
|
3343
|
+
{
|
|
3344
|
+
"sectionTitle": "Désactivé",
|
|
3345
|
+
"sectionDescription": null,
|
|
3346
|
+
"code": "<sds-textarea\n label=\"Antécédents (verrouillés)\"\n placeholder=\"Renseignés par le médecin référent.\"\n disabled\n/>",
|
|
3347
|
+
"runnableExample": "<sds-textarea\n label=\"Antécédents (verrouillés)\"\n placeholder=\"Renseignés par le médecin référent.\"\n disabled\n />",
|
|
3348
|
+
"stack": true,
|
|
3349
|
+
"dark": false
|
|
3350
|
+
},
|
|
3351
|
+
{
|
|
3352
|
+
"sectionTitle": "Tailles",
|
|
3353
|
+
"sectionDescription": null,
|
|
3354
|
+
"code": "<sds-textarea size=\"sm\" label=\"Petit (sm)\" placeholder=\"Observation courte…\" />\n<sds-textarea size=\"md\" label=\"Moyen (md)\" placeholder=\"Observation…\" />\n<sds-textarea size=\"lg\" label=\"Grand (lg)\" placeholder=\"Observation détaillée…\" />",
|
|
3355
|
+
"runnableExample": "<sds-textarea size=\"sm\" label=\"Petit (sm)\" placeholder=\"Observation courte…\" />\n <sds-textarea size=\"md\" label=\"Moyen (md)\" placeholder=\"Observation…\" />\n <sds-textarea size=\"lg\" label=\"Grand (lg)\" placeholder=\"Observation détaillée…\" />",
|
|
3356
|
+
"stack": true,
|
|
3357
|
+
"dark": false
|
|
3358
|
+
}
|
|
3359
|
+
]
|
|
3360
|
+
},
|
|
3361
|
+
{
|
|
3362
|
+
"className": "SdsToggleSwitch",
|
|
3363
|
+
"selector": "sds-toggle-switch",
|
|
3364
|
+
"kind": "component",
|
|
3365
|
+
"group": "form",
|
|
3366
|
+
"importName": "SdsToggleSwitch",
|
|
3367
|
+
"description": "Interrupteur on/off avec label optionnel, tailles, icônes sur le bouton, valeurs personnalisées, aide et erreur. Implémente ControlValueAccessor — utilisable avec les formulaires réactifs ou [(ngModel)].",
|
|
3368
|
+
"overviewDescription": "Interrupteur on/off : tailles, icônes et valeurs.",
|
|
3369
|
+
"jsdoc": "On/off switch styled as a sliding toggle. Implements ControlValueAccessor —\nuse with reactive forms or [(ngModel)]. Supports an optional visible label,\ncustom `trueValue`/`falseValue`, and optional knob icons for the on/off\nstates.",
|
|
3370
|
+
"example": null,
|
|
3371
|
+
"cva": true,
|
|
3372
|
+
"usesNgModel": true,
|
|
3373
|
+
"inputs": [
|
|
3374
|
+
{
|
|
3375
|
+
"name": "label",
|
|
3376
|
+
"type": "string",
|
|
3377
|
+
"default": "''",
|
|
3378
|
+
"required": false,
|
|
3379
|
+
"transform": null,
|
|
3380
|
+
"alias": null,
|
|
3381
|
+
"jsdoc": null
|
|
3382
|
+
},
|
|
3383
|
+
{
|
|
3384
|
+
"name": "ariaLabel",
|
|
3385
|
+
"type": "string",
|
|
3386
|
+
"default": "''",
|
|
3387
|
+
"required": false,
|
|
3388
|
+
"transform": null,
|
|
3389
|
+
"alias": null,
|
|
3390
|
+
"jsdoc": "Accessible name used when no visible [label] is provided."
|
|
3391
|
+
},
|
|
3392
|
+
{
|
|
3393
|
+
"name": "size",
|
|
3394
|
+
"type": "SdsToggleSwitchSize",
|
|
3395
|
+
"default": "'md'",
|
|
3396
|
+
"required": false,
|
|
3397
|
+
"transform": null,
|
|
3398
|
+
"alias": null,
|
|
3399
|
+
"jsdoc": null
|
|
3400
|
+
},
|
|
3401
|
+
{
|
|
3402
|
+
"name": "disabled",
|
|
3403
|
+
"type": "boolean",
|
|
3404
|
+
"default": "false",
|
|
3405
|
+
"required": false,
|
|
3406
|
+
"transform": "booleanAttribute",
|
|
3407
|
+
"alias": null,
|
|
3408
|
+
"jsdoc": null
|
|
3409
|
+
},
|
|
3410
|
+
{
|
|
3411
|
+
"name": "required",
|
|
3412
|
+
"type": "boolean",
|
|
3413
|
+
"default": "false",
|
|
3414
|
+
"required": false,
|
|
3415
|
+
"transform": "booleanAttribute",
|
|
3416
|
+
"alias": null,
|
|
3417
|
+
"jsdoc": null
|
|
3418
|
+
},
|
|
3419
|
+
{
|
|
3420
|
+
"name": "trueValue",
|
|
3421
|
+
"type": "unknown",
|
|
3422
|
+
"default": "true",
|
|
3423
|
+
"required": false,
|
|
3424
|
+
"transform": null,
|
|
3425
|
+
"alias": null,
|
|
3426
|
+
"jsdoc": "Value emitted/stored when the switch is on."
|
|
3427
|
+
},
|
|
3428
|
+
{
|
|
3429
|
+
"name": "falseValue",
|
|
3430
|
+
"type": "unknown",
|
|
3431
|
+
"default": "false",
|
|
3432
|
+
"required": false,
|
|
3433
|
+
"transform": null,
|
|
3434
|
+
"alias": null,
|
|
3435
|
+
"jsdoc": "Value emitted/stored when the switch is off."
|
|
3436
|
+
},
|
|
3437
|
+
{
|
|
3438
|
+
"name": "onIcon",
|
|
3439
|
+
"type": "SdsIconName | null",
|
|
3440
|
+
"default": "null",
|
|
3441
|
+
"required": false,
|
|
3442
|
+
"transform": null,
|
|
3443
|
+
"alias": null,
|
|
3444
|
+
"jsdoc": "Icon shown on the knob when checked."
|
|
3445
|
+
},
|
|
3446
|
+
{
|
|
3447
|
+
"name": "offIcon",
|
|
3448
|
+
"type": "SdsIconName | null",
|
|
3449
|
+
"default": "null",
|
|
3450
|
+
"required": false,
|
|
3451
|
+
"transform": null,
|
|
3452
|
+
"alias": null,
|
|
3453
|
+
"jsdoc": "Icon shown on the knob when unchecked."
|
|
3454
|
+
},
|
|
3455
|
+
{
|
|
3456
|
+
"name": "hint",
|
|
3457
|
+
"type": "string",
|
|
3458
|
+
"default": "''",
|
|
3459
|
+
"required": false,
|
|
3460
|
+
"transform": null,
|
|
3461
|
+
"alias": null,
|
|
3462
|
+
"jsdoc": null
|
|
3463
|
+
},
|
|
3464
|
+
{
|
|
3465
|
+
"name": "error",
|
|
3466
|
+
"type": "string",
|
|
3467
|
+
"default": "''",
|
|
3468
|
+
"required": false,
|
|
3469
|
+
"transform": null,
|
|
3470
|
+
"alias": null,
|
|
3471
|
+
"jsdoc": null
|
|
3472
|
+
}
|
|
3473
|
+
],
|
|
3474
|
+
"outputs": [],
|
|
3475
|
+
"exportedTypes": [
|
|
3476
|
+
{
|
|
3477
|
+
"name": "SdsToggleSwitchSize",
|
|
3478
|
+
"kind": "union",
|
|
3479
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
3480
|
+
}
|
|
3481
|
+
],
|
|
3482
|
+
"projectionSlots": [],
|
|
3483
|
+
"hostBindings": {
|
|
3484
|
+
"class": "block"
|
|
3485
|
+
},
|
|
3486
|
+
"examples": [
|
|
3487
|
+
{
|
|
3488
|
+
"sectionTitle": "Basique",
|
|
3489
|
+
"sectionDescription": "Un interrupteur sans label visible (fournir un ariaLabel pour l'accessibilité).",
|
|
3490
|
+
"code": "<sds-toggle-switch ariaLabel=\"Activer les notifications\" />",
|
|
3491
|
+
"runnableExample": "<sds-toggle-switch ariaLabel=\"Activer les notifications\" />",
|
|
3492
|
+
"stack": true,
|
|
3493
|
+
"dark": false
|
|
3494
|
+
},
|
|
3495
|
+
{
|
|
3496
|
+
"sectionTitle": "Avec label",
|
|
3497
|
+
"sectionDescription": "Le label est cliquable et bascule l'interrupteur.",
|
|
3498
|
+
"code": "<sds-toggle-switch label=\"Recevoir les alertes de garde\" />",
|
|
3499
|
+
"runnableExample": "<sds-toggle-switch label=\"Recevoir les alertes de garde\" />",
|
|
3500
|
+
"stack": true,
|
|
3501
|
+
"dark": false
|
|
3502
|
+
},
|
|
3503
|
+
{
|
|
3504
|
+
"sectionTitle": "Tailles",
|
|
3505
|
+
"sectionDescription": null,
|
|
3506
|
+
"code": "<sds-toggle-switch size=\"sm\" label=\"Petit (sm)\" />\n<sds-toggle-switch size=\"md\" label=\"Moyen (md)\" />\n<sds-toggle-switch size=\"lg\" label=\"Grand (lg)\" />",
|
|
3507
|
+
"runnableExample": "<sds-toggle-switch size=\"sm\" label=\"Petit (sm)\" />\n <sds-toggle-switch size=\"md\" label=\"Moyen (md)\" />\n <sds-toggle-switch size=\"lg\" label=\"Grand (lg)\" />",
|
|
3508
|
+
"stack": true,
|
|
3509
|
+
"dark": false
|
|
3510
|
+
},
|
|
3511
|
+
{
|
|
3512
|
+
"sectionTitle": "Avec icônes",
|
|
3513
|
+
"sectionDescription": "Affiche une icône sur le bouton selon l'état (onIcon / offIcon).",
|
|
3514
|
+
"code": "<sds-toggle-switch\n label=\"Disponibilité de l'agent\"\n onIcon=\"check\"\n offIcon=\"x\"\n [(ngModel)]=\"available\"\n/>",
|
|
3515
|
+
"runnableExample": "<sds-toggle-switch\n label=\"Disponibilité de l'agent\"\n onIcon=\"check\"\n offIcon=\"x\"\n [(ngModel)]=\"available\"\n />",
|
|
3516
|
+
"stack": true,
|
|
3517
|
+
"dark": false
|
|
3518
|
+
},
|
|
3519
|
+
{
|
|
3520
|
+
"sectionTitle": "Valeurs personnalisées",
|
|
3521
|
+
"sectionDescription": "trueValue / falseValue stockent une valeur autre que les booléens.",
|
|
3522
|
+
"code": "<sds-toggle-switch\n label=\"Statut du lit\"\n [trueValue]=\"'actif'\"\n [falseValue]=\"'inactif'\"\n [(ngModel)]=\"bedStatus\"\n/>\n<p>Statut : {{ bedStatus }}</p>\n\n// bedStatus = 'actif';",
|
|
3523
|
+
"runnableExample": "<sds-toggle-switch\n label=\"Statut du lit\"\n [trueValue]=\"'actif'\"\n [falseValue]=\"'inactif'\"\n [(ngModel)]=\"bedStatus\"\n />\n <p class=\"text-sm text-ink-soft\">\n Statut : <span class=\"font-medium text-ink\">{{ bedStatus }}</span>\n </p>",
|
|
3524
|
+
"stack": true,
|
|
3525
|
+
"dark": false
|
|
3526
|
+
},
|
|
3527
|
+
{
|
|
3528
|
+
"sectionTitle": "Désactivé",
|
|
3529
|
+
"sectionDescription": null,
|
|
3530
|
+
"code": "<sds-toggle-switch label=\"Mode maintenance\" disabled />\n<sds-toggle-switch\n label=\"Synchronisation automatique\"\n disabled\n [ngModel]=\"true\"\n/>",
|
|
3531
|
+
"runnableExample": "<sds-toggle-switch label=\"Mode maintenance\" disabled />\n <sds-toggle-switch\n label=\"Synchronisation automatique\"\n disabled\n [ngModel]=\"true\"\n />",
|
|
3532
|
+
"stack": true,
|
|
3533
|
+
"dark": false
|
|
3534
|
+
},
|
|
3535
|
+
{
|
|
3536
|
+
"sectionTitle": "Lié au modèle (ngModel)",
|
|
3537
|
+
"sectionDescription": null,
|
|
3538
|
+
"code": "<sds-toggle-switch\n label=\"Afficher les agents en congé\"\n hint=\"Inclut les soignants absents dans le planning.\"\n [(ngModel)]=\"showOnLeave\"\n/>\n<p>Valeur : {{ showOnLeave ? 'true' : 'false' }}</p>",
|
|
3539
|
+
"runnableExample": "<sds-toggle-switch\n label=\"Afficher les agents en congé\"\n hint=\"Inclut les soignants absents dans le planning.\"\n [(ngModel)]=\"showOnLeave\"\n />\n <p class=\"text-sm text-ink-soft\">\n Valeur :\n <span class=\"font-medium text-ink\">{{ showOnLeave ? 'true' : 'false' }}</span>\n </p>",
|
|
3540
|
+
"stack": true,
|
|
3541
|
+
"dark": false
|
|
3542
|
+
}
|
|
3543
|
+
]
|
|
3544
|
+
},
|
|
3545
|
+
{
|
|
3546
|
+
"className": "SdsTopbar",
|
|
3547
|
+
"selector": "sds-topbar",
|
|
3548
|
+
"kind": "component",
|
|
3549
|
+
"group": "layout",
|
|
3550
|
+
"importName": "SdsTopbar",
|
|
3551
|
+
"description": "Barre supérieure de l'application : dégradé de marque avec vague décorative, emplacement logo, nom de l'application et emplacement [sdsActions] libre à droite.",
|
|
3552
|
+
"overviewDescription": "Barre supérieure de l'application avec marque et utilisateur.",
|
|
3553
|
+
"jsdoc": "Application top bar: a logo slot, the app name, and three slots the app fills.\n\nTwo appearances. `brand` is the gradient-and-wave bar an internal tool wants. `surface` is white on\na hairline border, for a bar that has to sit under a customer-facing page without dominating it —\na storefront header is a bar, but it is not a banner. The slots and the layout are identical in\nboth; only the paint differs, so a consumer app gets the same structure without the brand fill.\n\nIt deliberately owns NO account UI. It used to render the signed-in user and a logout button, which\nforced every consumer into one shape — no dropdown, no email, no menu, no busy state, and an\nicon-only button whose accessible name the library had to guess a language for. What an app needs\nbeside its own brand bar differs per app, so the bar supplies the surface and the app supplies the\ncontents: project them into `[sdsActions]`.\n\nSlots, left to right: `[sdsLogo]`, `[sdsLead]` (beside the name — a location or workspace picker),\n`[sdsCenter]` (the flexible middle — a search field), `[sdsActions]` (the right edge).",
|
|
3554
|
+
"example": "<sds-topbar appName=\"WebApp\">\n <img sdsLogo src=\"logo.svg\" alt=\"\" />\n <my-address-picker sdsLead />\n <my-search sdsCenter />\n <my-account-menu sdsActions />\n</sds-topbar>",
|
|
3555
|
+
"cva": false,
|
|
3556
|
+
"usesNgModel": false,
|
|
3557
|
+
"inputs": [
|
|
3558
|
+
{
|
|
3559
|
+
"name": "appName",
|
|
3560
|
+
"type": "string",
|
|
3561
|
+
"default": "''",
|
|
3562
|
+
"required": false,
|
|
3563
|
+
"transform": null,
|
|
3564
|
+
"alias": null,
|
|
3565
|
+
"jsdoc": null
|
|
3566
|
+
},
|
|
3567
|
+
{
|
|
3568
|
+
"name": "contentWidth",
|
|
3569
|
+
"type": "string",
|
|
3570
|
+
"default": "'w-full'",
|
|
3571
|
+
"required": false,
|
|
3572
|
+
"transform": null,
|
|
3573
|
+
"alias": null,
|
|
3574
|
+
"jsdoc": "Width of the bar's CONTENTS, as Tailwind width utilities — e.g. `\"w-full max-w-7xl\"`.\n\nThe coloured band always spans the viewport; this constrains only what sits on it, so the logo and\nthe actions line up with a page whose own content is centred at the same width. Default is empty,\ni.e. contents run edge to edge, which is right for a full-bleed dashboard shell.\n\nA class string rather than an enum on purpose: apps already state their content width as a Tailwind\nutility, and this way the bar is given the SAME string rather than a name that has to be kept in\nsync with it."
|
|
3575
|
+
},
|
|
3576
|
+
{
|
|
3577
|
+
"name": "menuButton",
|
|
3578
|
+
"type": "boolean",
|
|
3579
|
+
"default": "true",
|
|
3580
|
+
"required": false,
|
|
3581
|
+
"transform": "booleanAttribute",
|
|
3582
|
+
"alias": null,
|
|
3583
|
+
"jsdoc": "Show the mobile hamburger that toggles the sidebar drawer (< lg)."
|
|
3584
|
+
},
|
|
3585
|
+
{
|
|
3586
|
+
"name": "menuLabel",
|
|
3587
|
+
"type": "string",
|
|
3588
|
+
"default": "'Ouvrir le menu'",
|
|
3589
|
+
"required": false,
|
|
3590
|
+
"transform": null,
|
|
3591
|
+
"alias": null,
|
|
3592
|
+
"jsdoc": "Accessible name for the hamburger. Defaults to French so nothing changes for existing consumers,\nbut any app serving more than one language MUST pass a translated value — an icon-only control's\naria-label is its only name, and a hardcoded one is simply wrong in every other locale."
|
|
3593
|
+
},
|
|
3594
|
+
{
|
|
3595
|
+
"name": "appearance",
|
|
3596
|
+
"type": "SdsTopbarAppearance",
|
|
3597
|
+
"default": "'brand'",
|
|
3598
|
+
"required": false,
|
|
3599
|
+
"transform": null,
|
|
3600
|
+
"alias": null,
|
|
3601
|
+
"jsdoc": "`brand` (default) paints the gradient and the wave; `surface` is white on a hairline border."
|
|
3602
|
+
}
|
|
3603
|
+
],
|
|
3604
|
+
"outputs": [],
|
|
3605
|
+
"exportedTypes": [
|
|
3606
|
+
{
|
|
3607
|
+
"name": "SdsTopbarAppearance",
|
|
3608
|
+
"kind": "union",
|
|
3609
|
+
"body": "'brand' | 'surface'"
|
|
3610
|
+
}
|
|
3611
|
+
],
|
|
3612
|
+
"projectionSlots": [
|
|
3613
|
+
"[sdsLogo]",
|
|
3614
|
+
"[sdsLead]",
|
|
3615
|
+
"[sdsCenter]",
|
|
3616
|
+
"[sdsActions]"
|
|
3617
|
+
],
|
|
3618
|
+
"hostBindings": {
|
|
3619
|
+
"class": "block"
|
|
3620
|
+
},
|
|
3621
|
+
"examples": [
|
|
3622
|
+
{
|
|
3623
|
+
"sectionTitle": "Complète",
|
|
3624
|
+
"sectionDescription": "Logo ([sdsLogo]), nom d'application, et contenu libre à droite ([sdsActions]). La barre ne fournit aucune UI de compte : chaque application projette la sienne.",
|
|
3625
|
+
"code": "<sds-topbar appName=\"WebApp\">\n <img sdsLogo src=\"showcase-logo.svg\" alt=\"Saitech\" class=\"h-11 w-auto\" />\n\n <!-- Anything the app wants on the right: menu, avatar, notifications, language… -->\n <div sdsActions class=\"flex items-center gap-3\">\n <sds-avatar name=\"AIT SAID Souhail\" initials=\"AS\" [size]=\"38\" bgClass=\"bg-white/15\" />\n </div>\n</sds-topbar>",
|
|
3626
|
+
"runnableExample": "<div class=\"w-full overflow-hidden rounded-card border border-border\">\n <sds-topbar appName=\"WebApp\">\n <img sdsLogo src=\"showcase-logo.svg\" alt=\"Saitech\" class=\"h-11 w-auto\" />\n <div sdsActions class=\"flex items-center gap-3\">\n <span class=\"hidden text-sm font-medium sm:block\">{{ user.name }}</span>\n <sds-avatar [name]=\"user.name\" [initials]=\"user.initials\" [size]=\"38\" bgClass=\"bg-white/15\" />\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-9 items-center justify-center rounded-control text-white/85 hover:bg-white/10 hover:text-white\"\n aria-label=\"Se déconnecter\"\n >\n <sds-icon name=\"log-out\" [size]=\"20\" />\n </button>\n </div>\n </sds-topbar>\n </div>",
|
|
3627
|
+
"stack": true,
|
|
3628
|
+
"dark": false
|
|
3629
|
+
},
|
|
3630
|
+
{
|
|
3631
|
+
"sectionTitle": "Largeur du contenu",
|
|
3632
|
+
"sectionDescription": "[contentWidth] contraint le contenu de la barre (le bandeau reste pleine largeur), pour l'aligner sur une page centrée.",
|
|
3633
|
+
"code": "<!-- Le bandeau reste pleine largeur ; seul son contenu est contraint. -->\n<sds-topbar appName=\"WebApp\" contentWidth=\"w-full max-w-3xl\">\n <img sdsLogo src=\"showcase-logo.svg\" alt=\"Saitech\" class=\"h-11 w-auto\" />\n</sds-topbar>",
|
|
3634
|
+
"runnableExample": "<div class=\"w-full overflow-hidden rounded-card border border-border\">\n <sds-topbar appName=\"WebApp\" contentWidth=\"w-full max-w-3xl\">\n <img sdsLogo src=\"showcase-logo.svg\" alt=\"Saitech\" class=\"h-11 w-auto\" />\n <div sdsActions class=\"flex items-center gap-3\">\n <sds-avatar [name]=\"user.name\" [initials]=\"user.initials\" [size]=\"38\" bgClass=\"bg-white/15\" />\n </div>\n </sds-topbar>\n </div>",
|
|
3635
|
+
"stack": true,
|
|
3636
|
+
"dark": false
|
|
3637
|
+
},
|
|
3638
|
+
{
|
|
3639
|
+
"sectionTitle": "Nom seul",
|
|
3640
|
+
"sectionDescription": "Sans contenu projeté.",
|
|
3641
|
+
"code": "<sds-topbar appName=\"WebApp\" />",
|
|
3642
|
+
"runnableExample": "<div class=\"w-full overflow-hidden rounded-card border border-border\">\n <sds-topbar appName=\"WebApp\" />\n </div>",
|
|
3643
|
+
"stack": true,
|
|
3644
|
+
"dark": false
|
|
3645
|
+
}
|
|
3646
|
+
]
|
|
3647
|
+
}
|
|
3648
|
+
],
|
|
3649
|
+
"directives": [
|
|
3650
|
+
{
|
|
3651
|
+
"className": "SdsTableCell",
|
|
3652
|
+
"selector": "ng-template[sdsCell]",
|
|
3653
|
+
"kind": "directive",
|
|
3654
|
+
"group": "data",
|
|
3655
|
+
"importName": "SdsTableCell",
|
|
3656
|
+
"description": null,
|
|
3657
|
+
"overviewDescription": null,
|
|
3658
|
+
"jsdoc": "Supplies a custom cell template for a single table column, matched by its\nfield key. Use as a structural template inside `<sds-table>`:",
|
|
3659
|
+
"example": "<sds-table [value]=\"rows\" [columns]=\"cols\">\n <ng-template sdsCell=\"statut\" let-value let-row=\"row\">\n <sds-badge [variant]=\"row.actif ? 'success' : 'neutral'\">{{ value }}</sds-badge>\n </ng-template>\n</sds-table>",
|
|
3660
|
+
"cva": false,
|
|
3661
|
+
"usesNgModel": false,
|
|
3662
|
+
"inputs": [
|
|
3663
|
+
{
|
|
3664
|
+
"name": "sdsCell",
|
|
3665
|
+
"type": "string",
|
|
3666
|
+
"default": null,
|
|
3667
|
+
"required": true,
|
|
3668
|
+
"transform": null,
|
|
3669
|
+
"alias": "sdsCell",
|
|
3670
|
+
"jsdoc": "The column `field` this template renders."
|
|
3671
|
+
}
|
|
3672
|
+
],
|
|
3673
|
+
"outputs": [],
|
|
3674
|
+
"exportedTypes": [
|
|
3675
|
+
{
|
|
3676
|
+
"name": "SdsTableCellContext",
|
|
3677
|
+
"kind": "interface",
|
|
3678
|
+
"body": "interface SdsTableCellContext { /** Same as {@link value} — enables the `let-value` (implicit) binding. */ $implicit: unknown; /** Resolved cell value for this column (via the table's getValue). */ value: unknown; /** The full row object. */ row: any; /** The column definition the cell belongs to. */ column: SdsTableColumn; /** Zero-based index of the row within the currently displayed page. */ index: number; }"
|
|
3679
|
+
}
|
|
3680
|
+
],
|
|
3681
|
+
"projectionSlots": [],
|
|
3682
|
+
"hostBindings": {},
|
|
3683
|
+
"examples": []
|
|
3684
|
+
},
|
|
3685
|
+
{
|
|
3686
|
+
"className": "SdsTableRowExpansion",
|
|
3687
|
+
"selector": "ng-template[sdsRowExpansion]",
|
|
3688
|
+
"kind": "directive",
|
|
3689
|
+
"group": "data",
|
|
3690
|
+
"importName": "SdsTableRowExpansion",
|
|
3691
|
+
"description": null,
|
|
3692
|
+
"overviewDescription": null,
|
|
3693
|
+
"jsdoc": "Supplies the detail template rendered beneath an expanded row when the host\n`<sds-table>` has `expandable`. Use as a structural template inside the table:",
|
|
3694
|
+
"example": "<sds-table [value]=\"rows\" [columns]=\"cols\" expandable>\n <ng-template sdsRowExpansion let-row>\n <div>Détails de {{ row.nom }}</div>\n </ng-template>\n</sds-table>",
|
|
3695
|
+
"cva": false,
|
|
3696
|
+
"usesNgModel": false,
|
|
3697
|
+
"inputs": [],
|
|
3698
|
+
"outputs": [],
|
|
3699
|
+
"exportedTypes": [
|
|
3700
|
+
{
|
|
3701
|
+
"name": "SdsTableRowExpansionContext",
|
|
3702
|
+
"kind": "interface",
|
|
3703
|
+
"body": "interface SdsTableRowExpansionContext { /** Same as {@link row} — enables the `let-row` (implicit) binding. */ $implicit: any; /** The full row object whose details are being shown. */ row: any; /** Zero-based index of the row within the currently displayed page. */ index: number; }"
|
|
3704
|
+
}
|
|
3705
|
+
],
|
|
3706
|
+
"projectionSlots": [],
|
|
3707
|
+
"hostBindings": {},
|
|
3708
|
+
"examples": []
|
|
3709
|
+
}
|
|
3710
|
+
],
|
|
3711
|
+
"services": [
|
|
3712
|
+
{
|
|
3713
|
+
"className": "SdsAccordionStore",
|
|
3714
|
+
"providedIn": "component",
|
|
3715
|
+
"exports": [
|
|
3716
|
+
"id",
|
|
3717
|
+
"multiple",
|
|
3718
|
+
"connect()",
|
|
3719
|
+
"isOpen()",
|
|
3720
|
+
"toggle()",
|
|
3721
|
+
"headerId()",
|
|
3722
|
+
"contentId()"
|
|
3723
|
+
],
|
|
3724
|
+
"jsdoc": "Coordinates a single <sds-accordion>: holds the open value(s) (shared from the\nhost's two-way model), the multiple-open flag, and generates the ARIA ids that\nlink each header to its content region.\n\nProvided at the <sds-accordion> component level so every accordion is isolated."
|
|
3725
|
+
},
|
|
3726
|
+
{
|
|
3727
|
+
"className": "SdsTabsStore",
|
|
3728
|
+
"providedIn": "component",
|
|
3729
|
+
"exports": [
|
|
3730
|
+
"id",
|
|
3731
|
+
"scrollable",
|
|
3732
|
+
"connect()",
|
|
3733
|
+
"activeValue()",
|
|
3734
|
+
"isActive()",
|
|
3735
|
+
"select()",
|
|
3736
|
+
"registerTab()",
|
|
3737
|
+
"unregisterTab()",
|
|
3738
|
+
"tabId()",
|
|
3739
|
+
"panelId()"
|
|
3740
|
+
],
|
|
3741
|
+
"jsdoc": "Coordinates a single <sds-tabs> instance: holds the active value (shared from\nthe host's two-way model), tracks registered tabs for default selection and\ngenerates the ARIA ids that link each tab to its panel.\n\nProvided at the <sds-tabs> component level so every tab set is isolated."
|
|
3742
|
+
},
|
|
3743
|
+
{
|
|
3744
|
+
"className": "SidebarStore",
|
|
3745
|
+
"providedIn": "root",
|
|
3746
|
+
"exports": [
|
|
3747
|
+
"collapsed",
|
|
3748
|
+
"mobileOpen",
|
|
3749
|
+
"toggle()",
|
|
3750
|
+
"setCollapsed()",
|
|
3751
|
+
"openMobile()",
|
|
3752
|
+
"closeMobile()",
|
|
3753
|
+
"toggleMobile()"
|
|
3754
|
+
],
|
|
3755
|
+
"jsdoc": "Shared collapse state for the sidebar and its nav items.\n\nProvided in root so the sidebar, projected nav groups/items and any layout\ncode observe a single source of truth without prop-drilling. For apps with\nmultiple independent sidebars, provide it at a component level instead."
|
|
3756
|
+
}
|
|
3757
|
+
],
|
|
3758
|
+
"icons": {
|
|
3759
|
+
"names": [
|
|
3760
|
+
"alert-circle",
|
|
3761
|
+
"align-left",
|
|
3762
|
+
"arrow-down",
|
|
3763
|
+
"arrow-right",
|
|
3764
|
+
"arrow-up",
|
|
3765
|
+
"arrows-clockwise",
|
|
3766
|
+
"bar-chart-3",
|
|
3767
|
+
"bell",
|
|
3768
|
+
"bike",
|
|
3769
|
+
"book-open",
|
|
3770
|
+
"building-2",
|
|
3771
|
+
"calendar",
|
|
3772
|
+
"chart-column",
|
|
3773
|
+
"check",
|
|
3774
|
+
"check-circle",
|
|
3775
|
+
"chevron-down",
|
|
3776
|
+
"chevron-left",
|
|
3777
|
+
"chevron-right",
|
|
3778
|
+
"chevrons-left",
|
|
3779
|
+
"chevrons-right",
|
|
3780
|
+
"chevrons-up-down",
|
|
3781
|
+
"circle-user",
|
|
3782
|
+
"clipboard-list",
|
|
3783
|
+
"copy",
|
|
3784
|
+
"credit-card",
|
|
3785
|
+
"external-link",
|
|
3786
|
+
"eye",
|
|
3787
|
+
"eye-off",
|
|
3788
|
+
"file-text",
|
|
3789
|
+
"filter",
|
|
3790
|
+
"hand",
|
|
3791
|
+
"hash",
|
|
3792
|
+
"home",
|
|
3793
|
+
"inbox",
|
|
3794
|
+
"info",
|
|
3795
|
+
"languages",
|
|
3796
|
+
"layout-grid",
|
|
3797
|
+
"loader-circle",
|
|
3798
|
+
"log-out",
|
|
3799
|
+
"map-pin",
|
|
3800
|
+
"megaphone",
|
|
3801
|
+
"menu",
|
|
3802
|
+
"monitor",
|
|
3803
|
+
"package",
|
|
3804
|
+
"package-open",
|
|
3805
|
+
"package-plus",
|
|
3806
|
+
"palette",
|
|
3807
|
+
"panel-left",
|
|
3808
|
+
"panel-left-close",
|
|
3809
|
+
"panel-left-open",
|
|
3810
|
+
"panel-top",
|
|
3811
|
+
"panels-top-left",
|
|
3812
|
+
"phone",
|
|
3813
|
+
"refresh-cw",
|
|
3814
|
+
"rotate-ccw",
|
|
3815
|
+
"rows-3",
|
|
3816
|
+
"search",
|
|
3817
|
+
"settings",
|
|
3818
|
+
"square",
|
|
3819
|
+
"store",
|
|
3820
|
+
"table",
|
|
3821
|
+
"tag",
|
|
3822
|
+
"toggle-left",
|
|
3823
|
+
"type",
|
|
3824
|
+
"user",
|
|
3825
|
+
"user-plus",
|
|
3826
|
+
"user-round",
|
|
3827
|
+
"users",
|
|
3828
|
+
"x"
|
|
3829
|
+
],
|
|
3830
|
+
"outliers": [
|
|
3831
|
+
"hand"
|
|
3832
|
+
]
|
|
3833
|
+
},
|
|
3834
|
+
"tokens": [
|
|
3835
|
+
{
|
|
3836
|
+
"token": "color-canvas",
|
|
3837
|
+
"family": "surface",
|
|
3838
|
+
"tailwindUtility": "bg-canvas",
|
|
3839
|
+
"cssVar": "var(--color-canvas)",
|
|
3840
|
+
"semanticNote": null
|
|
3841
|
+
},
|
|
3842
|
+
{
|
|
3843
|
+
"token": "color-surface",
|
|
3844
|
+
"family": "surface",
|
|
3845
|
+
"tailwindUtility": "bg-surface",
|
|
3846
|
+
"cssVar": "var(--color-surface)",
|
|
3847
|
+
"semanticNote": null
|
|
3848
|
+
},
|
|
3849
|
+
{
|
|
3850
|
+
"token": "color-muted",
|
|
3851
|
+
"family": "surface",
|
|
3852
|
+
"tailwindUtility": "bg-muted",
|
|
3853
|
+
"cssVar": "var(--color-muted)",
|
|
3854
|
+
"semanticNote": null
|
|
3855
|
+
},
|
|
3856
|
+
{
|
|
3857
|
+
"token": "color-border",
|
|
3858
|
+
"family": "surface",
|
|
3859
|
+
"tailwindUtility": "border-border",
|
|
3860
|
+
"cssVar": "var(--color-border)",
|
|
3861
|
+
"semanticNote": null
|
|
3862
|
+
},
|
|
3863
|
+
{
|
|
3864
|
+
"token": "color-ink",
|
|
3865
|
+
"family": "ink",
|
|
3866
|
+
"tailwindUtility": "text-ink",
|
|
3867
|
+
"cssVar": "var(--color-ink)",
|
|
3868
|
+
"semanticNote": null
|
|
3869
|
+
},
|
|
3870
|
+
{
|
|
3871
|
+
"token": "color-ink-soft",
|
|
3872
|
+
"family": "ink",
|
|
3873
|
+
"tailwindUtility": "text-ink-soft",
|
|
3874
|
+
"cssVar": "var(--color-ink-soft)",
|
|
3875
|
+
"semanticNote": null
|
|
3876
|
+
},
|
|
3877
|
+
{
|
|
3878
|
+
"token": "color-ink-faint",
|
|
3879
|
+
"family": "ink",
|
|
3880
|
+
"tailwindUtility": "text-ink-faint",
|
|
3881
|
+
"cssVar": "var(--color-ink-faint)",
|
|
3882
|
+
"semanticNote": null
|
|
3883
|
+
},
|
|
3884
|
+
{
|
|
3885
|
+
"token": "color-accent-blue",
|
|
3886
|
+
"family": "accent",
|
|
3887
|
+
"tailwindUtility": "bg-accent-blue",
|
|
3888
|
+
"cssVar": "var(--color-accent-blue)",
|
|
3889
|
+
"semanticNote": null
|
|
3890
|
+
},
|
|
3891
|
+
{
|
|
3892
|
+
"token": "color-accent-blue-soft",
|
|
3893
|
+
"family": "accent",
|
|
3894
|
+
"tailwindUtility": "bg-accent-blue-soft",
|
|
3895
|
+
"cssVar": "var(--color-accent-blue-soft)",
|
|
3896
|
+
"semanticNote": null
|
|
3897
|
+
},
|
|
3898
|
+
{
|
|
3899
|
+
"token": "color-accent-green",
|
|
3900
|
+
"family": "accent",
|
|
3901
|
+
"tailwindUtility": "bg-accent-green",
|
|
3902
|
+
"cssVar": "var(--color-accent-green)",
|
|
3903
|
+
"semanticNote": null
|
|
3904
|
+
},
|
|
3905
|
+
{
|
|
3906
|
+
"token": "color-accent-green-soft",
|
|
3907
|
+
"family": "accent",
|
|
3908
|
+
"tailwindUtility": "bg-accent-green-soft",
|
|
3909
|
+
"cssVar": "var(--color-accent-green-soft)",
|
|
3910
|
+
"semanticNote": null
|
|
3911
|
+
},
|
|
3912
|
+
{
|
|
3913
|
+
"token": "color-accent-amber",
|
|
3914
|
+
"family": "accent",
|
|
3915
|
+
"tailwindUtility": "bg-accent-amber",
|
|
3916
|
+
"cssVar": "var(--color-accent-amber)",
|
|
3917
|
+
"semanticNote": null
|
|
3918
|
+
},
|
|
3919
|
+
{
|
|
3920
|
+
"token": "color-accent-amber-soft",
|
|
3921
|
+
"family": "accent",
|
|
3922
|
+
"tailwindUtility": "bg-accent-amber-soft",
|
|
3923
|
+
"cssVar": "var(--color-accent-amber-soft)",
|
|
3924
|
+
"semanticNote": null
|
|
3925
|
+
},
|
|
3926
|
+
{
|
|
3927
|
+
"token": "color-accent-red",
|
|
3928
|
+
"family": "accent",
|
|
3929
|
+
"tailwindUtility": "bg-accent-red",
|
|
3930
|
+
"cssVar": "var(--color-accent-red)",
|
|
3931
|
+
"semanticNote": null
|
|
3932
|
+
},
|
|
3933
|
+
{
|
|
3934
|
+
"token": "color-accent-red-soft",
|
|
3935
|
+
"family": "accent",
|
|
3936
|
+
"tailwindUtility": "bg-accent-red-soft",
|
|
3937
|
+
"cssVar": "var(--color-accent-red-soft)",
|
|
3938
|
+
"semanticNote": null
|
|
3939
|
+
},
|
|
3940
|
+
{
|
|
3941
|
+
"token": "color-accent-indigo",
|
|
3942
|
+
"family": "accent",
|
|
3943
|
+
"tailwindUtility": "bg-accent-indigo",
|
|
3944
|
+
"cssVar": "var(--color-accent-indigo)",
|
|
3945
|
+
"semanticNote": null
|
|
3946
|
+
},
|
|
3947
|
+
{
|
|
3948
|
+
"token": "color-accent-indigo-soft",
|
|
3949
|
+
"family": "accent",
|
|
3950
|
+
"tailwindUtility": "bg-accent-indigo-soft",
|
|
3951
|
+
"cssVar": "var(--color-accent-indigo-soft)",
|
|
3952
|
+
"semanticNote": null
|
|
3953
|
+
},
|
|
3954
|
+
{
|
|
3955
|
+
"token": "color-success",
|
|
3956
|
+
"family": "status",
|
|
3957
|
+
"tailwindUtility": "text-success",
|
|
3958
|
+
"cssVar": "var(--color-success)",
|
|
3959
|
+
"semanticNote": null
|
|
3960
|
+
},
|
|
3961
|
+
{
|
|
3962
|
+
"token": "color-warning",
|
|
3963
|
+
"family": "status",
|
|
3964
|
+
"tailwindUtility": "text-warning",
|
|
3965
|
+
"cssVar": "var(--color-warning)",
|
|
3966
|
+
"semanticNote": null
|
|
3967
|
+
},
|
|
3968
|
+
{
|
|
3969
|
+
"token": "color-danger",
|
|
3970
|
+
"family": "status",
|
|
3971
|
+
"tailwindUtility": "text-danger",
|
|
3972
|
+
"cssVar": "var(--color-danger)",
|
|
3973
|
+
"semanticNote": null
|
|
3974
|
+
},
|
|
3975
|
+
{
|
|
3976
|
+
"token": "radius-control",
|
|
3977
|
+
"family": "radius",
|
|
3978
|
+
"tailwindUtility": "rounded-control",
|
|
3979
|
+
"cssVar": "var(--radius-control)",
|
|
3980
|
+
"semanticNote": null
|
|
3981
|
+
},
|
|
3982
|
+
{
|
|
3983
|
+
"token": "radius-card",
|
|
3984
|
+
"family": "radius",
|
|
3985
|
+
"tailwindUtility": "rounded-card",
|
|
3986
|
+
"cssVar": "var(--radius-card)",
|
|
3987
|
+
"semanticNote": null
|
|
3988
|
+
},
|
|
3989
|
+
{
|
|
3990
|
+
"token": "font-sans",
|
|
3991
|
+
"family": "font",
|
|
3992
|
+
"tailwindUtility": "font-sans",
|
|
3993
|
+
"cssVar": "var(--font-sans)",
|
|
3994
|
+
"semanticNote": null
|
|
3995
|
+
},
|
|
3996
|
+
{
|
|
3997
|
+
"token": "sds-topbar-h",
|
|
3998
|
+
"family": "layout",
|
|
3999
|
+
"tailwindUtility": null,
|
|
4000
|
+
"cssVar": "var(--sds-topbar-h)",
|
|
4001
|
+
"semanticNote": null
|
|
4002
|
+
},
|
|
4003
|
+
{
|
|
4004
|
+
"token": "sds-sidebar-w",
|
|
4005
|
+
"family": "layout",
|
|
4006
|
+
"tailwindUtility": null,
|
|
4007
|
+
"cssVar": "var(--sds-sidebar-w)",
|
|
4008
|
+
"semanticNote": null
|
|
4009
|
+
},
|
|
4010
|
+
{
|
|
4011
|
+
"token": "sds-sidebar-w-collapsed",
|
|
4012
|
+
"family": "layout",
|
|
4013
|
+
"tailwindUtility": null,
|
|
4014
|
+
"cssVar": "var(--sds-sidebar-w-collapsed)",
|
|
4015
|
+
"semanticNote": null
|
|
4016
|
+
},
|
|
4017
|
+
{
|
|
4018
|
+
"token": "color-brand-50",
|
|
4019
|
+
"family": "brand",
|
|
4020
|
+
"tailwindUtility": "bg-brand-50",
|
|
4021
|
+
"cssVar": "var(--color-brand-50)",
|
|
4022
|
+
"semanticNote": null
|
|
4023
|
+
},
|
|
4024
|
+
{
|
|
4025
|
+
"token": "color-brand-100",
|
|
4026
|
+
"family": "brand",
|
|
4027
|
+
"tailwindUtility": "bg-brand-100",
|
|
4028
|
+
"cssVar": "var(--color-brand-100)",
|
|
4029
|
+
"semanticNote": null
|
|
4030
|
+
},
|
|
4031
|
+
{
|
|
4032
|
+
"token": "color-brand-200",
|
|
4033
|
+
"family": "brand",
|
|
4034
|
+
"tailwindUtility": "bg-brand-200",
|
|
4035
|
+
"cssVar": "var(--color-brand-200)",
|
|
4036
|
+
"semanticNote": null
|
|
4037
|
+
},
|
|
4038
|
+
{
|
|
4039
|
+
"token": "color-brand-300",
|
|
4040
|
+
"family": "brand",
|
|
4041
|
+
"tailwindUtility": "bg-brand-300",
|
|
4042
|
+
"cssVar": "var(--color-brand-300)",
|
|
4043
|
+
"semanticNote": null
|
|
4044
|
+
},
|
|
4045
|
+
{
|
|
4046
|
+
"token": "color-brand-400",
|
|
4047
|
+
"family": "brand",
|
|
4048
|
+
"tailwindUtility": "bg-brand-400",
|
|
4049
|
+
"cssVar": "var(--color-brand-400)",
|
|
4050
|
+
"semanticNote": null
|
|
4051
|
+
},
|
|
4052
|
+
{
|
|
4053
|
+
"token": "color-brand-500",
|
|
4054
|
+
"family": "brand",
|
|
4055
|
+
"tailwindUtility": "bg-brand-500",
|
|
4056
|
+
"cssVar": "var(--color-brand-500)",
|
|
4057
|
+
"semanticNote": "active nav highlight"
|
|
4058
|
+
},
|
|
4059
|
+
{
|
|
4060
|
+
"token": "color-brand-600",
|
|
4061
|
+
"family": "brand",
|
|
4062
|
+
"tailwindUtility": "bg-brand-600",
|
|
4063
|
+
"cssVar": "var(--color-brand-600)",
|
|
4064
|
+
"semanticNote": "primary button"
|
|
4065
|
+
},
|
|
4066
|
+
{
|
|
4067
|
+
"token": "color-brand-700",
|
|
4068
|
+
"family": "brand",
|
|
4069
|
+
"tailwindUtility": "bg-brand-700",
|
|
4070
|
+
"cssVar": "var(--color-brand-700)",
|
|
4071
|
+
"semanticNote": "top bar base"
|
|
4072
|
+
},
|
|
4073
|
+
{
|
|
4074
|
+
"token": "color-brand-800",
|
|
4075
|
+
"family": "brand",
|
|
4076
|
+
"tailwindUtility": "bg-brand-800",
|
|
4077
|
+
"cssVar": "var(--color-brand-800)",
|
|
4078
|
+
"semanticNote": null
|
|
4079
|
+
},
|
|
4080
|
+
{
|
|
4081
|
+
"token": "color-brand-900",
|
|
4082
|
+
"family": "brand",
|
|
4083
|
+
"tailwindUtility": "bg-brand-900",
|
|
4084
|
+
"cssVar": "var(--color-brand-900)",
|
|
4085
|
+
"semanticNote": "sidebar background"
|
|
4086
|
+
},
|
|
4087
|
+
{
|
|
4088
|
+
"token": "color-brand-950",
|
|
4089
|
+
"family": "brand",
|
|
4090
|
+
"tailwindUtility": "bg-brand-950",
|
|
4091
|
+
"cssVar": "var(--color-brand-950)",
|
|
4092
|
+
"semanticNote": null
|
|
4093
|
+
}
|
|
4094
|
+
],
|
|
4095
|
+
"install": {
|
|
4096
|
+
"installCommand": "npm install @besaitech/ng-design-system",
|
|
4097
|
+
"tailwindImport": "@import \"tailwindcss\";",
|
|
4098
|
+
"sourceDirective": "@source \"../node_modules/@besaitech/ng-design-system\"; /* lets Tailwind v4 scan the library templates (it ignores node_modules by default) */",
|
|
4099
|
+
"themeBlock": "@import \"@besaitech/ng-design-system/themes/base.css\"; /* surfaces, ink, accents, status, radius */\n@import \"@besaitech/ng-design-system/themes/saitech.css\"; /* brand ramp — or themes/belvigo.css */",
|
|
4100
|
+
"peerDeps": [
|
|
4101
|
+
"@angular/common ^20.3.0 || ^21.0.0 || ^22.0.0",
|
|
4102
|
+
"@angular/core ^20.3.0 || ^21.0.0 || ^22.0.0",
|
|
4103
|
+
"@angular/forms ^20.3.0 || ^21.0.0 || ^22.0.0",
|
|
4104
|
+
"@angular/platform-browser ^20.3.0 || ^21.0.0 || ^22.0.0",
|
|
4105
|
+
"@angular/router ^20.3.0 || ^21.0.0 || ^22.0.0",
|
|
4106
|
+
"tailwindcss ^4 (required in the consuming app — the package ships NO compiled CSS)"
|
|
4107
|
+
],
|
|
4108
|
+
"standaloneNote": "All components are standalone — import the class directly into a component's `imports` array (no NgModule). Form controls implement ControlValueAccessor: bind their value with [(ngModel)] (FormsModule) or formControlName (ReactiveFormsModule), never [value]. CRITICAL: the library is styled with Tailwind utilities baked into its templates, so the consuming app must run Tailwind v4 with @import \"tailwindcss\", the @source directive above, and a brand theme preset (@import \"@besaitech/ng-design-system/themes/saitech.css\" or themes/belvigo.css) plus the surface/ink tokens — otherwise components render unstyled. The preset must be imported AFTER @import \"tailwindcss\"."
|
|
4109
|
+
}
|
|
4110
|
+
}
|