@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.
- package/CHANGELOG.md +120 -0
- package/fesm2022/konce-pt-angular-charts.mjs +2 -2
- package/fesm2022/konce-pt-angular-charts.mjs.map +1 -1
- package/fesm2022/konce-pt-angular-map.mjs +51 -20
- package/fesm2022/konce-pt-angular-map.mjs.map +1 -1
- package/fesm2022/konce-pt-angular-roadmap.mjs +5 -5
- package/fesm2022/konce-pt-angular-roadmap.mjs.map +1 -1
- package/fesm2022/konce-pt-angular.mjs +1242 -605
- package/fesm2022/konce-pt-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/avatar/llms.txt +5 -0
- package/src/lib/avatar-group/llms.txt +3 -0
- package/src/lib/data-table/llms.txt +84 -4
- package/src/lib/date-range/llms.txt +8 -1
- package/src/lib/datepicker/llms.txt +32 -3
- package/src/lib/icon/llms.txt +4 -1
- package/src/lib/input-number/llms.txt +11 -6
- package/src/lib/knob/llms.txt +5 -2
- package/src/lib/rich-text/llms.txt +3 -0
- package/src/lib/select/llms.txt +5 -0
- package/src/lib/slider/llms.txt +6 -1
- package/types/konce-pt-angular-map.d.ts +2 -1
- package/types/konce-pt-angular-map.d.ts.map +1 -1
- package/types/konce-pt-angular.d.ts +240 -31
- package/types/konce-pt-angular.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,125 @@
|
|
|
1
1
|
# @konce-pt/angular
|
|
2
2
|
|
|
3
|
+
## 0.7.8
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 40a5d04: kpt-date-range: kilka miesięcy obok siebie (`visibleMonths`) i ciągłe pasmo zakresu
|
|
8
|
+
|
|
9
|
+
Nowy input `visibleMonths` (domyślnie 1, przycinany do 1–3) pokazuje sąsiednie miesiące obok
|
|
10
|
+
siebie. Strzałki ‹ › stoją na skrajnych panelach i przesuwają całość o jeden miesiąc. Przy więcej
|
|
11
|
+
niż jednym panelu dni sąsiednich miesięcy są ukrywane do pustych slotów — inaczej ta sama data
|
|
12
|
+
byłaby klikalna w dwóch panelach naraz, a pasmo zakresu malowałoby się w obu miejscach.
|
|
13
|
+
|
|
14
|
+
Zakres podświetla teraz ciągłe pasmo biegnące przez wszystkie panele: dni skrajne mają plamę
|
|
15
|
+
zaznaczenia, a pasmo wychodzi z ich środka i zaokrągla się na krańcach wiersza siatki. Wcześniej
|
|
16
|
+
pasmo urywało się na dniach skrajnych, bo zasłaniało je pełne tło komórki.
|
|
17
|
+
|
|
18
|
+
- a843fd6: kpt-datepicker: nawigacja drill-down po panelu — dekady → lata → miesiące → dni
|
|
19
|
+
|
|
20
|
+
Panel kalendarza jest teraz stosem widoków: klik w komórkę schodzi poziom niżej, klik w tytuł
|
|
21
|
+
nagłówka wchodzi poziom wyżej. Nowy input `startView` ('day' | 'month' | 'year' | 'decade' | null)
|
|
22
|
+
ustawia poziom startowy — `startView="decade"` daje wybór daty urodzenia w czterech kliknięciach.
|
|
23
|
+
Domyślne `null` zachowuje dotychczasowe zachowanie każdego `selectionMode`.
|
|
24
|
+
|
|
25
|
+
Zmiana zachowania: strona siatki lat to pełna dekada (10 lat, „1970 – 1979”) zamiast dotychczasowego
|
|
26
|
+
bloku 12-letniego — dotyczy też istniejącego `selectionMode="year"`. Strona dekad obejmuje 12 dekad
|
|
27
|
+
(„1920 – 2039”). Strzałki ‹ › są wyłączane, gdy cała sąsiednia strona wypada poza `minDate`/`maxDate`.
|
|
28
|
+
|
|
29
|
+
Typy `KptDatepickerMode` i `KptDatepickerView` są eksportowane z `@konce-pt/angular`.
|
|
30
|
+
|
|
31
|
+
## 0.7.7
|
|
32
|
+
|
|
33
|
+
### Minor Changes
|
|
34
|
+
|
|
35
|
+
- 47ada55: `kpt-data-table` — edycja inline komórek, a przy okazji publiczny stan panelu w `kpt-select`
|
|
36
|
+
i `kpt-datepicker`.
|
|
37
|
+
|
|
38
|
+
- `KptColumn.edit` (`{ type, options?, placeholder?, min?, max?, step? }`) włącza edycję kolumny.
|
|
39
|
+
Klik w komórkę (albo Enter — komórka edytowalna ma `tabindex="0"`) zamienia wartość na kontrolkę:
|
|
40
|
+
`text` → `kpt-input`, `number` → `kpt-input-number`, `date` → `kpt-datepicker`, `select`
|
|
41
|
+
i `multiselect` → `kpt-select` (drugi z `multiple filter`). Dla edytorów na overlayu panel otwiera
|
|
42
|
+
się od razu, więc wybór to jedno kliknięcie.
|
|
43
|
+
- `cellEdit` (`output<KptCellEditEvent<T>>`) emituje `{ row, field, value, updatedRow }` po
|
|
44
|
+
zatwierdzeniu i tylko wtedy, gdy wartość faktycznie się zmieniła (tablice porównywane po
|
|
45
|
+
zawartości, więc powrót do tego samego zestawu nic nie wysyła). `updatedRow` to gotowe body
|
|
46
|
+
żądania — tabela sama nic nie zapisuje, jak przy `lazyLoad`.
|
|
47
|
+
- `kptCellEdit` — dyrektywa szablonu własnego edytora, gdy wbudowane typy nie wystarczają.
|
|
48
|
+
Kontekst: `$implicit` = wartość, `row`, `commit(value)`, `cancel()`.
|
|
49
|
+
- `open` w `kpt-select` i `kpt-datepicker` jest teraz publicznym `model(false)` — dwukierunkowe
|
|
50
|
+
`[(open)]` i `(openChange)`, spójnie z `kpt-dialog`/`kpt-drawer`. Bez tego nie da się z zewnątrz
|
|
51
|
+
odróżnić „user skończył wybierać" od „pole straciło fokus": `touch` leci również z blur triggera,
|
|
52
|
+
czyli już przy naciśnięciu myszy na opcji w panelu (panel żyje w kontenerze CDK Overlay przy
|
|
53
|
+
`<body>`). Inicjalizacja panelu przy otwarciu przeniosła się z `toggleOpen()` do efektu na `open`,
|
|
54
|
+
żeby otwarcie z zewnątrz ustawiało widok kalendarza i resetowało filtr tak samo jak klik w trigger.
|
|
55
|
+
|
|
56
|
+
`exportCsv()` i eksport nie zmieniają zachowania. Kolumny bez `edit` (i tabele bez `cellEdit`)
|
|
57
|
+
działają dokładnie jak dotąd.
|
|
58
|
+
|
|
59
|
+
- `kpt-data-table` — ukrywanie kolumn przez `hiddenFields` i slot `kptPaginatorActions`.
|
|
60
|
+
|
|
61
|
+
- `hiddenFields` (`model<readonly string[]>`, dwukierunkowe) trzyma pola ukrytych kolumn.
|
|
62
|
+
Komponent celowo nie dostarcza UI do zarządzania widocznością — to minimalny hak do podpięcia
|
|
63
|
+
własnego przełącznika. Renderowanie (nagłówek, wiersz filtrów, wiersze, `colspan`, sticky-offsety
|
|
64
|
+
kolumn zamrożonych) i `exportCsv()` respektują ukryte kolumny; ukrycie nie wyłącza kolumny
|
|
65
|
+
z globalnego wyszukiwania ani z filtrów per-kolumna, a kolejność zapamiętana przez `reorderable`
|
|
66
|
+
przeżywa ukrycie i pokazanie z powrotem.
|
|
67
|
+
- Wiersz paginatora dostał slot projekcji `[kptPaginatorActions]` po lewej stronie `kpt-paginator`
|
|
68
|
+
(który ma teraz `flex: 1 1 auto`, więc bez projekcji wygląda dokładnie jak dotąd) — miejsce na
|
|
69
|
+
kompaktowy przycisk obok paginatora.
|
|
70
|
+
- Ikona `adjustments-horizontal` doszła do wbudowanego rejestru, więc przycisk dostosowywania
|
|
71
|
+
kolumn nie wymaga `provideKptTablerIcons()`.
|
|
72
|
+
|
|
73
|
+
Przy okazji naprawione przestawianie kolumn: `reorderable` operowało na indeksie z pętli `@for`,
|
|
74
|
+
co po odfiltrowaniu kolumn ukrytych przestawiałoby niewłaściwą kolumnę. Teraz identyfikuje kolumny
|
|
75
|
+
po `field`.
|
|
76
|
+
|
|
77
|
+
Gotowe UI dostosowywania kolumn (przycisk, dialog z checkboxami, zapis w `localStorage`) żyje jako
|
|
78
|
+
przykład w playgroundzie — nie wchodzi do biblioteki.
|
|
79
|
+
|
|
80
|
+
### Patch Changes
|
|
81
|
+
|
|
82
|
+
- Uzupełniona dokumentacja kontrolek `avatar`, `avatar-group`, `input-number`, `knob` i `slider`
|
|
83
|
+
(`llms.txt`) oraz poprawiony przykład w JSDoc `kpt-knob`.
|
|
84
|
+
|
|
85
|
+
Poprzedni przykład pokazywał `[formField]` razem z `[min]`/`[max]`, co jest błędem kompilacji:
|
|
86
|
+
pod `[formField]` zakres bierze się ze schematu (`min(path.level, 0)`, `max(path.level, 100)`),
|
|
87
|
+
a dyrektywa sama wstrzykuje go w wejścia. Jawne `[min]`/`[max]` należą do wariantu z `[(value)]`.
|
|
88
|
+
Sama implementacja bez zmian.
|
|
89
|
+
|
|
90
|
+
- Domknięcie dwóch bliźniaczych luk, których pierwszy audyt nie objął — znalezionych przy
|
|
91
|
+
ponownej weryfikacji już naprawionych funkcji.
|
|
92
|
+
|
|
93
|
+
- `renderMarkerHtml()` w mapie escapuje teraz również `shape`. Poprzednia poprawka objęła
|
|
94
|
+
`color` i `contrast`, ale `shape` — trzecie pole trafiające do sklejanego HTML — wciąż szło
|
|
95
|
+
surowo do atrybutu `class`, więc wartość z CMS-a czy API bez walidacji runtime mogła wyrwać się
|
|
96
|
+
z atrybutu tym samym mechanizmem. Trzy legalne wartości (`pin`, `dot`, `square`) nie zawierają
|
|
97
|
+
znaków specjalnych HTML, więc wygląd jest bez zmian.
|
|
98
|
+
- Tooltip wykresu wiązał kolor kropki przez `[style.background]` — shorthand akceptujący `url()` —
|
|
99
|
+
zasilany niewalidowanym `KptChartSeries.color`. Zamiana na `background-color`, czyli ten sam fix,
|
|
100
|
+
który wcześniej dostały `color-picker`, `meter-group`, `roadmap` i legenda mapy.
|
|
101
|
+
|
|
102
|
+
- Poprawki bezpieczeństwa z audytu: dwa krytyczne XSS, niebezpieczne publiczne API rejestru ikon
|
|
103
|
+
oraz CSV formula injection.
|
|
104
|
+
|
|
105
|
+
- `kpt-rich-text` zapisywał `value` wprost do `innerHTML` bez sanitizera wszędzie poza ścieżką
|
|
106
|
+
wklejania. Efekt synchronizujący sanityzuje teraz **każdy** zewnętrzny zapis wartości.
|
|
107
|
+
- `marker-html.ts` (mapa) wstawiał kolor kategorii surowo do atrybutu `style` — `colorVarOf`
|
|
108
|
+
i `foregroundVarOf` mają whitelistę `var(--kpt-*)`, co zamyka naraz wyrwanie się z atrybutu
|
|
109
|
+
i wstrzyknięcie CSS średnikiem.
|
|
110
|
+
- `KptIconRegistry.register()` przyjmował dowolny SVG jako string. Teraz sanityzuje do allowlisty
|
|
111
|
+
geometrii (`path`, `circle`, `rect`, `g`, `line`, `polygon`, `polyline`, `ellipse`) — bez zmian
|
|
112
|
+
dla zestawu wbudowanego i pełnego Tablera (5130 ikon), bo oba używają wyłącznie `<path>`.
|
|
113
|
+
- Eksport CSV z `kpt-data-table` poprzedza apostrofem komórki zaczynające się od `=`, `+`, `-`, `@`
|
|
114
|
+
(formula injection), a filtr `javascript:` w narzędziu linku, `normalizeUrl` w mapie i tła CSS
|
|
115
|
+
przyjmujące `url()` przeszły z blocklist na allowlisty schematów.
|
|
116
|
+
|
|
117
|
+
`escapeCsvCell`, `normalizeUrl` i nowy `sanitizeUrl` wydzieliły się do osobnych plików pure-TS,
|
|
118
|
+
żeby dało się je testować przez `node --test`.
|
|
119
|
+
|
|
120
|
+
Dla danych zgodnych z kontraktem zachowanie jest bez zmian. Dwa świadome wyjątki: URL bez schematu
|
|
121
|
+
dostaje prefiks `https://`, a komórki CSV zaczynające się od znaku formuły — wiodący apostrof.
|
|
122
|
+
|
|
3
123
|
## 0.7.6
|
|
4
124
|
|
|
5
125
|
### Minor Changes
|
|
@@ -612,7 +612,7 @@ function KptChartTooltip_Conditional_0_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
|
612
612
|
} if (rf & 2) {
|
|
613
613
|
const row_r2 = ctx.$implicit;
|
|
614
614
|
i0.ɵɵadvance();
|
|
615
|
-
i0.ɵɵstyleProp("background", row_r2.color);
|
|
615
|
+
i0.ɵɵstyleProp("background-color", row_r2.color);
|
|
616
616
|
i0.ɵɵadvance(2);
|
|
617
617
|
i0.ɵɵtextInterpolate(row_r2.name);
|
|
618
618
|
i0.ɵɵadvance(2);
|
|
@@ -673,7 +673,7 @@ class KptChartTooltip {
|
|
|
673
673
|
}
|
|
674
674
|
@for (row of t.rows; track $index) {
|
|
675
675
|
<div class="kpt-chart__tooltip-row">
|
|
676
|
-
<span class="kpt-chart__tooltip-dot" [style.background]="row.color"></span>
|
|
676
|
+
<span class="kpt-chart__tooltip-dot" [style.background-color]="row.color"></span>
|
|
677
677
|
<span class="kpt-chart__tooltip-name">{{ row.name }}</span>
|
|
678
678
|
<span class="kpt-chart__tooltip-val">{{ row.value }}</span>
|
|
679
679
|
</div>
|