@featherk/composables 0.12.0 → 0.12.2

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/README.md CHANGED
@@ -4,32 +4,38 @@ Vue 3 composables that improve Kendo UI for Vue behavior and accessibility.
4
4
 
5
5
  ## Composables Overview
6
6
 
7
+ - **Address**: `useUSAddress` — Orchestrates full US address form behavior, including delayed validation (via `useFieldsetValidationKit`), state options, ZIP integration, and normalized submit payloads.
8
+ - Guide: [docs/address/useUSAddress.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/address/useUSAddress.md)
9
+ - **Address**: `useZipTextBox` — Dynamic multi-mask ZIP code input (5-digit and ZIP+4) for Kendo Vue `TextBox`, with caret preservation, submit-gated validation, and focus-on-error support.
10
+ - Guide: [docs/address/useZipTextBox.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/address/useZipTextBox.md)
11
+ - **Date**: `useMaskedDateInput` — Masked single-date input with steppers and validation.
12
+ - Guide: [docs/date/useMaskedDateInput.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/date/useMaskedDateInput.md)
13
+ - **Form (Low-level)**: `useFieldsetTouchTracker` — Primitive focus-leave touch tracker that powers the validation kit.
14
+ - Guide: [docs/form/useFieldsetTouchTracker.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/form/useFieldsetTouchTracker.md)
15
+ - **Form**: `useFieldsetValidationKit` — Delayed fieldset validation kit with submit/touch gating, field helpers, invalid-focus targeting, and reset handling.
16
+ - Guide: [docs/form/useFieldsetValidationKit.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/form/useFieldsetValidationKit.md)
7
17
  - **Grid**: `useGridA11y` — Accessible row-level navigation and column menu keyboard support.
8
18
  - Guide: [docs/grid/useGridA11y.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/grid/useGridA11y.md)
9
19
  - **Grid**: `useGridActiveFilter` — Reactive header class resolver that marks filtered columns as `"active"`.
10
20
  - Guide: [docs/grid/useGridActiveFilter.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/grid/useGridActiveFilter.md)
11
21
  - **Grid**: `useGridRowAction` — Safe, accessible row click and keyboard activation handlers for grid rows with interaction and selection guards.
12
22
  - Guide: [docs/grid/useGridRowAction.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/grid/useGridRowAction.md)
13
- - **Date**: `useMaskedDateInput` — Masked single-date input with steppers and validation.
14
- - Guide: [docs/date/useMaskedDateInput.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/date/useMaskedDateInput.md)
23
+ - **ID**: `useCompositeId` — SSR-safe component-scoped DOM ID generation for related controls and ARIA relationships.
24
+ - Guide: [docs/id/useCompositeId.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/id/useCompositeId.md)
25
+ - **Menu**: `usePopupMenu` — Accessible Kendo Popup + Menu action-menu toggling, selection modality, and contextual focus restoration.
26
+ - Guide: [docs/menu/usePopupMenu.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/menu/usePopupMenu.md)
27
+ - **Observer**: `useIntersectionObserver` — Reactive intersection observation with optional clipping-root tracking and SSR-safe no-op behavior.
28
+ - Guide: [docs/observer/useIntersectionObserver.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/observer/useIntersectionObserver.md)
15
29
  - **Range**: `useMaskedDateRangeInput` — Masked date range input with validation, clamp, and optional popup coordination.
16
30
  - Guide: [docs/range/useMaskedDateRangeInput.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/range/useMaskedDateRangeInput.md)
31
+ - **Registry**: `useActiveIdRegistry` — Shared active-id bookkeeping for single-open patterns across many grid rows/buttons.
32
+ - Guide: [docs/registry/useActiveIdRegistry.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/registry/useActiveIdRegistry.md)
33
+ - **Registry**: `useExclusiveGroup` — Lifecycle-managed mutual exclusivity for active-id registries.
34
+ - Guide: [docs/registry/useExclusiveGroup.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/registry/useExclusiveGroup.md)
17
35
  - **Time**: `useMaskedTimeInput` — Masked single-time input with AM/PM conveniences and bounds.
18
36
  - Guide: [docs/time/useMaskedTimeInput.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/time/useMaskedTimeInput.md)
19
37
  - **Trap**: `usePopupTrap` — Focus trap + Escape/Outside click close behavior for popups.
20
38
  - Guide: [docs/trap/usePopupTrap.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/trap/usePopupTrap.md)
21
- - **Menu**: `usePopupMenu` — Accessible Kendo Popup + Menu action-menu toggling, selection modality, and contextual focus restoration.
22
- - Guide: [docs/menu/usePopupMenu.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/menu/usePopupMenu.md)
23
- - **Registry**: `useActiveIdRegistry` — Shared active-id bookkeeping for single-open patterns across many grid rows/buttons.
24
- - Guide: [docs/registry/useActiveIdRegistry.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/registry/useActiveIdRegistry.md)
25
- - **Address**: `useZipTextBox` — Dynamic multi-mask ZIP code input (5-digit and ZIP+4) for Kendo Vue `TextBox`, with caret preservation, submit-gated validation, and focus-on-error support.
26
- - Guide: [docs/address/useZipTextBox.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/address/useZipTextBox.md)
27
- - **Address**: `useUSAddress` — Orchestrates full US address form behavior, including delayed validation (via `useFieldsetValidationKit`), state options, ZIP integration, and normalized submit payloads.
28
- - Guide: [docs/address/useUSAddress.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/address/useUSAddress.md)
29
- - **Form**: `useFieldsetValidationKit` — Delayed fieldset validation kit with submit/touch gating, field helpers, invalid-focus targeting, and reset handling.
30
- - Guide: [docs/form/useFieldsetValidationKit.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/form/useFieldsetValidationKit.md)
31
- - **Form (Low-level)**: `useFieldsetTouchTracker` — Primitive focus-leave touch tracker that powers the validation kit.
32
- - Guide: [docs/form/useFieldsetTouchTracker.md](https://github.com/NantHealth/featherk/blob/integration/packages/composables/docs/form/useFieldsetTouchTracker.md)
33
39
 
34
40
  ## Importing Composables
35
41
 
@@ -39,36 +45,64 @@ Subpath imports (recommended for clarity):
39
45
 
40
46
  ```ts
41
47
  // Grid
42
- import {
43
- useGridA11y,
44
- useGridActiveFilter,
45
- useGridRowAction,
46
- type RowActionContext
47
- } from '@featherk/composables/grid';
48
+ import {
49
+ useGridA11y,
50
+ useGridActiveFilter,
51
+ useGridRowAction,
52
+ type RowActionContext,
53
+ } from "@featherk/composables/grid";
48
54
 
49
55
  // Date input
50
- import { useMaskedDateInput, type DateChangePayload } from '@featherk/composables/date';
56
+ import {
57
+ useMaskedDateInput,
58
+ type DateChangePayload,
59
+ } from "@featherk/composables/date";
51
60
 
52
61
  // Date range input
53
- import { useMaskedDateRangeInput, type RangeChangePayload } from '@featherk/composables/range';
62
+ import {
63
+ useMaskedDateRangeInput,
64
+ type RangeChangePayload,
65
+ } from "@featherk/composables/range";
54
66
 
55
67
  // Time input
56
- import { useMaskedTimeInput, type TimeChangePayload } from '@featherk/composables/time';
68
+ import {
69
+ useMaskedTimeInput,
70
+ type TimeChangePayload,
71
+ } from "@featherk/composables/time";
57
72
 
58
73
  // Popup focus trap utilities
59
- import { usePopupTrap } from '@featherk/composables/trap';
74
+ import { usePopupTrap } from "@featherk/composables/trap";
60
75
 
61
76
  // Kendo Popup + Menu action-menu utilities
62
- import { usePopupMenu, type KendoMenuSelectEvent } from '@featherk/composables/menu';
77
+ import {
78
+ usePopupMenu,
79
+ type KendoMenuSelectEvent,
80
+ } from "@featherk/composables/menu";
63
81
 
64
82
  // Shared active-id bookkeeping for single-open grid or list patterns
65
- import { useActiveIdRegistry } from '@featherk/composables/registry';
83
+ import {
84
+ useActiveIdRegistry,
85
+ useExclusiveGroup,
86
+ } from "@featherk/composables/registry";
87
+
88
+ // Intersection observer utilities
89
+ import { useIntersectionObserver } from "@featherk/composables/observer";
90
+
91
+ // Component-scoped DOM ID utilities
92
+ import { useCompositeId } from "@featherk/composables/id";
66
93
 
67
94
  // Address utilities
68
- import { useZipTextBox, useUSAddress, type USAddressSubmitPayload } from '@featherk/composables/address';
95
+ import {
96
+ useZipTextBox,
97
+ useUSAddress,
98
+ type USAddressSubmitPayload,
99
+ } from "@featherk/composables/address";
69
100
 
70
101
  // Form utilities
71
- import { useFieldsetValidationKit, useFieldsetTouchTracker } from '@featherk/composables/form';
102
+ import {
103
+ useFieldsetValidationKit,
104
+ useFieldsetTouchTracker,
105
+ } from "@featherk/composables/form";
72
106
  ```
73
107
 
74
108
  Root imports (types are aliased to avoid name collisions):
@@ -89,11 +123,14 @@ import {
89
123
  usePopupMenu,
90
124
  type KendoMenuSelectEvent,
91
125
  useActiveIdRegistry,
126
+ useExclusiveGroup,
127
+ useIntersectionObserver,
128
+ useCompositeId,
92
129
  useZipTextBox,
93
130
  useUSAddress,
94
131
  useFieldsetValidationKit,
95
132
  useFieldsetTouchTracker,
96
- } from '@featherk/composables';
133
+ } from "@featherk/composables";
97
134
  ```
98
135
 
99
136
  `usePopupTrap` depends on VueUse integrations and focus-trap internally. Those runtime packages are shipped as regular dependencies of `@featherk/composables`, so consumers do not need to install them separately.
@@ -108,6 +145,7 @@ npm install vue
108
145
 
109
146
  ## Notes
110
147
 
148
+ - Every public feature area has a source `index.ts` barrel, is re-exported from the package root, and has a matching public package subpath. For example, import `useIntersectionObserver` from `@featherk/composables/observer`, `useCompositeId` from `@featherk/composables/id`, or either from the package root. Consumers should not import internal `dist` paths.
111
149
  - The runtime files for `useGridA11y`, `useGridActiveFilter`, and `useGridRowAction` live in `src/grid/`. All three are re-exported from the package root and from `@featherk/composables/grid` — no import path changes are needed by consumers.
112
150
 
113
151
  ## Changelog