@kouji-ui/core 0.11.1 → 0.12.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kouji-ui/core",
3
- "version": "0.11.1",
3
+ "version": "0.12.0",
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": {
@@ -2527,6 +2527,12 @@ declare class KjListNavigator {
2527
2527
  readonly kjPageSize: _angular_core.InputSignal<number>;
2528
2528
  /** Activate item on pointer hover. Default: `false`. */
2529
2529
  readonly kjActivateOnHover: _angular_core.InputSignalWithTransform<boolean, unknown>;
2530
+ /**
2531
+ * Publish `aria-activedescendant` on this host in `'activedescendant'`
2532
+ * mode. Turn off when another element keeps DOM focus and publishes
2533
+ * `activeId` itself (a search field above the list). Default: `true`.
2534
+ */
2535
+ readonly kjHostActiveDescendant: _angular_core.InputSignalWithTransform<boolean, unknown>;
2530
2536
  /**
2531
2537
  * Focus model. `'activedescendant'` (default) keeps DOM focus on the
2532
2538
  * navigator host and signals the active option via
@@ -2630,7 +2636,7 @@ declare class KjListNavigator {
2630
2636
  /** @internal Keydown handler bound via host binding. */
2631
2637
  _onKeydown(e: KeyboardEvent): void;
2632
2638
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjListNavigator, never>;
2633
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KjListNavigator, "[kjListNavigator]", ["kjListNavigator"], { "kjOrientation": { "alias": "kjOrientation"; "required": false; "isSignal": true; }; "kjWrap": { "alias": "kjWrap"; "required": false; "isSignal": true; }; "kjPageSize": { "alias": "kjPageSize"; "required": false; "isSignal": true; }; "kjActivateOnHover": { "alias": "kjActivateOnHover"; "required": false; "isSignal": true; }; "kjFocusMode": { "alias": "kjFocusMode"; "required": false; "isSignal": true; }; }, { "kjActiveChange": "kjActiveChange"; }, never, never, true, never>;
2639
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KjListNavigator, "[kjListNavigator]", ["kjListNavigator"], { "kjOrientation": { "alias": "kjOrientation"; "required": false; "isSignal": true; }; "kjWrap": { "alias": "kjWrap"; "required": false; "isSignal": true; }; "kjPageSize": { "alias": "kjPageSize"; "required": false; "isSignal": true; }; "kjActivateOnHover": { "alias": "kjActivateOnHover"; "required": false; "isSignal": true; }; "kjHostActiveDescendant": { "alias": "kjHostActiveDescendant"; "required": false; "isSignal": true; }; "kjFocusMode": { "alias": "kjFocusMode"; "required": false; "isSignal": true; }; }, { "kjActiveChange": "kjActiveChange"; }, never, never, true, never>;
2634
2640
  }
2635
2641
 
2636
2642
  /**
@@ -14453,6 +14459,8 @@ declare class KjSelect implements KjListNavigatorConfig {
14453
14459
  readonly _multiple: WritableSignal<boolean>;
14454
14460
  /** Whether multi-select is enabled. */
14455
14461
  readonly multiple: Signal<boolean>;
14462
+ /** @internal — written by `KjSelectContent`'s `kjSearchable` input. */
14463
+ readonly _searchable: WritableSignal<boolean>;
14456
14464
  /** @internal — set by `KjSelectTrigger` at construction time. */
14457
14465
  readonly _triggerEl: WritableSignal<ElementRef<HTMLElement> | null>;
14458
14466
  /**
@@ -14478,6 +14486,12 @@ declare class KjSelect implements KjListNavigatorConfig {
14478
14486
  * not to this one.
14479
14487
  */
14480
14488
  readonly items: Signal<readonly KjListItem<unknown>[]>;
14489
+ /**
14490
+ * Implements `KjListNavigatorConfig.visibleItems`: the items a wrapper has
14491
+ * not hidden through `KjListItem.setVisible` (a search filter, a folded
14492
+ * group). The navigator and type-ahead walk only these.
14493
+ */
14494
+ readonly visibleItems: Signal<KjListItem<unknown>[]>;
14481
14495
  /** Implements `KjListNavigatorConfig.mode`. */
14482
14496
  readonly mode: Signal<KjListSelectionMode>;
14483
14497
  /** Implements `KjListNavigatorConfig.compareBy`. */
@@ -14515,7 +14529,7 @@ declare class KjSelect implements KjListNavigatorConfig {
14515
14529
  declare class KjSelectTrigger {
14516
14530
  /** @internal — same instance as the one provided on KjSelect root. */
14517
14531
  readonly controller: KjOverlayController;
14518
- private readonly select;
14532
+ protected readonly select: _kouji_ui_core.KjSelect | null;
14519
14533
  /** Whether the listbox supports multiple selection (absorbs `multi-select`). Defaults to `false`. */
14520
14534
  readonly kjMultiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
14521
14535
  /**
@@ -14611,9 +14625,15 @@ declare class KjSelectContent {
14611
14625
  readonly kjAlign: _angular_core.InputSignal<KjAlign>;
14612
14626
  /** Pixel offset between trigger and panel. */
14613
14627
  readonly kjOffset: _angular_core.InputSignalWithTransform<number, unknown>;
14628
+ /**
14629
+ * The panel holds a search field above an inner listbox the consumer
14630
+ * renders: the panel becomes `role="dialog"` and the trigger advertises
14631
+ * `aria-haspopup="dialog"`. Defaults to `false`.
14632
+ */
14633
+ readonly kjSearchable: _angular_core.InputSignalWithTransform<boolean, unknown>;
14614
14634
  constructor();
14615
14635
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KjSelectContent, never>;
14616
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjSelectContent, "kj-select-content", never, { "kjSide": { "alias": "kjSide"; "required": false; "isSignal": true; }; "kjAlign": { "alias": "kjAlign"; "required": false; "isSignal": true; }; "kjOffset": { "alias": "kjOffset"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof KjOverlayPanel; inputs: { "kjFor": "kjFor"; }; outputs: {}; }, { directive: typeof KjListNavigator; inputs: {}; outputs: {}; }, { directive: typeof KjListPanelFocus; inputs: {}; outputs: {}; }]>;
14636
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KjSelectContent, "kj-select-content", never, { "kjSide": { "alias": "kjSide"; "required": false; "isSignal": true; }; "kjAlign": { "alias": "kjAlign"; "required": false; "isSignal": true; }; "kjOffset": { "alias": "kjOffset"; "required": false; "isSignal": true; }; "kjSearchable": { "alias": "kjSearchable"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof KjOverlayPanel; inputs: { "kjFor": "kjFor"; }; outputs: {}; }, { directive: typeof KjListNavigator; inputs: { "kjFocusMode": "kjFocusMode"; "kjHostActiveDescendant": "kjHostActiveDescendant"; }; outputs: {}; }, { directive: typeof KjListPanelFocus; inputs: {}; outputs: {}; }]>;
14617
14637
  }
14618
14638
 
14619
14639
  /**