@akcelik/strct 1.16.0 → 1.19.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": "@akcelik/strct",
3
- "version": "1.16.0",
3
+ "version": "1.19.0",
4
4
  "description": "UIStruct — a standalone Angular component library with a tokenised, multi-palette theme system, built for datacenter / infrastructure management UIs.",
5
5
  "author": "Serkan Akcelik <serkan.akcelik@gmail.com>",
6
6
  "license": "MIT",
@@ -1231,10 +1231,23 @@ declare class StrctDropdown {
1231
1231
  readonly popoverLabel: _angular_core.InputSignal<string>;
1232
1232
  readonly open: _angular_core.WritableSignal<boolean>;
1233
1233
  constructor();
1234
+ /** Where focus was when the menu opened — restored on Escape/selection. */
1235
+ private lastFocused;
1234
1236
  toggle(): void;
1235
- close(): void;
1236
- /** Menu items close on activation; popover form controls never do. */
1237
- protected onInnerActivate(): void;
1237
+ /** Open (if closed) and move focus into the menu — ArrowDown on the trigger. */
1238
+ openMenu(): void;
1239
+ close(restoreFocus?: boolean): void;
1240
+ /**
1241
+ * Menu mode closes ONLY on a real item activation — a click that lands on
1242
+ * the menu's padding or a divider (a 2px miss) keeps it open instead of
1243
+ * throwing the whole interaction away. Popover form controls never close.
1244
+ */
1245
+ protected onInnerActivate(event: Event): void;
1246
+ /** APG menu keyboarding: arrows rove, Home/End jump, Enter/Space activate. */
1247
+ protected onMenuKeydown(event: KeyboardEvent): void;
1248
+ private enabledItems;
1249
+ /** Focus the selected item if there is one, else the first — after render. */
1250
+ private focusInitialItem;
1238
1251
  protected onDocClick(event: MouseEvent): void;
1239
1252
  protected onEscape(): void;
1240
1253
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdown, never>;
@@ -1247,17 +1260,25 @@ declare class StrctDropdown {
1247
1260
  */
1248
1261
  declare class StrctDropdownTrigger {
1249
1262
  protected readonly dd: StrctDropdown | null;
1263
+ protected onArrowDown(event: Event): void;
1250
1264
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdownTrigger, never>;
1251
1265
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctDropdownTrigger, "[strctDropdownTrigger]", never, {}, {}, never, never, true, never>;
1252
1266
  }
1253
1267
  /** A selectable row inside a `<strct-dropdown>`. */
1254
1268
  declare class StrctDropdownItem {
1269
+ /**
1270
+ * Select-like usage: bind `selected` and the item becomes a
1271
+ * `menuitemradio` with `aria-checked`, a leading ✓ on the current choice
1272
+ * and an aligned lead slot — so reopening the menu shows what is chosen.
1273
+ * Leave unbound for plain action items.
1274
+ */
1275
+ readonly selected: _angular_core.InputSignal<boolean | null>;
1255
1276
  /** Danger. */
1256
1277
  readonly critical: _angular_core.InputSignalWithTransform<boolean, unknown>;
1257
1278
  /** Static disable flag. */
1258
1279
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1259
1280
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdownItem, never>;
1260
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdownItem, "strct-dropdown-item", never, { "critical": { "alias": "critical"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1281
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdownItem, "strct-dropdown-item", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "critical": { "alias": "critical"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1261
1282
  }
1262
1283
  /** Thin separator between groups of menu items. */
1263
1284
  declare class StrctDropdownDivider {
@@ -1358,7 +1379,7 @@ declare function provideStrctWizardDefaults(defaults: StrctWizardDefaults): Prov
1358
1379
  * rail — dashed-ring states (idle ⊙ / active ●⊙ / done ✓), a progress bar
1359
1380
  * with an “n/N” counter, and click-back navigation to visited steps — plus an
1360
1381
  * optional right column projected via `strctWizardAside` (live summaries).
1361
- * The rail never flips horizontal: under ~720px of component width it
1382
+ * The rail never flips horizontal: under ~700px of component width it
1362
1383
  * collapses to a compact vertical ring column (container query).
1363
1384
  *
1364
1385
  * <strct-wizard vertical title="Create virtual machine">
@@ -1396,6 +1417,13 @@ declare class StrctWizard {
1396
1417
  readonly flush: _angular_core.InputSignalWithTransform<boolean, unknown>;
1397
1418
  /** Rail heading shown above the progress bar (vertical mode). */
1398
1419
  readonly title: _angular_core.InputSignal<string>;
1420
+ /**
1421
+ * Name the content pane after the active step (vertical mode): the step's
1422
+ * `label` as a heading, its `description` as the lede. In the compact
1423
+ * narrow rail this is the only visible step name. On by default;
1424
+ * `[contentHeader]="false"` opts out.
1425
+ */
1426
+ readonly contentHeader: _angular_core.InputSignalWithTransform<boolean, unknown>;
1399
1427
  /** Label for the final-step button (default "Finish"). */
1400
1428
  readonly finishLabel: _angular_core.InputSignal<string>;
1401
1429
  /** Labels for the Back / Next / Cancel buttons (localizable). */
@@ -1421,6 +1449,7 @@ declare class StrctWizard {
1421
1449
  /** Furthest step reached — drives the progress bar and rail clickability. */
1422
1450
  protected readonly maxVisited: _angular_core.WritableSignal<number>;
1423
1451
  protected readonly progressPct: _angular_core.Signal<number>;
1452
+ protected readonly activeStep: _angular_core.Signal<StrctStep>;
1424
1453
  protected readonly isLast: _angular_core.Signal<boolean>;
1425
1454
  /** Whether the current step permits advancing (its `canAdvance`). */
1426
1455
  protected readonly canAdvance: _angular_core.Signal<boolean>;
@@ -1431,7 +1460,7 @@ declare class StrctWizard {
1431
1460
  goTo(index: number): void;
1432
1461
  finish(): void;
1433
1462
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctWizard, never>;
1434
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctWizard, "strct-wizard", never, { "current": { "alias": "current"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "finishLabel": { "alias": "finishLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "submittingLabel": { "alias": "submittingLabel"; "required": false; "isSignal": true; }; "progressLabel": { "alias": "progressLabel"; "required": false; "isSignal": true; }; "stepsLabel": { "alias": "stepsLabel"; "required": false; "isSignal": true; }; "submitting": { "alias": "submitting"; "required": false; "isSignal": true; }; "cancelable": { "alias": "cancelable"; "required": false; "isSignal": true; }; }, { "current": "currentChange"; "finished": "finished"; "cancelled": "cancelled"; "stepChange": "stepChange"; }, ["steps", "asideDef"], ["*", "[strctWizardAside]"], true, never>;
1463
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctWizard, "strct-wizard", never, { "current": { "alias": "current"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "contentHeader": { "alias": "contentHeader"; "required": false; "isSignal": true; }; "finishLabel": { "alias": "finishLabel"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "submittingLabel": { "alias": "submittingLabel"; "required": false; "isSignal": true; }; "progressLabel": { "alias": "progressLabel"; "required": false; "isSignal": true; }; "stepsLabel": { "alias": "stepsLabel"; "required": false; "isSignal": true; }; "submitting": { "alias": "submitting"; "required": false; "isSignal": true; }; "cancelable": { "alias": "cancelable"; "required": false; "isSignal": true; }; }, { "current": "currentChange"; "finished": "finished"; "cancelled": "cancelled"; "stepChange": "stepChange"; }, ["steps", "asideDef"], ["*", "[strctWizardAside]"], true, never>;
1435
1464
  }
1436
1465
 
1437
1466
  /**