@konce-pt/angular 0.1.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/LICENSE +21 -0
- package/dist/fesm2022/konce-pt-angular-icons.mjs +5166 -0
- package/dist/fesm2022/konce-pt-angular-icons.mjs.map +1 -0
- package/dist/fesm2022/konce-pt-angular.mjs +5863 -0
- package/dist/fesm2022/konce-pt-angular.mjs.map +1 -0
- package/dist/package.json +47 -0
- package/dist/src/lib/accordion/llms.txt +18 -0
- package/dist/src/lib/alert/llms.txt +19 -0
- package/dist/src/lib/app-shell/llms.txt +29 -0
- package/dist/src/lib/autocomplete/llms.txt +16 -0
- package/dist/src/lib/avatar/llms.txt +15 -0
- package/dist/src/lib/avatar-group/llms.txt +15 -0
- package/dist/src/lib/badge/llms.txt +16 -0
- package/dist/src/lib/bottom-sheet/llms.txt +16 -0
- package/dist/src/lib/breadcrumb/llms.txt +12 -0
- package/dist/src/lib/button/llms.txt +35 -0
- package/dist/src/lib/button-group/llms.txt +14 -0
- package/dist/src/lib/card/llms.txt +24 -0
- package/dist/src/lib/carousel/llms.txt +24 -0
- package/dist/src/lib/checkbox/llms.txt +15 -0
- package/dist/src/lib/chip/llms.txt +14 -0
- package/dist/src/lib/chips-input/llms.txt +18 -0
- package/dist/src/lib/color-picker/llms.txt +18 -0
- package/dist/src/lib/confirm/llms.txt +21 -0
- package/dist/src/lib/context-menu/llms.txt +17 -0
- package/dist/src/lib/data-table/llms.txt +62 -0
- package/dist/src/lib/data-view/llms.txt +18 -0
- package/dist/src/lib/date-range/llms.txt +24 -0
- package/dist/src/lib/datepicker/llms.txt +17 -0
- package/dist/src/lib/dialog/llms.txt +27 -0
- package/dist/src/lib/divider/llms.txt +19 -0
- package/dist/src/lib/drawer/llms.txt +17 -0
- package/dist/src/lib/empty/llms.txt +17 -0
- package/dist/src/lib/fab/llms.txt +18 -0
- package/dist/src/lib/fieldset/llms.txt +15 -0
- package/dist/src/lib/file-upload/llms.txt +23 -0
- package/dist/src/lib/form-field/llms.txt +37 -0
- package/dist/src/lib/galleria/llms.txt +15 -0
- package/dist/src/lib/icon/llms.txt +34 -0
- package/dist/src/lib/icon-button/llms.txt +15 -0
- package/dist/src/lib/image/llms.txt +15 -0
- package/dist/src/lib/input/llms.txt +38 -0
- package/dist/src/lib/input-mask/llms.txt +20 -0
- package/dist/src/lib/input-number/llms.txt +17 -0
- package/dist/src/lib/input-otp/llms.txt +19 -0
- package/dist/src/lib/knob/llms.txt +20 -0
- package/dist/src/lib/listbox/llms.txt +17 -0
- package/dist/src/lib/megamenu/llms.txt +21 -0
- package/dist/src/lib/menu/llms.txt +17 -0
- package/dist/src/lib/menubar/llms.txt +19 -0
- package/dist/src/lib/meter-group/llms.txt +15 -0
- package/dist/src/lib/order-list/llms.txt +17 -0
- package/dist/src/lib/paginator/llms.txt +18 -0
- package/dist/src/lib/panel/llms.txt +18 -0
- package/dist/src/lib/password/llms.txt +20 -0
- package/dist/src/lib/pick-list/llms.txt +17 -0
- package/dist/src/lib/popover/llms.txt +17 -0
- package/dist/src/lib/progress/llms.txt +16 -0
- package/dist/src/lib/radio-group/llms.txt +15 -0
- package/dist/src/lib/rating/llms.txt +14 -0
- package/dist/src/lib/rich-text/llms.txt +16 -0
- package/dist/src/lib/scroll-top/llms.txt +15 -0
- package/dist/src/lib/select/llms.txt +22 -0
- package/dist/src/lib/sidenav/llms.txt +20 -0
- package/dist/src/lib/skeleton/llms.txt +14 -0
- package/dist/src/lib/slider/llms.txt +13 -0
- package/dist/src/lib/speed-dial/llms.txt +16 -0
- package/dist/src/lib/spinner/llms.txt +10 -0
- package/dist/src/lib/split-button/llms.txt +26 -0
- package/dist/src/lib/splitter/llms.txt +21 -0
- package/dist/src/lib/stepper/llms.txt +19 -0
- package/dist/src/lib/switch/llms.txt +13 -0
- package/dist/src/lib/tabs/llms.txt +19 -0
- package/dist/src/lib/textarea/llms.txt +14 -0
- package/dist/src/lib/timeline/llms.txt +22 -0
- package/dist/src/lib/toast/llms.txt +22 -0
- package/dist/src/lib/toolbar/llms.txt +23 -0
- package/dist/src/lib/tooltip/llms.txt +19 -0
- package/dist/src/lib/tree/llms.txt +17 -0
- package/dist/types/konce-pt-angular-icons.d.ts +18 -0
- package/dist/types/konce-pt-angular.d.ts +1858 -0
- package/package.json +61 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# KptFab (kpt-fab)
|
|
2
|
+
|
|
3
|
+
Floating Action Button — okrągły, wyniesiony przycisk akcji. Import: `import { KptFab } from '@konce-pt/angular';`
|
|
4
|
+
|
|
5
|
+
## Wejścia
|
|
6
|
+
- `variant`: 'filled' | 'tonal' (domyślnie 'filled')
|
|
7
|
+
- `size`: 'md' | 'mini' (domyślnie 'md')
|
|
8
|
+
- `extended`: boolean (pigułka z tekstem)
|
|
9
|
+
- `disabled`: boolean; `type`: 'button' | 'submit' | 'reset'
|
|
10
|
+
- `ariaLabel`: string (wymagane dla wariantu okrągłego, bez tekstu)
|
|
11
|
+
|
|
12
|
+
## Przykład
|
|
13
|
+
<kpt-fab ariaLabel="Dodaj"><kpt-icon name="plus" /></kpt-fab>
|
|
14
|
+
<kpt-fab extended><kpt-icon name="plus" /> Nowy</kpt-fab>
|
|
15
|
+
<kpt-fab variant="tonal" size="mini" ariaLabel="Edytuj"><kpt-icon name="copy" /></kpt-fab>
|
|
16
|
+
|
|
17
|
+
## Tokeny
|
|
18
|
+
Tło `--kpt-color-primary` / `--kpt-color-primary-container` (tonal); cień `--kpt-elevation-3`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# KptFieldset (kpt-fieldset)
|
|
2
|
+
|
|
3
|
+
Grupa pól z legendą (`<fieldset>`+`<legend>`), opcjonalnie zwijana.
|
|
4
|
+
Import: `import { KptFieldset } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia / model
|
|
7
|
+
- `legend`: string
|
|
8
|
+
- `toggleable`: boolean; `collapsed`: model<boolean>
|
|
9
|
+
- Treść: `<ng-content>`.
|
|
10
|
+
|
|
11
|
+
## Przykład
|
|
12
|
+
<kpt-fieldset legend="Dane osobowe" toggleable>…</kpt-fieldset>
|
|
13
|
+
|
|
14
|
+
## Tokeny
|
|
15
|
+
Ramka `--kpt-color-border`; radius `--kpt-radius-md`.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# KptFileUpload (kpt-file-upload)
|
|
2
|
+
|
|
3
|
+
Wgrywanie plików (drag-drop + wybór) na Signal Forms. Wartość = File[].
|
|
4
|
+
Import: `import { KptFileUpload } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia / model
|
|
7
|
+
- `value`: model<File[]> (lub `formField`)
|
|
8
|
+
- `accept`: string (np. 'image/*')
|
|
9
|
+
- `multiple`: boolean
|
|
10
|
+
- `disabled`/`invalid`/`touched`: boolean; `touch`: output
|
|
11
|
+
|
|
12
|
+
## Przykład
|
|
13
|
+
<kpt-file-upload [formField]="f.files" accept="image/*" multiple />
|
|
14
|
+
<kpt-file-upload [(value)]="files" />
|
|
15
|
+
|
|
16
|
+
files = signal<File[]>([]);
|
|
17
|
+
|
|
18
|
+
## Zachowanie
|
|
19
|
+
Strefa reaguje na klik i na przeciągnięcie plików. Przy `multiple=false` przechowuje tylko pierwszy plik.
|
|
20
|
+
Lista plików pokazuje nazwę, rozmiar i przycisk usuwania.
|
|
21
|
+
|
|
22
|
+
## Tokeny
|
|
23
|
+
Strefa `--kpt-form-field-border` (przerywana), stan dragover `--kpt-color-primary`.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# KptFormField (kpt-form-field)
|
|
2
|
+
|
|
3
|
+
Wrapper pola formularza: etykieta, podpowiedź i komunikat błędu wokół dowolnej kontrolki
|
|
4
|
+
(np. `kpt-input`). Prezentacyjny — stan błędu przekazuje się przez `error`.
|
|
5
|
+
Import: `import { KptFormField } from '@konce-pt/angular';`
|
|
6
|
+
|
|
7
|
+
## Selektor
|
|
8
|
+
`kpt-form-field`
|
|
9
|
+
|
|
10
|
+
## Wejścia (input signals)
|
|
11
|
+
- `label`: string — tekst etykiety
|
|
12
|
+
- `hint`: string — podpowiedź (ukrywana, gdy jest błąd)
|
|
13
|
+
- `error`: string | null — komunikat błędu; gdy niepusty, pole jest oznaczone jako nieprawidłowe
|
|
14
|
+
- `required`: boolean — gwiazdka przy etykiecie
|
|
15
|
+
- `controlId`: string — id kontrolki dla powiązania `label[for]`
|
|
16
|
+
|
|
17
|
+
## Projekcja
|
|
18
|
+
Kontrolkę umieszcza się w treści (ng-content):
|
|
19
|
+
|
|
20
|
+
<kpt-form-field label="E-mail" [error]="emailError()" hint="Adres firmowy" required controlId="f-email">
|
|
21
|
+
<kpt-input [formField]="loginForm.email" type="email" id="f-email" />
|
|
22
|
+
</kpt-form-field>
|
|
23
|
+
|
|
24
|
+
## Integracja z Signal Forms
|
|
25
|
+
`error` zwykle pochodzi z pola formularza, np.:
|
|
26
|
+
|
|
27
|
+
emailError = computed(() => {
|
|
28
|
+
const s = loginForm.email();
|
|
29
|
+
return s.touched() && s.invalid() ? s.errors()[0]?.message ?? null : null;
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
## Tokeny
|
|
33
|
+
`--kpt-form-field-label`, `--kpt-form-field-hint`, `--kpt-form-field-error`, `--kpt-color-danger`.
|
|
34
|
+
|
|
35
|
+
## Dostępność
|
|
36
|
+
- Komunikat błędu ma `role="alert"`.
|
|
37
|
+
- Powiąż `controlId` z `id` kontrolki, aby etykieta była klikalna (`label[for]`).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# KptGalleria (kpt-galleria)
|
|
2
|
+
|
|
3
|
+
Duży podgląd obrazu z paskiem miniatur i nawigacją.
|
|
4
|
+
Import: `import { KptGalleria } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia / model
|
|
7
|
+
- `items`: KptGalleriaItem[] — { src, thumbnail?, alt? }
|
|
8
|
+
- `activeIndex`: model<number> (dwukierunkowe)
|
|
9
|
+
- `showThumbnails`: boolean (domyślnie true)
|
|
10
|
+
|
|
11
|
+
## Przykład
|
|
12
|
+
<kpt-galleria [items]="photos" [(activeIndex)]="idx" />
|
|
13
|
+
|
|
14
|
+
## Tokeny
|
|
15
|
+
Scena `--kpt-color-muted`; aktywna miniatura `--kpt-color-primary`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# KptIcon (kpt-icon)
|
|
2
|
+
|
|
3
|
+
Ikona inline SVG (zestaw Tabler Icons — MIT). Rozmiar dziedziczy z `font-size` (1em),
|
|
4
|
+
kolor z `currentColor`. Import: `import { KptIcon } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Selektor
|
|
7
|
+
`kpt-icon`
|
|
8
|
+
|
|
9
|
+
## Wejścia
|
|
10
|
+
- `name`: KptIconName (wymagane) — nazwa ikony z rejestru
|
|
11
|
+
- `size`: string (opcjonalnie, np. '1.25rem') — inaczej dziedziczy z font-size
|
|
12
|
+
|
|
13
|
+
## Dostępne nazwy (wbudowane)
|
|
14
|
+
menu, x, chevron-up, chevron-down, chevron-left, chevron-right, check, search,
|
|
15
|
+
grip-vertical, info, alert-triangle, circle-check, circle-x, calendar, copy, link, code.
|
|
16
|
+
|
|
17
|
+
## Pełny zestaw (5130 ikon Tabler)
|
|
18
|
+
Opcjonalny entry point `@konce-pt/angular/icons` (pobierany tylko przy imporcie):
|
|
19
|
+
|
|
20
|
+
import { provideKptTablerIcons } from '@konce-pt/angular/icons';
|
|
21
|
+
bootstrapApplication(App, { providers: [provideKptTablerIcons()] });
|
|
22
|
+
// potem: <kpt-icon name="rocket" />, <kpt-icon name="arrow-left" /> …
|
|
23
|
+
|
|
24
|
+
Można też rejestrować własne przez `KptIconRegistry.register({ nazwa: 'inner svg' })`.
|
|
25
|
+
`kpt-icon` reaguje na późną rejestrację (sygnał `version`).
|
|
26
|
+
|
|
27
|
+
## Przykład
|
|
28
|
+
<kpt-icon name="check" />
|
|
29
|
+
<kpt-icon name="chevron-down" size="1.25rem" />
|
|
30
|
+
<button><kpt-icon name="x" /></button>
|
|
31
|
+
|
|
32
|
+
## Licencja ikon
|
|
33
|
+
Tabler Icons (MIT). Ikony wyodrębnione inline do `icons.ts`. Zob. ICONS-LICENSE w root.
|
|
34
|
+
Dodanie ikony: dołóż wpis do `KPT_ICONS`/`KptIconName` (siatka 24×24, stroke 2px).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# KptIconButton (kpt-icon-button)
|
|
2
|
+
|
|
3
|
+
Przycisk ikonowy (tylko ikona). Wymaga `ariaLabel`.
|
|
4
|
+
Import: `import { KptIconButton } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia
|
|
7
|
+
- `variant`: 'filled'|'tonal'|'outline'|'text'|'danger'; `size`: 'sm'|'md'|'lg'; `shape`: 'round'|'square'
|
|
8
|
+
- `type`, `disabled`, `loading`, `ariaLabel` (wymagane)
|
|
9
|
+
|
|
10
|
+
## Przykłady
|
|
11
|
+
<kpt-icon-button ariaLabel="Ustawienia"><kpt-icon name="menu" /></kpt-icon-button>
|
|
12
|
+
<kpt-icon-button variant="danger" shape="square" ariaLabel="Usuń"><kpt-icon name="x" /></kpt-icon-button>
|
|
13
|
+
|
|
14
|
+
## Tokeny
|
|
15
|
+
Współdzieli z kpt-button (`--kpt-color-primary`, `--kpt-color-muted`, …).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# KptImage (kpt-image)
|
|
2
|
+
|
|
3
|
+
Obraz z opcjonalnym podglądem pełnoekranowym (zoom).
|
|
4
|
+
Import: `import { KptImage } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia
|
|
7
|
+
- `src`: string (wymagane); `alt`: string
|
|
8
|
+
- `width`: string | null (np. '240px')
|
|
9
|
+
- `preview`: boolean — klik otwiera overlay z powiększeniem
|
|
10
|
+
|
|
11
|
+
## Przykład
|
|
12
|
+
<kpt-image src="/foto.jpg" alt="Zdjęcie" preview width="240px" />
|
|
13
|
+
|
|
14
|
+
## Tokeny
|
|
15
|
+
Maska podglądu półprzezroczysta; ikona `zoom-in`; overlay ciemny.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# KptInput (kpt-input)
|
|
2
|
+
|
|
3
|
+
Pole tekstowe Koncept UI zintegrowane z Angular Signal Forms. Implementuje
|
|
4
|
+
`FormValueControl<string>` — wiąż dyrektywą `FormField` (`@angular/forms/signals`).
|
|
5
|
+
Bez `ControlValueAccessor`. Import: `import { KptInput } from '@konce-pt/angular';`
|
|
6
|
+
|
|
7
|
+
## Selektor
|
|
8
|
+
`kpt-input`
|
|
9
|
+
|
|
10
|
+
## Użycie z Signal Forms
|
|
11
|
+
|
|
12
|
+
import { form, FormField, required, email } from '@angular/forms/signals';
|
|
13
|
+
|
|
14
|
+
model = signal({ email: '' });
|
|
15
|
+
loginForm = form(this.model, (p) => {
|
|
16
|
+
required(p.email, { message: 'E-mail jest wymagany' });
|
|
17
|
+
email(p.email, { message: 'Podaj poprawny adres e-mail' });
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// szablon (imports: [KptInput, FormField])
|
|
21
|
+
<kpt-input [formField]="loginForm.email" type="email" id="f-email" />
|
|
22
|
+
|
|
23
|
+
## Wejścia prezentacyjne
|
|
24
|
+
- `type`: 'text'|'email'|'password'|'number'|'search'|'tel'|'url' (domyślnie 'text')
|
|
25
|
+
- `placeholder`: string
|
|
26
|
+
- `id`: string — trafia na wewnętrzny `<input>` (do `label[for]`); host go nie nosi
|
|
27
|
+
- `ariaLabel`: string | null
|
|
28
|
+
|
|
29
|
+
## Stan wiązany automatycznie przez FormField
|
|
30
|
+
`value` (model, wymagane), `disabled`, `readonly`, `required`, `invalid`, `errors`,
|
|
31
|
+
`touched`; output `touch` (emitowany na blur). Nie ustawiaj ich ręcznie przy użyciu z formularzem.
|
|
32
|
+
|
|
33
|
+
## Tokeny
|
|
34
|
+
`--kpt-form-field-{bg,text,placeholder,border,border-hover,border-focus,border-error,radius}`.
|
|
35
|
+
|
|
36
|
+
## Dostępność
|
|
37
|
+
- `aria-invalid="true"` przy nieprawidłowym stanie; `blur` oznacza pole jako dotknięte.
|
|
38
|
+
- Komunikaty błędów wyświetla zwykle `kpt-form-field` (`role="alert"`).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# KptInputMask (kpt-input-mask)
|
|
2
|
+
|
|
3
|
+
Pole z maską znakową na Signal Forms. Wartość = string.
|
|
4
|
+
Import: `import { KptInputMask } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Tokeny maski
|
|
7
|
+
- `9` = cyfra, `a` = litera, `*` = alfanumeryczny. Pozostałe znaki maski to literały (spacje, nawiasy, myślniki).
|
|
8
|
+
|
|
9
|
+
## Wejścia / model
|
|
10
|
+
- `value`: model<string> (lub `formField`)
|
|
11
|
+
- `mask`: string (np. `(999) 999-99-99`)
|
|
12
|
+
- `placeholder`: string (domyślnie = maska)
|
|
13
|
+
- `disabled`/`invalid`/`touched`: boolean; `touch`: output
|
|
14
|
+
|
|
15
|
+
## Przykład
|
|
16
|
+
<kpt-input-mask [formField]="f.phone" mask="(999) 999-99-99" />
|
|
17
|
+
<kpt-input-mask [(value)]="zip" mask="99-999" />
|
|
18
|
+
|
|
19
|
+
## Tokeny
|
|
20
|
+
Pole `--kpt-form-field-*`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# KptInputNumber (kpt-input-number)
|
|
2
|
+
|
|
3
|
+
Pole liczbowe ze strzałkami krokowania na Signal Forms. Wartość = number | null.
|
|
4
|
+
Import: `import { KptInputNumber } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia / model
|
|
7
|
+
- `value`: model<number | null> (lub `formField`)
|
|
8
|
+
- `min`/`max`: number | undefined; `step`: number (domyślnie 1)
|
|
9
|
+
- `suffix`: string (np. ' %'); `placeholder`: string
|
|
10
|
+
- `disabled`/`invalid`/`touched`: boolean; `touch`: output
|
|
11
|
+
|
|
12
|
+
## Przykład
|
|
13
|
+
<kpt-input-number [formField]="f.qty" [min]="0" [max]="99" [step]="1" />
|
|
14
|
+
<kpt-input-number [(value)]="qty" suffix=" szt." />
|
|
15
|
+
|
|
16
|
+
## Tokeny
|
|
17
|
+
Pole `--kpt-form-field-*`; przyciski `--kpt-color-muted`.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# KptInputOtp (kpt-input-otp)
|
|
2
|
+
|
|
3
|
+
Pole kodu jednorazowego (OTP/PIN) — N osobnych pól z autofocusem i wklejaniem. Signal Forms.
|
|
4
|
+
Wartość = string (sklejone znaki). Import: `import { KptInputOtp } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia / model
|
|
7
|
+
- `value`: model<string> (lub `formField`)
|
|
8
|
+
- `length`: number (domyślnie 6)
|
|
9
|
+
- `integerOnly`: boolean — tylko cyfry
|
|
10
|
+
- `disabled`/`invalid`/`touched`: boolean; `touch`: output
|
|
11
|
+
|
|
12
|
+
## Zachowanie
|
|
13
|
+
Wpisanie znaku przechodzi do następnego pola; Backspace cofa; wklejenie rozkłada kod na pola.
|
|
14
|
+
|
|
15
|
+
## Przykład
|
|
16
|
+
<kpt-input-otp [formField]="f.code" [length]="6" integerOnly />
|
|
17
|
+
|
|
18
|
+
## Tokeny
|
|
19
|
+
Komórki `--kpt-form-field-*`.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# KptKnob (kpt-knob)
|
|
2
|
+
|
|
3
|
+
Pokrętło (knob) — wybór wartości po łuku SVG, myszką (drag) lub klawiszami strzałek. Signal Forms.
|
|
4
|
+
Import: `import { KptKnob } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia / model
|
|
7
|
+
- `value`: model<number> (lub `formField`)
|
|
8
|
+
- `min`/`max`: number | undefined (0/100); `step`: number
|
|
9
|
+
- `size`: px (domyślnie 96); `stroke`: px (10); `suffix`: string
|
|
10
|
+
- `showValue`: boolean (domyślnie true)
|
|
11
|
+
- `disabled`/`invalid`/`touched`: boolean; `touch`: output
|
|
12
|
+
|
|
13
|
+
## Dostępność
|
|
14
|
+
`role="slider"` + aria-valuemin/max/now; strzałki, Home/End.
|
|
15
|
+
|
|
16
|
+
## Przykład
|
|
17
|
+
<kpt-knob [formField]="f.level" [min]="0" [max]="100" [step]="5" />
|
|
18
|
+
|
|
19
|
+
## Tokeny
|
|
20
|
+
Łuk tła `--kpt-color-border`; wartość `--kpt-color-primary`; tekst `--kpt-color-on-surface`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# KptListbox (kpt-listbox)
|
|
2
|
+
|
|
3
|
+
Lista wyboru (listbox) na Signal Forms. Pojedynczy lub wielokrotny wybór, opcjonalny filtr.
|
|
4
|
+
Wartość: `T` (single) lub `T[]` (multiple). Import: `import { KptListbox } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia / model
|
|
7
|
+
- `value`: model<T | T[] | null> (lub `formField`)
|
|
8
|
+
- `options`: KptOption<T>[] — { label, value, disabled? }
|
|
9
|
+
- `multiple`: boolean; `filter`: boolean (pole wyszukiwania)
|
|
10
|
+
- `disabled`/`invalid`/`touched`: boolean; `touch`: output
|
|
11
|
+
|
|
12
|
+
## Przykład
|
|
13
|
+
<kpt-listbox [formField]="f.role" [options]="roles" filter />
|
|
14
|
+
<kpt-listbox [(value)]="tags" [options]="tagOptions" multiple />
|
|
15
|
+
|
|
16
|
+
## Tokeny
|
|
17
|
+
Ramka `--kpt-form-field-*`; zaznaczenie `--kpt-color-primary`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# KptMegamenu (kpt-megamenu)
|
|
2
|
+
|
|
3
|
+
Mega-menu — pozioma belka z szerokim, wielokolumnowym panelem.
|
|
4
|
+
Struktura: pozycja górna → `items` (kolumny) → każda kolumna `items` (odnośniki).
|
|
5
|
+
Import: `import { KptMegamenu } from '@konce-pt/angular';`
|
|
6
|
+
|
|
7
|
+
## Wejścia / wyjścia
|
|
8
|
+
- `items`: KptMenuItem<T>[] (3 poziomy: top → kolumny → linki)
|
|
9
|
+
- `select`: KptMenuItem<T> (kliknięty odnośnik)
|
|
10
|
+
|
|
11
|
+
## Przykład
|
|
12
|
+
items = [{
|
|
13
|
+
label: 'Produkty',
|
|
14
|
+
items: [
|
|
15
|
+
{ label: 'Komponenty', items: [{ label: 'Formularze' }, { label: 'Tabele' }] },
|
|
16
|
+
{ label: 'Szablony', items: [{ label: 'Dashboard' }] },
|
|
17
|
+
],
|
|
18
|
+
}];
|
|
19
|
+
|
|
20
|
+
## Tokeny
|
|
21
|
+
Panel `--kpt-color-surface-raised`, `--kpt-elevation-3`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# KptMenu (kpt-menu)
|
|
2
|
+
|
|
3
|
+
Menu rozwijane (dropdown) na CDK Overlay. Trigger przez projekcję, pozycje przez `items`.
|
|
4
|
+
Wymaga `import '@angular/cdk/overlay-prebuilt.css';`
|
|
5
|
+
Import: `import { KptMenu, KptMenuItem } from '@konce-pt/angular';`
|
|
6
|
+
|
|
7
|
+
## Wejścia / wyjścia
|
|
8
|
+
- `items`: KptMenuItem[] `{ label?, value?, icon?, disabled?, danger?, separator? }`
|
|
9
|
+
- `select`: output<KptMenuItem>
|
|
10
|
+
|
|
11
|
+
## Przykład
|
|
12
|
+
<kpt-menu [items]="items" (select)="onSelect($event)">
|
|
13
|
+
<kpt-button variant="outline">Opcje</kpt-button>
|
|
14
|
+
</kpt-menu>
|
|
15
|
+
|
|
16
|
+
## Tokeny
|
|
17
|
+
Panel `--kpt-color-surface-raised`, `--kpt-elevation-3`; pozycja danger `--kpt-color-danger`.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# KptMenubar (kpt-menubar)
|
|
2
|
+
|
|
3
|
+
Pozioma belka menu z rozwijanymi pod-menu. Pozycje bez `items` działają jak akcje.
|
|
4
|
+
Import: `import { KptMenubar } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia / wyjścia
|
|
7
|
+
- `items`: KptMenuItem<T>[] — pozycje górne; pod-menu w `items?` każdej pozycji
|
|
8
|
+
- `select`: KptMenuItem<T>
|
|
9
|
+
|
|
10
|
+
## Przykład
|
|
11
|
+
<kpt-menubar [items]="items" (select)="onSelect($event)" />
|
|
12
|
+
|
|
13
|
+
items: KptMenuItem[] = [
|
|
14
|
+
{ label: 'Plik', items: [{ label: 'Nowy' }, { separator: true }, { label: 'Zamknij', danger: true }] },
|
|
15
|
+
{ label: 'Pomoc' },
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
## Tokeny
|
|
19
|
+
Belka `--kpt-color-surface-raised`; dropdown `--kpt-elevation-3`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# KptMeterGroup (kpt-meter-group)
|
|
2
|
+
|
|
3
|
+
Wielosegmentowy miernik (meter group) z opcjonalną legendą.
|
|
4
|
+
Import: `import { KptMeterGroup } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia
|
|
7
|
+
- `values`: KptMeterItem[] — { label, value, color? }
|
|
8
|
+
- `max`: number | undefined — suma odniesienia (domyślnie suma wartości = 100%)
|
|
9
|
+
- `showLegend`: boolean (domyślnie true)
|
|
10
|
+
|
|
11
|
+
## Przykład
|
|
12
|
+
<kpt-meter-group [values]="[{label:'Użyte', value:70}, {label:'Wolne', value:30}]" />
|
|
13
|
+
|
|
14
|
+
## Tokeny
|
|
15
|
+
Segmenty: paleta `--kpt-color-{primary,info,success,warning,danger}` lub własny `color`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# KptOrderList (kpt-order-list)
|
|
2
|
+
|
|
3
|
+
Lista z ręcznym porządkowaniem elementów (w górę/dół). Zaznacz element i przesuń przyciskami.
|
|
4
|
+
Szablon elementu przez projekcję `<ng-template let-item>`.
|
|
5
|
+
Import: `import { KptOrderList } from '@konce-pt/angular';`
|
|
6
|
+
|
|
7
|
+
## Wejścia / model
|
|
8
|
+
- `items`: model<T[]> (dwukierunkowe — zwraca nową kolejność)
|
|
9
|
+
- `header`: string
|
|
10
|
+
|
|
11
|
+
## Przykład
|
|
12
|
+
<kpt-order-list [(items)]="tasks" header="Kolejność">
|
|
13
|
+
<ng-template let-item>{{ item.name }}</ng-template>
|
|
14
|
+
</kpt-order-list>
|
|
15
|
+
|
|
16
|
+
## Tokeny
|
|
17
|
+
Zaznaczenie `--kpt-color-primary`; przyciski `--kpt-color-surface-raised`.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# KptPaginator (kpt-paginator)
|
|
2
|
+
|
|
3
|
+
Paginator sterowany sygnałami. Import: `import { KptPaginator } from '@konce-pt/angular';`
|
|
4
|
+
|
|
5
|
+
## Selektor
|
|
6
|
+
`kpt-paginator`
|
|
7
|
+
|
|
8
|
+
## Wejścia / modele
|
|
9
|
+
- `length`: number (wymagane) — łączna liczba elementów
|
|
10
|
+
- `pageSize`: model<number> (domyślnie 10) — dwukierunkowe
|
|
11
|
+
- `pageIndex`: model<number> od 0 (domyślnie 0) — dwukierunkowe
|
|
12
|
+
- `pageSizeOptions`: number[] (domyślnie [5,10,20,50])
|
|
13
|
+
|
|
14
|
+
## Przykład
|
|
15
|
+
<kpt-paginator [length]="total()" [(pageIndex)]="page" [(pageSize)]="size" />
|
|
16
|
+
|
|
17
|
+
Pokazuje „X–Y z Z", wybór rozmiaru strony oraz przyciski poprzednia/następna.
|
|
18
|
+
Przy zmianie długości/rozmiaru samoczynnie koryguje `pageIndex` (effect).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# KptPanel (kpt-panel)
|
|
2
|
+
|
|
3
|
+
Panel z nagłówkiem i opcjonalnym zwijaniem. Import: `import { KptPanel } from '@konce-pt/angular';`
|
|
4
|
+
|
|
5
|
+
## Wejścia / model
|
|
6
|
+
- `header`: string
|
|
7
|
+
- `toggleable`: boolean — pokazuje przycisk zwijania
|
|
8
|
+
- `collapsed`: model<boolean> (dwukierunkowe)
|
|
9
|
+
- Akcje nagłówka: projekcja `[kptPanelActions]`. Treść: `<ng-content>`.
|
|
10
|
+
|
|
11
|
+
## Przykład
|
|
12
|
+
<kpt-panel header="Ustawienia" toggleable>
|
|
13
|
+
<button kptPanelActions>…</button>
|
|
14
|
+
Treść…
|
|
15
|
+
</kpt-panel>
|
|
16
|
+
|
|
17
|
+
## Tokeny
|
|
18
|
+
Nagłówek `--kpt-color-surface-variant`; ramka `--kpt-color-border`.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# KptPassword (kpt-password)
|
|
2
|
+
|
|
3
|
+
Pole hasła z przełącznikiem widoczności i opcjonalnym miernikiem siły. Signal Forms.
|
|
4
|
+
Import: `import { KptPassword } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia / model
|
|
7
|
+
- `value`: model<string> (lub `formField`)
|
|
8
|
+
- `feedback`: boolean — pokazuje miernik siły (4 paski + etykieta)
|
|
9
|
+
- `placeholder`: string
|
|
10
|
+
- `disabled`/`invalid`/`touched`: boolean; `touch`: output
|
|
11
|
+
|
|
12
|
+
## Siła hasła
|
|
13
|
+
Punktacja 0–4: długość ≥8, małe+wielkie litery, cyfra, znak specjalny. Kolory: danger→warning→info→success.
|
|
14
|
+
|
|
15
|
+
## Przykład
|
|
16
|
+
<kpt-password [formField]="f.password" feedback />
|
|
17
|
+
<kpt-password [(value)]="pass" />
|
|
18
|
+
|
|
19
|
+
## Tokeny
|
|
20
|
+
Pole `--kpt-form-field-*`; paski miernika `--kpt-color-{danger,warning,info,success}`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# KptPickList (kpt-pick-list)
|
|
2
|
+
|
|
3
|
+
Transfer elementów między dwiema listami (źródło ↔ cel). Zaznacz i przenieś (pojedynczo/wszystko).
|
|
4
|
+
Szablon elementu przez projekcję `<ng-template let-item>`.
|
|
5
|
+
Import: `import { KptPickList } from '@konce-pt/angular';`
|
|
6
|
+
|
|
7
|
+
## Wejścia / model
|
|
8
|
+
- `source`: model<T[]>; `target`: model<T[]> (oba dwukierunkowe)
|
|
9
|
+
- `sourceHeader`/`targetHeader`: string
|
|
10
|
+
|
|
11
|
+
## Przykład
|
|
12
|
+
<kpt-pick-list [(source)]="available" [(target)]="selected" sourceHeader="Dostępne" targetHeader="Wybrane">
|
|
13
|
+
<ng-template let-item>{{ item.name }}</ng-template>
|
|
14
|
+
</kpt-pick-list>
|
|
15
|
+
|
|
16
|
+
## Tokeny
|
|
17
|
+
Zaznaczenie `--kpt-color-primary`; nagłówki `--kpt-color-surface-variant`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# KptPopover (kpt-popover)
|
|
2
|
+
|
|
3
|
+
Popover — dowolna treść w dymku na CDK Overlay (bogatszy niż tooltip).
|
|
4
|
+
Wymaga `import '@angular/cdk/overlay-prebuilt.css';`
|
|
5
|
+
Import: `import { KptPopover } from '@konce-pt/angular';`
|
|
6
|
+
|
|
7
|
+
## Sloty
|
|
8
|
+
- element z atrybutem `kptPopoverTrigger` = wyzwalacz; reszta treści = panel
|
|
9
|
+
|
|
10
|
+
## Przykład
|
|
11
|
+
<kpt-popover>
|
|
12
|
+
<kpt-button kptPopoverTrigger variant="outline">Szczegóły</kpt-button>
|
|
13
|
+
<div>Bogata treść popovera…</div>
|
|
14
|
+
</kpt-popover>
|
|
15
|
+
|
|
16
|
+
## Tokeny
|
|
17
|
+
`--kpt-color-surface-raised`, `--kpt-elevation-3`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# KptProgress (kpt-progress)
|
|
2
|
+
|
|
3
|
+
Wskaźnik postępu — liniowy lub kołowy, określony (0–100) lub nieokreślony (`value`=null).
|
|
4
|
+
Import: `import { KptProgress } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia
|
|
7
|
+
- `value`: number|null (null = indeterminate); `type`: 'linear'|'circular'
|
|
8
|
+
- `variant`: 'primary'|'success'|'danger'|'warning'|'info'; `diameter`: number (kołowy)
|
|
9
|
+
|
|
10
|
+
## Przykłady
|
|
11
|
+
<kpt-progress [value]="60" />
|
|
12
|
+
<kpt-progress type="circular" [value]="75" variant="success" />
|
|
13
|
+
<kpt-progress [value]="null" />
|
|
14
|
+
|
|
15
|
+
## Tokeny
|
|
16
|
+
`--kpt-color-{primary,success,danger,warning,info}`, tło `--kpt-color-surface-variant`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# KptRadioGroup (kpt-radio-group)
|
|
2
|
+
|
|
3
|
+
Grupa przycisków opcji na Signal Forms (`FormValueControl<T>`). Opcje przez `options`.
|
|
4
|
+
Import: `import { KptRadioGroup, KptOption } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Użycie
|
|
7
|
+
plans: KptOption<string>[] = [{label:'Free',value:'free'},{label:'Pro',value:'pro'}];
|
|
8
|
+
<kpt-radio-group [formField]="f.plan" [options]="plans" />
|
|
9
|
+
|
|
10
|
+
## Wejścia
|
|
11
|
+
- `value`: model<T>; `options`: KptOption<T>[] `{ label, value, disabled? }`
|
|
12
|
+
- `disabled`/`invalid`/`touched`: boolean; `name`: string (auto); output `touch`.
|
|
13
|
+
|
|
14
|
+
## Tokeny
|
|
15
|
+
`--kpt-color-primary`, `--kpt-form-field-border`.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# KptRating (kpt-rating)
|
|
2
|
+
|
|
3
|
+
Ocena gwiazdkami na Signal Forms. Import: `import { KptRating } from '@konce-pt/angular';`
|
|
4
|
+
|
|
5
|
+
## Wejścia
|
|
6
|
+
- `value`: model<number>; `count`: number (liczba gwiazdek, domyślnie 5)
|
|
7
|
+
- `readonly`/`disabled`/`touched`: boolean; `touch`: output
|
|
8
|
+
|
|
9
|
+
## Przykład
|
|
10
|
+
<kpt-rating [formField]="f.score" [count]="5" />
|
|
11
|
+
<kpt-rating [value]="4" readonly />
|
|
12
|
+
|
|
13
|
+
## Tokeny
|
|
14
|
+
Wypełnione gwiazdki `--kpt-color-warning`; puste `--kpt-color-border-strong`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# KptRichText (kpt-rich-text)
|
|
2
|
+
|
|
3
|
+
Lekki edytor tekstu sformatowanego (contenteditable) z konfigurowalnym paskiem.
|
|
4
|
+
Wartość = HTML. Bez zależności zewnętrznych. Signal Forms.
|
|
5
|
+
Import: `import { KptRichText, KptRichTool } from '@konce-pt/angular';`
|
|
6
|
+
|
|
7
|
+
## Wejścia
|
|
8
|
+
- `value`: model<string> (HTML)
|
|
9
|
+
- `toolbar`: KptRichTool[] = 'bold'|'italic'|'underline'|'strike'|'ul'|'ol'|'link'|'clear'
|
|
10
|
+
- `placeholder`: string; `disabled`/`invalid`/`touched`: boolean; `touch`: output
|
|
11
|
+
|
|
12
|
+
## Przykład
|
|
13
|
+
<kpt-rich-text [formField]="f.body" [toolbar]="['bold','italic','ul','link']" />
|
|
14
|
+
|
|
15
|
+
## Uwagi
|
|
16
|
+
Formatowanie przez document.execCommand (przeglądarkowe). Ikony paska z wbudowanego rejestru.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# KptScrollTop (kpt-scroll-top)
|
|
2
|
+
|
|
3
|
+
Przycisk „do góry" — pojawia się po przewinięciu ponad `threshold` px.
|
|
4
|
+
Import: `import { KptScrollTop } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Wejścia
|
|
7
|
+
- `threshold`: number (px, domyślnie 300)
|
|
8
|
+
- `target`: string | null — selektor przewijanego elementu; domyślnie okno
|
|
9
|
+
|
|
10
|
+
## Przykład
|
|
11
|
+
<kpt-scroll-top [threshold]="300" />
|
|
12
|
+
<kpt-scroll-top target="#panel" />
|
|
13
|
+
|
|
14
|
+
## Tokeny
|
|
15
|
+
Przycisk `--kpt-color-primary` / `--kpt-color-on-primary`, `--kpt-elevation-3`.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# KptSelect (kpt-select)
|
|
2
|
+
|
|
3
|
+
Lista wyboru na własnym panelu (CDK Overlay), Signal Forms. Warianty: pojedynczy,
|
|
4
|
+
z wyszukiwarką (`filter`) i wielokrotny (`multiple`, chipy; wartość `T[]`).
|
|
5
|
+
Import: `import { KptSelect, KptOption } from '@konce-pt/angular';`
|
|
6
|
+
|
|
7
|
+
Wymaga stylów overlay CDK w aplikacji: `import '@angular/cdk/overlay-prebuilt.css';`
|
|
8
|
+
|
|
9
|
+
## Użycie
|
|
10
|
+
roles: KptOption<string>[] = [{label:'Admin',value:'admin'}, ...];
|
|
11
|
+
<kpt-select [formField]="f.role" [options]="roles" placeholder="Wybierz…" />
|
|
12
|
+
<kpt-select [formField]="f.city" [options]="cities" filter placeholder="Szukaj…" />
|
|
13
|
+
<kpt-select [formField]="f.tags" [options]="tags" multiple filter /> <!-- value: string[] -->
|
|
14
|
+
|
|
15
|
+
## Wejścia
|
|
16
|
+
- `value`: model (T lub T[] przy multiple); `options`: KptOption<T>[]; `placeholder`: string
|
|
17
|
+
- `filter`: boolean — pole wyszukiwania; `multiple`: boolean — wybór wielu (chipy)
|
|
18
|
+
- `disabled`/`invalid`/`touched`: boolean; output `touch`.
|
|
19
|
+
- Klawiatura: Enter/↓ otwiera, ↑/↓ nawigacja, Enter wybiera, Esc zamyka.
|
|
20
|
+
|
|
21
|
+
## Tokeny
|
|
22
|
+
`--kpt-form-field-{bg,text,border,border-hover,border-focus,border-error,radius}`.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# KptSidenav (kpt-sidenav)
|
|
2
|
+
|
|
3
|
+
Panel boczny — stylowany kontener nawigacji, zwykle w slocie `kptShellSidenav`
|
|
4
|
+
komponentu `kpt-app-shell`. Import: `import { KptSidenav } from '@konce-pt/angular';`
|
|
5
|
+
|
|
6
|
+
## Selektor
|
|
7
|
+
`kpt-sidenav`
|
|
8
|
+
|
|
9
|
+
## Treść
|
|
10
|
+
Dowolna zawartość (ng-content). Elementy `<a>` mają wbudowane style pozycji nawigacji
|
|
11
|
+
(hover z `--kpt-color-muted`).
|
|
12
|
+
|
|
13
|
+
## Przykład
|
|
14
|
+
<kpt-sidenav kptShellSidenav>
|
|
15
|
+
<a href="#">Pulpit</a>
|
|
16
|
+
<a href="#">Ustawienia</a>
|
|
17
|
+
</kpt-sidenav>
|
|
18
|
+
|
|
19
|
+
## Tokeny
|
|
20
|
+
`--kpt-sidenav-{bg,fg,border,width}` (szerokość ustawia `kpt-app-shell`).
|