@kksdev/ds-angular 1.3.0 → 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/index.d.ts CHANGED
@@ -4666,6 +4666,528 @@ declare class DsFileUpload implements ControlValueAccessor {
4666
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
4667
  }
4668
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
+
4669
5191
  /**
4670
5192
  * Positions standard pour dropdowns (menus déroulants, select, etc.)
4671
5193
  *
@@ -5034,5 +5556,5 @@ declare class DsI18nService {
5034
5556
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<DsI18nService>;
5035
5557
  }
5036
5558
 
5037
- 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, DsDropdown, DsFileUpload, DsI18nService, DsInputField, DsInputTextarea, DsMenu, DsModalComponent, DsPagination, DsPopover, DsPopoverComponent, DsProgressBar, DsRadioGroup, DsSearchInput, DsSelect, DsSkeleton, DsSlider, 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 };
5038
- 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, DropdownItem, DropdownItemDTO, DsComboboxOption, DsComboboxSize, DsSelectOption, DsSelectSize, DsTableColumn, DsTableSize, DsTableVariant, FileUploadSize, I18nLabels, InputAppearance, InputSize, InputState, InputType, MenuItem, MenuSize, MenuTrigger, PageChangeEvent, PageSizeOption, PaginationSize, PopoverTrigger, ProgressBarMode, ProgressBarSize, ProgressBarVariant, RadioGroupLayout, RadioOption, RadioSize, SearchInputSize, SkeletonSize, SkeletonVariant, SliderOrientation, SliderSize, SliderValue, SortDirection, SortEvent, Step, StepChangeEvent, StepState, StepperOrientation, StepperSize, SupportedLocale, TabItem, TableState, TextareaAppearance, TextareaResize, TextareaSize, TextareaState, ToastInstance, ToastOptions, ToastPosition, ToastType, ToggleSize, UploadFile };
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 };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kksdev/ds-angular",
3
- "version": "1.3.0",
4
- "description": "Angular 20 standalone component library - Design System with 33 components, 7 primitives, 3 themes, i18n support",
3
+ "version": "1.4.0",
4
+ "description": "Angular 20 standalone component library - Design System with 38 components, 7 primitives, 3 themes, i18n support",
5
5
  "keywords": [
6
6
  "angular",
7
7
  "angular20",
@@ -665,4 +665,63 @@
665
665
  --chip-info-border: var(--info);
666
666
  --chip-info-hover-bg: color-mix(in oklab, var(--info) 30%, transparent);
667
667
  --chip-info-hover-bg-outlined: color-mix(in oklab, var(--info) 15%, transparent);
668
+
669
+ /* ==========================================================================
670
+ * SÉMANTIQUES DS EMPTY
671
+ * ======================================================================== */
672
+ --empty-text: var(--text-muted);
673
+ --empty-icon-color: var(--gray-500);
674
+ --empty-title-color: var(--text-default);
675
+ --empty-description-color: var(--text-muted);
676
+
677
+ /* ==========================================================================
678
+ * SÉMANTIQUES DS RATING
679
+ * ======================================================================== */
680
+ --rating-filled-color: var(--warning);
681
+ --rating-empty-color: var(--gray-600);
682
+ --rating-hover-color: color-mix(in oklab, var(--warning) 60%, transparent);
683
+ --rating-focus-color: var(--color-primary);
684
+
685
+ /* ==========================================================================
686
+ * SÉMANTIQUES DS DRAWER
687
+ * ======================================================================== */
688
+ --drawer-bg: var(--gray-800);
689
+ --drawer-border: var(--gray-700);
690
+ --drawer-shadow: 0 8px 16px rgba(0, 0, 0, 0.4);
691
+ --drawer-header-bg: var(--gray-750);
692
+ --drawer-footer-bg: var(--gray-750);
693
+ --drawer-title-color: var(--gray-100);
694
+ --drawer-body-color: var(--gray-200);
695
+ --drawer-close-color: var(--gray-400);
696
+ --drawer-close-hover-bg: var(--gray-700);
697
+ --drawer-close-hover-color: var(--gray-100);
698
+ --drawer-close-active-bg: var(--gray-600);
699
+ --drawer-close-focus-color: var(--color-primary);
700
+ --drawer-backdrop: rgba(0, 0, 0, 0.7);
701
+
702
+ /* ==========================================================================
703
+ * SÉMANTIQUES DS TIME PICKER
704
+ * ======================================================================== */
705
+ --time-picker-panel-bg: var(--gray-800);
706
+ --time-picker-panel-border: var(--gray-700);
707
+ --time-picker-column-bg: var(--gray-850);
708
+ --time-picker-column-border: var(--gray-700);
709
+ --time-picker-option-text: var(--gray-200);
710
+ --time-picker-option-hover: var(--gray-700);
711
+ --time-picker-option-focus: var(--gray-700);
712
+ --time-picker-option-selected-bg: var(--color-primary);
713
+ --time-picker-option-selected-text: var(--white);
714
+ --time-picker-option-selected-hover: color-mix(in oklab, var(--color-primary) 75%, var(--gray-800));
715
+
716
+ /* ==========================================================================
717
+ * SÉMANTIQUES DS TREE
718
+ * ======================================================================== */
719
+ --tree-bg: var(--gray-800);
720
+ --tree-border: var(--gray-700);
721
+ --tree-node-hover-bg: var(--gray-700);
722
+ --tree-node-selected-bg: color-mix(in oklab, var(--color-primary) 20%, transparent);
723
+ --tree-node-selected-text: var(--color-primary);
724
+ --tree-toggle-color: var(--gray-400);
725
+ --tree-toggle-hover-color: var(--gray-100);
726
+ --tree-icon-color: var(--gray-400);
668
727
  }
@@ -655,4 +655,63 @@
655
655
  --chip-info-border: var(--info);
656
656
  --chip-info-hover-bg: color-mix(in oklab, var(--info) 25%, transparent);
657
657
  --chip-info-hover-bg-outlined: color-mix(in oklab, var(--info) 10%, transparent);
658
+
659
+ /* ==========================================================================
660
+ * SÉMANTIQUES DS EMPTY
661
+ * ======================================================================== */
662
+ --empty-text: var(--text-muted);
663
+ --empty-icon-color: var(--text-disabled);
664
+ --empty-title-color: var(--text-default);
665
+ --empty-description-color: var(--text-muted);
666
+
667
+ /* ==========================================================================
668
+ * SÉMANTIQUES DS RATING
669
+ * ======================================================================== */
670
+ --rating-filled-color: var(--warning);
671
+ --rating-empty-color: var(--border-color);
672
+ --rating-hover-color: color-mix(in oklab, var(--warning) 50%, transparent);
673
+ --rating-focus-color: var(--color-primary);
674
+
675
+ /* ==========================================================================
676
+ * SÉMANTIQUES DS DRAWER
677
+ * ======================================================================== */
678
+ --drawer-bg: var(--surface-default);
679
+ --drawer-border: var(--border-color);
680
+ --drawer-shadow: var(--shadow-3);
681
+ --drawer-header-bg: var(--surface-raised);
682
+ --drawer-footer-bg: var(--surface-raised);
683
+ --drawer-title-color: var(--text-default);
684
+ --drawer-body-color: var(--text-default);
685
+ --drawer-close-color: var(--text-muted);
686
+ --drawer-close-hover-bg: var(--surface-hover);
687
+ --drawer-close-hover-color: var(--text-default);
688
+ --drawer-close-active-bg: var(--surface-raised);
689
+ --drawer-close-focus-color: var(--color-primary);
690
+ --drawer-backdrop: rgba(0, 0, 0, 0.5);
691
+
692
+ /* ==========================================================================
693
+ * SÉMANTIQUES DS TIME PICKER
694
+ * ======================================================================== */
695
+ --time-picker-panel-bg: var(--surface-default);
696
+ --time-picker-panel-border: var(--border-color);
697
+ --time-picker-column-bg: var(--surface-default);
698
+ --time-picker-column-border: var(--gray-200);
699
+ --time-picker-option-text: var(--text-default);
700
+ --time-picker-option-hover: var(--surface-hover);
701
+ --time-picker-option-focus: var(--surface-hover);
702
+ --time-picker-option-selected-bg: var(--color-primary);
703
+ --time-picker-option-selected-text: var(--white);
704
+ --time-picker-option-selected-hover: color-mix(in oklab, var(--color-primary) 85%, var(--background-main));
705
+
706
+ /* ==========================================================================
707
+ * SÉMANTIQUES DS TREE
708
+ * ======================================================================== */
709
+ --tree-bg: var(--surface-default);
710
+ --tree-border: var(--border-color);
711
+ --tree-node-hover-bg: var(--surface-hover);
712
+ --tree-node-selected-bg: var(--blue-100);
713
+ --tree-node-selected-text: var(--color-primary);
714
+ --tree-toggle-color: var(--text-muted);
715
+ --tree-toggle-hover-color: var(--text-default);
716
+ --tree-icon-color: var(--text-muted);
658
717
  }