@konce-pt/angular 0.7.6 → 0.7.8

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.
@@ -253,6 +253,8 @@ interface KptMessages {
253
253
  dateRange: string;
254
254
  min: string;
255
255
  max: string;
256
+ /** Interpolacja: {column}. Aria-label edytowalnej komórki. */
257
+ editCell: string;
256
258
  };
257
259
  confirm: {
258
260
  header: string;
@@ -281,6 +283,11 @@ interface KptMessages {
281
283
  nextYear: string;
282
284
  prevYears: string;
283
285
  nextYears: string;
286
+ prevDecades: string;
287
+ nextDecades: string;
288
+ chooseMonth: string;
289
+ chooseYear: string;
290
+ chooseDecade: string;
284
291
  calendar: string;
285
292
  month: string;
286
293
  time: string;
@@ -586,7 +593,14 @@ declare class KptIconRegistry {
586
593
  private readonly _version;
587
594
  /** Rośnie po każdej rejestracji — pozwala `kpt-icon` reagować na późne dodanie ikon. */
588
595
  readonly version: _angular_core.Signal<number>;
589
- /** Rejestruje (lub nadpisuje) ikony: `{ nazwa: 'inner svg' }`. */
596
+ /**
597
+ * Rejestruje (lub nadpisuje) ikony: `{ nazwa: 'inner svg' }`.
598
+ *
599
+ * Treść jest sanityzowana do allowlisty geometrii SVG (`path`/`circle`/`rect`/`g`/`line`/
600
+ * `polygon`/`polyline`/`ellipse` i ich atrybutów kształtu/stylu) — mimo to `register()` wolno
601
+ * wołać wyłącznie z treścią kontrolowaną przez developera (build-time), nigdy bezpośrednio
602
+ * z danych runtime/CMS/uploadu bez własnej walidacji domenowej wyżej w stosie.
603
+ */
590
604
  register(icons: Record<string, string>): void;
591
605
  /** Zwraca wewnętrzny SVG ikony lub undefined. */
592
606
  get(name: string): string | undefined;
@@ -603,7 +617,7 @@ declare class KptIconRegistry {
603
617
  */
604
618
  declare function renderKptIconSvg(inner: string | undefined, cssClass?: string): string;
605
619
 
606
- type KptIconName = 'menu' | 'x' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'check' | 'search' | 'grip-vertical' | 'info' | 'alert-triangle' | 'circle-check' | 'circle-x' | 'calendar' | 'copy' | 'link' | 'code' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'list' | 'list-numbers' | 'clear-formatting' | 'star' | 'plus' | 'upload' | 'dots-vertical' | 'photo' | 'trash' | 'eye' | 'eye-off' | 'minus' | 'arrow-up' | 'arrow-down' | 'zoom-in' | 'info-circle' | 'phone' | 'map-pin' | 'world' | 'clock' | 'align-left' | 'align-center' | 'align-right' | 'align-justified' | 'palette' | 'highlight' | 'clipboard' | 'clipboard-text' | 'table' | 'pencil' | 'mail' | 'share' | 'external-link' | 'crosshair';
620
+ type KptIconName = 'menu' | 'x' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'check' | 'search' | 'grip-vertical' | 'info' | 'alert-triangle' | 'circle-check' | 'circle-x' | 'calendar' | 'copy' | 'link' | 'code' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'list' | 'list-numbers' | 'clear-formatting' | 'star' | 'plus' | 'upload' | 'dots-vertical' | 'photo' | 'trash' | 'eye' | 'eye-off' | 'minus' | 'arrow-up' | 'arrow-down' | 'zoom-in' | 'info-circle' | 'phone' | 'map-pin' | 'world' | 'clock' | 'align-left' | 'align-center' | 'align-right' | 'align-justified' | 'palette' | 'highlight' | 'clipboard' | 'clipboard-text' | 'table' | 'pencil' | 'mail' | 'share' | 'external-link' | 'crosshair' | 'adjustments-horizontal';
607
621
 
608
622
  /** Nazwa breakpointa z tokenów `--kpt-breakpoint-*` (mobile-first). */
609
623
  type KptBreakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
@@ -688,6 +702,11 @@ type KptAvatarShape = 'circle' | 'square';
688
702
  /**
689
703
  * Awatar — obraz, inicjały (z `name`) lub ikona.
690
704
  *
705
+ * `name` trafia do natywnego `title` (podpowiedź spod kursora — inicjały same w sobie
706
+ * nie mówią, kto to jest). Bez `src` awatar dostaje dodatkowo `role="img"` i `aria-label`,
707
+ * a same inicjały są `aria-hidden`, żeby czytnik nie przeczytał „AK" litera po literze.
708
+ * Przy `src` etykietę niesie już `alt` obrazu — nie dublujemy jej.
709
+ *
691
710
  * @example
692
711
  * <kpt-avatar src="/u/anna.jpg" />
693
712
  * <kpt-avatar name="Anna Kowalska" size="lg" />
@@ -994,10 +1013,15 @@ declare class KptSelect<T = unknown> implements FormValueControl<unknown>, KptFo
994
1013
  readonly value: _angular_core.ModelSignal<unknown>;
995
1014
  readonly touch: _angular_core.OutputEmitterRef<void>;
996
1015
  protected readonly i18n: KptI18n;
997
- protected readonly open: _angular_core.WritableSignal<boolean>;
1016
+ /**
1017
+ * Stan panelu (dwukierunkowy). Pozwala otworzyć listę z zewnątrz i — co ważniejsze — wiedzieć,
1018
+ * kiedy user skończył wybierać. `touch` się do tego nie nadaje: leci też z blur triggera.
1019
+ */
1020
+ readonly open: _angular_core.ModelSignal<boolean>;
998
1021
  protected readonly filterText: _angular_core.WritableSignal<string>;
999
1022
  protected readonly activeIndex: _angular_core.WritableSignal<number>;
1000
1023
  protected readonly positions: ConnectedPosition[];
1024
+ constructor();
1001
1025
  private readonly selectedValues;
1002
1026
  protected readonly selectedOptions: _angular_core.Signal<KptOption<T>[]>;
1003
1027
  protected readonly filteredOptions: _angular_core.Signal<KptOption<T>[]>;
@@ -1016,7 +1040,7 @@ declare class KptSelect<T = unknown> implements FormValueControl<unknown>, KptFo
1016
1040
  protected onTriggerKeydown(event: KeyboardEvent): void;
1017
1041
  protected onPanelKeydown(event: KeyboardEvent): void;
1018
1042
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSelect<any>, never>;
1019
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSelect<any>, "kpt-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
1043
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSelect<any>, "kpt-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; "open": "openChange"; }, never, never, true, never>;
1020
1044
  }
1021
1045
 
1022
1046
  interface DayCell$1 {
@@ -1027,24 +1051,33 @@ interface DayCell$1 {
1027
1051
  selected: boolean;
1028
1052
  disabled: boolean;
1029
1053
  }
1054
+ /** Komórka siatki miesięcy/lat/dekad — niesie cel nawigacji (rok + ewentualny miesiąc). */
1030
1055
  interface GridCell {
1031
1056
  label: string;
1032
- value: string;
1057
+ y: number;
1058
+ m: number;
1033
1059
  selected: boolean;
1060
+ /** Zawiera dzisiejszą datę — obrys jak „dziś" w siatce dni. */
1061
+ current: boolean;
1034
1062
  disabled: boolean;
1035
1063
  }
1036
1064
  /** Granulacja wyboru. */
1037
1065
  type KptDatepickerMode = 'date' | 'monthYear' | 'year' | 'month' | 'datetime' | 'time';
1066
+ /** Poziom panelu: dni → miesiące → lata → dekady. */
1067
+ type KptDatepickerView = 'day' | 'month' | 'year' | 'decade';
1038
1068
  /**
1039
1069
  * Wybór daty/godziny z własnym kalendarzem (CDK Overlay), Signal Forms.
1040
1070
  * Granulacja przez `selectionMode`: data, miesiąc+rok, rok, miesiąc, data+godzina, sama godzina.
1071
+ * Panel jest stosem widoków dekady → lata → miesiące → dni: klik w komórkę schodzi poziom niżej,
1072
+ * klik w tytuł wchodzi poziom wyżej. Poziom startowy ustawia `startView` (data urodzenia:
1073
+ * `startView="decade"`); domyślnie startuje na poziomie, na którym tryb zatwierdza wartość.
1041
1074
  * Godzina na tarczy zegara (dwa etapy: godziny → minuty), format 12/24h przez `hourFormat`.
1042
1075
  * Format wartości zależy od trybu: 'RRRR-MM-DD' / 'RRRR-MM' / 'RRRR' / 'MM'
1043
1076
  * / 'RRRR-MM-DDTHH:mm' (datetime) / 'HH:mm' (time). Czas przechowywany zawsze 24h.
1044
1077
  * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
1045
1078
  *
1046
1079
  * @example
1047
- * <kpt-datepicker [formField]="f.birthDate" minDate="1900-01-01" />
1080
+ * <kpt-datepicker [formField]="f.birthDate" startView="decade" minDate="1900-01-01" />
1048
1081
  * <kpt-datepicker selectionMode="datetime" [hourFormat]="12" [(value)]="meetingAt" />
1049
1082
  * <kpt-datepicker selectionMode="time" [(value)]="alarm" />
1050
1083
  */
@@ -1062,6 +1095,12 @@ declare class KptDatepicker implements FormValueControl<string> {
1062
1095
  readonly displayFormat: _angular_core.InputSignal<"pl" | "iso">;
1063
1096
  /** Granulacja wyboru. */
1064
1097
  readonly selectionMode: _angular_core.InputSignal<KptDatepickerMode>;
1098
+ /**
1099
+ * Poziom, od którego otwiera się panel. `null` = poziom zatwierdzania danego trybu
1100
+ * (dni dla 'date'). Nie schodzi poniżej tego poziomu — `startView="day"` w trybie 'year'
1101
+ * nie ma sensu i jest podnoszony do 'year'.
1102
+ */
1103
+ readonly startView: _angular_core.InputSignal<KptDatepickerView | null>;
1065
1104
  /** Prezentacja miesiąca w trybie 'month': słownie ('long') lub liczbą ('number'). */
1066
1105
  readonly monthDisplay: _angular_core.InputSignal<"number" | "long">;
1067
1106
  /** Format godziny: 24 lub 12 (z AM/PM). */
@@ -1074,25 +1113,56 @@ declare class KptDatepicker implements FormValueControl<string> {
1074
1113
  protected readonly i18n: KptI18n;
1075
1114
  protected readonly weekdays: _angular_core.Signal<string[]>;
1076
1115
  private readonly months;
1077
- protected readonly open: _angular_core.WritableSignal<boolean>;
1116
+ /**
1117
+ * Stan kalendarza (dwukierunkowy). Pozwala otworzyć go z zewnątrz i — co ważniejsze — wiedzieć,
1118
+ * kiedy user skończył wybierać. `touch` się do tego nie nadaje: leci też z blur triggera.
1119
+ */
1120
+ readonly open: _angular_core.ModelSignal<boolean>;
1078
1121
  private readonly today;
1079
1122
  private readonly view;
1123
+ /** Aktualny poziom stosu widoków panelu. */
1124
+ protected readonly panelView: _angular_core.WritableSignal<KptDatepickerView>;
1125
+ /** Poziom, na którym klik w komórkę zatwierdza wartość zamiast schodzić niżej. */
1126
+ protected readonly commitLevel: _angular_core.Signal<KptDatepickerView>;
1127
+ /** Tryb 'month' nie ma roku ani dekady — wartością jest samo 'MM'. */
1128
+ private readonly topLevel;
1129
+ private effectiveStartView;
1080
1130
  protected readonly timeStr: _angular_core.WritableSignal<string>;
1081
1131
  protected readonly dtView: _angular_core.WritableSignal<"calendar" | "clock">;
1082
1132
  private readonly pendingDate;
1133
+ /** Tarcza zamiast siatek: tryb 'time' zawsze, 'datetime' po wejściu w pasek czasu. */
1134
+ protected readonly showClock: _angular_core.Signal<boolean>;
1135
+ protected readonly hasFooter: _angular_core.Signal<boolean>;
1083
1136
  protected readonly positions: ConnectedPosition[];
1137
+ constructor();
1084
1138
  protected readonly viewYear: _angular_core.Signal<number>;
1085
- protected readonly monthLabel: _angular_core.Signal<string>;
1086
- protected readonly yearPageStart: _angular_core.Signal<number>;
1139
+ protected readonly monthName: _angular_core.Signal<string>;
1140
+ /** Początek dekady widocznej w siatce lat (1979 → 1970). */
1141
+ private readonly decadeStart;
1142
+ /** Początek strony dekad: 12 dekad, czyli 120 lat (1979 → 1920, strona 1920–2039). */
1143
+ private readonly centuryStart;
1087
1144
  protected readonly yearRangeLabel: _angular_core.Signal<string>;
1145
+ protected readonly decadeRangeLabel: _angular_core.Signal<string>;
1146
+ /** Tryb 'month' nie ma po czym nawigować — siatka miesięcy jest kompletna. */
1147
+ protected readonly hasNav: _angular_core.Signal<boolean>;
1148
+ protected readonly navPrevLabel: _angular_core.Signal<string>;
1149
+ protected readonly navNextLabel: _angular_core.Signal<string>;
1150
+ /** Strzałka wstecz gasnie, gdy cała poprzednia strona wypada przed `minDate`. */
1151
+ protected readonly canPageBack: _angular_core.Signal<boolean>;
1152
+ protected readonly canPageForward: _angular_core.Signal<boolean>;
1088
1153
  private formatTime;
1089
1154
  /** Etykieta czasu na pasku trybu datetime (uwzględnia AM/PM). */
1090
1155
  protected readonly timeBarLabel: _angular_core.Signal<string>;
1091
1156
  protected readonly display: _angular_core.Signal<string>;
1092
1157
  private readonly selectedDateIso;
1093
1158
  protected readonly weeks: _angular_core.Signal<DayCell$1[][]>;
1159
+ /** Rok/miesiąc bieżącej wartości — zaznaczenie w siatkach wyższych poziomów. */
1160
+ private readonly selectedYM;
1094
1161
  protected readonly monthCells: _angular_core.Signal<GridCell[]>;
1095
1162
  protected readonly yearCells: _angular_core.Signal<GridCell[]>;
1163
+ protected readonly decadeCells: _angular_core.Signal<GridCell[]>;
1164
+ /** Komórki bieżącego poziomu — siatka miesięcy/lat/dekad ma jeden wspólny markup. */
1165
+ protected readonly levelCells: _angular_core.Signal<GridCell[]>;
1096
1166
  private parseDate;
1097
1167
  private parseTime;
1098
1168
  private parseDateTime;
@@ -1103,19 +1173,24 @@ declare class KptDatepicker implements FormValueControl<string> {
1103
1173
  protected toggleOpen(): void;
1104
1174
  protected close(): void;
1105
1175
  protected selectDay(cell: DayCell$1): void;
1176
+ /**
1177
+ * Klik w komórkę siatki: na poziomie zatwierdzania ustawia wartość i zamyka panel,
1178
+ * wyżej — przestawia widok i schodzi poziom niżej.
1179
+ */
1106
1180
  protected selectCell(cell: GridCell): void;
1181
+ private monthValue;
1182
+ /** Klik w tytuł — wejście poziom wyżej w stosie widoków. */
1183
+ protected goTo(level: KptDatepickerView): void;
1107
1184
  protected openClock(): void;
1108
1185
  protected backToCalendar(): void;
1109
1186
  protected commit(): void;
1110
- protected prevMonth(): void;
1111
- protected nextMonth(): void;
1112
- protected prevYear(): void;
1113
- protected nextYear(): void;
1114
- protected prevYearPage(): void;
1115
- protected nextYearPage(): void;
1187
+ /** Strzałki ‹ › — krok zależny od poziomu: miesiąc, rok, dekada, strona dekad. */
1188
+ private page;
1189
+ protected pagePrev(): void;
1190
+ protected pageNext(): void;
1116
1191
  protected clear(event: Event): void;
1117
1192
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDatepicker, never>;
1118
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDatepicker, "kpt-datepicker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "monthDisplay": { "alias": "monthDisplay"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
1193
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDatepicker, "kpt-datepicker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "startView": { "alias": "startView"; "required": false; "isSignal": true; }; "monthDisplay": { "alias": "monthDisplay"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; "open": "openChange"; }, never, never, true, never>;
1119
1194
  }
1120
1195
 
1121
1196
  interface ClockMark {
@@ -1314,6 +1389,12 @@ declare class KptRichText implements FormValueControl<string> {
1314
1389
  private cellBeforeGridCol;
1315
1390
  protected canMerge(): boolean;
1316
1391
  protected canSplit(): boolean;
1392
+ /**
1393
+ * Waliduje URL z narzędzia „link" (blocklista jest obchodzalna, np. `javascript:`).
1394
+ * Brak schematu → dopisz `https://` (spójne z zachowaniem `normalizeUrl` w mapie); `#`/`/`
1395
+ * przechodzą bez zmian; schemat spoza `SAFE_URL_SCHEME` → `null` (link nie zostaje wstawiony).
1396
+ */
1397
+ private sanitizeUrl;
1317
1398
  private sanitizeHtml;
1318
1399
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRichText, never>;
1319
1400
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptRichText, "kpt-rich-text", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
@@ -1325,8 +1406,13 @@ type KptSliderValue = number | [number, number];
1325
1406
  * Suwak wartości (slider) na Signal Forms.
1326
1407
  * W trybie `range` udostępnia dwa uchwyty, a wartość jest parą `[min, max]`.
1327
1408
  *
1409
+ * Pod `[formField]` zakres bierze się ze schematu (`min(path.volume, 0)`,
1410
+ * `max(path.volume, 100)`) — `[min]`/`[max]` obok `[formField]` to błąd kompilacji.
1411
+ * Tryb `range` (wartość `[number, number]`) łączy się więc tylko z `[(value)]`.
1412
+ *
1328
1413
  * @example
1329
- * <kpt-slider [formField]="f.volume" [min]="0" [max]="100" [step]="5" showValue />
1414
+ * <kpt-slider [formField]="f.volume" [step]="5" showValue />
1415
+ * <kpt-slider [(value)]="volume" [min]="0" [max]="100" [step]="5" showValue />
1330
1416
  * <kpt-slider range [(value)]="zakres" [min]="0" [max]="100" showValue />
1331
1417
  */
1332
1418
  declare class KptSlider implements FormValueControl<KptSliderValue> {
@@ -1362,7 +1448,7 @@ declare class KptSlider implements FormValueControl<KptSliderValue> {
1362
1448
  * Ocena gwiazdkami (rating) na Signal Forms.
1363
1449
  *
1364
1450
  * @example
1365
- * <kpt-rating [formField]="f.score" [max]="5" />
1451
+ * <kpt-rating [formField]="f.score" [count]="5" />
1366
1452
  * <kpt-rating [value]="4" readonly />
1367
1453
  */
1368
1454
  declare class KptRating implements FormValueControl<number> {
@@ -1434,19 +1520,34 @@ interface DayCell {
1434
1520
  day: number;
1435
1521
  iso: string;
1436
1522
  inMonth: boolean;
1523
+ today: boolean;
1437
1524
  isStart: boolean;
1438
1525
  isEnd: boolean;
1439
1526
  inRange: boolean;
1527
+ /** Pasmo zakresu wychodzi z tej komórki w prawo / dochodzi z lewej — do zaokrągleń kapsuły. */
1528
+ rangeStart: boolean;
1529
+ rangeEnd: boolean;
1530
+ /** Pusty slot siatki: dni sąsiednich miesięcy przy wielu panelach (patrz `panels`). */
1531
+ blank: boolean;
1440
1532
  disabled: boolean;
1441
1533
  }
1534
+ /** Jeden miesiąc panelu kalendarza. */
1535
+ interface MonthPanel {
1536
+ key: string;
1537
+ label: string;
1538
+ weeks: DayCell[][];
1539
+ }
1442
1540
  /**
1443
1541
  * Wybór zakresu dat z kalendarzem (CDK Overlay), Signal Forms.
1444
1542
  * `mode`: 'date' (domyślnie), 'datetime' (data+godzina, tarcza zegara), 'time' (sama godzina).
1543
+ * `visibleMonths` pokazuje kilka miesięcy obok siebie (typowo 2) — zakres podświetla się
1544
+ * ciągłym pasmem przez wszystkie panele.
1445
1545
  * Wartość: `{ start, end }` — daty 'RRRR-MM-DD', datetime 'RRRR-MM-DDTHH:mm', godziny 'HH:mm'.
1446
1546
  * Wymaga `import '@angular/cdk/overlay-prebuilt.css';`
1447
1547
  *
1448
1548
  * @example
1449
1549
  * <kpt-date-range [formField]="f.period" />
1550
+ * <kpt-date-range [visibleMonths]="2" [(value)]="period" />
1450
1551
  * <kpt-date-range mode="datetime" [hourFormat]="12" [(value)]="span" />
1451
1552
  * <kpt-date-range mode="time" [(value)]="hours" />
1452
1553
  */
@@ -1462,6 +1563,8 @@ declare class KptDateRange implements FormValueControl<KptDateRangeValue> {
1462
1563
  readonly placeholder: _angular_core.InputSignal<string | undefined>;
1463
1564
  readonly displayFormat: _angular_core.InputSignal<"pl" | "iso">;
1464
1565
  readonly mode: _angular_core.InputSignal<KptDateRangeMode>;
1566
+ /** Liczba miesięcy obok siebie (1–3; domyślnie 1). Ignorowana w trybie 'time'. */
1567
+ readonly visibleMonths: _angular_core.InputSignalWithTransform<number, unknown>;
1465
1568
  readonly hourFormat: _angular_core.InputSignalWithTransform<number, unknown>;
1466
1569
  readonly minuteStep: _angular_core.InputSignalWithTransform<number, unknown>;
1467
1570
  protected readonly i18n: KptI18n;
@@ -1477,13 +1580,20 @@ declare class KptDateRange implements FormValueControl<KptDateRangeValue> {
1477
1580
  private readonly startDate;
1478
1581
  private readonly endDate;
1479
1582
  protected readonly positions: ConnectedPosition[];
1480
- protected readonly monthLabel: _angular_core.Signal<string>;
1583
+ protected readonly panelCount: _angular_core.Signal<number>;
1584
+ protected readonly multi: _angular_core.Signal<boolean>;
1481
1585
  private datePart;
1482
1586
  private timePart;
1483
1587
  private fmtDate;
1484
1588
  private fmtTime;
1485
1589
  protected readonly display: _angular_core.Signal<string>;
1486
- protected readonly weeks: _angular_core.Signal<DayCell[][]>;
1590
+ /**
1591
+ * Panele miesięcy. Przy kilku panelach dni sąsiednich miesięcy są wygaszane do pustych slotów:
1592
+ * inaczej ta sama data byłaby klikalna dwa razy (jako „wyszarzona" w jednym panelu i właściwa
1593
+ * w drugim) i pasmo zakresu malowałoby się w obu miejscach.
1594
+ */
1595
+ protected readonly panels: _angular_core.Signal<MonthPanel[]>;
1596
+ private buildWeeks;
1487
1597
  protected toggleOpen(): void;
1488
1598
  protected close(): void;
1489
1599
  protected selectDay(cell: DayCell): void;
@@ -1492,7 +1602,7 @@ declare class KptDateRange implements FormValueControl<KptDateRangeValue> {
1492
1602
  protected nextMonth(): void;
1493
1603
  protected clear(event: Event): void;
1494
1604
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDateRange, never>;
1495
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDateRange, "kpt-date-range", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
1605
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDateRange, "kpt-date-range", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "visibleMonths": { "alias": "visibleMonths"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
1496
1606
  }
1497
1607
 
1498
1608
  /**
@@ -1500,8 +1610,13 @@ declare class KptDateRange implements FormValueControl<KptDateRangeValue> {
1500
1610
  * `showButtons="false"` chowa strzałki — wariant do zakresów „od–do", gdzie krokowanie
1501
1611
  * nie ma sensu, a pole ma wyglądać jak zwykłe `kpt-input` obok.
1502
1612
  *
1613
+ * Pod `[formField]` granic NIE bindujemy w szablonie — `[min]`/`[max]` obok `[formField]`
1614
+ * to błąd kompilacji. Deklaruje je schemat (`min(path.qty, 0)`, `max(path.qty, 99)`),
1615
+ * a dyrektywa `FormField` sama wstrzykuje je w wejścia `min`/`max`.
1616
+ *
1503
1617
  * @example
1504
- * <kpt-input-number [formField]="f.qty" [min]="0" [max]="99" [step]="1" />
1618
+ * <kpt-input-number [formField]="f.qty" [step]="1" />
1619
+ * <kpt-input-number [(value)]="qty" [min]="0" [max]="99" suffix=" szt." />
1505
1620
  * <kpt-input-number [formField]="f.priceFrom" [showButtons]="false" suffix=" zł" />
1506
1621
  */
1507
1622
  declare class KptInputNumber implements FormValueControl<number | null> {
@@ -1666,8 +1781,12 @@ declare class KptListbox<T = unknown> implements FormValueControl<T | T[] | null
1666
1781
  /**
1667
1782
  * Pokrętło (knob) — wybór wartości po łuku, myszką lub strzałkami. Signal Forms.
1668
1783
  *
1784
+ * Pod `[formField]` zakres bierze się ze schematu (`min(path.level, 0)`,
1785
+ * `max(path.level, 100)`) — `[min]`/`[max]` obok `[formField]` to błąd kompilacji.
1786
+ *
1669
1787
  * @example
1670
- * <kpt-knob [formField]="f.level" [min]="0" [max]="100" [step]="1" />
1788
+ * <kpt-knob [formField]="f.level" [step]="1" />
1789
+ * <kpt-knob [(value)]="level" [min]="0" [max]="100" [step]="1" />
1671
1790
  */
1672
1791
  declare class KptKnob implements FormValueControl<number> {
1673
1792
  private readonly host;
@@ -2234,6 +2353,18 @@ interface KptColumnFilter {
2234
2353
  /** Krok dla `type: 'slider'` (domyślnie 1). */
2235
2354
  step?: number;
2236
2355
  }
2356
+ /** Rodzaj kontrolki edycji inline komórki. */
2357
+ type KptColumnEditType = 'text' | 'number' | 'date' | 'select' | 'multiselect';
2358
+ interface KptColumnEdit {
2359
+ type: KptColumnEditType;
2360
+ /** Opcje dla `type: 'select'` / `'multiselect'`. */
2361
+ options?: KptOption<unknown>[];
2362
+ placeholder?: string;
2363
+ /** Dla `type: 'number'`. */
2364
+ min?: number;
2365
+ max?: number;
2366
+ step?: number;
2367
+ }
2237
2368
  interface KptColumn {
2238
2369
  /** Nazwa pola w wierszu. */
2239
2370
  field: string;
@@ -2249,6 +2380,18 @@ interface KptColumn {
2249
2380
  frozen?: boolean;
2250
2381
  /** Filtr kolumny w wierszu nagłówka (input/number/select/zakres dat). */
2251
2382
  filter?: KptColumnFilter;
2383
+ /** Włącza edycję inline (klik w komórkę zamienia wartość na kontrolkę tego typu). */
2384
+ edit?: KptColumnEdit;
2385
+ }
2386
+ /** Zdarzenie po zatwierdzeniu edycji komórki. */
2387
+ interface KptCellEditEvent<T> {
2388
+ /** Wiersz sprzed zmiany. */
2389
+ row: T;
2390
+ field: string;
2391
+ /** Nowa wartość. */
2392
+ value: unknown;
2393
+ /** Wiersz po scaleniu ze zmienioną wartością — gotowe body PUT/PATCH. */
2394
+ updatedRow: T;
2252
2395
  }
2253
2396
  type SortDir = 'asc' | 'desc' | null;
2254
2397
  /** Stan przekazywany w trybie lazy przy każdej zmianie sortowania/filtra/strony. */
@@ -2312,20 +2455,38 @@ declare class KptDataTable<T = Record<string, unknown>> {
2312
2455
  readonly selection: _angular_core.ModelSignal<T[]>;
2313
2456
  /** Rozwinięte wiersze (dwukierunkowo). */
2314
2457
  readonly expandedRows: _angular_core.ModelSignal<T[]>;
2458
+ /**
2459
+ * Pola (`KptColumn.field`) aktualnie ukrytych kolumn (dwukierunkowo). Sam komponent nie
2460
+ * dostarcza UI do zarządzania tym stanem — to hak do podpięcia zewnętrznego przełącznika
2461
+ * kolumn (patrz przykład „Dostosowywanie kolumn" w playground).
2462
+ */
2463
+ readonly hiddenFields: _angular_core.ModelSignal<readonly string[]>;
2315
2464
  readonly rowClick: _angular_core.OutputEmitterRef<T>;
2316
2465
  /** Emitowane w trybie lazy przy zmianie sortowania/filtra/strony. */
2317
2466
  readonly lazyLoad: _angular_core.OutputEmitterRef<KptTableLazyState>;
2467
+ /** Emitowane po zatwierdzeniu edycji komórki (tylko gdy wartość faktycznie się zmieniła). */
2468
+ readonly cellEdit: _angular_core.OutputEmitterRef<KptCellEditEvent<T>>;
2318
2469
  protected readonly i18n: KptI18n;
2319
2470
  /** Komunikat pustej tabeli (input albo domyślny z i18n). */
2320
2471
  protected readonly emptyText: _angular_core.Signal<string>;
2321
2472
  /** Kolumny w bieżącej kolejności (po ewentualnym przestawieniu). */
2322
2473
  protected readonly orderedColumns: _angular_core.WritableSignal<readonly KptColumn[]>;
2474
+ /** Kolumny w bieżącej kolejności, bez tych ukrytych przez `hiddenFields` — do renderowania i eksportu. */
2475
+ protected readonly visibleOrderedColumns: _angular_core.Signal<KptColumn[]>;
2323
2476
  private readonly scrollEl;
2324
2477
  protected readonly scrollTop: _angular_core.WritableSignal<number>;
2325
2478
  protected readonly viewportHeight: _angular_core.WritableSignal<number>;
2326
2479
  private readonly buffer;
2327
2480
  private readonly theadEl;
2328
2481
  protected readonly theadOffset: _angular_core.WritableSignal<number>;
2482
+ protected readonly editingCell: _angular_core.WritableSignal<{
2483
+ row: T;
2484
+ field: string;
2485
+ } | null>;
2486
+ protected readonly editingValue: _angular_core.WritableSignal<unknown>;
2487
+ /** Czy panel edytora overlayowego (date/select/multiselect) jest otwarty. */
2488
+ protected readonly editorPanelOpen: _angular_core.WritableSignal<boolean>;
2489
+ private readonly editorHost;
2329
2490
  constructor();
2330
2491
  protected onScroll(event: Event): void;
2331
2492
  protected readonly virtualStart: _angular_core.Signal<number>;
@@ -2333,19 +2494,47 @@ declare class KptDataTable<T = Record<string, unknown>> {
2333
2494
  protected readonly virtualRows: _angular_core.Signal<T[]>;
2334
2495
  protected readonly topPad: _angular_core.Signal<number>;
2335
2496
  protected readonly bottomPad: _angular_core.Signal<number>;
2336
- protected readonly dragIndex: _angular_core.WritableSignal<number | null>;
2497
+ /**
2498
+ * Pole przeciąganej kolumny (nie indeks — przy ukrytych kolumnach `$index` z pętli
2499
+ * `visibleOrderedColumns()` nie odpowiada pozycji w pełnej `orderedColumns()`).
2500
+ */
2501
+ protected readonly dragField: _angular_core.WritableSignal<string | null>;
2337
2502
  /** Kolumna przeciągalna tylko gdy `reorderable` i nie jest zamrożona (frozen musi zostać wiodąca). */
2338
2503
  protected isColDraggable(col: KptColumn): boolean;
2339
- /** Liczba wiodących kolumn zamrożonych — poza nie wolno upuszczać ani ich przesuwać. */
2504
+ /** Liczba wiodących widocznych kolumn zamrożonych — poza nie wolno upuszczać ani ich przesuwać. */
2340
2505
  private frozenLeadCount;
2341
- protected onColDragStart(index: number, event: DragEvent): void;
2342
- protected onColDragOver(index: number, event: DragEvent): void;
2343
- protected onColDrop(index: number, event: DragEvent): void;
2506
+ protected onColDragStart(field: string, event: DragEvent): void;
2507
+ protected onColDragOver(field: string, event: DragEvent): void;
2508
+ protected onColDrop(field: string, event: DragEvent): void;
2344
2509
  protected onColDragEnd(): void;
2345
2510
  exportCsv(): void;
2346
2511
  private readonly cellDefs;
2347
2512
  private readonly cellMap;
2348
2513
  protected cellTemplate(field: string): TemplateRef<unknown> | null;
2514
+ private readonly cellEditDefs;
2515
+ private readonly cellEditMap;
2516
+ protected cellEditTemplate(field: string): TemplateRef<unknown> | null;
2517
+ protected isEditable(col: KptColumn): boolean;
2518
+ protected isEditingCell(row: T, field: string): boolean;
2519
+ protected startEdit(row: T, col: KptColumn, event: Event): void;
2520
+ /**
2521
+ * Panel edytora zamknięty (wybór, klik poza, Esc) → zatwierdź. Celowo NIE wieszamy tego na
2522
+ * `touch`: ten leci też z blur triggera, czyli już przy naciśnięciu myszy na opcji w panelu —
2523
+ * edytor ginąłby, zanim kliknięcie zdąży wybrać wartość.
2524
+ */
2525
+ protected onEditorPanelToggle(open: boolean): void;
2526
+ /**
2527
+ * Edytory bez overlaya (text/number, własne `kptCellEdit`) zatwierdza dopiero wyjście fokusu
2528
+ * **poza cały edytor**. Nie wystarczy `touch`/blur samej kontrolki: `kpt-input-number` ma
2529
+ * fokusowalne strzałki `+`/`-` obok pola (i dodatkowo emituje `touch` w `step_()`), więc każde
2530
+ * kliknięcie strzałki zamykałoby edycję, zanim zdąży zmienić wartość.
2531
+ */
2532
+ protected onEditorFocusOut(event: FocusEvent): void;
2533
+ /** Zatwierdza bieżącą edycję — emituje `cellEdit` tylko gdy wartość faktycznie się zmieniła. */
2534
+ protected commitEdit(): void;
2535
+ /** Dla własnych szablonów (`kptCellEdit`): ustaw wartość i od razu zatwierdź. */
2536
+ protected readonly commitEditValue: (value: unknown) => void;
2537
+ protected cancelEdit(): void;
2349
2538
  private readonly rowDetailDef;
2350
2539
  protected readonly rowDetailTpl: _angular_core.Signal<TemplateRef<any> | null>;
2351
2540
  /** Kolumna z przełącznikiem widoczna, gdy włączono `expandable` i podano szablon `kptRowDetail`. */
@@ -2405,7 +2594,7 @@ declare class KptDataTable<T = Record<string, unknown>> {
2405
2594
  protected getValue(row: T, field: string): unknown;
2406
2595
  protected trackRow: (row: T) => unknown;
2407
2596
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDataTable<any>, never>;
2408
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDataTable<any>, "kpt-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "filterRowPosition": { "alias": "filterRowPosition"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "exportable": { "alias": "exportable"; "required": false; "isSignal": true; }; "exportFilename": { "alias": "exportFilename"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "multiExpand": { "alias": "multiExpand"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "expandedRows": { "alias": "expandedRows"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "expandedRows": "expandedRowsChange"; "rowClick": "rowClick"; "lazyLoad": "lazyLoad"; }, ["cellDefs", "rowDetailDef"], never, true, never>;
2597
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDataTable<any>, "kpt-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "filterRowPosition": { "alias": "filterRowPosition"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "exportable": { "alias": "exportable"; "required": false; "isSignal": true; }; "exportFilename": { "alias": "exportFilename"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "multiExpand": { "alias": "multiExpand"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "expandedRows": { "alias": "expandedRows"; "required": false; "isSignal": true; }; "hiddenFields": { "alias": "hiddenFields"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "expandedRows": "expandedRowsChange"; "hiddenFields": "hiddenFieldsChange"; "rowClick": "rowClick"; "lazyLoad": "lazyLoad"; "cellEdit": "cellEdit"; }, ["cellDefs", "cellEditDefs", "rowDetailDef"], ["[kptPaginatorActions]"], true, never>;
2409
2598
  }
2410
2599
 
2411
2600
  /**
@@ -2427,6 +2616,26 @@ declare class KptCellDef {
2427
2616
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptCellDef, "ng-template[kptCell]", never, { "kptCell": { "alias": "kptCell"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
2428
2617
  }
2429
2618
 
2619
+ /**
2620
+ * Własny szablon edytora komórki dla kolumny `kpt-data-table` (gdy wbudowane typy
2621
+ * `KptColumnEdit.type` nie wystarczają). Kontekst: `$implicit` = bieżąca wartość edycji,
2622
+ * `row` = wiersz, `commit(value)` = zatwierdź wartość i zamknij edytor, `cancel()` = odrzuć.
2623
+ *
2624
+ * @example
2625
+ * <kpt-data-table [columns]="cols" [data]="rows">
2626
+ * <ng-template kptCellEdit="team" let-value let-commit="commit">
2627
+ * <my-custom-picker [value]="value" (valueChange)="commit($event)" />
2628
+ * </ng-template>
2629
+ * </kpt-data-table>
2630
+ */
2631
+ declare class KptCellEditDef {
2632
+ /** Nazwa pola kolumny, dla której obowiązuje szablon edytora. */
2633
+ readonly kptCellEdit: _angular_core.InputSignal<string>;
2634
+ readonly template: TemplateRef<any>;
2635
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptCellEditDef, never>;
2636
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptCellEditDef, "ng-template[kptCellEdit]", never, { "kptCellEdit": { "alias": "kptCellEdit"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
2637
+ }
2638
+
2430
2639
  /**
2431
2640
  * Szablon rozwijanego wiersza (row detail) dla `kpt-data-table`. Renderowany pod
2432
2641
  * wierszem po rozwinięciu. Kontekst: `$implicit` = wiersz. Wymaga `expandable`.
@@ -2972,6 +3181,6 @@ declare class KptSpeedDial<T = unknown> {
2972
3181
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSpeedDial<any>, "kpt-speed-dial", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
2973
3182
  }
2974
3183
 
2975
- export { KPT_BREAKPOINTS, KPT_FORM_FIELD_CONTROL, KPT_I18N_CONFIG, KPT_MESSAGES_EN, KPT_MESSAGES_PL, KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptBreakpointObserver, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCheckbox, KptChip, KptChipsInput, KptClock, KptColorPicker, KptConfirmContainer, KptConfirmService, KptContextMenu, KptDataTable, KptDataView, KptDateRange, KptDatepicker, KptDialog, KptDivider, KptDrawer, KptEmpty, KptFab, KptFieldset, KptFileUpload, KptFormField, KptGalleria, KptI18n, KptIcon, KptIconButton, KptIconRegistry, KptImage, KptInput, KptInputMask, KptInputNumber, KptInputOtp, KptKnob, KptListbox, KptMegamenu, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPickList, KptPopover, KptProgress, KptRadioGroup, KptRating, KptRichText, KptRowDetailDef, KptScrollTop, KptSelect, KptShellNavToggle, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptSwitchGroup, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree, provideKptI18n, renderKptIconSvg };
2976
- export type { DeepPartial, KptAlertVariant, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeSize, KptBadgeVariant, KptBreadcrumbItem, KptBreakpoint, KptButtonSize, KptButtonVariant, KptCardVariant, KptChipVariant, KptColumn, KptConfirmOptions, KptConfirmRequest, KptDateRangeValue, KptDividerOrientation, KptDrawerPosition, KptFormFieldControl, KptGalleriaItem, KptI18nConfig, KptIconName, KptInputType, KptLocale, KptMenuItem, KptMessages, KptMeterItem, KptOption, KptProgressVariant, KptRichTool, KptRichToolbar, KptSidenavMode, KptSkeletonVariant, KptSliderValue, KptSpeedDialDirection, KptSplitterOrientation, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };
3184
+ export { KPT_BREAKPOINTS, KPT_FORM_FIELD_CONTROL, KPT_I18N_CONFIG, KPT_MESSAGES_EN, KPT_MESSAGES_PL, KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptBreakpointObserver, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCellEditDef, KptCheckbox, KptChip, KptChipsInput, KptClock, KptColorPicker, KptConfirmContainer, KptConfirmService, KptContextMenu, KptDataTable, KptDataView, KptDateRange, KptDatepicker, KptDialog, KptDivider, KptDrawer, KptEmpty, KptFab, KptFieldset, KptFileUpload, KptFormField, KptGalleria, KptI18n, KptIcon, KptIconButton, KptIconRegistry, KptImage, KptInput, KptInputMask, KptInputNumber, KptInputOtp, KptKnob, KptListbox, KptMegamenu, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPickList, KptPopover, KptProgress, KptRadioGroup, KptRating, KptRichText, KptRowDetailDef, KptScrollTop, KptSelect, KptShellNavToggle, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptSwitchGroup, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree, provideKptI18n, renderKptIconSvg };
3185
+ export type { DeepPartial, KptAlertVariant, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeSize, KptBadgeVariant, KptBreadcrumbItem, KptBreakpoint, KptButtonSize, KptButtonVariant, KptCardVariant, KptCellEditEvent, KptChipVariant, KptColumn, KptColumnEdit, KptColumnEditType, KptConfirmOptions, KptConfirmRequest, KptDateRangeValue, KptDatepickerMode, KptDatepickerView, KptDividerOrientation, KptDrawerPosition, KptFormFieldControl, KptGalleriaItem, KptI18nConfig, KptIconName, KptInputType, KptLocale, KptMenuItem, KptMessages, KptMeterItem, KptOption, KptProgressVariant, KptRichTool, KptRichToolbar, KptSidenavMode, KptSkeletonVariant, KptSliderValue, KptSpeedDialDirection, KptSplitterOrientation, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };
2977
3186
  //# sourceMappingURL=konce-pt-angular.d.ts.map