@konce-pt/angular 0.3.0 → 0.4.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/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@konce-pt/angular",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Open-source Angular 22 component library on Signals & Signal Forms — 70+ components, rich data table, zoneless, fully tokenized. Selektory kpt-*, klasy Kpt*.",
5
5
  "license": "MIT",
6
6
  "author": "konce.pt",
@@ -11,6 +11,10 @@ Import: `import { KptConfirmService, KptConfirmContainer } from '@konce-pt/angul
11
11
  - `message`: string (wymagane); `header?`: string
12
12
  - `acceptLabel?`/`rejectLabel?`: string; `variant?`: 'filled' | 'danger'; `icon?`: string
13
13
 
14
+ ## i18n
15
+ Domyślne etykiety (nagłówek, Potwierdź, Anuluj) z i18n (namespace `confirm`); pola opcji mają priorytet.
16
+ Domyślnie EN; konfiguracja przez `provideKptI18n` — patrz `i18n/llms.txt`.
17
+
14
18
  ## Przykład
15
19
  const ok = await this.confirm.confirm({
16
20
  message: 'Usunąć rekord?', variant: 'danger', acceptLabel: 'Usuń', icon: 'alert-triangle',
@@ -32,7 +32,7 @@ Filtry `select`/`dateRange` wymagają `import '@angular/cdk/overlay-prebuilt.css
32
32
  - `pageSizeOptions`: number[] (domyślnie [5,10,20,50])
33
33
  - `selectable`: 'none' | 'single' | 'multiple'
34
34
  - `loading`: boolean — wiersz „Ładowanie…"
35
- - `emptyMessage`: string (domyślnie „Brak danych")
35
+ - `emptyMessage`: string — bez wartości używa i18n (`dataTable.empty`); input ma priorytet
36
36
  - `rowKey`: string | null — pole identyfikujące wiersz (dla zaznaczania); bez niego porównanie po referencji
37
37
  - `reorderable`: boolean — przestawianie kolumn przeciągnij-i-upuść (natywny HTML5 DnD); kolumny `frozen` są wyłączone z przenoszenia (pozostają wiodące) i nie można upuszczać innych kolumn przed nie
38
38
  - `exportable`: boolean — przycisk „Eksport CSV" w toolbarze
@@ -82,6 +82,11 @@ Niezależne od `selectable` (można łączyć z zaznaczaniem). Nieaktywne przy `
82
82
  - Zaznaczanie 'multiple': nagłówkowy checkbox zaznacza/odznacza bieżącą stronę.
83
83
  - Sticky header, stany pusty/ładowanie, wyrównanie i szerokości per kolumna.
84
84
 
85
+ ## i18n
86
+ Etykiety toolbaru/stanów/aria (Szukaj, Eksport CSV, Ładowanie, Brak danych, zaznaczanie, filtry kolumn:
87
+ Filtr/Filtr min/Filtr max z `{column}`, Wszystkie, min, max, Zakres dat) pochodzą z i18n (namespace `dataTable`).
88
+ Domyślnie EN; konfiguracja przez `provideKptI18n` — patrz `i18n/llms.txt`.
89
+
85
90
  ## Tokeny
86
91
  `--kpt-table-{bg,fg,border,radius,header-bg,header-fg,row-hover,row-selected,cell-padding}`.
87
92
  Rozwijany wiersz: `--kpt-table-detail-bg` (fallback: surface-variant → row-hover).
@@ -11,7 +11,7 @@ Wymaga `import '@angular/cdk/overlay-prebuilt.css';`
11
11
  - `mode`: 'date' | 'datetime' | 'time' (domyślnie 'date')
12
12
  - `hourFormat`: 12 | 24 (domyślnie 24) — tarcza z AM/PM lub 24h; czas zawsze 24h w wartości
13
13
  - `minuteStep`: number (domyślnie 1) — snap minut na tarczy
14
- - `placeholder`: string (domyślnie 'Wybierz zakres')
14
+ - `placeholder`: string — bez wartości używa i18n (`dateRange.placeholder`); input ma priorytet
15
15
  - `displayFormat`: 'pl' | 'iso' (domyślnie 'pl') — format wyświetlania start/end
16
16
  - `disabled`/`invalid`/`touched`: boolean; `touch`: output
17
17
 
@@ -25,5 +25,9 @@ Tryby datetime/time: przełącznik „Od / Koniec" + tarcza zegara, zatwierdzeni
25
25
 
26
26
  period = signal<KptDateRangeValue>({ start: '', end: '' });
27
27
 
28
+ ## i18n
29
+ Nazwy dni/miesięcy z `Intl` wg locale; etykiety („Od/Koniec", nawigacja, „Gotowe", placeholder) z i18n
30
+ (namespace `dateRange` + `datepicker`/`common`). Domyślnie EN — patrz `i18n/llms.txt`.
31
+
28
32
  ## Tokeny
29
33
  Pole `--kpt-form-field-*`; kalendarz `--kpt-color-surface-raised`, zakres `--kpt-color-primary`.
@@ -25,5 +25,11 @@ Import: `import { KptDatepicker } from '@konce-pt/angular';`
25
25
  - `disabled`/`invalid`/`touched`: boolean; output `touch`.
26
26
  - Panel: nawigacja (‹ ›) miesięcy/lat/dekad wg trybu; tarcza zegara z „Gotowe"; przycisk czyszczenia (×).
27
27
 
28
+ ## i18n
29
+ Nazwy dni tygodnia i miesięcy są wyliczane z `Intl` wg aktywnego locale i18n (nie ze słownika).
30
+ Etykiety nawigacji/aria i „Gotowe" z i18n (namespace `datepicker` + `common`). Domyślnie EN;
31
+ konfiguracja przez `provideKptI18n` — patrz `i18n/llms.txt`. Uwaga: `displayFormat` ('pl'/'iso')
32
+ steruje wyłącznie formatem daty i jest niezależny od języka etykiet.
33
+
28
34
  ## Tokeny
29
35
  `--kpt-form-field-{bg,text,border,border-focus,border-error,radius}`.
@@ -0,0 +1,35 @@
1
+ # i18n (provideKptI18n / KptI18n)
2
+
3
+ Tłumaczenia etykiet komponentów. Języki bazowe: EN (domyślny), PL. Oparte o sygnały (zoneless-friendly), bez zależności zewnętrznych.
4
+ Import: `import { provideKptI18n, KptI18n } from '@konce-pt/angular';`
5
+
6
+ ## Konfiguracja (provider)
7
+ - `provideKptI18n({ locale?, messages? }): EnvironmentProviders` — w `bootstrapApplication`.
8
+ - `locale`: 'en' | 'pl' | dowolny string (domyślnie 'en').
9
+ - `messages`: `Record<locale, DeepPartial<KptMessages>>` — rejestruje nowy język lub nadpisuje istniejący (deep-merge, brakujące klucze → EN).
10
+
11
+ ## Serwis KptI18n (providedIn: 'root')
12
+ - `locale: Signal<KptLocale>` — bieżący język.
13
+ - `setLocale(locale)` — zmiana w runtime (reaktywna dla wszystkich komponentów).
14
+ - `registerMessages(locale, patch)` — dodaje/nadpisuje słownik w runtime.
15
+ - `t(key, params?)` — tłumaczy klucz w notacji kropkowej (`'paginator.range'`) z interpolacją `{name}`.
16
+
17
+ ## Dodanie własnego języka (jeden plik JSON)
18
+ import de from './i18n/de.json'; // kształt = interfejs KptMessages
19
+ provideKptI18n({ locale: 'de', messages: { de } });
20
+ // runtime: inject(KptI18n).registerMessages('de', de); inject(KptI18n).setLocale('de');
21
+
22
+ ## Przełączanie języka w runtime
23
+ const i18n = inject(KptI18n);
24
+ i18n.setLocale('pl');
25
+
26
+ ## Kontrakt kluczy (KptMessages)
27
+ Namespace'y: `common` (close/remove/previous/next/clear/done/all), `paginator` (rowsPerPage/range/prevPage/nextPage),
28
+ `select`, `listbox`, `dataView`, `dataTable`, `confirm`, `fileUpload`, `chipsInput`, `dateRange`, `datepicker`,
29
+ `pickList`, `orderList`, `inputNumber`, `password`, `spinner`, `speedDial`, `scrollTop`, `splitButton`, `panel`,
30
+ `breadcrumb`, `richText`. Interpolacje: `paginator.range` ({start},{end},{total}), `dataTable.filter*` ({column}),
31
+ `richText.styleHeading` ({level}). Nazwy dni/miesięcy w kalendarzach są wyliczane z `Intl` wg locale (nie ze słownika).
32
+
33
+ ## Uwaga
34
+ Pojedyncze etykiety można też nadpisać per-komponent przez odpowiedni `input()` (np. `emptyMessage`, `acceptLabel`) —
35
+ input ma priorytet nad słownikiem i18n.
@@ -16,3 +16,7 @@ Paginator sterowany sygnałami. Import: `import { KptPaginator } from '@konce-pt
16
16
 
17
17
  Pokazuje „X–Y z Z", wybór rozmiaru strony oraz przyciski poprzednia/następna.
18
18
  Przy zmianie długości/rozmiaru samoczynnie koryguje `pageIndex` (effect).
19
+
20
+ ## i18n
21
+ Etykiety („Wierszy:", separator zakresu, aria stron) pochodzą z i18n (namespace `paginator`).
22
+ Domyślny język EN; przełączenie/nadpisanie przez `provideKptI18n` — patrz `i18n/llms.txt`.
@@ -30,6 +30,11 @@ Import: `import { KptRichText, KptRichTool, KptRichToolbar } from '@konce-pt/ang
30
30
  <kpt-rich-text [formField]="f.body" /> <!-- pełny pasek -->
31
31
  <kpt-rich-text [(value)]="v" [toolbar]="[['bold','italic'],['ul','ol'],['link']]" />
32
32
 
33
+ ## i18n
34
+ Wszystkie etykiety (aria narzędzi, style „Normalny/Nagłówek N", prompt linku, menu kontekstowe tabeli,
35
+ popover obramowania, „Własny…") pochodzą z i18n (namespace `richText`, w tym `richText.menu.*`,
36
+ `richText.border.*`). Domyślnie EN — patrz `i18n/llms.txt`.
37
+
33
38
  ## Uwagi
34
39
  Formatowanie przez document.execCommand; aktywne narzędzia podświetlane (queryCommandState).
35
40
  Wklejanie (natywne i przyciskami) jest sanityzowane (allowlista tagów/stylów; usuwa script/on*/javascript:).
@@ -18,5 +18,9 @@ Wymaga stylów overlay CDK w aplikacji: `import '@angular/cdk/overlay-prebuilt.c
18
18
  - `disabled`/`invalid`/`touched`: boolean; output `touch`.
19
19
  - Klawiatura: Enter/↓ otwiera, ↑/↓ nawigacja, Enter wybiera, Esc zamyka.
20
20
 
21
+ ## i18n
22
+ Etykiety „Szukaj…", „Brak wyników" i aria usuwania chipa z i18n (namespace `select`).
23
+ Domyślnie EN; konfiguracja przez `provideKptI18n` — patrz `i18n/llms.txt`.
24
+
21
25
  ## Tokeny
22
26
  `--kpt-form-field-{bg,text,border,border-hover,border-focus,border-error,radius}`.