@cadriciel/ui 0.2.0 → 0.4.0

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.
@@ -4807,6 +4807,80 @@ declare class CadSplitterComponent {
4807
4807
  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"; }, ["panels"], ["*"], true, never>;
4808
4808
  }
4809
4809
 
4810
+ /**
4811
+ * Ce que la coquille dit à ses enfants, pour DÉCIDER.
4812
+ *
4813
+ * Les enfants qui ont seulement besoin de SE PLACER n'ont pas à injecter ceci : ils lisent
4814
+ * les propriétés CSS (`--cad-shell-top` / `-bottom` / `-nav`). Un toast se pose au-dessus de
4815
+ * la barre basse avec `calc(16px + var(--cad-shell-bottom, 0px))`, sans rien importer — et
4816
+ * le repli à `0px` le laisse fonctionner hors coquille.
4817
+ */
4818
+ interface CadShellApi {
4819
+ /** Sous le seuil mobile. */
4820
+ readonly compact: Signal<boolean>;
4821
+ /** Hauteurs mesurées, en px (zones sûres comprises : elles sont dans le padding des barres). */
4822
+ readonly topHeight: Signal<number>;
4823
+ readonly bottomHeight: Signal<number>;
4824
+ readonly navWidth: Signal<number>;
4825
+ /** Un enfant demande l'ouverture du menu sans connaître le composant qui le porte. */
4826
+ openNav(): void;
4827
+ }
4828
+ declare const CAD_SHELL: InjectionToken<CadShellApi>;
4829
+ /**
4830
+ * Coquille d'application : barre haute, menu, contenu, barre basse.
4831
+ *
4832
+ * POURQUOI ELLE EXISTE — la bibliothèque avait `cad-bottom-nav`, `cad-menubar`,
4833
+ * `cad-nav-drawer` et `cad-sidebar`, mais aucune coquille. Chaque application refaisait donc
4834
+ * sa mise en page, et retombait sur le même défaut, signalé par SZU le 21/08/2026 : la barre
4835
+ * du haut « défile au lieu de rester en place ». Ce n'était pas la barre qui bougeait, c'était
4836
+ * le DOCUMENT qui défilait.
4837
+ *
4838
+ * LE PARTI PRIS — on ne fixe pas les barres une par une (`position: fixed`), on rend la
4839
+ * coquille INCAPABLE de défiler : hauteur exacte du viewport, seul le contenu défile. Les
4840
+ * barres restent en place parce qu'elles ne peuvent pas bouger. Rien à réserver dans le
4841
+ * contenu, aucune zone sûre dupliquée, un seul seuil. `fixed` reste une porte de sortie pour
4842
+ * un cas particulier, pas le mécanisme.
4843
+ *
4844
+ * AGENCEMENT — barre haute sur TOUTE la largeur, menu dessous : c'est celui du template
4845
+ * CEREMA (`_topbar.scss` : `position: fixed; top: 0; width: 100%`), et une bibliothèque ne
4846
+ * doit pas imposer l'inverse de ce que font les applications maison.
4847
+ *
4848
+ * ELLE MESURE LE MENU, ELLE NE LE POSSÈDE PAS (arbitrage SZU : « le tiroir c'est le composant
4849
+ * menu lui-même »). Elle fonctionne donc sans menu (`--cad-shell-nav: 0`), n'exige aucun
4850
+ * enfant, et `openNav()` se contente d'émettre `navRequested` — c'est l'hôte qui ouvre son
4851
+ * `cad-nav-drawer`. Aucun couplage dans un sens ni dans l'autre.
4852
+ *
4853
+ * ```html
4854
+ * <cad-app-shell (navRequested)="menu.set(true)">
4855
+ * <header cadShellBar>…</header>
4856
+ * <cad-nav-drawer cadShellNav [items]="menu" [(open)]="ouvert"/>
4857
+ * <router-outlet />
4858
+ * <cad-bottom-nav cadShellBottom [items]="dest" [(value)]="page"/>
4859
+ * </cad-app-shell>
4860
+ * ```
4861
+ */
4862
+ declare class CadAppShellComponent implements CadShellApi {
4863
+ private readonly bp;
4864
+ /** Surcharge locale du seuil. Par defaut : celui de la bibliotheque (CAD_MOBILE_BREAKPOINT). */
4865
+ readonly compactAt: _angular_core.InputSignal<number | null>;
4866
+ /** Un enfant a demande le menu (bouton hamburger de la barre, par exemple). */
4867
+ readonly navRequested: _angular_core.OutputEmitterRef<void>;
4868
+ private readonly barRef;
4869
+ private readonly navRef;
4870
+ private readonly bottomRef;
4871
+ private readonly _top;
4872
+ private readonly _bottom;
4873
+ private readonly _nav;
4874
+ readonly topHeight: Signal<number>;
4875
+ readonly bottomHeight: Signal<number>;
4876
+ readonly navWidth: Signal<number>;
4877
+ readonly compact: Signal<boolean>;
4878
+ constructor();
4879
+ openNav(): void;
4880
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadAppShellComponent, never>;
4881
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadAppShellComponent, "cad-app-shell", never, { "compactAt": { "alias": "compactAt"; "required": false; "isSignal": true; }; }, { "navRequested": "navRequested"; }, never, ["[cadShellBar]", "[cadShellNav]", "*", "[cadShellBottom]"], true, never>;
4882
+ }
4883
+
4810
4884
  /**
4811
4885
  * URL optionnelle de la feuille de style MapLibre à injecter dans <head> (ex. `/assets/maplibre-gl.css`).
4812
4886
  * Sans token, cadriciel-ui embarque un sous-ensemble minimal (positionnement canvas/contrôles/popup/marqueurs) et
@@ -6513,5 +6587,592 @@ declare class CadChartComponent {
6513
6587
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadChartComponent, "cad-chart", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "plugins": { "alias": "plugins"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "palette": { "alias": "palette"; "required": false; "isSignal": true; }; "themed": { "alias": "themed"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "accessibleTable": { "alias": "accessibleTable"; "required": false; "isSignal": true; }; }, { "chartClick": "chartClick"; "chartHover": "chartHover"; "ready": "ready"; "error": "error"; }, never, never, true, never>;
6514
6588
  }
6515
6589
 
6516
- export { 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_SELECT_POSITIONS, CAD_SELECT_TRIGGER_STYLES, CAD_SHEET_DATA, CAD_TOUCH_DENSITY, CadAccordionComponent, CadAccordionPanelComponent, CadAvatarComponent, CadAvatarGroupComponent, CadBadgeComponent, CadBadgeDirective, CadBlockDirective, CadBlockOverlayComponent, CadBlockUiComponent, CadBottomNavComponent, CadBreadcrumbComponent, CadBreadcrumbItemDirective, CadBreakpointService, CadButtonComponent, CadButtonGroupComponent, 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, CadTimelineComponent, CadTimelineContentDirective, CadTimelineMarkerDirective, CadTimelineOppositeDirective, CadToastComponent, CadToastItemDirective, CadToastService, CadToggleButtonComponent, CadTooltipComponent, CadTooltipDirective, CadTreeAdapter, CadTreeComponent, CadTreeNodeDirective, CadTreeselectComponent, CadUploadComponent, CadUploadContentDirective, CadUploadEmptyDirective, CadUploadItemDirective, CadValueAccessor, MAPLIBRE_MIN_CSS, addDays, addMonths, addYears, cadAggregate, cadApplyColumnOrder, cadApplyMask, cadArea, cadAutosizeWidth, cadBasemapThumbnail, cadBoundsOf, cadCategories, cadCentroid, cadColorExpr, cadCompare, cadCurrentOperator, cadDefaultMatchMode, cadDistance, cadDownloadCsv, cadFilterData, cadFilterKindOf, cadFilterOperators, cadFilterRows, cadFmtArea, cadFmtLength, cadFormatCell, cadFormatColor, cadFormatSize, cadGap, cadGeoJSONStats, cadGeometryKinds, cadHeaderMenuItems, cadHighlightJson, cadHslToRgb, cadHsvToRgb, cadId, cadIsGroupKey, cadJsonErrorPos, cadLegendFromStyle, cadLength, cadMapEstVivante, cadMapLayerOf, cadMapLayersOf, cadMatch, cadMoveColumn, cadMoveItems, cadNormalize, cadNormalizeOptions, cadNumberExpr, cadPadBounds, cadParseColor, cadParseResponsive, cadPropsTable, cadResolve, cadResolveResponsive, cadResponsive, cadRgbToHsl, cadRgbToHsv, cadRingArea, cadRowKey, cadRowPredicate, cadSameValue, cadSortData, cadStartResize, cadStyleToExpressions, cadUnmask, cadValidateGeoJSON, cadValueForOperator, cadWriteField, compareDay, daysInMonth, endOfMonth, ensureMaplibreCss, formatDate, isBetweenDay, isSameDay, isSameMonth, isValidDate, isoOf, isoWeek, loadChartJs, loadMaplibre, monthNames, pad2, parseIso, parseWithFormat, provideCadIcons, startOfDay, startOfMonth, toDate, weekdayNames };
6517
- export type { CadAggregate, CadAggregateFn, CadAggregates, CadBadgeSeverity, CadBasemap, CadBasemapKind, CadBottomNavItem, CadBounds, CadBreadcrumbItem, CadBreakpoint, 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, CadEditCompleteEvent, CadEditEvent, CadEditMode, CadEditorContext, 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, CadNavDrawerItem, CadNavDrawerMode, CadNodeEvent, CadNumberSpec, CadOptionItem, CadOrgNode, CadOverlayHandle, CadPageEvent, CadPaintSet, CadPinnedColumns, CadPlacement, CadPriorityBreakpoints, CadProgressSeverity, CadRgba, CadRowEditEvent, CadRowEditState, CadRowEvent, CadRowReorderEvent, CadSegmentOption, CadSelectItemContext, CadSelectionMode, CadSelectionPropagation, CadSeverity, CadSheetConfig, CadSheetHeight, CadSize, CadSliderMark, CadSliderSeverity, CadSliderValue, CadSortEvent, CadSortMeta, CadSortOrder, CadStepState, CadTableEditContext, CadTableEditUiContext, CadTablePanelTab, CadTableResponsiveMode, CadTableSelectionContext, CadTagSeverity, CadTimelineAlign, CadToastAction, CadToastMessage, CadToastPosition, CadToastSeverity, CadTreeAdapterOptions, CadTreeNode, CadTreeNodeEvent, CadUploadFile, CadUploadHandlerEvent, CadUploadStatus, CadVariant, CadVirtualRange, MLExpression, MaplibreModule };
6590
+ /**
6591
+ * Modèle de planification commun aux trois vues (taskboard, scheduler, gantt).
6592
+ *
6593
+ * DOCTRINE — aucun champ n'est obligatoire hors `id`. Chaque vue déclare ses prérequis et
6594
+ * son repli : une tâche qu'une vue ne sait pas placer part dans sa zone « non planifié »,
6595
+ * jamais dans le silence. C'est cette règle, et elle seule, qui rend le document commun.
6596
+ *
6597
+ * Les noms suivent les conventions EXISTANTES plutôt qu'une invention maison :
6598
+ * - RFC 5545 (iCalendar) pour l'événement daté et sa récurrence : rrule, exdates, recurrenceId ;
6599
+ * - MS Project / Primavera P6 pour les liens FS/SS/FF/SF et le décalage (lag).
6600
+ * camelCase partout : c'est la convention du reste de la bibliothèque ET celle de slapi,
6601
+ * ce qui donne une correspondance 1 pour 1 entre le JSON et les colonnes.
6602
+ */
6603
+ /** Type de lien entre deux tâches (conventions MS Project). FS = fin -> début. */
6604
+ type CadPlanLinkType = 'FS' | 'SS' | 'FF' | 'SF';
6605
+ /** Date acceptée en entrée : ISO local, Date, horodatage, ou rien. */
6606
+ type CadPlanDateInput = string | Date | number | null | undefined;
6607
+ /** Plage horaire d'une journée ouvrée, en heures locales. `to: '24:00'` = fin de journée. */
6608
+ interface CadPlanHours {
6609
+ from: string;
6610
+ to: string;
6611
+ }
6612
+ /** Exception au calendrier : jour chômé, ou horaires particuliers, éventuellement pour une seule ressource. */
6613
+ interface CadPlanCalendarException {
6614
+ /** Jour visé, 'yyyy-MM-dd'. */
6615
+ date: string;
6616
+ /** Jour entièrement chômé. */
6617
+ off?: boolean;
6618
+ /** Horaires de remplacement (ignorés si `off`). */
6619
+ hours?: CadPlanHours[];
6620
+ /** Restreint l'exception à cette ressource (absent = tout le monde). */
6621
+ resource?: string | null;
6622
+ }
6623
+ /** Calendrier ouvré — lu par le scheduler et le gantt, ignoré par le taskboard. */
6624
+ interface CadPlanCalendar {
6625
+ /** Jours ouvrés, 0 = dimanche … 6 = samedi. Défaut : lundi -> vendredi. */
6626
+ workdays?: number[];
6627
+ /** Horaires ouvrés d'une journée type. Défaut : journée pleine (00:00 -> 24:00). */
6628
+ hours?: CadPlanHours[];
6629
+ /** Jours fériés, 'yyyy-MM-dd'. Voir `cadFrenchHolidays()` pour les produire. */
6630
+ holidays?: string[];
6631
+ exceptions?: CadPlanCalendarException[];
6632
+ }
6633
+ /** Ligne du scheduler · pastille du taskboard · affectation du gantt. */
6634
+ interface CadPlanResource {
6635
+ id: string;
6636
+ label?: string;
6637
+ /** Ressource parente (équipe, service) — hiérarchie facultative. */
6638
+ parent?: string | null;
6639
+ /** Capacité, en équivalents temps plein. Défaut 1. */
6640
+ capacity?: number;
6641
+ color?: string | null;
6642
+ [extra: string]: unknown;
6643
+ }
6644
+ /** Colonne du taskboard — sert aussi de GROUPE en mode liste. */
6645
+ interface CadPlanBucket {
6646
+ id: string;
6647
+ label?: string;
6648
+ order?: number;
6649
+ /** Limite de travail en cours : au-delà, la colonne s'affiche en alerte. */
6650
+ wipLimit?: number | null;
6651
+ color?: string | null;
6652
+ }
6653
+ /** Affectation d'une ressource à une tâche. `units` = part de la capacité (1 = plein temps). */
6654
+ interface CadPlanAssignment {
6655
+ resource: string;
6656
+ units?: number;
6657
+ }
6658
+ /** Une tâche : carte du taskboard, événement du scheduler, barre du gantt. */
6659
+ interface CadPlanTask {
6660
+ id: string;
6661
+ label?: string;
6662
+ /** Tâche parente : WBS du gantt, couloir du taskboard. */
6663
+ parent?: string | null;
6664
+ start?: CadPlanDateInput;
6665
+ end?: CadPlanDateInput;
6666
+ /** Alternative à `end`, en unités OUVRÉES : '3d', '4h', '90m', '2w'. */
6667
+ duration?: string | null;
6668
+ /** Jalon : instant sans durée. */
6669
+ milestone?: boolean;
6670
+ /** Colonne du taskboard. */
6671
+ bucket?: string | null;
6672
+ /** Rang FRACTIONNAIRE dans sa colonne / sa fratrie. Voir `cadRankBetween()`. */
6673
+ rank?: string | null;
6674
+ assignments?: CadPlanAssignment[];
6675
+ /** Avancement, 0 -> 1. */
6676
+ progress?: number | null;
6677
+ tags?: string[];
6678
+ color?: string | null;
6679
+ /** Ni déplaçable ni redimensionnable. */
6680
+ locked?: boolean;
6681
+ /** Règle RFC 5545, ex. 'FREQ=WEEKLY;BYDAY=TU'. */
6682
+ rrule?: string | null;
6683
+ /** Occurrences supprimées, 'yyyy-MM-ddTHH:mm'. */
6684
+ exdates?: string[];
6685
+ /** Occurrence MODIFIÉE : la série d'origine. */
6686
+ masterId?: string | null;
6687
+ /** … et la date de l'occurrence qu'elle remplace. */
6688
+ recurrenceId?: CadPlanDateInput;
6689
+ /** Charge utile applicative, jamais interprétée par les composants. */
6690
+ meta?: Record<string, unknown>;
6691
+ }
6692
+ /** Lien de dépendance entre deux tâches. */
6693
+ interface CadPlanLink {
6694
+ id?: string;
6695
+ from: string;
6696
+ to: string;
6697
+ /** Défaut 'FS'. */
6698
+ type?: CadPlanLinkType;
6699
+ /** Décalage en unités ouvrées, ex. '1d'. Négatif accepté ('-2d' = recouvrement). */
6700
+ lag?: string | null;
6701
+ }
6702
+ /** Repère vertical sur l'axe (échéance, jalon transverse). */
6703
+ interface CadPlanMarker {
6704
+ id?: string;
6705
+ date: CadPlanDateInput;
6706
+ label?: string;
6707
+ color?: string | null;
6708
+ }
6709
+ /** Le document commun. */
6710
+ interface CadPlan {
6711
+ version?: number;
6712
+ calendar?: CadPlanCalendar;
6713
+ resources?: CadPlanResource[];
6714
+ buckets?: CadPlanBucket[];
6715
+ tasks?: CadPlanTask[];
6716
+ links?: CadPlanLink[];
6717
+ markers?: CadPlanMarker[];
6718
+ }
6719
+ /** Tâche résolue : dates coercées, hiérarchie établie, valeurs par défaut posées. */
6720
+ interface CadPlannedTask {
6721
+ id: string;
6722
+ label: string;
6723
+ parent: string | null;
6724
+ start: Date | null;
6725
+ end: Date | null;
6726
+ milestone: boolean;
6727
+ bucket: string | null;
6728
+ rank: string;
6729
+ assignments: Required<CadPlanAssignment>[];
6730
+ progress: number;
6731
+ tags: string[];
6732
+ color: string | null;
6733
+ locked: boolean;
6734
+ rrule: string | null;
6735
+ exdates: string[];
6736
+ masterId: string | null;
6737
+ recurrenceId: Date | null;
6738
+ /** Profondeur dans la hiérarchie (0 = racine). */
6739
+ level: number;
6740
+ /** Identifiants des enfants directs, dans l'ordre des rangs. */
6741
+ children: string[];
6742
+ /** Vrai si la tâche est plaçable sur un axe de temps (début ET fin connus). */
6743
+ scheduled: boolean;
6744
+ /** Vrai si les dates viennent des descendants (barre récapitulative), pas de la tâche elle-même. */
6745
+ rolled: boolean;
6746
+ /** Vrai si la tâche porte une règle de récurrence (dépliage au lot 4). */
6747
+ recurring: boolean;
6748
+ meta: Record<string, unknown>;
6749
+ /** La ligne d'origine, intacte. */
6750
+ source: CadPlanTask;
6751
+ }
6752
+ /** Lien résolu : décalage converti en minutes ouvrées. */
6753
+ interface CadPlannedLink {
6754
+ id: string;
6755
+ from: string;
6756
+ to: string;
6757
+ type: CadPlanLinkType;
6758
+ lagMinutes: number;
6759
+ }
6760
+ /** Anomalie relevée à la normalisation. Jamais silencieuse, jamais bloquante. */
6761
+ interface CadPlanIssue {
6762
+ level: 'error' | 'warning';
6763
+ /** Code stable, utilisable en test et en traduction. */
6764
+ code: 'duplicate-task' | 'unknown-parent' | 'parent-cycle' | 'self-parent' | 'bad-date' | 'bad-duration' | 'end-before-start' | 'unknown-link-end' | 'self-link' | 'link-cycle' | 'unknown-bucket' | 'unknown-resource' | 'empty-calendar';
6765
+ message: string;
6766
+ /** Identifiant de l'objet concerné, quand il y en a un. */
6767
+ ref?: string;
6768
+ }
6769
+
6770
+ /**
6771
+ * Durées en unités OUVRÉES : '3d', '4h', '90m', '2w', '1.5d', '-2d'.
6772
+ *
6773
+ * Une durée n'a de sens qu'appuyée sur un calendrier : 'd' vaut une JOURNÉE OUVRÉE, dont la
6774
+ * longueur dépend des horaires déclarés (8 h ouvrées ou 24 h). La conversion en minutes se
6775
+ * fait donc via `CadWorkCalendar.dailyMinutes`, jamais par une constante.
6776
+ *
6777
+ * 'w' vaut une semaine OUVRÉE = nombre de jours ouvrés déclarés (5 par défaut), pas 7 jours.
6778
+ */
6779
+ /** Unité d'une durée ouvrée. */
6780
+ type CadDurationUnit = 'm' | 'h' | 'd' | 'w';
6781
+ interface CadDuration {
6782
+ value: number;
6783
+ unit: CadDurationUnit;
6784
+ }
6785
+ /**
6786
+ * Analyse une durée. Accepte les alias français ('j' = jour, 's' = semaine) et la virgule
6787
+ * décimale. Rend null si la forme est invalide — l'appelant en fait une anomalie, pas un plantage.
6788
+ */
6789
+ declare function cadParseDuration(input: string | number | null | undefined): CadDuration | null;
6790
+ /**
6791
+ * Convertit une durée en MINUTES OUVRÉES.
6792
+ * `dailyMinutes` = minutes ouvrées d'une journée type, `weekDays` = jours ouvrés par semaine.
6793
+ */
6794
+ declare function cadDurationToMinutes(d: CadDuration | null, dailyMinutes: number, weekDays: number): number;
6795
+ /** Rend une durée sous sa forme la plus lisible ('3d', '4h', '90m') depuis des minutes ouvrées. */
6796
+ declare function cadFormatDuration(minutes: number, dailyMinutes: number): string;
6797
+
6798
+ /**
6799
+ * Rang FRACTIONNAIRE : une chaîne ordonnable dans laquelle on peut toujours insérer.
6800
+ *
6801
+ * POURQUOI — déplacer une carte entre deux autres ne doit pas réécrire toute la colonne en
6802
+ * base. À plusieurs utilisateurs, une renumérotation entière garantit les collisions et coûte
6803
+ * un UPDATE par carte. Ici, insérer entre deux voisins produit une nouvelle chaîne comprise
6804
+ * entre les leurs : UN SEUL enregistrement change.
6805
+ *
6806
+ * C'est un FORMAT STOCKÉ, pas une astuce d'affichage — d'où sa place au socle, avant toute vue.
6807
+ *
6808
+ * INVARIANT — un rang produit ici ne se termine JAMAIS par le caractère plancher ('0'), sans
6809
+ * quoi il existerait des couples sans intervalle (rien ne tient entre '0' et '00'). Tous les
6810
+ * rangs manipulés doivent donc venir de ces fonctions.
6811
+ */
6812
+ /** Vrai si la chaîne est un rang exploitable (alphabet connu, pas de plancher final). */
6813
+ declare function cadIsRank(s: unknown): s is string;
6814
+ /**
6815
+ * Rang strictement compris entre `prev` et `next`.
6816
+ * `prev` absent = insertion en tête, `next` absent = insertion en queue, les deux = première carte.
6817
+ */
6818
+ declare function cadRankBetween(prev?: string | null, next?: string | null): string;
6819
+ /** Rang d'une carte posée AVANT toutes les autres. */
6820
+ declare const cadRankFirst: (first?: string | null) => string;
6821
+ /** Rang d'une carte posée APRÈS toutes les autres. */
6822
+ declare const cadRankLast: (last?: string | null) => string;
6823
+ /**
6824
+ * `n` rangs croissants bien répartis — pour initialiser une colonne ou rattraper des données
6825
+ * qui n'en portaient pas. La répartition laisse de la place entre chaque voisin.
6826
+ */
6827
+ declare function cadRankSequence(n: number): string[];
6828
+ /** Comparateur de rangs, utilisable tel quel dans un `sort`. */
6829
+ declare const cadCompareRank: (a: string, b: string) => number;
6830
+
6831
+ /**
6832
+ * Calendrier ouvré — le référentiel temps partagé par le scheduler et le gantt.
6833
+ *
6834
+ * Tout se calcule en HEURE MURALE locale (pas en millisecondes écoulées) : « 3 jours ouvrés »
6835
+ * veut dire trois fois les horaires déclarés, que la période traverse ou non un changement
6836
+ * d'heure. C'est la seule sémantique qui corresponde à ce qu'un planificateur attend.
6837
+ *
6838
+ * Les exceptions peuvent viser une ressource précise : un congé n'est pas un jour férié.
6839
+ * La recherche est donc toujours « exception de CETTE ressource, sinon exception globale ».
6840
+ */
6841
+
6842
+ type Interval = readonly [number, number];
6843
+ /**
6844
+ * Jours fériés français d'une année, au format 'yyyy-MM-dd' — les huit dates fixes plus les
6845
+ * trois mobiles adossées à Pâques. Évite d'avoir à saisir la liste à la main chaque année.
6846
+ */
6847
+ declare function cadFrenchHolidays(year: number): string[];
6848
+ /**
6849
+ * Calendrier ouvré immuable. Toute la logique est pure : elle se teste sans DOM et sans horloge.
6850
+ *
6851
+ * ```ts
6852
+ * const cal = new CadWorkCalendar({ workdays: [1,2,3,4,5], holidays: cadFrenchHolidays(2026) });
6853
+ * cal.addMinutes(new Date(2026, 7, 21, 16, 0), 4 * 60); // vendredi 16 h + 4 h ouvrées -> lundi
6854
+ * ```
6855
+ */
6856
+ declare class CadWorkCalendar {
6857
+ /** Jours ouvrés, 0 = dimanche. */
6858
+ readonly workdays: ReadonlySet<number>;
6859
+ /** Minutes ouvrées d'une journée type — sert d'étalon à l'unité 'd'. */
6860
+ readonly dailyMinutes: number;
6861
+ /** Jours ouvrés par semaine — sert d'étalon à l'unité 'w'. */
6862
+ readonly weekDays: number;
6863
+ private readonly base;
6864
+ private readonly holidays;
6865
+ /** Clé 'yyyy-MM-dd' pour une exception globale, 'yyyy-MM-dd|ressource' pour une exception ciblée. */
6866
+ private readonly exceptions;
6867
+ constructor(spec?: CadPlanCalendar | null);
6868
+ /** Vrai si aucun temps ouvré n'est déclarable — le normaliseur en fait une anomalie. */
6869
+ get empty(): boolean;
6870
+ /** Intervalles ouvrés d'une journée, en minutes depuis minuit. Vide = jour chômé. */
6871
+ intervals(date: Date, resource?: string | null): Interval[];
6872
+ /** Vrai si la journée comporte au moins un intervalle ouvré. */
6873
+ isWorkday(date: Date, resource?: string | null): boolean;
6874
+ /** Vrai si l'instant tombe DANS un intervalle ouvré (borne de fin exclue). */
6875
+ isWorkingTime(date: Date, resource?: string | null): boolean;
6876
+ /** Premier instant ouvré à partir de `date` (`date` lui-même s'il l'est). null si introuvable. */
6877
+ nextWorkingStart(date: Date, resource?: string | null): Date | null;
6878
+ /** Dernier instant ouvré jusqu'à `date` (exclu). null si introuvable. */
6879
+ prevWorkingEnd(date: Date, resource?: string | null): Date | null;
6880
+ /**
6881
+ * Avance (ou recule, si négatif) de `minutes` OUVRÉES depuis `from`.
6882
+ * Rend null si le calendrier ne permet pas d'y arriver (aucun jour ouvré déclaré).
6883
+ */
6884
+ addMinutes(from: Date, minutes: number, resource?: string | null): Date | null;
6885
+ /** Minutes OUVRÉES entre deux instants. Négatif si `b` précède `a`. */
6886
+ minutesBetween(a: Date, b: Date, resource?: string | null): number;
6887
+ private cursorOf;
6888
+ private scanForward;
6889
+ private scanBackward;
6890
+ private walkForward;
6891
+ private walkBackward;
6892
+ }
6893
+
6894
+ /**
6895
+ * Axe de temps : graduations, et conversion pixel <-> date.
6896
+ *
6897
+ * LE POINT CRITIQUE — l'axe n'est PAS une division. Écrire `x = (t - t0) / msParPixel` est
6898
+ * faux dès qu'on dézoome : un jour ne fait pas toujours 24 h (changement d'heure), un mois n'a
6899
+ * pas de largeur fixe, une année pas davantage. Février et mars occuperaient alors des largeurs
6900
+ * différentes alors que l'oeil attend des colonnes égales, et le défaut ne se voit qu'en mars
6901
+ * et en octobre — donc jamais pendant le développement.
6902
+ *
6903
+ * Ici, l'axe est une LISTE DE GRADUATIONS de largeur égale, et la conversion est une recherche
6904
+ * dans cette liste suivie d'une interpolation À L'INTÉRIEUR de la graduation trouvée. Chaque
6905
+ * graduation porte sa vraie durée ; l'arithmétique linéaire ne s'applique que localement.
6906
+ *
6907
+ * Corollaire de rendu : la grille de fond n'a pas à exister en DOM. Des graduations de largeur
6908
+ * égale se peignent en `repeating-linear-gradient`, ce qui évite de virtualiser 1 100 colonnes
6909
+ * pour trois ans au jour. Seuls l'en-tête visible et les barres sont rendus.
6910
+ */
6911
+
6912
+ /** Échelle d'une graduation. */
6913
+ type CadPlanScale = 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';
6914
+ /** Une graduation. `start` incluse, `end` exclue. */
6915
+ interface CadPlanTick {
6916
+ start: Date;
6917
+ end: Date;
6918
+ label: string;
6919
+ /** Début d'une unité supérieure (1er du mois, lundi, 1er janvier) — trait renforcé. */
6920
+ major: boolean;
6921
+ /** Hors temps ouvré selon le calendrier fourni (week-end, férié). */
6922
+ off: boolean;
6923
+ /** Contient l'instant « aujourd'hui ». */
6924
+ today: boolean;
6925
+ }
6926
+ interface CadPlanTicksOptions {
6927
+ locale?: string;
6928
+ /** Premier jour de la semaine, 0 = dimanche. Défaut 1 (lundi). */
6929
+ firstDay?: number;
6930
+ /** Calendrier servant à marquer les graduations chômées. */
6931
+ calendar?: CadWorkCalendar | null;
6932
+ /** Instant à marquer. `null` désactive le repère (utile en test). Défaut : maintenant. */
6933
+ today?: Date | null;
6934
+ /** Libellé sur mesure. */
6935
+ label?: (start: Date, scale: CadPlanScale, locale: string) => string;
6936
+ /** Garde-fou : au-delà, la génération s'arrête. Défaut 20 000. */
6937
+ max?: number;
6938
+ }
6939
+ /** Aligne un instant sur le début de sa graduation. */
6940
+ declare function cadScaleStart(date: Date, scale: CadPlanScale, firstDay?: number): Date;
6941
+ /**
6942
+ * Début de la graduation SUIVANTE. Construit en heure locale, donc juste aux changements d'heure.
6943
+ * L'entrée est alignée au préalable : `cadScaleNext(31 janvier, 'month')` rend le 1er février,
6944
+ * jamais le 28 — sans quoi une date de milieu de mois produirait une graduation décalée.
6945
+ */
6946
+ declare function cadScaleNext(date: Date, scale: CadPlanScale, firstDay?: number): Date;
6947
+ /**
6948
+ * Graduations couvrant [from, to], alignées sur l'échelle.
6949
+ * La dernière graduation dépasse `to` si nécessaire : un axe ne coupe jamais une unité en deux.
6950
+ */
6951
+ declare function cadPlanTicks(from: Date, to: Date, scale: CadPlanScale, options?: CadPlanTicksOptions): CadPlanTick[];
6952
+ /** En-tête à deux étages : le bandeau supérieur porte l'unité au-dessus de l'échelle courante. */
6953
+ interface CadPlanHeader {
6954
+ upper: CadPlanTick[];
6955
+ lower: CadPlanTick[];
6956
+ }
6957
+ declare function cadPlanHeader(from: Date, to: Date, scale: CadPlanScale, options?: CadPlanTicksOptions): CadPlanHeader;
6958
+ /**
6959
+ * Conversion pixel <-> date sur une liste de graduations de largeur égale.
6960
+ *
6961
+ * Hors de l'axe, la position est EXTRAPOLÉE sur la durée de la graduation de bord plutôt que
6962
+ * rabattue sur la borne : une barre qui commence avant la fenêtre garde une position cohérente,
6963
+ * et l'appelant décide seul de la découper ou de la masquer.
6964
+ */
6965
+ declare class CadTimeAxis {
6966
+ readonly ticks: readonly CadPlanTick[];
6967
+ /** Largeur d'une graduation, en pixels. */
6968
+ readonly unitWidth: number;
6969
+ constructor(ticks: readonly CadPlanTick[],
6970
+ /** Largeur d'une graduation, en pixels. */
6971
+ unitWidth: number);
6972
+ get width(): number;
6973
+ get start(): Date | null;
6974
+ get end(): Date | null;
6975
+ /** Indice de la graduation contenant `t` (millisecondes), par recherche binaire. */
6976
+ private indexOf;
6977
+ /** Abscisse d'une date, en pixels depuis le début de l'axe. */
6978
+ xOf(date: Date): number;
6979
+ /** Date à une abscisse donnée. */
6980
+ dateAt(x: number): Date | null;
6981
+ /** Position et largeur d'une barre. La largeur ne descend jamais sous zéro. */
6982
+ spanOf(start: Date, end: Date): {
6983
+ x: number;
6984
+ width: number;
6985
+ };
6986
+ }
6987
+
6988
+ /**
6989
+ * Normalisation du document de planification : ce que les trois vues consomment réellement.
6990
+ *
6991
+ * RÈGLE FONDATRICE — hors `id`, aucun champ n'est obligatoire. Une tâche sans dates reste une
6992
+ * tâche : le taskboard la montre, le gantt et le scheduler la rangent dans leur zone « non
6993
+ * planifié ». Rien n'est jamais écarté en silence ; tout écart devient une entrée de `issues`
6994
+ * portant un code stable, que l'appelant affiche ou ignore, mais qu'il peut toujours lire.
6995
+ *
6996
+ * Le normaliseur ne DÉCIDE de rien qu'il ne puisse justifier : il ne replanifie pas, ne
6997
+ * réordonne pas les dates, ne corrige pas les chevauchements. Il résout, indexe et signale.
6998
+ */
6999
+
7000
+ interface CadNormalizePlanOptions {
7001
+ /**
7002
+ * Une tâche parente sans dates propres prend l'étendue de ses descendants (barre récapitulative
7003
+ * du gantt). Défaut true — c'est le comportement attendu d'un WBS.
7004
+ */
7005
+ rollup?: boolean;
7006
+ }
7007
+ /** Document résolu. */
7008
+ interface CadNormalizedPlan {
7009
+ /** Toutes les tâches, dans l'ordre hiérarchique puis par rang. */
7010
+ tasks: CadPlannedTask[];
7011
+ byId: ReadonlyMap<string, CadPlannedTask>;
7012
+ /** Identifiants des racines, dans l'ordre. */
7013
+ roots: string[];
7014
+ links: CadPlannedLink[];
7015
+ resources: CadPlanResource[];
7016
+ buckets: CadPlanBucket[];
7017
+ calendar: CadWorkCalendar;
7018
+ /** Étendue des tâches placées. null si aucune ne l'est. */
7019
+ range: {
7020
+ start: Date;
7021
+ end: Date;
7022
+ } | null;
7023
+ issues: CadPlanIssue[];
7024
+ }
7025
+ /**
7026
+ * Résout un document brut : dates coercées, durées converties par le calendrier, hiérarchie
7027
+ * établie, rangs complétés, liens validés.
7028
+ */
7029
+ declare function cadNormalizePlan(plan: CadPlan | null | undefined, options?: CadNormalizePlanOptions): CadNormalizedPlan;
7030
+ /**
7031
+ * Identifiants participant à un cycle de dépendances, par tri topologique (Kahn) :
7032
+ * ce qui ne sort jamais de la file est exactement ce qui est pris dans un cycle.
7033
+ * Nécessaire bien avant le moteur de replanification — un cycle non détecté s'y traduirait
7034
+ * par une boucle infinie plutôt que par un message.
7035
+ */
7036
+ declare function cadFindLinkCycle(links: readonly CadPlannedLink[]): string[];
7037
+ /** Tâches qu'aucune vue temporelle ne sait placer — la zone « non planifié », jamais le silence. */
7038
+ declare const cadUnscheduled: (plan: CadNormalizedPlan) => CadPlannedTask[];
7039
+
7040
+ /** Contenu d'une carte : `<ng-template cadTaskCard let-task let-bucket="bucket">`. */
7041
+ declare class CadTaskCardDirective {
7042
+ readonly tpl: TemplateRef<any>;
7043
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadTaskCardDirective, never>;
7044
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadTaskCardDirective, "[cadTaskCard]", never, {}, {}, never, never, true, never>;
7045
+ }
7046
+ /** Contenu d'une ligne : `<ng-template cadTaskRow let-task let-group="group">`. */
7047
+ declare class CadTaskRowDirective {
7048
+ readonly tpl: TemplateRef<any>;
7049
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadTaskRowDirective, never>;
7050
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CadTaskRowDirective, "[cadTaskRow]", never, {}, {}, never, never, true, never>;
7051
+ }
7052
+ type CadTaskboardMode = 'board' | 'list' | 'auto';
7053
+ type CadTaskboardGroupBy = 'bucket' | 'resource';
7054
+ /** Déplacement demandé : changement de colonne et/ou de rang. */
7055
+ interface CadTaskMoveEvent {
7056
+ id: string;
7057
+ task: CadPlannedTask;
7058
+ from: string | null;
7059
+ to: string;
7060
+ rank: string;
7061
+ previousRank: string;
7062
+ index: number;
7063
+ }
7064
+ /** Réaffectation demandée — même geste que le déplacement, en liste groupée par personne. */
7065
+ interface CadTaskAssignEvent {
7066
+ id: string;
7067
+ task: CadPlannedTask;
7068
+ from: string | null;
7069
+ to: string | null;
7070
+ rank: string;
7071
+ }
7072
+ /** Limite de travail en cours dépassée : signalée, JAMAIS bloquante. */
7073
+ interface CadWipEvent {
7074
+ bucket: string;
7075
+ limit: number;
7076
+ count: number;
7077
+ }
7078
+ interface CadTaskOpenEvent {
7079
+ id: string;
7080
+ task: CadPlannedTask;
7081
+ event: Event;
7082
+ }
7083
+ interface Column {
7084
+ id: string;
7085
+ label: string;
7086
+ color: string | null;
7087
+ wipLimit: number | null;
7088
+ tasks: CadPlannedTask[];
7089
+ }
7090
+ /**
7091
+ * <cad-taskboard [plan]="plan" mode="auto" groupBy="bucket" (taskMove) (taskAssign) (taskOpen) (wipExceeded)>
7092
+ * <ng-template cadTaskCard let-t>…</ng-template>
7093
+ * <ng-template cadTaskRow let-t>…</ng-template>
7094
+ * </cad-taskboard>
7095
+ *
7096
+ * UNE SEULE ENTRÉE sépare les deux présentations : `mode`. On transforme la présentation, jamais
7097
+ * l'architecture de l'information — mêmes tâches, même rang, même geste, même intention. `auto`
7098
+ * bascule en liste sous le seuil mobile, sur le patron de `cad-nav-drawer`.
7099
+ *
7100
+ * LE COMPOSANT N'ÉCRIT JAMAIS. Il émet `taskMove` / `taskAssign` et laisse l'application décider :
7101
+ * c'est ce qui rend la source indifférente (slapi ou document statique). Pour que le geste reste
7102
+ * vivant sans mentir, il conserve un CORRECTIF LOCAL optimiste, abandonné dès qu'un nouveau `plan`
7103
+ * arrive — l'entrée n'est jamais mutée, et l'affichage suit l'application si elle refuse.
7104
+ *
7105
+ * La limite de travail en cours ALERTE mais ne bloque pas : un tableau qui refuse un geste sans
7106
+ * l'expliquer se contourne au lieu d'être lu.
7107
+ *
7108
+ * Clavier : Entrée / Espace ouvrent la tâche ; Ctrl (ou Cmd) + flèches la déplacent — gauche et
7109
+ * droite changent de colonne, haut et bas changent de rang. Chaque déplacement est annoncé.
7110
+ */
7111
+ declare class CadTaskboardComponent {
7112
+ /** Document de planification brut ; il est normalisé en interne et jamais muté. */
7113
+ readonly plan: _angular_core.InputSignal<CadPlan | null>;
7114
+ /** 'board' = cartes, 'list' = lignes groupées, 'auto' = liste sous le seuil mobile. */
7115
+ readonly mode: _angular_core.InputSignal<CadTaskboardMode>;
7116
+ /** Regroupement de la présentation liste. Par personne, le glisser réaffecte au lieu de ranger. */
7117
+ readonly groupBy: _angular_core.InputSignal<CadTaskboardGroupBy>;
7118
+ readonly dragDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
7119
+ /** Groupes repliés (présentation liste). */
7120
+ readonly collapsedKeys: _angular_core.ModelSignal<ReadonlySet<string>>;
7121
+ readonly emptyText: _angular_core.InputSignal<string>;
7122
+ readonly ariaLabel: _angular_core.InputSignal<string>;
7123
+ /** Format d'échéance (jetons de `formatDate`). */
7124
+ readonly dateFormat: _angular_core.InputSignal<string>;
7125
+ /** Instant de référence pour « en retard ». Explicite en test, sinon maintenant. */
7126
+ readonly today: _angular_core.InputSignal<Date | null>;
7127
+ readonly taskMove: _angular_core.OutputEmitterRef<CadTaskMoveEvent>;
7128
+ readonly taskAssign: _angular_core.OutputEmitterRef<CadTaskAssignEvent>;
7129
+ readonly taskOpen: _angular_core.OutputEmitterRef<CadTaskOpenEvent>;
7130
+ readonly wipExceeded: _angular_core.OutputEmitterRef<CadWipEvent>;
7131
+ protected readonly cardTpl: _angular_core.Signal<CadTaskCardDirective | undefined>;
7132
+ protected readonly rowTpl: _angular_core.Signal<CadTaskRowDirective | undefined>;
7133
+ protected readonly orphanHint = "Sans colonne connue \u2014 rang\u00E9e par d\u00E9faut, jamais escamot\u00E9e";
7134
+ protected readonly announcement: _angular_core.WritableSignal<string>;
7135
+ private readonly bp;
7136
+ private readonly patch;
7137
+ /** Document résolu par le socle de planification. */
7138
+ readonly normalized: _angular_core.Signal<_cadriciel_ui.CadNormalizedPlan>;
7139
+ /** Présentation effective, une fois `auto` tranché par le seuil. */
7140
+ readonly view: _angular_core.Signal<"list" | "board">;
7141
+ protected readonly compact: _angular_core.Signal<boolean>;
7142
+ /** Tâches après application du correctif optimiste (abandonné dès que `plan` change). */
7143
+ private readonly tasks;
7144
+ /** Colonnes déclarées, ou une colonne implicite : un tableau sans colonne reste un tableau. */
7145
+ private readonly declared;
7146
+ /** Colonnes (cartes, ou liste groupée par colonne) ou personnes (liste groupée par personne). */
7147
+ readonly columns: _angular_core.Signal<Column[]>;
7148
+ /** Colonne réelle d'une tâche : la sienne si elle existe, sinon la première. Jamais « nulle part ». */
7149
+ protected bucketOf(t: CadPlannedTask): string;
7150
+ protected isOrphan(t: CadPlannedTask): boolean;
7151
+ protected countOf(c: Column): string;
7152
+ protected wipState(c: Column): 'none' | 'full' | 'over';
7153
+ protected due(t: CadPlannedTask): string;
7154
+ protected isLate(t: CadPlannedTask): boolean;
7155
+ protected pct(t: CadPlannedTask): number;
7156
+ protected labelOfResource(id: string): string;
7157
+ /** Initiales d'une personne : « S. Zuccatti » donne SZ, « Charles » donne CH. */
7158
+ protected initialsOfResource(id: string): string;
7159
+ protected colorOfResource(id: string): string | null;
7160
+ protected isCollapsed(key: string): boolean;
7161
+ protected toggle(key: string): void;
7162
+ protected open(t: CadPlannedTask, event: Event): void;
7163
+ protected onDrop(e: CdkDragDrop<string>, kind: CadTaskboardGroupBy): void;
7164
+ protected onKey(e: KeyboardEvent, t: CadPlannedTask, colId: string): void;
7165
+ /**
7166
+ * Calcule le nouveau rang entre les deux voisins, pose le correctif optimiste et ÉMET.
7167
+ * `fromIndex` >= 0 signale un déplacement dans le même groupe : le voisinage se lit alors sur
7168
+ * la liste privée de la tâche déplacée, exactement comme le fait `moveItemInArray`.
7169
+ */
7170
+ private apply;
7171
+ /** L'annonce ne dit pas « déplacé » : elle dit OÙ et À QUELLE PLACE — la seule information utile sans la vue. */
7172
+ private announce;
7173
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CadTaskboardComponent, never>;
7174
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CadTaskboardComponent, "cad-taskboard", never, { "plan": { "alias": "plan"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "dragDisabled": { "alias": "dragDisabled"; "required": false; "isSignal": true; }; "collapsedKeys": { "alias": "collapsedKeys"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; }, { "collapsedKeys": "collapsedKeysChange"; "taskMove": "taskMove"; "taskAssign": "taskAssign"; "taskOpen": "taskOpen"; "wipExceeded": "wipExceeded"; }, ["cardTpl", "rowTpl"], never, true, never>;
7175
+ }
7176
+
7177
+ export { 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_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, 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, addDays, addMonths, addYears, cadAggregate, cadApplyColumnOrder, cadApplyMask, cadArea, cadAutosizeWidth, cadBasemapThumbnail, cadBoundsOf, cadCategories, cadCentroid, cadColorExpr, cadCompare, cadCompareRank, cadCurrentOperator, cadDefaultMatchMode, cadDistance, cadDownloadCsv, cadDurationToMinutes, 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, cadMoveColumn, cadMoveItems, cadNormalize, cadNormalizeOptions, cadNormalizePlan, cadNumberExpr, cadPadBounds, cadParseColor, cadParseDuration, cadParseResponsive, cadPlanHeader, cadPlanTicks, cadPropsTable, cadRankBetween, cadRankFirst, cadRankLast, cadRankSequence, cadResolve, cadResolveResponsive, cadResponsive, cadRgbToHsl, cadRgbToHsv, cadRingArea, cadRowKey, cadRowPredicate, cadSameValue, cadScaleNext, cadScaleStart, cadSortData, cadStartResize, cadStyleToExpressions, cadUnmask, cadUnscheduled, cadValidateGeoJSON, cadValueForOperator, cadWriteField, compareDay, daysInMonth, endOfMonth, ensureMaplibreCss, formatDate, isBetweenDay, isSameDay, isSameMonth, isValidDate, isoOf, isoWeek, loadChartJs, loadMaplibre, monthNames, pad2, parseIso, parseWithFormat, provideCadIcons, startOfDay, startOfMonth, toDate, weekdayNames };
7178
+ export type { CadAggregate, CadAggregateFn, CadAggregates, CadBadgeSeverity, CadBasemap, CadBasemapKind, CadBottomNavItem, CadBounds, CadBreadcrumbItem, CadBreakpoint, 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, CadEditCompleteEvent, CadEditEvent, CadEditMode, CadEditorContext, 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, CadNavDrawerItem, CadNavDrawerMode, CadNodeEvent, CadNormalizePlanOptions, CadNormalizedPlan, CadNumberSpec, 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, CadRgba, CadRowEditEvent, CadRowEditState, CadRowEvent, CadRowReorderEvent, CadSegmentOption, CadSelectItemContext, CadSelectionMode, CadSelectionPropagation, CadSeverity, CadSheetConfig, CadSheetHeight, CadShellApi, CadSize, CadSliderMark, CadSliderSeverity, CadSliderValue, 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, MLExpression, MaplibreModule };