@mk-kit/ui 0.42.0 → 0.44.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.
Files changed (57) hide show
  1. package/README.md +5 -3
  2. package/THIRD_PARTY_NOTICES.md +4 -2
  3. package/fesm2022/mk-kit-ui-block-editor.mjs +4 -2
  4. package/fesm2022/mk-kit-ui-block-editor.mjs.map +1 -1
  5. package/fesm2022/mk-kit-ui-checkbox.mjs +4 -2
  6. package/fesm2022/mk-kit-ui-checkbox.mjs.map +1 -1
  7. package/fesm2022/mk-kit-ui-core.mjs +136 -1
  8. package/fesm2022/mk-kit-ui-core.mjs.map +1 -1
  9. package/fesm2022/mk-kit-ui-data.mjs +438 -8
  10. package/fesm2022/mk-kit-ui-data.mjs.map +1 -1
  11. package/fesm2022/mk-kit-ui-datetime.mjs +88 -50
  12. package/fesm2022/mk-kit-ui-datetime.mjs.map +1 -1
  13. package/fesm2022/mk-kit-ui-directives.mjs +27 -8
  14. package/fesm2022/mk-kit-ui-directives.mjs.map +1 -1
  15. package/fesm2022/mk-kit-ui-dnd.mjs +43 -8
  16. package/fesm2022/mk-kit-ui-dnd.mjs.map +1 -1
  17. package/fesm2022/mk-kit-ui-dynamic-form.mjs +149 -2
  18. package/fesm2022/mk-kit-ui-dynamic-form.mjs.map +1 -1
  19. package/fesm2022/mk-kit-ui-feedback.mjs +1 -1
  20. package/fesm2022/mk-kit-ui-feedback.mjs.map +1 -1
  21. package/fesm2022/mk-kit-ui-forms.mjs +326 -78
  22. package/fesm2022/mk-kit-ui-forms.mjs.map +1 -1
  23. package/fesm2022/mk-kit-ui-icon-extended.mjs +425 -0
  24. package/fesm2022/mk-kit-ui-icon-extended.mjs.map +1 -0
  25. package/fesm2022/mk-kit-ui-icon.mjs +296 -459
  26. package/fesm2022/mk-kit-ui-icon.mjs.map +1 -1
  27. package/fesm2022/mk-kit-ui-media.mjs +1 -1
  28. package/fesm2022/mk-kit-ui-media.mjs.map +1 -1
  29. package/fesm2022/mk-kit-ui-query-builder.mjs +1 -1
  30. package/fesm2022/mk-kit-ui-query-builder.mjs.map +1 -1
  31. package/fesm2022/mk-kit-ui-rich-text.mjs +4 -2
  32. package/fesm2022/mk-kit-ui-rich-text.mjs.map +1 -1
  33. package/fesm2022/mk-kit-ui-table.mjs +668 -24
  34. package/fesm2022/mk-kit-ui-table.mjs.map +1 -1
  35. package/fesm2022/mk-kit-ui-testing.mjs +54 -0
  36. package/fesm2022/mk-kit-ui-testing.mjs.map +1 -1
  37. package/fesm2022/mk-kit-ui.mjs +1 -0
  38. package/fesm2022/mk-kit-ui.mjs.map +1 -1
  39. package/package.json +5 -1
  40. package/schematics/migrate-primeng/transform.js +4 -1
  41. package/schematics/ng-add/index.js +30 -2
  42. package/schematics/ng-add/schema.json +6 -0
  43. package/types/mk-kit-ui-block-editor.d.ts +2 -0
  44. package/types/mk-kit-ui-checkbox.d.ts +2 -0
  45. package/types/mk-kit-ui-core.d.ts +82 -2
  46. package/types/mk-kit-ui-data.d.ts +203 -2
  47. package/types/mk-kit-ui-datetime.d.ts +41 -19
  48. package/types/mk-kit-ui-directives.d.ts +12 -6
  49. package/types/mk-kit-ui-dnd.d.ts +32 -4
  50. package/types/mk-kit-ui-dynamic-form.d.ts +44 -1
  51. package/types/mk-kit-ui-forms.d.ts +154 -16
  52. package/types/mk-kit-ui-icon-extended.d.ts +83 -0
  53. package/types/mk-kit-ui-icon.d.ts +100 -17
  54. package/types/mk-kit-ui-rich-text.d.ts +2 -0
  55. package/types/mk-kit-ui-table.d.ts +234 -25
  56. package/types/mk-kit-ui-testing.d.ts +16 -0
  57. package/types/mk-kit-ui.d.ts +1 -0
package/README.md CHANGED
@@ -79,16 +79,16 @@ export class AppRoot {
79
79
 
80
80
  | Group | Highlights |
81
81
  |---|---|
82
- | **Forms & inputs** (54) | text, number, password (strength meter), OTP, phone (country prefix), postal code, currency, card number, IBAN, tax id, masked input, tag input, select, autocomplete, multi-select, tree-select, transfer list, checkbox, radio, switch, slider, range slider, rating, colour picker, file upload (dropzone), signature pad, numeric keypad & on-screen keyboard, repeater (`FormArray`), form field with automatic validation messages, form error summary, listbox, cascader (multi-column select), floating labels, dynamic form (JSON schema → form) |
82
+ | **Forms & inputs** (54) | text, number, password (strength meter), OTP, phone (country prefix), postal code, currency, card number, IBAN, tax id, masked input, tag input, select, autocomplete, multi-select, tree-select, transfer list, checkbox, radio, switch, slider, range slider, rating, colour picker, file upload (dropzone), signature pad, numeric keypad & on-screen keyboard, repeater (`FormArray`), form field with automatic validation messages, form error summary, listbox, cascader (multi-column select), floating labels, dynamic form (JSON schema → form); every control binds with reactive forms, `ngModel` **and Angular 22 Signal Forms (`[formField]`)**, with `mk-form-field` / the error summary reading the field state and `mkDynamicFormToSignalSchema` converting a dynamic-form definition to a `schema()` |
83
83
  | **Date & time** | calendar, date picker, date-range picker, time picker, month/year picker, week picker, inline mini date, event calendar with editable week/day grid (drag to move / resize) |
84
84
  | **Tables & grids** (7) | data table — sort, multi-select, expandable rows, tree rows, grouping, sticky header, column resize / reorder / pin, inline cell edit, responsive stacking, CSV export, print styles — plus `MkTableDataSource` for server-side sort/page/filter, query builder (`mk-query-builder` → predicate / readable text / `MkTableDataSource.setQuery()`) |
85
85
  | **Charts** (12) | line/area, bar (stacked, horizontal, label fitting), donut, gauge, progress ring, scatter/bubble, radar, funnel, treemap, heatmap, calendar heatmap, sparkline — SVG, themed, accessible |
86
- | **Data display** (26) | cards, lists, stat cards, badges, badge overlay (`[mkBadgeOverlay]`), tags, chips, avatars & groups, timeline, description list, tree, empty state, countdown, QR code, diff view, JSON viewer, code block, virtual scroll, carousel, kanban |
86
+ | **Data display** (27) | cards, lists, stat cards, badges, badge overlay (`[mkBadgeOverlay]`), tags, chips, avatars & groups, timeline, description list, tree, org chart, empty state, countdown, QR code, diff view, JSON viewer, code block, virtual scroll, carousel, kanban |
87
87
  | **Navigation & layout** (21) | app shell (responsive sidebar), stack / flex / grid layout primitives, nav list & groups, tabs, stepper, breadcrumb, pagination, menu, context menu, command palette (⌘K), page header, toolbar, splitter, drawer, scroll area, FAB, back-to-top |
88
88
  | **Feedback & overlays** (21) | dialogs (+ `confirm()` / `alert()` / `prompt()`), bottom sheet, drawer, popover, popconfirm, hovercard, tooltip, toast, snackbar, alert, banner, result page, notification center, product tour, progress bar, loading bar, spinner, skeletons, block UI (region / page overlay), draggable & resizable dialogs |
89
89
  | **Editors & interactions** (31) | block editor (Notion-style, HTML round-trip), rich text, markdown renderer, code editor, log viewer, drag & drop, sortable list, @mentions, hotkeys, undo/redo history, permissions (`*mkCan`), clipboard, intersect, infinite scroll, ripple, scrollspy, chat (streaming message log, tool cards, prompt box), `Intl` formatting pipes (currency, relative time, file size, initials, truncate, pluralize) |
90
90
  | **Media** (6) | image with states, gallery, lightbox, cropper, media manager |
91
- | **Core services** | theme (light/dark/system + density + high contrast), breakpoints, overlay & anchored panels, focus trap, live announcer, icon registry (426 built-in icons), i18n |
91
+ | **Core services** | theme (light/dark/system + density + high contrast), breakpoints, overlay & anchored panels, focus trap, live announcer, icon registry (121 default icons always on + 305 opt-in Lucide-derived, tree-shakeable by themed subset or lazy-loaded via `provideMkIcons()`), i18n |
92
92
 
93
93
  The full, searchable index lives in the docs (`/components-index`).
94
94
 
@@ -176,6 +176,8 @@ modals, an Escape that closes only the topmost overlay, live-region
176
176
  announcements for async state, contrast-checked tokens in both themes,
177
177
  `prefers-reduced-motion` and `forced-colors` support. Axe runs over rendered
178
178
  fixtures in the test suite; information is never conveyed by colour alone.
179
+ The [accessibility statement](https://mk-kit.dev/accessibility) lists what is
180
+ verified automatically and the known gaps.
179
181
 
180
182
  ## SSR & zoneless
181
183
 
@@ -2,8 +2,10 @@
2
2
 
3
3
  ## Lucide Icons
4
4
 
5
- Part of the built-in icon set (`MK_EXTENDED_ICONS`, generated by
6
- `scripts/gen-icons.mjs`) is derived from [Lucide](https://lucide.dev),
5
+ The opt-in extended icon set (`MK_EXTENDED_ICONS` in
6
+ `@mk-kit/ui/icon/extended`) and a handful of the default icons (those the
7
+ library's own components render — `default-icons.lucide.ts`), both generated
8
+ by `scripts/gen-icons.mjs`, are derived from [Lucide](https://lucide.dev),
7
9
  distributed under the ISC licence:
8
10
 
9
11
  ```
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, signal, computed, Injectable, input, booleanAttribute, output, ChangeDetectionStrategy, Component, viewChild, DOCUMENT, ElementRef, DestroyRef, model, forwardRef } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import * as i1 from '@mk-kit/ui/core';
5
- import { MK_I18N, mkUniqueId } from '@mk-kit/ui/core';
5
+ import { MK_I18N, mkUniqueId, mkInjectFieldTouched } from '@mk-kit/ui/core';
6
6
  import { MkRichTextEngine, sanitizeInlineHtml } from '@mk-kit/ui/rich-text';
7
7
  export { sanitizeInlineHtml } from '@mk-kit/ui/rich-text';
8
8
  import { DomSanitizer } from '@angular/platform-browser';
@@ -1893,7 +1893,9 @@ class MkBlockEditor {
1893
1893
  cvaDisabled = signal(false, /* @ts-ignore */
1894
1894
  ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
1895
1895
  /** Invalid visual, forced by the `invalid` input. */
1896
- isInvalid = computed(() => this.invalid(), /* @ts-ignore */
1896
+ /** Signal Forms: gates `invalid` until the bound field is touched or dirty. */
1897
+ fieldTouched = mkInjectFieldTouched();
1898
+ isInvalid = computed(() => this.invalid() && this.fieldTouched(), /* @ts-ignore */
1897
1899
  ...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
1898
1900
  onChange = () => { };
1899
1901
  onTouched = () => { };