@konce-pt/angular 0.9.0 → 0.10.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 +338 -0
- package/fesm2022/konce-pt-angular.mjs +5445 -1755
- package/fesm2022/konce-pt-angular.mjs.map +1 -1
- package/package.json +11 -11
- package/src/lib/accordion/llms.txt +6 -0
- package/src/lib/alert/llms.txt +7 -0
- package/src/lib/app-shell/llms.txt +4 -3
- package/src/lib/autocomplete/llms.txt +13 -0
- package/src/lib/avatar/llms.txt +6 -3
- package/src/lib/avatar-group/llms.txt +6 -0
- package/src/lib/badge/llms.txt +11 -2
- package/src/lib/bottom-sheet/llms.txt +8 -1
- package/src/lib/breadcrumb/llms.txt +5 -0
- package/src/lib/button/llms.txt +3 -0
- package/src/lib/card/llms.txt +8 -0
- package/src/lib/carousel/llms.txt +13 -1
- package/src/lib/checkbox/llms.txt +10 -0
- package/src/lib/chip/llms.txt +6 -0
- package/src/lib/chips-input/llms.txt +12 -0
- package/src/lib/color-picker/llms.txt +14 -0
- package/src/lib/confirm/llms.txt +5 -0
- package/src/lib/context-menu/llms.txt +8 -0
- package/src/lib/data-table/llms.txt +5 -4
- package/src/lib/date-range/llms.txt +24 -2
- package/src/lib/datepicker/llms.txt +25 -5
- package/src/lib/dialog/llms.txt +18 -0
- package/src/lib/drawer/llms.txt +7 -1
- package/src/lib/empty/llms.txt +6 -0
- package/src/lib/fab/llms.txt +5 -2
- package/src/lib/file-upload/llms.txt +12 -1
- package/src/lib/form-field/llms.txt +24 -4
- package/src/lib/galleria/llms.txt +13 -1
- package/src/lib/i18n/llms.txt +2 -2
- package/src/lib/icon/llms.txt +9 -1
- package/src/lib/icon-button/llms.txt +3 -1
- package/src/lib/image/llms.txt +10 -1
- package/src/lib/input/llms.txt +6 -0
- package/src/lib/input-mask/llms.txt +11 -0
- package/src/lib/input-number/llms.txt +18 -0
- package/src/lib/input-otp/llms.txt +14 -0
- package/src/lib/knob/llms.txt +8 -0
- package/src/lib/listbox/llms.txt +16 -1
- package/src/lib/megamenu/llms.txt +21 -1
- package/src/lib/menu/llms.txt +14 -4
- package/src/lib/menubar/llms.txt +21 -0
- package/src/lib/meter-group/llms.txt +10 -0
- package/src/lib/order-list/llms.txt +11 -2
- package/src/lib/panel/llms.txt +7 -0
- package/src/lib/password/llms.txt +9 -1
- package/src/lib/pick-list/llms.txt +12 -2
- package/src/lib/popover/llms.txt +11 -0
- package/src/lib/radio-group/llms.txt +11 -0
- package/src/lib/rating/llms.txt +18 -4
- package/src/lib/rich-text/llms.txt +18 -0
- package/src/lib/scroll-top/llms.txt +12 -0
- package/src/lib/select/llms.txt +23 -5
- package/src/lib/sidenav/llms.txt +6 -0
- package/src/lib/skeleton/llms.txt +2 -1
- package/src/lib/slider/llms.txt +13 -0
- package/src/lib/speed-dial/llms.txt +8 -0
- package/src/lib/spinner/llms.txt +10 -1
- package/src/lib/split-button/llms.txt +11 -2
- package/src/lib/splitter/llms.txt +10 -1
- package/src/lib/stepper/llms.txt +8 -0
- package/src/lib/switch/llms.txt +11 -0
- package/src/lib/switch-group/llms.txt +11 -0
- package/src/lib/tabs/llms.txt +7 -0
- package/src/lib/textarea/llms.txt +12 -0
- package/src/lib/toast/llms.txt +19 -1
- package/src/lib/tooltip/llms.txt +12 -0
- package/src/lib/tree/llms.txt +21 -0
- package/types/konce-pt-angular.d.ts +1047 -73
- package/types/konce-pt-angular.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,343 @@
|
|
|
1
1
|
# @konce-pt/angular
|
|
2
2
|
|
|
3
|
+
## 0.10.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 0930165: Nazwy, relacje i fokus w dziesięciu komponentach; pole `url` w menubarze i megamenu wreszcie działa.
|
|
8
|
+
|
|
9
|
+
- `kpt-dialog`: okno z `header` bierze z niego nazwę (`aria-labelledby`). Angular dostał inputy
|
|
10
|
+
`ariaLabel` (okno bez nagłówka), `ariaDescribedby` i `alert` (`role="alertdialog"`); w React te same
|
|
11
|
+
atrybuty przechodzą wprost jako propsy `<dialog>`.
|
|
12
|
+
- `kpt-confirm-container`: okno to `alertdialog` z treścią pytania w `aria-describedby`, a fokus
|
|
13
|
+
startuje na przycisku odmowy zamiast na „×”.
|
|
14
|
+
- `kpt-splitter`: uchwyt ma nazwę (input/prop `ariaLabel`, domyślnie nowy klucz `splitter.resize`),
|
|
15
|
+
`aria-valuemin`/`aria-valuemax`, `aria-controls`, obsługę `Home`/`End` i poprawne
|
|
16
|
+
`aria-orientation` (linia uchwytu, nie układ). Host ma `height: 100%`, więc wysokość rodzica
|
|
17
|
+
dociera do paneli — **splitter w rodzicu o ustalonej wysokości wypełni ją teraz w całości**.
|
|
18
|
+
- `kpt-stepper`: znaczniki mają nazwy z nowych kluczy `stepper.step` / `stepper.stepDone`
|
|
19
|
+
(„Krok 2: Dostawa, ukończony”) zamiast samego numeru.
|
|
20
|
+
- `kpt-panel`: przełącznik z `header` mówi, który panel zwija (nowy klucz `panel.toggleNamed`),
|
|
21
|
+
i wskazuje treść przez `aria-controls`.
|
|
22
|
+
- `kpt-accordion`: nagłówek ma `aria-controls`, treść to `region` nazwany nagłówkiem.
|
|
23
|
+
- `kpt-card`: nowy input/prop `headingLevel` robi z `header` nagłówek strony.
|
|
24
|
+
- `kpt-breadcrumb`: pozycje są listą `<ol>`/`<li>` w `<nav>`, więc czytnik ogłasza liczbę poziomów.
|
|
25
|
+
- `kpt-sidenav`: linki to rząd flex z odstępem (ikona i etykieta się nie sklejają), a link
|
|
26
|
+
z `aria-current="page"` jest podświetlony.
|
|
27
|
+
- `kpt-app-shell`: otwarcie nakładki przenosi fokus do panelu, zamknięcie oddaje go na przycisk menu.
|
|
28
|
+
- `kpt-menubar`, `kpt-megamenu`: pozycja z `url` (bez dzieci, niewyłączona) renderuje się jako
|
|
29
|
+
`<a href>` — wcześniej pole było opisane, ale pomijane.
|
|
30
|
+
|
|
31
|
+
- a7525af: `kpt-file-upload` i `kptTooltip` działają z klawiatury i czytnika ekranu.
|
|
32
|
+
|
|
33
|
+
`kpt-file-upload` (oba porty): strefa upuszczania była `<div>` reagującym wyłącznie na kliknięcie,
|
|
34
|
+
a natywne pole pliku jest ukryte — z klawiatury nie dało się wybrać pliku w ogóle. Strefa jest teraz
|
|
35
|
+
`role="button"` z przystankiem Tab, a `Enter` i spacja otwierają okno wyboru. W Angularze `disabled`
|
|
36
|
+
zmieniał tylko wygląd i kliknięcie nadal otwierało okno — teraz blokuje wybór i wyjmuje strefę
|
|
37
|
+
z kolejności Tab (`aria-disabled`). Stan `invalid` dostał wygląd (ramka `--kpt-color-danger`,
|
|
38
|
+
`aria-invalid`), widoczny po dotknięciu pola. Pozycje listy mają ikonę według typu (`photo` dla
|
|
39
|
+
obrazów, `paperclip` dla reszty) zamiast zawsze ikony zdjęcia, a lista nie gubi już plików o tej
|
|
40
|
+
samej nazwie.
|
|
41
|
+
|
|
42
|
+
`kptTooltip` (Angular): nasłuchiwał `focus`/`blur` na hoście, a te zdarzenia nie bąbelkują — na
|
|
43
|
+
`kpt-button` i `kpt-icon-button` fokus dostaje wewnętrzny `<button>`, więc podpowiedź nie pojawiała
|
|
44
|
+
się z klawiatury. Teraz `focusin`/`focusout`. W obu portach: tekst trafia do czytników przez trwały,
|
|
45
|
+
ukryty opis powiązany `aria-describedby` z elementem przyjmującym fokus (pomijany, gdy powtarzałby
|
|
46
|
+
jego nazwę, i przy `onlyWhenTruncated`), `Escape` zamyka dymek, a wskaźnik może na niego przejść bez
|
|
47
|
+
zniknięcia — wymagania WCAG 1.4.13.
|
|
48
|
+
|
|
49
|
+
- 094a654: Drobne poprawki dostępności i wygody w kontrolkach formularzy.
|
|
50
|
+
|
|
51
|
+
- `kpt-input-otp`: `autocomplete="one-time-code"` na pierwszej komórce (telefon podpowiada kod z SMS);
|
|
52
|
+
kod wpisany do jednej komórki naraz rozkłada się jak wklejenie; `touch` przy wyjściu z grupy.
|
|
53
|
+
- `kpt-input-mask`: `inputmode` z maski (same `9` → klawiatura numeryczna), nowe `inputMode`
|
|
54
|
+
i `autocomplete`.
|
|
55
|
+
- `kpt-autocomplete`: `aria-autocomplete`, `aria-controls`, `aria-activedescendant`, liczba podpowiedzi
|
|
56
|
+
w regionie `polite`, dopasowanie bez diakrytyków, `Escape` zamyka, a drugi czyści pole.
|
|
57
|
+
- `kpt-checkbox`: stan pośredni `indeterminate`.
|
|
58
|
+
- `kpt-switch`: tekst stanu (`onLabel`/`offLabel`) poza nazwą; `kpt-switch-group`: stan błędu na
|
|
59
|
+
przełącznikach zamiast na `role="group"`.
|
|
60
|
+
- `kpt-radio-group`: `orientation` (`aria-orientation`).
|
|
61
|
+
- `kpt-chips-input`: tagi jako lista, komunikaty dodania/usunięcia/duplikatu, duplikat zostaje w polu,
|
|
62
|
+
fokus wraca do pola po usunięciu tagu.
|
|
63
|
+
- `kpt-textarea`: `maxLength` i licznik `counter` powiązany przez `aria-describedby`.
|
|
64
|
+
- `kpt-slider`: `suffix` w wartości i `aria-valuetext`, `aria-invalid`.
|
|
65
|
+
- `kpt-color-picker`: nazwane gotowe kolory (`{ value, label }`, typ `KptColorPreset`, domyślna paleta
|
|
66
|
+
z i18n), `aria-pressed`, pole hex przyjmuje tylko pełny kod i oznacza niepełny `aria-invalid`.
|
|
67
|
+
- `kpt-input-number`: wartość w zapisie aktywnego języka (PL `12,5`).
|
|
68
|
+
- `kpt-rating`: połówki gwiazdek (`allowHalf`) — każda połówka to osobne `radio`, strzałki co 0,5;
|
|
69
|
+
tylko do odczytu gwiazdki pokazują wartość zaokrągloną do połówki, a nazwa dokładną („4,3 z 5”).
|
|
70
|
+
- `kpt-rich-text`: okienko adresu linku zamiast `window.prompt()`, menu kontekstowe tabeli jako
|
|
71
|
+
`role="menu"` z klawiaturą (klawisz menu / `Shift+F10`, strzałki, `Escape`, powrót fokusu), nazwy
|
|
72
|
+
próbek kolorów z i18n.
|
|
73
|
+
- `@konce-pt/i18n`: przestrzenie `autocomplete`, nowe klucze `chipsInput.*`, `colorPicker.*`
|
|
74
|
+
(nazwy kolorów), `richText.linkApply`, `richText.swatches.*`.
|
|
75
|
+
|
|
76
|
+
- 094a654: Kontrolki formularzy same wiążą się z `kpt-form-field` — etykieta, podpowiedź i błąd docierają
|
|
77
|
+
do czytnika bez ręcznego `controlId`.
|
|
78
|
+
|
|
79
|
+
- `kpt-form-field` daje zawartości kontekst (Angular: token `KPT_FORM_FIELD` i pomocnik
|
|
80
|
+
`kptFieldA11y`; React: `useKptFieldA11y`). Kontrolka zgłasza swoje `id`, więc `label[for]` na nie
|
|
81
|
+
wskazuje; kontrolki na `div` z rolą (select, pola dat, pokrętło, grupy, edytor, OTP) dostają
|
|
82
|
+
`aria-labelledby` na etykietę, bo `label[for]` ich nie nazywa. Widoczna podpowiedź albo błąd ma `id`
|
|
83
|
+
i trafia do `aria-describedby` kontrolki. Jawny `controlId` nadal wygrywa.
|
|
84
|
+
- `id` i `ariaLabel` we wszystkich kontrolkach formularzy (`id` zawsze na elemencie fokusowalnym,
|
|
85
|
+
nigdy na hoście); `required` → `aria-required` tam, gdzie go brakowało (textarea, password, select,
|
|
86
|
+
chips-input, checkbox, input-number, radio-group, rich-text).
|
|
87
|
+
- `kpt-password`: `id` nie zostaje już na hoście — wcześniej strona miała dwa elementy o tym samym id,
|
|
88
|
+
a etykieta wskazywała `kpt-password` zamiast pola. Doszły `aria-invalid`, `aria-required`,
|
|
89
|
+
`readonly`, a ocena siły jest w `aria-describedby`.
|
|
90
|
+
- `kpt-slider`: nazwy uchwytów zakresu z i18n (`slider.min`/`slider.max`) zamiast zaszytych
|
|
91
|
+
„Minimum”/„Maksimum”, łączone z etykietą pola.
|
|
92
|
+
- `kpt-knob`: `aria-valuetext` z `suffix`, wyłączone pokrętło wypada z kolejności Tab.
|
|
93
|
+
- `kpt-input-otp`: komórki w nazwanej grupie, każda z nazwą „Znak 2 z 6” (`inputOtp.cell`).
|
|
94
|
+
- `kpt-color-picker`: nazwy próbnika i pola z kodem (`colorPicker.picker`/`colorPicker.hex`).
|
|
95
|
+
- React: `id` kontrolek na hoście `div` (datepicker, date-range, color-picker, chips-input,
|
|
96
|
+
input-number, input-otp, slider, knob, grupy, rich-text) trafia teraz na element fokusowalny,
|
|
97
|
+
nie na hosta — jak w porcie Angulara.
|
|
98
|
+
|
|
99
|
+
- 094a654: Klawiatura w kontrolkach formularzy z panelem: `kpt-select`, `kpt-datepicker` i `kpt-date-range`
|
|
100
|
+
dało się dotąd w praktyce obsłużyć tylko myszą.
|
|
101
|
+
|
|
102
|
+
- `kpt-select`: wzorzec combobox bez wpisywania — fokus zostaje na wyzwalaczu, aktywną opcję ogłasza
|
|
103
|
+
`aria-activedescendant` (z `aria-controls` i `aria-haspopup="listbox"`). Strzałki, `Home`/`End`,
|
|
104
|
+
`PageUp`/`PageDown` z pominięciem wyłączonych opcji, wyszukiwanie po literach bez względu na
|
|
105
|
+
diakrytyki, `Enter`/`Spacja` wybiera, `Escape`/`Tab` zamyka, a pojedynczy wybór oddaje fokus
|
|
106
|
+
wyzwalaczowi. Z `filter` fokus przechodzi do pola wyszukiwania. W trybie `multiple`
|
|
107
|
+
`Backspace`/`Delete` usuwa ostatni chip, a przyciski chipów mają nazwę opcji. Nowy input `ariaLabel`.
|
|
108
|
+
- `kpt-datepicker`: wzorzec „date picker dialog” — pole ma `aria-haspopup="dialog"`/`aria-expanded`
|
|
109
|
+
i otwiera się też `Spacją` i `↓`; panel to nazwany dialog z fokusem na wybranym albo dzisiejszym dniu.
|
|
110
|
+
Strzałki o dzień i tydzień, `Home`/`End` tydzień, `PageUp`/`PageDown` miesiąc (z `Shift` rok),
|
|
111
|
+
strzałki w siatkach miesięcy, lat i dekad; `Tab` krąży w panelu, `Escape` i wybór oddają fokus polu,
|
|
112
|
+
`Delete`/`Backspace` czyści. Dni mają pełną nazwę daty z `Intl` i `aria-current="date"`.
|
|
113
|
+
- `kpt-date-range`: ta sama klawiatura przez wszystkie panele, nazwy dni z rolą w zakresie
|
|
114
|
+
(„…, początek zakresu”) zamiast samego koloru i komunikat `polite` po wyborze początku. Nowe inputy
|
|
115
|
+
`minDate`/`maxDate` i `ariaLabel`.
|
|
116
|
+
- We wszystkich trzech `touch` nie leci już z blur pola, gdy fokus przechodzi do otwartego panelu —
|
|
117
|
+
wcześniej błąd wymaganego pola pokazywał się w trakcie wybierania. Zamknięcie panelu nadal go wysyła.
|
|
118
|
+
- `@konce-pt/datetime`: `moveFocusDate`, `moveCellIndex`, `initialFocusDate`, `clampIso`
|
|
119
|
+
i `KPT_DAY_GRID_KEYS` (klawiatura siatek kalendarza) oraz `minDate`/`maxDate` w `buildRangeGrid`.
|
|
120
|
+
- `@konce-pt/i18n`: klucze `datepicker.dialog` i `dateRange.{dialog,rangeStart,rangeEnd,inRange,pickEnd,picked}`.
|
|
121
|
+
|
|
122
|
+
- a7525af: Listy wyboru, drzewo i paginator dają się obsłużyć z klawiatury i czytnika ekranu.
|
|
123
|
+
|
|
124
|
+
`kpt-pick-list` i `kpt-order-list` (w obu portach) miały pozycje zaznaczane wyłącznie kliknięciem —
|
|
125
|
+
wiersze nie przyjmowały fokusu, więc z klawiatury działały tylko przyciski „przenieś wszystko”,
|
|
126
|
+
a listy kolejności nie dało się przestawić wcale. `llms.txt` twierdził przy tym, że przyciski są
|
|
127
|
+
pełną ścieżką klawiaturową. Teraz każda lista to `listbox` z jednym przystankiem Tab:
|
|
128
|
+
strzałki, `Home` i `End` chodzą po pozycjach, w PickList spacja zaznacza, a `Enter` przenosi
|
|
129
|
+
pozycję na drugą stronę (jak dwuklik); w OrderList zaznaczenie idzie za fokusem, a `Alt`+↑/↓
|
|
130
|
+
przestawia pozycję. Pozycje niosą `role="option"` i `aria-selected`, listy nazwę z nagłówka.
|
|
131
|
+
|
|
132
|
+
`kpt-tree` (w obu portach) ma klawiaturę według wzorca WAI-ARIA „tree view”: jeden przystanek Tab,
|
|
133
|
+
strzałki po widocznych wierszach, → / ← rozwijają, zwijają i chodzą między rodzicem a dzieckiem,
|
|
134
|
+
`Enter` / spacja działają jak kliknięcie. Wiersze dostały `aria-selected`, `aria-level`
|
|
135
|
+
i `aria-disabled`, a pierścień fokusa rysuje się na wierszu. Strzałka rozwijania jest teraz tylko dla
|
|
136
|
+
myszy (`aria-hidden`) — przycisk w środku `treeitem` był zagnieżdżoną kontrolką i drugim przystankiem
|
|
137
|
+
Tab na wiersz. Port Angulara przestał też pisać `expanded` do obiektów węzłów aplikacji: stan
|
|
138
|
+
rozwinięcia trzyma komponent (jak w React), więc dwa drzewa na tych samych węzłach nie rozwijają
|
|
139
|
+
się już razem. `expanded` w danych to — jak było opisane — stan początkowy.
|
|
140
|
+
|
|
141
|
+
`kpt-button` (Angular) ma wejście `ariaLabel`, które trafia na wewnętrzny `<button>`/`<a>`.
|
|
142
|
+
`kpt-paginator` stawiał `[attr.aria-label]` na hoście `<kpt-button>`, który nie ma roli przycisku,
|
|
143
|
+
więc przyciski „poprzednia / następna strona” były dla czytnika ekranu bez nazwy. Port React był
|
|
144
|
+
tu poprawny — `aria-label` przechodzi tam na wewnętrzny element.
|
|
145
|
+
|
|
146
|
+
- 094a654: Wzorce klawiatury w czterech kontrolkach formularzy.
|
|
147
|
+
|
|
148
|
+
- `kpt-listbox`: wzorzec WAI-ARIA „listbox” — lista to jeden przystanek Tab z `aria-activedescendant`
|
|
149
|
+
(wcześniej każda opcja była osobnym przyciskiem i przystankiem). Strzałki, `Home`/`End`,
|
|
150
|
+
`PageUp`/`PageDown` z pominięciem wyłączonych, wyszukiwanie po literach, `Spacja`/`Enter` wybiera,
|
|
151
|
+
`Ctrl`/`⌘`+`A` zaznacza wszystkie widoczne w trybie `multiple`. Pole filtra stoi przed listą (nie
|
|
152
|
+
w `listbox`), ma nazwę, `↓` przenosi z niego do listy i pomija diakrytyki. Nowe: `id`, `ariaLabel`,
|
|
153
|
+
`required`; `touch` leci na blur listy. Opcje to `div[role=option]` zamiast `button`.
|
|
154
|
+
- `kpt-rating`: grupa radiowa zamiast `role="slider"` z przyciskami w środku — jeden przystanek Tab,
|
|
155
|
+
gwiazdki z `aria-checked`, strzałki zmieniają ocenę (w RTL odwrócone), `Home`/`End`,
|
|
156
|
+
`Delete`/`Backspace` zeruje. `readonly` to `role="img"` z nazwą „4 z 5” zamiast wyłączonych
|
|
157
|
+
przycisków. Nowe: `id`, `ariaLabel`, `required`, `invalid`; `touch` leci, gdy fokus opuszcza grupę.
|
|
158
|
+
- `kpt-input-number`: `role="spinbutton"` z `aria-valuemin/max/now` i `aria-valuetext` (z sufiksem),
|
|
159
|
+
`↑`/`↓` krok, `PageUp`/`PageDown` dziesięć kroków, krok zaokrąglany do precyzji `step`. Wpisywana
|
|
160
|
+
liczba nie jest już przycinana w trakcie pisania („150” przy `max` 99 stawało się „99”) — granice
|
|
161
|
+
działają przy krokowaniu i na blur. Przyciski `−`/`+` poza kolejnością Tab nie zabierają fokusu polu.
|
|
162
|
+
- `kpt-rich-text`: pasek narzędzi ma nazwę (`richText.toolbar`) i jeden przystanek Tab — strzałki
|
|
163
|
+
i `Home`/`End` chodzą po narzędziach, a Tab z paska idzie od razu do edytora.
|
|
164
|
+
|
|
165
|
+
- dcdb1b4: Nazwy i etykiety dla czytników ekranu w dziewięciu komponentach.
|
|
166
|
+
|
|
167
|
+
- `kpt-alert`: rola idzie za wagą — `info`/`success` to `role="status"`, `warning`/`danger` to
|
|
168
|
+
`role="alert"` (wcześniej zawsze `alert`). Nowy model `visible` (Angular `[(visible)]`, React
|
|
169
|
+
`visible`/`onVisibleChange`) pozwala pokazać zamknięty alert ponownie.
|
|
170
|
+
- `kpt-badge`: nowy `label` („3 nieprzeczytane”, „dostępny”) czytany zamiast samej liczby albo
|
|
171
|
+
kropki, i `hideZero`, który chowa plakietkę przy `0`/`null`.
|
|
172
|
+
- `kpt-chip`: przycisk usuwania ma nazwę „Usuń <etykieta>” (`aria-labelledby`), a `Backspace`/`Delete`
|
|
173
|
+
działają jak kliknięcie. Etykieta siedzi teraz w `.kpt-chip__label`. Dotyczy też `kpt-chips-input`.
|
|
174
|
+
- `kpt-meter-group`: nazwa (`label`, domyślnie nowy klucz `meterGroup.label`), `aria-valuemin`,
|
|
175
|
+
poprawne `aria-valuemax` także bez `max` i `aria-valuetext` z podziałem. Legenda może pokazywać
|
|
176
|
+
wartości z jednostką (`legendValue="value"`, `unit`).
|
|
177
|
+
- `kpt-avatar`: zdjęcie, które się nie wczyta, ustępuje inicjałom; nowy `decorative` ukrywa awatar
|
|
178
|
+
przed czytnikiem, gdy imię stoi obok.
|
|
179
|
+
- `kpt-avatar-group`: nowy `label` robi z rzędu nazwaną grupę, licznik „+N” jest czytany jako
|
|
180
|
+
„i 2 więcej” (nowy klucz `avatarGroup.more`) i pokazuje ukryte imiona w podpowiedzi. Nakładanie
|
|
181
|
+
idzie przez `margin-inline-start` (RTL), licznik przy `xl` ma 4rem jak awatar.
|
|
182
|
+
- `kpt-spinner`: pierścień jest `aria-hidden`, a etykieta trafia do osobnego, ukrytego regionu
|
|
183
|
+
`role="status"` klatkę po pojawieniu się — dzięki temu czytniki ją ogłaszają.
|
|
184
|
+
- `kpt-icon`: nowy `label` nadaje ikonie `role="img"` z nazwą; nieznana nazwa w trybie
|
|
185
|
+
deweloperskim daje jedno ostrzeżenie w konsoli.
|
|
186
|
+
- `kpt-empty`: nowy `headingLevel` robi z tytułu nagłówek strony.
|
|
187
|
+
|
|
188
|
+
- dcdb1b4: `kpt-image`, `kpt-carousel`, `kpt-galleria` i toasty działają z klawiaturą i czytnikiem ekranu.
|
|
189
|
+
|
|
190
|
+
- `kpt-image`: z `preview` miniatura jest przyciskiem („Pokaż w pełnym rozmiarze: …”), a podgląd
|
|
191
|
+
otwiera się na natywnym `<dialog>` przez `showModal()` — pułapka fokusu, `Escape`, bezwładna strona,
|
|
192
|
+
blokada przewijania i powrót fokusu na miniaturę. Podgląd leży w górnej warstwie, więc przodek
|
|
193
|
+
z `transform` go nie przesuwa. Tło idzie za `--kpt-color-overlay-scrim`, przycisk × za tokenami
|
|
194
|
+
powierzchni i właściwościami logicznymi. **Zmienia się DOM**: wyzwalacz to `<button>`, podgląd
|
|
195
|
+
to `<dialog class="kpt-image__overlay">` zamiast `<div>`.
|
|
196
|
+
- `kpt-carousel`: region z `aria-roledescription="karuzela"` i nowym inputem/propem `label`, slajdy
|
|
197
|
+
jako grupy „Slajd 2 z 4”, niewidoczne slajdy `inert`, zmiana ogłaszana uprzejmie. Aktywna kropka
|
|
198
|
+
ma `aria-current`, a pole kliknięcia kropki 24 px. Strzałki na końcach dostają `aria-disabled`
|
|
199
|
+
zamiast `disabled`, więc nie gubią fokusu. Przejście wyłącza się przy `prefers-reduced-motion`,
|
|
200
|
+
a w RTL tor i chevrony idą za kierunkiem czytania.
|
|
201
|
+
- `kpt-galleria`: miniatury mają nazwę z `alt` i `aria-current`, strzałki/`Home`/`End` przełączają
|
|
202
|
+
obraz (fokus idzie za miniaturą), zmiana jest ogłaszana („Obraz 2 z 4: …”), przyciski nawigacji
|
|
203
|
+
nie gubią fokusu i używają właściwości logicznych.
|
|
204
|
+
- Toasty: ogłaszanie przez dwa stałe regiony na żywo — uprzejmy i natychmiastowy dla `danger` —
|
|
205
|
+
zamiast zagnieżdżonych `aria-live` + `role="status"`. Wskaźnik albo fokus na stosie wstrzymuje
|
|
206
|
+
liczniki (nowe `pause()`/`resume()`), a wznowienie odlicza pozostały czas. Nowa opcja
|
|
207
|
+
`action: { label, run }` dodaje przycisk, np. „Cofnij”.
|
|
208
|
+
- i18n: nowe klucze `carousel.{label,slideOf,roleCarousel,roleSlide}`, `galleria.position`,
|
|
209
|
+
`image.{preview,previewOf}`, `toast.region`.
|
|
210
|
+
|
|
211
|
+
- a7525af: Menu, przycisk dzielony i speed dial dają się obsłużyć z klawiatury i poprawnie ogłaszają swój stan.
|
|
212
|
+
|
|
213
|
+
`kpt-menu` i `kpt-split-button` (w obu portach) działają według wzorca „menu button”. Strzałka
|
|
214
|
+
w dół lub w górę na wyzwalaczu otwiera menu z fokusem na pierwszej albo ostatniej pozycji,
|
|
215
|
+
w środku strzałki przechodzą między pozycjami z zawijaniem, `Home`/`End` skaczą na końce,
|
|
216
|
+
a `Escape` i `Tab` zamykają menu. Po zamknięciu i po wyborze fokus wraca na wyzwalacz — wcześniej
|
|
217
|
+
spadał na `<body>`, więc użytkownik klawiatury lądował na początku strony. Pozycje mają
|
|
218
|
+
`tabindex="-1"`, więc otwarte menu to jeden przystanek Tab. Wyzwalacz dostaje `aria-controls`
|
|
219
|
+
obok `aria-expanded`; rozwijacz przycisku dzielonego wcześniej nie miał ani jednego, ani drugiego.
|
|
220
|
+
|
|
221
|
+
`kpt-split-button` ma styl wariantów `outline` i `text` (tokeny `--kpt-button-outline-*`
|
|
222
|
+
i `--kpt-button-text-*`, jak w `kpt-button`). Wcześniej każdy wariant poza `tonal` wyglądał jak
|
|
223
|
+
`filled`, choć typ przyjmował cały `KptButtonVariant`. Typ wejścia to teraz
|
|
224
|
+
`KptSplitButtonVariant` (`'filled' | 'tonal' | 'outline' | 'text'`), eksportowany w obu portach.
|
|
225
|
+
|
|
226
|
+
`kpt-speed-dial`: zamknięte akcje były tylko przezroczyste, więc zostawały w kolejności Tab
|
|
227
|
+
i w drzewie dostępności — teraz dostają `visibility: hidden` po zgaśnięciu. Główny przycisk niesie
|
|
228
|
+
`aria-expanded` i `aria-controls`, a `Escape` zamyka wachlarz i zwraca fokus na przycisk.
|
|
229
|
+
Żeby to było możliwe w Angularze, `kpt-fab` ma nowe wejścia `ariaExpanded` i `ariaControls`
|
|
230
|
+
(trafiają na wewnętrzny `<button>`, wzorem `kpt-icon-button`).
|
|
231
|
+
|
|
232
|
+
Poprawione też `llms.txt`: domyślny wariant `kpt-icon-button` to `text`, a `kpt-fab` w wariancie
|
|
233
|
+
`tonal` używa `--kpt-color-muted` (nie `--kpt-color-primary-container`) i ma kształt
|
|
234
|
+
zaokrąglonego kwadratu (`--kpt-radius-lg`), nie koła.
|
|
235
|
+
|
|
236
|
+
- 0930165: `kpt-drawer`, `kpt-bottom-sheet`, `kpt-popover` i `kpt-context-menu` prowadzą fokus i reagują na `Escape`.
|
|
237
|
+
|
|
238
|
+
`kpt-drawer` i `kpt-bottom-sheet` (oba porty): ogłaszały `aria-modal="true"`, ale fokus zostawał
|
|
239
|
+
na stronie pod tłem. Otwarcie przenosi go teraz do panelu, `Tab` i `Shift+Tab` zawijają się
|
|
240
|
+
w środku, a zamknięcie oddaje fokus elementowi, który panel otworzył. Panel dostaje nazwę z `header`
|
|
241
|
+
(`aria-labelledby`). W `kpt-drawer` `Escape` respektuje `dismissible` — wcześniej zamykał też panel,
|
|
242
|
+
którego nie dało się zamknąć przyciskiem. Tło obu paneli idzie teraz za `--kpt-color-overlay-scrim`,
|
|
243
|
+
jak w `kpt-dialog`, zamiast stałych 45% czerni.
|
|
244
|
+
|
|
245
|
+
`kpt-popover` (oba porty): `placement` był zadeklarowany, ale pomijany — teraz wybiera preferowaną
|
|
246
|
+
stronę. Angular dostał model `[(open)]` (React miał już `open`/`onOpenChange`), więc dymek da się
|
|
247
|
+
zamknąć z kodu. Kontrolka wyzwalacza ogłasza `aria-haspopup="dialog"`, `aria-expanded` i `aria-controls`,
|
|
248
|
+
otwarcie przenosi fokus do pierwszego interaktywnego elementu dymka, a zamknięcie oddaje go
|
|
249
|
+
wyzwalaczowi.
|
|
250
|
+
|
|
251
|
+
`kpt-context-menu` (oba porty): menu nie miało klawiatury. Teraz fokus przechodzi na pierwszą
|
|
252
|
+
pozycję, strzałki, `Home` i `End` chodzą po pozycjach, `Escape` i `Tab` zamykają, a fokus wraca
|
|
253
|
+
tam, gdzie był. `Shift+F10` i klawisz menu kontekstowego otwierają menu przy skupionym elemencie,
|
|
254
|
+
a panel nie wychodzi poza okno.
|
|
255
|
+
|
|
256
|
+
- 0930165: `kpt-tabs`, `kpt-menubar` i `kpt-megamenu` obsługują strzałki według wzorców WAI-ARIA.
|
|
257
|
+
|
|
258
|
+
`kpt-tabs` (oba porty): każda zakładka była osobnym przystankiem Tab, a panel nie miał nazwy. Rząd
|
|
259
|
+
zakładek to teraz jeden przystanek (roving `tabindex`), strzałki w lewo/prawo i `Home`/`End`
|
|
260
|
+
przechodzą po zakładkach z pominięciem wyłączonych i od razu je aktywują, a panel dostał
|
|
261
|
+
`aria-labelledby` (z aktywnej zakładki), `aria-controls` i własny przystanek Tab.
|
|
262
|
+
|
|
263
|
+
`kpt-menubar` (oba porty): belka nie miała klawiatury. Teraz to jeden przystanek Tab, strzałki
|
|
264
|
+
w lewo/prawo chodzą po pozycjach górnych, strzałka w dół (i `Enter`/spacja) otwiera pod-menu
|
|
265
|
+
z fokusem na pierwszej pozycji, w górę — na ostatniej, a w otwartym pod-menu strzałki w bok
|
|
266
|
+
przechodzą do sąsiedniego. `Escape` oddaje fokus belce. Pozycje górne ogłaszają `aria-haspopup`,
|
|
267
|
+
`aria-expanded` i `aria-controls`. `role="menubar"` przeniósł się z `<nav>` na `<div>` — wcześniej
|
|
268
|
+
nadpisywał rolę punktu orientacyjnego. Nowy input/prop `ariaLabel` nazywa belkę.
|
|
269
|
+
|
|
270
|
+
`kpt-megamenu` (oba porty): ta sama klawiatura co w `kpt-menubar`. Odnośniki w panelu dostały
|
|
271
|
+
`role="menuitem"`, kolumny są grupami nazwanymi tytułem, a panel ma nazwę otwartej pozycji.
|
|
272
|
+
Pozycja górna bez kolumn działa jak akcja — emituje `selected` zamiast otwierać pusty panel —
|
|
273
|
+
i nie pokazuje strzałki. Nowy input/prop `ariaLabel`.
|
|
274
|
+
|
|
275
|
+
- dcdb1b4: Kontrast, kierunek pisania i porządki w sześciu komponentach.
|
|
276
|
+
|
|
277
|
+
- `kpt-scroll-top` (Angular): nasłuch przewijania jest zdejmowany przy zniszczeniu komponentu
|
|
278
|
+
(wcześniej zostawał podpięty do okna) i podpinany od nowa po zmianie `target`/`threshold`.
|
|
279
|
+
W obu portach: przycisk stoi w rogu po stronie końca (`inset-inline-end`), więc w RTL przenosi się
|
|
280
|
+
na lewo, a przy `prefers-reduced-motion` przewijanie to skok, a pojawienie się — bez przejścia.
|
|
281
|
+
- `kpt-skeleton`: baza `--kpt-color-muted` zamiast `--kpt-color-surface-variant`, który w jasnym
|
|
282
|
+
motywie był prawie niewidoczny na powierzchni. Pojedyncza linia (`lines=1`) ma pełną szerokość.
|
|
283
|
+
- `kpt-badge`: tekst wariantów `success`/`warning`/`info`/`danger` idzie za tokenami `*-contrast`,
|
|
284
|
+
tymi samymi co w `kpt-button` — wcześniej `--kpt-color-surface`, ciemny w ciemnym motywie.
|
|
285
|
+
- `kpt-spinner`: grubość pierścienia rośnie z rozmiarem (8%, co najmniej 2px).
|
|
286
|
+
- `kpt-galleria`: strzałki na tokenach powierzchni zamiast stałej czerni z bielą.
|
|
287
|
+
- `kpt-image`: maska po najechaniu na `--kpt-color-overlay-scrim`, lupa na krążku w kolorach
|
|
288
|
+
powierzchni — czytelna w obu motywach.
|
|
289
|
+
- llms: pełna lista 95 wbudowanych ikon, poprawny opis koloru spinnera (domyślnie primary,
|
|
290
|
+
`color: inherit` dla koloru otoczenia), domyślny wariant plakietki.
|
|
291
|
+
|
|
292
|
+
- Updated dependencies [0930165]
|
|
293
|
+
- Updated dependencies [094a654]
|
|
294
|
+
- Updated dependencies [094a654]
|
|
295
|
+
- Updated dependencies [094a654]
|
|
296
|
+
- Updated dependencies [094a654]
|
|
297
|
+
- Updated dependencies [dcdb1b4]
|
|
298
|
+
- Updated dependencies [dcdb1b4]
|
|
299
|
+
- @konce-pt/i18n@0.10.0
|
|
300
|
+
- @konce-pt/datetime@0.10.0
|
|
301
|
+
- @konce-pt/backdrop@0.10.0
|
|
302
|
+
- @konce-pt/chart@0.10.0
|
|
303
|
+
- @konce-pt/chat@0.10.0
|
|
304
|
+
- @konce-pt/icons@0.10.0
|
|
305
|
+
- @konce-pt/map@0.10.0
|
|
306
|
+
- @konce-pt/mention@0.10.0
|
|
307
|
+
- @konce-pt/roadmap@0.10.0
|
|
308
|
+
- @konce-pt/table@0.10.0
|
|
309
|
+
|
|
310
|
+
## 0.9.1
|
|
311
|
+
|
|
312
|
+
### Patch Changes
|
|
313
|
+
|
|
314
|
+
- f6999a7: `KptBackdrop` nie wywraca już renderowania po stronie serwera.
|
|
315
|
+
|
|
316
|
+
Komponent buduje się w `afterNextRender`, więc na serwerze nie powstawało nic — ale niszczenie
|
|
317
|
+
wykonuje się i tam, bo Angular tworzy komponent, zbiera z niego HTML i od razu go niszczy.
|
|
318
|
+
Sprzątanie zdejmowało nasłuch `visibilitychange` bezwarunkowo, a `document` nie istnieje wtedy
|
|
319
|
+
jako zmienna globalna: platforma serwerowa podaje go przez wstrzykiwanie zależności.
|
|
320
|
+
|
|
321
|
+
Skutek był mylący: prerendering przewracał się `ReferenceError: document is not defined` już
|
|
322
|
+
**po** wyprodukowaniu strony, więc objaw wskazywał na generator, a nie na komponent. Każda
|
|
323
|
+
aplikacja renderowana na serwerze i używająca `kpt-backdrop` trafiała na to samo.
|
|
324
|
+
|
|
325
|
+
Drugą rzeczą z tej samej rodziny jest `getContext('2d')`. Wbrew nazwie `afterNextRender`
|
|
326
|
+
wykonuje się przy prerenderingu, a tamtejsza atrapa DOM canvasu nie implementuje i **rzuca**,
|
|
327
|
+
zamiast zwrócić `null` — więc stojąca tuż niżej bramka na brak kontekstu sama nie wystarczała.
|
|
328
|
+
Wyjątek lądował w logu jako gołe „NotYetImplemented" i nie wskazywał na nic. Płótno, na którym
|
|
329
|
+
nie da się rysować, jest teraz traktowane jak brak płótna: nie ma czego budować.
|
|
330
|
+
- @konce-pt/backdrop@0.9.1
|
|
331
|
+
- @konce-pt/chart@0.9.1
|
|
332
|
+
- @konce-pt/chat@0.9.1
|
|
333
|
+
- @konce-pt/datetime@0.9.1
|
|
334
|
+
- @konce-pt/i18n@0.9.1
|
|
335
|
+
- @konce-pt/icons@0.9.1
|
|
336
|
+
- @konce-pt/map@0.9.1
|
|
337
|
+
- @konce-pt/mention@0.9.1
|
|
338
|
+
- @konce-pt/roadmap@0.9.1
|
|
339
|
+
- @konce-pt/table@0.9.1
|
|
340
|
+
|
|
3
341
|
## 0.9.0
|
|
4
342
|
|
|
5
343
|
### Minor Changes
|