@kksdev/ds-angular 1.2.5 → 1.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.
- package/fesm2022/kksdev-ds-angular.mjs +2669 -41
- package/fesm2022/kksdev-ds-angular.mjs.map +1 -1
- package/index.d.ts +875 -3
- package/package.json +2 -2
- package/src/styles/themes/_custom.scss +243 -0
- package/src/styles/themes/_dark.scss +244 -0
- package/src/styles/themes/_light.scss +244 -0
- package/src/styles/tokens/_primitives.scss +9 -0
- package/src/styles/tokens/_semantic.scss +166 -0
- package/src/styles/tokens/_tokens.scss +154 -0
package/index.d.ts
CHANGED
|
@@ -4084,6 +4084,10 @@ interface DateRange {
|
|
|
4084
4084
|
start: Date | null;
|
|
4085
4085
|
end: Date | null;
|
|
4086
4086
|
}
|
|
4087
|
+
interface DatePreset {
|
|
4088
|
+
label: string;
|
|
4089
|
+
getValue: () => DateRange;
|
|
4090
|
+
}
|
|
4087
4091
|
/**
|
|
4088
4092
|
* DsDatePicker - Composant de sélection de date
|
|
4089
4093
|
*
|
|
@@ -4122,6 +4126,12 @@ declare class DsDatePicker implements ControlValueAccessor, OnInit {
|
|
|
4122
4126
|
readonly prevMonthLabel: _angular_core.InputSignal<string>;
|
|
4123
4127
|
/** Label bouton mois suivant */
|
|
4124
4128
|
readonly nextMonthLabel: _angular_core.InputSignal<string>;
|
|
4129
|
+
/** Presets pour le mode range */
|
|
4130
|
+
readonly presets: _angular_core.InputSignal<DatePreset[]>;
|
|
4131
|
+
/** Afficher les presets */
|
|
4132
|
+
readonly showPresets: _angular_core.InputSignal<boolean>;
|
|
4133
|
+
/** Activer le preview au survol en mode range */
|
|
4134
|
+
readonly showRangePreview: _angular_core.InputSignal<boolean>;
|
|
4125
4135
|
/** Événement de changement de date (mode single) */
|
|
4126
4136
|
readonly dateChange: _angular_core.OutputEmitterRef<Date | null>;
|
|
4127
4137
|
/** Événement de changement de range */
|
|
@@ -4142,6 +4152,7 @@ declare class DsDatePicker implements ControlValueAccessor, OnInit {
|
|
|
4142
4152
|
readonly rangeEnd: _angular_core.WritableSignal<Date | null>;
|
|
4143
4153
|
readonly showMonthPicker: _angular_core.WritableSignal<boolean>;
|
|
4144
4154
|
readonly showYearPicker: _angular_core.WritableSignal<boolean>;
|
|
4155
|
+
readonly hoveredDate: _angular_core.WritableSignal<Date | null>;
|
|
4145
4156
|
/** Callbacks CVA */
|
|
4146
4157
|
private onChange;
|
|
4147
4158
|
private onTouched;
|
|
@@ -4164,6 +4175,12 @@ declare class DsDatePicker implements ControlValueAccessor, OnInit {
|
|
|
4164
4175
|
private isRangeStartDate;
|
|
4165
4176
|
private isRangeEndDate;
|
|
4166
4177
|
private isDateInRange;
|
|
4178
|
+
private isDateInPreviewRange;
|
|
4179
|
+
onDayMouseEnter(date: Date | null): void;
|
|
4180
|
+
onDayMouseLeave(): void;
|
|
4181
|
+
selectPreset(preset: DatePreset): void;
|
|
4182
|
+
/** Presets effectifs (utilise les presets fournis ou les défauts) */
|
|
4183
|
+
readonly effectivePresets: _angular_core.Signal<DatePreset[]>;
|
|
4167
4184
|
private isDateDisabled;
|
|
4168
4185
|
private isSameDay;
|
|
4169
4186
|
private formatDateForAria;
|
|
@@ -4172,7 +4189,7 @@ declare class DsDatePicker implements ControlValueAccessor, OnInit {
|
|
|
4172
4189
|
registerOnTouched(fn: () => void): void;
|
|
4173
4190
|
setDisabledState(isDisabled: boolean): void;
|
|
4174
4191
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsDatePicker, never>;
|
|
4175
|
-
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; }; }, { "dateChange": "dateChange"; "rangeChange": "rangeChange"; }, never, never, true, never>;
|
|
4192
|
+
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>;
|
|
4176
4193
|
}
|
|
4177
4194
|
interface CalendarDay {
|
|
4178
4195
|
date: Date;
|
|
@@ -4183,6 +4200,7 @@ interface CalendarDay {
|
|
|
4183
4200
|
isRangeStart: boolean;
|
|
4184
4201
|
isRangeEnd: boolean;
|
|
4185
4202
|
isInRange: boolean;
|
|
4203
|
+
isInPreviewRange: boolean;
|
|
4186
4204
|
isDisabled: boolean;
|
|
4187
4205
|
ariaLabel: string;
|
|
4188
4206
|
}
|
|
@@ -4316,6 +4334,860 @@ declare class DsMenu implements OnDestroy {
|
|
|
4316
4334
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsMenu, "ds-menu", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "itemSelected": "itemSelected"; "opened": "opened"; "closed": "closed"; }, never, ["[dsMenuTrigger]"], true, never>;
|
|
4317
4335
|
}
|
|
4318
4336
|
|
|
4337
|
+
type ChipVariant = 'filled' | 'outlined';
|
|
4338
|
+
type ChipSize = 'sm' | 'md' | 'lg';
|
|
4339
|
+
type ChipColor = 'default' | 'primary' | 'success' | 'warning' | 'error';
|
|
4340
|
+
/**
|
|
4341
|
+
* Design System Chip component
|
|
4342
|
+
*
|
|
4343
|
+
* @example
|
|
4344
|
+
* ```html
|
|
4345
|
+
* <ds-chip label="Tag" />
|
|
4346
|
+
* <ds-chip label="Removable" [removable]="true" (removed)="onRemove()" />
|
|
4347
|
+
* <ds-chip label="Clickable" [clickable]="true" (clicked)="onClick()" />
|
|
4348
|
+
* <ds-chip label="With icon" icon="fas-star" />
|
|
4349
|
+
* ```
|
|
4350
|
+
*/
|
|
4351
|
+
declare class DsChip {
|
|
4352
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4353
|
+
readonly variant: _angular_core.InputSignal<ChipVariant>;
|
|
4354
|
+
readonly size: _angular_core.InputSignal<ChipSize>;
|
|
4355
|
+
readonly color: _angular_core.InputSignal<ChipColor>;
|
|
4356
|
+
readonly removable: _angular_core.InputSignal<boolean>;
|
|
4357
|
+
readonly clickable: _angular_core.InputSignal<boolean>;
|
|
4358
|
+
readonly selected: _angular_core.InputSignal<boolean>;
|
|
4359
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
4360
|
+
readonly icon: _angular_core.InputSignal<string>;
|
|
4361
|
+
readonly avatar: _angular_core.InputSignal<string>;
|
|
4362
|
+
readonly removed: _angular_core.OutputEmitterRef<void>;
|
|
4363
|
+
readonly clicked: _angular_core.OutputEmitterRef<void>;
|
|
4364
|
+
readonly selectedChange: _angular_core.OutputEmitterRef<boolean>;
|
|
4365
|
+
readonly isSelected: _angular_core.WritableSignal<boolean>;
|
|
4366
|
+
readonly closeIcon: IconDefinition;
|
|
4367
|
+
readonly chipClasses: _angular_core.Signal<string>;
|
|
4368
|
+
readonly role: _angular_core.Signal<"button" | null>;
|
|
4369
|
+
readonly tabindex: _angular_core.Signal<0 | -1 | null>;
|
|
4370
|
+
readonly ariaSelected: _angular_core.Signal<boolean | null>;
|
|
4371
|
+
readonly ariaDisabled: _angular_core.Signal<true | null>;
|
|
4372
|
+
/**
|
|
4373
|
+
* Handle chip click
|
|
4374
|
+
*/
|
|
4375
|
+
handleClick(event: MouseEvent): void;
|
|
4376
|
+
/**
|
|
4377
|
+
* Handle remove button click
|
|
4378
|
+
*/
|
|
4379
|
+
handleRemove(event: MouseEvent): void;
|
|
4380
|
+
/**
|
|
4381
|
+
* Handle keyboard events
|
|
4382
|
+
*/
|
|
4383
|
+
handleKeyDown(event: KeyboardEvent): void;
|
|
4384
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsChip, never>;
|
|
4385
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsChip, "ds-chip", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; }, { "removed": "removed"; "clicked": "clicked"; "selectedChange": "selectedChange"; }, never, never, true, never>;
|
|
4386
|
+
}
|
|
4387
|
+
|
|
4388
|
+
type SliderSize = 'sm' | 'md' | 'lg';
|
|
4389
|
+
type SliderValue = number | [number, number];
|
|
4390
|
+
type SliderOrientation = 'horizontal' | 'vertical';
|
|
4391
|
+
declare class DsSlider implements ControlValueAccessor {
|
|
4392
|
+
min: _angular_core.InputSignal<number>;
|
|
4393
|
+
max: _angular_core.InputSignal<number>;
|
|
4394
|
+
step: _angular_core.InputSignal<number>;
|
|
4395
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
4396
|
+
size: _angular_core.InputSignal<SliderSize>;
|
|
4397
|
+
range: _angular_core.InputSignal<boolean>;
|
|
4398
|
+
orientation: _angular_core.InputSignal<SliderOrientation>;
|
|
4399
|
+
showLabels: _angular_core.InputSignal<boolean>;
|
|
4400
|
+
showTicks: _angular_core.InputSignal<boolean>;
|
|
4401
|
+
tickInterval: _angular_core.InputSignal<number | undefined>;
|
|
4402
|
+
formatLabel: _angular_core.InputSignal<((value: number) => string) | undefined>;
|
|
4403
|
+
valueChange: _angular_core.OutputEmitterRef<SliderValue>;
|
|
4404
|
+
trackElement?: ElementRef<HTMLDivElement>;
|
|
4405
|
+
thumb1Element?: ElementRef<HTMLDivElement>;
|
|
4406
|
+
thumb2Element?: ElementRef<HTMLDivElement>;
|
|
4407
|
+
private readonly disabledState;
|
|
4408
|
+
readonly internalValue: _angular_core.WritableSignal<SliderValue>;
|
|
4409
|
+
readonly dragging: _angular_core.WritableSignal<number | null>;
|
|
4410
|
+
readonly focusedThumb: _angular_core.WritableSignal<number>;
|
|
4411
|
+
constructor();
|
|
4412
|
+
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
4413
|
+
readonly isRange: _angular_core.Signal<boolean>;
|
|
4414
|
+
readonly isVertical: _angular_core.Signal<boolean>;
|
|
4415
|
+
readonly containerClasses: _angular_core.Signal<string>;
|
|
4416
|
+
readonly value1: _angular_core.Signal<number>;
|
|
4417
|
+
readonly value2: _angular_core.Signal<number>;
|
|
4418
|
+
readonly percentage1: _angular_core.Signal<number>;
|
|
4419
|
+
readonly percentage2: _angular_core.Signal<number>;
|
|
4420
|
+
readonly thumb1Style: _angular_core.Signal<{
|
|
4421
|
+
bottom: string;
|
|
4422
|
+
left?: undefined;
|
|
4423
|
+
} | {
|
|
4424
|
+
left: string;
|
|
4425
|
+
bottom?: undefined;
|
|
4426
|
+
}>;
|
|
4427
|
+
readonly thumb2Style: _angular_core.Signal<{
|
|
4428
|
+
bottom?: undefined;
|
|
4429
|
+
left?: undefined;
|
|
4430
|
+
} | {
|
|
4431
|
+
bottom: string;
|
|
4432
|
+
left?: undefined;
|
|
4433
|
+
} | {
|
|
4434
|
+
left: string;
|
|
4435
|
+
bottom?: undefined;
|
|
4436
|
+
}>;
|
|
4437
|
+
readonly fillStyle: _angular_core.Signal<{
|
|
4438
|
+
bottom: string;
|
|
4439
|
+
height: string;
|
|
4440
|
+
left?: undefined;
|
|
4441
|
+
width?: undefined;
|
|
4442
|
+
} | {
|
|
4443
|
+
left: string;
|
|
4444
|
+
width: string;
|
|
4445
|
+
bottom?: undefined;
|
|
4446
|
+
height?: undefined;
|
|
4447
|
+
}>;
|
|
4448
|
+
readonly ticks: _angular_core.Signal<number[]>;
|
|
4449
|
+
readonly label1: _angular_core.Signal<string>;
|
|
4450
|
+
readonly label2: _angular_core.Signal<string>;
|
|
4451
|
+
private onChange;
|
|
4452
|
+
private onTouched;
|
|
4453
|
+
writeValue(value: SliderValue | null): void;
|
|
4454
|
+
registerOnChange(fn: (value: SliderValue) => void): void;
|
|
4455
|
+
registerOnTouched(fn: () => void): void;
|
|
4456
|
+
setDisabledState(isDisabled: boolean): void;
|
|
4457
|
+
private valueToPercentage;
|
|
4458
|
+
private percentageToValue;
|
|
4459
|
+
private clampValue;
|
|
4460
|
+
private emitValue;
|
|
4461
|
+
onKeyDown(event: KeyboardEvent, thumbIndex: number): void;
|
|
4462
|
+
onTrackClick(event: MouseEvent): void;
|
|
4463
|
+
onThumbMouseDown(event: MouseEvent, thumbIndex: number): void;
|
|
4464
|
+
private onMouseMove;
|
|
4465
|
+
onThumbFocus(thumbIndex: number): void;
|
|
4466
|
+
onThumbBlur(): void;
|
|
4467
|
+
getTickPosition(value: number): number;
|
|
4468
|
+
getTickLabel(value: number): string;
|
|
4469
|
+
getAriaValueText(thumbIndex: number): string;
|
|
4470
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsSlider, never>;
|
|
4471
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsSlider, "ds-slider", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "range": { "alias": "range"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "showLabels": { "alias": "showLabels"; "required": false; "isSignal": true; }; "showTicks": { "alias": "showTicks"; "required": false; "isSignal": true; }; "tickInterval": { "alias": "tickInterval"; "required": false; "isSignal": true; }; "formatLabel": { "alias": "formatLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
4472
|
+
}
|
|
4473
|
+
|
|
4474
|
+
/**
|
|
4475
|
+
* Tailles disponibles pour le composant file upload.
|
|
4476
|
+
*/
|
|
4477
|
+
type FileUploadSize = 'sm' | 'md' | 'lg';
|
|
4478
|
+
/**
|
|
4479
|
+
* Représente un fichier avec son état de chargement.
|
|
4480
|
+
*/
|
|
4481
|
+
interface UploadFile {
|
|
4482
|
+
file: File;
|
|
4483
|
+
preview?: string;
|
|
4484
|
+
progress: number;
|
|
4485
|
+
error?: string;
|
|
4486
|
+
}
|
|
4487
|
+
/**
|
|
4488
|
+
* # DsFileUpload
|
|
4489
|
+
*
|
|
4490
|
+
* Composant de téléchargement de fichiers avec support drag & drop,
|
|
4491
|
+
* validation, preview et barre de progression.
|
|
4492
|
+
*
|
|
4493
|
+
* ## Usage
|
|
4494
|
+
*
|
|
4495
|
+
* ```html
|
|
4496
|
+
* <!-- Upload simple -->
|
|
4497
|
+
* <ds-file-upload
|
|
4498
|
+
* [accept]="'image/*'"
|
|
4499
|
+
* [maxFileSize]="5242880"
|
|
4500
|
+
* (filesChange)="onFilesChange($event)">
|
|
4501
|
+
* </ds-file-upload>
|
|
4502
|
+
*
|
|
4503
|
+
* <!-- Upload multiple avec preview -->
|
|
4504
|
+
* <ds-file-upload
|
|
4505
|
+
* [multiple]="true"
|
|
4506
|
+
* [showPreview]="true"
|
|
4507
|
+
* [maxFiles]="5"
|
|
4508
|
+
* size="lg">
|
|
4509
|
+
* </ds-file-upload>
|
|
4510
|
+
* ```
|
|
4511
|
+
*
|
|
4512
|
+
* ## Accessibilité
|
|
4513
|
+
*
|
|
4514
|
+
* - Input natif avec label accessible
|
|
4515
|
+
* - Drag & drop avec feedback ARIA
|
|
4516
|
+
* - Messages d'erreur associés via aria-describedby
|
|
4517
|
+
*
|
|
4518
|
+
* @component
|
|
4519
|
+
*/
|
|
4520
|
+
declare class DsFileUpload implements ControlValueAccessor {
|
|
4521
|
+
/**
|
|
4522
|
+
* Types de fichiers acceptés (ex: 'image/*,.pdf').
|
|
4523
|
+
* @default '*'
|
|
4524
|
+
*/
|
|
4525
|
+
accept: _angular_core.InputSignal<string>;
|
|
4526
|
+
/**
|
|
4527
|
+
* Taille maximale d'un fichier en bytes.
|
|
4528
|
+
* @default 10485760 (10 MB)
|
|
4529
|
+
*/
|
|
4530
|
+
maxFileSize: _angular_core.InputSignal<number>;
|
|
4531
|
+
/**
|
|
4532
|
+
* Nombre maximum de fichiers.
|
|
4533
|
+
* @default 1
|
|
4534
|
+
*/
|
|
4535
|
+
maxFiles: _angular_core.InputSignal<number>;
|
|
4536
|
+
/**
|
|
4537
|
+
* Permet la sélection multiple de fichiers.
|
|
4538
|
+
* @default false
|
|
4539
|
+
*/
|
|
4540
|
+
multiple: _angular_core.InputSignal<boolean>;
|
|
4541
|
+
/**
|
|
4542
|
+
* Désactive le composant.
|
|
4543
|
+
* @default false
|
|
4544
|
+
*/
|
|
4545
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
4546
|
+
/**
|
|
4547
|
+
* Taille du composant.
|
|
4548
|
+
* @default 'md'
|
|
4549
|
+
*/
|
|
4550
|
+
size: _angular_core.InputSignal<FileUploadSize>;
|
|
4551
|
+
/**
|
|
4552
|
+
* Affiche une preview pour les images.
|
|
4553
|
+
* @default true
|
|
4554
|
+
*/
|
|
4555
|
+
showPreview: _angular_core.InputSignal<boolean>;
|
|
4556
|
+
/**
|
|
4557
|
+
* Label personnalisé pour le bouton.
|
|
4558
|
+
*/
|
|
4559
|
+
label: _angular_core.InputSignal<string>;
|
|
4560
|
+
/**
|
|
4561
|
+
* Texte d'aide pour le drag & drop.
|
|
4562
|
+
*/
|
|
4563
|
+
dragHelpText: _angular_core.InputSignal<string>;
|
|
4564
|
+
/**
|
|
4565
|
+
* Événement émis lors du changement de fichiers.
|
|
4566
|
+
*/
|
|
4567
|
+
filesChange: _angular_core.OutputEmitterRef<File[]>;
|
|
4568
|
+
/**
|
|
4569
|
+
* Événement émis lors de la suppression d'un fichier.
|
|
4570
|
+
*/
|
|
4571
|
+
fileRemoved: _angular_core.OutputEmitterRef<File>;
|
|
4572
|
+
/**
|
|
4573
|
+
* Événement émis lors de la progression de l'upload.
|
|
4574
|
+
*/
|
|
4575
|
+
uploadProgress: _angular_core.OutputEmitterRef<{
|
|
4576
|
+
file: File;
|
|
4577
|
+
progress: number;
|
|
4578
|
+
}>;
|
|
4579
|
+
readonly faCloudArrowUp: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4580
|
+
readonly faXmark: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4581
|
+
readonly faFile: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4582
|
+
readonly faFileImage: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4583
|
+
readonly faFilePdf: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4584
|
+
readonly faFileWord: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4585
|
+
readonly faFileExcel: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4586
|
+
readonly fileInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
4587
|
+
readonly files: _angular_core.WritableSignal<UploadFile[]>;
|
|
4588
|
+
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
4589
|
+
readonly errorMessage: _angular_core.WritableSignal<string>;
|
|
4590
|
+
private onChange;
|
|
4591
|
+
private onTouched;
|
|
4592
|
+
/**
|
|
4593
|
+
* Classes CSS calculées pour le conteneur (public pour tests).
|
|
4594
|
+
*/
|
|
4595
|
+
readonly containerClasses: _angular_core.Signal<string[]>;
|
|
4596
|
+
/**
|
|
4597
|
+
* Nombre de fichiers actuellement sélectionnés (public pour tests).
|
|
4598
|
+
*/
|
|
4599
|
+
readonly fileCount: _angular_core.Signal<number>;
|
|
4600
|
+
/**
|
|
4601
|
+
* Vérifie si la limite de fichiers est atteinte (public pour tests).
|
|
4602
|
+
*/
|
|
4603
|
+
readonly isMaxFilesReached: _angular_core.Signal<boolean>;
|
|
4604
|
+
/**
|
|
4605
|
+
* Ouvre le sélecteur de fichiers.
|
|
4606
|
+
*/
|
|
4607
|
+
openFileSelector(): void;
|
|
4608
|
+
/**
|
|
4609
|
+
* Gère la sélection de fichiers via l'input.
|
|
4610
|
+
*/
|
|
4611
|
+
onFileSelect(event: Event): void;
|
|
4612
|
+
/**
|
|
4613
|
+
* Gère le début du drag.
|
|
4614
|
+
*/
|
|
4615
|
+
onDragEnter(event: DragEvent): void;
|
|
4616
|
+
/**
|
|
4617
|
+
* Gère le survol pendant le drag.
|
|
4618
|
+
*/
|
|
4619
|
+
onDragOver(event: DragEvent): void;
|
|
4620
|
+
/**
|
|
4621
|
+
* Gère la sortie du drag.
|
|
4622
|
+
*/
|
|
4623
|
+
onDragLeave(event: DragEvent): void;
|
|
4624
|
+
/**
|
|
4625
|
+
* Gère le drop des fichiers.
|
|
4626
|
+
*/
|
|
4627
|
+
onDrop(event: DragEvent): void;
|
|
4628
|
+
/**
|
|
4629
|
+
* Traite les fichiers sélectionnés ou déposés.
|
|
4630
|
+
*/
|
|
4631
|
+
private handleFiles;
|
|
4632
|
+
/**
|
|
4633
|
+
* Valide un fichier (taille, type).
|
|
4634
|
+
*/
|
|
4635
|
+
private validateFile;
|
|
4636
|
+
/**
|
|
4637
|
+
* Génère une preview pour les images.
|
|
4638
|
+
*/
|
|
4639
|
+
private generatePreview;
|
|
4640
|
+
/**
|
|
4641
|
+
* Simule l'upload avec progression (pour démonstration).
|
|
4642
|
+
* Dans une vraie application, remplacer par un vrai upload HTTP.
|
|
4643
|
+
*/
|
|
4644
|
+
private simulateUpload;
|
|
4645
|
+
/**
|
|
4646
|
+
* Retire un fichier de la liste.
|
|
4647
|
+
*/
|
|
4648
|
+
removeFile(uploadFile: UploadFile): void;
|
|
4649
|
+
/**
|
|
4650
|
+
* Notifie le changement de valeur.
|
|
4651
|
+
*/
|
|
4652
|
+
private notifyChange;
|
|
4653
|
+
/**
|
|
4654
|
+
* Retourne l'icône appropriée pour le type de fichier (public pour tests).
|
|
4655
|
+
*/
|
|
4656
|
+
getFileIcon(file: File): _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4657
|
+
/**
|
|
4658
|
+
* Formate la taille du fichier en MB ou KB (public pour tests).
|
|
4659
|
+
*/
|
|
4660
|
+
formatFileSize(bytes: number): string;
|
|
4661
|
+
writeValue(value: File[] | null): void;
|
|
4662
|
+
registerOnChange(fn: (value: File[] | null) => void): void;
|
|
4663
|
+
registerOnTouched(fn: () => void): void;
|
|
4664
|
+
setDisabledState(isDisabled: boolean): void;
|
|
4665
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsFileUpload, never>;
|
|
4666
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsFileUpload, "ds-file-upload", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "showPreview": { "alias": "showPreview"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "dragHelpText": { "alias": "dragHelpText"; "required": false; "isSignal": true; }; }, { "filesChange": "filesChange"; "fileRemoved": "fileRemoved"; "uploadProgress": "uploadProgress"; }, never, never, true, never>;
|
|
4667
|
+
}
|
|
4668
|
+
|
|
4669
|
+
/**
|
|
4670
|
+
* Tailles disponibles pour le composant Empty.
|
|
4671
|
+
*/
|
|
4672
|
+
type EmptySize = 'sm' | 'md' | 'lg';
|
|
4673
|
+
/**
|
|
4674
|
+
* # DsEmpty
|
|
4675
|
+
*
|
|
4676
|
+
* Composant d'état vide standardisé permettant d'afficher un message
|
|
4677
|
+
* lorsqu'aucune donnée n'est disponible, avec une illustration optionnelle.
|
|
4678
|
+
*
|
|
4679
|
+
* ## Usage
|
|
4680
|
+
*
|
|
4681
|
+
* ```html
|
|
4682
|
+
* <ds-empty
|
|
4683
|
+
* title="Aucun résultat"
|
|
4684
|
+
* description="Essayez de modifier vos filtres"
|
|
4685
|
+
* [icon]="faSearch">
|
|
4686
|
+
* <button ds-button (click)="resetFilters()">Réinitialiser</button>
|
|
4687
|
+
* </ds-empty>
|
|
4688
|
+
* ```
|
|
4689
|
+
*
|
|
4690
|
+
* ## Accessibilité
|
|
4691
|
+
*
|
|
4692
|
+
* - Utilise `role="region"` avec `aria-label` descriptif
|
|
4693
|
+
* - Icônes décoratives avec `aria-hidden="true"`
|
|
4694
|
+
* - Support des actions via content projection
|
|
4695
|
+
*
|
|
4696
|
+
* @component
|
|
4697
|
+
*/
|
|
4698
|
+
declare class DsEmpty {
|
|
4699
|
+
/**
|
|
4700
|
+
* Titre principal de l'état vide.
|
|
4701
|
+
* @default 'Aucune donnée'
|
|
4702
|
+
*/
|
|
4703
|
+
title: _angular_core.InputSignal<string>;
|
|
4704
|
+
/**
|
|
4705
|
+
* Description complémentaire optionnelle.
|
|
4706
|
+
*/
|
|
4707
|
+
description: _angular_core.InputSignal<string>;
|
|
4708
|
+
/**
|
|
4709
|
+
* Icône FontAwesome à afficher.
|
|
4710
|
+
* @default faInbox
|
|
4711
|
+
*/
|
|
4712
|
+
icon: _angular_core.InputSignal<IconDefinition>;
|
|
4713
|
+
/**
|
|
4714
|
+
* URL d'une image personnalisée (illustration ou SVG).
|
|
4715
|
+
* Si fournie, prend le pas sur l'icône FontAwesome.
|
|
4716
|
+
*/
|
|
4717
|
+
imageUrl: _angular_core.InputSignal<string>;
|
|
4718
|
+
/**
|
|
4719
|
+
* Taille du composant (affecte l'icône et les espacements).
|
|
4720
|
+
* @default 'md'
|
|
4721
|
+
*/
|
|
4722
|
+
size: _angular_core.InputSignal<EmptySize>;
|
|
4723
|
+
/**
|
|
4724
|
+
* Classes CSS calculées pour le conteneur.
|
|
4725
|
+
*/
|
|
4726
|
+
readonly containerClasses: _angular_core.Signal<string>;
|
|
4727
|
+
/**
|
|
4728
|
+
* Classes CSS calculées pour l'icône.
|
|
4729
|
+
*/
|
|
4730
|
+
readonly iconClasses: _angular_core.Signal<string>;
|
|
4731
|
+
/**
|
|
4732
|
+
* Classes CSS calculées pour l'image.
|
|
4733
|
+
*/
|
|
4734
|
+
readonly imageClasses: _angular_core.Signal<string>;
|
|
4735
|
+
/**
|
|
4736
|
+
* Détermine si une image doit être affichée.
|
|
4737
|
+
*/
|
|
4738
|
+
readonly hasImage: _angular_core.Signal<boolean>;
|
|
4739
|
+
/**
|
|
4740
|
+
* Détermine si une description est fournie.
|
|
4741
|
+
*/
|
|
4742
|
+
readonly hasDescription: _angular_core.Signal<boolean>;
|
|
4743
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsEmpty, never>;
|
|
4744
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsEmpty, "ds-empty", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
4745
|
+
}
|
|
4746
|
+
|
|
4747
|
+
/**
|
|
4748
|
+
* Tailles disponibles pour le composant Rating.
|
|
4749
|
+
*/
|
|
4750
|
+
type RatingSize = 'sm' | 'md' | 'lg';
|
|
4751
|
+
/**
|
|
4752
|
+
* # DsRating
|
|
4753
|
+
*
|
|
4754
|
+
* Composant de notation par étoiles permettant d'afficher et de saisir
|
|
4755
|
+
* une note sur une échelle configurable (par défaut 0-5).
|
|
4756
|
+
*
|
|
4757
|
+
* ## Usage
|
|
4758
|
+
*
|
|
4759
|
+
* ```html
|
|
4760
|
+
* <ds-rating
|
|
4761
|
+
* [(value)]="rating"
|
|
4762
|
+
* [max]="5"
|
|
4763
|
+
* [allowHalf]="true"
|
|
4764
|
+
* (ratingChange)="handleRatingChange($event)" />
|
|
4765
|
+
* ```
|
|
4766
|
+
*
|
|
4767
|
+
* ## Intégration formulaires
|
|
4768
|
+
*
|
|
4769
|
+
* ```html
|
|
4770
|
+
* <form [formGroup]="form">
|
|
4771
|
+
* <ds-rating formControlName="rating" />
|
|
4772
|
+
* </form>
|
|
4773
|
+
* ```
|
|
4774
|
+
*
|
|
4775
|
+
* ## Accessibilité
|
|
4776
|
+
*
|
|
4777
|
+
* - Navigation clavier : ArrowLeft/Right pour changer la note
|
|
4778
|
+
* - Attributs ARIA : role, aria-label, aria-valuenow/valuemin/valuemax
|
|
4779
|
+
* - Focus visible sur les étoiles
|
|
4780
|
+
*
|
|
4781
|
+
* @component
|
|
4782
|
+
*/
|
|
4783
|
+
declare class DsRating implements ControlValueAccessor {
|
|
4784
|
+
/**
|
|
4785
|
+
* Valeur actuelle de la notation (0 à max).
|
|
4786
|
+
* @default 0
|
|
4787
|
+
*/
|
|
4788
|
+
value: _angular_core.InputSignal<number>;
|
|
4789
|
+
/**
|
|
4790
|
+
* Valeur maximale de la notation.
|
|
4791
|
+
* @default 5
|
|
4792
|
+
*/
|
|
4793
|
+
max: _angular_core.InputSignal<number>;
|
|
4794
|
+
/**
|
|
4795
|
+
* Taille du composant (affecte la taille des étoiles).
|
|
4796
|
+
* @default 'md'
|
|
4797
|
+
*/
|
|
4798
|
+
size: _angular_core.InputSignal<RatingSize>;
|
|
4799
|
+
/**
|
|
4800
|
+
* Permet la saisie de demi-étoiles (notes 0.5, 1.5, etc.).
|
|
4801
|
+
* @default false
|
|
4802
|
+
*/
|
|
4803
|
+
allowHalf: _angular_core.InputSignal<boolean>;
|
|
4804
|
+
/**
|
|
4805
|
+
* Mode lecture seule (affichage uniquement).
|
|
4806
|
+
* @default false
|
|
4807
|
+
*/
|
|
4808
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
4809
|
+
/**
|
|
4810
|
+
* État désactivé (pas d'interaction).
|
|
4811
|
+
* @default false
|
|
4812
|
+
*/
|
|
4813
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
4814
|
+
/**
|
|
4815
|
+
* Émis lorsque la notation change.
|
|
4816
|
+
*/
|
|
4817
|
+
ratingChange: _angular_core.OutputEmitterRef<number>;
|
|
4818
|
+
/**
|
|
4819
|
+
* État interne de la valeur (ControlValueAccessor).
|
|
4820
|
+
*/
|
|
4821
|
+
readonly internalValue: _angular_core.WritableSignal<number>;
|
|
4822
|
+
/**
|
|
4823
|
+
* État de survol (pour aperçu avant clic).
|
|
4824
|
+
*/
|
|
4825
|
+
readonly hoverValue: _angular_core.WritableSignal<number | null>;
|
|
4826
|
+
/**
|
|
4827
|
+
* Callbacks ControlValueAccessor.
|
|
4828
|
+
*/
|
|
4829
|
+
private onChange;
|
|
4830
|
+
private onTouched;
|
|
4831
|
+
/**
|
|
4832
|
+
* Icônes FontAwesome pour les étoiles.
|
|
4833
|
+
*/
|
|
4834
|
+
protected readonly faStar: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4835
|
+
protected readonly faStarHalf: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4836
|
+
/**
|
|
4837
|
+
* Tableau des indices d'étoiles pour le rendu.
|
|
4838
|
+
*/
|
|
4839
|
+
readonly stars: _angular_core.Signal<number[]>;
|
|
4840
|
+
/**
|
|
4841
|
+
* Valeur affichée (avec prise en compte du survol).
|
|
4842
|
+
*/
|
|
4843
|
+
readonly displayValue: _angular_core.Signal<number>;
|
|
4844
|
+
/**
|
|
4845
|
+
* Classes CSS calculées pour le conteneur.
|
|
4846
|
+
*/
|
|
4847
|
+
readonly containerClasses: _angular_core.Signal<string>;
|
|
4848
|
+
/**
|
|
4849
|
+
* Détermine le type d'icône à afficher pour une étoile donnée.
|
|
4850
|
+
* - 'full' : étoile pleine
|
|
4851
|
+
* - 'half' : demi-étoile
|
|
4852
|
+
* - 'empty' : étoile vide
|
|
4853
|
+
*/
|
|
4854
|
+
getStarType(index: number): 'full' | 'half' | 'empty';
|
|
4855
|
+
/**
|
|
4856
|
+
* Gère le clic sur une étoile.
|
|
4857
|
+
*/
|
|
4858
|
+
handleStarClick(index: number, event: MouseEvent): void;
|
|
4859
|
+
/**
|
|
4860
|
+
* Gère le survol d'une étoile.
|
|
4861
|
+
*/
|
|
4862
|
+
handleStarHover(index: number, event: MouseEvent): void;
|
|
4863
|
+
/**
|
|
4864
|
+
* Réinitialise le survol.
|
|
4865
|
+
*/
|
|
4866
|
+
handleMouseLeave(): void;
|
|
4867
|
+
/**
|
|
4868
|
+
* Navigation clavier (ArrowLeft/Right).
|
|
4869
|
+
*/
|
|
4870
|
+
handleKeyDown(event: KeyboardEvent): void;
|
|
4871
|
+
/**
|
|
4872
|
+
* Met à jour la valeur interne et notifie les changements.
|
|
4873
|
+
*/
|
|
4874
|
+
private updateValue;
|
|
4875
|
+
writeValue(value: number): void;
|
|
4876
|
+
registerOnChange(fn: (value: number) => void): void;
|
|
4877
|
+
registerOnTouched(fn: () => void): void;
|
|
4878
|
+
setDisabledState(isDisabled: boolean): void;
|
|
4879
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsRating, never>;
|
|
4880
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsRating, "ds-rating", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "allowHalf": { "alias": "allowHalf"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "ratingChange": "ratingChange"; }, never, never, true, never>;
|
|
4881
|
+
}
|
|
4882
|
+
|
|
4883
|
+
/**
|
|
4884
|
+
* Position du drawer (gauche ou droite).
|
|
4885
|
+
*/
|
|
4886
|
+
type DrawerPosition = 'left' | 'right';
|
|
4887
|
+
/**
|
|
4888
|
+
* Tailles disponibles pour le drawer.
|
|
4889
|
+
*/
|
|
4890
|
+
type DrawerSize = 'sm' | 'md' | 'lg' | 'full';
|
|
4891
|
+
/**
|
|
4892
|
+
* # DsDrawer
|
|
4893
|
+
*
|
|
4894
|
+
* Composant de panneau latéral overlay avec animation slide-in/out.
|
|
4895
|
+
* Utilise CDK Overlay pour le backdrop et le focus trap.
|
|
4896
|
+
*
|
|
4897
|
+
* ## Usage
|
|
4898
|
+
*
|
|
4899
|
+
* ```html
|
|
4900
|
+
* <ds-drawer
|
|
4901
|
+
* [(visible)]="isDrawerOpen"
|
|
4902
|
+
* position="right"
|
|
4903
|
+
* size="md"
|
|
4904
|
+
* title="Détails"
|
|
4905
|
+
* [closable]="true"
|
|
4906
|
+
* (closed)="onDrawerClose()">
|
|
4907
|
+
* <!-- Header -->
|
|
4908
|
+
* <ng-template #header>
|
|
4909
|
+
* <h3>Mon en-tête personnalisé</h3>
|
|
4910
|
+
* </ng-template>
|
|
4911
|
+
*
|
|
4912
|
+
* <!-- Body -->
|
|
4913
|
+
* <p>Contenu du drawer</p>
|
|
4914
|
+
*
|
|
4915
|
+
* <!-- Footer -->
|
|
4916
|
+
* <ng-template #footer>
|
|
4917
|
+
* <button>Annuler</button>
|
|
4918
|
+
* <button>Valider</button>
|
|
4919
|
+
* </ng-template>
|
|
4920
|
+
* </ds-drawer>
|
|
4921
|
+
* ```
|
|
4922
|
+
*
|
|
4923
|
+
* ## Accessibilité
|
|
4924
|
+
*
|
|
4925
|
+
* - Focus trap : le focus reste dans le drawer
|
|
4926
|
+
* - Navigation clavier : Escape pour fermer
|
|
4927
|
+
* - Attributs ARIA : role, aria-labelledby, aria-modal
|
|
4928
|
+
*
|
|
4929
|
+
* @component
|
|
4930
|
+
*/
|
|
4931
|
+
declare class DsDrawer implements AfterViewInit, OnDestroy {
|
|
4932
|
+
/**
|
|
4933
|
+
* Visibilité du drawer.
|
|
4934
|
+
* @default false
|
|
4935
|
+
*/
|
|
4936
|
+
visible: _angular_core.InputSignal<boolean>;
|
|
4937
|
+
/**
|
|
4938
|
+
* Position du drawer (left/right).
|
|
4939
|
+
* @default 'right'
|
|
4940
|
+
*/
|
|
4941
|
+
position: _angular_core.InputSignal<DrawerPosition>;
|
|
4942
|
+
/**
|
|
4943
|
+
* Taille du drawer.
|
|
4944
|
+
* @default 'md'
|
|
4945
|
+
*/
|
|
4946
|
+
size: _angular_core.InputSignal<DrawerSize>;
|
|
4947
|
+
/**
|
|
4948
|
+
* Titre affiché dans le header (optionnel).
|
|
4949
|
+
*/
|
|
4950
|
+
title: _angular_core.InputSignal<string>;
|
|
4951
|
+
/**
|
|
4952
|
+
* Affiche le bouton de fermeture.
|
|
4953
|
+
* @default true
|
|
4954
|
+
*/
|
|
4955
|
+
closable: _angular_core.InputSignal<boolean>;
|
|
4956
|
+
/**
|
|
4957
|
+
* Ferme le drawer au clic sur le backdrop.
|
|
4958
|
+
* @default true
|
|
4959
|
+
*/
|
|
4960
|
+
maskClosable: _angular_core.InputSignal<boolean>;
|
|
4961
|
+
/**
|
|
4962
|
+
* Émis lorsque la visibilité change.
|
|
4963
|
+
*/
|
|
4964
|
+
visibleChange: _angular_core.OutputEmitterRef<boolean>;
|
|
4965
|
+
/**
|
|
4966
|
+
* Émis lorsque le drawer est fermé.
|
|
4967
|
+
*/
|
|
4968
|
+
closed: _angular_core.OutputEmitterRef<void>;
|
|
4969
|
+
/**
|
|
4970
|
+
* Référence au conteneur du drawer.
|
|
4971
|
+
*/
|
|
4972
|
+
drawerContainer?: ElementRef<HTMLElement>;
|
|
4973
|
+
/**
|
|
4974
|
+
* État interne de visibilité pour gérer l'animation.
|
|
4975
|
+
*/
|
|
4976
|
+
protected isOpen: _angular_core.WritableSignal<boolean>;
|
|
4977
|
+
protected isAnimating: _angular_core.WritableSignal<boolean>;
|
|
4978
|
+
/**
|
|
4979
|
+
* Indique si la vue est prête.
|
|
4980
|
+
*/
|
|
4981
|
+
private viewReady;
|
|
4982
|
+
/**
|
|
4983
|
+
* Focus trap pour confiner la navigation clavier.
|
|
4984
|
+
*/
|
|
4985
|
+
private focusTrap;
|
|
4986
|
+
/**
|
|
4987
|
+
* Services injectés.
|
|
4988
|
+
*/
|
|
4989
|
+
private readonly documentRef;
|
|
4990
|
+
private readonly focusTrapFactory;
|
|
4991
|
+
/**
|
|
4992
|
+
* Icône de fermeture.
|
|
4993
|
+
*/
|
|
4994
|
+
protected readonly closeIcon: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
4995
|
+
/**
|
|
4996
|
+
* ID unique pour l'accessibilité.
|
|
4997
|
+
*/
|
|
4998
|
+
private readonly drawerId;
|
|
4999
|
+
readonly drawerTitleId: string;
|
|
5000
|
+
/**
|
|
5001
|
+
* Classes CSS calculées pour le conteneur.
|
|
5002
|
+
*/
|
|
5003
|
+
readonly containerClasses: _angular_core.Signal<string>;
|
|
5004
|
+
/**
|
|
5005
|
+
* Classes CSS calculées pour le backdrop.
|
|
5006
|
+
*/
|
|
5007
|
+
readonly backdropClasses: _angular_core.Signal<string>;
|
|
5008
|
+
constructor();
|
|
5009
|
+
ngAfterViewInit(): void;
|
|
5010
|
+
ngOnDestroy(): void;
|
|
5011
|
+
/**
|
|
5012
|
+
* Ouvre le drawer avec animation.
|
|
5013
|
+
*/
|
|
5014
|
+
private openDrawer;
|
|
5015
|
+
/**
|
|
5016
|
+
* Ferme le drawer avec animation.
|
|
5017
|
+
*/
|
|
5018
|
+
private closeDrawer;
|
|
5019
|
+
/**
|
|
5020
|
+
* Gère la fermeture du drawer.
|
|
5021
|
+
*/
|
|
5022
|
+
handleClose(): void;
|
|
5023
|
+
/**
|
|
5024
|
+
* Gère le clic sur le backdrop.
|
|
5025
|
+
*/
|
|
5026
|
+
handleBackdropClick(): void;
|
|
5027
|
+
/**
|
|
5028
|
+
* Gère la touche Escape.
|
|
5029
|
+
*/
|
|
5030
|
+
handleKeyDown(event: KeyboardEvent): void;
|
|
5031
|
+
/**
|
|
5032
|
+
* Attache le focus trap.
|
|
5033
|
+
*/
|
|
5034
|
+
private attachFocusTrap;
|
|
5035
|
+
/**
|
|
5036
|
+
* Détache le focus trap.
|
|
5037
|
+
*/
|
|
5038
|
+
private detachFocusTrap;
|
|
5039
|
+
/**
|
|
5040
|
+
* Place le focus sur le premier élément focusable.
|
|
5041
|
+
*/
|
|
5042
|
+
private focusInitialElement;
|
|
5043
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsDrawer, never>;
|
|
5044
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsDrawer, "ds-drawer", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "maskClosable": { "alias": "maskClosable"; "required": false; "isSignal": true; }; }, { "visibleChange": "visibleChange"; "closed": "closed"; }, never, ["[drawer-header]", "*", "[drawer-footer]"], true, never>;
|
|
5045
|
+
}
|
|
5046
|
+
|
|
5047
|
+
type TimePickerSize = 'sm' | 'md' | 'lg';
|
|
5048
|
+
type TimeFormat = '12h' | '24h';
|
|
5049
|
+
interface TimeValue {
|
|
5050
|
+
hours: number;
|
|
5051
|
+
minutes: number;
|
|
5052
|
+
seconds?: number;
|
|
5053
|
+
}
|
|
5054
|
+
/**
|
|
5055
|
+
* DsTimePicker - Composant de sélection d'heure
|
|
5056
|
+
*
|
|
5057
|
+
* @description
|
|
5058
|
+
* Sélecteur d'heure avec dropdown scrollable, support 12h/24h,
|
|
5059
|
+
* et intégration formulaires via ControlValueAccessor.
|
|
5060
|
+
*
|
|
5061
|
+
* @example
|
|
5062
|
+
* ```html
|
|
5063
|
+
* <ds-time-picker
|
|
5064
|
+
* [format]="'24h'"
|
|
5065
|
+
* [showSeconds]="true"
|
|
5066
|
+
* (timeChange)="onTimeChange($event)">
|
|
5067
|
+
* </ds-time-picker>
|
|
5068
|
+
* ```
|
|
5069
|
+
*/
|
|
5070
|
+
declare class DsTimePicker implements ControlValueAccessor {
|
|
5071
|
+
private overlay;
|
|
5072
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
5073
|
+
readonly format: _angular_core.InputSignal<TimeFormat>;
|
|
5074
|
+
readonly showSeconds: _angular_core.InputSignal<boolean>;
|
|
5075
|
+
readonly minuteStep: _angular_core.InputSignal<number>;
|
|
5076
|
+
readonly hourStep: _angular_core.InputSignal<number>;
|
|
5077
|
+
readonly size: _angular_core.InputSignal<TimePickerSize>;
|
|
5078
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
5079
|
+
readonly readonly: _angular_core.InputSignal<boolean>;
|
|
5080
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
5081
|
+
readonly minTime: _angular_core.InputSignal<string | null>;
|
|
5082
|
+
readonly maxTime: _angular_core.InputSignal<string | null>;
|
|
5083
|
+
readonly timeChange: _angular_core.OutputEmitterRef<string>;
|
|
5084
|
+
readonly clockIcon: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
5085
|
+
readonly upIcon: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
5086
|
+
readonly downIcon: _fortawesome_fontawesome_common_types.IconDefinition;
|
|
5087
|
+
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
5088
|
+
readonly internalValue: _angular_core.WritableSignal<string>;
|
|
5089
|
+
readonly isFocused: _angular_core.WritableSignal<boolean>;
|
|
5090
|
+
private overlayRef;
|
|
5091
|
+
readonly containerClasses: _angular_core.Signal<string>;
|
|
5092
|
+
readonly displayValue: _angular_core.Signal<string>;
|
|
5093
|
+
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
5094
|
+
private onChange;
|
|
5095
|
+
private onTouched;
|
|
5096
|
+
constructor(overlay: Overlay);
|
|
5097
|
+
writeValue(value: string): void;
|
|
5098
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
5099
|
+
registerOnTouched(fn: () => void): void;
|
|
5100
|
+
setDisabledState(isDisabled: boolean): void;
|
|
5101
|
+
toggle(): void;
|
|
5102
|
+
open(): void;
|
|
5103
|
+
close(): void;
|
|
5104
|
+
onFocus(): void;
|
|
5105
|
+
onBlur(): void;
|
|
5106
|
+
onTimeSelected(timeString: string): void;
|
|
5107
|
+
private updateValue;
|
|
5108
|
+
private createOverlay;
|
|
5109
|
+
private destroyOverlay;
|
|
5110
|
+
private parseTime;
|
|
5111
|
+
private formatTimeForDisplay;
|
|
5112
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsTimePicker, never>;
|
|
5113
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DsTimePicker, "ds-time-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "hourStep": { "alias": "hourStep"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; }, { "timeChange": "timeChange"; }, never, never, true, never>;
|
|
5114
|
+
}
|
|
5115
|
+
|
|
5116
|
+
type TreeSize = 'sm' | 'md' | 'lg';
|
|
5117
|
+
interface TreeNode {
|
|
5118
|
+
id: string | number;
|
|
5119
|
+
label: string;
|
|
5120
|
+
children?: TreeNode[];
|
|
5121
|
+
icon?: string;
|
|
5122
|
+
disabled?: boolean;
|
|
5123
|
+
expanded?: boolean;
|
|
5124
|
+
checked?: boolean;
|
|
5125
|
+
data?: any;
|
|
5126
|
+
}
|
|
5127
|
+
interface TreeNodeSelectEvent {
|
|
5128
|
+
node: TreeNode;
|
|
5129
|
+
selected: boolean;
|
|
5130
|
+
}
|
|
5131
|
+
interface TreeNodeExpandEvent {
|
|
5132
|
+
node: TreeNode;
|
|
5133
|
+
expanded: boolean;
|
|
5134
|
+
}
|
|
5135
|
+
interface TreeNodeCheckEvent {
|
|
5136
|
+
node: TreeNode;
|
|
5137
|
+
checked: boolean;
|
|
5138
|
+
}
|
|
5139
|
+
/**
|
|
5140
|
+
* DsTree - Composant d'affichage hiérarchique
|
|
5141
|
+
*
|
|
5142
|
+
* @description
|
|
5143
|
+
* Arbre hiérarchique avec support de sélection, checkbox,
|
|
5144
|
+
* expand/collapse, et navigation clavier.
|
|
5145
|
+
*
|
|
5146
|
+
* @example
|
|
5147
|
+
* ```html
|
|
5148
|
+
* <ds-tree
|
|
5149
|
+
* [data]="treeData"
|
|
5150
|
+
* [selectable]="true"
|
|
5151
|
+
* (nodeSelect)="onNodeSelect($event)">
|
|
5152
|
+
* </ds-tree>
|
|
5153
|
+
* ```
|
|
5154
|
+
*/
|
|
5155
|
+
declare class DsTree {
|
|
5156
|
+
readonly data: _angular_core.InputSignal<TreeNode[]>;
|
|
5157
|
+
readonly selectable: _angular_core.InputSignal<boolean>;
|
|
5158
|
+
readonly checkable: _angular_core.InputSignal<boolean>;
|
|
5159
|
+
readonly expandAll: _angular_core.InputSignal<boolean>;
|
|
5160
|
+
readonly showIcon: _angular_core.InputSignal<boolean>;
|
|
5161
|
+
readonly showLine: _angular_core.InputSignal<boolean>;
|
|
5162
|
+
readonly draggable: _angular_core.InputSignal<boolean>;
|
|
5163
|
+
readonly virtualScroll: _angular_core.InputSignal<boolean>;
|
|
5164
|
+
readonly size: _angular_core.InputSignal<TreeSize>;
|
|
5165
|
+
readonly loadChildren: _angular_core.InputSignal<((node: TreeNode) => Promise<TreeNode[]>) | null>;
|
|
5166
|
+
readonly nodeSelect: _angular_core.OutputEmitterRef<TreeNodeSelectEvent>;
|
|
5167
|
+
readonly nodeExpand: _angular_core.OutputEmitterRef<TreeNodeExpandEvent>;
|
|
5168
|
+
readonly nodeCheck: _angular_core.OutputEmitterRef<TreeNodeCheckEvent>;
|
|
5169
|
+
readonly selectedNodeId: _angular_core.WritableSignal<string | number | null>;
|
|
5170
|
+
readonly expandedNodeIds: _angular_core.WritableSignal<Set<string | number>>;
|
|
5171
|
+
readonly checkedNodeIds: _angular_core.WritableSignal<Set<string | number>>;
|
|
5172
|
+
readonly containerClasses: _angular_core.Signal<string>;
|
|
5173
|
+
readonly processedData: _angular_core.Signal<TreeNode[]>;
|
|
5174
|
+
constructor();
|
|
5175
|
+
onNodeClick(node: TreeNode): void;
|
|
5176
|
+
onNodeToggle(node: TreeNode): void;
|
|
5177
|
+
onNodeCheck(node: TreeNode, checked: boolean): void;
|
|
5178
|
+
isSelected(nodeId: string | number): boolean;
|
|
5179
|
+
isExpanded(nodeId: string | number): boolean;
|
|
5180
|
+
isChecked(nodeId: string | number): boolean;
|
|
5181
|
+
getIndeterminateState(node: TreeNode): boolean;
|
|
5182
|
+
private toggleExpand;
|
|
5183
|
+
private setNodeChecked;
|
|
5184
|
+
private updateChildrenChecked;
|
|
5185
|
+
private expandAllNodes;
|
|
5186
|
+
private initializeExpandedState;
|
|
5187
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DsTree, never>;
|
|
5188
|
+
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
|
+
|
|
4319
5191
|
/**
|
|
4320
5192
|
* Positions standard pour dropdowns (menus déroulants, select, etc.)
|
|
4321
5193
|
*
|
|
@@ -4684,5 +5556,5 @@ declare class DsI18nService {
|
|
|
4684
5556
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DsI18nService>;
|
|
4685
5557
|
}
|
|
4686
5558
|
|
|
4687
|
-
export { AUTOCOMPLETE_POSITIONS, BUTTON_APPEARANCE_OPTIONS, BUTTON_SIZE_OPTIONS, BUTTON_VARIANT_OPTIONS, DROPDOWN_POSITIONS, DsAccordion, DsAlert, DsAvatar, DsBadge, DsBreadcrumb, DsButton, DsCard, DsCheckbox, DsCombobox, DsContainer, DsDatePicker, DsDivider, DsDropdown, DsI18nService, DsInputField, DsInputTextarea, DsMenu, DsModalComponent, DsPagination, DsPopover, DsPopoverComponent, DsProgressBar, DsRadioGroup, DsSearchInput, DsSelect, DsSkeleton, DsStepper, DsTable, DsTabs, DsToastComponent, DsToastContainerComponent, DsToastService, DsToggle, DsTooltip, DsTooltipComponent, IconRegistryService, POPOVER_POSITIONS, PrimitiveBadge, PrimitiveButton, PrimitiveCheckbox, PrimitiveInput, PrimitiveRadio, PrimitiveTextarea, PrimitiveToggle, TOOLTIP_POSITIONS, buildButtonArgTypes, buildButtonArgs, createSizeRender, createVariantRender };
|
|
4688
|
-
export type { AccordionChangeEvent, AccordionItem, AccordionSize, AccordionVariant, AlertSize, AlertType, AvatarShape, AvatarSize, BadgeAppearance, BadgeShape, BadgeSize, BadgeType, BadgeVariant, BreadcrumbItem, ButtonAppearance, ButtonSize, ButtonType, ButtonVariant, CardSize, CardVariant, CheckboxSize, CheckboxState, ContainerGutter, ContainerMaxWidth, DatePickerMode, DatePickerSize, DateRange, DividerLabelPosition, DividerOrientation, DividerSize, DividerVariant, DropdownItem, DropdownItemDTO, DsComboboxOption, DsComboboxSize, DsSelectOption, DsSelectSize, DsTableColumn, DsTableSize, DsTableVariant, I18nLabels, InputAppearance, InputSize, InputState, InputType, MenuItem, MenuSize, MenuTrigger, PageChangeEvent, PageSizeOption, PaginationSize, PopoverTrigger, ProgressBarMode, ProgressBarSize, ProgressBarVariant, RadioGroupLayout, RadioOption, RadioSize, SearchInputSize, SkeletonSize, SkeletonVariant, SortDirection, SortEvent, Step, StepChangeEvent, StepState, StepperOrientation, StepperSize, SupportedLocale, TabItem, TableState, TextareaAppearance, TextareaResize, TextareaSize, TextareaState, ToastInstance, ToastOptions, ToastPosition, ToastType, ToggleSize };
|
|
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 };
|