@konce-pt/angular 0.8.3 → 0.9.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/CHANGELOG.md +533 -0
- package/chat/src/lib/llms.txt +160 -0
- package/fesm2022/konce-pt-angular-chat.mjs +1270 -0
- package/fesm2022/konce-pt-angular-chat.mjs.map +1 -0
- package/fesm2022/konce-pt-angular-roadmap.mjs +2 -2
- package/fesm2022/konce-pt-angular.mjs +2154 -600
- package/fesm2022/konce-pt-angular.mjs.map +1 -1
- package/package.json +15 -8
- package/src/lib/backdrop/llms.txt +163 -0
- package/src/lib/button/llms.txt +53 -9
- package/src/lib/button-group/llms.txt +17 -1
- package/src/lib/chip/llms.txt +8 -0
- package/src/lib/data-view/llms.txt +18 -2
- package/src/lib/dialog/llms.txt +10 -0
- package/src/lib/icon-button/llms.txt +1 -0
- package/src/lib/mention/llms.txt +60 -0
- package/src/lib/order-list/llms.txt +13 -2
- package/src/lib/peek/llms.txt +45 -0
- package/src/lib/pick-list/llms.txt +18 -2
- package/src/lib/progress/llms.txt +81 -5
- package/src/lib/rich-text/llms.txt +15 -0
- package/types/konce-pt-angular-chat.d.ts +334 -0
- package/types/konce-pt-angular-chat.d.ts.map +1 -0
- package/types/konce-pt-angular.d.ts +550 -38
- package/types/konce-pt-angular.d.ts.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { EnvironmentProviders, Signal, InjectionToken, TemplateRef, OnDestroy } from '@angular/core';
|
|
2
|
+
import { EnvironmentProviders, Signal, InjectionToken, TemplateRef, ModelSignal, WritableSignal, OnDestroy, ElementRef } from '@angular/core';
|
|
3
3
|
import * as _angular_forms_signals from '@angular/forms/signals';
|
|
4
4
|
import { FormValueControl, WithOptionalFieldTree, ValidationError, FormCheckboxControl } from '@angular/forms/signals';
|
|
5
5
|
import { ConnectedPosition } from '@angular/cdk/overlay';
|
|
@@ -9,36 +9,58 @@ import { KptIconInput, KptIconName } from '@konce-pt/icons';
|
|
|
9
9
|
export { KptIconDef, KptIconInput, KptIconName, renderKptIconSvg } from '@konce-pt/icons';
|
|
10
10
|
import { KptDateSelectionMode, KptCalendarView, KptDayCell, KptGridCell, KptClockMark, KptDateRangeValue, KptDateRangeMode, KptMonthPanel, KptRangeDayCell } from '@konce-pt/datetime';
|
|
11
11
|
export { KptDateRangeValue } from '@konce-pt/datetime';
|
|
12
|
+
import { KptMentionItem, KptMentionSegment } from '@konce-pt/mention';
|
|
13
|
+
export { KPT_MENTION_LIMIT, KptMentionItem, KptMentionQuery, KptMentionSegment, applyMention, collectMentions, filterMentions, foldMentionText, mentionQuery, mentionToken, parseMentionText } from '@konce-pt/mention';
|
|
14
|
+
import { KptBackdropEffect, KptBackdropAnchor, KptBackdropInk } from '@konce-pt/backdrop';
|
|
15
|
+
export { KPT_SIGNAL_GRID_CELL, KPT_SIGNAL_GRID_DENSITY, KPT_SIGNAL_GRID_FALLOFF, KPT_SIGNAL_GRID_GAP, KPT_WAVE_AMPLITUDE, KPT_WAVE_BAND, KPT_WAVE_RESOLUTION, KPT_WAVE_ROTATION, KptBackdropAnchor, KptBackdropEffect, KptBackdropRenderOptions, KptBackdropRenderer, KptOklab, KptRgb, KptSignalGridCell, KptSignalGridFrame, KptSignalGridOptions, KptWaveOptions, KptWaveSettings, buildSignalGrid, createBackdropRenderer, mixOklch, readCssColor, resolveWave, shiftHue, signalGridAlpha, signalGridDensity, waveIntensity, waveRamp } from '@konce-pt/backdrop';
|
|
12
16
|
import { KptColumnFilter, KptColumnSummary } from '@konce-pt/table';
|
|
13
17
|
export { KptColumnFilter, KptColumnFilterType, KptColumnSummary, KptSummaryFn } from '@konce-pt/table';
|
|
14
18
|
import * as _konce_pt_angular from '@konce-pt/angular';
|
|
15
19
|
|
|
16
|
-
type KptButtonVariant = 'filled' | 'tonal' | 'outline' | 'text' | 'danger';
|
|
17
|
-
type KptButtonSize = 'sm' | 'md' | 'lg';
|
|
20
|
+
type KptButtonVariant = 'filled' | 'elevated' | 'tonal' | 'outline' | 'text' | 'link' | 'danger' | 'success' | 'warning' | 'info';
|
|
21
|
+
type KptButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
18
22
|
/**
|
|
19
|
-
* Przycisk Koncept UI. Renderuje natywny `<button>` (
|
|
20
|
-
*
|
|
23
|
+
* Przycisk Koncept UI. Renderuje natywny `<button>` (semantyka + submit formularza)
|
|
24
|
+
* albo `<a>`, gdy podasz `href`.
|
|
25
|
+
*
|
|
26
|
+
* Ikonę można podać nazwą (`icon`/`iconEnd`) albo wstawić do slotu — oba sposoby dostają
|
|
27
|
+
* ten sam odstęp i tę samą skalę. Przy `loading` spinner zajmuje miejsce ikony wiodącej.
|
|
21
28
|
*
|
|
22
29
|
* @example
|
|
23
|
-
* <kpt-button
|
|
24
|
-
* <kpt-button
|
|
30
|
+
* <kpt-button (click)="save()">Zapisz</kpt-button>
|
|
31
|
+
* <kpt-button icon="device-floppy" (click)="save()">Zapisz</kpt-button>
|
|
32
|
+
* <kpt-button iconEnd="chevron-right" variant="outline">Dalej</kpt-button>
|
|
33
|
+
* <kpt-button variant="link" href="/docs">Dokumentacja</kpt-button>
|
|
34
|
+
* <kpt-button variant="danger" [loading]="deleting()">Usuń</kpt-button>
|
|
25
35
|
*/
|
|
26
36
|
declare class KptButton {
|
|
27
|
-
/** Wariant wizualny. */
|
|
28
37
|
readonly variant: _angular_core.InputSignal<KptButtonVariant>;
|
|
29
|
-
/** Rozmiar. */
|
|
30
38
|
readonly size: _angular_core.InputSignal<KptButtonSize>;
|
|
31
|
-
/** Typ natywnego przycisku (istotne w formularzach). */
|
|
32
39
|
readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
|
|
33
|
-
/** Wyłączony. */
|
|
34
40
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
35
|
-
/** Stan ładowania — pokazuje spinner i blokuje interakcję. */
|
|
36
41
|
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
37
|
-
/** Rozciągnięcie na całą szerokość kontenera. */
|
|
38
42
|
readonly fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
43
|
+
/** Nazwa ikony wiodącej z rejestru (`KptIconRegistry`). */
|
|
44
|
+
readonly icon: _angular_core.InputSignal<string | undefined>;
|
|
45
|
+
/** Nazwa ikony zamykającej — zwykle znacznik kierunku, nie akcja. */
|
|
46
|
+
readonly iconEnd: _angular_core.InputSignal<string | undefined>;
|
|
47
|
+
/** Klasa dokładana do ikony wiodącej; obok stałego haka `.kpt-button__icon`. */
|
|
48
|
+
readonly iconClass: _angular_core.InputSignal<string | undefined>;
|
|
49
|
+
readonly iconEndClass: _angular_core.InputSignal<string | undefined>;
|
|
50
|
+
/** Podany adres zamienia `<button>` na `<a>`. */
|
|
51
|
+
readonly href: _angular_core.InputSignal<string | undefined>;
|
|
52
|
+
readonly target: _angular_core.InputSignal<string | undefined>;
|
|
53
|
+
readonly rel: _angular_core.InputSignal<string | undefined>;
|
|
39
54
|
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
55
|
+
/** Spinner zajmuje miejsce ikony wiodącej, więc przy ładowaniu jej nie renderujemy. */
|
|
56
|
+
protected readonly showLeadingIcon: _angular_core.Signal<boolean>;
|
|
57
|
+
protected readonly leadingIconClass: _angular_core.Signal<string>;
|
|
58
|
+
protected readonly trailingIconClass: _angular_core.Signal<string>;
|
|
59
|
+
/** `target="_blank"` bez `rel` to wektor na `window.opener` — dokładamy domyślne. */
|
|
60
|
+
protected readonly effectiveRel: _angular_core.Signal<string | null>;
|
|
61
|
+
private iconClasses;
|
|
40
62
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptButton, never>;
|
|
41
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptButton, "kpt-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
63
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptButton, "kpt-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconEnd": { "alias": "iconEnd"; "required": false; "isSignal": true; }; "iconClass": { "alias": "iconClass"; "required": false; "isSignal": true; }; "iconEndClass": { "alias": "iconEndClass"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "rel": { "alias": "rel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
42
64
|
}
|
|
43
65
|
|
|
44
66
|
/**
|
|
@@ -64,9 +86,15 @@ declare class KptIconButton {
|
|
|
64
86
|
* wtedy czego ogłosić. `null` (domyślnie) nie wypisuje atrybutu w ogóle.
|
|
65
87
|
*/
|
|
66
88
|
readonly ariaPressed: _angular_core.InputSignal<boolean | null>;
|
|
89
|
+
/**
|
|
90
|
+
* Stan rozwinięcia dla przycisku otwierającego panel (wybierak, menu). Z tego samego powodu
|
|
91
|
+
* co `ariaPressed` musi zjechać na wewnętrzny `<button>` — host nie ma roli przycisku, więc
|
|
92
|
+
* atrybut postawiony na nim nie znaczy dla czytnika nic. `null` (domyślnie) go nie wypisuje.
|
|
93
|
+
*/
|
|
94
|
+
readonly ariaExpanded: _angular_core.InputSignal<boolean | null>;
|
|
67
95
|
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
68
96
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptIconButton, never>;
|
|
69
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptIconButton, "kpt-icon-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "ariaPressed": { "alias": "ariaPressed"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
97
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptIconButton, "kpt-icon-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "ariaPressed": { "alias": "ariaPressed"; "required": false; "isSignal": true; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
70
98
|
}
|
|
71
99
|
|
|
72
100
|
/** Opcja wyboru dla kontrolek typu select / radio-group. */
|
|
@@ -74,13 +102,19 @@ interface KptOption<T = unknown> {
|
|
|
74
102
|
label: string;
|
|
75
103
|
value: T;
|
|
76
104
|
disabled?: boolean;
|
|
105
|
+
/** Nazwa ikony z rejestru. Renderuje ją dziś wyłącznie `kpt-button-group`. */
|
|
106
|
+
icon?: string;
|
|
77
107
|
}
|
|
78
108
|
|
|
79
109
|
/**
|
|
80
110
|
* Segmentowana grupa przycisków (toggle) — pojedynczy wybór z opcji. Signal Forms.
|
|
81
111
|
*
|
|
112
|
+
* Pozycja może mieć ikonę (`KptOption.icon`); `iconOnly` chowa etykietę, ale zostawia ją
|
|
113
|
+
* w nazwie dostępnej, więc czytnik ekranu dalej wie, co wybiera.
|
|
114
|
+
*
|
|
82
115
|
* @example
|
|
83
116
|
* <kpt-button-group [(value)]="view" [options]="[{label:'Lista',value:'list'},{label:'Siatka',value:'grid'}]" />
|
|
117
|
+
* <kpt-button-group [(value)]="view" [options]="[{icon:'list',label:'Lista',value:'list'}]" iconOnly />
|
|
84
118
|
* <kpt-button-group [formField]="f.period" [options]="periods" />
|
|
85
119
|
*/
|
|
86
120
|
declare class KptButtonGroup<T = unknown> implements FormValueControl<T> {
|
|
@@ -90,10 +124,12 @@ declare class KptButtonGroup<T = unknown> implements FormValueControl<T> {
|
|
|
90
124
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
91
125
|
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
92
126
|
readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
127
|
+
/** Chowa etykiety — zostaje sama ikona, a `label` zasila `aria-label` i `title`. */
|
|
128
|
+
readonly iconOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
93
129
|
readonly touch: _angular_core.OutputEmitterRef<void>;
|
|
94
130
|
protected select(opt: KptOption<T>): void;
|
|
95
131
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptButtonGroup<any>, never>;
|
|
96
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptButtonGroup<any>, "kpt-button-group", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "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>;
|
|
132
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptButtonGroup<any>, "kpt-button-group", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "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; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
|
|
97
133
|
}
|
|
98
134
|
|
|
99
135
|
/**
|
|
@@ -389,21 +425,30 @@ declare const KPT_I18N_CONFIG: InjectionToken<KptI18nConfig>;
|
|
|
389
425
|
declare function provideKptI18n(config?: KptI18nConfig): EnvironmentProviders;
|
|
390
426
|
|
|
391
427
|
type KptChipVariant = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';
|
|
428
|
+
/** Wielkość liter etykiety. */
|
|
429
|
+
type KptChipTextTransform = 'none' | 'capitalize' | 'uppercase' | 'lowercase';
|
|
392
430
|
/**
|
|
393
431
|
* Chip / tag — etykieta, opcjonalnie usuwalna.
|
|
394
432
|
*
|
|
395
433
|
* @example
|
|
396
434
|
* <kpt-chip>Angular</kpt-chip>
|
|
397
435
|
* <kpt-chip variant="success" removable (removed)="onRemove()">UI</kpt-chip>
|
|
436
|
+
* <kpt-chip textTransform="capitalize">nowość · zestaw startowy</kpt-chip>
|
|
398
437
|
*/
|
|
399
438
|
declare class KptChip {
|
|
400
439
|
readonly variant: _angular_core.InputSignal<KptChipVariant>;
|
|
440
|
+
/**
|
|
441
|
+
* Wielkość liter etykiety. `capitalize` podnosi pierwszą literę każdego słowa — także po
|
|
442
|
+
* dywizie („Agent-Ready"), bo CSS nie wie, gdzie kończy się wyraz złożony; przy takich
|
|
443
|
+
* napisach pewniejszy jest zapis wprost w treści.
|
|
444
|
+
*/
|
|
445
|
+
readonly textTransform: _angular_core.InputSignal<KptChipTextTransform>;
|
|
401
446
|
readonly removable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
402
447
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
403
448
|
readonly removed: _angular_core.OutputEmitterRef<void>;
|
|
404
449
|
protected readonly i18n: KptI18n;
|
|
405
450
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptChip, never>;
|
|
406
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptChip, "kpt-chip", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
|
|
451
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptChip, "kpt-chip", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "textTransform": { "alias": "textTransform"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
|
|
407
452
|
}
|
|
408
453
|
|
|
409
454
|
type KptAvatarSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
@@ -450,24 +495,66 @@ declare class KptSpinner {
|
|
|
450
495
|
}
|
|
451
496
|
|
|
452
497
|
type KptProgressVariant = 'primary' | 'success' | 'danger' | 'warning' | 'info';
|
|
498
|
+
type KptProgressType = 'linear' | 'circular';
|
|
499
|
+
type KptProgressSize = 'sm' | 'md' | 'lg';
|
|
500
|
+
/** Postać etykiety wartości: procent, „ile z ilu" albo brak. */
|
|
501
|
+
type KptProgressValueFormat = 'percent' | 'fraction' | 'none';
|
|
502
|
+
/** Gdzie siada wiersz etykiety względem paska (tylko `type="linear"`). */
|
|
503
|
+
type KptProgressLabelPosition = 'top' | 'bottom' | 'end';
|
|
453
504
|
/**
|
|
454
|
-
* Wskaźnik postępu — liniowy lub kołowy, określony (
|
|
505
|
+
* Wskaźnik postępu — liniowy lub kołowy, określony (`min`–`max`) lub nieokreślony (`value` = null).
|
|
506
|
+
*
|
|
507
|
+
* Etykietę wartości włącza `showValue`; rzutowana treść zastępuje sformatowaną wartość,
|
|
508
|
+
* więc w środku koła można pokazać cokolwiek.
|
|
455
509
|
*
|
|
456
510
|
* @example
|
|
457
511
|
* <kpt-progress [value]="60" />
|
|
458
|
-
* <kpt-progress
|
|
512
|
+
* <kpt-progress [value]="80" label="Ładowanie…" showValue />
|
|
513
|
+
* <kpt-progress [value]="152" [max]="160" showValue valueFormat="fraction" labelPosition="bottom" />
|
|
514
|
+
* <kpt-progress [value]="38" [bufferValue]="62" />
|
|
515
|
+
* <kpt-progress type="circular" [value]="75" variant="success" showValue />
|
|
459
516
|
* <kpt-progress [value]="null" /> <!-- indeterminate -->
|
|
460
517
|
*/
|
|
461
518
|
declare class KptProgress {
|
|
462
|
-
/**
|
|
519
|
+
/** Wartość w skali `min`–`max` albo null = postęp nieokreślony. */
|
|
463
520
|
readonly value: _angular_core.InputSignal<number | null>;
|
|
521
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
522
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
464
523
|
readonly variant: _angular_core.InputSignal<KptProgressVariant>;
|
|
465
|
-
readonly type: _angular_core.InputSignal<
|
|
524
|
+
readonly type: _angular_core.InputSignal<KptProgressType>;
|
|
525
|
+
/** Grubość toru: `sm` 0.25rem, `md` 0.5rem, `lg` 0.75rem. */
|
|
526
|
+
readonly size: _angular_core.InputSignal<KptProgressSize>;
|
|
527
|
+
/** Średnica wariantu kołowego w pikselach. */
|
|
466
528
|
readonly diameter: _angular_core.InputSignal<number>;
|
|
529
|
+
/** Postęp buforowania — drugi, przygaszony pasek pod głównym (tylko liniowy). */
|
|
530
|
+
readonly bufferValue: _angular_core.InputSignal<number | null>;
|
|
531
|
+
/** Włącza obszar etykiety wartości — razem z nim renderuje się rzutowana treść. */
|
|
532
|
+
readonly showValue: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
533
|
+
readonly valueFormat: _angular_core.InputSignal<KptProgressValueFormat>;
|
|
534
|
+
/** Tekst opisowy obok paska; służy też za `aria-label`. */
|
|
535
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
536
|
+
readonly labelPosition: _angular_core.InputSignal<KptProgressLabelPosition>;
|
|
537
|
+
private readonly i18n;
|
|
467
538
|
protected readonly circumference: number;
|
|
539
|
+
protected readonly indeterminate: _angular_core.Signal<boolean>;
|
|
540
|
+
/** Ułamek 0–1. Odporny na `max` ≤ `min` i na wartości spoza zakresu. */
|
|
541
|
+
protected readonly ratio: _angular_core.Signal<number>;
|
|
542
|
+
protected readonly percent: _angular_core.Signal<number>;
|
|
543
|
+
/** Bufor nigdy nie cofa się za pasek główny — inaczej wyglądałby jak błąd renderowania. */
|
|
544
|
+
protected readonly bufferRatio: _angular_core.Signal<number>;
|
|
468
545
|
protected readonly offset: _angular_core.Signal<number>;
|
|
546
|
+
/** Tekst widoczny w etykiecie; pusty dla postępu nieokreślonego i `valueFormat="none"`. */
|
|
547
|
+
protected readonly valueText: _angular_core.Signal<string>;
|
|
548
|
+
/**
|
|
549
|
+
* Czytnik ekranu domyślnie odczytuje `aria-valuenow` jako procent, więc przy formacie „ile z ilu"
|
|
550
|
+
* podajemy mu ten sam napis, który widzi użytkownik.
|
|
551
|
+
*/
|
|
552
|
+
protected readonly ariaValueText: _angular_core.Signal<string | null>;
|
|
553
|
+
protected readonly ariaLabel: _angular_core.Signal<string>;
|
|
554
|
+
private toRatio;
|
|
555
|
+
private fractionText;
|
|
469
556
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptProgress, never>;
|
|
470
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptProgress, "kpt-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; }, {}, never,
|
|
557
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptProgress, "kpt-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "bufferValue": { "alias": "bufferValue"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
471
558
|
}
|
|
472
559
|
|
|
473
560
|
type KptSkeletonVariant = 'text' | 'circle' | 'rect';
|
|
@@ -972,11 +1059,30 @@ declare class KptRichText implements FormValueControl<string> {
|
|
|
972
1059
|
readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
973
1060
|
/** Stan nieprawidłowy pokazujemy dopiero po dotknięciu pola — jak natywne `:user-invalid`. */
|
|
974
1061
|
protected readonly showInvalid: _angular_core.Signal<boolean>;
|
|
1062
|
+
/**
|
|
1063
|
+
* Pozycje do podpowiedzi wzmianek. Pusta lista wyłącza mechanizm: `@` zostaje wtedy zwykłym
|
|
1064
|
+
* znakiem, bo nie ma czego podpowiadać.
|
|
1065
|
+
*/
|
|
1066
|
+
readonly mentions: _angular_core.InputSignal<readonly KptMentionItem<unknown>[]>;
|
|
1067
|
+
/** Ile podpowiedzi naraz. */
|
|
1068
|
+
readonly mentionLimit: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
975
1069
|
readonly touch: _angular_core.OutputEmitterRef<void>;
|
|
1070
|
+
/** Wstawiona wzmianka — moment na powiadomienie osoby albo dopięcie powiązania. */
|
|
1071
|
+
readonly mentioned: _angular_core.OutputEmitterRef<KptMentionItem<unknown>>;
|
|
976
1072
|
protected readonly i18n: KptI18n;
|
|
977
1073
|
protected readonly swatches: string[];
|
|
978
1074
|
private readonly editor;
|
|
979
1075
|
private savedRange;
|
|
1076
|
+
protected readonly mentionOpen: _angular_core.WritableSignal<boolean>;
|
|
1077
|
+
protected readonly mentionMatches: _angular_core.WritableSignal<readonly KptMentionItem<unknown>[]>;
|
|
1078
|
+
protected readonly mentionActive: _angular_core.WritableSignal<number>;
|
|
1079
|
+
/** Zaczepienie listy w miejscu kursora — punkt, nie element, bo `@` nie ma własnego elementu. */
|
|
1080
|
+
protected readonly mentionPoint: _angular_core.WritableSignal<{
|
|
1081
|
+
x: number;
|
|
1082
|
+
y: number;
|
|
1083
|
+
}>;
|
|
1084
|
+
/** Węzeł tekstowy i zakres zapytania `@…`, który podmieni wybrana pozycja. */
|
|
1085
|
+
private mentionRange;
|
|
980
1086
|
protected readonly colorOpen: _angular_core.WritableSignal<boolean>;
|
|
981
1087
|
protected readonly colorKind: _angular_core.WritableSignal<"foreColor" | "backColor" | "cellBg">;
|
|
982
1088
|
protected readonly sourceView: _angular_core.WritableSignal<boolean>;
|
|
@@ -1130,6 +1236,29 @@ declare class KptRichText implements FormValueControl<string> {
|
|
|
1130
1236
|
* Brak schematu → dopisz `https://` (spójne z zachowaniem `normalizeUrl` w mapie); `#`/`/`
|
|
1131
1237
|
* przechodzą bez zmian; schemat spoza `SAFE_URL_SCHEME` → `null` (link nie zostaje wstawiony).
|
|
1132
1238
|
*/
|
|
1239
|
+
/**
|
|
1240
|
+
* Sprawdza, czy kursor stoi w zapytaniu `@…`, i ustawia listę podpowiedzi.
|
|
1241
|
+
*
|
|
1242
|
+
* Zapytanie liczymy z **węzła tekstowego**, nie z całego HTML-a: w treści siedzą tagi, a `@`
|
|
1243
|
+
* ma widzieć tylko to, co użytkownik naprawdę napisał w tym miejscu. Rozpoznanie zostawiamy
|
|
1244
|
+
* `mentionQuery()` z `@konce-pt/mention` — te same reguły działają w obu portach i w zwykłym
|
|
1245
|
+
* polu tekstowym.
|
|
1246
|
+
*/
|
|
1247
|
+
private syncMention;
|
|
1248
|
+
/** Punkt pod kursorem — lista podpowiedzi zaczepia się o niego, bo `@` nie ma swojego elementu. */
|
|
1249
|
+
private caretPoint;
|
|
1250
|
+
/** Klawiatura listy podpowiedzi; `true` = zdarzenie obsłużone i edytor go już nie zobaczy. */
|
|
1251
|
+
private onMentionKeydown;
|
|
1252
|
+
/**
|
|
1253
|
+
* Wstawia wzmiankę w miejsce zapytania `@…`.
|
|
1254
|
+
*
|
|
1255
|
+
* Wzmianka jest elementem, nie samym tekstem: `data-mention` niesie identyfikator, który
|
|
1256
|
+
* przeżyje zmianę nazwy, a `contenteditable="false"` trzyma ją w jednym kawałku — bez tego
|
|
1257
|
+
* kursor wchodziłby w środek nazwiska i psuł zapis. Spacja po wzmiance daje gdzie postawić
|
|
1258
|
+
* kursor: bez niej nie da się wyjść poza element, który nie jest edytowalny.
|
|
1259
|
+
*/
|
|
1260
|
+
protected insertMention(item: KptMentionItem): void;
|
|
1261
|
+
protected closeMention(): void;
|
|
1133
1262
|
private sanitizeUrl;
|
|
1134
1263
|
private sanitizeHtml;
|
|
1135
1264
|
/** Tag spoza allowlisty rozwijamy do dzieci; atrybuty czyścimy po kolei. */
|
|
@@ -1138,7 +1267,7 @@ declare class KptRichText implements FormValueControl<string> {
|
|
|
1138
1267
|
/** Deklaracje `style` z allowlisty; `null`, gdy nie zostaje nic. */
|
|
1139
1268
|
private sanitizeStyleAttr;
|
|
1140
1269
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRichText, never>;
|
|
1141
|
-
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; }; "maxListLevel": { "alias": "maxListLevel"; "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>;
|
|
1270
|
+
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; }; "maxListLevel": { "alias": "maxListLevel"; "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; }; "mentions": { "alias": "mentions"; "required": false; "isSignal": true; }; "mentionLimit": { "alias": "mentionLimit"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; "mentioned": "mentioned"; }, never, never, true, never>;
|
|
1142
1271
|
}
|
|
1143
1272
|
|
|
1144
1273
|
/** Wartość suwaka: pojedyncza liczba lub para `[min, max]` w trybie `range`. */
|
|
@@ -1739,6 +1868,154 @@ declare class KptShellNavToggle {
|
|
|
1739
1868
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptShellNavToggle, "[kptShellNavToggle]", never, { "label": { "alias": "kptShellNavToggle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1740
1869
|
}
|
|
1741
1870
|
|
|
1871
|
+
/**
|
|
1872
|
+
* Dekoracyjna warstwa tła dla sekcji: komponent obejmuje treść i maluje pod nią animowany canvas.
|
|
1873
|
+
* Sięga się po niego tam, gdzie płaska powierzchnia wygląda na niedokończoną, a wideo albo duży
|
|
1874
|
+
* obraz kosztowałyby transfer i nie poszłyby za motywem.
|
|
1875
|
+
*
|
|
1876
|
+
* Komponent jest opakowaniem: canvas leży pod spodem, a treść z `ng-content` idzie warstwę wyżej
|
|
1877
|
+
* i zachowuje się zwyczajnie. Rysowanie stoi, gdy nie ma czego oglądać — sekcja poza ekranem,
|
|
1878
|
+
* karta w tle, `paused`, `speed` równe zeru albo ograniczony ruch w systemie; wtedy zostaje jedna
|
|
1879
|
+
* statyczna klatka zamiast pustki, bo efekt jest częścią kompozycji, nie ozdobą.
|
|
1880
|
+
*
|
|
1881
|
+
* Dwa efekty: `signal-grid` (drobna siatka migoczących kwadratów, gęsta przy jednej krawędzi)
|
|
1882
|
+
* i `wave` (jedna miękka wstęga światła z barwami przesuwającymi się wzdłuż niej). Każdy czyta
|
|
1883
|
+
* własny zestaw wejść — pozostałe po prostu go nie dotyczą.
|
|
1884
|
+
*
|
|
1885
|
+
* Sam komponent to cykl życia; rysowanie i cała matematyka siedzą w `@konce-pt/backdrop`,
|
|
1886
|
+
* wspólnym z portem Reacta.
|
|
1887
|
+
*
|
|
1888
|
+
* @example
|
|
1889
|
+
* <kpt-backdrop effect="wave" [rotation]="18" [colors]="['#5b8af2', '#a86df2', '#f25b9e']">
|
|
1890
|
+
* <h1>Zbuduj aplikację od pierwszego promptu</h1>
|
|
1891
|
+
* <kpt-button>Zacznij</kpt-button>
|
|
1892
|
+
* </kpt-backdrop>
|
|
1893
|
+
*/
|
|
1894
|
+
declare class KptBackdrop {
|
|
1895
|
+
/** Rysowany efekt. */
|
|
1896
|
+
readonly effect: _angular_core.InputSignal<KptBackdropEffect>;
|
|
1897
|
+
/** Tło sekcji. Puste bierze `--kpt-color-surface`. */
|
|
1898
|
+
readonly background: _angular_core.InputSignal<string>;
|
|
1899
|
+
/** Tempo; 1 to spokojne tempo obu efektów, 0 zatrzymuje obraz. */
|
|
1900
|
+
readonly speed: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1901
|
+
/** Ziarno losowania — ta sama wartość daje ten sam układ kwadratów i ten sam przebieg wstęgi. */
|
|
1902
|
+
readonly seed: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1903
|
+
/** Zatrzymuje animację, zostawiając ostatnią klatkę. */
|
|
1904
|
+
readonly paused: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1905
|
+
/**
|
|
1906
|
+
* Przenosi barwy wpisane na sztywno na powierzchnię bieżącego motywu: czerń dobrana do białego
|
|
1907
|
+
* tła staje się bielą, gdy tło jest ciemne. Rusza wyłącznie jasność — odcień i nasycenie
|
|
1908
|
+
* zostają, więc barwa marki nie zmienia się w inną barwę.
|
|
1909
|
+
*
|
|
1910
|
+
* Dotyczy `color`, `colors` i `background`, ale tylko wtedy, gdy podano je literałem. Wejście
|
|
1911
|
+
* puste bierze token, a zapis z `var()` sam po token sięga — jedno i drugie już idzie za motywem
|
|
1912
|
+
* i adaptacja odwróciłaby je drugi raz.
|
|
1913
|
+
*/
|
|
1914
|
+
readonly adaptive: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1915
|
+
/**
|
|
1916
|
+
* `signal-grid`: kolor kwadratów — dowolny zapis CSS, także sięgający po tokeny, np.
|
|
1917
|
+
* `color-mix(in oklab, #5b8af2, var(--kpt-color-surface) 30%)`. Taki zapis przelicza się przy
|
|
1918
|
+
* zmianie motywu; literał zostaje literałem. Puste bierze `--kpt-color-primary`.
|
|
1919
|
+
*/
|
|
1920
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
1921
|
+
/** `signal-grid`: przy której krawędzi siatka jest najgęstsza. */
|
|
1922
|
+
readonly anchor: _angular_core.InputSignal<KptBackdropAnchor>;
|
|
1923
|
+
/** `signal-grid`: bok kwadratu (px). */
|
|
1924
|
+
readonly cell: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1925
|
+
/** `signal-grid`: odstęp między kwadratami (px). */
|
|
1926
|
+
readonly gap: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1927
|
+
/** `signal-grid`: udział zapalonych komórek przy kotwicy, 0–1. */
|
|
1928
|
+
readonly density: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1929
|
+
/** `signal-grid`: jak szybko siatka gaśnie ku przeciwnej krawędzi. */
|
|
1930
|
+
readonly falloff: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1931
|
+
/**
|
|
1932
|
+
* `wave`: rampa barw, po której przesuwa się wstęga — każdy przystanek dowolnym zapisem CSS.
|
|
1933
|
+
* Zamknięta w pętlę, więc ostatnia barwa wraca do pierwszej. Pusta bierze `--kpt-color-primary`
|
|
1934
|
+
* i dwie barwy wyprowadzone z niego obrotem odcienia — paleta biblioteki jest neutralna, więc
|
|
1935
|
+
* domyślna wstęga jest jednobarwna i przygaszona. Po kolory sięga się tu, nie do tokenów
|
|
1936
|
+
* statusowych. Zapis może sięgać po tokeny i wtedy idzie za motywem. Przystanek, którego
|
|
1937
|
+
* przeglądarka nie uznaje za kolor, wypada z rampy; gdy wypadną wszystkie, zostaje rampa
|
|
1938
|
+
* domyślna.
|
|
1939
|
+
*/
|
|
1940
|
+
readonly colors: _angular_core.InputSignal<readonly string[]>;
|
|
1941
|
+
/** `wave`: kąt, pod jakim prąd przecina kadr (stopnie); 0 to poziomo w prawo. */
|
|
1942
|
+
readonly rotation: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1943
|
+
/** `wave`: szerokość wstęgi jako ułamek wysokości kadru. */
|
|
1944
|
+
readonly band: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1945
|
+
/** `wave`: jak mocno faluje linia środkowa. Zero zatrzymuje falowanie, nie barwy. */
|
|
1946
|
+
readonly amplitude: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1947
|
+
private readonly canvas;
|
|
1948
|
+
private readonly host;
|
|
1949
|
+
private context;
|
|
1950
|
+
private renderer;
|
|
1951
|
+
private width;
|
|
1952
|
+
private height;
|
|
1953
|
+
/**
|
|
1954
|
+
* Czas animacji w sekundach. Rośnie o krok przemnożony przez `speed`, więc ruch suwaka
|
|
1955
|
+
* prędkości przyspiesza obraz zamiast go przeskakiwać.
|
|
1956
|
+
*/
|
|
1957
|
+
private clock;
|
|
1958
|
+
private last;
|
|
1959
|
+
private raf;
|
|
1960
|
+
private onScreen;
|
|
1961
|
+
private reduced;
|
|
1962
|
+
private ready;
|
|
1963
|
+
/** Kolor wiodący, z którym zbudowany jest bieżący renderer — punkt odniesienia dla zmiany motywu. */
|
|
1964
|
+
private lead;
|
|
1965
|
+
/** Ostatnio zgłoszony zestaw odrzuconych barw — żeby nie powtarzać tego samego ostrzeżenia. */
|
|
1966
|
+
private reported;
|
|
1967
|
+
/** Tło po adaptacji. Puste znaczy „nie ma czego podmieniać" i wtedy liczy się samo `background`. */
|
|
1968
|
+
private readonly adapted;
|
|
1969
|
+
/** Tło malowane na hoście: po adaptacji, jeśli jest, inaczej to, co podano. */
|
|
1970
|
+
protected readonly surface: _angular_core.Signal<string | null>;
|
|
1971
|
+
/**
|
|
1972
|
+
* Ton i kolor treści dobrane do malowanego tła. Puste znaczy „sekcja nie ma własnego tła"
|
|
1973
|
+
* i wtedy treść zostaje przy `--kpt-color-on-surface` ze stylu.
|
|
1974
|
+
*/
|
|
1975
|
+
protected readonly ink: _angular_core.WritableSignal<KptBackdropInk>;
|
|
1976
|
+
private resize?;
|
|
1977
|
+
private intersect?;
|
|
1978
|
+
private unwatchTheme?;
|
|
1979
|
+
private motion?;
|
|
1980
|
+
constructor();
|
|
1981
|
+
/** Nowy przebieg efektu przy tym samym rozmiarze i tych samych wejściach. */
|
|
1982
|
+
reseed(): void;
|
|
1983
|
+
private readonly tick;
|
|
1984
|
+
private paint;
|
|
1985
|
+
private build;
|
|
1986
|
+
/**
|
|
1987
|
+
* Ostrzeżenie o przystankach rampy, których przeglądarka nie uznała za kolor.
|
|
1988
|
+
*
|
|
1989
|
+
* `build()` chodzi przy każdej zmianie wejść, więc ciągnięcie suwaka nad wadliwą rampą zasypałoby
|
|
1990
|
+
* konsolę tym samym zdaniem — zgłaszamy dopiero zestaw inny niż poprzednio.
|
|
1991
|
+
*/
|
|
1992
|
+
private reportInvalid;
|
|
1993
|
+
private measure;
|
|
1994
|
+
private sync;
|
|
1995
|
+
private watchSize;
|
|
1996
|
+
/** Sekcja poza ekranem i karta w tle to ten sam przypadek: nie ma czego oglądać. */
|
|
1997
|
+
private watchVisibility;
|
|
1998
|
+
private readonly onTabSwitch;
|
|
1999
|
+
private watchMotion;
|
|
2000
|
+
private readonly onMotionChange;
|
|
2001
|
+
private watchTheme;
|
|
2002
|
+
/**
|
|
2003
|
+
* Zmiana motywu przestawia tokeny, a kolory renderera są już wyliczone — trzeba je odczytać
|
|
2004
|
+
* na nowo. Nasłuch trafia też w zmiany niezwiązane z barwą (klasa nakładki na `<html>`, dowolne
|
|
2005
|
+
* nadpisanie inline u przodka), więc renderer przebudowuje się dopiero wtedy, gdy odczyt
|
|
2006
|
+
* naprawdę dał inny kolor.
|
|
2007
|
+
*/
|
|
2008
|
+
/**
|
|
2009
|
+
* Kolor wiodący liczony dokładnie tak, jak liczy go `build()` — inaczej strażnik porównywałby
|
|
2010
|
+
* wartość sprzed adaptacji z zapamiętaną po adaptacji i przebudowywałby renderer bez przerwy.
|
|
2011
|
+
*/
|
|
2012
|
+
private leadNow;
|
|
2013
|
+
private readonly refreshColors;
|
|
2014
|
+
private teardown;
|
|
2015
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptBackdrop, never>;
|
|
2016
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptBackdrop, "kpt-backdrop", never, { "effect": { "alias": "effect"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "speed": { "alias": "speed"; "required": false; "isSignal": true; }; "seed": { "alias": "seed"; "required": false; "isSignal": true; }; "paused": { "alias": "paused"; "required": false; "isSignal": true; }; "adaptive": { "alias": "adaptive"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "cell": { "alias": "cell"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "falloff": { "alias": "falloff"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "rotation": { "alias": "rotation"; "required": false; "isSignal": true; }; "band": { "alias": "band"; "required": false; "isSignal": true; }; "amplitude": { "alias": "amplitude"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2017
|
+
}
|
|
2018
|
+
|
|
1742
2019
|
/** Tryb ekranu — logowanie, rejestracja, odzyskiwanie hasła. */
|
|
1743
2020
|
type KptAuthMode = 'signIn' | 'signUp' | 'forgot';
|
|
1744
2021
|
/**
|
|
@@ -2677,63 +2954,135 @@ declare class KptCarousel<T = unknown> {
|
|
|
2677
2954
|
declare class KptDataView<T = unknown> {
|
|
2678
2955
|
readonly items: _angular_core.InputSignal<readonly T[]>;
|
|
2679
2956
|
readonly layout: _angular_core.ModelSignal<"list" | "grid">;
|
|
2680
|
-
|
|
2957
|
+
/** Rozmiar strony (dwukierunkowy — select paginatora go zmienia); 0 wyłącza stronicowanie. */
|
|
2958
|
+
readonly pageSize: _angular_core.ModelSignal<number>;
|
|
2959
|
+
/** Rozmiary do wyboru w paginatorze. Pusta lista = select z jedną, bieżącą wartością. */
|
|
2960
|
+
readonly pageSizeOptions: _angular_core.InputSignal<readonly number[]>;
|
|
2961
|
+
/**
|
|
2962
|
+
* Liczba kolumn siatki jako SUFIT, nie sztywna liczba; 0 = tyle, ile się zmieści.
|
|
2963
|
+
* Dwukierunkowa, bo pasek gęstości w toolbarze ją zmienia.
|
|
2964
|
+
*/
|
|
2965
|
+
readonly gridColumns: _angular_core.ModelSignal<number>;
|
|
2966
|
+
/** Wartości w pasku gęstości. Mniej niż dwie = paska nie ma po co pokazywać. */
|
|
2967
|
+
readonly gridColumnsOptions: _angular_core.InputSignal<readonly number[]>;
|
|
2968
|
+
/** Najwęższa sensowna karta — poniżej tego siatka zdejmuje kolumnę, zamiast ściskać. */
|
|
2969
|
+
readonly gridMinWidth: _angular_core.InputSignal<string>;
|
|
2681
2970
|
readonly paginated: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2682
2971
|
protected readonly i18n: KptI18n;
|
|
2683
2972
|
protected readonly itemTpl: _angular_core.Signal<TemplateRef<any>>;
|
|
2684
2973
|
protected readonly pageIndex: _angular_core.ModelSignal<number>;
|
|
2974
|
+
/** Pasek gęstości ma sens tylko w siatce i tylko wtedy, gdy jest w czym wybierać. */
|
|
2975
|
+
protected readonly showColumns: _angular_core.Signal<boolean>;
|
|
2976
|
+
/** Opcje selecta: własna lista albo — gdy pusta — sam bieżący rozmiar. */
|
|
2977
|
+
protected readonly pagerSizeOptions: _angular_core.Signal<readonly number[]>;
|
|
2978
|
+
/**
|
|
2979
|
+
* Pager zostaje na ekranie także wtedy, gdy wszystko mieści się na jednej stronie, o ile jest
|
|
2980
|
+
* w czym wybierać. Bez tego wybranie największego rozmiaru chowa select, którym użytkownik
|
|
2981
|
+
* właśnie się posłużył — i nie ma jak wrócić do mniejszego.
|
|
2982
|
+
*/
|
|
2685
2983
|
protected readonly showPager: _angular_core.Signal<boolean>;
|
|
2686
2984
|
protected readonly pageItems: _angular_core.Signal<readonly T[]>;
|
|
2687
2985
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDataView<any>, never>;
|
|
2688
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDataView<any>, "kpt-data-view", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; }, { "layout": "layoutChange"; "pageIndex": "pageIndexChange"; }, ["itemTpl"], never, true, never>;
|
|
2986
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDataView<any>, "kpt-data-view", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "gridColumns": { "alias": "gridColumns"; "required": false; "isSignal": true; }; "gridColumnsOptions": { "alias": "gridColumnsOptions"; "required": false; "isSignal": true; }; "gridMinWidth": { "alias": "gridMinWidth"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; }, { "layout": "layoutChange"; "pageSize": "pageSizeChange"; "gridColumns": "gridColumnsChange"; "pageIndex": "pageIndexChange"; }, ["itemTpl"], never, true, never>;
|
|
2689
2987
|
}
|
|
2690
2988
|
|
|
2989
|
+
/** Strona listy — źródłowa (lewa) albo docelowa (prawa). */
|
|
2990
|
+
type KptPickListSide = 'source' | 'target';
|
|
2691
2991
|
/**
|
|
2692
2992
|
* PickList — transfer elementów między dwiema listami (źródło ↔ cel).
|
|
2693
2993
|
* Szablon elementu przez projekcję `<ng-template let-item>`.
|
|
2994
|
+
* Dwuklik przerzuca pojedynczy element na drugą stronę; z `dragdrop` dochodzi przeciąganie
|
|
2995
|
+
* (porządkowanie wewnątrz panelu i przenoszenie na konkretną pozycję drugiego panelu).
|
|
2694
2996
|
*
|
|
2695
2997
|
* @example
|
|
2696
|
-
* <kpt-pick-list [(source)]="available" [(target)]="selected" sourceHeader="Dostępne" targetHeader="Wybrane">
|
|
2998
|
+
* <kpt-pick-list [(source)]="available" [(target)]="selected" sourceHeader="Dostępne" targetHeader="Wybrane" dragdrop>
|
|
2697
2999
|
* <ng-template let-item>{{ item.name }}</ng-template>
|
|
2698
3000
|
* </kpt-pick-list>
|
|
2699
3001
|
*/
|
|
2700
3002
|
declare class KptPickList<T = unknown> {
|
|
2701
|
-
readonly source:
|
|
2702
|
-
readonly target:
|
|
3003
|
+
readonly source: ModelSignal<T[]>;
|
|
3004
|
+
readonly target: ModelSignal<T[]>;
|
|
2703
3005
|
/** Nagłówek listy źródłowej; bez wartości używa i18n (`pickList.available`). */
|
|
2704
3006
|
readonly sourceHeader: _angular_core.InputSignal<string | undefined>;
|
|
2705
3007
|
/** Nagłówek listy docelowej; bez wartości używa i18n (`pickList.selected`). */
|
|
2706
3008
|
readonly targetHeader: _angular_core.InputSignal<string | undefined>;
|
|
3009
|
+
/** Umożliwia porządkowanie i przenoszenie elementów metodą przeciągnij-i-upuść. */
|
|
3010
|
+
readonly dragdrop: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2707
3011
|
protected readonly itemTpl: _angular_core.Signal<TemplateRef<any>>;
|
|
2708
3012
|
protected readonly i18n: KptI18n;
|
|
2709
3013
|
protected readonly effectiveSourceHeader: _angular_core.Signal<string>;
|
|
2710
3014
|
protected readonly effectiveTargetHeader: _angular_core.Signal<string>;
|
|
2711
|
-
protected readonly selSource:
|
|
2712
|
-
protected readonly selTarget:
|
|
2713
|
-
|
|
2714
|
-
protected
|
|
3015
|
+
protected readonly selSource: WritableSignal<Set<T>>;
|
|
3016
|
+
protected readonly selTarget: WritableSignal<Set<T>>;
|
|
3017
|
+
/** Przeciągany element — strona i pozycja w jej tablicy. */
|
|
3018
|
+
protected readonly drag: WritableSignal<{
|
|
3019
|
+
side: KptPickListSide;
|
|
3020
|
+
index: number;
|
|
3021
|
+
} | null>;
|
|
3022
|
+
/** Element pod kursorem — rysuje wskaźnik miejsca upuszczenia. */
|
|
3023
|
+
protected readonly over: WritableSignal<{
|
|
3024
|
+
side: KptPickListSide;
|
|
3025
|
+
index: number;
|
|
3026
|
+
} | null>;
|
|
3027
|
+
/** Panel, nad którego pustym obszarem jest kursor — upuszczenie tam dopina na koniec. */
|
|
3028
|
+
protected readonly listOver: WritableSignal<KptPickListSide | null>;
|
|
3029
|
+
protected listOf(side: KptPickListSide): T[];
|
|
3030
|
+
protected selectionOf(side: KptPickListSide): Set<T>;
|
|
3031
|
+
protected headerOf(side: KptPickListSide): string;
|
|
3032
|
+
protected isDragging(side: KptPickListSide, index: number): boolean;
|
|
3033
|
+
protected isOver(side: KptPickListSide, index: number): boolean;
|
|
3034
|
+
private modelOf;
|
|
3035
|
+
private selectionSignal;
|
|
3036
|
+
private other;
|
|
3037
|
+
protected toggle(side: KptPickListSide, item: T): void;
|
|
3038
|
+
protected move(from: KptPickListSide, all: boolean): void;
|
|
3039
|
+
/** Dwuklik: przenosi wyłącznie klikniętą pozycję, niezależnie od zaznaczenia. */
|
|
3040
|
+
protected moveOne(from: KptPickListSide, item: T): void;
|
|
3041
|
+
protected onDragStart(side: KptPickListSide, index: number, event: DragEvent): void;
|
|
3042
|
+
protected onDragOver(side: KptPickListSide, index: number, event: DragEvent): void;
|
|
3043
|
+
protected onDrop(side: KptPickListSide, index: number, event: DragEvent): void;
|
|
3044
|
+
protected onListDragOver(side: KptPickListSide, event: DragEvent): void;
|
|
3045
|
+
protected onListDrop(side: KptPickListSide, event: DragEvent): void;
|
|
3046
|
+
protected clearDrag(): void;
|
|
3047
|
+
/** Przenosi jeden element między panelami, wstawiając go pod wskazanym indeksem. */
|
|
3048
|
+
private transfer;
|
|
2715
3049
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPickList<any>, never>;
|
|
2716
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPickList<any>, "kpt-pick-list", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "sourceHeader": { "alias": "sourceHeader"; "required": false; "isSignal": true; }; "targetHeader": { "alias": "targetHeader"; "required": false; "isSignal": true; }; }, { "source": "sourceChange"; "target": "targetChange"; }, ["itemTpl"], never, true, never>;
|
|
3050
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPickList<any>, "kpt-pick-list", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "sourceHeader": { "alias": "sourceHeader"; "required": false; "isSignal": true; }; "targetHeader": { "alias": "targetHeader"; "required": false; "isSignal": true; }; "dragdrop": { "alias": "dragdrop"; "required": false; "isSignal": true; }; }, { "source": "sourceChange"; "target": "targetChange"; }, ["itemTpl"], never, true, never>;
|
|
2717
3051
|
}
|
|
2718
3052
|
|
|
2719
3053
|
/**
|
|
2720
3054
|
* OrderList — lista z ręcznym porządkowaniem elementów (w górę/dół).
|
|
2721
3055
|
* Szablon elementu przez projekcję `<ng-template let-item>`.
|
|
3056
|
+
* Z `dragdrop` pozycje przestawia się także przeciąganiem.
|
|
2722
3057
|
*
|
|
2723
3058
|
* @example
|
|
2724
|
-
* <kpt-order-list [(items)]="tasks" header="Kolejność">
|
|
3059
|
+
* <kpt-order-list [(items)]="tasks" header="Kolejność" dragdrop>
|
|
2725
3060
|
* <ng-template let-item>{{ item.name }}</ng-template>
|
|
2726
3061
|
* </kpt-order-list>
|
|
2727
3062
|
*/
|
|
2728
3063
|
declare class KptOrderList<T = unknown> {
|
|
2729
3064
|
readonly items: _angular_core.ModelSignal<T[]>;
|
|
2730
3065
|
readonly header: _angular_core.InputSignal<string>;
|
|
3066
|
+
/** Umożliwia przestawianie pozycji metodą przeciągnij-i-upuść. */
|
|
3067
|
+
readonly dragdrop: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2731
3068
|
protected readonly i18n: KptI18n;
|
|
2732
3069
|
protected readonly itemTpl: _angular_core.Signal<TemplateRef<any>>;
|
|
2733
3070
|
protected readonly selected: _angular_core.WritableSignal<number | null>;
|
|
3071
|
+
/** Indeks przeciąganej pozycji; `null` gdy nic nie jest przeciągane. */
|
|
3072
|
+
protected readonly dragIndex: _angular_core.WritableSignal<number | null>;
|
|
3073
|
+
/** Indeks pozycji pod kursorem — rysuje wskaźnik miejsca upuszczenia. */
|
|
3074
|
+
protected readonly overIndex: _angular_core.WritableSignal<number | null>;
|
|
3075
|
+
/** Kursor nad pustym obszarem listy — upuszczenie tam dopina na koniec. */
|
|
3076
|
+
protected readonly listOver: _angular_core.WritableSignal<boolean>;
|
|
2734
3077
|
protected moveSelected(dir: -1 | 1): void;
|
|
3078
|
+
protected onDragStart(index: number, event: DragEvent): void;
|
|
3079
|
+
protected onDragOver(index: number, event: DragEvent): void;
|
|
3080
|
+
protected onDrop(index: number, event: DragEvent): void;
|
|
3081
|
+
protected onListDragOver(event: DragEvent): void;
|
|
3082
|
+
protected onListDrop(event: DragEvent): void;
|
|
3083
|
+
protected clearDrag(): void;
|
|
2735
3084
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptOrderList<any>, never>;
|
|
2736
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptOrderList<any>, "kpt-order-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; }, ["itemTpl"], never, true, never>;
|
|
3085
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptOrderList<any>, "kpt-order-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "dragdrop": { "alias": "dragdrop"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; }, ["itemTpl"], never, true, never>;
|
|
2737
3086
|
}
|
|
2738
3087
|
|
|
2739
3088
|
interface KptGalleriaItem {
|
|
@@ -2779,6 +3128,8 @@ declare class KptAlert {
|
|
|
2779
3128
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAlert, "kpt-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
|
|
2780
3129
|
}
|
|
2781
3130
|
|
|
3131
|
+
/** Szerokość okna. `md` to wartość domyślna i zarazem jedyna, jaką okno miało wcześniej. */
|
|
3132
|
+
type KptDialogSize = 'sm' | 'md' | 'lg';
|
|
2782
3133
|
/**
|
|
2783
3134
|
* Okno modalne na natywnym `<dialog>` (focus trap, ESC, backdrop w standardzie).
|
|
2784
3135
|
* Sterowane sygnałem `open` (dwukierunkowe). Stopkę wstaw z atrybutem `kptDialogFooter`.
|
|
@@ -2796,6 +3147,12 @@ declare class KptDialog {
|
|
|
2796
3147
|
/** Otwarcie okna (dwukierunkowe). */
|
|
2797
3148
|
readonly open: _angular_core.ModelSignal<boolean>;
|
|
2798
3149
|
readonly header: _angular_core.InputSignal<string>;
|
|
3150
|
+
/**
|
|
3151
|
+
* Szerokość okna: `sm` 24rem, `md` 32rem (domyślna), `lg` 48rem — zawsze przycięta do szerokości
|
|
3152
|
+
* okna przeglądarki. `lg` jest dla treści, której nie da się sensownie zwęzić: kodu, tabeli,
|
|
3153
|
+
* porównania dwóch kolumn.
|
|
3154
|
+
*/
|
|
3155
|
+
readonly size: _angular_core.InputSignal<KptDialogSize>;
|
|
2799
3156
|
/** Pozwala zamknąć klawiszem Esc / przyciskiem ×. */
|
|
2800
3157
|
readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2801
3158
|
protected readonly i18n: KptI18n;
|
|
@@ -2816,7 +3173,7 @@ declare class KptDialog {
|
|
|
2816
3173
|
private releaseOverlayContainer;
|
|
2817
3174
|
protected onCancel(event: Event): void;
|
|
2818
3175
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDialog, never>;
|
|
2819
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDialog, "kpt-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*", "[kptDialogFooter]"], true, never>;
|
|
3176
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDialog, "kpt-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*", "[kptDialogFooter]"], true, never>;
|
|
2820
3177
|
}
|
|
2821
3178
|
|
|
2822
3179
|
interface KptToast {
|
|
@@ -2920,6 +3277,161 @@ declare class KptPopover {
|
|
|
2920
3277
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPopover, "kpt-popover", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, {}, never, ["[kptPopoverTrigger]", "*"], true, never>;
|
|
2921
3278
|
}
|
|
2922
3279
|
|
|
3280
|
+
/** Z której strony triggera wychodzi karta. */
|
|
3281
|
+
type KptPeekPlacement = 'top' | 'bottom';
|
|
3282
|
+
/**
|
|
3283
|
+
* Trigger karty podglądu. Kładzie się na tym, co ma być zaczepieniem — najczęściej na wzmiance
|
|
3284
|
+
* w tekście, ale równie dobrze na awatarze, chipie czy zwykłym linku.
|
|
3285
|
+
*
|
|
3286
|
+
* Nasłuch siedzi tutaj, a nie na hoście `kpt-peek`: host obejmuje po otwarciu także panel,
|
|
3287
|
+
* więc opóźnienia liczyłyby się od złego elementu.
|
|
3288
|
+
*/
|
|
3289
|
+
declare class KptPeekTrigger {
|
|
3290
|
+
readonly element: ElementRef<HTMLElement>;
|
|
3291
|
+
protected readonly peek: KptPeek;
|
|
3292
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPeekTrigger, never>;
|
|
3293
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptPeekTrigger, "[kptPeekTrigger]", never, {}, {}, never, never, true, never>;
|
|
3294
|
+
}
|
|
3295
|
+
/**
|
|
3296
|
+
* Karta podglądu pod kursorem — treść powiązana z tym, na co się patrzy, bez opuszczania tekstu.
|
|
3297
|
+
* Tym różni się od sąsiadów: `kptTooltip` niesie sam tekst i nie da się w nim kliknąć,
|
|
3298
|
+
* a `kpt-popover` otwiera dopiero klik i zasłania stronę backdropem.
|
|
3299
|
+
*
|
|
3300
|
+
* Hover pokazuje kartę po `openDelay`, zjazd kursora chowa ją po `closeDelay` — kursor musi mieć
|
|
3301
|
+
* czas przejechać z triggera na kartę, więc najazd na kartę anuluje zamknięcie. Fokus otwiera
|
|
3302
|
+
* kartę od razu (klawiatura nie przejeżdża po elementach przypadkiem), a klik, Enter albo dotyk
|
|
3303
|
+
* **przypina** ją: karta zostaje mimo zjazdu kursora, a fokus wchodzi do środka. To jedyna droga
|
|
3304
|
+
* do treści karty tam, gdzie hovera nie ma w ogóle.
|
|
3305
|
+
*
|
|
3306
|
+
* Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
|
|
3307
|
+
*
|
|
3308
|
+
* @example
|
|
3309
|
+
* <kpt-peek>
|
|
3310
|
+
* <a kptPeekTrigger href="/ludzie/anna">@Anna Kowalska</a>
|
|
3311
|
+
* <kpt-card>Profil, projekty, kontakt…</kpt-card>
|
|
3312
|
+
* </kpt-peek>
|
|
3313
|
+
*/
|
|
3314
|
+
declare class KptPeek {
|
|
3315
|
+
/** Z której strony wychodzi karta; przy braku miejsca CDK i tak ją odwróci. */
|
|
3316
|
+
readonly placement: _angular_core.InputSignal<KptPeekPlacement>;
|
|
3317
|
+
/** Zwłoka otwarcia po najechaniu (ms) — bez niej karty mrugają przy przejeżdżaniu przez tekst. */
|
|
3318
|
+
readonly openDelay: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
3319
|
+
/** Zwłoka zamknięcia po zjeździe kursora (ms) — tyle jest na przejazd z triggera na kartę. */
|
|
3320
|
+
readonly closeDelay: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
3321
|
+
/** Wyłączona karta nie otwiera się wcale; trigger zostaje zwykłym linkiem czy przyciskiem. */
|
|
3322
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3323
|
+
/** Nazwa karty dla czytnika ekranu; bez niej bierze się tekst triggera. */
|
|
3324
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
3325
|
+
/** Otwarcie i zamknięcie karty — na `opened` aplikacja może dociągnąć dane. */
|
|
3326
|
+
readonly opened: _angular_core.OutputEmitterRef<void>;
|
|
3327
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
3328
|
+
readonly panelId: string;
|
|
3329
|
+
private readonly panel;
|
|
3330
|
+
private readonly host;
|
|
3331
|
+
private readonly open;
|
|
3332
|
+
/** Przypięta karta zostaje po zjeździe kursora — przypina ją klik, Enter albo dotyk. */
|
|
3333
|
+
private readonly pinnedState;
|
|
3334
|
+
private timer?;
|
|
3335
|
+
readonly isOpen: _angular_core.Signal<boolean>;
|
|
3336
|
+
readonly pinned: _angular_core.Signal<boolean>;
|
|
3337
|
+
protected readonly positions: _angular_core.Signal<ConnectedPosition[]>;
|
|
3338
|
+
constructor();
|
|
3339
|
+
/** Najazd kursora — na trigger albo na samą kartę. */
|
|
3340
|
+
hoverIn(): void;
|
|
3341
|
+
/** Zjazd kursora; przypiętej karty nie rusza, bo tę zamyka dopiero Escape albo klik obok. */
|
|
3342
|
+
hoverOut(): void;
|
|
3343
|
+
/** Fokus otwiera bez zwłoki — klawiatura nie przejeżdża po elementach przypadkiem. */
|
|
3344
|
+
focusIn(): void;
|
|
3345
|
+
/** Wyjście fokusu poza kartę i trigger zamyka ją także wtedy, gdy była przypięta. */
|
|
3346
|
+
focusOut(): void;
|
|
3347
|
+
/** Klik, Enter albo dotyk: karta zostaje i przyjmuje fokus. */
|
|
3348
|
+
pin(): void;
|
|
3349
|
+
/** Escape: zamyka i oddaje fokus tam, skąd karta wyszła. */
|
|
3350
|
+
dismiss(): void;
|
|
3351
|
+
close(): void;
|
|
3352
|
+
/** Tekst triggera jako nazwa karty — `role="dialog"` bez nazwy nic czytnikowi nie mówi. */
|
|
3353
|
+
protected triggerText(): string;
|
|
3354
|
+
private show;
|
|
3355
|
+
private schedule;
|
|
3356
|
+
private stopTimer;
|
|
3357
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPeek, never>;
|
|
3358
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPeek, "kpt-peek", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "openDelay": { "alias": "openDelay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; }, never, ["[kptPeekTrigger]", "*"], true, never>;
|
|
3359
|
+
}
|
|
3360
|
+
|
|
3361
|
+
/**
|
|
3362
|
+
* Wzmianka w tekście — `@ktoś` albo `@coś` jako element, na który da się najechać i zobaczyć
|
|
3363
|
+
* kartę podglądu z resztą powiązań. Treść karty daje aplikacja przez projekcję: biblioteka
|
|
3364
|
+
* nie wie, czym jest wzmiankowana rzecz, a osoba, zadanie i dokument wyglądają inaczej.
|
|
3365
|
+
*
|
|
3366
|
+
* Bez rzutowanej treści wzmianka zostaje samym napisem z podkreśleniem: nie ma czego pokazać,
|
|
3367
|
+
* więc trigger nie udaje, że coś się pod nim kryje.
|
|
3368
|
+
*
|
|
3369
|
+
* Trigger jest `<button>`, a nie `<span>`: karta otwiera się też z klawiatury i dotyku
|
|
3370
|
+
* (przypięcie), a to wymaga elementu, na który da się wejść Tabem. Z `href` staje się linkiem,
|
|
3371
|
+
* bo wtedy klik prowadzi gdzieś naprawdę.
|
|
3372
|
+
*
|
|
3373
|
+
* @example
|
|
3374
|
+
* <kpt-mention id="anna.k" label="Anna Kowalska">
|
|
3375
|
+
* <kpt-card>Profil, projekty, kontakt…</kpt-card>
|
|
3376
|
+
* </kpt-mention>
|
|
3377
|
+
*/
|
|
3378
|
+
declare class KptMention {
|
|
3379
|
+
/** Cała pozycja naraz. Pojedyncze inputy poniżej mają nad nią priorytet. */
|
|
3380
|
+
readonly item: _angular_core.InputSignal<KptMentionItem<unknown> | null>;
|
|
3381
|
+
/** Identyfikator zapisany w treści — nie zmienia się przy zmianie nazwy. */
|
|
3382
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
3383
|
+
/** Nazwa do pokazania; bez niej bierze się ją z `item`, a w ostateczności z `id`. */
|
|
3384
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
3385
|
+
/** Rodzaj (osoba, zadanie, dokument) — ląduje w `data-kind`, więc da się go ostylować. */
|
|
3386
|
+
readonly kind: _angular_core.InputSignal<string>;
|
|
3387
|
+
/** Znak przed nazwą. Pusty łańcuch zostawia samą nazwę. */
|
|
3388
|
+
readonly prefix: _angular_core.InputSignal<string>;
|
|
3389
|
+
/** Adres, pod który prowadzi klik. Bez niego wzmianka jest przyciskiem otwierającym kartę. */
|
|
3390
|
+
readonly href: _angular_core.InputSignal<string | null>;
|
|
3391
|
+
readonly placement: _angular_core.InputSignal<KptPeekPlacement>;
|
|
3392
|
+
readonly openDelay: _angular_core.InputSignal<number>;
|
|
3393
|
+
/** Wyłączona wzmianka nie otwiera karty — zostaje samym napisem. */
|
|
3394
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3395
|
+
protected readonly resolvedKind: _angular_core.Signal<string>;
|
|
3396
|
+
protected readonly display: _angular_core.Signal<string>;
|
|
3397
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptMention, never>;
|
|
3398
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMention, "kpt-mention", never, { "item": { "alias": "item"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "kind": { "alias": "kind"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "openDelay": { "alias": "openDelay"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
3399
|
+
}
|
|
3400
|
+
|
|
3401
|
+
/**
|
|
3402
|
+
* Akapit ze wzmiankami — tekst wchodzi jako zwykły napis, a `@wzmianki` wychodzą z niego jako
|
|
3403
|
+
* elementy z kartą podglądu. Rozbiciem zajmuje się `parseMentionText()` z `@konce-pt/mention`
|
|
3404
|
+
* (czysty TS z testami), więc oba porty czytają tę samą treść tak samo.
|
|
3405
|
+
*
|
|
3406
|
+
* Wzmianek nie renderujemy z HTML-a: treść zostaje tekstem, a wzmianka jest elementem, który
|
|
3407
|
+
* biblioteka sama zbudowała. Aplikacja nie musi więc przepuszczać przez sanitizer czegoś,
|
|
3408
|
+
* co i tak pochodzi od jej użytkowników.
|
|
3409
|
+
*
|
|
3410
|
+
* Kartę daje szablon w środku — kontekst dostaje pozycję jako `$implicit` oraz `id` i `label`,
|
|
3411
|
+
* bo wzmianka do czegoś, czego nie ma już na liście, też musi się wyrenderować.
|
|
3412
|
+
*
|
|
3413
|
+
* @example
|
|
3414
|
+
* <kpt-mentions [text]="note" [items]="people">
|
|
3415
|
+
* <ng-template let-item let-label="label">
|
|
3416
|
+
* <kpt-card>{{ item?.data?.role ?? label }}</kpt-card>
|
|
3417
|
+
* </ng-template>
|
|
3418
|
+
* </kpt-mentions>
|
|
3419
|
+
*/
|
|
3420
|
+
declare class KptMentions<T = unknown> {
|
|
3421
|
+
/** Treść z wzmiankami: `@id` albo `@[Nazwa ze spacją](id)`. */
|
|
3422
|
+
readonly text: _angular_core.InputSignal<string>;
|
|
3423
|
+
/** Pozycje, po których rozwiązują się identyfikatory. Nieznane `id` zostaje etykietą. */
|
|
3424
|
+
readonly items: _angular_core.InputSignal<readonly KptMentionItem<T>[]>;
|
|
3425
|
+
/** Znak przed nazwą we wzmiance. */
|
|
3426
|
+
readonly prefix: _angular_core.InputSignal<string>;
|
|
3427
|
+
readonly placement: _angular_core.InputSignal<KptPeekPlacement>;
|
|
3428
|
+
/** Szablon karty; bez niego wzmianki są samym napisem, bo nie ma czego pokazać. */
|
|
3429
|
+
protected readonly cardTpl: _angular_core.Signal<TemplateRef<any> | undefined>;
|
|
3430
|
+
protected readonly segments: _angular_core.Signal<KptMentionSegment<T>[]>;
|
|
3431
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptMentions<any>, never>;
|
|
3432
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMentions<any>, "kpt-mentions", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, {}, ["cardTpl"], never, true, never>;
|
|
3433
|
+
}
|
|
3434
|
+
|
|
2923
3435
|
/**
|
|
2924
3436
|
* Pole z podpowiedziami (autocomplete) na CDK Overlay, Signal Forms. Wartość = wpisany tekst.
|
|
2925
3437
|
* Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
|
|
@@ -3125,6 +3637,6 @@ declare class KptSpeedDial<T = unknown> {
|
|
|
3125
3637
|
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; }; }, { "selected": "selected"; }, never, never, true, never>;
|
|
3126
3638
|
}
|
|
3127
3639
|
|
|
3128
|
-
export { KPT_BREAKPOINTS, KPT_FORM_FIELD_CONTROL, KPT_I18N_CONFIG, KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAuth, KptAuthProviderDef, 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, provideKptIcons };
|
|
3129
|
-
export type { KptAlertVariant, KptAuthLayout, KptAuthMode, KptAuthProvider, KptAuthProviderLayout, KptAuthResetValue, KptAuthSignInValue, KptAuthSignUpValue, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeSize, KptBadgeVariant, KptBreadcrumbItem, KptBreakpoint, KptButtonSize, KptButtonVariant, KptCardVariant, KptCellEditEvent, KptChipVariant, KptColumn, KptColumnEdit, KptColumnEditType, KptConfirmOptions, KptConfirmRequest, KptDatepickerMode, KptDatepickerView, KptDividerOrientation, KptDrawerPosition, KptFormFieldControl, KptGalleriaItem, KptInputType, KptMenuItem, KptMeterItem, KptOption, KptProgressVariant, KptRichTool, KptRichToolbar, KptSidenavMode, KptSkeletonVariant, KptSliderValue, KptSpeedDialDirection, KptSplitterOrientation, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };
|
|
3640
|
+
export { KPT_BREAKPOINTS, KPT_FORM_FIELD_CONTROL, KPT_I18N_CONFIG, KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAuth, KptAuthProviderDef, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBackdrop, 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, KptMention, KptMentions, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPeek, KptPeekTrigger, 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, provideKptIcons };
|
|
3641
|
+
export type { KptAlertVariant, KptAuthLayout, KptAuthMode, KptAuthProvider, KptAuthProviderLayout, KptAuthResetValue, KptAuthSignInValue, KptAuthSignUpValue, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeSize, KptBadgeVariant, KptBreadcrumbItem, KptBreakpoint, KptButtonSize, KptButtonVariant, KptCardVariant, KptCellEditEvent, KptChipTextTransform, KptChipVariant, KptColumn, KptColumnEdit, KptColumnEditType, KptConfirmOptions, KptConfirmRequest, KptDatepickerMode, KptDatepickerView, KptDialogSize, KptDividerOrientation, KptDrawerPosition, KptFormFieldControl, KptGalleriaItem, KptInputType, KptMenuItem, KptMeterItem, KptOption, KptPeekPlacement, KptProgressLabelPosition, KptProgressSize, KptProgressType, KptProgressValueFormat, KptProgressVariant, KptRichTool, KptRichToolbar, KptSidenavMode, KptSkeletonVariant, KptSliderValue, KptSpeedDialDirection, KptSplitterOrientation, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };
|
|
3130
3642
|
//# sourceMappingURL=konce-pt-angular.d.ts.map
|