@kksdev/ds-angular 1.4.0 → 1.5.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.
package/index.d.ts CHANGED
@@ -7,6 +7,7 @@ import * as _angular_cdk_overlay from '@angular/cdk/overlay';
7
7
  import { Overlay, ConnectedPosition } from '@angular/cdk/overlay';
8
8
  import { IconDefinition as IconDefinition$2, FaIconLibrary } from '@fortawesome/angular-fontawesome';
9
9
  import * as _fortawesome_fontawesome_common_types from '@fortawesome/fontawesome-common-types';
10
+ import * as _kksdev_ds_angular from '@kksdev/ds-angular';
10
11
  import { ArgTypes, Args } from '@storybook/angular';
11
12
 
12
13
  type BadgeType = 'status' | 'count' | 'label';
@@ -4160,7 +4161,7 @@ declare class DsDatePicker implements ControlValueAccessor, OnInit {
4160
4161
  readonly currentMonthName: _angular_core.Signal<string>;
4161
4162
  readonly calendarLabel: _angular_core.Signal<string>;
4162
4163
  readonly yearRange: _angular_core.Signal<number[]>;
4163
- readonly calendarWeeks: _angular_core.Signal<CalendarDay[][]>;
4164
+ readonly calendarWeeks: _angular_core.Signal<CalendarDay$1[][]>;
4164
4165
  ngOnInit(): void;
4165
4166
  navigateMonth(delta: number): void;
4166
4167
  toggleMonthPicker(): void;
@@ -4191,7 +4192,7 @@ declare class DsDatePicker implements ControlValueAccessor, OnInit {
4191
4192
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsDatePicker, never>;
4192
4193
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsDatePicker, "ds-date-picker", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "showTodayButton": { "alias": "showTodayButton"; "required": false; "isSignal": true; }; "showClearButton": { "alias": "showClearButton"; "required": false; "isSignal": true; }; "todayLabel": { "alias": "todayLabel"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "prevMonthLabel": { "alias": "prevMonthLabel"; "required": false; "isSignal": true; }; "nextMonthLabel": { "alias": "nextMonthLabel"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "showPresets": { "alias": "showPresets"; "required": false; "isSignal": true; }; "showRangePreview": { "alias": "showRangePreview"; "required": false; "isSignal": true; }; }, { "dateChange": "dateChange"; "rangeChange": "rangeChange"; }, never, never, true, never>;
4193
4194
  }
4194
- interface CalendarDay {
4195
+ interface CalendarDay$1 {
4195
4196
  date: Date;
4196
4197
  dayNumber: number;
4197
4198
  isCurrentMonth: boolean;
@@ -5188,6 +5189,664 @@ declare class DsTree {
5188
5189
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsTree, "ds-tree", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "checkable": { "alias": "checkable"; "required": false; "isSignal": true; }; "expandAll": { "alias": "expandAll"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "showLine": { "alias": "showLine"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loadChildren": { "alias": "loadChildren"; "required": false; "isSignal": true; }; }, { "nodeSelect": "nodeSelect"; "nodeExpand": "nodeExpand"; "nodeCheck": "nodeCheck"; }, never, never, true, never>;
5189
5190
  }
5190
5191
 
5192
+ /**
5193
+ * Niveaux de force du mot de passe.
5194
+ */
5195
+ type PasswordStrength = 'none' | 'weak' | 'medium' | 'strong';
5196
+ /**
5197
+ * Tailles disponibles pour le composant.
5198
+ */
5199
+ type PasswordStrengthSize = 'sm' | 'md' | 'lg';
5200
+ /**
5201
+ * Critère de validation du mot de passe.
5202
+ */
5203
+ interface PasswordCriterion {
5204
+ key: string;
5205
+ label: string;
5206
+ valid: boolean;
5207
+ }
5208
+ /**
5209
+ * # DsPasswordStrength
5210
+ *
5211
+ * Composant indicateur de force de mot de passe avec affichage visuel
5212
+ * (barres de progression) et optionnel des critères de validation.
5213
+ *
5214
+ * ## Usage
5215
+ *
5216
+ * ```html
5217
+ * <ds-password-strength
5218
+ * [password]="userPassword"
5219
+ * [minLength]="8"
5220
+ * [showLabel]="true"
5221
+ * [showCriteria]="true"
5222
+ * (strengthChange)="handleStrengthChange($event)" />
5223
+ * ```
5224
+ *
5225
+ * ## Calcul de la force
5226
+ *
5227
+ * - `none`: Champ vide
5228
+ * - `weak`: Longueur < minLength OU uniquement lettres
5229
+ * - `medium`: Longueur ≥ minLength ET (lettres+chiffres OU lettres+spéciaux)
5230
+ * - `strong`: Longueur ≥ minLength ET majuscules + minuscules + chiffres + spéciaux
5231
+ *
5232
+ * ## Accessibilité
5233
+ *
5234
+ * - Attribut `role="status"` pour annoncer les changements
5235
+ * - Label ARIA dynamique selon la force
5236
+ * - Couleurs sémantiques (error/warning/success)
5237
+ *
5238
+ * @component
5239
+ */
5240
+ declare class DsPasswordStrength {
5241
+ /**
5242
+ * Mot de passe à évaluer.
5243
+ * @default ''
5244
+ */
5245
+ password: _angular_core.InputSignal<string>;
5246
+ /**
5247
+ * Longueur minimale requise.
5248
+ * @default 8
5249
+ */
5250
+ minLength: _angular_core.InputSignal<number>;
5251
+ /**
5252
+ * Afficher le label textuel (ex: "Faible", "Moyen", "Fort").
5253
+ * @default true
5254
+ */
5255
+ showLabel: _angular_core.InputSignal<boolean>;
5256
+ /**
5257
+ * Afficher les critères détaillés de validation.
5258
+ * @default false
5259
+ */
5260
+ showCriteria: _angular_core.InputSignal<boolean>;
5261
+ /**
5262
+ * Taille du composant.
5263
+ * @default 'md'
5264
+ */
5265
+ size: _angular_core.InputSignal<PasswordStrengthSize>;
5266
+ /**
5267
+ * Émis lorsque la force du mot de passe change.
5268
+ */
5269
+ strengthChange: _angular_core.OutputEmitterRef<PasswordStrength>;
5270
+ /**
5271
+ * Icônes FontAwesome pour les critères.
5272
+ */
5273
+ protected readonly faCheck: _fortawesome_fontawesome_common_types.IconDefinition;
5274
+ protected readonly faTimes: _fortawesome_fontawesome_common_types.IconDefinition;
5275
+ /**
5276
+ * Regex patterns pour la validation.
5277
+ */
5278
+ private readonly hasUpperCase;
5279
+ private readonly hasLowerCase;
5280
+ private readonly hasNumber;
5281
+ private readonly hasSpecialChar;
5282
+ /**
5283
+ * Calcul de la force du mot de passe.
5284
+ */
5285
+ readonly strength: _angular_core.Signal<PasswordStrength>;
5286
+ /**
5287
+ * Label textuel de la force (pour affichage).
5288
+ */
5289
+ readonly strengthLabel: _angular_core.Signal<string>;
5290
+ /**
5291
+ * Label ARIA pour accessibilité.
5292
+ */
5293
+ readonly ariaLabel: _angular_core.Signal<string>;
5294
+ /**
5295
+ * Classes CSS calculées pour le conteneur.
5296
+ */
5297
+ readonly containerClasses: _angular_core.Signal<string>;
5298
+ /**
5299
+ * Barres indicatrices (3 barres).
5300
+ * Chaque barre est active selon la force.
5301
+ */
5302
+ readonly bars: _angular_core.Signal<{
5303
+ active: boolean;
5304
+ level: PasswordStrength;
5305
+ }[]>;
5306
+ /**
5307
+ * Liste des critères de validation (pour affichage détaillé).
5308
+ */
5309
+ readonly criteria: _angular_core.Signal<PasswordCriterion[]>;
5310
+ /**
5311
+ * Constructeur : émet les changements de force via effect.
5312
+ */
5313
+ constructor();
5314
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsPasswordStrength, never>;
5315
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsPasswordStrength, "ds-password-strength", never, { "password": { "alias": "password"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "showCriteria": { "alias": "showCriteria"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "strengthChange": "strengthChange"; }, never, never, true, never>;
5316
+ }
5317
+
5318
+ /**
5319
+ * Mode d'affichage de la timeline.
5320
+ */
5321
+ type TimelineMode = 'left' | 'right' | 'alternate';
5322
+ /**
5323
+ * Taille de la timeline.
5324
+ */
5325
+ type TimelineSize = 'sm' | 'md' | 'lg';
5326
+ /**
5327
+ * Couleur du point de la timeline.
5328
+ */
5329
+ type TimelineColor = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
5330
+ /**
5331
+ * Configuration d'un item de timeline.
5332
+ */
5333
+ interface TimelineItem {
5334
+ /**
5335
+ * Contenu textuel de l'événement.
5336
+ */
5337
+ content: string;
5338
+ /**
5339
+ * Date optionnelle de l'événement.
5340
+ */
5341
+ date?: string;
5342
+ /**
5343
+ * Icône FontAwesome optionnelle.
5344
+ */
5345
+ icon?: IconDefinition$1;
5346
+ /**
5347
+ * Couleur du point (si pas d'icône).
5348
+ * @default 'default'
5349
+ */
5350
+ color?: TimelineColor;
5351
+ /**
5352
+ * Position du contenu (pour mode alternate).
5353
+ * Si non défini, suit le mode global.
5354
+ */
5355
+ position?: 'left' | 'right';
5356
+ }
5357
+ /**
5358
+ * Événement émis au clic sur un item.
5359
+ */
5360
+ interface TimelineItemClickEvent {
5361
+ item: TimelineItem;
5362
+ index: number;
5363
+ }
5364
+ /**
5365
+ * # DsTimeline
5366
+ *
5367
+ * Composant pour afficher une liste d'événements dans un ordre chronologique vertical.
5368
+ *
5369
+ * ## Usage
5370
+ *
5371
+ * ```html
5372
+ * <ds-timeline
5373
+ * [items]="events"
5374
+ * mode="left"
5375
+ * size="md"
5376
+ * [pending]="false"
5377
+ * (itemClick)="onItemClick($event)">
5378
+ * </ds-timeline>
5379
+ * ```
5380
+ *
5381
+ * ## Modes
5382
+ *
5383
+ * - `left` : Contenu aligné à droite de la ligne
5384
+ * - `right` : Contenu aligné à gauche de la ligne
5385
+ * - `alternate` : Contenu alterné gauche/droite
5386
+ *
5387
+ * ## Accessibilité
5388
+ *
5389
+ * - Liste sémantique avec `role="list"` et `role="listitem"`
5390
+ * - Dates et contenus avec attributs ARIA
5391
+ * - Navigation clavier supportée
5392
+ *
5393
+ * @component
5394
+ */
5395
+ declare class DsTimeline {
5396
+ /**
5397
+ * Liste des événements à afficher.
5398
+ */
5399
+ items: _angular_core.InputSignal<TimelineItem[]>;
5400
+ /**
5401
+ * Mode d'affichage (position du contenu).
5402
+ * @default 'left'
5403
+ */
5404
+ mode: _angular_core.InputSignal<TimelineMode>;
5405
+ /**
5406
+ * Taille du composant.
5407
+ * @default 'md'
5408
+ */
5409
+ size: _angular_core.InputSignal<TimelineSize>;
5410
+ /**
5411
+ * Affiche un indicateur "en cours" à la fin.
5412
+ * @default false
5413
+ */
5414
+ pending: _angular_core.InputSignal<boolean>;
5415
+ /**
5416
+ * Texte de l'indicateur pending.
5417
+ * @default 'En cours...'
5418
+ */
5419
+ pendingContent: _angular_core.InputSignal<string>;
5420
+ /**
5421
+ * Inverse l'ordre d'affichage (plus récent en haut).
5422
+ * @default false
5423
+ */
5424
+ reverse: _angular_core.InputSignal<boolean>;
5425
+ /**
5426
+ * Événement émis au clic sur un item.
5427
+ */
5428
+ itemClick: _angular_core.OutputEmitterRef<TimelineItemClickEvent>;
5429
+ /**
5430
+ * Icônes par défaut.
5431
+ */
5432
+ protected readonly defaultIcon: IconDefinition$1;
5433
+ protected readonly pendingIcon: IconDefinition$1;
5434
+ /**
5435
+ * Items triés (reverse si demandé).
5436
+ */
5437
+ readonly sortedItems: _angular_core.Signal<TimelineItem[]>;
5438
+ /**
5439
+ * Classes CSS du conteneur.
5440
+ */
5441
+ readonly containerClasses: _angular_core.Signal<string[]>;
5442
+ /**
5443
+ * Classes CSS pour un item.
5444
+ */
5445
+ getItemClasses(item: TimelineItem, index: number): string[];
5446
+ /**
5447
+ * Classes CSS pour le point d'un item.
5448
+ */
5449
+ getDotClasses(item: TimelineItem): string[];
5450
+ /**
5451
+ * Détermine la position d'un item en fonction du mode.
5452
+ */
5453
+ getItemPosition(index: number): 'left' | 'right';
5454
+ /**
5455
+ * Gère le clic sur un item.
5456
+ */
5457
+ handleItemClick(item: TimelineItem, index: number): void;
5458
+ /**
5459
+ * Gère la touche Enter/Space sur un item.
5460
+ */
5461
+ handleKeydown(event: KeyboardEvent, item: TimelineItem, index: number): void;
5462
+ /**
5463
+ * Icône à afficher pour un item.
5464
+ */
5465
+ getIcon(item: TimelineItem): IconDefinition$1;
5466
+ /**
5467
+ * Vérifie si c'est le dernier item.
5468
+ */
5469
+ isLastItem(index: number): boolean;
5470
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsTimeline, never>;
5471
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsTimeline, "ds-timeline", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; "pendingContent": { "alias": "pendingContent"; "required": false; "isSignal": true; }; "reverse": { "alias": "reverse"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
5472
+ }
5473
+
5474
+ interface TransferItem {
5475
+ key: string;
5476
+ label: string;
5477
+ disabled?: boolean;
5478
+ description?: string;
5479
+ }
5480
+ type TransferDirection = 'left' | 'right';
5481
+ type TransferSize = 'sm' | 'md' | 'lg';
5482
+ interface TransferChangeEvent {
5483
+ source: TransferItem[];
5484
+ target: TransferItem[];
5485
+ }
5486
+ /**
5487
+ * DS Transfer
5488
+ *
5489
+ * Composant permettant de transférer des items entre deux listes (source et cible).
5490
+ * Inclut recherche, sélection multiple, et navigation clavier.
5491
+ *
5492
+ * @example
5493
+ * <ds-transfer
5494
+ * [source]="sourceItems"
5495
+ * [target]="targetItems"
5496
+ * sourceTitle="Disponibles"
5497
+ * targetTitle="Sélectionnés"
5498
+ * [showSearch]="true"
5499
+ * (transferChange)="onTransfer($event)"
5500
+ * />
5501
+ */
5502
+ declare class DsTransfer {
5503
+ readonly source: _angular_core.InputSignal<TransferItem[]>;
5504
+ readonly target: _angular_core.InputSignal<TransferItem[]>;
5505
+ readonly sourceTitle: _angular_core.InputSignal<string>;
5506
+ readonly targetTitle: _angular_core.InputSignal<string>;
5507
+ readonly showSearch: _angular_core.InputSignal<boolean>;
5508
+ readonly showSelectAll: _angular_core.InputSignal<boolean>;
5509
+ readonly disabled: _angular_core.InputSignal<boolean>;
5510
+ readonly size: _angular_core.InputSignal<TransferSize>;
5511
+ readonly transferChange: _angular_core.OutputEmitterRef<TransferChangeEvent>;
5512
+ protected readonly sourceSelected: _angular_core.WritableSignal<Set<string>>;
5513
+ protected readonly targetSelected: _angular_core.WritableSignal<Set<string>>;
5514
+ protected readonly sourceSearchQuery: _angular_core.WritableSignal<string>;
5515
+ protected readonly targetSearchQuery: _angular_core.WritableSignal<string>;
5516
+ protected readonly filteredSource: _angular_core.Signal<TransferItem[]>;
5517
+ protected readonly filteredTarget: _angular_core.Signal<TransferItem[]>;
5518
+ protected readonly sourceSelectableCount: _angular_core.Signal<number>;
5519
+ protected readonly targetSelectableCount: _angular_core.Signal<number>;
5520
+ protected readonly isAllSourceSelected: _angular_core.Signal<boolean>;
5521
+ protected readonly isAllTargetSelected: _angular_core.Signal<boolean>;
5522
+ protected readonly canTransferToTarget: _angular_core.Signal<boolean>;
5523
+ protected readonly canTransferToSource: _angular_core.Signal<boolean>;
5524
+ protected readonly containerClasses: _angular_core.Signal<{
5525
+ [x: string]: boolean;
5526
+ 'ds-transfer': boolean;
5527
+ 'ds-transfer--disabled': boolean;
5528
+ }>;
5529
+ transferToTarget(): void;
5530
+ transferToSource(): void;
5531
+ toggleSelectAll(direction: TransferDirection): void;
5532
+ toggleItemSelection(item: TransferItem, direction: TransferDirection): void;
5533
+ isItemSelected(item: TransferItem, direction: TransferDirection): boolean;
5534
+ onSearchInput(event: Event, direction: TransferDirection): void;
5535
+ clearSearch(direction: TransferDirection): void;
5536
+ getSelectedCount(direction: TransferDirection): number;
5537
+ getItemCount(direction: TransferDirection): number;
5538
+ private emitChange;
5539
+ protected getListboxId(direction: TransferDirection): string;
5540
+ protected getItemId(item: TransferItem, direction: TransferDirection): string;
5541
+ protected readonly sourceListboxLabel: _angular_core.Signal<string>;
5542
+ protected readonly targetListboxLabel: _angular_core.Signal<string>;
5543
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsTransfer, never>;
5544
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsTransfer, "ds-transfer", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "sourceTitle": { "alias": "sourceTitle"; "required": false; "isSignal": true; }; "targetTitle": { "alias": "targetTitle"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "transferChange": "transferChange"; }, never, never, true, never>;
5545
+ }
5546
+
5547
+ interface CarouselSlide {
5548
+ id: string;
5549
+ image?: string;
5550
+ alt?: string;
5551
+ title?: string;
5552
+ description?: string;
5553
+ }
5554
+ type CarouselEffect = 'slide' | 'fade';
5555
+ type CarouselDotsPosition = 'bottom' | 'top' | 'left' | 'right';
5556
+ declare class DsCarousel implements AfterViewInit, OnDestroy {
5557
+ slides: _angular_core.InputSignal<CarouselSlide[]>;
5558
+ autoplay: _angular_core.InputSignal<boolean>;
5559
+ autoplaySpeed: _angular_core.InputSignal<number>;
5560
+ effect: _angular_core.InputSignal<CarouselEffect>;
5561
+ dots: _angular_core.InputSignal<boolean>;
5562
+ dotsPosition: _angular_core.InputSignal<CarouselDotsPosition>;
5563
+ arrows: _angular_core.InputSignal<boolean>;
5564
+ infinite: _angular_core.InputSignal<boolean>;
5565
+ pauseOnHover: _angular_core.InputSignal<boolean>;
5566
+ activeIndex: _angular_core.InputSignal<number>;
5567
+ slideChange: _angular_core.OutputEmitterRef<{
5568
+ index: number;
5569
+ slide: CarouselSlide;
5570
+ }>;
5571
+ trackElement?: ElementRef<HTMLDivElement>;
5572
+ slideElements?: QueryList<ElementRef<HTMLDivElement>>;
5573
+ readonly icons: {
5574
+ readonly left: _fortawesome_fontawesome_common_types.IconDefinition;
5575
+ readonly right: _fortawesome_fontawesome_common_types.IconDefinition;
5576
+ };
5577
+ readonly internalActiveIndex: _angular_core.WritableSignal<number>;
5578
+ readonly isPaused: _angular_core.WritableSignal<boolean>;
5579
+ readonly isTransitioning: _angular_core.WritableSignal<boolean>;
5580
+ private autoplayTimer;
5581
+ private startX;
5582
+ private startY;
5583
+ private isDragging;
5584
+ constructor();
5585
+ ngAfterViewInit(): void;
5586
+ ngOnDestroy(): void;
5587
+ readonly containerClasses: _angular_core.Signal<string>;
5588
+ readonly trackStyle: _angular_core.Signal<{
5589
+ transform: string;
5590
+ } | {
5591
+ transform?: undefined;
5592
+ }>;
5593
+ slideClasses(index: number): string;
5594
+ dotClasses(index: number): string;
5595
+ next(): void;
5596
+ prev(): void;
5597
+ goTo(index: number): void;
5598
+ pause(): void;
5599
+ play(): void;
5600
+ onMouseEnter(): void;
5601
+ onMouseLeave(): void;
5602
+ onKeydown(event: KeyboardEvent): void;
5603
+ onTouchStart(event: TouchEvent): void;
5604
+ onTouchMove(event: TouchEvent): void;
5605
+ onTouchEnd(event: TouchEvent): void;
5606
+ private startAutoplay;
5607
+ private stopAutoplay;
5608
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsCarousel, never>;
5609
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsCarousel, "ds-carousel", never, { "slides": { "alias": "slides"; "required": false; "isSignal": true; }; "autoplay": { "alias": "autoplay"; "required": false; "isSignal": true; }; "autoplaySpeed": { "alias": "autoplaySpeed"; "required": false; "isSignal": true; }; "effect": { "alias": "effect"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "dotsPosition": { "alias": "dotsPosition"; "required": false; "isSignal": true; }; "arrows": { "alias": "arrows"; "required": false; "isSignal": true; }; "infinite": { "alias": "infinite"; "required": false; "isSignal": true; }; "pauseOnHover": { "alias": "pauseOnHover"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "slideChange": "slideChange"; }, never, ["[carousel-slide]"], true, never>;
5610
+ }
5611
+
5612
+ interface NotificationAction {
5613
+ label: string;
5614
+ handler: () => void;
5615
+ variant?: 'primary' | 'secondary' | 'ghost';
5616
+ }
5617
+ interface NotificationConfig {
5618
+ id?: string;
5619
+ title: string;
5620
+ message: string;
5621
+ type?: 'info' | 'success' | 'warning' | 'error';
5622
+ duration?: number;
5623
+ closable?: boolean;
5624
+ icon?: IconDefinition;
5625
+ actions?: NotificationAction[];
5626
+ }
5627
+ type NotificationPlacement = 'topRight' | 'topLeft' | 'bottomRight' | 'bottomLeft';
5628
+ interface NotificationItem extends NotificationConfig {
5629
+ id: string;
5630
+ timestamp: number;
5631
+ }
5632
+
5633
+ declare class DsNotificationContainerComponent {
5634
+ private readonly notificationService;
5635
+ placement: _angular_core.InputSignal<NotificationPlacement>;
5636
+ maxStack: _angular_core.InputSignal<number>;
5637
+ readonly notifications: _angular_core.Signal<_kksdev_ds_angular.NotificationItem[]>;
5638
+ readonly visibleNotifications: _angular_core.Signal<_kksdev_ds_angular.NotificationItem[]>;
5639
+ readonly containerClasses: _angular_core.Signal<string>;
5640
+ onClose(id: string): void;
5641
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsNotificationContainerComponent, never>;
5642
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsNotificationContainerComponent, "ds-notification-container", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "maxStack": { "alias": "maxStack"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5643
+ }
5644
+
5645
+ declare class DsNotificationItemComponent {
5646
+ notification: _angular_core.InputSignal<NotificationItem>;
5647
+ readonly closeClick: _angular_core.OutputEmitterRef<string>;
5648
+ readonly actionClick: _angular_core.OutputEmitterRef<{
5649
+ id: string;
5650
+ actionIndex: number;
5651
+ }>;
5652
+ readonly closeIcon: _fortawesome_fontawesome_common_types.IconDefinition;
5653
+ readonly notificationClasses: () => string[];
5654
+ onClose(): void;
5655
+ onActionClick(index: number): void;
5656
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsNotificationItemComponent, never>;
5657
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsNotificationItemComponent, "ds-notification-item", never, { "notification": { "alias": "notification"; "required": true; "isSignal": true; }; }, { "closeClick": "closeClick"; "actionClick": "actionClick"; }, never, never, true, never>;
5658
+ }
5659
+
5660
+ declare class DsNotificationService {
5661
+ private readonly notifications;
5662
+ private nextId;
5663
+ readonly notifications$: _angular_core.Signal<NotificationItem[]>;
5664
+ open(config: NotificationConfig): string;
5665
+ info(title: string, message: string, config?: Partial<NotificationConfig>): string;
5666
+ success(title: string, message: string, config?: Partial<NotificationConfig>): string;
5667
+ warning(title: string, message: string, config?: Partial<NotificationConfig>): string;
5668
+ error(title: string, message: string, config?: Partial<NotificationConfig>): string;
5669
+ close(id: string): void;
5670
+ closeAll(): void;
5671
+ private getDefaultIcon;
5672
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsNotificationService, never>;
5673
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DsNotificationService>;
5674
+ }
5675
+
5676
+ /**
5677
+ * Interface pour les événements du calendrier
5678
+ */
5679
+ interface CalendarEvent {
5680
+ id: string;
5681
+ date: Date;
5682
+ title: string;
5683
+ type?: 'default' | 'success' | 'warning' | 'error';
5684
+ }
5685
+ /**
5686
+ * Mode d'affichage du calendrier
5687
+ */
5688
+ type CalendarMode = 'month' | 'year';
5689
+ /**
5690
+ * Tailles du calendrier
5691
+ */
5692
+ type CalendarSize = 'sm' | 'md' | 'lg';
5693
+ /**
5694
+ * Représentation d'un jour dans le calendrier
5695
+ */
5696
+ interface CalendarDay {
5697
+ date: Date;
5698
+ isCurrentMonth: boolean;
5699
+ isToday: boolean;
5700
+ isDisabled: boolean;
5701
+ events: CalendarEvent[];
5702
+ }
5703
+ /**
5704
+ * Représentation d'un mois dans la vue année
5705
+ */
5706
+ interface CalendarMonth {
5707
+ monthIndex: number;
5708
+ label: string;
5709
+ isCurrentMonth: boolean;
5710
+ }
5711
+ /**
5712
+ * DsCalendar - Composant calendrier mensuel/annuel avec gestion d'événements
5713
+ *
5714
+ * @example
5715
+ * ```html
5716
+ * <ds-calendar
5717
+ * [value]="currentDate"
5718
+ * [events]="calendarEvents"
5719
+ * (dateSelect)="onDateSelect($event)"
5720
+ * (eventClick)="onEventClick($event)">
5721
+ * </ds-calendar>
5722
+ * ```
5723
+ */
5724
+ declare class DsCalendar {
5725
+ /**
5726
+ * Date courante affichée
5727
+ */
5728
+ value: _angular_core.InputSignal<Date>;
5729
+ /**
5730
+ * Mode d'affichage (month ou year)
5731
+ */
5732
+ mode: _angular_core.InputSignal<CalendarMode>;
5733
+ /**
5734
+ * Événements à afficher dans le calendrier
5735
+ */
5736
+ events: _angular_core.InputSignal<CalendarEvent[]>;
5737
+ /**
5738
+ * Taille du calendrier
5739
+ */
5740
+ size: _angular_core.InputSignal<CalendarSize>;
5741
+ /**
5742
+ * Locale pour les noms de jours et mois
5743
+ */
5744
+ locale: _angular_core.InputSignal<string>;
5745
+ /**
5746
+ * Premier jour de la semaine (0=dimanche, 1=lundi)
5747
+ */
5748
+ firstDayOfWeek: _angular_core.InputSignal<number>;
5749
+ /**
5750
+ * Fonction pour désactiver certaines dates
5751
+ */
5752
+ disabledDate: _angular_core.InputSignal<((date: Date) => boolean) | undefined>;
5753
+ /**
5754
+ * Émis lors de la sélection d'une date
5755
+ */
5756
+ dateSelect: _angular_core.OutputEmitterRef<Date>;
5757
+ /**
5758
+ * Émis lors du changement de mois
5759
+ */
5760
+ monthChange: _angular_core.OutputEmitterRef<Date>;
5761
+ /**
5762
+ * Émis lors du changement de mode
5763
+ */
5764
+ modeChange: _angular_core.OutputEmitterRef<CalendarMode>;
5765
+ /**
5766
+ * Émis lors du clic sur un événement
5767
+ */
5768
+ eventClick: _angular_core.OutputEmitterRef<CalendarEvent>;
5769
+ /**
5770
+ * Date actuellement affichée (mois/année)
5771
+ */
5772
+ readonly displayDate: _angular_core.WritableSignal<Date>;
5773
+ /**
5774
+ * Mode actuel (interne)
5775
+ */
5776
+ readonly currentMode: _angular_core.WritableSignal<CalendarMode>;
5777
+ readonly icons: {
5778
+ readonly chevronLeft: _fortawesome_fontawesome_common_types.IconDefinition;
5779
+ readonly chevronRight: _fortawesome_fontawesome_common_types.IconDefinition;
5780
+ };
5781
+ /**
5782
+ * Classes CSS de l'hôte
5783
+ */
5784
+ readonly hostClasses: _angular_core.Signal<string>;
5785
+ /**
5786
+ * Titre du calendrier (mois + année)
5787
+ */
5788
+ readonly calendarTitle: _angular_core.Signal<string>;
5789
+ /**
5790
+ * Noms des jours de la semaine
5791
+ */
5792
+ readonly weekDays: _angular_core.Signal<string[]>;
5793
+ /**
5794
+ * Grille des jours du mois (6 semaines)
5795
+ */
5796
+ readonly calendarGrid: _angular_core.Signal<CalendarDay[]>;
5797
+ /**
5798
+ * Grille des mois (vue année)
5799
+ */
5800
+ readonly monthGrid: _angular_core.Signal<CalendarMonth[]>;
5801
+ constructor();
5802
+ /**
5803
+ * Navigue vers le mois précédent
5804
+ */
5805
+ previousMonth(): void;
5806
+ /**
5807
+ * Navigue vers le mois suivant
5808
+ */
5809
+ nextMonth(): void;
5810
+ /**
5811
+ * Navigue vers l'année précédente
5812
+ */
5813
+ previousYear(): void;
5814
+ /**
5815
+ * Navigue vers l'année suivante
5816
+ */
5817
+ nextYear(): void;
5818
+ /**
5819
+ * Sélectionne une date
5820
+ */
5821
+ selectDate(day: CalendarDay): void;
5822
+ /**
5823
+ * Sélectionne un mois (en mode année)
5824
+ */
5825
+ selectMonth(month: CalendarMonth): void;
5826
+ /**
5827
+ * Toggle entre mode mois et année
5828
+ */
5829
+ toggleMode(): void;
5830
+ /**
5831
+ * Gère le clic sur un événement
5832
+ */
5833
+ onEventClick(event: CalendarEvent, mouseEvent: MouseEvent): void;
5834
+ /**
5835
+ * Retourne les classes CSS d'un jour
5836
+ */
5837
+ getDayClasses(day: CalendarDay): string;
5838
+ /**
5839
+ * Retourne les classes CSS d'un mois
5840
+ */
5841
+ getMonthClasses(month: CalendarMonth): string;
5842
+ /**
5843
+ * Retourne les classes CSS d'un événement
5844
+ */
5845
+ getEventClasses(event: CalendarEvent): string;
5846
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsCalendar, never>;
5847
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsCalendar, "ds-calendar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "events": { "alias": "events"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "disabledDate": { "alias": "disabledDate"; "required": false; "isSignal": true; }; }, { "dateSelect": "dateSelect"; "monthChange": "monthChange"; "modeChange": "modeChange"; "eventClick": "eventClick"; }, never, never, true, never>;
5848
+ }
5849
+
5191
5850
  /**
5192
5851
  * Positions standard pour dropdowns (menus déroulants, select, etc.)
5193
5852
  *
@@ -5556,5 +6215,5 @@ declare class DsI18nService {
5556
6215
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<DsI18nService>;
5557
6216
  }
5558
6217
 
5559
- export { AUTOCOMPLETE_POSITIONS, BUTTON_APPEARANCE_OPTIONS, BUTTON_SIZE_OPTIONS, BUTTON_VARIANT_OPTIONS, DROPDOWN_POSITIONS, DsAccordion, DsAlert, DsAvatar, DsBadge, DsBreadcrumb, DsButton, DsCard, DsCheckbox, DsChip, DsCombobox, DsContainer, DsDatePicker, DsDivider, DsDrawer, DsDropdown, DsEmpty, DsFileUpload, DsI18nService, DsInputField, DsInputTextarea, DsMenu, DsModalComponent, DsPagination, DsPopover, DsPopoverComponent, DsProgressBar, DsRadioGroup, DsRating, DsSearchInput, DsSelect, DsSkeleton, DsSlider, DsStepper, DsTable, DsTabs, DsTimePicker, DsToastComponent, DsToastContainerComponent, DsToastService, DsToggle, DsTooltip, DsTooltipComponent, DsTree, IconRegistryService, POPOVER_POSITIONS, PrimitiveBadge, PrimitiveButton, PrimitiveCheckbox, PrimitiveInput, PrimitiveRadio, PrimitiveTextarea, PrimitiveToggle, TOOLTIP_POSITIONS, buildButtonArgTypes, buildButtonArgs, createSizeRender, createVariantRender };
5560
- export type { AccordionChangeEvent, AccordionItem, AccordionSize, AccordionVariant, AlertSize, AlertType, AvatarShape, AvatarSize, BadgeAppearance, BadgeShape, BadgeSize, BadgeType, BadgeVariant, BreadcrumbItem, ButtonAppearance, ButtonSize, ButtonType, ButtonVariant, CardSize, CardVariant, CheckboxSize, CheckboxState, ChipColor, ChipSize, ChipVariant, ContainerGutter, ContainerMaxWidth, DatePickerMode, DatePickerSize, DateRange, DividerLabelPosition, DividerOrientation, DividerSize, DividerVariant, DrawerPosition, DrawerSize, DropdownItem, DropdownItemDTO, DsComboboxOption, DsComboboxSize, DsSelectOption, DsSelectSize, DsTableColumn, DsTableSize, DsTableVariant, EmptySize, FileUploadSize, I18nLabels, InputAppearance, InputSize, InputState, InputType, MenuItem, MenuSize, MenuTrigger, PageChangeEvent, PageSizeOption, PaginationSize, PopoverTrigger, ProgressBarMode, ProgressBarSize, ProgressBarVariant, RadioGroupLayout, RadioOption, RadioSize, RatingSize, SearchInputSize, SkeletonSize, SkeletonVariant, SliderOrientation, SliderSize, SliderValue, SortDirection, SortEvent, Step, StepChangeEvent, StepState, StepperOrientation, StepperSize, SupportedLocale, TabItem, TableState, TextareaAppearance, TextareaResize, TextareaSize, TextareaState, TimeFormat, TimePickerSize, TimeValue, ToastInstance, ToastOptions, ToastPosition, ToastType, ToggleSize, TreeNode, TreeNodeCheckEvent, TreeNodeExpandEvent, TreeNodeSelectEvent, TreeSize, UploadFile };
6218
+ export { AUTOCOMPLETE_POSITIONS, BUTTON_APPEARANCE_OPTIONS, BUTTON_SIZE_OPTIONS, BUTTON_VARIANT_OPTIONS, DROPDOWN_POSITIONS, DsAccordion, DsAlert, DsAvatar, DsBadge, DsBreadcrumb, DsButton, DsCalendar, DsCard, DsCarousel, DsCheckbox, DsChip, DsCombobox, DsContainer, DsDatePicker, DsDivider, DsDrawer, DsDropdown, DsEmpty, DsFileUpload, DsI18nService, DsInputField, DsInputTextarea, DsMenu, DsModalComponent, DsNotificationContainerComponent, DsNotificationItemComponent, DsNotificationService, DsPagination, DsPasswordStrength, DsPopover, DsPopoverComponent, DsProgressBar, DsRadioGroup, DsRating, DsSearchInput, DsSelect, DsSkeleton, DsSlider, DsStepper, DsTable, DsTabs, DsTimePicker, DsTimeline, DsToastComponent, DsToastContainerComponent, DsToastService, DsToggle, DsTooltip, DsTooltipComponent, DsTransfer, DsTree, IconRegistryService, POPOVER_POSITIONS, PrimitiveBadge, PrimitiveButton, PrimitiveCheckbox, PrimitiveInput, PrimitiveRadio, PrimitiveTextarea, PrimitiveToggle, TOOLTIP_POSITIONS, buildButtonArgTypes, buildButtonArgs, createSizeRender, createVariantRender };
6219
+ export type { AccordionChangeEvent, AccordionItem, AccordionSize, AccordionVariant, AlertSize, AlertType, AvatarShape, AvatarSize, BadgeAppearance, BadgeShape, BadgeSize, BadgeType, BadgeVariant, BreadcrumbItem, ButtonAppearance, ButtonSize, ButtonType, ButtonVariant, CalendarEvent, CalendarMode, CalendarSize, CardSize, CardVariant, CarouselDotsPosition, CarouselEffect, CarouselSlide, CheckboxSize, CheckboxState, ChipColor, ChipSize, ChipVariant, ContainerGutter, ContainerMaxWidth, DatePickerMode, DatePickerSize, DateRange, DividerLabelPosition, DividerOrientation, DividerSize, DividerVariant, DrawerPosition, DrawerSize, DropdownItem, DropdownItemDTO, DsComboboxOption, DsComboboxSize, DsSelectOption, DsSelectSize, DsTableColumn, DsTableSize, DsTableVariant, EmptySize, FileUploadSize, I18nLabels, InputAppearance, InputSize, InputState, InputType, MenuItem, MenuSize, MenuTrigger, NotificationAction, NotificationConfig, NotificationItem, NotificationPlacement, PageChangeEvent, PageSizeOption, PaginationSize, PasswordCriterion, PasswordStrength, PasswordStrengthSize, PopoverTrigger, ProgressBarMode, ProgressBarSize, ProgressBarVariant, RadioGroupLayout, RadioOption, RadioSize, RatingSize, SearchInputSize, SkeletonSize, SkeletonVariant, SliderOrientation, SliderSize, SliderValue, SortDirection, SortEvent, Step, StepChangeEvent, StepState, StepperOrientation, StepperSize, SupportedLocale, TabItem, TableState, TextareaAppearance, TextareaResize, TextareaSize, TextareaState, TimeFormat, TimePickerSize, TimeValue, TimelineColor, TimelineItem, TimelineItemClickEvent, TimelineMode, TimelineSize, ToastInstance, ToastOptions, ToastPosition, ToastType, ToggleSize, TransferChangeEvent, TransferDirection, TransferItem, TransferSize, TreeNode, TreeNodeCheckEvent, TreeNodeExpandEvent, TreeNodeSelectEvent, TreeSize, UploadFile };