@konce-pt/angular 0.7.5 → 0.7.7
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 +156 -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 +1360 -632
- 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/badge/llms.txt +4 -0
- package/src/lib/bottom-sheet/llms.txt +6 -0
- package/src/lib/button/llms.txt +11 -0
- package/src/lib/context-menu/llms.txt +2 -0
- package/src/lib/data-table/llms.txt +84 -4
- package/src/lib/datepicker/llms.txt +5 -0
- package/src/lib/drawer/llms.txt +9 -0
- 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/menu/llms.txt +33 -4
- package/src/lib/rich-text/llms.txt +3 -0
- package/src/lib/select/llms.txt +5 -0
- package/src/lib/sidenav/llms.txt +43 -29
- package/src/lib/slider/llms.txt +6 -1
- package/src/lib/split-button/llms.txt +2 -0
- 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 +203 -39
- package/types/konce-pt-angular.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,161 @@
|
|
|
1
1
|
# @konce-pt/angular
|
|
2
2
|
|
|
3
|
+
## 0.7.7
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 47ada55: `kpt-data-table` — edycja inline komórek, a przy okazji publiczny stan panelu w `kpt-select`
|
|
8
|
+
i `kpt-datepicker`.
|
|
9
|
+
|
|
10
|
+
- `KptColumn.edit` (`{ type, options?, placeholder?, min?, max?, step? }`) włącza edycję kolumny.
|
|
11
|
+
Klik w komórkę (albo Enter — komórka edytowalna ma `tabindex="0"`) zamienia wartość na kontrolkę:
|
|
12
|
+
`text` → `kpt-input`, `number` → `kpt-input-number`, `date` → `kpt-datepicker`, `select`
|
|
13
|
+
i `multiselect` → `kpt-select` (drugi z `multiple filter`). Dla edytorów na overlayu panel otwiera
|
|
14
|
+
się od razu, więc wybór to jedno kliknięcie.
|
|
15
|
+
- `cellEdit` (`output<KptCellEditEvent<T>>`) emituje `{ row, field, value, updatedRow }` po
|
|
16
|
+
zatwierdzeniu i tylko wtedy, gdy wartość faktycznie się zmieniła (tablice porównywane po
|
|
17
|
+
zawartości, więc powrót do tego samego zestawu nic nie wysyła). `updatedRow` to gotowe body
|
|
18
|
+
żądania — tabela sama nic nie zapisuje, jak przy `lazyLoad`.
|
|
19
|
+
- `kptCellEdit` — dyrektywa szablonu własnego edytora, gdy wbudowane typy nie wystarczają.
|
|
20
|
+
Kontekst: `$implicit` = wartość, `row`, `commit(value)`, `cancel()`.
|
|
21
|
+
- `open` w `kpt-select` i `kpt-datepicker` jest teraz publicznym `model(false)` — dwukierunkowe
|
|
22
|
+
`[(open)]` i `(openChange)`, spójnie z `kpt-dialog`/`kpt-drawer`. Bez tego nie da się z zewnątrz
|
|
23
|
+
odróżnić „user skończył wybierać" od „pole straciło fokus": `touch` leci również z blur triggera,
|
|
24
|
+
czyli już przy naciśnięciu myszy na opcji w panelu (panel żyje w kontenerze CDK Overlay przy
|
|
25
|
+
`<body>`). Inicjalizacja panelu przy otwarciu przeniosła się z `toggleOpen()` do efektu na `open`,
|
|
26
|
+
żeby otwarcie z zewnątrz ustawiało widok kalendarza i resetowało filtr tak samo jak klik w trigger.
|
|
27
|
+
|
|
28
|
+
`exportCsv()` i eksport nie zmieniają zachowania. Kolumny bez `edit` (i tabele bez `cellEdit`)
|
|
29
|
+
działają dokładnie jak dotąd.
|
|
30
|
+
|
|
31
|
+
- `kpt-data-table` — ukrywanie kolumn przez `hiddenFields` i slot `kptPaginatorActions`.
|
|
32
|
+
|
|
33
|
+
- `hiddenFields` (`model<readonly string[]>`, dwukierunkowe) trzyma pola ukrytych kolumn.
|
|
34
|
+
Komponent celowo nie dostarcza UI do zarządzania widocznością — to minimalny hak do podpięcia
|
|
35
|
+
własnego przełącznika. Renderowanie (nagłówek, wiersz filtrów, wiersze, `colspan`, sticky-offsety
|
|
36
|
+
kolumn zamrożonych) i `exportCsv()` respektują ukryte kolumny; ukrycie nie wyłącza kolumny
|
|
37
|
+
z globalnego wyszukiwania ani z filtrów per-kolumna, a kolejność zapamiętana przez `reorderable`
|
|
38
|
+
przeżywa ukrycie i pokazanie z powrotem.
|
|
39
|
+
- Wiersz paginatora dostał slot projekcji `[kptPaginatorActions]` po lewej stronie `kpt-paginator`
|
|
40
|
+
(który ma teraz `flex: 1 1 auto`, więc bez projekcji wygląda dokładnie jak dotąd) — miejsce na
|
|
41
|
+
kompaktowy przycisk obok paginatora.
|
|
42
|
+
- Ikona `adjustments-horizontal` doszła do wbudowanego rejestru, więc przycisk dostosowywania
|
|
43
|
+
kolumn nie wymaga `provideKptTablerIcons()`.
|
|
44
|
+
|
|
45
|
+
Przy okazji naprawione przestawianie kolumn: `reorderable` operowało na indeksie z pętli `@for`,
|
|
46
|
+
co po odfiltrowaniu kolumn ukrytych przestawiałoby niewłaściwą kolumnę. Teraz identyfikuje kolumny
|
|
47
|
+
po `field`.
|
|
48
|
+
|
|
49
|
+
Gotowe UI dostosowywania kolumn (przycisk, dialog z checkboxami, zapis w `localStorage`) żyje jako
|
|
50
|
+
przykład w playgroundzie — nie wchodzi do biblioteki.
|
|
51
|
+
|
|
52
|
+
### Patch Changes
|
|
53
|
+
|
|
54
|
+
- Uzupełniona dokumentacja kontrolek `avatar`, `avatar-group`, `input-number`, `knob` i `slider`
|
|
55
|
+
(`llms.txt`) oraz poprawiony przykład w JSDoc `kpt-knob`.
|
|
56
|
+
|
|
57
|
+
Poprzedni przykład pokazywał `[formField]` razem z `[min]`/`[max]`, co jest błędem kompilacji:
|
|
58
|
+
pod `[formField]` zakres bierze się ze schematu (`min(path.level, 0)`, `max(path.level, 100)`),
|
|
59
|
+
a dyrektywa sama wstrzykuje go w wejścia. Jawne `[min]`/`[max]` należą do wariantu z `[(value)]`.
|
|
60
|
+
Sama implementacja bez zmian.
|
|
61
|
+
|
|
62
|
+
- Domknięcie dwóch bliźniaczych luk, których pierwszy audyt nie objął — znalezionych przy
|
|
63
|
+
ponownej weryfikacji już naprawionych funkcji.
|
|
64
|
+
|
|
65
|
+
- `renderMarkerHtml()` w mapie escapuje teraz również `shape`. Poprzednia poprawka objęła
|
|
66
|
+
`color` i `contrast`, ale `shape` — trzecie pole trafiające do sklejanego HTML — wciąż szło
|
|
67
|
+
surowo do atrybutu `class`, więc wartość z CMS-a czy API bez walidacji runtime mogła wyrwać się
|
|
68
|
+
z atrybutu tym samym mechanizmem. Trzy legalne wartości (`pin`, `dot`, `square`) nie zawierają
|
|
69
|
+
znaków specjalnych HTML, więc wygląd jest bez zmian.
|
|
70
|
+
- Tooltip wykresu wiązał kolor kropki przez `[style.background]` — shorthand akceptujący `url()` —
|
|
71
|
+
zasilany niewalidowanym `KptChartSeries.color`. Zamiana na `background-color`, czyli ten sam fix,
|
|
72
|
+
który wcześniej dostały `color-picker`, `meter-group`, `roadmap` i legenda mapy.
|
|
73
|
+
|
|
74
|
+
- Poprawki bezpieczeństwa z audytu: dwa krytyczne XSS, niebezpieczne publiczne API rejestru ikon
|
|
75
|
+
oraz CSV formula injection.
|
|
76
|
+
|
|
77
|
+
- `kpt-rich-text` zapisywał `value` wprost do `innerHTML` bez sanitizera wszędzie poza ścieżką
|
|
78
|
+
wklejania. Efekt synchronizujący sanityzuje teraz **każdy** zewnętrzny zapis wartości.
|
|
79
|
+
- `marker-html.ts` (mapa) wstawiał kolor kategorii surowo do atrybutu `style` — `colorVarOf`
|
|
80
|
+
i `foregroundVarOf` mają whitelistę `var(--kpt-*)`, co zamyka naraz wyrwanie się z atrybutu
|
|
81
|
+
i wstrzyknięcie CSS średnikiem.
|
|
82
|
+
- `KptIconRegistry.register()` przyjmował dowolny SVG jako string. Teraz sanityzuje do allowlisty
|
|
83
|
+
geometrii (`path`, `circle`, `rect`, `g`, `line`, `polygon`, `polyline`, `ellipse`) — bez zmian
|
|
84
|
+
dla zestawu wbudowanego i pełnego Tablera (5130 ikon), bo oba używają wyłącznie `<path>`.
|
|
85
|
+
- Eksport CSV z `kpt-data-table` poprzedza apostrofem komórki zaczynające się od `=`, `+`, `-`, `@`
|
|
86
|
+
(formula injection), a filtr `javascript:` w narzędziu linku, `normalizeUrl` w mapie i tła CSS
|
|
87
|
+
przyjmujące `url()` przeszły z blocklist na allowlisty schematów.
|
|
88
|
+
|
|
89
|
+
`escapeCsvCell`, `normalizeUrl` i nowy `sanitizeUrl` wydzieliły się do osobnych plików pure-TS,
|
|
90
|
+
żeby dało się je testować przez `node --test`.
|
|
91
|
+
|
|
92
|
+
Dla danych zgodnych z kontraktem zachowanie jest bez zmian. Dwa świadome wyjątki: URL bez schematu
|
|
93
|
+
dostaje prefiks `https://`, a komórki CSV zaczynające się od znaku formuły — wiodący apostrof.
|
|
94
|
+
|
|
95
|
+
## 0.7.6
|
|
96
|
+
|
|
97
|
+
### Minor Changes
|
|
98
|
+
|
|
99
|
+
- 1e20c5e: `kpt-badge` — nowe wejście `size` (`'sm' | 'md' | 'lg'`, domyślnie `'md'`).
|
|
100
|
+
|
|
101
|
+
Wysokość (`1rem` / `1.25rem` / `1.5rem`) steruje resztą geometrii: krój to `calc(--_size * 0.6)`,
|
|
102
|
+
wcięcie boczne i średnica kropki skalują się razem z nią. `md` wychodzi identycznie jak dotąd
|
|
103
|
+
(0.75rem kroju, kropka 0.65rem), więc istniejące użycia nie zmieniają wyglądu.
|
|
104
|
+
|
|
105
|
+
`sm` jest po to, żeby wstawić odznakę w wiersz tekstu — przy etykiecie, w pozycji menu, w komórce
|
|
106
|
+
tabeli — bez rozpychania wiersza.
|
|
107
|
+
|
|
108
|
+
- 8dd8e41: `KptMenuItem` — wiersz nagłówkowy i odznaka na pozycji.
|
|
109
|
+
|
|
110
|
+
- `header: true` zamienia pozycję w nieklikalny blok tekstu: `avatar` (`{ src?, name?, icon? }`,
|
|
111
|
+
renderowany przez `kpt-avatar`), `label` w półgrubym kroju i `description` drugą linią. Pokrywa
|
|
112
|
+
oba typowe zastosowania nagłówka menu: dane zalogowanego użytkownika (nazwa + e-mail) i opis
|
|
113
|
+
funkcji menu. To `<div role="presentation">`, więc nie wchodzi do nawigacji klawiaturą i nie
|
|
114
|
+
narusza kontraktu dzieci `role="menu"`.
|
|
115
|
+
- `badge` (`string | number`) plus `badgeVariant` dokładają odznakę wyrównaną do prawej krawędzi
|
|
116
|
+
pozycji — licznik powiadomień, status. Renderuje ją `kpt-badge`, więc wartości powyżej `max`
|
|
117
|
+
skracają się do `99+`, a wartość wchodzi w nazwę dostępną pozycji.
|
|
118
|
+
- `description` działa też na zwykłych pozycjach — dwuwierszowa pozycja menu.
|
|
119
|
+
|
|
120
|
+
Pola honorują `kpt-menu`, `kpt-context-menu` i `kpt-split-button`. `kpt-menubar`, `kpt-megamenu`
|
|
121
|
+
i `kpt-speed-dial` dzielą typ, ale renderowania nie zmieniają. Wszystkie pola są opcjonalne —
|
|
122
|
+
istniejące `items` działają bez zmian.
|
|
123
|
+
|
|
124
|
+
- d67fde2: `kpt-sidenav` — slot stopki `kptSidenavFooter` przyklejonej do dołu panelu.
|
|
125
|
+
|
|
126
|
+
Element z tym atrybutem trafia poza obszar przewijany, więc zostaje na dole niezależnie od długości
|
|
127
|
+
nawigacji — blok zalogowanego użytkownika, przełącznik motywu czy numer wersji nie odjeżdżają razem
|
|
128
|
+
z listą pozycji. Stopka dostaje górną kreskę na pełną szerokość panelu i ten sam padding co nawigacja.
|
|
129
|
+
W szynie ikon (`sidenavRailBreakpoint`) tekst stopki chowa się tym samym atrybutem `kptNavLabel`
|
|
130
|
+
co etykiety pozycji.
|
|
131
|
+
|
|
132
|
+
Wewnątrz komponentu `padding`, `gap` i `overflow-y` przeniosły się z hosta do obszaru przewijanego —
|
|
133
|
+
panele bez stopki wyglądają identycznie jak dotąd. Zmiana dotyka tylko aplikacji, które celowały
|
|
134
|
+
w `kpt-sidenav > *` selektorem dziecka bezpośredniego.
|
|
135
|
+
|
|
136
|
+
### Patch Changes
|
|
137
|
+
|
|
138
|
+
- Migotanie przycisków i paneli na pierwszej klatce — poprawki `kpt-button`, `kpt-drawer`
|
|
139
|
+
i `kpt-bottom-sheet`.
|
|
140
|
+
|
|
141
|
+
Wspólna przyczyna: reguły stylu warunkowane atrybutem `[attr.data-*]`, który Angular ustawia
|
|
142
|
+
dopiero w przebiegu aktualizacji. Przez jedną klatkę komponent stał więc w stanie bazowym
|
|
143
|
+
i dopiero potem animował się do właściwego.
|
|
144
|
+
|
|
145
|
+
- **Przyciski** — sprzężenie zwrotne hovera i aktywności niesie pseudoelement `::after`
|
|
146
|
+
(`opacity` 0 → 1) zamiast animowanego `background-color`. Warstwa startuje przezroczysta,
|
|
147
|
+
więc zmiana jej koloru na pierwszej klatce jest niewidoczna. `inset: 0` trzyma ją wewnątrz
|
|
148
|
+
ramki, dzięki czemu obrys wariantu `outline` zostaje widoczny pod kursorem. Ten sam wzorzec
|
|
149
|
+
dostają `kpt-icon-button`, `kpt-fab` i `kpt-split-button`.
|
|
150
|
+
- **`kpt-drawer`** — geometria pozycji domyślnej i przesunięcie poza ekran wróciły do reguły
|
|
151
|
+
bazowej, więc zamknięty panel nie pokazuje się na moment przed animacją.
|
|
152
|
+
- **`kpt-drawer` i `kpt-bottom-sheet`** — zamknięty panel wypada z kolejki Tab i z drzewa
|
|
153
|
+
dostępności przez `visibility: hidden`, nie przez `inert`. Jest poprawny już na pierwszej
|
|
154
|
+
klatce, bez czekania na JavaScript, a animacja wjazdu zostaje (czego `display: none`
|
|
155
|
+
by nie pozwolił).
|
|
156
|
+
|
|
157
|
+
Wszystkie trzy komponenty honorują teraz `prefers-reduced-motion: reduce`.
|
|
158
|
+
|
|
3
159
|
## 0.7.5
|
|
4
160
|
|
|
5
161
|
### 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>
|