@sonny-ui/core 0.1.0-alpha.12 → 0.1.0-alpha.14

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.
@@ -2,7 +2,6 @@ import {
2
2
  ChangeDetectionStrategy,
3
3
  Component,
4
4
  computed,
5
- effect,
6
5
  forwardRef,
7
6
  input,
8
7
  model,
@@ -74,21 +73,8 @@ export class SnyFileInputComponent implements ControlValueAccessor {
74
73
 
75
74
  private _onChange: (value: FileList | null) => void = () => {};
76
75
  protected onTouched: () => void = () => {};
77
- private _writing = false;
78
-
79
- constructor() {
80
- effect(() => {
81
- const val = this.value();
82
- if (this._writing) {
83
- this._writing = false;
84
- return;
85
- }
86
- this._onChange(val);
87
- });
88
- }
89
76
 
90
77
  writeValue(val: FileList | null): void {
91
- this._writing = true;
92
78
  this.value.set(val ?? null);
93
79
  }
94
80
 
@@ -148,6 +134,7 @@ export class SnyFileInputComponent implements ControlValueAccessor {
148
134
 
149
135
  clear(): void {
150
136
  this.value.set(null);
137
+ this._onChange(null);
151
138
  const inputEl = this.fileInputRef()?.nativeElement;
152
139
  if (inputEl) inputEl.value = '';
153
140
  }
@@ -163,6 +150,7 @@ export class SnyFileInputComponent implements ControlValueAccessor {
163
150
  }
164
151
  }
165
152
  this.value.set(files);
153
+ this._onChange(files);
166
154
  this.fileChange.emit(files);
167
155
  }
168
156
  }
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, computed, effect, forwardRef, input, model, signal } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';
2
2
  import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { cn } from '../core/utils/cn';
4
4
  import { ratingVariants, type RatingSize, type RatingVariant } from './rating.variants';
@@ -62,21 +62,8 @@ export class SnyRatingComponent implements ControlValueAccessor {
62
62
 
63
63
  private _onChange: (value: number) => void = () => {};
64
64
  protected onTouched: () => void = () => {};
65
- private _writing = false;
66
-
67
- constructor() {
68
- effect(() => {
69
- const val = this.value();
70
- if (this._writing) {
71
- this._writing = false;
72
- return;
73
- }
74
- this._onChange(val);
75
- });
76
- }
77
65
 
78
66
  writeValue(val: number): void {
79
- this._writing = true;
80
67
  this.value.set(val ?? 0);
81
68
  }
82
69
 
@@ -133,6 +120,7 @@ export class SnyRatingComponent implements ControlValueAccessor {
133
120
  onStarClick(index: number): void {
134
121
  if (this.isDisabled()) return;
135
122
  this.value.set(index);
123
+ this._onChange(index);
136
124
  }
137
125
 
138
126
  onStarHover(index: number): void {
@@ -147,25 +135,30 @@ export class SnyRatingComponent implements ControlValueAccessor {
147
135
  onKeydown(event: KeyboardEvent): void {
148
136
  if (this.isDisabled()) return;
149
137
  const step = this.half() ? 0.5 : 1;
138
+ let newVal: number | undefined;
150
139
  switch (event.key) {
151
140
  case 'ArrowRight':
152
141
  case 'ArrowUp':
153
142
  event.preventDefault();
154
- this.value.update((v) => Math.min(this.max(), v + step));
143
+ newVal = Math.min(this.max(), this.value() + step);
155
144
  break;
156
145
  case 'ArrowLeft':
157
146
  case 'ArrowDown':
158
147
  event.preventDefault();
159
- this.value.update((v) => Math.max(0, v - step));
148
+ newVal = Math.max(0, this.value() - step);
160
149
  break;
161
150
  case 'Home':
162
151
  event.preventDefault();
163
- this.value.set(0);
152
+ newVal = 0;
164
153
  break;
165
154
  case 'End':
166
155
  event.preventDefault();
167
- this.value.set(this.max());
156
+ newVal = this.max();
168
157
  break;
169
158
  }
159
+ if (newVal !== undefined) {
160
+ this.value.set(newVal);
161
+ this._onChange(newVal);
162
+ }
170
163
  }
171
164
  }
@@ -2,7 +2,6 @@ import {
2
2
  ChangeDetectionStrategy,
3
3
  Component,
4
4
  computed,
5
- effect,
6
5
  ElementRef,
7
6
  forwardRef,
8
7
  HostListener,
@@ -56,7 +55,7 @@ export interface SelectOption {
56
55
  #dropdownEl
57
56
  class="fixed z-50 rounded-sm border border-border bg-popover text-popover-foreground shadow-md"
58
57
  >
59
- <ul role="listbox" class="max-h-60 overflow-auto p-1">
58
+ <ul role="listbox" class="max-h-60 overflow-auto p-1 sny-scrollbar">
60
59
  @for (opt of options(); track opt.value; let i = $index) {
61
60
  <li
62
61
  role="option"
@@ -101,21 +100,8 @@ export class SnySelectComponent implements ControlValueAccessor, OnDestroy {
101
100
 
102
101
  private _onChange: (value: string) => void = () => {};
103
102
  protected onTouched: () => void = () => {};
104
- private _writing = false;
105
-
106
- constructor() {
107
- effect(() => {
108
- const val = this.value();
109
- if (this._writing) {
110
- this._writing = false;
111
- return;
112
- }
113
- this._onChange(val);
114
- });
115
- }
116
103
 
117
104
  writeValue(val: string): void {
118
- this._writing = true;
119
105
  this.value.set(val ?? '');
120
106
  }
121
107
 
@@ -207,6 +193,7 @@ export class SnySelectComponent implements ControlValueAccessor, OnDestroy {
207
193
 
208
194
  select(opt: SelectOption): void {
209
195
  this.value.set(opt.value);
196
+ this._onChange(opt.value);
210
197
  this.close();
211
198
  }
212
199
 
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, forwardRef, input, model, OnDestroy, signal, viewChild } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, input, model, OnDestroy, signal, viewChild } from '@angular/core';
2
2
  import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { cn } from '../core/utils/cn';
4
4
  import { sliderTrackVariants, sliderThumbSize, type SliderSize } from './slider.variants';
@@ -55,21 +55,8 @@ export class SnySliderComponent implements ControlValueAccessor, OnDestroy {
55
55
 
56
56
  private _onChange: (value: number) => void = () => {};
57
57
  protected onTouched: () => void = () => {};
58
- private _writing = false;
59
-
60
- constructor() {
61
- effect(() => {
62
- const val = this.value();
63
- if (this._writing) {
64
- this._writing = false;
65
- return;
66
- }
67
- this._onChange(val);
68
- });
69
- }
70
58
 
71
59
  writeValue(val: number): void {
72
- this._writing = true;
73
60
  this.value.set(val ?? 0);
74
61
  }
75
62
 
@@ -110,7 +97,9 @@ export class SnySliderComponent implements ControlValueAccessor, OnDestroy {
110
97
  const percent = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
111
98
  const raw = this.min() + percent * (this.max() - this.min());
112
99
  const stepped = Math.round(raw / this.step()) * this.step();
113
- this.value.set(Math.max(this.min(), Math.min(this.max(), stepped)));
100
+ const clamped = Math.max(this.min(), Math.min(this.max(), stepped));
101
+ this.value.set(clamped);
102
+ this._onChange(clamped);
114
103
  }
115
104
 
116
105
  onTrackMousedown(event: MouseEvent): void {
@@ -147,26 +136,31 @@ export class SnySliderComponent implements ControlValueAccessor, OnDestroy {
147
136
  onKeydown(event: KeyboardEvent): void {
148
137
  if (this.isDisabled()) return;
149
138
  const step = this.step();
139
+ let newVal: number | undefined;
150
140
  switch (event.key) {
151
141
  case 'ArrowRight':
152
142
  case 'ArrowUp':
153
143
  event.preventDefault();
154
- this.value.set(Math.min(this.max(), this.value() + step));
144
+ newVal = Math.min(this.max(), this.value() + step);
155
145
  break;
156
146
  case 'ArrowLeft':
157
147
  case 'ArrowDown':
158
148
  event.preventDefault();
159
- this.value.set(Math.max(this.min(), this.value() - step));
149
+ newVal = Math.max(this.min(), this.value() - step);
160
150
  break;
161
151
  case 'Home':
162
152
  event.preventDefault();
163
- this.value.set(this.min());
153
+ newVal = this.min();
164
154
  break;
165
155
  case 'End':
166
156
  event.preventDefault();
167
- this.value.set(this.max());
157
+ newVal = this.max();
168
158
  break;
169
159
  }
160
+ if (newVal !== undefined) {
161
+ this.value.set(newVal);
162
+ this._onChange(newVal);
163
+ }
170
164
  }
171
165
 
172
166
  private removeListeners(): void {
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, computed, effect, forwardRef, input, model, signal } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, forwardRef, input, model, signal } from '@angular/core';
2
2
  import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { cn } from '../core/utils/cn';
4
4
  import { switchTrackVariants, switchThumbSize, switchThumbTranslate, type SwitchSize } from './switch.variants';
@@ -18,7 +18,7 @@ import { switchTrackVariants, switchThumbSize, switchThumbTranslate, type Switch
18
18
  [attr.aria-checked]="checked()"
19
19
  [disabled]="isDisabled()"
20
20
  [class]="trackClass()"
21
- (click)="checked.set(!checked())"
21
+ (click)="toggle()"
22
22
  (blur)="onTouched()"
23
23
  >
24
24
  <span [class]="thumbClass()"></span>
@@ -36,21 +36,8 @@ export class SnySwitchComponent implements ControlValueAccessor {
36
36
 
37
37
  private _onChange: (value: boolean) => void = () => {};
38
38
  protected onTouched: () => void = () => {};
39
- private _writing = false;
40
-
41
- constructor() {
42
- effect(() => {
43
- const val = this.checked();
44
- if (this._writing) {
45
- this._writing = false;
46
- return;
47
- }
48
- this._onChange(val);
49
- });
50
- }
51
39
 
52
40
  writeValue(val: boolean): void {
53
- this._writing = true;
54
41
  this.checked.set(val ?? false);
55
42
  }
56
43
 
@@ -66,6 +53,12 @@ export class SnySwitchComponent implements ControlValueAccessor {
66
53
  this._disabledByCva.set(isDisabled);
67
54
  }
68
55
 
56
+ toggle(): void {
57
+ const newVal = !this.checked();
58
+ this.checked.set(newVal);
59
+ this._onChange(newVal);
60
+ }
61
+
69
62
  protected readonly trackClass = computed(() =>
70
63
  cn(
71
64
  switchTrackVariants({ size: this.size() }),
@@ -1,4 +1,4 @@
1
- import { Directive, computed, effect, forwardRef, input, model, signal } from '@angular/core';
1
+ import { Directive, computed, forwardRef, input, model, signal } from '@angular/core';
2
2
  import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { cn } from '../core/utils/cn';
4
4
  import { toggleVariants, type ToggleVariant, type ToggleSize } from './toggle.variants';
@@ -28,21 +28,8 @@ export class SnyToggleDirective implements ControlValueAccessor {
28
28
 
29
29
  private _onChange: (value: boolean) => void = () => {};
30
30
  protected onTouched: () => void = () => {};
31
- private _writing = false;
32
-
33
- constructor() {
34
- effect(() => {
35
- const val = this.pressed();
36
- if (this._writing) {
37
- this._writing = false;
38
- return;
39
- }
40
- this._onChange(val);
41
- });
42
- }
43
31
 
44
32
  writeValue(val: boolean): void {
45
- this._writing = true;
46
33
  this.pressed.set(val ?? false);
47
34
  }
48
35
 
@@ -60,7 +47,9 @@ export class SnyToggleDirective implements ControlValueAccessor {
60
47
 
61
48
  protected toggle(): void {
62
49
  if (this.isDisabled()) return;
63
- this.pressed.set(!this.pressed());
50
+ const newVal = !this.pressed();
51
+ this.pressed.set(newVal);
52
+ this._onChange(newVal);
64
53
  }
65
54
 
66
55
  protected readonly computedClass = computed(() =>
@@ -17,6 +17,8 @@
17
17
  --color-destructive-foreground: var(--sny-destructive-foreground);
18
18
  --color-card: var(--sny-card);
19
19
  --color-card-foreground: var(--sny-card-foreground);
20
+ --color-popover: var(--sny-popover);
21
+ --color-popover-foreground: var(--sny-popover-foreground);
20
22
  --color-border: var(--sny-border);
21
23
  --color-input: var(--sny-input);
22
24
  --color-ring: var(--sny-ring);
@@ -38,6 +40,8 @@
38
40
  --sny-destructive-foreground: #fafafa;
39
41
  --sny-card: #ffffff;
40
42
  --sny-card-foreground: #0a0a0a;
43
+ --sny-popover: #ffffff;
44
+ --sny-popover-foreground: #0a0a0a;
41
45
  --sny-border: #e5e5e5;
42
46
  --sny-input: #e5e5e5;
43
47
  --sny-ring: #0a0a0a;
@@ -60,6 +64,8 @@
60
64
  --sny-destructive-foreground: #fafafa;
61
65
  --sny-card: #0a0a0a;
62
66
  --sny-card-foreground: #fafafa;
67
+ --sny-popover: #171717;
68
+ --sny-popover-foreground: #fafafa;
63
69
  --sny-border: #262626;
64
70
  --sny-input: #262626;
65
71
  --sny-ring: #d4d4d4;
@@ -80,12 +86,39 @@
80
86
  --sny-destructive-foreground: #ffffff;
81
87
  --sny-card: #ffffff;
82
88
  --sny-card-foreground: #0f172a;
89
+ --sny-popover: #ffffff;
90
+ --sny-popover-foreground: #0f172a;
83
91
  --sny-border: #cbd5e1;
84
92
  --sny-input: #cbd5e1;
85
93
  --sny-ring: #3b82f6;
86
94
  --sny-radius: 0.375rem;
87
95
  }
88
96
 
97
+ /* ─── Custom scrollbar ─── */
98
+
99
+ .sny-scrollbar {
100
+ scrollbar-width: thin;
101
+ scrollbar-color: var(--sny-muted-foreground) transparent;
102
+ }
103
+
104
+ .sny-scrollbar::-webkit-scrollbar {
105
+ width: 6px;
106
+ height: 6px;
107
+ }
108
+
109
+ .sny-scrollbar::-webkit-scrollbar-track {
110
+ background: transparent;
111
+ }
112
+
113
+ .sny-scrollbar::-webkit-scrollbar-thumb {
114
+ background-color: var(--sny-muted-foreground);
115
+ border-radius: 9999px;
116
+ }
117
+
118
+ .sny-scrollbar::-webkit-scrollbar-thumb:hover {
119
+ background-color: var(--sny-foreground);
120
+ }
121
+
89
122
  /* ─── Dialog / Sheet overlay ─── */
90
123
 
91
124
  .sny-dialog-backdrop {
@@ -1,7 +1,7 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  export { VariantProps, cva } from 'class-variance-authority';
3
3
  import * as _angular_core from '@angular/core';
4
- import { InjectionToken, EnvironmentProviders, OnDestroy } from '@angular/core';
4
+ import { InjectionToken, EnvironmentProviders, OnDestroy, TemplateRef } from '@angular/core';
5
5
  import * as class_variance_authority_types from 'class-variance-authority/types';
6
6
  import * as _sonny_ui_core from '@sonny-ui/core';
7
7
  import { ComponentType } from '@angular/cdk/overlay';
@@ -412,8 +412,6 @@ declare class SnyComboboxComponent implements ControlValueAccessor, OnDestroy {
412
412
  private resizeHandler;
413
413
  private _onChange;
414
414
  protected onTouched: () => void;
415
- private _writing;
416
- constructor();
417
415
  writeValue(val: string): void;
418
416
  registerOnChange(fn: (value: string) => void): void;
419
417
  registerOnTouched(fn: () => void): void;
@@ -479,12 +477,11 @@ declare class SnySwitchComponent implements ControlValueAccessor {
479
477
  protected readonly isDisabled: _angular_core.Signal<boolean>;
480
478
  private _onChange;
481
479
  protected onTouched: () => void;
482
- private _writing;
483
- constructor();
484
480
  writeValue(val: boolean): void;
485
481
  registerOnChange(fn: (value: boolean) => void): void;
486
482
  registerOnTouched(fn: () => void): void;
487
483
  setDisabledState(isDisabled: boolean): void;
484
+ toggle(): void;
488
485
  protected readonly trackClass: _angular_core.Signal<string>;
489
486
  protected readonly thumbClass: _angular_core.Signal<string>;
490
487
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SnySwitchComponent, never>;
@@ -507,8 +504,6 @@ declare class SnyToggleDirective implements ControlValueAccessor {
507
504
  protected readonly isDisabled: _angular_core.Signal<boolean>;
508
505
  private _onChange;
509
506
  protected onTouched: () => void;
510
- private _writing;
511
- constructor();
512
507
  writeValue(val: boolean): void;
513
508
  registerOnChange(fn: (value: boolean) => void): void;
514
509
  registerOnTouched(fn: () => void): void;
@@ -539,8 +534,6 @@ declare class SnySliderComponent implements ControlValueAccessor, OnDestroy {
539
534
  private upHandler;
540
535
  private _onChange;
541
536
  protected onTouched: () => void;
542
- private _writing;
543
- constructor();
544
537
  writeValue(val: number): void;
545
538
  registerOnChange(fn: (value: number) => void): void;
546
539
  registerOnTouched(fn: () => void): void;
@@ -639,8 +632,6 @@ declare class SnySelectComponent implements ControlValueAccessor, OnDestroy {
639
632
  private resizeHandler;
640
633
  private _onChange;
641
634
  protected onTouched: () => void;
642
- private _writing;
643
- constructor();
644
635
  writeValue(val: string): void;
645
636
  registerOnChange(fn: (value: string) => void): void;
646
637
  registerOnTouched(fn: () => void): void;
@@ -728,6 +719,112 @@ declare class SnyTableCaptionDirective {
728
719
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SnyTableCaptionDirective, "caption[snyTableCaption]", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
729
720
  }
730
721
 
722
+ declare class SnyCellDefDirective {
723
+ readonly snyCell: _angular_core.InputSignal<string>;
724
+ readonly template: TemplateRef<any>;
725
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SnyCellDefDirective, never>;
726
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SnyCellDefDirective, "[snyCell]", never, { "snyCell": { "alias": "snyCell"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
727
+ }
728
+ declare class SnyHeaderCellDefDirective {
729
+ readonly snyHeaderCell: _angular_core.InputSignal<string>;
730
+ readonly template: TemplateRef<any>;
731
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SnyHeaderCellDefDirective, never>;
732
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SnyHeaderCellDefDirective, "[snyHeaderCell]", never, { "snyHeaderCell": { "alias": "snyHeaderCell"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
733
+ }
734
+ declare class SnyBulkActionsDefDirective {
735
+ readonly template: TemplateRef<any>;
736
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SnyBulkActionsDefDirective, never>;
737
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SnyBulkActionsDefDirective, "[snyBulkActions]", never, {}, {}, never, never, true, never>;
738
+ }
739
+ declare class SnyRowExpandDefDirective {
740
+ readonly template: TemplateRef<any>;
741
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SnyRowExpandDefDirective, never>;
742
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SnyRowExpandDefDirective, "[snyRowExpand]", never, {}, {}, never, never, true, never>;
743
+ }
744
+
745
+ interface DataTableColumn {
746
+ key: string;
747
+ label: string;
748
+ sortable?: boolean;
749
+ filterable?: boolean;
750
+ width?: string;
751
+ visible?: boolean;
752
+ }
753
+ type SortDirection = 'asc' | 'desc' | null;
754
+ interface SortState {
755
+ key: string;
756
+ direction: SortDirection;
757
+ }
758
+ interface DataTablePaginationConfig {
759
+ pageSize: number;
760
+ pageSizeOptions: number[];
761
+ }
762
+
763
+ declare class SnyDataTableComponent {
764
+ readonly columns: _angular_core.InputSignal<DataTableColumn[]>;
765
+ readonly data: _angular_core.InputSignal<Record<string, unknown>[]>;
766
+ readonly variant: _angular_core.InputSignal<TableVariant>;
767
+ readonly density: _angular_core.InputSignal<TableDensity>;
768
+ readonly hoverable: _angular_core.InputSignal<boolean>;
769
+ readonly stickyHeader: _angular_core.InputSignal<boolean>;
770
+ readonly selectable: _angular_core.InputSignal<boolean>;
771
+ readonly paginated: _angular_core.InputSignal<boolean>;
772
+ readonly filterable: _angular_core.InputSignal<boolean>;
773
+ readonly showExport: _angular_core.InputSignal<boolean>;
774
+ readonly showColumnToggle: _angular_core.InputSignal<boolean>;
775
+ readonly expandable: _angular_core.InputSignal<boolean>;
776
+ readonly loading: _angular_core.InputSignal<boolean>;
777
+ readonly loadingRows: _angular_core.InputSignal<number>;
778
+ readonly paginationConfig: _angular_core.InputSignal<DataTablePaginationConfig>;
779
+ readonly trackBy: _angular_core.InputSignal<string>;
780
+ readonly noDataText: _angular_core.InputSignal<string>;
781
+ readonly selectedRows: _angular_core.ModelSignal<Record<string, unknown>[]>;
782
+ readonly sortChanged: _angular_core.OutputEmitterRef<SortState>;
783
+ readonly rowClicked: _angular_core.OutputEmitterRef<Record<string, unknown>>;
784
+ readonly dataExported: _angular_core.OutputEmitterRef<Record<string, unknown>[]>;
785
+ readonly cellDefs: _angular_core.Signal<readonly SnyCellDefDirective[]>;
786
+ readonly headerCellDefs: _angular_core.Signal<readonly SnyHeaderCellDefDirective[]>;
787
+ readonly bulkActionsDef: _angular_core.Signal<SnyBulkActionsDefDirective | undefined>;
788
+ readonly rowExpandDef: _angular_core.Signal<SnyRowExpandDefDirective | undefined>;
789
+ readonly sortState: _angular_core.WritableSignal<SortState>;
790
+ readonly filterText: _angular_core.WritableSignal<string>;
791
+ readonly currentPage: _angular_core.WritableSignal<number>;
792
+ readonly pageSize: _angular_core.WritableSignal<number>;
793
+ readonly hiddenColumns: _angular_core.WritableSignal<Set<string>>;
794
+ readonly expandedRows: _angular_core.WritableSignal<Set<unknown>>;
795
+ readonly cellDefMap: _angular_core.Signal<Map<string, TemplateRef<unknown>>>;
796
+ readonly headerCellDefMap: _angular_core.Signal<Map<string, TemplateRef<unknown>>>;
797
+ readonly visibleColumns: _angular_core.Signal<DataTableColumn[]>;
798
+ readonly pageSizeOptions: _angular_core.Signal<SelectOption[]>;
799
+ readonly pageSizeValue: _angular_core.Signal<string>;
800
+ readonly skeletonRows: _angular_core.Signal<number[]>;
801
+ readonly showBulkActions: _angular_core.Signal<boolean>;
802
+ readonly filteredData: _angular_core.Signal<Record<string, unknown>[]>;
803
+ readonly sortedData: _angular_core.Signal<Record<string, unknown>[]>;
804
+ readonly totalPages: _angular_core.Signal<number>;
805
+ readonly paginatedData: _angular_core.Signal<Record<string, unknown>[]>;
806
+ readonly totalColSpan: _angular_core.Signal<number>;
807
+ readonly allSelected: _angular_core.Signal<boolean>;
808
+ readonly someSelected: _angular_core.Signal<boolean>;
809
+ constructor();
810
+ toggleSort(key: string): void;
811
+ onFilterInput(event: Event): void;
812
+ onPageSizeChange(value: string): void;
813
+ toggleSelectAll(): void;
814
+ toggleRowSelection(row: Record<string, unknown>): void;
815
+ onRowClick(row: Record<string, unknown>): void;
816
+ onExport(): void;
817
+ toggleColumnVisibility(key: string): void;
818
+ toggleRowExpansion(row: Record<string, unknown>): void;
819
+ isExpanded(row: Record<string, unknown>): boolean;
820
+ isSelected(row: Record<string, unknown>): boolean;
821
+ trackByFn(row: Record<string, unknown>, index: number): unknown;
822
+ private isRowInList;
823
+ private rowsEqual;
824
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SnyDataTableComponent, never>;
825
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SnyDataTableComponent, "sny-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "showExport": { "alias": "showExport"; "required": false; "isSignal": true; }; "showColumnToggle": { "alias": "showColumnToggle"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "paginationConfig": { "alias": "paginationConfig"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "noDataText": { "alias": "noDataText"; "required": false; "isSignal": true; }; "selectedRows": { "alias": "selectedRows"; "required": false; "isSignal": true; }; }, { "selectedRows": "selectedRowsChange"; "sortChanged": "sortChanged"; "rowClicked": "rowClicked"; "dataExported": "dataExported"; }, ["cellDefs", "headerCellDefs", "bulkActionsDef", "rowExpandDef"], never, true, never>;
826
+ }
827
+
731
828
  interface CdkDialogRefLike<R> {
732
829
  close(result?: R): void;
733
830
  readonly closed: Observable<R | undefined>;
@@ -983,8 +1080,6 @@ declare class SnyFileInputComponent implements ControlValueAccessor {
983
1080
  readonly isDragOver: _angular_core.WritableSignal<boolean>;
984
1081
  private _onChange;
985
1082
  protected onTouched: () => void;
986
- private _writing;
987
- constructor();
988
1083
  writeValue(val: FileList | null): void;
989
1084
  registerOnChange(fn: (value: FileList | null) => void): void;
990
1085
  registerOnTouched(fn: () => void): void;
@@ -1050,8 +1145,6 @@ declare class SnyRatingComponent implements ControlValueAccessor {
1050
1145
  readonly hoverValue: _angular_core.WritableSignal<number | null>;
1051
1146
  private _onChange;
1052
1147
  protected onTouched: () => void;
1053
- private _writing;
1054
- constructor();
1055
1148
  writeValue(val: number): void;
1056
1149
  registerOnChange(fn: (value: number) => void): void;
1057
1150
  registerOnTouched(fn: () => void): void;
@@ -1562,8 +1655,6 @@ declare class SnyCalendarComponent implements ControlValueAccessor {
1562
1655
  readonly weekDays: string[];
1563
1656
  private _onChange;
1564
1657
  protected onTouched: () => void;
1565
- private _writing;
1566
- constructor();
1567
1658
  writeValue(val: Date | null): void;
1568
1659
  registerOnChange(fn: (value: Date | null) => void): void;
1569
1660
  registerOnTouched(fn: () => void): void;
@@ -1604,5 +1695,5 @@ declare class SnyValidatorHintDirective {
1604
1695
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SnyValidatorHintDirective, "[snyValidatorHint]", never, { "when": { "alias": "when"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1605
1696
  }
1606
1697
 
1607
- export { SNY_ACCORDION, SNY_ACCORDION_ITEM, SNY_CAROUSEL, SNY_CHAT_BUBBLE, SNY_CONFIG, SNY_DIALOG_DATA, SNY_DRAWER, SNY_DROPDOWN, SNY_FAB, SNY_SHEET_DATA, SNY_STEPS, SNY_TABLE, SNY_TABS, SNY_TIMELINE, SnyAccordionContentDirective, SnyAccordionDirective, SnyAccordionItemDirective, SnyAccordionTriggerDirective, SnyAlertDescriptionDirective, SnyAlertDirective, SnyAlertTitleDirective, SnyAvatarComponent, SnyBadgeDirective, SnyBreadcrumbDirective, SnyBreadcrumbItemDirective, SnyBreadcrumbLinkDirective, SnyBreadcrumbListDirective, SnyBreadcrumbPageDirective, SnyBreadcrumbSeparatorDirective, SnyButtonDirective, SnyButtonGroupDirective, SnyCalendarComponent, SnyCardContentDirective, SnyCardDescriptionDirective, SnyCardDirective, SnyCardFooterDirective, SnyCardHeaderDirective, SnyCardTitleDirective, SnyCarouselContentDirective, SnyCarouselDirective, SnyCarouselItemDirective, SnyCarouselNextDirective, SnyCarouselPrevDirective, SnyChatBubbleAvatarDirective, SnyChatBubbleBodyDirective, SnyChatBubbleContentDirective, SnyChatBubbleDirective, SnyChatBubbleFooterDirective, SnyChatBubbleHeaderDirective, SnyCheckboxDirective, SnyComboboxComponent, SnyDialogCloseDirective, SnyDialogContentDirective, SnyDialogDescriptionDirective, SnyDialogFooterDirective, SnyDialogHeaderDirective, SnyDialogRef, SnyDialogService, SnyDialogTitleDirective, SnyDiffComponent, SnyDividerComponent, SnyDockDirective, SnyDockItemDirective, SnyDrawerContentDirective, SnyDrawerLayoutComponent, SnyDrawerLayoutDirective, SnyDrawerSideDirective, SnyDropdownContentDirective, SnyDropdownDirective, SnyDropdownTriggerDirective, SnyFabActionDirective, SnyFabDirective, SnyFabTriggerDirective, SnyFieldsetContentDirective, SnyFieldsetDirective, SnyFieldsetLegendDirective, SnyFileInputComponent, SnyIndicatorBadgeDirective, SnyIndicatorDirective, SnyInputDirective, SnyKbdDirective, SnyLabelDirective, SnyLinkDirective, SnyListDirective, SnyListItemActionDirective, SnyListItemContentDirective, SnyListItemDirective, SnyListItemIconDirective, SnyLoaderComponent, SnyMenuContentDirective, SnyMenuItemDirective, SnyMenuLabelDirective, SnyMenuSeparatorDirective, SnyNavbarBrandDirective, SnyNavbarContentDirective, SnyNavbarDirective, SnyNavbarEndDirective, SnyPaginationComponent, SnyProgressComponent, SnyRadialProgressComponent, SnyRadioDirective, SnyRatingComponent, SnySelectComponent, SnySheetCloseDirective, SnySheetContentDirective, SnySheetDescriptionDirective, SnySheetHeaderDirective, SnySheetRef, SnySheetService, SnySheetTitleDirective, SnySkeletonDirective, SnySliderComponent, SnyStatDescriptionDirective, SnyStatDirective, SnyStatFigureDirective, SnyStatTitleDirective, SnyStatValueDirective, SnyStatusDirective, SnyStepDirective, SnyStepsDirective, SnySwitchComponent, SnyTableBodyDirective, SnyTableCaptionDirective, SnyTableCellDirective, SnyTableDirective, SnyTableFooterDirective, SnyTableHeadDirective, SnyTableHeaderDirective, SnyTableRowDirective, SnyTabsContentDirective, SnyTabsDirective, SnyTabsListDirective, SnyTabsTriggerDirective, SnyTextareaDirective, SnyTimelineDirective, SnyTimelineEndDirective, SnyTimelineItemDirective, SnyTimelineMiddleDirective, SnyTimelineStartDirective, SnyToastService, SnyToasterComponent, SnyToggleDirective, SnyTooltipDirective, SnyValidatorDirective, SnyValidatorHintDirective, ThemeService, alertVariants, avatarVariants, badgeVariants, buttonGroupVariants, buttonVariants, cardVariants, checkboxVariants, cn, comboboxTriggerVariants, dividerVariants, dropdownContentVariants, dropdownItemVariants, fieldsetVariants, fileInputVariants, inputVariants, kbdVariants, labelVariants, linkVariants, loaderVariants, paginationItemVariants, progressBarVariants, progressTrackVariants, provideSonnyUI, radioVariants, ratingVariants, selectTriggerVariants, skeletonVariants, sliderTrackVariants, statusVariants, switchTrackVariants, tableCellVariants, tableVariants, tabsListVariants, tabsTriggerVariants, textareaVariants, toastVariants, toggleVariants, tooltipVariants };
1608
- export type { AlertVariant, AvatarSize, AvatarVariant, BadgeSize, BadgeVariant, ButtonGroupOrientation, ButtonSize, ButtonVariant, CardPadding, CardVariant, ChatBubbleAlign, ChatBubbleContentVariant, CheckboxSize, ComboboxOption, ComboboxSize, DividerOrientation, DividerVariant, DockPosition, DrawerSide, DropdownItemVariant, FabDirection, FabPosition, FieldsetVariant, FileInputSize, FileInputVariant, IndicatorPosition, IndicatorVariant, InputSize, InputVariant, KbdSize, LinkVariant, ListVariant, LoaderSize, LoaderVariant, NavbarVariant, PaginationSize, PaginationVariant, ProgressSize, ProgressVariant, RadialProgressSize, RadialProgressVariant, RadioSize, RatingSize, RatingVariant, SelectOption, SelectSize, SheetSide, SkeletonSize, SkeletonVariant, SliderSize, SnyDialogConfig, SnySheetConfig, SonnyConfig, StatDescriptionVariant, StatusSize, StatusVariant, StepStatus, StepsOrientation, StepsSize, SwitchSize, TableDensity, TableVariant, TextareaResize, TextareaSize, TextareaVariant, Theme, TimelineConnect, TimelineMiddleVariant, TimelineOrientation, ToastAction, ToastConfig, ToastData, ToastPosition, ToastVariant, ToggleSize, ToggleVariant, TooltipPosition, ValidatorHintVariant };
1698
+ export { SNY_ACCORDION, SNY_ACCORDION_ITEM, SNY_CAROUSEL, SNY_CHAT_BUBBLE, SNY_CONFIG, SNY_DIALOG_DATA, SNY_DRAWER, SNY_DROPDOWN, SNY_FAB, SNY_SHEET_DATA, SNY_STEPS, SNY_TABLE, SNY_TABS, SNY_TIMELINE, SnyAccordionContentDirective, SnyAccordionDirective, SnyAccordionItemDirective, SnyAccordionTriggerDirective, SnyAlertDescriptionDirective, SnyAlertDirective, SnyAlertTitleDirective, SnyAvatarComponent, SnyBadgeDirective, SnyBreadcrumbDirective, SnyBreadcrumbItemDirective, SnyBreadcrumbLinkDirective, SnyBreadcrumbListDirective, SnyBreadcrumbPageDirective, SnyBreadcrumbSeparatorDirective, SnyBulkActionsDefDirective, SnyButtonDirective, SnyButtonGroupDirective, SnyCalendarComponent, SnyCardContentDirective, SnyCardDescriptionDirective, SnyCardDirective, SnyCardFooterDirective, SnyCardHeaderDirective, SnyCardTitleDirective, SnyCarouselContentDirective, SnyCarouselDirective, SnyCarouselItemDirective, SnyCarouselNextDirective, SnyCarouselPrevDirective, SnyCellDefDirective, SnyChatBubbleAvatarDirective, SnyChatBubbleBodyDirective, SnyChatBubbleContentDirective, SnyChatBubbleDirective, SnyChatBubbleFooterDirective, SnyChatBubbleHeaderDirective, SnyCheckboxDirective, SnyComboboxComponent, SnyDataTableComponent, SnyDialogCloseDirective, SnyDialogContentDirective, SnyDialogDescriptionDirective, SnyDialogFooterDirective, SnyDialogHeaderDirective, SnyDialogRef, SnyDialogService, SnyDialogTitleDirective, SnyDiffComponent, SnyDividerComponent, SnyDockDirective, SnyDockItemDirective, SnyDrawerContentDirective, SnyDrawerLayoutComponent, SnyDrawerLayoutDirective, SnyDrawerSideDirective, SnyDropdownContentDirective, SnyDropdownDirective, SnyDropdownTriggerDirective, SnyFabActionDirective, SnyFabDirective, SnyFabTriggerDirective, SnyFieldsetContentDirective, SnyFieldsetDirective, SnyFieldsetLegendDirective, SnyFileInputComponent, SnyHeaderCellDefDirective, SnyIndicatorBadgeDirective, SnyIndicatorDirective, SnyInputDirective, SnyKbdDirective, SnyLabelDirective, SnyLinkDirective, SnyListDirective, SnyListItemActionDirective, SnyListItemContentDirective, SnyListItemDirective, SnyListItemIconDirective, SnyLoaderComponent, SnyMenuContentDirective, SnyMenuItemDirective, SnyMenuLabelDirective, SnyMenuSeparatorDirective, SnyNavbarBrandDirective, SnyNavbarContentDirective, SnyNavbarDirective, SnyNavbarEndDirective, SnyPaginationComponent, SnyProgressComponent, SnyRadialProgressComponent, SnyRadioDirective, SnyRatingComponent, SnyRowExpandDefDirective, SnySelectComponent, SnySheetCloseDirective, SnySheetContentDirective, SnySheetDescriptionDirective, SnySheetHeaderDirective, SnySheetRef, SnySheetService, SnySheetTitleDirective, SnySkeletonDirective, SnySliderComponent, SnyStatDescriptionDirective, SnyStatDirective, SnyStatFigureDirective, SnyStatTitleDirective, SnyStatValueDirective, SnyStatusDirective, SnyStepDirective, SnyStepsDirective, SnySwitchComponent, SnyTableBodyDirective, SnyTableCaptionDirective, SnyTableCellDirective, SnyTableDirective, SnyTableFooterDirective, SnyTableHeadDirective, SnyTableHeaderDirective, SnyTableRowDirective, SnyTabsContentDirective, SnyTabsDirective, SnyTabsListDirective, SnyTabsTriggerDirective, SnyTextareaDirective, SnyTimelineDirective, SnyTimelineEndDirective, SnyTimelineItemDirective, SnyTimelineMiddleDirective, SnyTimelineStartDirective, SnyToastService, SnyToasterComponent, SnyToggleDirective, SnyTooltipDirective, SnyValidatorDirective, SnyValidatorHintDirective, ThemeService, alertVariants, avatarVariants, badgeVariants, buttonGroupVariants, buttonVariants, cardVariants, checkboxVariants, cn, comboboxTriggerVariants, dividerVariants, dropdownContentVariants, dropdownItemVariants, fieldsetVariants, fileInputVariants, inputVariants, kbdVariants, labelVariants, linkVariants, loaderVariants, paginationItemVariants, progressBarVariants, progressTrackVariants, provideSonnyUI, radioVariants, ratingVariants, selectTriggerVariants, skeletonVariants, sliderTrackVariants, statusVariants, switchTrackVariants, tableCellVariants, tableVariants, tabsListVariants, tabsTriggerVariants, textareaVariants, toastVariants, toggleVariants, tooltipVariants };
1699
+ export type { AlertVariant, AvatarSize, AvatarVariant, BadgeSize, BadgeVariant, ButtonGroupOrientation, ButtonSize, ButtonVariant, CardPadding, CardVariant, ChatBubbleAlign, ChatBubbleContentVariant, CheckboxSize, ComboboxOption, ComboboxSize, DataTableColumn, DataTablePaginationConfig, DividerOrientation, DividerVariant, DockPosition, DrawerSide, DropdownItemVariant, FabDirection, FabPosition, FieldsetVariant, FileInputSize, FileInputVariant, IndicatorPosition, IndicatorVariant, InputSize, InputVariant, KbdSize, LinkVariant, ListVariant, LoaderSize, LoaderVariant, NavbarVariant, PaginationSize, PaginationVariant, ProgressSize, ProgressVariant, RadialProgressSize, RadialProgressVariant, RadioSize, RatingSize, RatingVariant, SelectOption, SelectSize, SheetSide, SkeletonSize, SkeletonVariant, SliderSize, SnyDialogConfig, SnySheetConfig, SonnyConfig, SortDirection, SortState, StatDescriptionVariant, StatusSize, StatusVariant, StepStatus, StepsOrientation, StepsSize, SwitchSize, TableDensity, TableVariant, TextareaResize, TextareaSize, TextareaVariant, Theme, TimelineConnect, TimelineMiddleVariant, TimelineOrientation, ToastAction, ToastConfig, ToastData, ToastPosition, ToastVariant, ToggleSize, ToggleVariant, TooltipPosition, ValidatorHintVariant };