@cadriciel/ui 0.8.0 → 0.9.1
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/fesm2022/cadriciel-ui.mjs +5629 -1695
- package/fesm2022/cadriciel-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/tokens.scss +11 -1
- package/types/cadriciel-ui.d.ts +1176 -41
package/types/cadriciel-ui.d.ts
CHANGED
|
@@ -145,6 +145,7 @@ declare class CadIconRegistry {
|
|
|
145
145
|
/**
|
|
146
146
|
* <cad-icon name="search" [size]="16" />
|
|
147
147
|
* SVG inline, trait 2 px, hérite `currentColor`. `spin` (animation), `filled` (icône pleine), `flip`, `rotate`, `title` (info-bulle native).
|
|
148
|
+
* @atelier icone=sparkles largeur=1 hauteur=1
|
|
148
149
|
*/
|
|
149
150
|
declare class CadIconComponent {
|
|
150
151
|
private readonly registry;
|
|
@@ -178,6 +179,7 @@ declare class CadIconComponent {
|
|
|
178
179
|
* - Directive-composant appliquée sur un vrai <button>/<a> : sémantique native, focus, formulaire.
|
|
179
180
|
* - Signals inputs, OnPush, classes hôtes reflétées (stylables sans ::ng-deep).
|
|
180
181
|
* - Ne lit QUE les tokens --cad-* (thème clair/sombre transparent).
|
|
182
|
+
* @atelier icone=square largeur=2 hauteur=1 contenu=Bouton
|
|
181
183
|
*/
|
|
182
184
|
declare class CadButtonComponent {
|
|
183
185
|
readonly el: ElementRef<HTMLElement>;
|
|
@@ -208,6 +210,7 @@ declare class CadButtonComponent {
|
|
|
208
210
|
* Accole les boutons (radius aux extrémités, bordures fusionnées). Sans `attached`, simple groupe espacé (gap).
|
|
209
211
|
* Remplace p-buttonGroup. Le focus reste visible (z-index sur le bouton focusé).
|
|
210
212
|
* `selectable="single|multiple"` + `[(value)]` : les boutons portant `value` deviennent des options (état enfoncé, aria-pressed).
|
|
213
|
+
* @atelier icone=columns-3 hauteur=1 conteneur=direct ajustement=naturel
|
|
211
214
|
*/
|
|
212
215
|
declare class CadButtonGroupComponent {
|
|
213
216
|
readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
|
|
@@ -222,6 +225,15 @@ declare class CadButtonGroupComponent {
|
|
|
222
225
|
readonly value: _angular_core.ModelSignal<unknown>;
|
|
223
226
|
readonly changed: _angular_core.OutputEmitterRef<unknown>;
|
|
224
227
|
private readonly buttons;
|
|
228
|
+
/**
|
|
229
|
+
* Enfants créés DYNAMIQUEMENT (atelier CadGrid, composition programmatique) : une
|
|
230
|
+
* requête de contenu ne voit JAMAIS un composant né de `createComponent`, donc sans
|
|
231
|
+
* ce registre le groupe serait sourd à leurs clics. Contrat d'accueil duck-typé —
|
|
232
|
+
* l'appelant fournit les instances, le groupe filtre ce qui n'est pas un bouton.
|
|
233
|
+
*/
|
|
234
|
+
private readonly enfantsDynamiques;
|
|
235
|
+
enregistrerEnfants(instances: unknown[]): void;
|
|
236
|
+
private readonly tousBoutons;
|
|
225
237
|
constructor();
|
|
226
238
|
protected onClick(e: Event): void;
|
|
227
239
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadButtonGroupComponent, never>;
|
|
@@ -258,6 +270,7 @@ declare class CadInputDirective {
|
|
|
258
270
|
*
|
|
259
271
|
* Le focus se pose sur la BOÎTE (`.cad-field__box:focus-within`) — jamais sur un morceau (règle SZU 17/08).
|
|
260
272
|
* L'erreur remplace l'aide quand elle est présente. `label` lié au contrôle via `for`.
|
|
273
|
+
* @atelier icone=text-cursor-input largeur=4 hauteur=1 pose-label=Champ
|
|
261
274
|
*/
|
|
262
275
|
declare class CadFieldComponent {
|
|
263
276
|
readonly label: _angular_core.InputSignal<string>;
|
|
@@ -283,6 +296,7 @@ declare class CadFieldComponent {
|
|
|
283
296
|
/**
|
|
284
297
|
* <cad-number [(value)]="port" [min]="1" [max]="65535" [step]="1" suffix=" ms" [decimals]="0" showButtons/>
|
|
285
298
|
* CVA<number|null>. Clavier : ↑/↓ (± step), Shift+↑/↓ (× 10), Home/End (min/max). Locale via `locale`.
|
|
299
|
+
* @atelier icone=hash largeur=3 hauteur=1
|
|
286
300
|
*/
|
|
287
301
|
declare class CadNumberComponent extends CadValueAccessor<number> {
|
|
288
302
|
readonly min: _angular_core.InputSignalWithTransform<number | null, unknown>;
|
|
@@ -320,6 +334,7 @@ declare class CadNumberComponent extends CadValueAccessor<number> {
|
|
|
320
334
|
/**
|
|
321
335
|
* <cad-password [(value)]="pwd" placeholder="…" toggleMask [feedback]="true" />
|
|
322
336
|
* CVA<string>. Bouton œil (afficher/masquer), jauge de robustesse optionnelle (`feedback`), `autocomplete`.
|
|
337
|
+
* @atelier icone=lock largeur=3 hauteur=1
|
|
323
338
|
*/
|
|
324
339
|
declare class CadPasswordComponent extends CadValueAccessor<string> {
|
|
325
340
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
@@ -347,6 +362,7 @@ type CadSliderSeverity = 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
|
347
362
|
* <cad-slider range [(value)]="[a,b]" [marks]="[0,25,50,75,100]"/>
|
|
348
363
|
* CVA<number | [number, number]>. Remplace p-slider. Clavier ←→↑↓ (±step), PageUp/Down (±10 steps), Home/End, Shift = ×10.
|
|
349
364
|
* `lazy` : `valueChange`/`changed` émis au relâchement seulement (`sliding` pendant le drag).
|
|
365
|
+
* @atelier icone=sliders-horizontal largeur=4 hauteur=1
|
|
350
366
|
*/
|
|
351
367
|
declare class CadSliderComponent extends CadValueAccessor<CadSliderValue> {
|
|
352
368
|
readonly min: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
@@ -449,6 +465,7 @@ declare const CAD_COLOR_PRESETS: string[];
|
|
|
449
465
|
* <cad-colorpicker [(value)]="color" format="hex" alpha [presets]="[…]" inline/>
|
|
450
466
|
* CVA<string>. Panneau : zone saturation/luminosité + barre de teinte (+ alpha), champs hex/r/g/b, palette, pipette (EyeDropper si dispo).
|
|
451
467
|
* Clavier : flèches sur les poignées (Shift = ×10). Events `changed`, `opened`, `closed`.
|
|
468
|
+
* @atelier icone=palette largeur=3 hauteur=1
|
|
452
469
|
*/
|
|
453
470
|
declare class CadColorpickerComponent extends CadValueAccessor<string> {
|
|
454
471
|
readonly format: _angular_core.InputSignal<CadColorFormat>;
|
|
@@ -508,6 +525,7 @@ declare class CadColorpickerComponent extends CadValueAccessor<string> {
|
|
|
508
525
|
/**
|
|
509
526
|
* <cad-rating [(value)]="note" [max]="5" allowHalf clearable showValue severity="warning"/>
|
|
510
527
|
* CVA<number>. Clavier ←→ (± 1 ou ½), Home/End, Suppr = 0 (clearable). `role="slider"`.
|
|
528
|
+
* @atelier ajustement=naturel icone=star largeur=2 hauteur=1 pose-value=3
|
|
511
529
|
*/
|
|
512
530
|
declare class CadRatingComponent extends CadValueAccessor<number> {
|
|
513
531
|
readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
@@ -612,6 +630,7 @@ declare class CadInplaceContentDirective {
|
|
|
612
630
|
* <ng-template cadInplaceContent><input cadInput [(ngModel)]="name"></ng-template>
|
|
613
631
|
* </cad-inplace>
|
|
614
632
|
* Texte → éditeur au clic/Entrée ; Échap ou blur referme (`closeOnEscape`, `closeOnBlur`) ; crayon au survol.
|
|
633
|
+
* @atelier icone=pen-line hauteur=1
|
|
615
634
|
*/
|
|
616
635
|
declare class CadInplaceComponent {
|
|
617
636
|
readonly active: _angular_core.ModelSignal<boolean>;
|
|
@@ -635,6 +654,7 @@ declare class CadInplaceComponent {
|
|
|
635
654
|
/**
|
|
636
655
|
* <cad-switch [(value)]="on" label="Auto-park 7 j" size="sm" labelPosition="left" />
|
|
637
656
|
* CVA<boolean>. Espace/Entrée basculent. `readonly` = visible mais figé.
|
|
657
|
+
* @atelier ajustement=naturel icone=toggle-right largeur=2 hauteur=1 pose-label=Interrupteur
|
|
638
658
|
*/
|
|
639
659
|
declare class CadSwitchComponent extends CadValueAccessor<boolean> {
|
|
640
660
|
readonly label: _angular_core.InputSignal<string>;
|
|
@@ -653,6 +673,7 @@ declare class CadSwitchComponent extends CadValueAccessor<boolean> {
|
|
|
653
673
|
* <cad-checkbox [(value)]="checked" label="PostGIS" [indeterminate]="some" />
|
|
654
674
|
* CVA<boolean>. `indeterminate` (two-way) = état visuel « partiel » ; un clic passe à coché.
|
|
655
675
|
* `invalid` pour l'état d'erreur (ex. CGU non acceptées).
|
|
676
|
+
* @atelier ajustement=naturel icone=check-square largeur=2 hauteur=1 pose-label="Case à cocher"
|
|
656
677
|
*/
|
|
657
678
|
declare class CadCheckboxComponent extends CadValueAccessor<boolean> {
|
|
658
679
|
readonly label: _angular_core.InputSignal<string>;
|
|
@@ -673,20 +694,56 @@ declare class CadCheckboxComponent extends CadValueAccessor<boolean> {
|
|
|
673
694
|
* <cad-radio value="session" label="Session" [disabled]="true" />
|
|
674
695
|
* </cad-radio-group>
|
|
675
696
|
* CVA<T> sur le GROUPE. Clavier : ←/→/↑/↓ déplacent la sélection (pattern WAI-ARIA radiogroup).
|
|
697
|
+
* @atelier icone=circle-dot largeur=2 conteneur=direct hauteur=4
|
|
676
698
|
*/
|
|
677
699
|
declare class CadRadioGroupComponent<T = unknown> extends CadValueAccessor<T> {
|
|
678
700
|
readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
|
|
679
701
|
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
680
702
|
readonly name: _angular_core.InputSignal<string>;
|
|
681
703
|
readonly changed: _angular_core.OutputEmitterRef<T>;
|
|
682
|
-
|
|
704
|
+
private readonly radiosProjetes;
|
|
705
|
+
/** Radios POSÉS hors gabarit, annoncés par `enregistrerEnfants`. */
|
|
706
|
+
private readonly radiosPoses;
|
|
707
|
+
readonly radios: _angular_core.Signal<any[]>;
|
|
708
|
+
/** Reçoit la LISTE COMPLÈTE des radios posés, et se RATTACHE à chacun. */
|
|
709
|
+
enregistrerEnfants(instances: unknown[]): void;
|
|
683
710
|
select(v: T): void;
|
|
684
711
|
protected onKey(e: KeyboardEvent): void;
|
|
685
712
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadRadioGroupComponent<any>, never>;
|
|
686
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadRadioGroupComponent<any>, "cad-radio-group", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, ["
|
|
713
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadRadioGroupComponent<any>, "cad-radio-group", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, ["radiosProjetes"], ["*"], true, never>;
|
|
687
714
|
}
|
|
715
|
+
/**
|
|
716
|
+
* Un choix du groupe : `<cad-radio [value]="'a'" label="Option A">`.
|
|
717
|
+
* @atelier icone=circle-dot conteneur=flux dans=cad-radio-group pose-label=Option
|
|
718
|
+
*/
|
|
688
719
|
declare class CadRadioComponent<T = unknown> {
|
|
689
|
-
|
|
720
|
+
/**
|
|
721
|
+
* Le groupe d'accueil — INJECTÉ dans un gabarit, POUSSÉ par l'hôte à la pose.
|
|
722
|
+
*
|
|
723
|
+
* ⚠️ OPTIONNEL depuis le 27/08, même correctif que `cad-accordion-panel` : l'injection
|
|
724
|
+
* obligatoire levait `NG0201` dès qu'on créait le bouton à la main, et `gen-catalog`
|
|
725
|
+
* classait `cad-radio` « contextuel » — il n'était pas posable. `cad-tab`, la pièce
|
|
726
|
+
* jumelle des onglets, n'injecte rien : elle est PASSIVE et son hôte la pilote. La
|
|
727
|
+
* divergence était d'écriture, pas de nature (SZU 27/08).
|
|
728
|
+
*/
|
|
729
|
+
private readonly groupInjecte;
|
|
730
|
+
private readonly groupPose;
|
|
731
|
+
readonly group: _angular_core.Signal<CadRadioGroupComponent<T> | null>;
|
|
732
|
+
/** Le groupe s'annonce au bouton qu'il accueille. Cf. `atelier/atelier.pieces.ts`. */
|
|
733
|
+
rattacher(g: CadRadioGroupComponent<T>): void;
|
|
734
|
+
/** Sélectionne, si un groupe existe. Un radio solitaire ne prétend pas gérer un choix. */
|
|
735
|
+
protected choisir(): void;
|
|
736
|
+
/**
|
|
737
|
+
* La valeur que ce choix représente.
|
|
738
|
+
*
|
|
739
|
+
* DÉFAUT UNIQUE plutôt que `input.required` (27/08) — même précédent que
|
|
740
|
+
* `cad-accordion-panel`, qui se donne `cadId('cad-panel')`. Une entrée requise LÈVE
|
|
741
|
+
* dès qu'on instancie le composant sans la fournir : posé dans l'atelier, le radio
|
|
742
|
+
* mourait à la construction et le poseur l'écartait EN SILENCE (groupe vide, aucune
|
|
743
|
+
* erreur visible). Un défaut unique par instance rend un radio posé immédiatement
|
|
744
|
+
* cohérent — deux radios ne se retrouvent jamais cochés ensemble — et n'enlève rien à
|
|
745
|
+
* l'usage écrit, où l'on passe toujours une valeur.
|
|
746
|
+
*/
|
|
690
747
|
readonly value: _angular_core.InputSignal<T>;
|
|
691
748
|
readonly label: _angular_core.InputSignal<string>;
|
|
692
749
|
readonly hint: _angular_core.InputSignal<string>;
|
|
@@ -697,7 +754,7 @@ declare class CadRadioComponent<T = unknown> {
|
|
|
697
754
|
protected readonly tabIndex: _angular_core.Signal<0 | -1>;
|
|
698
755
|
focus(): void;
|
|
699
756
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadRadioComponent<any>, never>;
|
|
700
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadRadioComponent<any>, "cad-radio", never, { "value": { "alias": "value"; "required":
|
|
757
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadRadioComponent<any>, "cad-radio", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
701
758
|
}
|
|
702
759
|
|
|
703
760
|
type CadSegmentOption = {
|
|
@@ -711,6 +768,8 @@ type CadSegmentOption = {
|
|
|
711
768
|
* <cad-segmented [(value)]="view" [options]="[{label:'Tableau',value:'t'},{label:'SQL',value:'s',icon:'code'}]" />
|
|
712
769
|
* Remplace p-selectButton. CVA<T>. `multiple` = tableau de valeurs. `allowEmpty` (single) autorise la désélection.
|
|
713
770
|
* `optionLabel`/`optionValue` pour des objets. Template d'option : <ng-template let-o>…</ng-template>.
|
|
771
|
+
* @atelier icone=columns-3 hauteur=1
|
|
772
|
+
* @atelier-exemple options [{"label":"Jour","value":"jour"},{"label":"Semaine","value":"semaine"},{"label":"Mois","value":"mois"}]
|
|
714
773
|
*/
|
|
715
774
|
declare class CadSegmentedComponent<T = unknown> extends CadValueAccessor<T | T[]> {
|
|
716
775
|
readonly options: _angular_core.InputSignal<CadSegmentOption[]>;
|
|
@@ -736,6 +795,7 @@ declare class CadSegmentedComponent<T = unknown> extends CadValueAccessor<T | T[
|
|
|
736
795
|
/**
|
|
737
796
|
* <cad-toggle-button [(value)]="on" onLabel="Actif" offLabel="Inactif" onIcon="check" offIcon="x" severity="primary"/>
|
|
738
797
|
* CVA<boolean>. Actif = bouton plein, inactif = contour. `aria-pressed`. Remplace p-toggleButton.
|
|
798
|
+
* @atelier icone=toggle-left largeur=2 hauteur=1
|
|
739
799
|
*/
|
|
740
800
|
declare class CadToggleButtonComponent extends CadValueAccessor<boolean> {
|
|
741
801
|
readonly onLabel: _angular_core.InputSignal<string>;
|
|
@@ -1119,6 +1179,8 @@ declare abstract class CadSelectBase<T, V> extends CadValueAccessor<V> {
|
|
|
1119
1179
|
* Escape/Tab ferment, lettres = typeahead (sélection directe quand fermé), Suppr/Retour = effacer si `clearable`.
|
|
1120
1180
|
* - `open()/close()/toggle()/focus()` publiques ; events `changed`, `opened`, `closed`, `filtered`, `cleared`, `focusChange`.
|
|
1121
1181
|
* - mobile : `mobile="auto|sheet|popover"` — sous le seuil mobile le panneau s'ouvre en feuille basse (cad-sheet), options 44 px.
|
|
1182
|
+
* @atelier icone=chevrons-up-down largeur=3 hauteur=1
|
|
1183
|
+
* @atelier-exemple options [{"label":"Béton"},{"label":"Acier"},{"label":"Bois"},{"label":"Mixte"}]
|
|
1122
1184
|
*/
|
|
1123
1185
|
declare class CadSelectComponent<T = unknown, V = unknown> extends CadSelectBase<T, V> {
|
|
1124
1186
|
/** Émis quand l'utilisateur choisit (ou efface) une option. */
|
|
@@ -1147,6 +1209,8 @@ declare class CadSelectComponent<T = unknown, V = unknown> extends CadSelectBase
|
|
|
1147
1209
|
* - Espace/Entrée basculent l'option SANS fermer le panneau ; Escape ferme.
|
|
1148
1210
|
* - events : `changed<V[]>`, `removed<V>` (chip retirée), + `opened/closed/filtered/cleared/focusChange`.
|
|
1149
1211
|
* - mobile : `mobile="auto|sheet|popover"` — feuille basse avec pied « OK (n) » sous le seuil mobile.
|
|
1212
|
+
* @atelier icone=list-checks largeur=3 hauteur=1
|
|
1213
|
+
* @atelier-exemple options [{"label":"Nord"},{"label":"Sud"},{"label":"Est"},{"label":"Ouest"}]
|
|
1150
1214
|
*/
|
|
1151
1215
|
declare class CadMultiselectComponent<T = unknown, V = unknown> extends CadSelectBase<T, V[]> {
|
|
1152
1216
|
readonly display: _angular_core.InputSignal<"chip" | "comma">;
|
|
@@ -1423,6 +1487,7 @@ interface CadColumnFilterOption {
|
|
|
1423
1487
|
* <ng-template cadFilterTemplate let-col>…</ng-template>
|
|
1424
1488
|
* </cad-column>
|
|
1425
1489
|
* Déclaration d'une colonne de cad-table (élément sans rendu propre).
|
|
1490
|
+
* @atelier icone=columns
|
|
1426
1491
|
*/
|
|
1427
1492
|
declare class CadColumnComponent {
|
|
1428
1493
|
/** Chemin (pointé) de la donnée dans la ligne. */
|
|
@@ -1485,6 +1550,7 @@ declare class CadColumnComponent {
|
|
|
1485
1550
|
/**
|
|
1486
1551
|
* <cad-filter-chip label="Statut" value="en ligne, en pause" active removable (removed)="…" (clicked)="…"/>
|
|
1487
1552
|
* Chip de filtre de la barre d'outils (pointillé inactif = « + Filtre », plein accent quand actif).
|
|
1553
|
+
* @atelier ajustement=naturel icone=filter largeur=2 hauteur=1 pose-label=Filtre
|
|
1488
1554
|
*/
|
|
1489
1555
|
declare class CadFilterChipComponent {
|
|
1490
1556
|
readonly label: _angular_core.InputSignal<string>;
|
|
@@ -1509,6 +1575,9 @@ interface CadPageEvent {
|
|
|
1509
1575
|
/**
|
|
1510
1576
|
* <cad-paginator [(first)]="first" [(rows)]="rows" [totalRecords]="42" [rowsPerPageOptions]="[10,25,50]" (pageChange)="…"/>
|
|
1511
1577
|
* Remplace p-paginator. Réutilisé par cad-table. `currentPageReportTemplate` : {first} {last} {totalRecords} {currentPage} {totalPages} {rows}.
|
|
1578
|
+
* @atelier icone=arrow-left-right hauteur=1
|
|
1579
|
+
* @atelier-exemple totalRecords 120
|
|
1580
|
+
* @atelier-exemple rows 10
|
|
1512
1581
|
*/
|
|
1513
1582
|
declare class CadPaginatorComponent {
|
|
1514
1583
|
readonly first: _angular_core.ModelSignal<number>;
|
|
@@ -1832,6 +1901,7 @@ declare class CadTabContentDirective {
|
|
|
1832
1901
|
* contenu (ou <ng-template cadTabContent> pour un rendu vraiment paresseux)
|
|
1833
1902
|
* <ng-template cadTabLabel>label custom</ng-template>
|
|
1834
1903
|
* </cad-tab>
|
|
1904
|
+
* @atelier icone=panel-top conteneur=flux dans=cad-tabs pose-label=Onglet
|
|
1835
1905
|
*/
|
|
1836
1906
|
declare class CadTabComponent {
|
|
1837
1907
|
readonly value: _angular_core.InputSignal<unknown>;
|
|
@@ -1853,6 +1923,7 @@ declare class CadTabComponent {
|
|
|
1853
1923
|
/**
|
|
1854
1924
|
* <cad-tabs [(value)]="tab" [(activeIndex)]="i" variant="line|pill|enclosed" size="sm|md" [stretch] [scrollable] [lazy]="true" [keepAlive]="true" (changed) (tabChange)>
|
|
1855
1925
|
* `value` prime sur `activeIndex` (les deux sont two-way et synchronisés). Clavier ←/→/Home/End sur la liste.
|
|
1926
|
+
* @atelier icone=folder conteneur=direct largeur=12 hauteur=6
|
|
1856
1927
|
*/
|
|
1857
1928
|
declare class CadTabsComponent {
|
|
1858
1929
|
readonly value: _angular_core.ModelSignal<unknown>;
|
|
@@ -1876,7 +1947,37 @@ declare class CadTabsComponent {
|
|
|
1876
1947
|
value: unknown;
|
|
1877
1948
|
tab: CadTabComponent;
|
|
1878
1949
|
}>;
|
|
1879
|
-
|
|
1950
|
+
/** Onglets déclarés dans un GABARIT — la voie normale, celle de tous les usages écrits. */
|
|
1951
|
+
private readonly tabsProjetes;
|
|
1952
|
+
/**
|
|
1953
|
+
* Onglets POSÉS : créés hors gabarit par `createComponent`, et annoncés par
|
|
1954
|
+
* `enregistrerEnfants` — le contrat d'accueil décrit dans `atelier/atelier.pieces.ts`.
|
|
1955
|
+
*
|
|
1956
|
+
* ⚠️ CE N'EST PAS UN DOUBLON DE LA REQUÊTE, C'EST LA SEULE VOIE POSSIBLE POUR EUX.
|
|
1957
|
+
* Mesuré le 27/08 : un `cad-tab` créé impérativement et passé en `projectableNodes`
|
|
1958
|
+
* arrive bien dans le DOM, mais `contentChildren` NE LE VOIT PAS — une requête de
|
|
1959
|
+
* contenu se résout sur la structure déclarée d'un gabarit, et un composant instancié
|
|
1960
|
+
* à la main vit dans une autre vue. Résultat avant correction : `onglets=0`, une barre
|
|
1961
|
+
* vide et aucun panneau, sans la moindre erreur. C'est ce qui rendait `cad-tabs`
|
|
1962
|
+
* inutilisable dans l'atelier et dans les pages visuelles de frontless.
|
|
1963
|
+
*
|
|
1964
|
+
* Même trappe que `cad-button-group`, qui la porte depuis le 24/08 pour la même
|
|
1965
|
+
* raison (il était SOURD aux clics de ses boutons posés) : les deux sources
|
|
1966
|
+
* FUSIONNENT, la projection reste prioritaire dans l'ordre, et rien ne change pour
|
|
1967
|
+
* qui écrit du gabarit.
|
|
1968
|
+
*/
|
|
1969
|
+
private readonly tabsPoses;
|
|
1970
|
+
/** Tous les onglets : projetés d'abord, posés ensuite. L'ordre fait la barre. */
|
|
1971
|
+
readonly tabs: _angular_core.Signal<CadTabComponent[]>;
|
|
1972
|
+
/**
|
|
1973
|
+
* Reçoit les instances des onglets posés — la LISTE COMPLÈTE, pas un ajout.
|
|
1974
|
+
*
|
|
1975
|
+
* Le poseur reconstruit ses enfants d'un bloc à chaque changement de structure : lui
|
|
1976
|
+
* faire tenir un différentiel inviterait le fantôme (un onglet détruit qui reste dans
|
|
1977
|
+
* la barre). L'hôte filtre lui-même ce qui n'est pas un onglet, pour qu'un appelant
|
|
1978
|
+
* n'ait pas à connaître nos types.
|
|
1979
|
+
*/
|
|
1980
|
+
enregistrerEnfants(instances: unknown[]): void;
|
|
1880
1981
|
private readonly list;
|
|
1881
1982
|
private readonly btns;
|
|
1882
1983
|
protected readonly overflow: _angular_core.WritableSignal<boolean>;
|
|
@@ -1889,7 +1990,7 @@ declare class CadTabsComponent {
|
|
|
1889
1990
|
protected scroll(dir: number): void;
|
|
1890
1991
|
protected checkOverflow(): void;
|
|
1891
1992
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadTabsComponent, never>;
|
|
1892
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadTabsComponent, "cad-tabs", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "stretch": { "alias": "stretch"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "keepAlive": { "alias": "keepAlive"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "activeIndex": "activeIndexChange"; "changed": "changed"; "tabChange": "tabChange"; }, ["
|
|
1993
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadTabsComponent, "cad-tabs", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "stretch": { "alias": "stretch"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "keepAlive": { "alias": "keepAlive"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "activeIndex": "activeIndexChange"; "changed": "changed"; "tabChange": "tabChange"; }, ["tabsProjetes"], ["[cadTabsEnd]"], true, never>;
|
|
1893
1994
|
}
|
|
1894
1995
|
|
|
1895
1996
|
type CadStepState = 'done' | 'current' | 'error' | 'todo';
|
|
@@ -1912,6 +2013,7 @@ declare class CadStepComponent {
|
|
|
1912
2013
|
/**
|
|
1913
2014
|
* <cad-stepper [(activeIndex)]="i" [linear] [clickable]="true" orientation="horizontal|vertical" size="sm|md" (changed) (stepClick)>
|
|
1914
2015
|
* `linear` : impossible d'aller au-delà de la première étape non `completed`. Méthodes next()/prev()/goTo(i).
|
|
2016
|
+
* @atelier icone=git-commit
|
|
1915
2017
|
*/
|
|
1916
2018
|
declare class CadStepperComponent {
|
|
1917
2019
|
readonly activeIndex: _angular_core.ModelSignal<number>;
|
|
@@ -1962,9 +2064,29 @@ declare class CadPanelContentDirective {
|
|
|
1962
2064
|
* </cad-accordion-panel>
|
|
1963
2065
|
* </cad-accordion>
|
|
1964
2066
|
* `value` = valeur ouverte (string) ou tableau si `multiple`. Clavier : Entrée/Espace, ↑/↓/Home/End entre en-têtes.
|
|
2067
|
+
* @atelier icone=panel-top conteneur=flux dans=cad-accordion pose-header=Section
|
|
1965
2068
|
*/
|
|
1966
2069
|
declare class CadAccordionPanelComponent {
|
|
1967
|
-
|
|
2070
|
+
/**
|
|
2071
|
+
* L'accordéon d'accueil — INJECTÉ dans un gabarit, POUSSÉ par l'hôte quand la pièce
|
|
2072
|
+
* est posée hors gabarit.
|
|
2073
|
+
*
|
|
2074
|
+
* ⚠️ L'INJECTION EST OPTIONNELLE, ET C'EST LE CŒUR DU CORRECTIF (SZU 27/08 : « pourquoi
|
|
2075
|
+
* cad-accordion serait différent d'un cad-tabs ? »). Elle était obligatoire, donc :
|
|
2076
|
+
* `NG0201` dès qu'on créait le panneau à la main, et `gen-catalog` le classait
|
|
2077
|
+
* « contextuel » — il n'était même pas POSABLE. Or `cad-tab`, lui, n'injecte rien :
|
|
2078
|
+
* c'est une pièce PASSIVE que son hôte pilote. La différence n'était pas une contrainte
|
|
2079
|
+
* du composant, c'était une divergence d'écriture entre deux familles jumelles.
|
|
2080
|
+
*
|
|
2081
|
+
* Renversement : la pièce ne va plus CHERCHER son hôte, c'est l'hôte qui s'annonce en
|
|
2082
|
+
* l'accueillant (`rattacher`). Un panneau posé seul reste sensé — il gère alors son
|
|
2083
|
+
* propre `expanded` au lieu de lever.
|
|
2084
|
+
*/
|
|
2085
|
+
private readonly accInjecte;
|
|
2086
|
+
private readonly accPose;
|
|
2087
|
+
readonly acc: _angular_core.Signal<CadAccordionComponent | null>;
|
|
2088
|
+
/** L'accordéon s'annonce à la pièce qu'il accueille. Cf. `atelier/atelier.pieces.ts`. */
|
|
2089
|
+
rattacher(acc: CadAccordionComponent): void;
|
|
1968
2090
|
readonly value: _angular_core.InputSignal<string>;
|
|
1969
2091
|
readonly header: _angular_core.InputSignal<string>;
|
|
1970
2092
|
readonly icon: _angular_core.InputSignal<string>;
|
|
@@ -1977,6 +2099,7 @@ declare class CadAccordionPanelComponent {
|
|
|
1977
2099
|
readonly contentTpl: _angular_core.Signal<CadPanelContentDirective | undefined>;
|
|
1978
2100
|
readonly id: string;
|
|
1979
2101
|
readonly rendered: _angular_core.WritableSignal<boolean>;
|
|
2102
|
+
/** Sans hôte, le panneau fait autorité sur lui-même : posé seul, il reste utilisable. */
|
|
1980
2103
|
readonly isOpen: _angular_core.Signal<boolean>;
|
|
1981
2104
|
constructor();
|
|
1982
2105
|
toggle(): void;
|
|
@@ -1984,6 +2107,7 @@ declare class CadAccordionPanelComponent {
|
|
|
1984
2107
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadAccordionPanelComponent, never>;
|
|
1985
2108
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadAccordionPanelComponent, "cad-accordion-panel", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "opened": "opened"; "closed": "closed"; }, ["headerTpl", "contentTpl"], ["[cadPanelExtra]", "*"], true, never>;
|
|
1986
2109
|
}
|
|
2110
|
+
/** @atelier icone=chevron-down conteneur=direct largeur=12 hauteur=8 */
|
|
1987
2111
|
declare class CadAccordionComponent {
|
|
1988
2112
|
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1989
2113
|
/** Ouvert(s) : string (single) ou string[] (multiple). */
|
|
@@ -1992,13 +2116,21 @@ declare class CadAccordionComponent {
|
|
|
1992
2116
|
/** Sans bordure extérieure. */
|
|
1993
2117
|
readonly flush: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1994
2118
|
readonly changed: _angular_core.OutputEmitterRef<string | string[] | null>;
|
|
1995
|
-
|
|
2119
|
+
private readonly panelsProjetes;
|
|
2120
|
+
/** Panneaux POSÉS hors gabarit, annoncés par `enregistrerEnfants`. */
|
|
2121
|
+
private readonly panelsPoses;
|
|
2122
|
+
readonly panels: _angular_core.Signal<CadAccordionPanelComponent[]>;
|
|
2123
|
+
/**
|
|
2124
|
+
* Reçoit la LISTE COMPLÈTE des panneaux posés, et se RATTACHE à chacun : la pièce
|
|
2125
|
+
* n'ayant plus d'injection obligatoire, c'est ce geste qui rétablit le lien.
|
|
2126
|
+
*/
|
|
2127
|
+
enregistrerEnfants(instances: unknown[]): void;
|
|
1996
2128
|
private readonly openSet;
|
|
1997
2129
|
isOpen(v: string): boolean;
|
|
1998
2130
|
setOpen(v: string, open: boolean, panel?: CadAccordionPanelComponent): void;
|
|
1999
2131
|
onKey(e: KeyboardEvent, from: CadAccordionPanelComponent): void;
|
|
2000
2132
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadAccordionComponent, never>;
|
|
2001
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadAccordionComponent, "cad-accordion", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "expandIcon": { "alias": "expandIcon"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, ["
|
|
2133
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadAccordionComponent, "cad-accordion", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "expandIcon": { "alias": "expandIcon"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, ["panelsProjetes"], ["*"], true, never>;
|
|
2002
2134
|
}
|
|
2003
2135
|
|
|
2004
2136
|
interface CadBreadcrumbItem {
|
|
@@ -2022,6 +2154,8 @@ declare class CadBreadcrumbItemDirective {
|
|
|
2022
2154
|
* <cad-breadcrumb [items]="[{label:'Projets', routerLink:'/projets'}, {label:'gestion-flotte'}, {label:'Environnements'}]"
|
|
2023
2155
|
* [home]="{icon:'home', routerLink:'/'}" separatorIcon="chevron-right" [maxItems]="4" (itemClick)>
|
|
2024
2156
|
* Le dernier élément porte aria-current="page". Au-delà de `maxItems`, les éléments du milieu sont repliés en « … » (clic = déplie).
|
|
2157
|
+
* @atelier icone=chevron-right hauteur=1
|
|
2158
|
+
* @atelier-exemple items [{"label":"Accueil"},{"label":"Ouvrages"},{"label":"Pont de Sèvres"}]
|
|
2025
2159
|
*/
|
|
2026
2160
|
declare class CadBreadcrumbComponent {
|
|
2027
2161
|
readonly items: _angular_core.InputSignal<CadBreadcrumbItem[]>;
|
|
@@ -2073,6 +2207,8 @@ interface CadMenuItem {
|
|
|
2073
2207
|
* inline : liste verticale. Sous-menu 1 niveau (`items`), ouvert au survol / →. Clavier ↑/↓/Home/End/Entrée/→/←/Escape.
|
|
2074
2208
|
* mobile : `mobile="auto|sheet|popover"` — sous le seuil mobile, le menu popup s'ouvre en feuille basse (items 44 px,
|
|
2075
2209
|
* sous-menus dépliés en accordéon) sauf menu contextuel (clic droit) sur desktop.
|
|
2210
|
+
* @atelier icone=menu
|
|
2211
|
+
* @atelier-exemple items [{"label":"Ouvrir","icon":"folder-open"},{"label":"Exporter","icon":"download"},{"separator":true},{"label":"Supprimer","icon":"trash-2","severity":"danger"}]
|
|
2076
2212
|
*/
|
|
2077
2213
|
declare class CadMenuComponent {
|
|
2078
2214
|
private readonly overlay;
|
|
@@ -2138,6 +2274,8 @@ interface CadMenubarItem extends CadMenuItem {
|
|
|
2138
2274
|
* Barre horizontale : racines (routerLink actif souligné), sous-menus en overlay CDK (`cad-menu` popup, 2 niveaux) au clic ou au survol,
|
|
2139
2275
|
* méga-menu multi-colonnes (`columns`), clavier ←→ entre racines, ↓/Entrée ouvre, Échap ferme, `role=menubar`.
|
|
2140
2276
|
* Sous `breakpoint` (fenêtre) : bouton hamburger + menu vertical déplié en accordéon.
|
|
2277
|
+
* @atelier icone=menu
|
|
2278
|
+
* @atelier-exemple items [{"label":"Fichier","items":[{"label":"Nouveau"},{"label":"Ouvrir"}]},{"label":"Édition","items":[{"label":"Annuler"},{"label":"Rétablir"}]},{"label":"Affichage"}]
|
|
2141
2279
|
*/
|
|
2142
2280
|
declare class CadMenubarComponent {
|
|
2143
2281
|
private readonly overlay;
|
|
@@ -2215,6 +2353,9 @@ declare class CadSplitButtonComponent {
|
|
|
2215
2353
|
/**
|
|
2216
2354
|
* <cad-speed-dial [items]="items" direction="up" type="linear" [(visible)] mask/>
|
|
2217
2355
|
* FAB 48 px + items déployés en ligne (`linear`), en cercle ou demi-cercle. Clic dehors / Échap ferment. Tooltips (label), clavier ↑↓ Entrée.
|
|
2356
|
+
* @atelier icone=plus-circle
|
|
2357
|
+
* @atelier-exemple items [{"icon":"pen-line","title":"Éditer"},{"icon":"share-2","title":"Partager"},{"icon":"trash-2","title":"Supprimer"}]
|
|
2358
|
+
* @atelier-exemple visible true
|
|
2218
2359
|
*/
|
|
2219
2360
|
declare class CadSpeedDialComponent {
|
|
2220
2361
|
readonly items: _angular_core.InputSignal<CadMenuItem[]>;
|
|
@@ -2279,6 +2420,9 @@ interface CadBottomNavItem {
|
|
|
2279
2420
|
* couleur : la couleur seule disparaît pour une personne daltonienne. Les cibles font 44 px de
|
|
2280
2421
|
* haut au minimum, et la barre réserve la zone sûre des téléphones à encoche
|
|
2281
2422
|
* (`env(safe-area-inset-bottom)`), sans quoi la dernière rangée passe sous la barre d'accueil.
|
|
2423
|
+
* @atelier icone=panel-bottom
|
|
2424
|
+
* @atelier-exemple items [{"value":"carte","label":"Carte","icon":"map"},{"value":"releves","label":"Relevés","icon":"clipboard-list"},{"value":"alertes","label":"Alertes","icon":"bell"},{"value":"profil","label":"Profil","icon":"user-round"}]
|
|
2425
|
+
* @atelier-exemple value "carte"
|
|
2282
2426
|
*/
|
|
2283
2427
|
declare class CadBottomNavComponent {
|
|
2284
2428
|
private readonly bp;
|
|
@@ -2391,6 +2535,9 @@ interface CadNavDrawerRow {
|
|
|
2391
2535
|
*
|
|
2392
2536
|
* LA LISTE EST DISTINCTE DE CELLE DE `cad-bottom-nav`, volontairement — voir la note qui s'y
|
|
2393
2537
|
* trouve : on ne met pas en avant les mêmes destinations au pouce que dans un menu complet.
|
|
2538
|
+
* @atelier icone=sidebar-open
|
|
2539
|
+
* @atelier-exemple items [{"value":"tableau","label":"Tableau de bord","icon":"layout-dashboard"},{"value":"ouvrages","label":"Ouvrages","icon":"building-2"},{"value":"releves","label":"Relevés","icon":"clipboard-list"},{"value":"parametres","label":"Paramètres","icon":"settings-2"}]
|
|
2540
|
+
* @atelier-exemple value "tableau"
|
|
2394
2541
|
*/
|
|
2395
2542
|
declare class CadNavDrawerComponent {
|
|
2396
2543
|
private readonly bp;
|
|
@@ -2481,6 +2628,15 @@ interface CadColumnReorderEvent {
|
|
|
2481
2628
|
columns: CadColumnComponent[];
|
|
2482
2629
|
order: string[];
|
|
2483
2630
|
}
|
|
2631
|
+
/** Une colonne définie par entrée (`[colonnes]`) — le sous-ensemble utile de `<cad-column>`. */
|
|
2632
|
+
interface CadColonneDef {
|
|
2633
|
+
field: string;
|
|
2634
|
+
header?: string;
|
|
2635
|
+
dataType?: CadColumnDataType;
|
|
2636
|
+
align?: CadColumnAlign;
|
|
2637
|
+
width?: string;
|
|
2638
|
+
sortable?: boolean;
|
|
2639
|
+
}
|
|
2484
2640
|
interface CadFilterChangeEvent {
|
|
2485
2641
|
filters: CadFilters;
|
|
2486
2642
|
globalFilter: string;
|
|
@@ -2704,7 +2860,21 @@ declare abstract class CadTableBase<T> {
|
|
|
2704
2860
|
/** Pied « N lignes · filtrées · sélectionnées ». */
|
|
2705
2861
|
readonly showRowCount: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2706
2862
|
readonly rowCountLabel: _angular_core.InputSignal<string>;
|
|
2707
|
-
|
|
2863
|
+
/**
|
|
2864
|
+
* Colonnes par ENTRÉE — jumelles des `<cad-column>` projetées, pour les contextes où
|
|
2865
|
+
* la projection n'existe pas : construction dynamique (l'atelier CadGrid instancie par
|
|
2866
|
+
* `createComponent`, et une requête de contenu ne voit JAMAIS un composant créé
|
|
2867
|
+
* dynamiquement), configuration programmatique, colonnes venues d'une API.
|
|
2868
|
+
*
|
|
2869
|
+
* Le gabarit de `cad-table` rend ces définitions en `<cad-column>` réels (masqués,
|
|
2870
|
+
* la colonne ne dessine rien) et une requête de VUE les récupère : tout le moteur
|
|
2871
|
+
* continue de consommer des `CadColumnComponent`, aucune seconde voie interne.
|
|
2872
|
+
* Les deux sources se cumulent, projection d'abord.
|
|
2873
|
+
*/
|
|
2874
|
+
readonly colonnes: _angular_core.InputSignal<CadColonneDef[]>;
|
|
2875
|
+
protected readonly columnsProjetees: _angular_core.Signal<readonly CadColumnComponent[]>;
|
|
2876
|
+
protected readonly columnsSynthetisees: _angular_core.Signal<readonly CadColumnComponent[]>;
|
|
2877
|
+
readonly columns: _angular_core.Signal<CadColumnComponent[]>;
|
|
2708
2878
|
readonly expansionTpl: _angular_core.Signal<CadRowExpansionDirective | undefined>;
|
|
2709
2879
|
readonly rowActionsTpl: _angular_core.Signal<CadRowActionsDirective | undefined>;
|
|
2710
2880
|
readonly emptyTpl: _angular_core.Signal<CadEmptyDirective | undefined>;
|
|
@@ -2715,7 +2885,7 @@ declare abstract class CadTableBase<T> {
|
|
|
2715
2885
|
readonly cardTpl: _angular_core.Signal<CadCardDirective | undefined>;
|
|
2716
2886
|
readonly rowCountTpl: _angular_core.Signal<CadRowCountDirective | undefined>;
|
|
2717
2887
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadTableBase<any>, never>;
|
|
2718
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadTableBase<any>, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyHint": { "alias": "emptyHint"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; "cellFormatter": { "alias": "cellFormatter"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "borderless": { "alias": "borderless"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "resizableColumns": { "alias": "resizableColumns"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "tableStyle": { "alias": "tableStyle"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "rowStyle": { "alias": "rowStyle"; "required": false; "isSignal": true; }; "rowActionsWidth": { "alias": "rowActionsWidth"; "required": false; "isSignal": true; }; "rowActionsAlwaysVisible": { "alias": "rowActionsAlwaysVisible"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "showCount": { "alias": "showCount"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "columnToggle": { "alias": "columnToggle"; "required": false; "isSignal": true; }; "columnsLabel": { "alias": "columnsLabel"; "required": false; "isSignal": true; }; "showDensityToggle": { "alias": "showDensityToggle"; "required": false; "isSignal": true; }; "showSelectionBar": { "alias": "showSelectionBar"; "required": false; "isSignal": true; }; "selectedLabel": { "alias": "selectedLabel"; "required": false; "isSignal": true; }; "selectedLabelPlural": { "alias": "selectedLabelPlural"; "required": false; "isSignal": true; }; "filtersLabel": { "alias": "filtersLabel"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "selectAll": { "alias": "selectAll"; "required": false; "isSignal": true; }; "selectAllScope": { "alias": "selectAllScope"; "required": false; "isSignal": true; }; "rowSelectable": { "alias": "rowSelectable"; "required": false; "isSignal": true; }; "metaKeySelection": { "alias": "metaKeySelection"; "required": false; "isSignal": true; }; "selectionPropagation": { "alias": "selectionPropagation"; "required": false; "isSignal": true; }; "sortField": { "alias": "sortField"; "required": false; "isSignal": true; }; "sortOrder": { "alias": "sortOrder"; "required": false; "isSignal": true; }; "sortMode": { "alias": "sortMode"; "required": false; "isSignal": true; }; "multiSortMeta": { "alias": "multiSortMeta"; "required": false; "isSignal": true; }; "defaultSortOrder": { "alias": "defaultSortOrder"; "required": false; "isSignal": true; }; "customSort": { "alias": "customSort"; "required": false; "isSignal": true; }; "paginator": { "alias": "paginator"; "required": false; "isSignal": true; }; "first": { "alias": "first"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "showCurrentPageReport": { "alias": "showCurrentPageReport"; "required": false; "isSignal": true; }; "currentPageReportTemplate": { "alias": "currentPageReportTemplate"; "required": false; "isSignal": true; }; "pageLinks": { "alias": "pageLinks"; "required": false; "isSignal": true; }; "showFirstLastIcon": { "alias": "showFirstLastIcon"; "required": false; "isSignal": true; }; "alwaysShowPaginator": { "alias": "alwaysShowPaginator"; "required": false; "isSignal": true; }; "globalFilter": { "alias": "globalFilter"; "required": false; "isSignal": true; }; "globalFilterFields": { "alias": "globalFilterFields"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "filterDelay": { "alias": "filterDelay"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "lazyLoadOnInit": { "alias": "lazyLoadOnInit"; "required": false; "isSignal": true; }; "rowExpandable": { "alias": "rowExpandable"; "required": false; "isSignal": true; }; "expandedRowKeys": { "alias": "expandedRowKeys"; "required": false; "isSignal": true; }; "expandMode": { "alias": "expandMode"; "required": false; "isSignal": true; }; "treeField": { "alias": "treeField"; "required": false; "isSignal": true; }; "parentKey": { "alias": "parentKey"; "required": false; "isSignal": true; }; "treeColumn": { "alias": "treeColumn"; "required": false; "isSignal": true; }; "indent": { "alias": "indent"; "required": false; "isSignal": true; }; "expandedNodeKeys": { "alias": "expandedNodeKeys"; "required": false; "isSignal": true; }; "lazyChildren": { "alias": "lazyChildren"; "required": false; "isSignal": true; }; "hasChildren": { "alias": "hasChildren"; "required": false; "isSignal": true; }; "showTreeLines": { "alias": "showTreeLines"; "required": false; "isSignal": true; }; "treeIcon": { "alias": "treeIcon"; "required": false; "isSignal": true; }; "keepAncestors": { "alias": "keepAncestors"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "expandedGroups": { "alias": "expandedGroups"; "required": false; "isSignal": true; }; "aggregates": { "alias": "aggregates"; "required": false; "isSignal": true; }; "showGrandTotal": { "alias": "showGrandTotal"; "required": false; "isSignal": true; }; "grandTotalLabel": { "alias": "grandTotalLabel"; "required": false; "isSignal": true; }; "groupSort": { "alias": "groupSort"; "required": false; "isSignal": true; }; "groupLabel": { "alias": "groupLabel"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "stackAt": { "alias": "stackAt"; "required": false; "isSignal": true; }; "priorityBreakpoints": { "alias": "priorityBreakpoints"; "required": false; "isSignal": true; }; "showHiddenInExpansion": { "alias": "showHiddenInExpansion"; "required": false; "isSignal": true; }; "stickyFirstColumn": { "alias": "stickyFirstColumn"; "required": false; "isSignal": true; }; "stickyActions": { "alias": "stickyActions"; "required": false; "isSignal": true; }; "reorderableColumns": { "alias": "reorderableColumns"; "required": false; "isSignal": true; }; "columnOrder": { "alias": "columnOrder"; "required": false; "isSignal": true; }; "headerGroups": { "alias": "headerGroups"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualRowHeight": { "alias": "virtualRowHeight"; "required": false; "isSignal": true; }; "virtualBuffer": { "alias": "virtualBuffer"; "required": false; "isSignal": true; }; "editMode": { "alias": "editMode"; "required": false; "isSignal": true; }; "editOnClick": { "alias": "editOnClick"; "required": false; "isSignal": true; }; "commitOnBlur": { "alias": "commitOnBlur"; "required": false; "isSignal": true; }; "mutate": { "alias": "mutate"; "required": false; "isSignal": true; }; "showEditIcon": { "alias": "showEditIcon"; "required": false; "isSignal": true; }; "showRowEditButton": { "alias": "showRowEditButton"; "required": false; "isSignal": true; }; "rowEditDialogHeader": { "alias": "rowEditDialogHeader"; "required": false; "isSignal": true; }; "rowEditDialogSize": { "alias": "rowEditDialogSize"; "required": false; "isSignal": true; }; "rowEditDialogCols": { "alias": "rowEditDialogCols"; "required": false; "isSignal": true; }; "columnMenu": { "alias": "columnMenu"; "required": false; "isSignal": true; }; "columnMenuItems": { "alias": "columnMenuItems"; "required": false; "isSignal": true; }; "columnMenuExtra": { "alias": "columnMenuExtra"; "required": false; "isSignal": true; }; "pinnedColumns": { "alias": "pinnedColumns"; "required": false; "isSignal": true; }; "showFilterRow": { "alias": "showFilterRow"; "required": false; "isSignal": true; }; "showGroupZone": { "alias": "showGroupZone"; "required": false; "isSignal": true; }; "groupZoneLabel": { "alias": "groupZoneLabel"; "required": false; "isSignal": true; }; "hideGroupedColumns": { "alias": "hideGroupedColumns"; "required": false; "isSignal": true; }; "showRowNumber": { "alias": "showRowNumber"; "required": false; "isSignal": true; }; "reorderableRows": { "alias": "reorderableRows"; "required": false; "isSignal": true; }; "rowDragDisabled": { "alias": "rowDragDisabled"; "required": false; "isSignal": true; }; "showRowCount": { "alias": "showRowCount"; "required": false; "isSignal": true; }; "rowCountLabel": { "alias": "rowCountLabel"; "required": false; "isSignal": true; }; }, { "dense": "denseChange"; "selection": "selectionChange"; "rowSelect": "rowSelect"; "rowUnselect": "rowUnselect"; "rowClick": "rowClick"; "rowDblClick": "rowDblClick"; "sortField": "sortFieldChange"; "sortOrder": "sortOrderChange"; "multiSortMeta": "multiSortMetaChange"; "sortChange": "sortChange"; "first": "firstChange"; "rows": "rowsChange"; "pageChange": "pageChange"; "globalFilter": "globalFilterChange"; "filters": "filtersChange"; "filterChange": "filterChange"; "lazyLoad": "lazyLoad"; "expandedRowKeys": "expandedRowKeysChange"; "rowExpand": "rowExpand"; "rowCollapse": "rowCollapse"; "expandedNodeKeys": "expandedNodeKeysChange"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; "groupBy": "groupByChange"; "expandedGroups": "expandedGroupsChange"; "aggregates": "aggregatesChange"; "columnResize": "columnResize"; "columnToggled": "columnToggled"; "columnOrder": "columnOrderChange"; "columnReorder": "columnReorder"; "editInit": "editInit"; "editComplete": "editComplete"; "editCancel": "editCancel"; "cellChange": "cellChange"; "rowEditInit": "rowEditInit"; "rowEditSave": "rowEditSave"; "rowEditCancel": "rowEditCancel"; "columnMenuAction": "columnMenuAction"; "pinnedColumns": "pinnedColumnsChange"; "columnPin": "columnPin"; "rowReorder": "rowReorder"; }, ["columns", "expansionTpl", "rowActionsTpl", "emptyTpl", "footerTpl", "captionTpl", "groupHeaderTpl", "groupFooterTpl", "cardTpl", "rowCountTpl"], never, true, never>;
|
|
2888
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadTableBase<any>, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyHint": { "alias": "emptyHint"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; "cellFormatter": { "alias": "cellFormatter"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "borderless": { "alias": "borderless"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "resizableColumns": { "alias": "resizableColumns"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "tableStyle": { "alias": "tableStyle"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "rowStyle": { "alias": "rowStyle"; "required": false; "isSignal": true; }; "rowActionsWidth": { "alias": "rowActionsWidth"; "required": false; "isSignal": true; }; "rowActionsAlwaysVisible": { "alias": "rowActionsAlwaysVisible"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "showCount": { "alias": "showCount"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "columnToggle": { "alias": "columnToggle"; "required": false; "isSignal": true; }; "columnsLabel": { "alias": "columnsLabel"; "required": false; "isSignal": true; }; "showDensityToggle": { "alias": "showDensityToggle"; "required": false; "isSignal": true; }; "showSelectionBar": { "alias": "showSelectionBar"; "required": false; "isSignal": true; }; "selectedLabel": { "alias": "selectedLabel"; "required": false; "isSignal": true; }; "selectedLabelPlural": { "alias": "selectedLabelPlural"; "required": false; "isSignal": true; }; "filtersLabel": { "alias": "filtersLabel"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "selectAll": { "alias": "selectAll"; "required": false; "isSignal": true; }; "selectAllScope": { "alias": "selectAllScope"; "required": false; "isSignal": true; }; "rowSelectable": { "alias": "rowSelectable"; "required": false; "isSignal": true; }; "metaKeySelection": { "alias": "metaKeySelection"; "required": false; "isSignal": true; }; "selectionPropagation": { "alias": "selectionPropagation"; "required": false; "isSignal": true; }; "sortField": { "alias": "sortField"; "required": false; "isSignal": true; }; "sortOrder": { "alias": "sortOrder"; "required": false; "isSignal": true; }; "sortMode": { "alias": "sortMode"; "required": false; "isSignal": true; }; "multiSortMeta": { "alias": "multiSortMeta"; "required": false; "isSignal": true; }; "defaultSortOrder": { "alias": "defaultSortOrder"; "required": false; "isSignal": true; }; "customSort": { "alias": "customSort"; "required": false; "isSignal": true; }; "paginator": { "alias": "paginator"; "required": false; "isSignal": true; }; "first": { "alias": "first"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "showCurrentPageReport": { "alias": "showCurrentPageReport"; "required": false; "isSignal": true; }; "currentPageReportTemplate": { "alias": "currentPageReportTemplate"; "required": false; "isSignal": true; }; "pageLinks": { "alias": "pageLinks"; "required": false; "isSignal": true; }; "showFirstLastIcon": { "alias": "showFirstLastIcon"; "required": false; "isSignal": true; }; "alwaysShowPaginator": { "alias": "alwaysShowPaginator"; "required": false; "isSignal": true; }; "globalFilter": { "alias": "globalFilter"; "required": false; "isSignal": true; }; "globalFilterFields": { "alias": "globalFilterFields"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "filterDelay": { "alias": "filterDelay"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "lazyLoadOnInit": { "alias": "lazyLoadOnInit"; "required": false; "isSignal": true; }; "rowExpandable": { "alias": "rowExpandable"; "required": false; "isSignal": true; }; "expandedRowKeys": { "alias": "expandedRowKeys"; "required": false; "isSignal": true; }; "expandMode": { "alias": "expandMode"; "required": false; "isSignal": true; }; "treeField": { "alias": "treeField"; "required": false; "isSignal": true; }; "parentKey": { "alias": "parentKey"; "required": false; "isSignal": true; }; "treeColumn": { "alias": "treeColumn"; "required": false; "isSignal": true; }; "indent": { "alias": "indent"; "required": false; "isSignal": true; }; "expandedNodeKeys": { "alias": "expandedNodeKeys"; "required": false; "isSignal": true; }; "lazyChildren": { "alias": "lazyChildren"; "required": false; "isSignal": true; }; "hasChildren": { "alias": "hasChildren"; "required": false; "isSignal": true; }; "showTreeLines": { "alias": "showTreeLines"; "required": false; "isSignal": true; }; "treeIcon": { "alias": "treeIcon"; "required": false; "isSignal": true; }; "keepAncestors": { "alias": "keepAncestors"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "expandedGroups": { "alias": "expandedGroups"; "required": false; "isSignal": true; }; "aggregates": { "alias": "aggregates"; "required": false; "isSignal": true; }; "showGrandTotal": { "alias": "showGrandTotal"; "required": false; "isSignal": true; }; "grandTotalLabel": { "alias": "grandTotalLabel"; "required": false; "isSignal": true; }; "groupSort": { "alias": "groupSort"; "required": false; "isSignal": true; }; "groupLabel": { "alias": "groupLabel"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "stackAt": { "alias": "stackAt"; "required": false; "isSignal": true; }; "priorityBreakpoints": { "alias": "priorityBreakpoints"; "required": false; "isSignal": true; }; "showHiddenInExpansion": { "alias": "showHiddenInExpansion"; "required": false; "isSignal": true; }; "stickyFirstColumn": { "alias": "stickyFirstColumn"; "required": false; "isSignal": true; }; "stickyActions": { "alias": "stickyActions"; "required": false; "isSignal": true; }; "reorderableColumns": { "alias": "reorderableColumns"; "required": false; "isSignal": true; }; "columnOrder": { "alias": "columnOrder"; "required": false; "isSignal": true; }; "headerGroups": { "alias": "headerGroups"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualRowHeight": { "alias": "virtualRowHeight"; "required": false; "isSignal": true; }; "virtualBuffer": { "alias": "virtualBuffer"; "required": false; "isSignal": true; }; "editMode": { "alias": "editMode"; "required": false; "isSignal": true; }; "editOnClick": { "alias": "editOnClick"; "required": false; "isSignal": true; }; "commitOnBlur": { "alias": "commitOnBlur"; "required": false; "isSignal": true; }; "mutate": { "alias": "mutate"; "required": false; "isSignal": true; }; "showEditIcon": { "alias": "showEditIcon"; "required": false; "isSignal": true; }; "showRowEditButton": { "alias": "showRowEditButton"; "required": false; "isSignal": true; }; "rowEditDialogHeader": { "alias": "rowEditDialogHeader"; "required": false; "isSignal": true; }; "rowEditDialogSize": { "alias": "rowEditDialogSize"; "required": false; "isSignal": true; }; "rowEditDialogCols": { "alias": "rowEditDialogCols"; "required": false; "isSignal": true; }; "columnMenu": { "alias": "columnMenu"; "required": false; "isSignal": true; }; "columnMenuItems": { "alias": "columnMenuItems"; "required": false; "isSignal": true; }; "columnMenuExtra": { "alias": "columnMenuExtra"; "required": false; "isSignal": true; }; "pinnedColumns": { "alias": "pinnedColumns"; "required": false; "isSignal": true; }; "showFilterRow": { "alias": "showFilterRow"; "required": false; "isSignal": true; }; "showGroupZone": { "alias": "showGroupZone"; "required": false; "isSignal": true; }; "groupZoneLabel": { "alias": "groupZoneLabel"; "required": false; "isSignal": true; }; "hideGroupedColumns": { "alias": "hideGroupedColumns"; "required": false; "isSignal": true; }; "showRowNumber": { "alias": "showRowNumber"; "required": false; "isSignal": true; }; "reorderableRows": { "alias": "reorderableRows"; "required": false; "isSignal": true; }; "rowDragDisabled": { "alias": "rowDragDisabled"; "required": false; "isSignal": true; }; "showRowCount": { "alias": "showRowCount"; "required": false; "isSignal": true; }; "rowCountLabel": { "alias": "rowCountLabel"; "required": false; "isSignal": true; }; "colonnes": { "alias": "colonnes"; "required": false; "isSignal": true; }; }, { "dense": "denseChange"; "selection": "selectionChange"; "rowSelect": "rowSelect"; "rowUnselect": "rowUnselect"; "rowClick": "rowClick"; "rowDblClick": "rowDblClick"; "sortField": "sortFieldChange"; "sortOrder": "sortOrderChange"; "multiSortMeta": "multiSortMetaChange"; "sortChange": "sortChange"; "first": "firstChange"; "rows": "rowsChange"; "pageChange": "pageChange"; "globalFilter": "globalFilterChange"; "filters": "filtersChange"; "filterChange": "filterChange"; "lazyLoad": "lazyLoad"; "expandedRowKeys": "expandedRowKeysChange"; "rowExpand": "rowExpand"; "rowCollapse": "rowCollapse"; "expandedNodeKeys": "expandedNodeKeysChange"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; "groupBy": "groupByChange"; "expandedGroups": "expandedGroupsChange"; "aggregates": "aggregatesChange"; "columnResize": "columnResize"; "columnToggled": "columnToggled"; "columnOrder": "columnOrderChange"; "columnReorder": "columnReorder"; "editInit": "editInit"; "editComplete": "editComplete"; "editCancel": "editCancel"; "cellChange": "cellChange"; "rowEditInit": "rowEditInit"; "rowEditSave": "rowEditSave"; "rowEditCancel": "rowEditCancel"; "columnMenuAction": "columnMenuAction"; "pinnedColumns": "pinnedColumnsChange"; "columnPin": "columnPin"; "rowReorder": "rowReorder"; }, ["columnsProjetees", "expansionTpl", "rowActionsTpl", "emptyTpl", "footerTpl", "captionTpl", "groupHeaderTpl", "groupFooterTpl", "cardTpl", "rowCountTpl"], never, true, never>;
|
|
2719
2889
|
}
|
|
2720
2890
|
|
|
2721
2891
|
/**
|
|
@@ -2726,6 +2896,9 @@ declare abstract class CadTableBase<T> {
|
|
|
2726
2896
|
* </cad-table>
|
|
2727
2897
|
* UN composant : plat, ARBRE (`treeField`/`parentKey`), GROUPEMENT (`groupBy`) — moteur CadTreeAdapter ; responsive scroll|priority|stack ; colonnes figées,
|
|
2728
2898
|
* réordonnables (`columnOrder`), virtual scroll, édition inline cell|row. Tri/filtre/pagination locaux, ou tout délégué en `lazy`.
|
|
2899
|
+
* @atelier icone=table
|
|
2900
|
+
* @atelier-exemple colonnes [{"field":"nom","header":"Nom"},{"field":"etat","header":"État"},{"field":"controle","header":"Dernier contrôle"}]
|
|
2901
|
+
* @atelier-exemple value [{"nom":"Pont de Sèvres","etat":"Bon","controle":"12/03/2026"},{"nom":"Viaduc de Meudon","etat":"À surveiller","controle":"28/05/2026"},{"nom":"Passerelle Rive Sud","etat":"Bon","controle":"02/07/2026"},{"nom":"Tunnel des Acacias","etat":"Dégradé","controle":"19/08/2026"}]
|
|
2729
2902
|
*/
|
|
2730
2903
|
declare class CadTableComponent<T = Record<string, unknown>> extends CadTableBase<T> {
|
|
2731
2904
|
private readonly host;
|
|
@@ -2994,6 +3167,11 @@ interface CadTreeNodeEvent<T> {
|
|
|
2994
3167
|
* </cad-tree>
|
|
2995
3168
|
* Arbre sans colonnes ; même moteur (CadTreeAdapter) que le mode arbre de cad-table. Données imbriquées (`treeField`) ou plates (`parentKey`+`dataKey`).
|
|
2996
3169
|
* Clavier : ↑/↓ (nœud suivant/précédent), → déplie / va au 1er enfant, ← replie / remonte au parent, Home/End, Entrée = sélection, Espace = case, * = déplie la fratrie.
|
|
3170
|
+
* @atelier icone=folder-tree
|
|
3171
|
+
* @atelier-exemple value [{"id":1,"label":"Infrastructures"},{"id":2,"label":"Pont de Sèvres","parent":1},{"id":3,"label":"Viaduc de Meudon","parent":1},{"id":4,"label":"Équipements"},{"id":5,"label":"Éclairage public","parent":4},{"id":6,"label":"Signalisation","parent":4}]
|
|
3172
|
+
* @atelier-exemple parentKey "parent"
|
|
3173
|
+
* @atelier-exemple dataKey "id"
|
|
3174
|
+
* @atelier-exemple labelField "label"
|
|
2997
3175
|
*/
|
|
2998
3176
|
declare class CadTreeComponent<T = Record<string, unknown>> {
|
|
2999
3177
|
private readonly host;
|
|
@@ -3123,6 +3301,7 @@ interface FilterDraft {
|
|
|
3123
3301
|
* </div>
|
|
3124
3302
|
* ou dans `<cad-split ratio="1fr auto">` / `<cad-sidebar>` de la couche layout.
|
|
3125
3303
|
* Sous `md` (fenêtre) le panneau devient un overlay à droite, fermé par défaut.
|
|
3304
|
+
* @atelier icone=table-properties
|
|
3126
3305
|
*/
|
|
3127
3306
|
declare class CadTablePanelComponent<T = unknown> {
|
|
3128
3307
|
private readonly bp;
|
|
@@ -3291,6 +3470,8 @@ type CadDataviewLayout = 'list' | 'grid';
|
|
|
3291
3470
|
* <ng-template cadDataviewGrid let-p>…carte…</ng-template>
|
|
3292
3471
|
* </cad-dataview>
|
|
3293
3472
|
* Remplace p-dataView : liste ou grille de templates, tri/filtre/pagination locaux, squelettes en `loading`.
|
|
3473
|
+
* @atelier icone=layout-list
|
|
3474
|
+
* @atelier-exemple value [{"label":"Pont de Sèvres","etat":"Bon"},{"label":"Viaduc de Meudon","etat":"À surveiller"},{"label":"Passerelle Rive Sud","etat":"Bon"}]
|
|
3294
3475
|
*/
|
|
3295
3476
|
declare class CadDataviewComponent<T = unknown> {
|
|
3296
3477
|
readonly value: _angular_core.InputSignal<T[]>;
|
|
@@ -3332,6 +3513,7 @@ declare class CadDataviewComponent<T = unknown> {
|
|
|
3332
3513
|
* <cad-treeselect [(value)]="v" [options]="arbre" treeField="children" labelField="name" dataKey="id" selectionMode="checkbox" filter clearable/>
|
|
3333
3514
|
* CVA : valeur = nœud(s) (objets) ; `optionValue` (chemin) pour stocker un identifiant. Panneau CDK avec un cad-tree.
|
|
3334
3515
|
* single → ferme à la sélection ; multiple/checkbox → chips ou « n sélectionnés » (`display`). Events changed/opened/closed/nodeExpand.
|
|
3516
|
+
* @atelier icone=folder-tree largeur=3 hauteur=1
|
|
3335
3517
|
*/
|
|
3336
3518
|
declare class CadTreeselectComponent<T = unknown> extends CadValueAccessor<T | T[] | unknown> {
|
|
3337
3519
|
readonly options: _angular_core.InputSignal<T[]>;
|
|
@@ -3394,6 +3576,7 @@ declare class CadTreeselectComponent<T = unknown> extends CadValueAccessor<T | T
|
|
|
3394
3576
|
/**
|
|
3395
3577
|
* <cad-cascade-select [(value)]="commune" [options]="regions" optionLabel="nom" optionValue="code" optionGroupLabel="nom" optionGroupChildren="items" showPath/>
|
|
3396
3578
|
* CVA valeur FEUILLE. Panneau à colonnes successives (survol/clic ouvre le niveau suivant, ← → ↑ ↓, Entrée choisit). Events changed/opened/closed/groupChange.
|
|
3579
|
+
* @atelier icone=corner-down-right largeur=3 hauteur=1
|
|
3397
3580
|
*/
|
|
3398
3581
|
declare class CadCascadeSelectComponent<T = unknown, V = unknown> extends CadValueAccessor<V> {
|
|
3399
3582
|
readonly options: _angular_core.InputSignal<T[]>;
|
|
@@ -3450,6 +3633,8 @@ type CadComboSource<T> = T[] | ((query: string) => T[] | Promise<T[]> | Observab
|
|
|
3450
3633
|
* <cad-combo [(value)]="ville" [suggestions]="search" optionLabel="nom" [minLength]="2" [delay]="250" dropdown forceSelection placeholder="Commune…"/>
|
|
3451
3634
|
* Autocomplete (remplace p-autocomplete et le cad-combo du studio). CVA string (texte libre) ou objet (`forceSelection`), `multiple` = chips.
|
|
3452
3635
|
* `suggestions` = tableau (filtré localement) ou fonction (query) → tableau | Promise | Observable. Template `cadSelectItem`. Clavier ↑↓ Entrée Échap.
|
|
3636
|
+
* @atelier icone=list-filter largeur=3 hauteur=1
|
|
3637
|
+
* @atelier-exemple suggestions [{"label":"Béton armé"},{"label":"Béton précontraint"},{"label":"Acier"},{"label":"Bois lamellé"}]
|
|
3453
3638
|
*/
|
|
3454
3639
|
declare class CadComboComponent<T = unknown> extends CadValueAccessor<unknown> {
|
|
3455
3640
|
readonly suggestions: _angular_core.InputSignal<CadComboSource<T>>;
|
|
@@ -3561,6 +3746,7 @@ interface DayCell {
|
|
|
3561
3746
|
* CVA<CadDateValue>. `dataType='string'` (défaut, compat studio/Postgres) → ISO local
|
|
3562
3747
|
* ("yyyy-MM-dd" / "yyyy-MM-ddTHH:mm" / "HH:mm" / "yyyy-MM" / "yyyy") ; `dataType='date'` → Date.
|
|
3563
3748
|
* `selectionMode='range'` → [debut, fin] ; 'multiple' → tableau.
|
|
3749
|
+
* @atelier icone=calendar-days largeur=3 hauteur=1
|
|
3564
3750
|
*/
|
|
3565
3751
|
declare class CadDatepickerComponent extends CadValueAccessor<CadDateValue> {
|
|
3566
3752
|
private readonly host;
|
|
@@ -3884,6 +4070,7 @@ declare abstract class CadOverlayBase implements OnDestroy {
|
|
|
3884
4070
|
* </cad-dialog>
|
|
3885
4071
|
* Remplace p-dialog. Chrome partagé (CadDialogContainerComponent), focus trap, Escape/backdrop configurables.
|
|
3886
4072
|
* Mobile : plein écran par défaut (`mobileFullscreen`), ou feuille basse (`mobileSheet`).
|
|
4073
|
+
* @atelier icone=message-square
|
|
3887
4074
|
*/
|
|
3888
4075
|
declare class CadDialogComponent extends CadOverlayBase {
|
|
3889
4076
|
readonly width: _angular_core.InputSignal<string | undefined>;
|
|
@@ -3911,6 +4098,7 @@ declare class CadDialogComponent extends CadOverlayBase {
|
|
|
3911
4098
|
* </cad-drawer>
|
|
3912
4099
|
* Remplace p-drawer. Même chrome/slots que cad-dialog (cadDialogHeader / cadDialogFooter), glissement 180 ms.
|
|
3913
4100
|
* Mobile : `mobileSize` ('full' par défaut = pleine largeur / hauteur).
|
|
4101
|
+
* @atelier icone=panel-right
|
|
3914
4102
|
*/
|
|
3915
4103
|
declare class CadDrawerComponent extends CadOverlayBase {
|
|
3916
4104
|
readonly position: _angular_core.InputSignal<CadDrawerPosition>;
|
|
@@ -3983,6 +4171,7 @@ declare class CadConfirmService {
|
|
|
3983
4171
|
/**
|
|
3984
4172
|
* <cad-confirm-dialog key="…"/> — wrapper de migration (PrimeNG exigeait un p-confirmDialog dans le template).
|
|
3985
4173
|
* cadriciel-ui n'en a PAS besoin (CadConfirmService rend lui-même) : ce composant ne fait rien et peut être retiré.
|
|
4174
|
+
* @atelier icone=help-circle
|
|
3986
4175
|
*/
|
|
3987
4176
|
declare class CadConfirmDialogComponent {
|
|
3988
4177
|
readonly key: _angular_core.InputSignal<string>;
|
|
@@ -4046,6 +4235,7 @@ declare class CadTooltipDirective implements OnDestroy {
|
|
|
4046
4235
|
* <button (click)="p.toggle($event)">…</button>
|
|
4047
4236
|
* Panneau flottant ancré sur une cible passée à `open(target)`. Base du futur menu contextuel.
|
|
4048
4237
|
* Mobile : `mobile="sheet"` → sous le seuil mobile le contenu s'ouvre en feuille basse (défaut 'popover' = inchangé).
|
|
4238
|
+
* @atelier icone=message-circle
|
|
4049
4239
|
*/
|
|
4050
4240
|
declare class CadPopoverComponent implements OnDestroy {
|
|
4051
4241
|
private readonly overlay;
|
|
@@ -4161,6 +4351,7 @@ interface ToastItem {
|
|
|
4161
4351
|
/**
|
|
4162
4352
|
* <cad-toast position="top-right" [life]="4000" [maxVisible]="5" [preventDuplicates]="true" [showProgress]="true" />
|
|
4163
4353
|
* Conteneur des toasts d'un `key` (ou sans clé). Position fixe hors flux, pause au survol, aria-live.
|
|
4354
|
+
* @atelier icone=bell
|
|
4164
4355
|
*/
|
|
4165
4356
|
declare class CadToastComponent {
|
|
4166
4357
|
private readonly svc;
|
|
@@ -4196,6 +4387,7 @@ declare class CadToastComponent {
|
|
|
4196
4387
|
/**
|
|
4197
4388
|
* <cad-message severity="warning" [closable]="true">Le certificat expire dans 6 jours.</cad-message>
|
|
4198
4389
|
* Message inline (remplace p-message). `text` ou contenu projeté ; `icon` (nom cad-icon, '' = sans icône) ; variant soft|outline ; size sm|md.
|
|
4390
|
+
* @atelier icone=info largeur=6 hauteur=1 pose-text="Message d'information"
|
|
4199
4391
|
*/
|
|
4200
4392
|
declare class CadMessageComponent {
|
|
4201
4393
|
readonly severity: _angular_core.InputSignal<"secondary" | "success" | "warning" | "danger" | "info">;
|
|
@@ -4218,8 +4410,15 @@ declare class CadMessageComponent {
|
|
|
4218
4410
|
/**
|
|
4219
4411
|
* <cad-avatar [src]="url" text="SZ" icon="user" size="sm|md|lg" shape="circle|square" [color]="'#…'" />
|
|
4220
4412
|
* Sans `color`, la teinte est dérivée du texte (hash → hue) : stable pour un même utilisateur.
|
|
4413
|
+
* @atelier ajustement=naturel icone=user-round largeur=1 hauteur=1 pose-text=AB
|
|
4221
4414
|
*/
|
|
4222
4415
|
declare class CadAvatarComponent {
|
|
4416
|
+
/**
|
|
4417
|
+
* Son élément, exposé comme `cad-button` le fait déjà : le groupe marque le
|
|
4418
|
+
* débordement (`.is-overflow`) sur les éléments, et une requête de contenu ne les
|
|
4419
|
+
* rapporte pas pour un avatar POSÉ hors gabarit.
|
|
4420
|
+
*/
|
|
4421
|
+
readonly el: ElementRef<HTMLElement>;
|
|
4223
4422
|
readonly src: _angular_core.InputSignal<string | null | undefined>;
|
|
4224
4423
|
readonly text: _angular_core.InputSignal<string>;
|
|
4225
4424
|
readonly icon: _angular_core.InputSignal<string>;
|
|
@@ -4239,6 +4438,7 @@ declare class CadAvatarComponent {
|
|
|
4239
4438
|
/**
|
|
4240
4439
|
* <cad-chip label="szu" icon="user" [image]="url" avatarText="SZ" removable [selected] [disabled] size="sm|md" severity="primary" (removed) (clicked)/>
|
|
4241
4440
|
* Backspace/Suppr sur un chip focalisé → `removed`. `clickable` rend le chip actionnable (role=button).
|
|
4441
|
+
* @atelier ajustement=naturel icone=tags largeur=2 hauteur=1 pose-label=Élément
|
|
4242
4442
|
*/
|
|
4243
4443
|
declare class CadChipComponent {
|
|
4244
4444
|
readonly label: _angular_core.InputSignal<string>;
|
|
@@ -4262,7 +4462,10 @@ declare class CadChipComponent {
|
|
|
4262
4462
|
}
|
|
4263
4463
|
|
|
4264
4464
|
type CadTagSeverity = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';
|
|
4265
|
-
/**
|
|
4465
|
+
/**
|
|
4466
|
+
* <cad-tag severity="success" dot value="En ligne" /> — statut compact (fond soft + point).
|
|
4467
|
+
* @atelier ajustement=naturel icone=tag largeur=1 hauteur=1 pose-value=Étiquette
|
|
4468
|
+
*/
|
|
4266
4469
|
declare class CadTagComponent {
|
|
4267
4470
|
readonly value: _angular_core.InputSignal<string>;
|
|
4268
4471
|
readonly severity: _angular_core.InputSignal<CadTagSeverity>;
|
|
@@ -4275,7 +4478,10 @@ declare class CadTagComponent {
|
|
|
4275
4478
|
}
|
|
4276
4479
|
|
|
4277
4480
|
type CadBadgeSeverity = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';
|
|
4278
|
-
/**
|
|
4481
|
+
/**
|
|
4482
|
+
* <cad-badge [value]="3" [max]="99" severity="danger" [dot] size="sm|md" />
|
|
4483
|
+
* @atelier ajustement=naturel icone=badge-check largeur=1 hauteur=1 pose-value=3
|
|
4484
|
+
*/
|
|
4279
4485
|
declare class CadBadgeComponent {
|
|
4280
4486
|
readonly value: _angular_core.InputSignal<string | number | null>;
|
|
4281
4487
|
readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
@@ -4306,7 +4512,10 @@ declare class CadBadgeDirective {
|
|
|
4306
4512
|
}
|
|
4307
4513
|
|
|
4308
4514
|
type CadProgressSeverity = 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
4309
|
-
/**
|
|
4515
|
+
/**
|
|
4516
|
+
* <cad-progress [value]="62" [max]="100" [indeterminate] severity size="sm|md|lg" showValue label="Build" striped />
|
|
4517
|
+
* @atelier icone=percent largeur=4 hauteur=1 pose-value=60
|
|
4518
|
+
*/
|
|
4310
4519
|
declare class CadProgressComponent {
|
|
4311
4520
|
readonly value: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4312
4521
|
readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
@@ -4321,7 +4530,10 @@ declare class CadProgressComponent {
|
|
|
4321
4530
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadProgressComponent, never>;
|
|
4322
4531
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadProgressComponent, "cad-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4323
4532
|
}
|
|
4324
|
-
/**
|
|
4533
|
+
/**
|
|
4534
|
+
* <cad-spinner [size]="24" [strokeWidth]="2.5" severity ariaLabel="Chargement" />
|
|
4535
|
+
* @atelier ajustement=naturel icone=loader-2 largeur=1 hauteur=1
|
|
4536
|
+
*/
|
|
4325
4537
|
declare class CadSpinnerComponent {
|
|
4326
4538
|
readonly size: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4327
4539
|
readonly strokeWidth: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
@@ -4331,7 +4543,10 @@ declare class CadSpinnerComponent {
|
|
|
4331
4543
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadSpinnerComponent, "cad-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4332
4544
|
}
|
|
4333
4545
|
|
|
4334
|
-
/**
|
|
4546
|
+
/**
|
|
4547
|
+
* <cad-skeleton width="70%" height="12px" shape="text|rect|circle" [lines]="3" [animation]="true" />
|
|
4548
|
+
* @atelier icone=loader
|
|
4549
|
+
*/
|
|
4335
4550
|
declare class CadSkeletonComponent {
|
|
4336
4551
|
readonly width: _angular_core.InputSignal<string>;
|
|
4337
4552
|
readonly height: _angular_core.InputSignal<string>;
|
|
@@ -4358,6 +4573,7 @@ declare class CadCardHeaderDirective {
|
|
|
4358
4573
|
* contenu
|
|
4359
4574
|
* <div cadCardFooter>…</div>
|
|
4360
4575
|
* </cad-card>
|
|
4576
|
+
* @atelier icone=layout-template conteneur=flux largeur=6 hauteur=6 rang=2
|
|
4361
4577
|
*/
|
|
4362
4578
|
declare class CadCardComponent {
|
|
4363
4579
|
readonly header: _angular_core.InputSignal<string>;
|
|
@@ -4373,7 +4589,10 @@ declare class CadCardComponent {
|
|
|
4373
4589
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadCardComponent, "cad-card", never, { "header": { "alias": "header"; "required": false; "isSignal": true; }; "subheader": { "alias": "subheader"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "flat": { "alias": "flat"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, {}, ["headerTpl"], ["[cadCardActions]", "*", "[cadCardFooter]"], true, never>;
|
|
4374
4590
|
}
|
|
4375
4591
|
|
|
4376
|
-
/**
|
|
4592
|
+
/**
|
|
4593
|
+
* <cad-divider [vertical] align="left|center|right" [dashed]>texte optionnel</cad-divider>
|
|
4594
|
+
* @atelier icone=minus largeur=12 hauteur=1
|
|
4595
|
+
*/
|
|
4377
4596
|
declare class CadDividerComponent {
|
|
4378
4597
|
readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4379
4598
|
readonly dashed: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -4391,6 +4610,7 @@ declare class CadFieldsetLegendDirective {
|
|
|
4391
4610
|
/**
|
|
4392
4611
|
* <cad-fieldset legend="Options avancées" toggleable [(collapsed)]="c" (toggled)="…">…</cad-fieldset>
|
|
4393
4612
|
* Remplace p-fieldset : légende posée sur la bordure, contenu repliable (animation grid-rows, `inert` fermé).
|
|
4613
|
+
* @atelier icone=square-dashed conteneur=flux largeur=6 hauteur=5
|
|
4394
4614
|
*/
|
|
4395
4615
|
declare class CadFieldsetComponent {
|
|
4396
4616
|
readonly legend: _angular_core.InputSignal<string>;
|
|
@@ -4417,6 +4637,7 @@ declare class CadPanelHeadingDirective {
|
|
|
4417
4637
|
* <div cadPanelFooter>…</div>
|
|
4418
4638
|
* </cad-panel>
|
|
4419
4639
|
* Remplace p-panel : en-tête 42 px fond `--cad-bg-subtle`, repli animé.
|
|
4640
|
+
* @atelier icone=panel-top conteneur=flux largeur=6 hauteur=6 rang=1
|
|
4420
4641
|
*/
|
|
4421
4642
|
declare class CadPanelComponent {
|
|
4422
4643
|
readonly header: _angular_core.InputSignal<string>;
|
|
@@ -4426,6 +4647,14 @@ declare class CadPanelComponent {
|
|
|
4426
4647
|
readonly flat: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4427
4648
|
readonly toggled: _angular_core.OutputEmitterRef<boolean>;
|
|
4428
4649
|
readonly headingTpl: _angular_core.Signal<CadPanelHeadingDirective | undefined>;
|
|
4650
|
+
/**
|
|
4651
|
+
* Un en-tête qui n'a RIEN à montrer ne se dessine pas (SZU 24/08 : un panel nu posé
|
|
4652
|
+
* dans l'atelier arborait une barre vide de 42 px). Masqué en CSS et non par un @if :
|
|
4653
|
+
* un `@if` autour d'un `<ng-content>` ferait retomber la projection dans le corps —
|
|
4654
|
+
* piège payé le 22/08. Limite assumée : des actions `[cadPanelActions]` SANS titre ni
|
|
4655
|
+
* repli restent masquées avec l'en-tête — donner alors un `header`.
|
|
4656
|
+
*/
|
|
4657
|
+
protected readonly sansEntete: _angular_core.Signal<boolean>;
|
|
4429
4658
|
protected readonly id: string;
|
|
4430
4659
|
toggle(): void;
|
|
4431
4660
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadPanelComponent, never>;
|
|
@@ -4435,18 +4664,30 @@ declare class CadPanelComponent {
|
|
|
4435
4664
|
/**
|
|
4436
4665
|
* <cad-avatar-group [max]="3" size="md"><cad-avatar text="SZ"/><cad-avatar text="PA"/>…</cad-avatar-group>
|
|
4437
4666
|
* Avatars empilés (chevauchement, bordure surface) ; au-delà de `max` un avatar « +N » (title = noms masqués).
|
|
4667
|
+
* @atelier ajustement=naturel icone=users largeur=2 hauteur=1 conteneur=direct accepte=cad-avatar
|
|
4438
4668
|
*/
|
|
4439
4669
|
declare class CadAvatarGroupComponent {
|
|
4440
4670
|
readonly max: _angular_core.InputSignalWithTransform<number | null, unknown>;
|
|
4441
4671
|
readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
|
|
4442
4672
|
readonly moreColor: _angular_core.InputSignal<string | null>;
|
|
4673
|
+
private readonly avatarsProjetes;
|
|
4674
|
+
/**
|
|
4675
|
+
* Avatars POSÉS hors gabarit, annoncés par `enregistrerEnfants`
|
|
4676
|
+
* (cf. `atelier/atelier.pieces.ts`).
|
|
4677
|
+
*
|
|
4678
|
+
* Le groupe RENDAIT correctement sans eux — le chevauchement et les bordures sont du
|
|
4679
|
+
* CSS sur les enfants directs. Seul `max` était inerte : le « +N » ne comptait rien et
|
|
4680
|
+
* rien ne passait en débordement. Une panne discrète, donc pire qu'une panne franche.
|
|
4681
|
+
*/
|
|
4682
|
+
private readonly avatarsPoses;
|
|
4443
4683
|
private readonly avatars;
|
|
4444
|
-
|
|
4684
|
+
/** Reçoit la LISTE COMPLÈTE des avatars posés. Le groupe filtre ce qui n'en est pas un. */
|
|
4685
|
+
enregistrerEnfants(instances: unknown[]): void;
|
|
4445
4686
|
readonly hidden: _angular_core.Signal<number>;
|
|
4446
4687
|
readonly hiddenTitle: _angular_core.Signal<string>;
|
|
4447
4688
|
constructor();
|
|
4448
4689
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadAvatarGroupComponent, never>;
|
|
4449
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadAvatarGroupComponent, "cad-avatar-group", never, { "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "moreColor": { "alias": "moreColor"; "required": false; "isSignal": true; }; }, {}, ["
|
|
4690
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadAvatarGroupComponent, "cad-avatar-group", never, { "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "moreColor": { "alias": "moreColor"; "required": false; "isSignal": true; }; }, {}, ["avatarsProjetes"], ["*"], true, never>;
|
|
4450
4691
|
}
|
|
4451
4692
|
|
|
4452
4693
|
interface CadMeterValue {
|
|
@@ -4465,6 +4706,8 @@ declare class CadMeterLabelDirective {
|
|
|
4465
4706
|
/**
|
|
4466
4707
|
* <cad-meter [values]="[{label:'Utilisé', value: 62, severity:'primary'}, {label:'Réservé', value: 18, severity:'warning'}]" [max]="100" unit="Gi" showLabels/>
|
|
4467
4708
|
* Jauge segmentée (remplace p-meterGroup) : segments proportionnels, légende (point + label + valeur/%), horizontal ou vertical.
|
|
4709
|
+
* @atelier icone=gauge
|
|
4710
|
+
* @atelier-exemple values [{"label":"Utilisé","value":62,"severity":"primary"},{"label":"Réservé","value":21,"severity":"warning"}]
|
|
4468
4711
|
*/
|
|
4469
4712
|
declare class CadMeterComponent {
|
|
4470
4713
|
readonly values: _angular_core.InputSignal<CadMeterValue[]>;
|
|
@@ -4518,6 +4761,8 @@ type CadTimelineAlign = 'left' | 'right' | 'alternate' | 'top' | 'bottom';
|
|
|
4518
4761
|
* <ng-template cadTimelineContent let-e let-i="index"><b>{{ e.title }}</b></ng-template>
|
|
4519
4762
|
* </cad-timeline>
|
|
4520
4763
|
* `activeIndex` : les événements d'index ≤ activeIndex sont « passés » (marqueur/connecteur en accent).
|
|
4764
|
+
* @atelier icone=milestone
|
|
4765
|
+
* @atelier-exemple events [{"title":"Mise en service","date":"2019"},{"title":"Première inspection","date":"2022"},{"title":"Réparations","date":"2024"},{"title":"Inspection décennale","date":"2029"}]
|
|
4521
4766
|
*/
|
|
4522
4767
|
declare class CadTimelineComponent<T = unknown> {
|
|
4523
4768
|
readonly events: _angular_core.InputSignal<T[]>;
|
|
@@ -4548,6 +4793,7 @@ interface CadCarouselResponsive {
|
|
|
4548
4793
|
* <ng-template cadCarouselItem let-it let-i="index">…</ng-template>
|
|
4549
4794
|
* </cad-carousel>
|
|
4550
4795
|
* `numVisible` responsive par breakpoints FENÊTRE ("1 sm:2 lg:3") ou `[responsive]="[{breakpoint:768,numVisible:1}]"` (max-width du CONTENEUR).
|
|
4796
|
+
* @atelier icone=images
|
|
4551
4797
|
*/
|
|
4552
4798
|
declare class CadCarouselComponent<T = unknown> {
|
|
4553
4799
|
private readonly bp;
|
|
@@ -4591,6 +4837,7 @@ declare class CadCarouselComponent<T = unknown> {
|
|
|
4591
4837
|
/**
|
|
4592
4838
|
* <cad-image src="…" alt="…" width="240px" height="160px" fit="cover" rounded preview caption="Légende" fallback="/assets/nope.png"/>
|
|
4593
4839
|
* Aperçu plein écran (clic) : zoom ± / molette, rotation, téléchargement, Échap/croix ; squelette pendant le chargement, image de repli sur erreur.
|
|
4840
|
+
* @atelier icone=image
|
|
4594
4841
|
*/
|
|
4595
4842
|
declare class CadImageComponent {
|
|
4596
4843
|
readonly src: _angular_core.InputSignal<string>;
|
|
@@ -4628,6 +4875,7 @@ declare class CadImageComponent {
|
|
|
4628
4875
|
/**
|
|
4629
4876
|
* <cad-scroll-top [threshold]="400" target="window" behavior="smooth"/> — bouton flottant « remonter » (fondu au-delà du seuil).
|
|
4630
4877
|
* `target` = 'window' ou un élément défilant (`[target]="scroller"`).
|
|
4878
|
+
* @atelier icone=arrow-up largeur=1 hauteur=1
|
|
4631
4879
|
*/
|
|
4632
4880
|
declare class CadScrollTopComponent {
|
|
4633
4881
|
readonly target: _angular_core.InputSignal<HTMLElement | "window">;
|
|
@@ -4696,7 +4944,10 @@ declare class CadIfDirective {
|
|
|
4696
4944
|
|
|
4697
4945
|
type Align = 'stretch' | 'start' | 'center' | 'end' | 'baseline';
|
|
4698
4946
|
type Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
4699
|
-
/**
|
|
4947
|
+
/**
|
|
4948
|
+
* Pile verticale : `<cad-stack gap="sm" align="stretch">` — les enfants s'empilent avec un gap uniforme (jamais de marges).
|
|
4949
|
+
* @atelier icone=rows conteneur=flux largeur=4 hauteur=5
|
|
4950
|
+
*/
|
|
4700
4951
|
declare class CadStackComponent {
|
|
4701
4952
|
readonly gap: _angular_core.InputSignal<CadGap>;
|
|
4702
4953
|
readonly align: _angular_core.InputSignal<Align>;
|
|
@@ -4708,7 +4959,10 @@ declare class CadStackComponent {
|
|
|
4708
4959
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadStackComponent, never>;
|
|
4709
4960
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadStackComponent, "cad-stack", never, { "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4710
4961
|
}
|
|
4711
|
-
/**
|
|
4962
|
+
/**
|
|
4963
|
+
* Groupe horizontal qui replie : `<cad-cluster gap="sm" justify="between" align="center">` (boutons, chips, méta).
|
|
4964
|
+
* @atelier icone=boxes conteneur=flux largeur=6 hauteur=3
|
|
4965
|
+
*/
|
|
4712
4966
|
declare class CadClusterComponent {
|
|
4713
4967
|
readonly gap: _angular_core.InputSignal<CadGap>;
|
|
4714
4968
|
readonly align: _angular_core.InputSignal<Align>;
|
|
@@ -4725,6 +4979,15 @@ declare class CadClusterComponent {
|
|
|
4725
4979
|
* Grille responsive : `<cad-grid cols="1 sm:2 lg:4" gap="md">` (breakpoints FENÊTRE, mobile-first)
|
|
4726
4980
|
* ou `<cad-grid min="220px">` (auto-fit : autant de colonnes que le CONTENEUR en accepte — préférer pour les composants).
|
|
4727
4981
|
* Enfant : `<div cadCol="2">` / `cadCol="1 md:2"` = span, `cadCol="full"` = toute la largeur.
|
|
4982
|
+
*
|
|
4983
|
+
* CONTENEUR D'ATELIER en régime `direct`, et non `flux` (27/08) : en flux, l'atelier
|
|
4984
|
+
* envelopperait les enfants dans SA propre grille 12 colonnes, la grille posée n'aurait
|
|
4985
|
+
* plus qu'un seul enfant et son `cols` ne servirait plus à rien — un conteneur qui a
|
|
4986
|
+
* l'air de marcher et ne fait rien. En direct, les enfants sont projetés nus et c'est
|
|
4987
|
+
* bien `cols` / `min` qui les place, ce qu'on vient chercher en posant une grille.
|
|
4988
|
+
* Aucune trappe d'accueil n'est nécessaire ici : `cad-grid` ne fait ni requête de
|
|
4989
|
+
* contenu ni injection depuis ses enfants, il ne les REGARDE pas, il les dispose.
|
|
4990
|
+
* @atelier icone=grid conteneur=direct largeur=12 hauteur=4
|
|
4728
4991
|
*/
|
|
4729
4992
|
declare class CadGridComponent {
|
|
4730
4993
|
readonly cols: _angular_core.InputSignal<string | number>;
|
|
@@ -4748,7 +5011,10 @@ declare class CadColDirective {
|
|
|
4748
5011
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadColDirective, never>;
|
|
4749
5012
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadColDirective, "[cadCol]", never, { "cadCol": { "alias": "cadCol"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4750
5013
|
}
|
|
4751
|
-
/**
|
|
5014
|
+
/**
|
|
5015
|
+
* Deux zones : `<cad-split ratio="1fr auto" gap="md" stackAt="md">` — sous `stackAt`, empilé.
|
|
5016
|
+
* @atelier icone=split-square-horizontal
|
|
5017
|
+
*/
|
|
4752
5018
|
declare class CadSplitComponent {
|
|
4753
5019
|
private readonly bp;
|
|
4754
5020
|
readonly ratio: _angular_core.InputSignal<string>;
|
|
@@ -4771,6 +5037,7 @@ declare class CadSidebarPanelDirective {
|
|
|
4771
5037
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadSidebarPanelDirective, never>;
|
|
4772
5038
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadSidebarPanelDirective, "[cadSidebarPanel]", never, {}, {}, never, never, true, never>;
|
|
4773
5039
|
}
|
|
5040
|
+
/** @atelier icone=panel-left */
|
|
4774
5041
|
declare class CadSidebarComponent {
|
|
4775
5042
|
private readonly bp;
|
|
4776
5043
|
readonly side: _angular_core.InputSignal<"left" | "right">;
|
|
@@ -4785,7 +5052,10 @@ declare class CadSidebarComponent {
|
|
|
4785
5052
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadSidebarComponent, never>;
|
|
4786
5053
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadSidebarComponent, "cad-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "contentMin": { "alias": "contentMin"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "collapseAt": { "alias": "collapseAt"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4787
5054
|
}
|
|
4788
|
-
/**
|
|
5055
|
+
/**
|
|
5056
|
+
* Centre horizontalement avec largeur max : `<cad-center maxWidth="60ch" [gutters]="'16px'" andText>`
|
|
5057
|
+
* @atelier icone=crosshair
|
|
5058
|
+
*/
|
|
4789
5059
|
declare class CadCenterComponent {
|
|
4790
5060
|
readonly maxWidth: _angular_core.InputSignal<string>;
|
|
4791
5061
|
readonly gutters: _angular_core.InputSignal<string>;
|
|
@@ -4794,7 +5064,10 @@ declare class CadCenterComponent {
|
|
|
4794
5064
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadCenterComponent, never>;
|
|
4795
5065
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadCenterComponent, "cad-center", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "gutters": { "alias": "gutters"; "required": false; "isSignal": true; }; "andText": { "alias": "andText"; "required": false; "isSignal": true; }; "intrinsic": { "alias": "intrinsic"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4796
5066
|
}
|
|
4797
|
-
/**
|
|
5067
|
+
/**
|
|
5068
|
+
* Conteneur de page : `<cad-container size="lg" padding="md">` — largeur max par taille (sm 640, md 768, lg 1024, xl 1280, 2xl 1536, full = --cad-container-max), centré.
|
|
5069
|
+
* @atelier icone=box conteneur=flux largeur=6 hauteur=5
|
|
5070
|
+
*/
|
|
4798
5071
|
declare class CadContainerComponent {
|
|
4799
5072
|
readonly size: _angular_core.InputSignal<"sm" | "md" | "lg" | "xl" | "2xl" | "full">;
|
|
4800
5073
|
readonly padding: _angular_core.InputSignal<CadGap>;
|
|
@@ -4803,7 +5076,15 @@ declare class CadContainerComponent {
|
|
|
4803
5076
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadContainerComponent, never>;
|
|
4804
5077
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadContainerComponent, "cad-container", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4805
5078
|
}
|
|
4806
|
-
/**
|
|
5079
|
+
/**
|
|
5080
|
+
* Espace flexible (pousse ce qui suit) ou fixe : `<cad-spacer/>` · `<cad-spacer size="lg"/>`
|
|
5081
|
+
*
|
|
5082
|
+
* `surface=aucune` : il occupe sa place et ne dessine RIEN. Posé dans une maquette, il
|
|
5083
|
+
* fait donc exactement son travail en restant invisible — indistinguable d'un composant
|
|
5084
|
+
* qui n'aurait pas été posé (SZU 27/08). L'atelier s'en sert pour le MATÉRIALISER le
|
|
5085
|
+
* temps de la conception ; le rendu, lui, n'en sait rien.
|
|
5086
|
+
* @atelier icone=move-horizontal surface=aucune
|
|
5087
|
+
*/
|
|
4807
5088
|
declare class CadSpacerComponent {
|
|
4808
5089
|
readonly size: _angular_core.InputSignal<"" | CadGap>;
|
|
4809
5090
|
protected readonly cadGap: typeof cadGap;
|
|
@@ -4811,7 +5092,10 @@ declare class CadSpacerComponent {
|
|
|
4811
5092
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadSpacerComponent, "cad-spacer", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4812
5093
|
}
|
|
4813
5094
|
|
|
4814
|
-
/**
|
|
5095
|
+
/**
|
|
5096
|
+
* Panneau d'un splitter : `<cad-splitter-panel [size]="30" [minSize]="10">…</cad-splitter-panel>` (size en %).
|
|
5097
|
+
* @atelier icone=square conteneur=flux dans=cad-splitter
|
|
5098
|
+
*/
|
|
4815
5099
|
declare class CadSplitterPanelComponent {
|
|
4816
5100
|
readonly size: _angular_core.InputSignalWithTransform<number | null, unknown>;
|
|
4817
5101
|
readonly minSize: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
@@ -4823,6 +5107,7 @@ declare class CadSplitterPanelComponent {
|
|
|
4823
5107
|
* <cad-splitter-panel>…</cad-splitter-panel><cad-splitter-panel>…</cad-splitter-panel>
|
|
4824
5108
|
* </cad-splitter>
|
|
4825
5109
|
* Gouttière glissable (pointer), double-clic = tailles initiales, clavier ←→/↑↓ (±2 %), `role=separator`, persistance localStorage via `stateKey`, imbriquable.
|
|
5110
|
+
* @atelier icone=columns conteneur=direct largeur=12 hauteur=8
|
|
4826
5111
|
*/
|
|
4827
5112
|
declare class CadSplitterComponent {
|
|
4828
5113
|
private readonly host;
|
|
@@ -4833,7 +5118,22 @@ declare class CadSplitterComponent {
|
|
|
4833
5118
|
readonly stateKey: _angular_core.InputSignal<string>;
|
|
4834
5119
|
readonly resizeStart: _angular_core.OutputEmitterRef<number[]>;
|
|
4835
5120
|
readonly resizeEnd: _angular_core.OutputEmitterRef<number[]>;
|
|
4836
|
-
|
|
5121
|
+
/** Panneaux déclarés dans un GABARIT — la voie normale. */
|
|
5122
|
+
private readonly panelsProjetes;
|
|
5123
|
+
/**
|
|
5124
|
+
* Panneaux POSÉS, créés hors gabarit et annoncés par `enregistrerEnfants`
|
|
5125
|
+
* (cf. `atelier/atelier.pieces.ts`).
|
|
5126
|
+
*
|
|
5127
|
+
* Sans eux, `panels()` reste vide pour un splitter posé : aucune gouttière, aucune
|
|
5128
|
+
* taille calculée, `grid-template-columns` vide — mesuré à `gouttieres=0` le 27/08.
|
|
5129
|
+
* Les panneaux s'affichaient quand même (ils sont projetés), ce qui donnait un
|
|
5130
|
+
* splitter d'apparence correcte mais sans mise en page ni poignée.
|
|
5131
|
+
*/
|
|
5132
|
+
private readonly panelsPoses;
|
|
5133
|
+
/** Tous les panneaux : projetés d'abord, posés ensuite — l'ordre fait les colonnes. */
|
|
5134
|
+
readonly panels: _angular_core.Signal<CadSplitterPanelComponent[]>;
|
|
5135
|
+
/** Reçoit la LISTE COMPLÈTE des panneaux posés. L'hôte filtre ce qui n'en est pas un. */
|
|
5136
|
+
enregistrerEnfants(instances: unknown[]): void;
|
|
4837
5137
|
readonly sizes: _angular_core.WritableSignal<number[]>;
|
|
4838
5138
|
readonly gutters: _angular_core.Signal<number[]>;
|
|
4839
5139
|
readonly mins: _angular_core.Signal<number[]>;
|
|
@@ -4850,7 +5150,7 @@ declare class CadSplitterComponent {
|
|
|
4850
5150
|
protected onDown(e: PointerEvent, g: number): void;
|
|
4851
5151
|
protected onKey(e: KeyboardEvent, g: number): void;
|
|
4852
5152
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadSplitterComponent, never>;
|
|
4853
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadSplitterComponent, "cad-splitter", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "panelSizes": { "alias": "panelSizes"; "required": false; "isSignal": true; }; "minSizes": { "alias": "minSizes"; "required": false; "isSignal": true; }; "gutterSize": { "alias": "gutterSize"; "required": false; "isSignal": true; }; "stateKey": { "alias": "stateKey"; "required": false; "isSignal": true; }; }, { "resizeStart": "resizeStart"; "resizeEnd": "resizeEnd"; }, ["
|
|
5153
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadSplitterComponent, "cad-splitter", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "panelSizes": { "alias": "panelSizes"; "required": false; "isSignal": true; }; "minSizes": { "alias": "minSizes"; "required": false; "isSignal": true; }; "gutterSize": { "alias": "gutterSize"; "required": false; "isSignal": true; }; "stateKey": { "alias": "stateKey"; "required": false; "isSignal": true; }; }, { "resizeStart": "resizeStart"; "resizeEnd": "resizeEnd"; }, ["panelsProjetes"], ["*"], true, never>;
|
|
4854
5154
|
}
|
|
4855
5155
|
|
|
4856
5156
|
/**
|
|
@@ -4942,6 +5242,7 @@ declare const CAD_SHELL: InjectionToken<CadShellApi>;
|
|
|
4942
5242
|
* En application autonome (ajoutée à l'écran d'accueil), la page ne passe pas sous la bande
|
|
4943
5243
|
* d'état : `viewport-fit=cover` n'y suffit pas et c'est `<meta name="theme-color">`, tenu à
|
|
4944
5244
|
* jour avec le thème, qui donne la continuité.
|
|
5245
|
+
* @atelier icone=layout-dashboard
|
|
4945
5246
|
*/
|
|
4946
5247
|
declare class CadAppShellComponent implements CadShellApi {
|
|
4947
5248
|
private readonly bp;
|
|
@@ -5201,6 +5502,7 @@ declare const CAD_MAP_CHILD: InjectionToken<CadMapChild>;
|
|
|
5201
5502
|
* <div cadMapTopLeft>…</div> ← coins (recherche, légende, chrome…)
|
|
5202
5503
|
* </cad-map>
|
|
5203
5504
|
* MapLibre est chargé à la demande ; le fond change sans perdre les couches ; `followTheme` bascule clair/sombre avec `.theme-dark`.
|
|
5505
|
+
* @atelier icone=map conteneur=direct
|
|
5204
5506
|
*/
|
|
5205
5507
|
declare class CadMapComponent {
|
|
5206
5508
|
private readonly registry;
|
|
@@ -5272,6 +5574,20 @@ declare class CadMapComponent {
|
|
|
5272
5574
|
readonly allChildren: _angular_core.Signal<readonly CadMapChild[]>;
|
|
5273
5575
|
registerChild(k: CadMapChild): void;
|
|
5274
5576
|
unregisterChild(k: CadMapChild): void;
|
|
5577
|
+
/**
|
|
5578
|
+
* Contrat d'accueil des pièces POSÉES (cf. `atelier/atelier.pieces.ts`).
|
|
5579
|
+
*
|
|
5580
|
+
* ⚠️ CORRIGE UN MENSONGE LIVRÉ LE 24/08. `cad-map` était annoté conteneur et ses onze
|
|
5581
|
+
* pièces déclaraient `dans=cad-map`, mais AUCUNE couche posée ne s'est jamais
|
|
5582
|
+
* enregistrée : la carte n'exposait que `registerChild`, que les poseurs n'appellent
|
|
5583
|
+
* pas, et `cad-map-layer` s'injecte la carte en `optional` — donc `null` sans chaîne
|
|
5584
|
+
* d'injecteurs, donc pas d'auto-enregistrement, et pas la moindre erreur pour le dire.
|
|
5585
|
+
* Deux vocabulaires pour un besoin : c'est la divergence qu'on paie ici.
|
|
5586
|
+
*
|
|
5587
|
+
* Liste COMPLÈTE à chaque appel : le poseur reconstruit ses enfants d'un bloc, et un
|
|
5588
|
+
* contrat incrémental laisserait des couches fantômes sur la carte.
|
|
5589
|
+
*/
|
|
5590
|
+
enregistrerEnfants(instances: unknown[]): void;
|
|
5275
5591
|
/** Événements du chrome intégré (dessin, import). */
|
|
5276
5592
|
readonly drawChange: _angular_core.OutputEmitterRef<object>;
|
|
5277
5593
|
readonly layerImport: _angular_core.OutputEmitterRef<{
|
|
@@ -5373,6 +5689,7 @@ interface CadFeatureEvent {
|
|
|
5373
5689
|
* <cad-map-layer id="oa" label="Ouvrages d'art" type="geojson" [data]="geojson" [style]="{ color: { field:'etat', categories:{…} }, radius: 6 }" cluster [popupTemplate]="tpl" (featureClick)/>
|
|
5374
5690
|
* <cad-map-layer id="ppri" label="PPRI" type="wms" url="https://…/wms" layers="PPRI" [opacity]=".6"/>
|
|
5375
5691
|
* Enfant de <cad-map>, sans rendu : crée/maintient sources et couches MapLibre, réagit aux inputs, survit aux changements de fond.
|
|
5692
|
+
* @atelier icone=layers dans=cad-map
|
|
5376
5693
|
*/
|
|
5377
5694
|
declare class CadMapLayerComponent implements CadMapChild {
|
|
5378
5695
|
private readonly mapCmp;
|
|
@@ -5478,6 +5795,7 @@ declare class CadMapLayerComponent implements CadMapChild {
|
|
|
5478
5795
|
/**
|
|
5479
5796
|
* <cad-map-legend/> (dans un coin de la carte : `<cad-map-legend cadMapBottomRight/>`) — légende auto des couches visibles de la carte parente,
|
|
5480
5797
|
* ou `[layers]="[layerA, layerB]"`, ou `[items]="CadLegendItem[]"` (manuel). Repliable, `title`, `compact`.
|
|
5798
|
+
* @atelier icone=clipboard-list dans=cad-map
|
|
5481
5799
|
*/
|
|
5482
5800
|
declare class CadMapLegendComponent {
|
|
5483
5801
|
private readonly mapCmp;
|
|
@@ -5544,6 +5862,7 @@ declare class CadGeocodingService {
|
|
|
5544
5862
|
/**
|
|
5545
5863
|
* <cad-map-search cadMapTopLeft placeholder="Adresse, commune…" (select)="…"/> — recherche d'adresse (BAN par défaut ou `provider`),
|
|
5546
5864
|
* résultats au fil de la frappe, ↑↓ Entrée Échap, sélection → flyTo + marqueur temporaire sur la carte parente.
|
|
5865
|
+
* @atelier icone=search dans=cad-map
|
|
5547
5866
|
*/
|
|
5548
5867
|
declare class CadMapSearchComponent {
|
|
5549
5868
|
private readonly geo;
|
|
@@ -5592,6 +5911,7 @@ declare class CadMapSearchComponent {
|
|
|
5592
5911
|
* <div cadMapRailBottom>v1.2</div>
|
|
5593
5912
|
* </cad-map-rail>
|
|
5594
5913
|
*/
|
|
5914
|
+
/** @atelier dans=cad-map */
|
|
5595
5915
|
declare class CadMapRailComponent {
|
|
5596
5916
|
private readonly mapCmp;
|
|
5597
5917
|
readonly position: _angular_core.InputSignal<CadMapSide>;
|
|
@@ -5600,6 +5920,7 @@ declare class CadMapRailComponent {
|
|
|
5600
5920
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadMapRailComponent, never>;
|
|
5601
5921
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadMapRailComponent, "cad-map-rail", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[cadMapRailBottom]"], true, never>;
|
|
5602
5922
|
}
|
|
5923
|
+
/** @atelier dans=cad-map */
|
|
5603
5924
|
declare class CadMapRailItemComponent {
|
|
5604
5925
|
readonly mapCmp: CadMapComponent | null;
|
|
5605
5926
|
readonly icon: _angular_core.InputSignal<string>;
|
|
@@ -5619,6 +5940,7 @@ declare class CadMapRailItemComponent {
|
|
|
5619
5940
|
* Panneau accolé au rail : <cad-map-panel id="carto" header="Cartographie" [width]="300" side="left" [(open)]>
|
|
5620
5941
|
* <cad-map-section header="Fonds de carte" expanded><cad-map-basemaps/></cad-map-section>
|
|
5621
5942
|
* </cad-map-panel>
|
|
5943
|
+
* @atelier icone=panel-right dans=cad-map
|
|
5622
5944
|
*/
|
|
5623
5945
|
declare class CadMapPanelComponent {
|
|
5624
5946
|
private readonly mapCmp;
|
|
@@ -5640,6 +5962,7 @@ declare class CadMapPanelComponent {
|
|
|
5640
5962
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadMapPanelComponent, "cad-map-panel", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["[cadMapPanelActions]", "*", "[cadMapPanelFooter]"], true, never>;
|
|
5641
5963
|
}
|
|
5642
5964
|
/** Section repliable d'un panneau : <cad-map-section header="Gares" [expanded]="true" icon="server"> contenu libre </cad-map-section> */
|
|
5965
|
+
/** @atelier dans=cad-map */
|
|
5643
5966
|
declare class CadMapSectionComponent {
|
|
5644
5967
|
readonly header: _angular_core.InputSignal<string>;
|
|
5645
5968
|
readonly icon: _angular_core.InputSignal<string>;
|
|
@@ -5660,6 +5983,7 @@ declare function cadMapLayerOf(map: CadMapComponent | null, id: string): CadMapL
|
|
|
5660
5983
|
/**
|
|
5661
5984
|
* Sélecteur de fonds en vignettes + transparence + overlays :
|
|
5662
5985
|
* <cad-map-basemaps [ids]="['ign-plan','ign-ortho']" [columns]="2" showOpacity showOverlays/>
|
|
5986
|
+
* @atelier icone=globe dans=cad-map
|
|
5663
5987
|
*/
|
|
5664
5988
|
declare class CadMapBasemapsComponent {
|
|
5665
5989
|
protected thumbUrl(b: {
|
|
@@ -5692,6 +6016,7 @@ declare class CadMapBasemapsComponent {
|
|
|
5692
6016
|
* Ligne « couche » : picto dérivé de la symbologie + case de visibilité + label + opacité + zoom.
|
|
5693
6017
|
* <cad-map-layer-toggle layer="ouvrages" showOpacity showLegend zoomTo/>
|
|
5694
6018
|
*/
|
|
6019
|
+
/** @atelier dans=cad-map */
|
|
5695
6020
|
declare class CadMapLayerToggleComponent {
|
|
5696
6021
|
readonly mapCmp: CadMapComponent | null;
|
|
5697
6022
|
readonly layer: _angular_core.InputSignal<string>;
|
|
@@ -5718,7 +6043,10 @@ declare class CadMapLayerToggleComponent {
|
|
|
5718
6043
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadMapLayerToggleComponent, never>;
|
|
5719
6044
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadMapLayerToggleComponent, "cad-map-layer-toggle", never, { "layer": { "alias": "layer"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showOpacity": { "alias": "showOpacity"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "zoomTo": { "alias": "zoomTo"; "required": false; "isSignal": true; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
|
|
5720
6045
|
}
|
|
5721
|
-
/**
|
|
6046
|
+
/**
|
|
6047
|
+
* Groupe de couches avec case parent tri-état : <cad-map-layer-group header="Risques" [layers]="['ppri','argiles']" showOpacity/>
|
|
6048
|
+
* @atelier icone=layers dans=cad-map
|
|
6049
|
+
*/
|
|
5722
6050
|
declare class CadMapLayerGroupComponent {
|
|
5723
6051
|
readonly mapCmp: CadMapComponent | null;
|
|
5724
6052
|
readonly header: _angular_core.InputSignal<string>;
|
|
@@ -5801,6 +6129,7 @@ interface CadMapMenuConfig {
|
|
|
5801
6129
|
/**
|
|
5802
6130
|
* Menu de carte généré depuis une config JSON (rail + panneaux + sections + blocs), posé dans <cad-map> :
|
|
5803
6131
|
* <cad-map-menu [config]="cfg" [templates]="{ meteo: tplMeteo }" (action)="…"/>
|
|
6132
|
+
* @atelier icone=menu dans=cad-map
|
|
5804
6133
|
*/
|
|
5805
6134
|
declare class CadMapMenuComponent {
|
|
5806
6135
|
readonly config: _angular_core.InputSignal<CadMapMenuConfig>;
|
|
@@ -5907,6 +6236,8 @@ declare function cadJsonErrorPos(err: unknown, src: string): {
|
|
|
5907
6236
|
/**
|
|
5908
6237
|
* <cad-json-editor [(value)]="obj" mode="object" height="320px" [validator]="cadValidateGeoJSON" (invalid)="…"/>
|
|
5909
6238
|
* CVA string|object : textarea + numéros de ligne + coloration + validation en direct (JSON puis `validator`) + Formater/Compacter/Copier/Importer/Télécharger.
|
|
6239
|
+
* @atelier icone=braces
|
|
6240
|
+
* @atelier-exemple value {"ouvrage":"Pont de Sèvres","etat":"Bon","inspection":{"date":"2026-03-12","agent":"SZU"},"geometrie":{"lat":48.8264,"lng":2.2275}}
|
|
5910
6241
|
*/
|
|
5911
6242
|
declare class CadJsonEditorComponent extends CadValueAccessor<string | object> {
|
|
5912
6243
|
private readonly san;
|
|
@@ -5952,6 +6283,7 @@ type CadGeoJSON = FeatureCollection | Feature | Geometry;
|
|
|
5952
6283
|
* <cad-map-card [(value)]="geojson" header="Emprise" height="320px" editable showStats/>
|
|
5953
6284
|
* ControlValueAccessor GeoJSON en carte « flip » : recto = carte (couche auto, fit, dessin optionnel), verso = éditeur JSON validé.
|
|
5954
6285
|
* `mode="string"` : la valeur est la chaîne JSON. Utilisable dans <cad-field plain>.
|
|
6286
|
+
* @atelier icone=map-pinned
|
|
5955
6287
|
*/
|
|
5956
6288
|
declare class CadMapCardComponent extends CadValueAccessor<CadGeoJSON | string> {
|
|
5957
6289
|
readonly header: _angular_core.InputSignal<string>;
|
|
@@ -6183,6 +6515,8 @@ declare class CadOrgNodeDirective {
|
|
|
6183
6515
|
* <cad-listbox [(value)]="v" [options]="opts" optionLabel="name" optionValue="id" [multiple] checkbox filter listHeight="240px" selectAll/>
|
|
6184
6516
|
* Liste de sélection toujours visible (remplace p-listbox). CVA<V | V[]>. Clavier ↑↓ Home End PageUp/Down Espace/Entrée, typeahead,
|
|
6185
6517
|
* Shift+clic = plage, Ctrl/⌘+clic (metaKeySelection) = bascule sans désélectionner en multiple.
|
|
6518
|
+
* @atelier icone=list
|
|
6519
|
+
* @atelier-exemple options [{"label":"Ouvrage d'art"},{"label":"Chaussée"},{"label":"Signalisation"},{"label":"Éclairage"}]
|
|
6186
6520
|
*/
|
|
6187
6521
|
declare class CadListboxComponent<T = unknown, V = unknown> extends CadValueAccessor<V | V[]> {
|
|
6188
6522
|
readonly options: _angular_core.InputSignal<T[]>;
|
|
@@ -6257,6 +6591,9 @@ declare class CadListboxComponent<T = unknown, V = unknown> extends CadValueAcce
|
|
|
6257
6591
|
/**
|
|
6258
6592
|
* <cad-orderlist [(value)]="items" optionLabel="name" header="Colonnes" controls="side" dragHandle filter listHeight="260px" (reorder)="…"/>
|
|
6259
6593
|
* Liste réordonnable (drag CDK vertical + boutons ↑ ↓ ⤒ ⤓, sélection multiple Ctrl/Shift). CVA<T[]> : la valeur = NOUVEAU tableau réordonné.
|
|
6594
|
+
* @atelier icone=list-ordered
|
|
6595
|
+
* @atelier-exemple value [{"label":"1. Inspection visuelle"},{"label":"2. Relevé des désordres"},{"label":"3. Essais matériaux"},{"label":"4. Rapport"}]
|
|
6596
|
+
* @atelier-exemple header "Étapes"
|
|
6260
6597
|
*/
|
|
6261
6598
|
declare class CadOrderlistComponent<T = unknown> extends CadValueAccessor<T[]> {
|
|
6262
6599
|
readonly optionLabel: _angular_core.InputSignal<string>;
|
|
@@ -6310,6 +6647,8 @@ type Side = 'source' | 'target';
|
|
|
6310
6647
|
* <cad-picklist [(value)]="selected" [options]="tous" optionLabel="name" sourceHeader="Disponibles" targetHeader="Sélectionnés" filter showTargetControls/>
|
|
6311
6648
|
* Deux listes reliées par des boutons → ← ⇒ ⇐ + drag & drop entre listes (CDK). CVA<T[]> = cible ; source = options − cible.
|
|
6312
6649
|
* Responsive : sous 640 px de large (conteneur), les listes s'empilent et les boutons passent à l'horizontale.
|
|
6650
|
+
* @atelier icone=arrow-right-left
|
|
6651
|
+
* @atelier-exemple options [{"label":"Pont de Sèvres"},{"label":"Viaduc de Meudon"},{"label":"Passerelle Rive Sud"},{"label":"Tunnel des Acacias"}]
|
|
6313
6652
|
*/
|
|
6314
6653
|
declare class CadPicklistComponent<T = unknown> extends CadValueAccessor<T[]> {
|
|
6315
6654
|
private readonly destroyRef;
|
|
@@ -6415,6 +6754,8 @@ interface Flat<T> {
|
|
|
6415
6754
|
* <cad-orgchart [value]="nodes" labelField="name" sublabelField="role" avatarField="initials" collapsible zoomable selectionMode="single" [(selection)]="sel"/>
|
|
6416
6755
|
* Organigramme maison (grille CSS + connecteurs), template de nœud `cadOrgNode`, orientation vertical/horizontal, mode compact (liste indentée) sous 640 px
|
|
6417
6756
|
* ou forcé, zoom molette/± + drag pour panner. Clavier ←→↑↓ (nœuds), Entrée sélectionne, +/− déplie/replie.
|
|
6757
|
+
* @atelier icone=git-fork
|
|
6758
|
+
* @atelier-exemple value [{"data":{"label":"Direction technique"},"expanded":true,"children":[{"data":{"label":"Bureau d'études"}},{"data":{"label":"Travaux"}},{"data":{"label":"Maintenance"}}]}]
|
|
6418
6759
|
*/
|
|
6419
6760
|
declare class CadOrgchartComponent<T = unknown> {
|
|
6420
6761
|
private readonly destroyRef;
|
|
@@ -6529,6 +6870,7 @@ declare function cadFormatSize(b: number): string;
|
|
|
6529
6870
|
* <cad-upload url="/api/upload" multiple accept="image/*,.pdf" [maxFileSize]="5e6" [maxFiles]="5" auto (upload)="…"/>
|
|
6530
6871
|
* Modes : `advanced` (zone de dépôt + liste + boutons), `dropzone` (zone seule, liste), `basic` (un bouton).
|
|
6531
6872
|
* Envoi : `url` (HttpClient — `provideHttpClient()` requis dans l'app) OU `customUpload` + `(uploadHandler)` OU `selectOnly` (l'app lit `files()`).
|
|
6873
|
+
* @atelier icone=upload-cloud
|
|
6532
6874
|
*/
|
|
6533
6875
|
declare class CadUploadComponent {
|
|
6534
6876
|
private readonly http;
|
|
@@ -6622,6 +6964,9 @@ interface CadChartClickEvent {
|
|
|
6622
6964
|
* <cad-chart type="bar" [data]="data" [options]="options" height="280px" (chartClick)="…"/>
|
|
6623
6965
|
* Wrapper Chart.js 4 (chargé à la demande) : thème automatique depuis les tokens (police, grille, tooltip) et re-rendu au changement `.theme-dark`,
|
|
6624
6966
|
* palette par défaut sur les datasets sans couleur, ResizeObserver, `getChart()/update()/toBase64Image()`, canvas `role="img"` + table accessible optionnelle.
|
|
6967
|
+
* @atelier icone=chart-bar
|
|
6968
|
+
* @atelier-exemple type "bar"
|
|
6969
|
+
* @atelier-exemple data {"labels":["Jan","Fév","Mar","Avr","Mai"],"datasets":[{"label":"Relevés","data":[12,19,8,15,11]}]}
|
|
6625
6970
|
*/
|
|
6626
6971
|
declare class CadChartComponent {
|
|
6627
6972
|
private readonly hostEl;
|
|
@@ -7372,6 +7717,103 @@ declare function cadProjeterClavier(kind: CadEditKind, base: CadEditBase, jours:
|
|
|
7372
7717
|
end: Date;
|
|
7373
7718
|
};
|
|
7374
7719
|
|
|
7720
|
+
/**
|
|
7721
|
+
* Mise en page du scheduler — logique PURE, sans DOM, donc testable seule.
|
|
7722
|
+
*
|
|
7723
|
+
* Le scheduler n'a pas de projection à lui : un geste horizontal y est exactement la
|
|
7724
|
+
* projection HORAIRE du calendrier tournée d'un quart de tour (échelle heure), ou la
|
|
7725
|
+
* projection de MOIS sans rangées (échelle jour). On réutilise `cadProjeterEdition` et
|
|
7726
|
+
* `cadProjeterMois` en réinterprétant leur géométrie — une seule logique de placement à
|
|
7727
|
+
* éprouver, pas trois.
|
|
7728
|
+
*
|
|
7729
|
+
* Ce fichier ne porte donc que ce qui est PROPRE au scheduler : l'empilement en voies,
|
|
7730
|
+
* la partition planifié / non planifié, et le découpage d'une barre à la fenêtre.
|
|
7731
|
+
*/
|
|
7732
|
+
|
|
7733
|
+
interface CadLaneSpan {
|
|
7734
|
+
start: Date;
|
|
7735
|
+
end: Date;
|
|
7736
|
+
}
|
|
7737
|
+
/**
|
|
7738
|
+
* Empilement des chevauchements : balayage, première voie libre.
|
|
7739
|
+
*
|
|
7740
|
+
* Les voies sont attribuées DANS L'ORDRE D'ENTRÉE trié par début (puis fin) ; le résultat
|
|
7741
|
+
* est aligné sur l'ordre d'entrée, pas sur l'ordre de balayage — l'appelant garde ses index.
|
|
7742
|
+
* Deux barres qui se touchent bord à bord (end === start) partagent une voie : une réunion
|
|
7743
|
+
* qui finit à 10 h et une qui commence à 10 h ne se chevauchent pas.
|
|
7744
|
+
*/
|
|
7745
|
+
declare function cadPackLanes(items: readonly CadLaneSpan[]): {
|
|
7746
|
+
lanes: number[];
|
|
7747
|
+
count: number;
|
|
7748
|
+
};
|
|
7749
|
+
/**
|
|
7750
|
+
* Partition planifié / non planifié — LA règle du document commun : une tâche que la vue ne
|
|
7751
|
+
* sait pas placer part dans sa zone « non planifié » avec un compteur, jamais dans le silence.
|
|
7752
|
+
* Ici, placer exige un début, une fin ET au moins une affectation (les lignes SONT des
|
|
7753
|
+
* ressources : sans affectation, aucune ligne ne peut l'accueillir).
|
|
7754
|
+
*/
|
|
7755
|
+
declare function cadSchedulerPartition(tasks: readonly CadPlannedTask[]): {
|
|
7756
|
+
posables: CadPlannedTask[];
|
|
7757
|
+
nonPlanifiees: CadPlannedTask[];
|
|
7758
|
+
};
|
|
7759
|
+
interface CadFenetreSpan {
|
|
7760
|
+
start: Date;
|
|
7761
|
+
end: Date;
|
|
7762
|
+
/** La barre continue avant / après la fenêtre — bord en pointillé, jamais coupé en silence. */
|
|
7763
|
+
continueAvant: boolean;
|
|
7764
|
+
continueApres: boolean;
|
|
7765
|
+
}
|
|
7766
|
+
/** Découpe une plage à la fenêtre. `null` si elle est entièrement dehors. */
|
|
7767
|
+
declare function cadClipFenetre(start: Date, end: Date, f0: Date, f1: Date): CadFenetreSpan | null;
|
|
7768
|
+
|
|
7769
|
+
/**
|
|
7770
|
+
* Mise en page du gantt — logique PURE, sans DOM, donc testable seule.
|
|
7771
|
+
*
|
|
7772
|
+
* Deux responsabilités, et rien d'autre : quelles rangées sont VISIBLES (l'arbre replié), et
|
|
7773
|
+
* par où passe une flèche de dépendance. L'axe de temps vient de planning.axis, la hiérarchie
|
|
7774
|
+
* et les dates roulées de planning.model — le gantt n'invente aucune donnée.
|
|
7775
|
+
*/
|
|
7776
|
+
|
|
7777
|
+
interface CadGanttRow {
|
|
7778
|
+
task: CadPlannedTask;
|
|
7779
|
+
level: number;
|
|
7780
|
+
}
|
|
7781
|
+
/**
|
|
7782
|
+
* Rangées visibles, dans l'ordre hiérarchique : on descend depuis les racines et on saute la
|
|
7783
|
+
* descendance des nœuds ABSENTS de `expanded`. Une tâche non plaçable (ni dates propres ni
|
|
7784
|
+
* dates roulées) ne produit pas de rangée : elle appartient à la zone « non planifié ».
|
|
7785
|
+
*/
|
|
7786
|
+
declare function cadGanttRows(tasks: readonly CadPlannedTask[], roots: readonly string[], expanded: ReadonlySet<string>): CadGanttRow[];
|
|
7787
|
+
/** Ancre d'une barre pour le routage : ses deux bouts et son centre vertical, en pixels. */
|
|
7788
|
+
interface CadLienAncre {
|
|
7789
|
+
x1: number;
|
|
7790
|
+
x2: number;
|
|
7791
|
+
y: number;
|
|
7792
|
+
}
|
|
7793
|
+
interface CadLienTrace {
|
|
7794
|
+
/** Chemin SVG orthogonal. */
|
|
7795
|
+
d: string;
|
|
7796
|
+
/** Pointe de flèche : sommet, et sens d'entrée ('right' = elle pointe vers la droite). */
|
|
7797
|
+
fleche: {
|
|
7798
|
+
x: number;
|
|
7799
|
+
y: number;
|
|
7800
|
+
sens: 'right' | 'left';
|
|
7801
|
+
};
|
|
7802
|
+
}
|
|
7803
|
+
/**
|
|
7804
|
+
* Routage orthogonal d'un lien, 3 segments — 5 quand l'entrée est à contre-sens.
|
|
7805
|
+
*
|
|
7806
|
+
* Les conventions MS Project portent tout : le type dit de quel BOUT on sort (F = fin, S =
|
|
7807
|
+
* début) et par quel bout on entre. On sort d'une longueur de garde `g`, on descend, on entre.
|
|
7808
|
+
* Le chemin direct n'est licite que si l'approche se fait DU BON CÔTÉ (par la gauche pour une
|
|
7809
|
+
* entrée sur un début, par la droite pour une entrée sur une fin) — sinon la flèche
|
|
7810
|
+
* traverserait la barre qu'elle vise. À contre-sens, on passe par le bord de la rangée cible.
|
|
7811
|
+
* L'évitement d'obstacles est EXCLU (acté le 21/08) : un lien peut croiser une barre tierce.
|
|
7812
|
+
*/
|
|
7813
|
+
declare function cadRouterLien(type: CadPlanLinkType, a: CadLienAncre, b: CadLienAncre, g?: number, demiRangee?: number): CadLienTrace;
|
|
7814
|
+
/** Points du polygone de la pointe, prêt pour l'attribut `points`. */
|
|
7815
|
+
declare function cadPointeFleche(f: CadLienTrace['fleche'], taille?: number): string;
|
|
7816
|
+
|
|
7375
7817
|
/** Contenu d'une carte : `<ng-template cadTaskCard let-task let-bucket="bucket">`. */
|
|
7376
7818
|
declare class CadTaskCardDirective {
|
|
7377
7819
|
readonly tpl: TemplateRef<any>;
|
|
@@ -7442,6 +7884,8 @@ interface Column {
|
|
|
7442
7884
|
*
|
|
7443
7885
|
* Clavier : Entrée / Espace ouvrent la tâche ; Ctrl (ou Cmd) + flèches la déplacent — gauche et
|
|
7444
7886
|
* droite changent de colonne, haut et bas changent de rang. Chaque déplacement est annoncé.
|
|
7887
|
+
* @atelier icone=kanban
|
|
7888
|
+
* @atelier-exemple plan {"buckets":[{"id":"afaire","label":"À faire","wipLimit":4},{"id":"encours","label":"En cours","wipLimit":3},{"id":"fait","label":"Fait"}],"tasks":[{"id":"t1","label":"Inspection du pont","bucket":"afaire"},{"id":"t2","label":"Rapport d'étude","bucket":"afaire"},{"id":"t3","label":"Levé topographique","bucket":"encours"},{"id":"t4","label":"Diagnostic béton","bucket":"fait"}]}
|
|
7445
7889
|
*/
|
|
7446
7890
|
declare class CadTaskboardComponent {
|
|
7447
7891
|
/** Document de planification brut ; il est normalisé en interne et jamais muté. */
|
|
@@ -7554,6 +7998,9 @@ interface CadCalendarDateEvent {
|
|
|
7554
7998
|
*
|
|
7555
7999
|
* LE COMPOSANT N'ÉCRIT JAMAIS : il émet `eventClick`, `dateClick`, `rangeChange`. Masquer un
|
|
7556
8000
|
* agenda est en revanche un état de PRÉSENTATION, donc un `model()` qu'il porte lui-même.
|
|
8001
|
+
* @atelier icone=calendar
|
|
8002
|
+
* @atelier-exemple plan {"tasks":[{"id":"v1","label":"Visite d'ouvrage","start":"@aujourdhuiT09:00","end":"@aujourdhuiT10:30"},{"id":"v2","label":"Relevé terrain","start":"@aujourdhui+1T14:00","end":"@aujourdhui+1T16:00"},{"id":"v3","label":"Réunion de service","start":"@aujourdhui+2","allDay":true},{"id":"v4","label":"Contrôle technique","start":"@aujourdhui-1T11:00","end":"@aujourdhui-1T12:00"}]}
|
|
8003
|
+
* @atelier-exemple view "week"
|
|
7557
8004
|
*/
|
|
7558
8005
|
declare class CadCalendarComponent {
|
|
7559
8006
|
protected readonly Math: Math;
|
|
@@ -7731,6 +8178,364 @@ declare class CadCalendarComponent {
|
|
|
7731
8178
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadCalendarComponent, "cad-calendar", never, { "plan": { "alias": "plan"; "required": false; "isSignal": true; }; "sources": { "alias": "sources"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "firstDay": { "alias": "firstDay"; "required": false; "isSignal": true; }; "dayStart": { "alias": "dayStart"; "required": false; "isSignal": true; }; "dayEnd": { "alias": "dayEnd"; "required": false; "isSignal": true; }; "hourHeight": { "alias": "hourHeight"; "required": false; "isSignal": true; }; "maxPerDay": { "alias": "maxPerDay"; "required": false; "isSignal": true; }; "workCalendar": { "alias": "workCalendar"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "showNow": { "alias": "showNow"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "snap": { "alias": "snap"; "required": false; "isSignal": true; }; }, { "hidden": "hiddenChange"; "view": "viewChange"; "date": "dateChange"; "eventClick": "eventClick"; "dateClick": "dateClick"; "rangeChange": "rangeChange"; "eventMove": "eventMove"; "eventResize": "eventResize"; "eventCreate": "eventCreate"; }, never, never, true, never>;
|
|
7732
8179
|
}
|
|
7733
8180
|
|
|
8181
|
+
type CadSchedulerScale = 'day' | 'week' | 'month';
|
|
8182
|
+
type CadSchedulerMode = 'timeline' | 'list' | 'auto';
|
|
8183
|
+
interface CadSchedulerEventEvent {
|
|
8184
|
+
occurrence: CadOccurrence;
|
|
8185
|
+
originalEvent: Event;
|
|
8186
|
+
}
|
|
8187
|
+
/** Intention d'écriture. Le composant ne l'applique pas : il la propose. */
|
|
8188
|
+
interface CadSchedulerChangeEvent {
|
|
8189
|
+
occurrence: CadOccurrence;
|
|
8190
|
+
start: Date;
|
|
8191
|
+
end: Date;
|
|
8192
|
+
}
|
|
8193
|
+
/** Réaffectation : SEULE l'affectation saisie change de ligne, les dates ne bougent pas. */
|
|
8194
|
+
interface CadSchedulerAssignEvent {
|
|
8195
|
+
occurrence: CadOccurrence;
|
|
8196
|
+
assignmentIndex: number;
|
|
8197
|
+
from: string;
|
|
8198
|
+
to: string;
|
|
8199
|
+
}
|
|
8200
|
+
interface CadSchedulerCreateEvent {
|
|
8201
|
+
resource: string;
|
|
8202
|
+
start: Date;
|
|
8203
|
+
end: Date;
|
|
8204
|
+
}
|
|
8205
|
+
/** Une tâche de la zone « non planifié » déposée sur une ligne. */
|
|
8206
|
+
interface CadSchedulerScheduleEvent {
|
|
8207
|
+
task: CadPlannedTask;
|
|
8208
|
+
resource: string;
|
|
8209
|
+
start: Date;
|
|
8210
|
+
end: Date;
|
|
8211
|
+
}
|
|
8212
|
+
interface Rangee {
|
|
8213
|
+
type: 'groupe' | 'ligne';
|
|
8214
|
+
res: CadPlanResource;
|
|
8215
|
+
}
|
|
8216
|
+
interface Barre {
|
|
8217
|
+
o: CadOccurrence;
|
|
8218
|
+
ai: number;
|
|
8219
|
+
x: number;
|
|
8220
|
+
w: number;
|
|
8221
|
+
voie: number;
|
|
8222
|
+
continueAvant: boolean;
|
|
8223
|
+
continueApres: boolean;
|
|
8224
|
+
}
|
|
8225
|
+
/**
|
|
8226
|
+
* `<cad-scheduler [plan]="plan" scale="week" editable/>`
|
|
8227
|
+
*
|
|
8228
|
+
* LES LIGNES SONT DES RESSOURCES — c'est ce qui le distingue de `cad-calendar`, dont la
|
|
8229
|
+
* grille est le temps. On répond ici à « qui est libre jeudi ? ». Même document JSON.
|
|
8230
|
+
*
|
|
8231
|
+
* MULTI-RESSOURCE = 'each' (arbitré sur maquette le 24/08/2026) : une tâche affectée à N
|
|
8232
|
+
* ressources dessine UNE BARRE PAR LIGNE (⧉). Un déplacement horizontal bouge la tâche —
|
|
8233
|
+
* donc toutes ses barres ; un déplacement vertical ne réaffecte que l'affectation saisie.
|
|
8234
|
+
* C'est le seul rendu qui ne mente pas quand les lignes SONT les ressources.
|
|
8235
|
+
*
|
|
8236
|
+
* LES CHEVAUCHEMENTS S'EMPILENT en voies (balayage, première voie libre) : deux barres ne se
|
|
8237
|
+
* recouvrent jamais, la ligne grandit. La hauteur d'une ligne est donc une CONSÉQUENCE de la
|
|
8238
|
+
* donnée, pas un réglage.
|
|
8239
|
+
*
|
|
8240
|
+
* LE COMPOSANT N'ÉCRIT JAMAIS : il émet eventMove / eventResize / eventAssign / eventCreate /
|
|
8241
|
+
* eventSchedule et garde le geste vivant à l'écran (correctif optimiste, patron du taskboard).
|
|
8242
|
+
* Une tâche sans dates ou sans affectation part dans la zone « non planifié » avec un
|
|
8243
|
+
* compteur — jamais dans le silence — et se pose au glisser.
|
|
8244
|
+
* @atelier icone=chart-no-axes-gantt
|
|
8245
|
+
* @atelier-exemple plan {"resources":[{"id":"claire","label":"Claire Fontaine","color":"#2f6feb"},{"id":"marc","label":"Marc Delorme","color":"#a371f7"}],"tasks":[{"id":"t1","label":"Diagnostic OA 214","start":"@aujourdhuiT09:00","end":"@aujourdhui+2T17:00","assignments":[{"resource":"claire"}]},{"id":"t2","label":"Relevés terrain","start":"@aujourdhui+1T09:00","end":"@aujourdhui+3T12:00","assignments":[{"resource":"marc"}]},{"id":"t3","label":"Avis technique mur R27"}]}
|
|
8246
|
+
*/
|
|
8247
|
+
declare class CadSchedulerComponent {
|
|
8248
|
+
private readonly bp;
|
|
8249
|
+
private readonly hote;
|
|
8250
|
+
readonly plan: _angular_core.InputSignal<CadPlan | null>;
|
|
8251
|
+
readonly mode: _angular_core.InputSignal<CadSchedulerMode>;
|
|
8252
|
+
readonly scale: _angular_core.ModelSignal<CadSchedulerScale>;
|
|
8253
|
+
/** Date d'ancrage : le jour, la semaine ou le mois affiché. */
|
|
8254
|
+
readonly date: _angular_core.ModelSignal<Date>;
|
|
8255
|
+
readonly firstDay: _angular_core.InputSignal<0 | 1>;
|
|
8256
|
+
/** Plage horaire de l'échelle jour, en heures. */
|
|
8257
|
+
readonly dayStart: _angular_core.InputSignal<number>;
|
|
8258
|
+
readonly dayEnd: _angular_core.InputSignal<number>;
|
|
8259
|
+
/** Largeur d'une graduation en pixels. null = défaut selon l'échelle (64 / 76 / 27). */
|
|
8260
|
+
readonly tickWidth: _angular_core.InputSignal<number | null>;
|
|
8261
|
+
/** Aimantage à l'échelle jour, en minutes. Les échelles semaine et mois aimantent au JOUR. */
|
|
8262
|
+
readonly snap: _angular_core.InputSignal<number>;
|
|
8263
|
+
readonly workCalendar: _angular_core.InputSignal<CadWorkCalendar | null>;
|
|
8264
|
+
readonly today: _angular_core.InputSignal<Date | null>;
|
|
8265
|
+
readonly locale: _angular_core.InputSignal<string>;
|
|
8266
|
+
readonly emptyText: _angular_core.InputSignal<string>;
|
|
8267
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
8268
|
+
readonly showNow: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
8269
|
+
readonly showUnplanned: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
8270
|
+
readonly editable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
8271
|
+
readonly eventClick: _angular_core.OutputEmitterRef<CadSchedulerEventEvent>;
|
|
8272
|
+
readonly eventMove: _angular_core.OutputEmitterRef<CadSchedulerChangeEvent>;
|
|
8273
|
+
readonly eventResize: _angular_core.OutputEmitterRef<CadSchedulerChangeEvent>;
|
|
8274
|
+
readonly eventAssign: _angular_core.OutputEmitterRef<CadSchedulerAssignEvent>;
|
|
8275
|
+
readonly eventCreate: _angular_core.OutputEmitterRef<CadSchedulerCreateEvent>;
|
|
8276
|
+
readonly eventSchedule: _angular_core.OutputEmitterRef<CadSchedulerScheduleEvent>;
|
|
8277
|
+
/** La fenêtre affichée a changé : l'hôte peut aller chercher les données qui manquent. */
|
|
8278
|
+
readonly rangeChange: _angular_core.OutputEmitterRef<{
|
|
8279
|
+
start: Date;
|
|
8280
|
+
end: Date;
|
|
8281
|
+
}>;
|
|
8282
|
+
/** `auto` : liste par ressource sous le seuil. Une grille de 14 jours à 390 px ne montre rien. */
|
|
8283
|
+
protected readonly modeEffectif: _angular_core.Signal<"list" | "timeline">;
|
|
8284
|
+
private readonly normalise;
|
|
8285
|
+
private readonly calendrier;
|
|
8286
|
+
/** Anomalies de normalisation et de dépliage — jamais tues : l'hôte peut les montrer. */
|
|
8287
|
+
readonly issues: _angular_core.Signal<(_cadriciel_ui.CadPlanIssue | _cadriciel_ui.CadRecurrenceIssue)[]>;
|
|
8288
|
+
protected readonly unite: _angular_core.Signal<number>;
|
|
8289
|
+
/** Fenêtre affichée : 1 jour en heures, 14 jours, ou 6 semaines pleines autour du mois. */
|
|
8290
|
+
protected readonly fenetre: _angular_core.Signal<{
|
|
8291
|
+
start: Date;
|
|
8292
|
+
end: Date;
|
|
8293
|
+
}>;
|
|
8294
|
+
private readonly tete;
|
|
8295
|
+
protected readonly axe: _angular_core.Signal<CadTimeAxis>;
|
|
8296
|
+
protected readonly enTete: _angular_core.Signal<{
|
|
8297
|
+
hautes: {
|
|
8298
|
+
label: string;
|
|
8299
|
+
w: number;
|
|
8300
|
+
}[];
|
|
8301
|
+
basses: {
|
|
8302
|
+
label: string;
|
|
8303
|
+
sub: string;
|
|
8304
|
+
off: boolean;
|
|
8305
|
+
today: boolean;
|
|
8306
|
+
}[];
|
|
8307
|
+
}>;
|
|
8308
|
+
/**
|
|
8309
|
+
* Rangées : les ressources dans leur ordre de déclaration ; celles que d'autres référencent
|
|
8310
|
+
* comme `parent` deviennent des bandes de groupe. Un groupe ne porte pas de barres — un
|
|
8311
|
+
* congé n'est pas un jour férié, une équipe n'est pas une ressource de travail.
|
|
8312
|
+
*/
|
|
8313
|
+
protected readonly rangees: _angular_core.Signal<Rangee[]>;
|
|
8314
|
+
/**
|
|
8315
|
+
* CORRECTIF OPTIMISTE — patron de cad-taskboard et cad-calendar : le composant n'écrit
|
|
8316
|
+
* jamais dans le document, mais garde les bornes, réaffectations et planifications
|
|
8317
|
+
* PROPOSÉES, attachées au `plan` d'origine, et les abandonne dès qu'un nouveau plan arrive.
|
|
8318
|
+
*/
|
|
8319
|
+
private readonly patch;
|
|
8320
|
+
private patchCourant;
|
|
8321
|
+
private readonly partition;
|
|
8322
|
+
protected readonly nonPlanifiees: _angular_core.Signal<CadPlannedTask[]>;
|
|
8323
|
+
private readonly occurrences;
|
|
8324
|
+
/** Barres par ligne : une par AFFECTATION (multi-ressource 'each'), empilées en voies. */
|
|
8325
|
+
private readonly rendu;
|
|
8326
|
+
protected barresDe(res: string): Barre[];
|
|
8327
|
+
protected hauteurDe(res: string): number;
|
|
8328
|
+
/**
|
|
8329
|
+
* Cellules de fond par ligne : fermé global (week-end, férié) ou pour CETTE ressource.
|
|
8330
|
+
* MÉMOÏSÉ en un seul computed — une méthode appelée du template serait recalculée à
|
|
8331
|
+
* chaque cycle de détection de changements, pour un résultat identique.
|
|
8332
|
+
*/
|
|
8333
|
+
private readonly cellules;
|
|
8334
|
+
protected cellulesDe(res: string): {
|
|
8335
|
+
off: boolean;
|
|
8336
|
+
ex: boolean;
|
|
8337
|
+
}[];
|
|
8338
|
+
protected readonly marqueurs: _angular_core.Signal<{
|
|
8339
|
+
x: number;
|
|
8340
|
+
label: string;
|
|
8341
|
+
}[]>;
|
|
8342
|
+
protected readonly ligneNow: _angular_core.Signal<number | null>;
|
|
8343
|
+
protected readonly survol: _angular_core.WritableSignal<string | null>;
|
|
8344
|
+
protected readonly cible: _angular_core.WritableSignal<string | null>;
|
|
8345
|
+
protected readonly fantome: _angular_core.WritableSignal<{
|
|
8346
|
+
res: string;
|
|
8347
|
+
x: number;
|
|
8348
|
+
w: number;
|
|
8349
|
+
texte: string;
|
|
8350
|
+
} | null>;
|
|
8351
|
+
protected readonly annonce: _angular_core.WritableSignal<string>;
|
|
8352
|
+
protected couleur(o: CadOccurrence): string;
|
|
8353
|
+
protected etp(c: number): string;
|
|
8354
|
+
protected heure(d: Date): string;
|
|
8355
|
+
private jour;
|
|
8356
|
+
protected periodeListe(o: CadOccurrence): string;
|
|
8357
|
+
protected titre(o: CadOccurrence): string;
|
|
8358
|
+
protected motifNonPlanifie(t: CadPlannedTask): string;
|
|
8359
|
+
/** Une occurrence de SÉRIE ou une tâche verrouillée n'est pas manipulable — on le MONTRE. */
|
|
8360
|
+
protected manipulable(o: CadOccurrence): boolean;
|
|
8361
|
+
protected motifVerrou(o: CadOccurrence): string;
|
|
8362
|
+
/**
|
|
8363
|
+
* Projection d'un geste HORIZONTAL — aucune logique neuve : à l'échelle jour c'est la
|
|
8364
|
+
* projection horaire du calendrier tournée d'un quart de tour (dx joue le rôle de dy,
|
|
8365
|
+
* la largeur de graduation celui de la hauteur d'heure) ; aux échelles semaine et mois
|
|
8366
|
+
* c'est la projection de mois sans rangées (des JOURS entiers, l'heure ne bouge pas).
|
|
8367
|
+
*/
|
|
8368
|
+
private projeter;
|
|
8369
|
+
private poserBornes;
|
|
8370
|
+
private lignesEcran;
|
|
8371
|
+
/** Le clic qui SUIT un glisser est celui du navigateur, pas celui de l'utilisateur. */
|
|
8372
|
+
private finGeste;
|
|
8373
|
+
/**
|
|
8374
|
+
* Geste au pointeur sur une barre. Patron de cad-calendar : écoute sur le DOCUMENT.
|
|
8375
|
+
* Horizontal = les dates (la tâche entière, donc toutes ses barres) ; vertical = la SEULE
|
|
8376
|
+
* affectation saisie change de ligne, dates intactes. Les deux ne se combinent pas dans un
|
|
8377
|
+
* même geste : une intention est atomique, l'hôte n'a jamais à en deviner la moitié.
|
|
8378
|
+
*/
|
|
8379
|
+
protected geste(kind: CadEditKind, b: Barre, origine: string, ev: PointerEvent): void;
|
|
8380
|
+
/** Création par glisser sur une plage libre d'une ligne. Un clic sec produit un pas. */
|
|
8381
|
+
protected creer(res: CadPlanResource, ev: PointerEvent, zone: HTMLElement): void;
|
|
8382
|
+
/** Glisser d'un chip « non planifié » vers une ligne. */
|
|
8383
|
+
protected prendreChip(t: CadPlannedTask, ev: PointerEvent): void;
|
|
8384
|
+
/**
|
|
8385
|
+
* Le CLAVIER passe par la MÊME projection que le pointeur. Ctrl/Cmd + ←/→ déplacent d'un
|
|
8386
|
+
* pas (un jour, ou l'aimantage à l'échelle jour), Maj + ←/→ redimensionnent par la fin,
|
|
8387
|
+
* Ctrl/Cmd + ↑/↓ réaffectent à la ligne voisine.
|
|
8388
|
+
*/
|
|
8389
|
+
protected clavier(b: Barre, origine: string, e: KeyboardEvent): void;
|
|
8390
|
+
private nomDe;
|
|
8391
|
+
/** L'annonce dit OÙ la tâche atterrit, pas seulement qu'elle a bougé. */
|
|
8392
|
+
private annoncer;
|
|
8393
|
+
protected clicEvenement(occurrence: CadOccurrence, originalEvent: Event): void;
|
|
8394
|
+
constructor();
|
|
8395
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadSchedulerComponent, never>;
|
|
8396
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadSchedulerComponent, "cad-scheduler", never, { "plan": { "alias": "plan"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "firstDay": { "alias": "firstDay"; "required": false; "isSignal": true; }; "dayStart": { "alias": "dayStart"; "required": false; "isSignal": true; }; "dayEnd": { "alias": "dayEnd"; "required": false; "isSignal": true; }; "tickWidth": { "alias": "tickWidth"; "required": false; "isSignal": true; }; "snap": { "alias": "snap"; "required": false; "isSignal": true; }; "workCalendar": { "alias": "workCalendar"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "showNow": { "alias": "showNow"; "required": false; "isSignal": true; }; "showUnplanned": { "alias": "showUnplanned"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; }, { "scale": "scaleChange"; "date": "dateChange"; "eventClick": "eventClick"; "eventMove": "eventMove"; "eventResize": "eventResize"; "eventAssign": "eventAssign"; "eventCreate": "eventCreate"; "eventSchedule": "eventSchedule"; "rangeChange": "rangeChange"; }, never, never, true, never>;
|
|
8397
|
+
}
|
|
8398
|
+
|
|
8399
|
+
type CadGanttScale = 'day' | 'week' | 'month';
|
|
8400
|
+
interface CadGanttTaskEvent {
|
|
8401
|
+
task: CadPlannedTask;
|
|
8402
|
+
originalEvent: Event;
|
|
8403
|
+
}
|
|
8404
|
+
interface LigneTable {
|
|
8405
|
+
id: string;
|
|
8406
|
+
parent: string | null;
|
|
8407
|
+
label: string;
|
|
8408
|
+
debut: string;
|
|
8409
|
+
fin: string;
|
|
8410
|
+
duree: string;
|
|
8411
|
+
pct: string;
|
|
8412
|
+
[extra: string]: unknown;
|
|
8413
|
+
}
|
|
8414
|
+
/**
|
|
8415
|
+
* `<cad-gantt [plan]="plan" scale="week"/>` — VOLET 1 : affichage.
|
|
8416
|
+
*
|
|
8417
|
+
* LES LIGNES SONT DES TÂCHES, avec dépendances — on répond à « si ça glisse, qu'est-ce qui
|
|
8418
|
+
* tombe ? ». Même document JSON que le taskboard, le calendrier et le scheduler.
|
|
8419
|
+
*
|
|
8420
|
+
* LE VOLET GAUCHE EST `cad-table` EN MODE ARBRE — le même composant, pas une ressemblance
|
|
8421
|
+
* (acté le 21/08) : hiérarchie par `parentKey`, repli par `expandedNodeKeys`, sélection
|
|
8422
|
+
* simple. Le volet droit s'aligne sur lui en MESURANT (ResizeObserver) la hauteur réelle de
|
|
8423
|
+
* son en-tête et de ses rangées : un calcul serait faux au premier changement de densité.
|
|
8424
|
+
*
|
|
8425
|
+
* RIEN NE SE DÉPLACE ICI. L'écriture (déplacer, redimensionner, relier) est le lot 5 ; le
|
|
8426
|
+
* moteur CPM (chemin critique, marge) est le volet 2. Les barres récapitulatives portent des
|
|
8427
|
+
* dates ROULÉES depuis leurs enfants — jamais saisies. Une tâche sans dates part dans la zone
|
|
8428
|
+
* « non planifié », comptée, jamais dans le silence.
|
|
8429
|
+
*
|
|
8430
|
+
* LES LIENS suivent les conventions MS Project (FS/SS/FF/SF, décalage) : routage orthogonal
|
|
8431
|
+
* 3 segments, 5 à contre-sens, évitement d'obstacles exclu (acté 21/08). Un lien dont une
|
|
8432
|
+
* extrémité est repliée est MASQUÉ. Survoler une barre allume ses liens et ses voisines.
|
|
8433
|
+
* @atelier icone=milestone
|
|
8434
|
+
* @atelier-exemple plan {"tasks":[{"id":"p1","label":"Études"},{"id":"t1","parent":"p1","label":"Relevés","start":"@aujourdhui-7","end":"@aujourdhui-3","progress":1},{"id":"t2","parent":"p1","label":"Diagnostic","start":"@aujourdhui-2","end":"@aujourdhui+4","progress":0.4},{"id":"t3","label":"Rapport","start":"@aujourdhui+5","end":"@aujourdhui+9"},{"id":"j1","label":"Remise","start":"@aujourdhui+10","milestone":true}],"links":[{"from":"t1","to":"t2"},{"from":"t2","to":"t3"},{"from":"t3","to":"j1"}]}
|
|
8435
|
+
*/
|
|
8436
|
+
declare class CadGanttComponent {
|
|
8437
|
+
private readonly hote;
|
|
8438
|
+
readonly plan: _angular_core.InputSignal<CadPlan | null>;
|
|
8439
|
+
readonly scale: _angular_core.ModelSignal<CadGanttScale>;
|
|
8440
|
+
/** Nœuds dépliés. `null` (défaut) = tout déplié. */
|
|
8441
|
+
readonly expandedKeys: _angular_core.ModelSignal<string[] | null>;
|
|
8442
|
+
readonly selectedKey: _angular_core.ModelSignal<string | null>;
|
|
8443
|
+
/** Largeur d'une graduation en pixels. null = défaut selon l'échelle (36 / 90 / 120). */
|
|
8444
|
+
readonly tickWidth: _angular_core.InputSignal<number | null>;
|
|
8445
|
+
readonly workCalendar: _angular_core.InputSignal<CadWorkCalendar | null>;
|
|
8446
|
+
readonly today: _angular_core.InputSignal<Date | null>;
|
|
8447
|
+
readonly locale: _angular_core.InputSignal<string>;
|
|
8448
|
+
readonly firstDay: _angular_core.InputSignal<0 | 1>;
|
|
8449
|
+
readonly emptyText: _angular_core.InputSignal<string>;
|
|
8450
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
8451
|
+
readonly showNow: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
8452
|
+
readonly showUnplanned: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
8453
|
+
/** Largeur de la colonne Tâche du volet gauche. */
|
|
8454
|
+
readonly taskColumnWidth: _angular_core.InputSignal<string>;
|
|
8455
|
+
readonly taskClick: _angular_core.OutputEmitterRef<CadGanttTaskEvent>;
|
|
8456
|
+
private readonly normalise;
|
|
8457
|
+
private readonly calendrier;
|
|
8458
|
+
/** Anomalies de normalisation — jamais tues : l'hôte peut les montrer. */
|
|
8459
|
+
readonly issues: _angular_core.Signal<_cadriciel_ui.CadPlanIssue[]>;
|
|
8460
|
+
protected readonly colTache: _angular_core.Signal<string>;
|
|
8461
|
+
protected readonly leftWidth: _angular_core.Signal<string>;
|
|
8462
|
+
protected readonly unite: _angular_core.Signal<number>;
|
|
8463
|
+
private readonly parents;
|
|
8464
|
+
protected readonly expansion: _angular_core.Signal<string[]>;
|
|
8465
|
+
protected basculer(key: unknown, ouvert: boolean): void;
|
|
8466
|
+
protected readonly rangeesVisibles: _angular_core.Signal<CadGanttRow[]>;
|
|
8467
|
+
protected readonly nonPlanifiees: _angular_core.Signal<CadPlannedTask[]>;
|
|
8468
|
+
private readonly bornes;
|
|
8469
|
+
private readonly tete;
|
|
8470
|
+
protected readonly axe: _angular_core.Signal<CadTimeAxis>;
|
|
8471
|
+
protected readonly enTete: _angular_core.Signal<{
|
|
8472
|
+
hautes: {
|
|
8473
|
+
label: string;
|
|
8474
|
+
w: number;
|
|
8475
|
+
}[];
|
|
8476
|
+
basses: {
|
|
8477
|
+
label: string;
|
|
8478
|
+
off: boolean;
|
|
8479
|
+
today: boolean;
|
|
8480
|
+
}[];
|
|
8481
|
+
}>;
|
|
8482
|
+
protected readonly colonnesFermees: _angular_core.Signal<{
|
|
8483
|
+
off: boolean;
|
|
8484
|
+
x: number;
|
|
8485
|
+
w: number;
|
|
8486
|
+
}[]>;
|
|
8487
|
+
/** Traits verticaux : chaque graduation quand elle est lisible, sinon les majeures seules. */
|
|
8488
|
+
protected readonly traits: _angular_core.Signal<number[]>;
|
|
8489
|
+
protected readonly marqueurs: _angular_core.Signal<{
|
|
8490
|
+
x: number;
|
|
8491
|
+
label: string;
|
|
8492
|
+
}[]>;
|
|
8493
|
+
protected readonly ligneNow: _angular_core.Signal<number | null>;
|
|
8494
|
+
protected readonly hdH: _angular_core.WritableSignal<number>;
|
|
8495
|
+
/** Géométrie PAR RANGÉE mesurée sur la vraie table : un libellé qui replie sur deux lignes
|
|
8496
|
+
* rend les rangées inégales — un pas uniforme ferait dériver toutes les barres suivantes. */
|
|
8497
|
+
private readonly mesures;
|
|
8498
|
+
protected readonly geo: _angular_core.Signal<{
|
|
8499
|
+
tops: number[];
|
|
8500
|
+
hauteurs: number[];
|
|
8501
|
+
total: number;
|
|
8502
|
+
}>;
|
|
8503
|
+
private readonly geometrie;
|
|
8504
|
+
protected readonly barres: _angular_core.Signal<{
|
|
8505
|
+
task: CadPlannedTask;
|
|
8506
|
+
genre: "barre" | "recap" | "jalon";
|
|
8507
|
+
x: number;
|
|
8508
|
+
w: number;
|
|
8509
|
+
y: number;
|
|
8510
|
+
titre: string;
|
|
8511
|
+
}[]>;
|
|
8512
|
+
protected readonly traces: _angular_core.Signal<{
|
|
8513
|
+
id: string;
|
|
8514
|
+
d: string;
|
|
8515
|
+
pointe: string;
|
|
8516
|
+
titre: string;
|
|
8517
|
+
from: string;
|
|
8518
|
+
to: string;
|
|
8519
|
+
}[]>;
|
|
8520
|
+
protected readonly chaud: _angular_core.WritableSignal<string | null>;
|
|
8521
|
+
protected readonly chauds: _angular_core.Signal<Set<string>>;
|
|
8522
|
+
protected readonly voisins: _angular_core.Signal<Set<string>>;
|
|
8523
|
+
protected readonly lignesTable: _angular_core.Signal<LigneTable[]>;
|
|
8524
|
+
protected surLigneTable(e: {
|
|
8525
|
+
row: LigneTable;
|
|
8526
|
+
event: Event;
|
|
8527
|
+
}): void;
|
|
8528
|
+
protected selectionner(t: CadPlannedTask, ev: Event): void;
|
|
8529
|
+
protected ouvrir(t: CadPlannedTask, ev: Event): void;
|
|
8530
|
+
private dateCourt;
|
|
8531
|
+
private duree;
|
|
8532
|
+
private titre;
|
|
8533
|
+
private titreLien;
|
|
8534
|
+
constructor();
|
|
8535
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadGanttComponent, never>;
|
|
8536
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadGanttComponent, "cad-gantt", never, { "plan": { "alias": "plan"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "expandedKeys": { "alias": "expandedKeys"; "required": false; "isSignal": true; }; "selectedKey": { "alias": "selectedKey"; "required": false; "isSignal": true; }; "tickWidth": { "alias": "tickWidth"; "required": false; "isSignal": true; }; "workCalendar": { "alias": "workCalendar"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDay": { "alias": "firstDay"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "showNow": { "alias": "showNow"; "required": false; "isSignal": true; }; "showUnplanned": { "alias": "showUnplanned"; "required": false; "isSignal": true; }; "taskColumnWidth": { "alias": "taskColumnWidth"; "required": false; "isSignal": true; }; }, { "scale": "scaleChange"; "expandedKeys": "expandedKeysChange"; "selectedKey": "selectedKeyChange"; "taskClick": "taskClick"; }, never, never, true, never>;
|
|
8537
|
+
}
|
|
8538
|
+
|
|
7734
8539
|
/**
|
|
7735
8540
|
* Le format d'une maquette de l'Atelier CadGrid.
|
|
7736
8541
|
*
|
|
@@ -7763,6 +8568,24 @@ declare const ATELIER_BORNES: {
|
|
|
7763
8568
|
readonly hMax: 100;
|
|
7764
8569
|
readonly itemsMax: 200;
|
|
7765
8570
|
readonly propsMax: 30;
|
|
8571
|
+
/** Enfants directs d'un conteneur. Le plafond GLOBAL reste `itemsMax`, enfants compris. */
|
|
8572
|
+
readonly enfantsMax: 30;
|
|
8573
|
+
/**
|
|
8574
|
+
* Profondeur d'imbrication, en niveaux SOUS le plan.
|
|
8575
|
+
*
|
|
8576
|
+
* Un item du plan est à la profondeur 0, son enfant à 1, et ainsi de suite jusqu'à
|
|
8577
|
+
* `profondeurMax` INCLUS — soit cinq étages en tout. Ce n'est pas une préférence
|
|
8578
|
+
* d'ergonomie : `atelierNormaliser` et l'assainisseur backend descendent une
|
|
8579
|
+
* structure VENUE DE L'EXTÉRIEUR (lien partagé, fichier collé), et une récursion
|
|
8580
|
+
* non bornée sur du JSON hostile fait sauter la pile. Le plafond de COMPTE
|
|
8581
|
+
* (`itemsMax`) ne borne pas la profondeur : deux cents items peuvent former une
|
|
8582
|
+
* chaîne de deux cents étages.
|
|
8583
|
+
*
|
|
8584
|
+
* Cinq étages couvrent le besoin réel mesuré le 27/08 — le pire cas de la
|
|
8585
|
+
* bibliothèque est `cad-splitter > cad-splitter-panel > cad-tabs > cad-tab >
|
|
8586
|
+
* contenu`, soit une profondeur de 4 pour le contenu.
|
|
8587
|
+
*/
|
|
8588
|
+
readonly profondeurMax: 4;
|
|
7766
8589
|
};
|
|
7767
8590
|
/** Un composant posé sur le plan. */
|
|
7768
8591
|
interface AtelierItem {
|
|
@@ -7787,6 +8610,27 @@ interface AtelierItem {
|
|
|
7787
8610
|
label?: string;
|
|
7788
8611
|
};
|
|
7789
8612
|
hideMobile?: boolean;
|
|
8613
|
+
/**
|
|
8614
|
+
* Enfants d'un CONTENEUR (panel, carte, fieldset…), projetés dans son emplacement par
|
|
8615
|
+
* défaut — arbitrage SZU 24/08.
|
|
8616
|
+
*
|
|
8617
|
+
* · Les enfants vivent en GRILLE DE FLUX (le patron du `cad-grid` homonyme) : leur
|
|
8618
|
+
* ORDRE fait loi, et leur `w` est une LARGEUR en colonnes (1–12 de la largeur du
|
|
8619
|
+
* conteneur) — quatre tags à `w=3` tiennent côte à côte. `x`, `y` et `h` restent
|
|
8620
|
+
* normalisés (0/0/1) : pas de placement absolu à l'intérieur, c'est ce qui évite le
|
|
8621
|
+
* glisser inter-grilles, là où les outils de maquette meurent.
|
|
8622
|
+
* · IMBRICATION LIBRE jusqu'à `profondeurMax` (27/08, arbitrage SZU) : un enfant est
|
|
8623
|
+
* un item comme un autre, donc un conteneur peut en contenir un. Le plafond d'un
|
|
8624
|
+
* SEUL niveau, tenu du 24/08 au 27/08, rendait indéfendables les familles à pièce
|
|
8625
|
+
* typée — `cad-tabs > cad-tab > contenu` réclame deux niveaux, et un onglet qu'on
|
|
8626
|
+
* ne peut pas remplir est pire qu'un onglet absent. Au-delà du plafond, la pose
|
|
8627
|
+
* refuse VISIBLEMENT et l'assainisseur écarte le surplus : jamais de troncature
|
|
8628
|
+
* muette.
|
|
8629
|
+
* · Le régime (`flux` ou `direct`) est celui du PARENT DIRECT, lu de son annotation
|
|
8630
|
+
* `@atelier conteneur=` — pas celui de la racine. Un `cad-tab` en flux dans un
|
|
8631
|
+
* `cad-tabs` en direct est la forme normale, pas un cas limite.
|
|
8632
|
+
*/
|
|
8633
|
+
children?: AtelierItem[];
|
|
7790
8634
|
}
|
|
7791
8635
|
interface AtelierLayout {
|
|
7792
8636
|
version: 1;
|
|
@@ -7795,10 +8639,81 @@ interface AtelierLayout {
|
|
|
7795
8639
|
/** Un plan vide, jamais `null` : un canevas absent et un canevas vide se traitent pareil. */
|
|
7796
8640
|
declare const atelierLayoutVide: () => AtelierLayout;
|
|
7797
8641
|
|
|
8642
|
+
/**
|
|
8643
|
+
* Le contrat d'accueil entre un HÔTE de la bibliothèque et les pièces qu'on lui POSE.
|
|
8644
|
+
*
|
|
8645
|
+
* ── POURQUOI CE FICHIER EXISTE ──────────────────────────────────────────────────
|
|
8646
|
+
*
|
|
8647
|
+
* L'atelier du studio et le rendu frontless du shell instancient les composants
|
|
8648
|
+
* IMPÉRATIVEMENT (`createComponent` + `projectableNodes`) : c'est ce qui permet de poser
|
|
8649
|
+
* le VRAI composant, vivant, plutôt qu'une image de lui. Mais deux mécanismes d'Angular
|
|
8650
|
+
* ne traversent PAS cette frontière, et c'est mesuré, pas supposé (27/08) :
|
|
8651
|
+
*
|
|
8652
|
+
* ① `contentChildren()` — une requête de contenu se résout sur la structure DÉCLARÉE
|
|
8653
|
+
* d'un gabarit. Un composant instancié à la main vit dans une autre vue : il arrive
|
|
8654
|
+
* bien dans le DOM, la requête ne le voit jamais. `cad-tabs` rendait `onglets=0`,
|
|
8655
|
+
* `cad-splitter` `gouttieres=0` — une barre vide, aucune erreur.
|
|
8656
|
+
* ② `inject(Hôte)` depuis la pièce — sans chaîne d'injecteurs de nœud, la recherche
|
|
8657
|
+
* remonte à l'injecteur d'environnement et échoue : `NG0201` pour
|
|
8658
|
+
* `cad-accordion-panel` et `cad-radio` (que `gen-catalog` classe d'ailleurs en
|
|
8659
|
+
* « contextuels », donc non posables), ou `null` silencieux quand l'injection est
|
|
8660
|
+
* `optional`.
|
|
8661
|
+
*
|
|
8662
|
+
* `<ng-content>` est donc NÉCESSAIRE mais PAS SUFFISANT pour qu'une famille soit un
|
|
8663
|
+
* conteneur d'atelier. Le raccourci « ça projette, donc ça marche » a coûté une matinée :
|
|
8664
|
+
* il faut aussi que l'hôte sache ACCUEILLIR une pièce qu'aucune requête ne lui rapportera.
|
|
8665
|
+
*
|
|
8666
|
+
* ── LE CONTRAT ──────────────────────────────────────────────────────────────────
|
|
8667
|
+
*
|
|
8668
|
+
* Il n'est pas neuf : `cad-button-group` le porte depuis le 24/08, posé le jour où l'on
|
|
8669
|
+
* a constaté qu'un groupe était SOURD aux clics de ses boutons posés. Ce fichier ne
|
|
8670
|
+
* l'invente pas, il l'ÉCRIT — jusqu'ici il vivait duck-typé dans le seul poseur du
|
|
8671
|
+
* studio, invisible depuis la bibliothèque, ce qui a permis à `cad-map` de partir avec
|
|
8672
|
+
* un nom à lui (`registerChild`) que personne n'appelle. Deux vocabulaires pour un
|
|
8673
|
+
* besoin, c'est une famille cassée en silence.
|
|
8674
|
+
*/
|
|
8675
|
+
/**
|
|
8676
|
+
* Un hôte capable d'accueillir des pièces créées hors gabarit.
|
|
8677
|
+
*
|
|
8678
|
+
* Le passage est la LISTE COMPLÈTE, jamais un ajout : le poseur reconstruit ses enfants
|
|
8679
|
+
* d'un bloc à chaque changement de structure, et un contrat incrémental l'obligerait à
|
|
8680
|
+
* tenir un différentiel — c'est ainsi qu'on garde un fantôme après une suppression.
|
|
8681
|
+
*/
|
|
8682
|
+
interface CadHoteAPieces {
|
|
8683
|
+
/** Reçoit toutes les instances posées. L'hôte filtre lui-même ce qui le concerne. */
|
|
8684
|
+
enregistrerEnfants(instances: unknown[]): void;
|
|
8685
|
+
}
|
|
8686
|
+
/**
|
|
8687
|
+
* L'hôte sait-il accueillir des pièces posées ?
|
|
8688
|
+
*
|
|
8689
|
+
* Reconnaissance par CAPACITÉ et non par liste de types : un poseur qui énumérerait les
|
|
8690
|
+
* familles concernées serait à mettre à jour à chaque nouvelle — et c'est toujours la
|
|
8691
|
+
* mise à jour qu'on oublie. Une famille qui gagne la trappe devient utilisable dans
|
|
8692
|
+
* l'atelier sans qu'aucun poseur ne bouge.
|
|
8693
|
+
*/
|
|
8694
|
+
declare function estHoteAPieces(hote: unknown): hote is CadHoteAPieces;
|
|
8695
|
+
|
|
7798
8696
|
/** Identifiant conforme à l'assainisseur backend : `/^[A-Za-z0-9_-]{1,24}$/`. */
|
|
7799
8697
|
declare function atelierNouvelId(): string;
|
|
7800
8698
|
/** Remet le compteur à zéro. Réservé aux tests, pour qu'ils ne dépendent pas de leur ordre. */
|
|
7801
8699
|
declare function atelierReinitialiserIds(): void;
|
|
8700
|
+
/**
|
|
8701
|
+
* Empêche les prochains ids de VOLER l'identité d'items déjà présents.
|
|
8702
|
+
*
|
|
8703
|
+
* ⚠️ À APPELER À CHAQUE CHARGEMENT d'un plan venu d'ailleurs (base, fichier collé). Le
|
|
8704
|
+
* compteur est propre à la SESSION et repart de zéro : une maquette rechargée porte déjà
|
|
8705
|
+
* `i1`, `i2`… et la première pose redonnait `i1`. Deux items partagent alors une clé, et
|
|
8706
|
+
* tout ce qui vise par id se trompe de cible — `atelierTrouver` rend le premier homonyme,
|
|
8707
|
+
* `transformerArbre` édite les deux, et le `@for … track` d'Angular en FUSIONNE deux à
|
|
8708
|
+
* l'écran : un bloc disparaît du canevas sans qu'aucune erreur ne soit levée (NG0955 en
|
|
8709
|
+
* avertissement, c'est tout).
|
|
8710
|
+
*
|
|
8711
|
+
* C'EST LE MÊME DÉFAUT QUE `eb87d3f7` (26/08), qui l'avait corrigé dans le builder
|
|
8712
|
+
* frontless — « le compteur valait items.length et non le plus grand id existant ». Le
|
|
8713
|
+
* format a DEUX producteurs ; le correctif n'en avait couvert qu'un. Il vit désormais
|
|
8714
|
+
* dans la bibliothèque, là où les deux le partagent.
|
|
8715
|
+
*/
|
|
8716
|
+
declare function atelierAdopterIds(layout: AtelierLayout): void;
|
|
7802
8717
|
/**
|
|
7803
8718
|
* La première position libre pour un bloc de `w × h`, en balayant de haut en bas puis de
|
|
7804
8719
|
* gauche à droite.
|
|
@@ -7811,19 +8726,49 @@ declare function atelierPremierePlaceLibre(items: readonly AtelierItem[], w: num
|
|
|
7811
8726
|
x: number;
|
|
7812
8727
|
y: number;
|
|
7813
8728
|
};
|
|
7814
|
-
/**
|
|
8729
|
+
/** Nombre TOTAL de composants, à toutes les profondeurs — c'est lui que borne `itemsMax`. */
|
|
8730
|
+
declare function atelierCompter(layout: AtelierLayout): number;
|
|
8731
|
+
/**
|
|
8732
|
+
* Retrouve un composant OÙ QU'IL VIVE, à n'importe quelle profondeur.
|
|
8733
|
+
*
|
|
8734
|
+
* `parentId` dit d'où il vient — c'est ce qui permet à l'inspecteur de remonter, d'un
|
|
8735
|
+
* cran à la fois. `profondeur` dit à quel étage il se trouve (0 = sur le plan) : la
|
|
8736
|
+
* pose s'en sert pour refuser AVANT d'agir, plutôt que de tronquer après.
|
|
8737
|
+
*/
|
|
8738
|
+
declare function atelierTrouver(layout: AtelierLayout, id: string): {
|
|
8739
|
+
item: AtelierItem;
|
|
8740
|
+
parentId: string | null;
|
|
8741
|
+
profondeur: number;
|
|
8742
|
+
} | null;
|
|
8743
|
+
/**
|
|
8744
|
+
* Pose un composant — sur le plan, ou DANS un conteneur (`dansId`), à n'importe quelle
|
|
8745
|
+
* profondeur jusqu'à `profondeurMax`.
|
|
8746
|
+
*
|
|
8747
|
+
* Dans un conteneur, l'enfant vit en FLUX : ajouté en fin, x/y/w/h normalisés (0/0/12/1),
|
|
8748
|
+
* l'ordre fait loi. Refus VISIBLE (id vide) si le conteneur n'existe pas, s'il est déjà
|
|
8749
|
+
* au dernier étage autorisé, ou si un plafond est atteint — jamais de troncature
|
|
8750
|
+
* silencieuse, même doctrine que le plafond global.
|
|
8751
|
+
*/
|
|
7815
8752
|
declare function atelierAjouter(layout: AtelierLayout, type: string, gabarit?: {
|
|
7816
8753
|
w?: number;
|
|
7817
8754
|
h?: number;
|
|
7818
8755
|
props?: AtelierItem['props'];
|
|
7819
|
-
}): {
|
|
8756
|
+
}, dansId?: string): {
|
|
7820
8757
|
layout: AtelierLayout;
|
|
7821
8758
|
id: string;
|
|
7822
8759
|
};
|
|
7823
|
-
/**
|
|
8760
|
+
/**
|
|
8761
|
+
* Retire un composant, où qu'il vive et à quelque profondeur que ce soit.
|
|
8762
|
+
* Retirer un conteneur emporte toute sa descendance — jamais d'orphelin invisible.
|
|
8763
|
+
*/
|
|
7824
8764
|
declare function atelierRetirer(layout: AtelierLayout, id: string): AtelierLayout;
|
|
7825
|
-
/** Change une
|
|
8765
|
+
/** Change une propriété — où que vive le composant. `undefined` la supprime. */
|
|
7826
8766
|
declare function atelierDefinirProp(layout: AtelierLayout, id: string, nom: string, valeur: string | number | boolean | string[] | undefined): AtelierLayout;
|
|
8767
|
+
/**
|
|
8768
|
+
* Déplace un ENFANT d'un cran dans son conteneur (le flux : l'ordre fait loi).
|
|
8769
|
+
* Même chemin pour la souris et le clavier, comme le reste du modèle.
|
|
8770
|
+
*/
|
|
8771
|
+
declare function atelierReordonnerEnfant(layout: AtelierLayout, parentId: string, id: string, sens: -1 | 1): AtelierLayout;
|
|
7827
8772
|
/**
|
|
7828
8773
|
* Change la largeur, en gardant le bloc DANS la grille.
|
|
7829
8774
|
*
|
|
@@ -7877,6 +8822,12 @@ interface AtelierProp {
|
|
|
7877
8822
|
controle: 'interrupteur' | 'liste' | 'nombre' | 'texte' | 'liaison';
|
|
7878
8823
|
/** Valeurs proposées quand `controle === 'liste'`. */
|
|
7879
8824
|
choix?: string[];
|
|
8825
|
+
/**
|
|
8826
|
+
* La liste accepte AUSSI l'état vide : union `'a' | 'b' | null` — le troisième état
|
|
8827
|
+
* est « rien », pas un texte libre. L'inspecteur propose alors « (aucun) », qui
|
|
8828
|
+
* RETIRE la prop. Signalé par SZU le 24/08 sur `selectable`.
|
|
8829
|
+
*/
|
|
8830
|
+
videAutorise?: boolean;
|
|
7880
8831
|
}
|
|
7881
8832
|
interface AtelierComposant {
|
|
7882
8833
|
/**
|
|
@@ -7905,6 +8856,91 @@ interface AtelierComposant {
|
|
|
7905
8856
|
largeur: number;
|
|
7906
8857
|
/** Hauteur de départ, en lignes de grille. */
|
|
7907
8858
|
hauteur: number;
|
|
8859
|
+
/**
|
|
8860
|
+
* Comment le composant occupe sa cellule : il la REMPLIT (défaut — un bouton d'une
|
|
8861
|
+
* rangée fait la hauteur d'une rangée), ou il garde sa taille NATURELLE, centré
|
|
8862
|
+
* verticalement — pour les composants plus petits qu'un contrôle (tag, badge,
|
|
8863
|
+
* interrupteur…), qu'étirer déformerait.
|
|
8864
|
+
*
|
|
8865
|
+
* Vient de l'annotation `@atelier ajustement=naturel` portée par le composant : la
|
|
8866
|
+
* métadonnée voyage avec lui, l'atelier n'a aucune liste.
|
|
8867
|
+
*/
|
|
8868
|
+
ajustement: 'remplir' | 'naturel';
|
|
8869
|
+
/**
|
|
8870
|
+
* Ce composant DESSINE-T-IL quelque chose ? `aucune` = il occupe sa place sans rien
|
|
8871
|
+
* rendre (`cad-spacer`).
|
|
8872
|
+
*
|
|
8873
|
+
* Sert aux OUTILS DE CONCEPTION à le matérialiser : un composant qui n'affiche rien
|
|
8874
|
+
* est indistinguable d'un composant absent, on ne peut ni le voir ni le saisir. La
|
|
8875
|
+
* métadonnée voyage avec le composant — l'atelier n'a aucune liste à tenir à jour, et
|
|
8876
|
+
* c'est ce qui évite qu'un futur composant sans surface soit oublié.
|
|
8877
|
+
*
|
|
8878
|
+
* ⚠️ N'A AUCUN EFFET AU RENDU. Seule la feuille de style de l'ÉDITEUR agit dessus ;
|
|
8879
|
+
* le visualiseur et le shell frontless n'ont pas la règle, donc ils ne peuvent pas
|
|
8880
|
+
* l'afficher, même par erreur. La garantie est structurelle, pas conditionnelle.
|
|
8881
|
+
*/
|
|
8882
|
+
surface: 'propre' | 'aucune';
|
|
8883
|
+
/**
|
|
8884
|
+
* Icône de palette (`@atelier icone=…`), VALIDÉE contre le jeu d'icônes réel : un nom
|
|
8885
|
+
* inconnu retombe sur `null` plutôt que d'afficher un carré cassé — mieux vaut vide
|
|
8886
|
+
* que faux, comme `role`. Les correspondances vivent sur les composants (88 posées le
|
|
8887
|
+
* 24/08), jamais dans une table de l'atelier.
|
|
8888
|
+
*/
|
|
8889
|
+
icone: string | null;
|
|
8890
|
+
/**
|
|
8891
|
+
* Texte projeté DE DÉPART (`@atelier contenu=…`) : un bouton posé dit « Bouton » au
|
|
8892
|
+
* lieu de ressembler à un point. Réservé aux composants dont le corps passe par
|
|
8893
|
+
* `<ng-content>` ; l'atelier l'écrit sous la clé `__contenu` à la pose.
|
|
8894
|
+
*/
|
|
8895
|
+
contenu: string | null;
|
|
8896
|
+
/**
|
|
8897
|
+
* Ce composant ACCUEILLE des enfants, et dit COMMENT :
|
|
8898
|
+
* · `flux` (panel, carte, fieldset…) — enfants dans une grille de flux 12 colonnes,
|
|
8899
|
+
* chacun enveloppé d'un bloc d'atelier (largeur, isolation d'échec, ajustement) ;
|
|
8900
|
+
* · `direct` (groupe de boutons…) — enfants projetés NUS, sans enveloppe ni grille :
|
|
8901
|
+
* pour les composants dont les styles ciblent leurs enfants DIRECTS et que toute
|
|
8902
|
+
* enveloppe casserait (pilule, segments accolés).
|
|
8903
|
+
* `false` : rien ne se pose dedans. Un seul niveau dans tous les cas.
|
|
8904
|
+
*/
|
|
8905
|
+
conteneur: 'flux' | 'direct' | false;
|
|
8906
|
+
/**
|
|
8907
|
+
* Ce composant n'a de sens QUE DANS un hôte (`@atelier dans=cad-map`) : les pièces de
|
|
8908
|
+
* carte, par exemple, s'instancient sans erreur mais ne montrent rien de sensé posées
|
|
8909
|
+
* seules. La palette les MASQUE tant que leur hôte n'est pas la cible de pose — elles
|
|
8910
|
+
* apparaissent dans leur groupe quand on est « dans » le bon conteneur.
|
|
8911
|
+
*/
|
|
8912
|
+
dans: string | null;
|
|
8913
|
+
/**
|
|
8914
|
+
* Les seules clés que cet hôte accueille (`@atelier accepte=cad-avatar`), ou `null`
|
|
8915
|
+
* si rien n'est déclaré. Plusieurs clés se séparent par `|`.
|
|
8916
|
+
*
|
|
8917
|
+
* COMPLÈTE `dans=` sans le doubler. `dans=` dit « cette pièce ne va QUE là », ce qui
|
|
8918
|
+
* rend son hôte strict par ricochet — c'est le cas de `cad-tabs` et de `cad-map`.
|
|
8919
|
+
* Mais un `cad-avatar` se pose aussi très bien seul sur une carte : il ne peut donc
|
|
8920
|
+
* pas porter `dans=`, et c'est alors à l'HÔTE de dire ce qu'il prend.
|
|
8921
|
+
*/
|
|
8922
|
+
accepte: string[] | null;
|
|
8923
|
+
/**
|
|
8924
|
+
* Valeurs de départ des ENTRÉES à la pose (`@atelier pose-value=Étiquette`) — le
|
|
8925
|
+
* pendant de `contenu` pour les composants dont le visible passe par une entrée et
|
|
8926
|
+
* non par la projection : un tag sans `value` est une coquille invisible, constaté
|
|
8927
|
+
* au clic le 24/08. Modifiables et effaçables ensuite comme toute saisie.
|
|
8928
|
+
*/
|
|
8929
|
+
proposDeDepart: Record<string, string | number | boolean>;
|
|
8930
|
+
/**
|
|
8931
|
+
* Rang d'affichage DANS son groupe (`@atelier rang=1`), 99 sans annotation. Sert à
|
|
8932
|
+
* mettre en tête ce qu'on pose en premier (le panel chez les conteneurs) sans
|
|
8933
|
+
* qu'aucune liste d'ordre ne vive dans l'atelier.
|
|
8934
|
+
*/
|
|
8935
|
+
rang: number;
|
|
8936
|
+
/**
|
|
8937
|
+
* Jeux d'exemple (`@atelier-exemple <entrée> <JSON>`) : ce qui rend un composant À
|
|
8938
|
+
* DONNÉES jugeable posé nu — une table montre des lignes, un select des options.
|
|
8939
|
+
* Poussés AU RENDU quand l'item ne fournit pas l'entrée, JAMAIS écrits dans le
|
|
8940
|
+
* layout ni dans le code généré : le gabarit reste scalaire, l'exemple s'efface dès
|
|
8941
|
+
* qu'une vraie valeur arrive.
|
|
8942
|
+
*/
|
|
8943
|
+
exemples: Record<string, unknown>;
|
|
7908
8944
|
}
|
|
7909
8945
|
/** `CadBadgeComponent` → `cad-badge`. Dérivé, jamais saisi. */
|
|
7910
8946
|
declare function atelierCleDeSymbole(symbole: string): string;
|
|
@@ -7944,14 +8980,112 @@ declare function atelierControle(type: string | undefined): Pick<AtelierProp, 'c
|
|
|
7944
8980
|
declare function atelierPalette(): readonly AtelierComposant[];
|
|
7945
8981
|
/** Le composant derrière une clé de `layout.json`, ou `null` s'il n'existe plus. */
|
|
7946
8982
|
declare function atelierComposant(cle: string): AtelierComposant | null;
|
|
7947
|
-
/**
|
|
8983
|
+
/**
|
|
8984
|
+
* Cet hôte accepte-t-il ce composant ? `hote = null` désigne le PLAN.
|
|
8985
|
+
*
|
|
8986
|
+
* ⚠️ `dans=` SE LIT DANS LES DEUX SENS, et c'est toute la règle (arbitrage SZU 27/08) :
|
|
8987
|
+
*
|
|
8988
|
+
* · SENS DIRECT — une pièce ne se pose QUE chez son hôte. `cad-map-panel` posé seul
|
|
8989
|
+
* ne montre rien de sensé (signalé le 24/08), `cad-tab` hors d'un `cad-tabs` non plus.
|
|
8990
|
+
* · SENS INVERSE — un hôte QUI A des pièces n'accepte QUE ses pièces. `cad-tabs`
|
|
8991
|
+
* n'accueille que des `cad-tab`, `cad-map` que ses onze pièces de carte.
|
|
8992
|
+
*
|
|
8993
|
+
* La troisième règle en découle sans être écrite : un conteneur SANS pièce déclarée
|
|
8994
|
+
* (`cad-tab`, `cad-panel`, `cad-grid`…) accepte tout, sauf ce qui appartient à un autre
|
|
8995
|
+
* hôte. Rien à annoter : la relation existe déjà, on la lisait à moitié.
|
|
8996
|
+
*/
|
|
8997
|
+
declare function atelierAccepte(hote: string | null, cle: string): boolean;
|
|
8998
|
+
/**
|
|
8999
|
+
* Les clés des pièces d'un hôte, dans l'ordre de la palette. Vide si l'hôte n'est pas
|
|
9000
|
+
* strict — c'est le test « ce conteneur a-t-il des pièces à lui ? ».
|
|
9001
|
+
*/
|
|
9002
|
+
declare function atelierPiecesDe(hote: string | null): string[];
|
|
9003
|
+
/**
|
|
9004
|
+
* Recherche par nom, clé ou sélecteur. Rend TOUT ce qui correspond au terme.
|
|
9005
|
+
*
|
|
9006
|
+
* ⚠️ NE FILTRE PLUS SUR LA CIBLE, et c'est délibéré (SZU 27/08, règle déjà posée le
|
|
9007
|
+
* 26/08 pour le builder) : ce qu'un conteneur refuse doit apparaître VERROUILLÉ, pas
|
|
9008
|
+
* disparaître. Masquer fait deux dégâts — ça dérobe l'information (l'utilisateur ne sait
|
|
9009
|
+
* pas que le composant existe, ni pourquoi il n'est pas là) et ça fait SAUTER la palette
|
|
9010
|
+
* à chaque changement de sélection, si bien qu'on ne retrouve plus rien où on l'avait vu.
|
|
9011
|
+
*
|
|
9012
|
+
* L'appelant interroge `atelierAccepte` pour savoir quoi désactiver, et dit pourquoi.
|
|
9013
|
+
*/
|
|
7948
9014
|
declare function atelierChercher(terme: string): AtelierComposant[];
|
|
7949
|
-
/**
|
|
9015
|
+
/**
|
|
9016
|
+
* Les composants groupés, dans l'ordre d'affichage de la palette.
|
|
9017
|
+
*
|
|
9018
|
+
* Les groupes ne dépendent PAS de la cible : la palette garde la même forme quoi qu'on
|
|
9019
|
+
* sélectionne, ce qui est la moitié de l'intérêt du verrouillage-expliqué.
|
|
9020
|
+
*/
|
|
7950
9021
|
declare function atelierGroupes(terme?: string): {
|
|
7951
9022
|
groupe: string;
|
|
7952
9023
|
composants: AtelierComposant[];
|
|
7953
9024
|
}[];
|
|
7954
9025
|
|
|
9026
|
+
/**
|
|
9027
|
+
* OÙ un clic de palette pose réellement le composant.
|
|
9028
|
+
*
|
|
9029
|
+
* ── POURQUOI CE FICHIER EXISTE ──────────────────────────────────────────────────
|
|
9030
|
+
*
|
|
9031
|
+
* Depuis que les hôtes à pièces typées sont stricts, `cad-tabs` ne prend que des
|
|
9032
|
+
* `cad-tab`. Conséquence immédiate, signalée par SZU le 27/08 : « je fais comment pour
|
|
9033
|
+
* placer un composant sur cad-tab, puisque quand je sélectionne quelque chose c'est
|
|
9034
|
+
* cad-tabs qui est sélectionné ? » — le canevas ne sélectionne que les blocs du PLAN, et
|
|
9035
|
+
* la seule façon de viser un onglet était la liste de l'inspecteur. Ça marche, mais il
|
|
9036
|
+
* faut le savoir : une affordance qu'on doit enseigner n'en est pas une.
|
|
9037
|
+
*
|
|
9038
|
+
* La règle, telle qu'elle a été demandée dès le premier message (« cad-spacer devrait
|
|
9039
|
+
* aller dans cad-tab ») : quand l'hôte visé est STRICT et que le composant n'est pas une
|
|
9040
|
+
* de ses pièces, on DESCEND dans sa pièce courante. Poser un onglet ajoute un onglet ;
|
|
9041
|
+
* poser un bouton le met dans l'onglet affiché.
|
|
9042
|
+
*
|
|
9043
|
+
* Le routage ne s'applique QUE si l'hôte a exactement UN type de pièce et que cette
|
|
9044
|
+
* pièce est elle-même un conteneur. `cad-map` a onze pièces, dont aucune n'accueille
|
|
9045
|
+
* quoi que ce soit : il n'y a rien à router, et un `cad-button` y reste refusé — ce qui
|
|
9046
|
+
* est la vérité, pas une limite d'outil.
|
|
9047
|
+
*
|
|
9048
|
+
* Rien ici ne mute : on rend une DESTINATION, l'appelant décide.
|
|
9049
|
+
*/
|
|
9050
|
+
|
|
9051
|
+
/** La destination d'un clic de palette, résolue et explicable. */
|
|
9052
|
+
interface AtelierCible {
|
|
9053
|
+
/** Le conteneur qui recevra le composant. `null` = le plan. */
|
|
9054
|
+
dansId: string | null;
|
|
9055
|
+
/**
|
|
9056
|
+
* Pièce d'hôte à créer AVANT de poser, parce que l'hôte est strict et n'en a aucune.
|
|
9057
|
+
* L'appelant pose d'abord celle-ci dans `dansId`, puis le composant dans la pièce
|
|
9058
|
+
* obtenue. Elle apparaît à l'écran : rien de caché.
|
|
9059
|
+
*/
|
|
9060
|
+
pieceACreer: string | null;
|
|
9061
|
+
/**
|
|
9062
|
+
* Le chemin lisible de la destination — `['cad-tabs', 'Onglet']` — pour l'ANNONCER
|
|
9063
|
+
* avant le clic. Un routage qu'on ne voit pas est une surprise ; annoncé, c'est un
|
|
9064
|
+
* service.
|
|
9065
|
+
*/
|
|
9066
|
+
chemin: string[];
|
|
9067
|
+
/** Faux si ce composant ne peut se poser nulle part dans cette cible. */
|
|
9068
|
+
possible: boolean;
|
|
9069
|
+
}
|
|
9070
|
+
/**
|
|
9071
|
+
* Résout la destination d'un clic de palette.
|
|
9072
|
+
*
|
|
9073
|
+
* `selectionId` est le composant actuellement sélectionné — un conteneur accueille, un
|
|
9074
|
+
* composant simple fait poser à côté de lui, chez son parent.
|
|
9075
|
+
*/
|
|
9076
|
+
declare function atelierCibleDePose(layout: AtelierLayout, selectionId: string | null, cle: string): AtelierCible;
|
|
9077
|
+
/**
|
|
9078
|
+
* Les valeurs de DÉPART d'un composant qu'on pose : le texte projeté (`contenu=`) et
|
|
9079
|
+
* les entrées (`pose-*`) du catalogue.
|
|
9080
|
+
*
|
|
9081
|
+
* Extrait ici parce que DEUX poseurs doivent l'appliquer, et à DEUX endroits chacun :
|
|
9082
|
+
* au composant cliqué, et à la pièce d'hôte que le routage crée au passage. Cette
|
|
9083
|
+
* seconde application manquait — un onglet né du routage arrivait sans libellé, donc
|
|
9084
|
+
* invisible dans la barre (mesuré au clic dans le builder le 27/08). Un composant posé
|
|
9085
|
+
* sans ses valeurs de départ est une coquille, c'était déjà la leçon du 24/08.
|
|
9086
|
+
*/
|
|
9087
|
+
declare function atelierProposDePose(cle: string): AtelierItem['props'];
|
|
9088
|
+
|
|
7955
9089
|
/** `Relevé d'ouvrage` → `ReleveOuvrage`. */
|
|
7956
9090
|
declare function atelierNomDeClasse(titre: string): string;
|
|
7957
9091
|
/** `ReleveOuvrage` → `app-releve-ouvrage`. */
|
|
@@ -7970,11 +9104,12 @@ declare function atelierImports(layout: AtelierLayout): string[];
|
|
|
7970
9104
|
*/
|
|
7971
9105
|
declare function atelierGabarit(layout: AtelierLayout): string;
|
|
7972
9106
|
/**
|
|
7973
|
-
* Les styles du plan —
|
|
7974
|
-
*
|
|
9107
|
+
* Les styles du plan — la grille de frontless (`serverless/shell/src/frontless/grid.ts`),
|
|
9108
|
+
* à la rangée près : 44 px comme l'atelier (divergence assumée du 24/08 — la rangée fait
|
|
9109
|
+
* la hauteur d'un contrôle). Une maquette doit s'afficher chez qui la colle exactement
|
|
7975
9110
|
* comme dans l'atelier, y compris son repli mobile à une colonne.
|
|
7976
9111
|
*/
|
|
7977
|
-
declare const ATELIER_STYLES_PLAN = " .plan {\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n grid-auto-rows:
|
|
9112
|
+
declare const ATELIER_STYLES_PLAN = " .plan {\n display: grid;\n grid-template-columns: repeat(12, 1fr);\n grid-auto-rows: 44px;\n gap: 10px;\n }\n .bloc { grid-column: var(--gc); grid-row: var(--gr); min-width: 0; overflow: hidden; }\n .flux { display: grid; grid-template-columns: repeat(12, 1fr); gap: 8px; width: 100%; }\n .flux > * { min-width: 0; }\n @media (max-width: 700px) {\n .plan { grid-template-columns: 1fr; grid-auto-rows: minmax(44px, auto); }\n .bloc { grid-column: auto; grid-row: auto; }\n .bloc.cache-mobile { display: none; }\n .flux { grid-template-columns: 1fr; }\n .flux > * { grid-column: auto !important; }\n }";
|
|
7978
9113
|
/** Le composant Angular complet, prêt à coller dans un projet. */
|
|
7979
9114
|
declare function atelierCode(layout: AtelierLayout, titre?: string): string;
|
|
7980
9115
|
|
|
@@ -8003,10 +9138,10 @@ interface EntreeRegistre {
|
|
|
8003
9138
|
/** La balise à créer pour l'héberger. */
|
|
8004
9139
|
readonly hote: string;
|
|
8005
9140
|
}
|
|
8006
|
-
/** Symbole -> de quoi le construire.
|
|
9141
|
+
/** Symbole -> de quoi le construire. 106 composants posables. */
|
|
8007
9142
|
declare const REGISTRE: Readonly<Record<string, EntreeRegistre>>;
|
|
8008
9143
|
/** La classe d'un symbole, ou `null` s'il n'est pas posable (directive, ou hôte indéterminable). */
|
|
8009
9144
|
declare function classeDe(symbole: string): Type<unknown> | null;
|
|
8010
9145
|
|
|
8011
|
-
export { ATELIER_BORNES, ATELIER_COLONNES, ATELIER_STYLES_PLAN, BanGeocoder, CAD_BREAKPOINTS, CAD_CHART_PALETTE, CAD_COLOR_PRESETS, CAD_DEFAULT_BASEMAPS, CAD_DEFAULT_PRIORITY_BREAKPOINTS, CAD_DIALOG_DATA, CAD_FILTER_OPERATORS, CAD_GEOCODER, CAD_ICONS, CAD_ICONS_CEREMA, CAD_ICONS_CORE, CAD_ICONS_DATA, CAD_ICONS_FILES, CAD_ICONS_GEO, CAD_ICONS_SUBSET, CAD_ICONS_TOKEN, CAD_ICONS_UI, CAD_ICON_ALIASES, CAD_ICON_CATEGORIES, CAD_MAPLIBRE_CSS_URL, CAD_MAP_CHILD, CAD_MAP_DEFAULTS, CAD_MAP_GLOBAL_STYLES, CAD_MAP_GLYPHS, CAD_MAP_PALETTE, CAD_MASK_PRESETS, CAD_MOBILE_BREAKPOINT, CAD_RECURRENCE_INTERNE, CAD_SELECT_POSITIONS, CAD_SELECT_TRIGGER_STYLES, CAD_SHEET_DATA, CAD_SHELL, CAD_TOUCH_DENSITY, CadAccordionComponent, CadAccordionPanelComponent, CadAppShellComponent, CadAvatarComponent, CadAvatarGroupComponent, CadBadgeComponent, CadBadgeDirective, CadBlockDirective, CadBlockOverlayComponent, CadBlockUiComponent, CadBottomNavComponent, CadBreadcrumbComponent, CadBreadcrumbItemDirective, CadBreakpointService, CadButtonComponent, CadButtonGroupComponent, CadCalendarComponent, CadCaptionDirective, CadCardComponent, CadCardDirective, CadCardHeaderDirective, CadCarouselComponent, CadCarouselItemDirective, CadCascadeSelectComponent, CadCellTemplateDirective, CadCenterComponent, CadChartComponent, CadCheckboxComponent, CadChipComponent, CadClusterComponent, CadColDirective, CadColorpickerComponent, CadColumnComponent, CadComboComponent, CadConfirmContentComponent, CadConfirmDialogComponent, CadConfirmService, CadContainerComponent, CadDataviewComponent, CadDataviewGridDirective, CadDataviewListDirective, CadDatepickerComponent, CadDialogComponent, CadDialogContainerComponent, CadDialogFooterDirective, CadDialogHeaderDirective, CadDialogRef, CadDialogService, CadDividerComponent, CadDrawerComponent, CadEditFocusDirective, CadEditorTemplateDirective, CadEmptyDirective, CadFieldComponent, CadFieldsetComponent, CadFieldsetLegendDirective, CadFilterChipComponent, CadFilterTemplateDirective, CadGeocodingService, CadGridComponent, CadGroupFooterDirective, CadGroupHeaderDirective, CadHeaderTemplateDirective, CadIconComponent, CadIconRegistry, CadIfDirective, CadImageComponent, CadInplaceComponent, CadInplaceContentDirective, CadInplaceDisplayDirective, CadInputDirective, CadJsonEditorComponent, CadKeyFilterDirective, CadListEmptyDirective, CadListFooterDirective, CadListHeaderDirective, CadListItemDirective, CadListboxComponent, CadMapBasemapRegistry, CadMapBasemapsComponent, CadMapCardComponent, CadMapChromeComponent, CadMapComponent, CadMapDrawEngine, CadMapLayerComponent, CadMapLayerGroupComponent, CadMapLayerToggleComponent, CadMapLegendComponent, CadMapMenuComponent, CadMapPanelComponent, CadMapPanels, CadMapRailComponent, CadMapRailItemComponent, CadMapSearchComponent, CadMapSectionComponent, CadMaskDirective, CadMenuComponent, CadMenubarComponent, CadMessageComponent, CadMeterComponent, CadMeterLabelDirective, CadMultiselectComponent, CadNavDrawerComponent, CadNavDrawerFooterDirective, CadNavDrawerHeaderDirective, CadNumberComponent, CadOptionListComponent, CadOrderlistComponent, CadOrgNodeDirective, CadOrgchartComponent, CadOverlayBase, CadPaginatorComponent, CadPanelComponent, CadPanelContentDirective, CadPanelHeaderDirective, CadPanelHeadingDirective, CadPasswordComponent, CadPicklistComponent, CadPopoverComponent, CadProgressComponent, CadRadioComponent, CadRadioGroupComponent, CadRatingComponent, CadRowActionsDirective, CadRowCountDirective, CadRowExpansionDirective, CadScrollTopComponent, CadSegmentedComponent, CadSelectBase, CadSelectComponent, CadSelectEmptyDirective, CadSelectFooterDirective, CadSelectHeaderDirective, CadSelectItemDirective, CadSelectSelectedDirective, CadSheetContainerComponent, CadSheetRef, CadSheetService, CadSidebarComponent, CadSidebarPanelDirective, CadSkeletonComponent, CadSliderComponent, CadSpacerComponent, CadSpeedDialComponent, CadSpinnerComponent, CadSplitButtonComponent, CadSplitComponent, CadSplitterComponent, CadSplitterPanelComponent, CadStackComponent, CadStepComponent, CadStepperComponent, CadSwitchComponent, CadTabComponent, CadTabContentDirective, CadTabLabelDirective, CadTableBase, CadTableComponent, CadTableEdit, CadTableEditUi, CadTableFooterDirective, CadTablePanelComponent, CadTableResponsive, CadTableSelection, CadTableSticky, CadTableVirtual, CadTabsComponent, CadTagComponent, CadTaskCardDirective, CadTaskRowDirective, CadTaskboardComponent, CadTimeAxis, CadTimelineComponent, CadTimelineContentDirective, CadTimelineMarkerDirective, CadTimelineOppositeDirective, CadToastComponent, CadToastItemDirective, CadToastService, CadToggleButtonComponent, CadTooltipComponent, CadTooltipDirective, CadTreeAdapter, CadTreeComponent, CadTreeNodeDirective, CadTreeselectComponent, CadUploadComponent, CadUploadContentDirective, CadUploadEmptyDirective, CadUploadItemDirective, CadValueAccessor, CadWorkCalendar, MAPLIBRE_MIN_CSS, REGISTRE, addDays, addMonths, addYears, atelierAjouter, atelierBalise, atelierChercher, atelierCleDeSymbole, atelierCode, atelierComposant, atelierControle, atelierDefinirProp, atelierDeplacer, atelierGabarit, atelierGroupes, atelierImports, atelierLayoutVide, atelierManques, atelierNomDeClasse, atelierNormaliser, atelierNouvelId, atelierPalette, atelierPoser, atelierPremierePlaceLibre, atelierRecompacter, atelierRedimensionner, atelierReinitialiserIds, atelierRetirer, atelierSelecteurDeClasse, cadAggregate, cadApplyColumnOrder, cadApplyMask, cadArea, cadAutosizeWidth, cadBasemapThumbnail, cadBoundsOf, cadCategories, cadCentroid, cadColorExpr, cadCompare, cadCompareRank, cadCurrentOperator, cadDebutSemaine, cadDefaultMatchMode, cadDistance, cadDownloadCsv, cadDurationToMinutes, cadEstBandeau, cadExpandOccurrences, cadFilterData, cadFilterKindOf, cadFilterOperators, cadFilterRows, cadFindLinkCycle, cadFmtArea, cadFmtLength, cadFormatCell, cadFormatColor, cadFormatDuration, cadFormatSize, cadFrenchHolidays, cadGap, cadGeoJSONStats, cadGeometryKinds, cadHeaderMenuItems, cadHighlightJson, cadHslToRgb, cadHsvToRgb, cadId, cadIsGroupKey, cadIsRank, cadJsonErrorPos, cadLegendFromStyle, cadLength, cadMapEstVivante, cadMapLayerOf, cadMapLayersOf, cadMatch, cadMinuit, cadMonthGrid, cadMoveColumn, cadMoveItems, cadNormalize, cadNormalizeOptions, cadNormalizePlan, cadNumberExpr, cadNumeroJour, cadPackDay, cadPadBounds, cadParseColor, cadParseDuration, cadParseRRule, cadParseResponsive, cadPlanHeader, cadPlanTicks, cadProjeterClavier, cadProjeterCreation, cadProjeterEdition, cadProjeterMois, cadPropsTable, cadRankBetween, cadRankFirst, cadRankLast, cadRankSequence, cadResolve, cadResolveResponsive, cadResponsive, cadRgbToHsl, cadRgbToHsv, cadRingArea, cadRowKey, cadRowPredicate, cadSameValue, cadScaleNext, cadScaleStart, cadSortData, cadStartResize, cadStyleToExpressions, cadUnmask, cadUnscheduled, cadValidateGeoJSON, cadValueForOperator, cadWeekBands, cadWriteField, classeDe, compareDay, daysInMonth, endOfMonth, ensureMaplibreCss, formatDate, isBetweenDay, isSameDay, isSameMonth, isValidDate, isoOf, isoWeek, loadChartJs, loadMaplibre, monthNames, pad2, parseIso, parseWithFormat, provideCadIcons, startOfDay, startOfMonth, toDate, weekdayNames };
|
|
8012
|
-
export type { AtelierComposant, AtelierItem, AtelierLayout, AtelierProp, CadAggregate, CadAggregateFn, CadAggregates, CadBadgeSeverity, CadBand, CadBandRow, CadBasemap, CadBasemapKind, CadBottomNavItem, CadBounds, CadBreadcrumbItem, CadBreakpoint, CadCalendarChangeEvent, CadCalendarCreateEvent, CadCalendarDateEvent, CadCalendarEventEvent, CadCalendarSource, CadCalendarView, CadCarouselResponsive, CadCellContext, CadCellEditState, CadChartClickEvent, CadChartType, CadColorFormat, CadColorSpec, CadColumnAlign, CadColumnDataType, CadColumnEditor, CadColumnFilterOption, CadColumnFilterType, CadColumnMenuActionEvent, CadColumnPinEvent, CadColumnReorderEvent, CadColumnResizeEvent, CadColumnToggleEvent, CadComboSource, CadConfirmOptions, CadDataviewLayout, CadDateMode, CadDateSelection, CadDateValue, CadDialogConfig, CadDialogPosition, CadDialogSize, CadDisplayRow, CadDrawMode, CadDrawOptions, CadDrawerPosition, CadDuration, CadDurationUnit, CadEditBase, CadEditCompleteEvent, CadEditEvent, CadEditGeometry, CadEditKind, CadEditMode, CadEditorContext, CadExpandResult, CadFeatureEvent, CadFilterChangeEvent, CadFilterKind, CadFilterMatchMode, CadFilterMeta, CadFilterOperator, CadFilters, CadGap, CadGeoJSON, CadGeocodeOptions, CadGeocodeResult, CadGeocoder, CadGeometryKind, CadGroupBy, CadGroupContext, CadGroupInfo, CadGroupItem, CadHeaderMenuHost, CadHsva, CadLayerStyle, CadLazyLoadEvent, CadLegendItem, CadListGroup, CadListItem, CadListNormalizeOpts, CadListOption, CadListRow, CadLngLat, CadMapChild, CadMapChrome, CadMapClick, CadMapControl, CadMapLayerType, CadMapMenuConfig, CadMapMenuItem, CadMapMenuPanel, CadMapMenuRailItem, CadMapMenuSection, CadMapPosition, CadMapSide, CadMapView, CadMeasure, CadMenuItem, CadMenubarItem, CadMeterValue, CadMonthGrid, CadNavDrawerItem, CadNavDrawerMode, CadNavDrawerRow, CadNodeEvent, CadNormalizePlanOptions, CadNormalizedPlan, CadNumberSpec, CadOccurrence, CadOptionItem, CadOrgNode, CadOverlayHandle, CadPageEvent, CadPaintSet, CadPinnedColumns, CadPlacement, CadPlan, CadPlanAssignment, CadPlanBucket, CadPlanCalendar, CadPlanCalendarException, CadPlanDateInput, CadPlanHeader, CadPlanHours, CadPlanIssue, CadPlanLink, CadPlanLinkType, CadPlanMarker, CadPlanResource, CadPlanScale, CadPlanTask, CadPlanTick, CadPlanTicksOptions, CadPlannedLink, CadPlannedTask, CadPriorityBreakpoints, CadProgressSeverity, CadRRule, CadRRuleFreq, CadRecurrenceIssue, CadRgba, CadRowEditEvent, CadRowEditState, CadRowEvent, CadRowReorderEvent, CadSegmentOption, CadSelectItemContext, CadSelectionMode, CadSelectionPropagation, CadSeverity, CadSheetConfig, CadSheetHeight, CadShellApi, CadSize, CadSliderMark, CadSliderSeverity, CadSliderValue, CadSlot, CadSortEvent, CadSortMeta, CadSortOrder, CadStepState, CadTableEditContext, CadTableEditUiContext, CadTablePanelTab, CadTableResponsiveMode, CadTableSelectionContext, CadTagSeverity, CadTaskAssignEvent, CadTaskMoveEvent, CadTaskOpenEvent, CadTaskboardGroupBy, CadTaskboardMode, CadTimelineAlign, CadToastAction, CadToastMessage, CadToastPosition, CadToastSeverity, CadTreeAdapterOptions, CadTreeNode, CadTreeNodeEvent, CadUploadFile, CadUploadHandlerEvent, CadUploadStatus, CadVariant, CadVirtualRange, CadWipEvent, EntreeRegistre, MLExpression, MaplibreModule };
|
|
9146
|
+
export { ATELIER_BORNES, ATELIER_COLONNES, ATELIER_STYLES_PLAN, BanGeocoder, CAD_BREAKPOINTS, CAD_CHART_PALETTE, CAD_COLOR_PRESETS, CAD_DEFAULT_BASEMAPS, CAD_DEFAULT_PRIORITY_BREAKPOINTS, CAD_DIALOG_DATA, CAD_FILTER_OPERATORS, CAD_GEOCODER, CAD_ICONS, CAD_ICONS_CEREMA, CAD_ICONS_CORE, CAD_ICONS_DATA, CAD_ICONS_FILES, CAD_ICONS_GEO, CAD_ICONS_SUBSET, CAD_ICONS_TOKEN, CAD_ICONS_UI, CAD_ICON_ALIASES, CAD_ICON_CATEGORIES, CAD_MAPLIBRE_CSS_URL, CAD_MAP_CHILD, CAD_MAP_DEFAULTS, CAD_MAP_GLOBAL_STYLES, CAD_MAP_GLYPHS, CAD_MAP_PALETTE, CAD_MASK_PRESETS, CAD_MOBILE_BREAKPOINT, CAD_RECURRENCE_INTERNE, CAD_SELECT_POSITIONS, CAD_SELECT_TRIGGER_STYLES, CAD_SHEET_DATA, CAD_SHELL, CAD_TOUCH_DENSITY, CadAccordionComponent, CadAccordionPanelComponent, CadAppShellComponent, CadAvatarComponent, CadAvatarGroupComponent, CadBadgeComponent, CadBadgeDirective, CadBlockDirective, CadBlockOverlayComponent, CadBlockUiComponent, CadBottomNavComponent, CadBreadcrumbComponent, CadBreadcrumbItemDirective, CadBreakpointService, CadButtonComponent, CadButtonGroupComponent, CadCalendarComponent, CadCaptionDirective, CadCardComponent, CadCardDirective, CadCardHeaderDirective, CadCarouselComponent, CadCarouselItemDirective, CadCascadeSelectComponent, CadCellTemplateDirective, CadCenterComponent, CadChartComponent, CadCheckboxComponent, CadChipComponent, CadClusterComponent, CadColDirective, CadColorpickerComponent, CadColumnComponent, CadComboComponent, CadConfirmContentComponent, CadConfirmDialogComponent, CadConfirmService, CadContainerComponent, CadDataviewComponent, CadDataviewGridDirective, CadDataviewListDirective, CadDatepickerComponent, CadDialogComponent, CadDialogContainerComponent, CadDialogFooterDirective, CadDialogHeaderDirective, CadDialogRef, CadDialogService, CadDividerComponent, CadDrawerComponent, CadEditFocusDirective, CadEditorTemplateDirective, CadEmptyDirective, CadFieldComponent, CadFieldsetComponent, CadFieldsetLegendDirective, CadFilterChipComponent, CadFilterTemplateDirective, CadGanttComponent, CadGeocodingService, CadGridComponent, CadGroupFooterDirective, CadGroupHeaderDirective, CadHeaderTemplateDirective, CadIconComponent, CadIconRegistry, CadIfDirective, CadImageComponent, CadInplaceComponent, CadInplaceContentDirective, CadInplaceDisplayDirective, CadInputDirective, CadJsonEditorComponent, CadKeyFilterDirective, CadListEmptyDirective, CadListFooterDirective, CadListHeaderDirective, CadListItemDirective, CadListboxComponent, CadMapBasemapRegistry, CadMapBasemapsComponent, CadMapCardComponent, CadMapChromeComponent, CadMapComponent, CadMapDrawEngine, CadMapLayerComponent, CadMapLayerGroupComponent, CadMapLayerToggleComponent, CadMapLegendComponent, CadMapMenuComponent, CadMapPanelComponent, CadMapPanels, CadMapRailComponent, CadMapRailItemComponent, CadMapSearchComponent, CadMapSectionComponent, CadMaskDirective, CadMenuComponent, CadMenubarComponent, CadMessageComponent, CadMeterComponent, CadMeterLabelDirective, CadMultiselectComponent, CadNavDrawerComponent, CadNavDrawerFooterDirective, CadNavDrawerHeaderDirective, CadNumberComponent, CadOptionListComponent, CadOrderlistComponent, CadOrgNodeDirective, CadOrgchartComponent, CadOverlayBase, CadPaginatorComponent, CadPanelComponent, CadPanelContentDirective, CadPanelHeaderDirective, CadPanelHeadingDirective, CadPasswordComponent, CadPicklistComponent, CadPopoverComponent, CadProgressComponent, CadRadioComponent, CadRadioGroupComponent, CadRatingComponent, CadRowActionsDirective, CadRowCountDirective, CadRowExpansionDirective, CadSchedulerComponent, CadScrollTopComponent, CadSegmentedComponent, CadSelectBase, CadSelectComponent, CadSelectEmptyDirective, CadSelectFooterDirective, CadSelectHeaderDirective, CadSelectItemDirective, CadSelectSelectedDirective, CadSheetContainerComponent, CadSheetRef, CadSheetService, CadSidebarComponent, CadSidebarPanelDirective, CadSkeletonComponent, CadSliderComponent, CadSpacerComponent, CadSpeedDialComponent, CadSpinnerComponent, CadSplitButtonComponent, CadSplitComponent, CadSplitterComponent, CadSplitterPanelComponent, CadStackComponent, CadStepComponent, CadStepperComponent, CadSwitchComponent, CadTabComponent, CadTabContentDirective, CadTabLabelDirective, CadTableBase, CadTableComponent, CadTableEdit, CadTableEditUi, CadTableFooterDirective, CadTablePanelComponent, CadTableResponsive, CadTableSelection, CadTableSticky, CadTableVirtual, CadTabsComponent, CadTagComponent, CadTaskCardDirective, CadTaskRowDirective, CadTaskboardComponent, CadTimeAxis, CadTimelineComponent, CadTimelineContentDirective, CadTimelineMarkerDirective, CadTimelineOppositeDirective, CadToastComponent, CadToastItemDirective, CadToastService, CadToggleButtonComponent, CadTooltipComponent, CadTooltipDirective, CadTreeAdapter, CadTreeComponent, CadTreeNodeDirective, CadTreeselectComponent, CadUploadComponent, CadUploadContentDirective, CadUploadEmptyDirective, CadUploadItemDirective, CadValueAccessor, CadWorkCalendar, MAPLIBRE_MIN_CSS, REGISTRE, addDays, addMonths, addYears, atelierAccepte, atelierAdopterIds, atelierAjouter, atelierBalise, atelierChercher, atelierCibleDePose, atelierCleDeSymbole, atelierCode, atelierComposant, atelierCompter, atelierControle, atelierDefinirProp, atelierDeplacer, atelierGabarit, atelierGroupes, atelierImports, atelierLayoutVide, atelierManques, atelierNomDeClasse, atelierNormaliser, atelierNouvelId, atelierPalette, atelierPiecesDe, atelierPoser, atelierPremierePlaceLibre, atelierProposDePose, atelierRecompacter, atelierRedimensionner, atelierReinitialiserIds, atelierReordonnerEnfant, atelierRetirer, atelierSelecteurDeClasse, atelierTrouver, cadAggregate, cadApplyColumnOrder, cadApplyMask, cadArea, cadAutosizeWidth, cadBasemapThumbnail, cadBoundsOf, cadCategories, cadCentroid, cadClipFenetre, cadColorExpr, cadCompare, cadCompareRank, cadCurrentOperator, cadDebutSemaine, cadDefaultMatchMode, cadDistance, cadDownloadCsv, cadDurationToMinutes, cadEstBandeau, cadExpandOccurrences, cadFilterData, cadFilterKindOf, cadFilterOperators, cadFilterRows, cadFindLinkCycle, cadFmtArea, cadFmtLength, cadFormatCell, cadFormatColor, cadFormatDuration, cadFormatSize, cadFrenchHolidays, cadGanttRows, cadGap, cadGeoJSONStats, cadGeometryKinds, cadHeaderMenuItems, cadHighlightJson, cadHslToRgb, cadHsvToRgb, cadId, cadIsGroupKey, cadIsRank, cadJsonErrorPos, cadLegendFromStyle, cadLength, cadMapEstVivante, cadMapLayerOf, cadMapLayersOf, cadMatch, cadMinuit, cadMonthGrid, cadMoveColumn, cadMoveItems, cadNormalize, cadNormalizeOptions, cadNormalizePlan, cadNumberExpr, cadNumeroJour, cadPackDay, cadPackLanes, cadPadBounds, cadParseColor, cadParseDuration, cadParseRRule, cadParseResponsive, cadPlanHeader, cadPlanTicks, cadPointeFleche, cadProjeterClavier, cadProjeterCreation, cadProjeterEdition, cadProjeterMois, cadPropsTable, cadRankBetween, cadRankFirst, cadRankLast, cadRankSequence, cadResolve, cadResolveResponsive, cadResponsive, cadRgbToHsl, cadRgbToHsv, cadRingArea, cadRouterLien, cadRowKey, cadRowPredicate, cadSameValue, cadScaleNext, cadScaleStart, cadSchedulerPartition, cadSortData, cadStartResize, cadStyleToExpressions, cadUnmask, cadUnscheduled, cadValidateGeoJSON, cadValueForOperator, cadWeekBands, cadWriteField, classeDe, compareDay, daysInMonth, endOfMonth, ensureMaplibreCss, estHoteAPieces, formatDate, isBetweenDay, isSameDay, isSameMonth, isValidDate, isoOf, isoWeek, loadChartJs, loadMaplibre, monthNames, pad2, parseIso, parseWithFormat, provideCadIcons, startOfDay, startOfMonth, toDate, weekdayNames };
|
|
9147
|
+
export type { AtelierCible, AtelierComposant, AtelierItem, AtelierLayout, AtelierProp, CadAggregate, CadAggregateFn, CadAggregates, CadBadgeSeverity, CadBand, CadBandRow, CadBasemap, CadBasemapKind, CadBottomNavItem, CadBounds, CadBreadcrumbItem, CadBreakpoint, CadCalendarChangeEvent, CadCalendarCreateEvent, CadCalendarDateEvent, CadCalendarEventEvent, CadCalendarSource, CadCalendarView, CadCarouselResponsive, CadCellContext, CadCellEditState, CadChartClickEvent, CadChartType, CadColonneDef, CadColorFormat, CadColorSpec, CadColumnAlign, CadColumnDataType, CadColumnEditor, CadColumnFilterOption, CadColumnFilterType, CadColumnMenuActionEvent, CadColumnPinEvent, CadColumnReorderEvent, CadColumnResizeEvent, CadColumnToggleEvent, CadComboSource, CadConfirmOptions, CadDataviewLayout, CadDateMode, CadDateSelection, CadDateValue, CadDialogConfig, CadDialogPosition, CadDialogSize, CadDisplayRow, CadDrawMode, CadDrawOptions, CadDrawerPosition, CadDuration, CadDurationUnit, CadEditBase, CadEditCompleteEvent, CadEditEvent, CadEditGeometry, CadEditKind, CadEditMode, CadEditorContext, CadExpandResult, CadFeatureEvent, CadFenetreSpan, CadFilterChangeEvent, CadFilterKind, CadFilterMatchMode, CadFilterMeta, CadFilterOperator, CadFilters, CadGanttRow, CadGanttScale, CadGanttTaskEvent, CadGap, CadGeoJSON, CadGeocodeOptions, CadGeocodeResult, CadGeocoder, CadGeometryKind, CadGroupBy, CadGroupContext, CadGroupInfo, CadGroupItem, CadHeaderMenuHost, CadHoteAPieces, CadHsva, CadLaneSpan, CadLayerStyle, CadLazyLoadEvent, CadLegendItem, CadLienAncre, CadLienTrace, CadListGroup, CadListItem, CadListNormalizeOpts, CadListOption, CadListRow, CadLngLat, CadMapChild, CadMapChrome, CadMapClick, CadMapControl, CadMapLayerType, CadMapMenuConfig, CadMapMenuItem, CadMapMenuPanel, CadMapMenuRailItem, CadMapMenuSection, CadMapPosition, CadMapSide, CadMapView, CadMeasure, CadMenuItem, CadMenubarItem, CadMeterValue, CadMonthGrid, CadNavDrawerItem, CadNavDrawerMode, CadNavDrawerRow, CadNodeEvent, CadNormalizePlanOptions, CadNormalizedPlan, CadNumberSpec, CadOccurrence, CadOptionItem, CadOrgNode, CadOverlayHandle, CadPageEvent, CadPaintSet, CadPinnedColumns, CadPlacement, CadPlan, CadPlanAssignment, CadPlanBucket, CadPlanCalendar, CadPlanCalendarException, CadPlanDateInput, CadPlanHeader, CadPlanHours, CadPlanIssue, CadPlanLink, CadPlanLinkType, CadPlanMarker, CadPlanResource, CadPlanScale, CadPlanTask, CadPlanTick, CadPlanTicksOptions, CadPlannedLink, CadPlannedTask, CadPriorityBreakpoints, CadProgressSeverity, CadRRule, CadRRuleFreq, CadRecurrenceIssue, CadRgba, CadRowEditEvent, CadRowEditState, CadRowEvent, CadRowReorderEvent, CadSchedulerAssignEvent, CadSchedulerChangeEvent, CadSchedulerCreateEvent, CadSchedulerEventEvent, CadSchedulerMode, CadSchedulerScale, CadSchedulerScheduleEvent, CadSegmentOption, CadSelectItemContext, CadSelectionMode, CadSelectionPropagation, CadSeverity, CadSheetConfig, CadSheetHeight, CadShellApi, CadSize, CadSliderMark, CadSliderSeverity, CadSliderValue, CadSlot, CadSortEvent, CadSortMeta, CadSortOrder, CadStepState, CadTableEditContext, CadTableEditUiContext, CadTablePanelTab, CadTableResponsiveMode, CadTableSelectionContext, CadTagSeverity, CadTaskAssignEvent, CadTaskMoveEvent, CadTaskOpenEvent, CadTaskboardGroupBy, CadTaskboardMode, CadTimelineAlign, CadToastAction, CadToastMessage, CadToastPosition, CadToastSeverity, CadTreeAdapterOptions, CadTreeNode, CadTreeNodeEvent, CadUploadFile, CadUploadHandlerEvent, CadUploadStatus, CadVariant, CadVirtualRange, CadWipEvent, EntreeRegistre, MLExpression, MaplibreModule };
|