@kouji-ui/core 0.9.0 → 0.9.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/fesm2022/kouji-ui-core.mjs +173 -42
- package/fesm2022/kouji-ui-core.mjs.map +1 -1
- package/package.json +1 -1
- package/types/kouji-ui-core.d.ts +20 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kouji-ui/core",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "Headless Angular UI primitives — signal-driven directives with WCAG 2.1 AAA semantics, no CDK, and a handful of opt-in global stylesheets.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
package/types/kouji-ui-core.d.ts
CHANGED
|
@@ -1215,7 +1215,10 @@ interface KjOverlayTriggerLike {
|
|
|
1215
1215
|
* must not inherit the dialog's scroll lock, scrim or `alertdialog` role.
|
|
1216
1216
|
* A panel whose controller is on its host chain (a builder-launched body,
|
|
1217
1217
|
* or the root pattern where one directive provides controller and
|
|
1218
|
-
* strategies for the whole subtree) reads them from that chain
|
|
1218
|
+
* strategies for the whole subtree) reads them from that chain, minus any
|
|
1219
|
+
* strategy instance an enclosing overlay is already running: a select inside
|
|
1220
|
+
* a service-launched dialog finds the dialog's scrim, focus trap and scroll
|
|
1221
|
+
* lock up the chain, and must not adopt them.
|
|
1219
1222
|
*
|
|
1220
1223
|
* A portalled panel whose scope provides a backdrop strategy also gets a
|
|
1221
1224
|
* real `<kj-backdrop>` scrim (created next to the panel, moved into the
|
|
@@ -1264,7 +1267,10 @@ declare class KjOverlayPanel {
|
|
|
1264
1267
|
readonly kjFor: _angular_core.InputSignal<KjOverlayTriggerLike | null>;
|
|
1265
1268
|
/** Whether the bound controller lives outside this panel's host chain — see the class docs. */
|
|
1266
1269
|
private readonly scoped;
|
|
1267
|
-
/**
|
|
1270
|
+
/**
|
|
1271
|
+
* The tokens that apply to this panel. Inherited ones exclude strategies an
|
|
1272
|
+
* enclosing overlay already runs (see {@link withoutForeign}).
|
|
1273
|
+
*/
|
|
1268
1274
|
private readonly tokens;
|
|
1269
1275
|
readonly role: _angular_core.Signal<KjPanelRole>;
|
|
1270
1276
|
readonly isModal: _angular_core.Signal<boolean>;
|
|
@@ -1549,7 +1555,9 @@ declare function releaseInert(el: Element): void;
|
|
|
1549
1555
|
* Makes everything behind a modal `panel` inert: every child of `<body>`
|
|
1550
1556
|
* outside the overlay container (except script/style nodes and live
|
|
1551
1557
|
* regions), plus every overlay wrapper opened before the panel's own — a
|
|
1552
|
-
* dialog stacked on a dialog freezes the one below.
|
|
1558
|
+
* dialog stacked on a dialog freezes the one below. The container itself is
|
|
1559
|
+
* never inerted, even for a panel mounted outside it, so overlays the modal
|
|
1560
|
+
* opens afterwards (dropdowns, pickers) stay usable. A body child that
|
|
1553
1561
|
* contains the panel (an inline-mounted modal) is left alone, because
|
|
1554
1562
|
* inerting it would inert the panel itself.
|
|
1555
1563
|
*
|
|
@@ -12386,11 +12394,20 @@ declare class KjTableKeyboardNav implements KjTableKeyboardNavContext {
|
|
|
12386
12394
|
private readonly cells;
|
|
12387
12395
|
/** Id of the cell the user focused last; survives the cell leaving the DOM. */
|
|
12388
12396
|
private readonly activeId;
|
|
12397
|
+
/** Tab stop resolved after the last render (see {@link tabStopId}). */
|
|
12398
|
+
private readonly resolvedStopId;
|
|
12389
12399
|
/**
|
|
12390
12400
|
* Id of the cell that owns `tabindex="0"`: the last focused cell while it
|
|
12391
12401
|
* is rendered, else the first rendered cell in DOM order.
|
|
12402
|
+
*
|
|
12403
|
+
* Every cell reads this, so it must not touch the `cells` query: each
|
|
12404
|
+
* stamped cell view dirties the query, and a per-cell read would re-collect
|
|
12405
|
+
* it and re-sort the DOM once per cell — O(n²) for an n-cell body. It is
|
|
12406
|
+
* resolved once per render instead, after the cells are in the DOM. Until
|
|
12407
|
+
* then (and on the server) no cell is a Tab stop.
|
|
12392
12408
|
*/
|
|
12393
12409
|
readonly tabStopId: _angular_core.Signal<string | null>;
|
|
12410
|
+
constructor();
|
|
12394
12411
|
/** Record `cellId` as the last focused cell. @param cellId TanStack `cell.id`. */
|
|
12395
12412
|
setActive(cellId: string): void;
|
|
12396
12413
|
onKeyDown(event: KeyboardEvent): void;
|