@ngneers/controls 0.0.1-next.0 → 0.0.1-next.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.
Files changed (119) hide show
  1. package/fesm2022/ngneers-controls-api-ng.mjs +11 -18
  2. package/fesm2022/ngneers-controls-api-ng.mjs.map +1 -1
  3. package/fesm2022/ngneers-controls-api-resize.mjs +7 -0
  4. package/fesm2022/ngneers-controls-api-resize.mjs.map +1 -1
  5. package/fesm2022/ngneers-controls-badge.mjs +160 -0
  6. package/fesm2022/ngneers-controls-badge.mjs.map +1 -0
  7. package/fesm2022/ngneers-controls-base.mjs +85 -8
  8. package/fesm2022/ngneers-controls-base.mjs.map +1 -1
  9. package/fesm2022/{ngneers-controls-calendar-time-CJT5AFlA.mjs → ngneers-controls-calendar-time-paM6WVpV.mjs} +2 -2
  10. package/fesm2022/{ngneers-controls-calendar-time-CJT5AFlA.mjs.map → ngneers-controls-calendar-time-paM6WVpV.mjs.map} +1 -1
  11. package/fesm2022/ngneers-controls-calendar.mjs +13 -6
  12. package/fesm2022/ngneers-controls-calendar.mjs.map +1 -1
  13. package/fesm2022/ngneers-controls-checkbox.mjs +3 -3
  14. package/fesm2022/ngneers-controls-checkbox.mjs.map +1 -1
  15. package/fesm2022/ngneers-controls-color-picker.mjs +336 -0
  16. package/fesm2022/ngneers-controls-color-picker.mjs.map +1 -0
  17. package/fesm2022/ngneers-controls-default-icons.mjs +5 -0
  18. package/fesm2022/ngneers-controls-default-icons.mjs.map +1 -1
  19. package/fesm2022/ngneers-controls-directives.mjs +64 -7
  20. package/fesm2022/ngneers-controls-directives.mjs.map +1 -1
  21. package/fesm2022/ngneers-controls-edit-inplace.mjs +15 -5
  22. package/fesm2022/ngneers-controls-edit-inplace.mjs.map +1 -1
  23. package/fesm2022/ngneers-controls-errors.mjs +203 -148
  24. package/fesm2022/ngneers-controls-errors.mjs.map +1 -1
  25. package/fesm2022/ngneers-controls-filter.mjs +2 -2
  26. package/fesm2022/ngneers-controls-filter.mjs.map +1 -1
  27. package/fesm2022/ngneers-controls-hint.mjs +18 -1
  28. package/fesm2022/ngneers-controls-hint.mjs.map +1 -1
  29. package/fesm2022/ngneers-controls-i18n-translations-de.mjs +17 -0
  30. package/fesm2022/ngneers-controls-i18n-translations-de.mjs.map +1 -1
  31. package/fesm2022/ngneers-controls-i18n-translations-en.mjs +19 -0
  32. package/fesm2022/ngneers-controls-i18n-translations-en.mjs.map +1 -1
  33. package/fesm2022/ngneers-controls-icon.mjs +23 -6
  34. package/fesm2022/ngneers-controls-icon.mjs.map +1 -1
  35. package/fesm2022/ngneers-controls-input-field.mjs +18 -2
  36. package/fesm2022/ngneers-controls-input-field.mjs.map +1 -1
  37. package/fesm2022/ngneers-controls-input.mjs +49 -9
  38. package/fesm2022/ngneers-controls-input.mjs.map +1 -1
  39. package/fesm2022/ngneers-controls-list-box.mjs +2 -2
  40. package/fesm2022/ngneers-controls-list-box.mjs.map +1 -1
  41. package/fesm2022/ngneers-controls-mask-input.mjs +4 -1
  42. package/fesm2022/ngneers-controls-mask-input.mjs.map +1 -1
  43. package/fesm2022/ngneers-controls-number-input.mjs +4 -4
  44. package/fesm2022/ngneers-controls-number-input.mjs.map +1 -1
  45. package/fesm2022/ngneers-controls-otp.mjs +263 -0
  46. package/fesm2022/ngneers-controls-otp.mjs.map +1 -0
  47. package/fesm2022/ngneers-controls-paginator.mjs +36 -9
  48. package/fesm2022/ngneers-controls-paginator.mjs.map +1 -1
  49. package/fesm2022/ngneers-controls-radio.mjs +4 -4
  50. package/fesm2022/ngneers-controls-radio.mjs.map +1 -1
  51. package/fesm2022/ngneers-controls-rating.mjs +180 -0
  52. package/fesm2022/ngneers-controls-rating.mjs.map +1 -0
  53. package/fesm2022/ngneers-controls-scroll-shadow.mjs +33 -7
  54. package/fesm2022/ngneers-controls-scroll-shadow.mjs.map +1 -1
  55. package/fesm2022/ngneers-controls-scroller.mjs +4 -2
  56. package/fesm2022/ngneers-controls-scroller.mjs.map +1 -1
  57. package/fesm2022/ngneers-controls-select-button.mjs +2 -1
  58. package/fesm2022/ngneers-controls-select-button.mjs.map +1 -1
  59. package/fesm2022/ngneers-controls-select.mjs +24 -4
  60. package/fesm2022/ngneers-controls-select.mjs.map +1 -1
  61. package/fesm2022/ngneers-controls-slider.mjs +3 -3
  62. package/fesm2022/ngneers-controls-slider.mjs.map +1 -1
  63. package/fesm2022/ngneers-controls-splitter.mjs +43 -12
  64. package/fesm2022/ngneers-controls-splitter.mjs.map +1 -1
  65. package/fesm2022/ngneers-controls-stepper.mjs +142 -0
  66. package/fesm2022/ngneers-controls-stepper.mjs.map +1 -0
  67. package/fesm2022/ngneers-controls-switch.mjs +3 -3
  68. package/fesm2022/ngneers-controls-switch.mjs.map +1 -1
  69. package/fesm2022/ngneers-controls-table.mjs +282 -15
  70. package/fesm2022/ngneers-controls-table.mjs.map +1 -1
  71. package/fesm2022/ngneers-controls-tabs.mjs +2 -2
  72. package/fesm2022/ngneers-controls-tabs.mjs.map +1 -1
  73. package/fesm2022/ngneers-controls-toggle-button.mjs +3 -3
  74. package/fesm2022/ngneers-controls-toggle-button.mjs.map +1 -1
  75. package/fesm2022/ngneers-controls-tooltip.mjs +16 -28
  76. package/fesm2022/ngneers-controls-tooltip.mjs.map +1 -1
  77. package/fesm2022/ngneers-controls-tree.mjs +2 -2
  78. package/fesm2022/ngneers-controls-tree.mjs.map +1 -1
  79. package/fesm2022/ngneers-controls-utils.mjs +138 -1
  80. package/fesm2022/ngneers-controls-utils.mjs.map +1 -1
  81. package/package.json +22 -2
  82. package/types/ngneers-controls-api-ng.d.ts +12 -9
  83. package/types/ngneers-controls-badge.d.ts +67 -0
  84. package/types/ngneers-controls-base.d.ts +61 -4
  85. package/types/ngneers-controls-breadcrumb.d.ts +17 -0
  86. package/types/ngneers-controls-calendar.d.ts +24 -6
  87. package/types/ngneers-controls-chip.d.ts +17 -0
  88. package/types/ngneers-controls-color-picker.d.ts +119 -0
  89. package/types/ngneers-controls-dialog.d.ts +17 -0
  90. package/types/ngneers-controls-directives.d.ts +31 -2
  91. package/types/ngneers-controls-drawer.d.ts +17 -0
  92. package/types/ngneers-controls-edit-inplace.d.ts +23 -0
  93. package/types/ngneers-controls-errors.d.ts +105 -16
  94. package/types/ngneers-controls-filter.d.ts +30 -13
  95. package/types/ngneers-controls-hint.d.ts +8 -1
  96. package/types/ngneers-controls-i18n-translations-de.d.ts +17 -0
  97. package/types/ngneers-controls-i18n-translations-en.d.ts +17 -0
  98. package/types/ngneers-controls-i18n.d.ts +17 -0
  99. package/types/ngneers-controls-icon.d.ts +2 -2
  100. package/types/ngneers-controls-input-field.d.ts +28 -2
  101. package/types/ngneers-controls-input.d.ts +35 -3
  102. package/types/ngneers-controls-list-box.d.ts +17 -0
  103. package/types/ngneers-controls-mask-input.d.ts +17 -0
  104. package/types/ngneers-controls-otp.d.ts +262 -0
  105. package/types/ngneers-controls-paginator.d.ts +34 -3
  106. package/types/ngneers-controls-rating.d.ts +69 -0
  107. package/types/ngneers-controls-scroll-shadow.d.ts +11 -2
  108. package/types/ngneers-controls-scroller.d.ts +3 -1
  109. package/types/ngneers-controls-select.d.ts +30 -3
  110. package/types/ngneers-controls-snackbar.d.ts +17 -0
  111. package/types/ngneers-controls-splitter.d.ts +26 -2
  112. package/types/ngneers-controls-state.d.ts +2 -2
  113. package/types/ngneers-controls-stepper.d.ts +68 -0
  114. package/types/ngneers-controls-table.d.ts +276 -169
  115. package/types/ngneers-controls-toast.d.ts +17 -0
  116. package/types/ngneers-controls-tooltip.d.ts +0 -1
  117. package/types/ngneers-controls-tree.d.ts +17 -0
  118. package/types/ngneers-controls-upload.d.ts +17 -0
  119. package/types/ngneers-controls-utils.d.ts +27 -2
@@ -109,7 +109,7 @@ type SelectFilterFn<T extends object> = FilterFn<NgnItem<T>>;
109
109
  */
110
110
  declare class NgnSelect<V, Editable extends boolean = false, Multiple extends boolean = false> extends SelectTemplates<V, Editable, Multiple> {
111
111
  readonly isFieldControl = true;
112
- protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"select", ["root", "combobox", "input", "icon", "input-editable", "popover-content", "filter-icon", "list-box-empty"], readonly [{
112
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"select", ["root", "combobox", "empty", "placeholder", "input", "icon", "input-editable", "popover-content", "filter-icon", "list-box-empty"], readonly [{
113
113
  readonly class: "popover";
114
114
  readonly template: _ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing"], readonly []>;
115
115
  }, {
@@ -123,7 +123,7 @@ declare class NgnSelect<V, Editable extends boolean = false, Multiple extends bo
123
123
  }]>;
124
124
  }, {
125
125
  readonly class: "filter";
126
- readonly template: _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [{
126
+ readonly template: _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "filled", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`, `kind-${string}`], readonly [{
127
127
  readonly class: "input";
128
128
  readonly template: _ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly []>;
129
129
  readonly projected: true;
@@ -225,6 +225,9 @@ declare class NgnSelect<V, Editable extends boolean = false, Multiple extends bo
225
225
  segmentRange: string;
226
226
  optionSeparator: string;
227
227
  };
228
+ otp: {
229
+ cellLabel: string;
230
+ };
228
231
  drawer: {
229
232
  close: string;
230
233
  };
@@ -282,6 +285,8 @@ declare class NgnSelect<V, Editable extends boolean = false, Multiple extends bo
282
285
  selectedCount: string;
283
286
  page: string;
284
287
  resultCount: string;
288
+ retry: string;
289
+ loadError: string;
285
290
  };
286
291
  state: {
287
292
  loading: string;
@@ -290,6 +295,18 @@ declare class NgnSelect<V, Editable extends boolean = false, Multiple extends bo
290
295
  error: string;
291
296
  cancelled: string;
292
297
  };
298
+ errors: {
299
+ pending: string;
300
+ required: string;
301
+ email: string;
302
+ minlength: string;
303
+ maxlength: string;
304
+ minLength: string;
305
+ maxLength: string;
306
+ min: string;
307
+ max: string;
308
+ pattern: string;
309
+ };
293
310
  }, "_">;
294
311
  private readonly _popover;
295
312
  private readonly _field;
@@ -374,7 +391,17 @@ declare class NgnSelect<V, Editable extends boolean = false, Multiple extends bo
374
391
  * @default multiple()
375
392
  */
376
393
  readonly checkbox: _angular_core.InputSignal<boolean | undefined>;
394
+ /**
395
+ * Text shown in the trigger when no value is selected.
396
+ * @default undefined
397
+ */
398
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
377
399
  protected readonly maybeCallback: typeof maybeCallback;
400
+ /**
401
+ * Whether the control holds no value. Drives the empty status class and lets a
402
+ * wrapping {@link NgnInputField} float its label. See {@link value}.
403
+ */
404
+ readonly empty: Signal<boolean>;
378
405
  private readonly _listbox;
379
406
  private _userChangedEditableInput;
380
407
  protected get anchorElement(): HTMLElement;
@@ -402,7 +429,7 @@ declare class NgnSelect<V, Editable extends boolean = false, Multiple extends bo
402
429
  protected onEditableChange(value: string | null): void;
403
430
  protected potentiallyBlurred(): void;
404
431
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnSelect<any, any, any>, never>;
405
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnSelect<any, any, any>, "ngn-select", never, { "popoverOptions": { "alias": "popoverOptions"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterText": { "alias": "filterText"; "required": false; "isSignal": true; }; "iconFilter": { "alias": "iconFilter"; "required": false; "isSignal": true; }; "iconDropdown": { "alias": "iconDropdown"; "required": false; "isSignal": true; }; "virtual": { "alias": "virtual"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "editableAutoFilter": { "alias": "editableAutoFilter"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "scrollToSelectedItemOnOpen": { "alias": "scrollToSelectedItemOnOpen"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; "checkbox": { "alias": "checkbox"; "required": false; "isSignal": true; }; }, {}, ["_customEditableInput"], ["[ngnInput]"], true, never>;
432
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnSelect<any, any, any>, "ngn-select", never, { "popoverOptions": { "alias": "popoverOptions"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterText": { "alias": "filterText"; "required": false; "isSignal": true; }; "iconFilter": { "alias": "iconFilter"; "required": false; "isSignal": true; }; "iconDropdown": { "alias": "iconDropdown"; "required": false; "isSignal": true; }; "virtual": { "alias": "virtual"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "editableAutoFilter": { "alias": "editableAutoFilter"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "scrollToSelectedItemOnOpen": { "alias": "scrollToSelectedItemOnOpen"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; "checkbox": { "alias": "checkbox"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, ["_customEditableInput"], ["[ngnInput]"], true, never>;
406
433
  }
407
434
 
408
435
  export { NgnSelect };
@@ -164,6 +164,9 @@ declare class NgnSnackbar extends SnackbarTemplates implements OnInit {
164
164
  segmentRange: string;
165
165
  optionSeparator: string;
166
166
  };
167
+ otp: {
168
+ cellLabel: string;
169
+ };
167
170
  drawer: {
168
171
  close: string;
169
172
  };
@@ -221,6 +224,8 @@ declare class NgnSnackbar extends SnackbarTemplates implements OnInit {
221
224
  selectedCount: string;
222
225
  page: string;
223
226
  resultCount: string;
227
+ retry: string;
228
+ loadError: string;
224
229
  };
225
230
  state: {
226
231
  loading: string;
@@ -229,6 +234,18 @@ declare class NgnSnackbar extends SnackbarTemplates implements OnInit {
229
234
  error: string;
230
235
  cancelled: string;
231
236
  };
237
+ errors: {
238
+ pending: string;
239
+ required: string;
240
+ email: string;
241
+ minlength: string;
242
+ maxlength: string;
243
+ minLength: string;
244
+ maxLength: string;
245
+ min: string;
246
+ max: string;
247
+ pattern: string;
248
+ };
232
249
  }, "_">;
233
250
  private readonly _host;
234
251
  /** Heading text shown at the top of the snackbar. Overridden by {@link templateHeader}. */
@@ -276,6 +276,9 @@ declare class NgnSplitter extends NgnBase<'splitter'> implements OnDestroy {
276
276
  segmentRange: string;
277
277
  optionSeparator: string;
278
278
  };
279
+ otp: {
280
+ cellLabel: string;
281
+ };
279
282
  drawer: {
280
283
  close: string;
281
284
  };
@@ -333,6 +336,8 @@ declare class NgnSplitter extends NgnBase<'splitter'> implements OnDestroy {
333
336
  selectedCount: string;
334
337
  page: string;
335
338
  resultCount: string;
339
+ retry: string;
340
+ loadError: string;
336
341
  };
337
342
  state: {
338
343
  loading: string;
@@ -341,6 +346,18 @@ declare class NgnSplitter extends NgnBase<'splitter'> implements OnDestroy {
341
346
  error: string;
342
347
  cancelled: string;
343
348
  };
349
+ errors: {
350
+ pending: string;
351
+ required: string;
352
+ email: string;
353
+ minlength: string;
354
+ maxlength: string;
355
+ minLength: string;
356
+ maxLength: string;
357
+ min: string;
358
+ max: string;
359
+ pattern: string;
360
+ };
344
361
  }, "_">;
345
362
  /**
346
363
  * The layout of the splitter.
@@ -443,13 +460,20 @@ declare class NgnSplitter extends NgnBase<'splitter'> implements OnDestroy {
443
460
  private onStateLoad;
444
461
  private ensureValidState;
445
462
  private applyFromState;
463
+ /** Cached divider positions (percentage) measured post-layout; see the after-render effect in the constructor. */
464
+ private readonly _dividerValues;
446
465
  /**
447
466
  * The divider's current position as a percentage (0–100) of the total panel
448
467
  * content size, used for `aria-valuenow` on the `role="separator"` handle.
449
- * Reads `gridTemplateSizes()` to stay reactive to resizes, then measures the
450
- * rendered panel sizes on either side of the divider.
468
+ * Reads the cached value measured in the after-render phase.
451
469
  */
452
470
  protected dividerValueNow(index: number): number;
471
+ /**
472
+ * Measures each divider's position as a percentage (0–100) of the total panel
473
+ * content size. Reads `gridTemplateSizes()`, `elementSize()` and `dragContext()`
474
+ * as reactive triggers, then measures the rendered panel sizes.
475
+ */
476
+ private measureDividerValues;
453
477
  private getStepInPx;
454
478
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnSplitter, never>;
455
479
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnSplitter, "ngn-splitter", never, { "layout": { "alias": "layout"; "required": true; "isSignal": true; }; "panelOrder": { "alias": "panelOrder"; "required": false; "isSignal": true; }; "stateStorage": { "alias": "stateStorage"; "required": false; "isSignal": true; }; "stateKey": { "alias": "stateKey"; "required": false; "isSignal": true; }; "stateData": { "alias": "stateData"; "required": false; "isSignal": true; }; "calculatorType": { "alias": "calculatorType"; "required": false; "isSignal": true; }; "resizeMode": { "alias": "resizeMode"; "required": false; "isSignal": true; }; "lockSizes": { "alias": "lockSizes"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, { "layout": "layoutChange"; "panelOrder": "panelOrderChange"; "stateSaving": "stateSaving"; "stateLoading": "stateLoading"; }, ["panels"], ["*"], true, never>;
@@ -75,7 +75,7 @@ declare class NgnState extends NgnBase<'state'> {
75
75
  readonly projected: true;
76
76
  }, {
77
77
  readonly class: "input-field";
78
- readonly template: _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [{
78
+ readonly template: _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "filled", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`, `kind-${string}`], readonly [{
79
79
  readonly class: "input";
80
80
  readonly template: _ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly []>;
81
81
  readonly projected: true;
@@ -83,7 +83,7 @@ declare class NgnState extends NgnBase<'state'> {
83
83
  readonly projected: true;
84
84
  }]>>;
85
85
  protected readonly icon: _angular_core.Signal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry | undefined>;
86
- protected readonly defaultIcon: _angular_core.Signal<"accordion-collapse" | "accordion-expand" | "breadcrumb-separator" | "breadcrumb-overflow" | "calendar-trigger" | "calendar-previous-month" | "calendar-next-month" | "checkbox-checked" | "checkbox-indeterminate" | "chip-remove" | "dialog-close" | "drawer-close" | "dropdown-toggle" | "edit-confirm" | "filter-active" | "filter-inactive" | "filter-remove" | "hint-info" | "hint-success" | "hint-warning" | "hint-error" | "input-clear" | "menu-submenu" | "paginator-previous" | "paginator-next" | "search" | "sort-neutral" | "sort-ascending" | "sort-descending" | "spin-decrement" | "spin-increment" | "table-group-toggle" | "tabs-scroll-left" | "tabs-scroll-right" | "toast-close" | "snackbar-close" | "upload-trigger" | "upload-done" | "upload-failed" | "upload-retry" | "upload-cancel" | "upload-remove" | undefined>;
86
+ protected readonly defaultIcon: _angular_core.Signal<"accordion-collapse" | "accordion-expand" | "breadcrumb-separator" | "breadcrumb-overflow" | "calendar-trigger" | "calendar-previous-month" | "calendar-next-month" | "checkbox-checked" | "checkbox-indeterminate" | "chip-remove" | "dialog-close" | "drawer-close" | "dropdown-toggle" | "edit-confirm" | "filter-active" | "filter-inactive" | "filter-remove" | "hint-info" | "hint-success" | "hint-warning" | "hint-error" | "input-clear" | "menu-submenu" | "paginator-previous" | "paginator-next" | "rating-full" | "rating-empty" | "search" | "sort-neutral" | "sort-ascending" | "sort-descending" | "spin-decrement" | "spin-increment" | "stepper-completed" | "table-group-toggle" | "tabs-scroll-left" | "tabs-scroll-right" | "toast-close" | "snackbar-close" | "upload-trigger" | "upload-done" | "upload-failed" | "upload-retry" | "upload-cancel" | "upload-remove" | undefined>;
87
87
  /**
88
88
  * Accessible label for the current state: the explicit {@link label} input,
89
89
  * else a localized default for the applied kind. `undefined` when the
@@ -0,0 +1,68 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
+ import * as _ngneers_controls_api_ng from '@ngneers/controls/api/ng';
4
+ import * as _ngneers_controls_themes from '@ngneers/controls-themes';
5
+ import { NgnBase } from '@ngneers/controls/base';
6
+ import * as _ngneers_controls_custom_types from '@ngneers/controls-custom-types';
7
+ import * as _iconify_types from '@iconify/types';
8
+
9
+ /**
10
+ * A single step within an `ngn-stepper`. Declares the step's header metadata and
11
+ * projects its content via `<ng-template #content>`.
12
+ * @category control
13
+ */
14
+ declare class NgnStep extends NgnBase<'stepper'> {
15
+ protected readonly theme: null;
16
+ /** The step's header label. */
17
+ readonly label: _angular_core.InputSignal<string>;
18
+ /** Custom marker icon; when unset the 1-based step number is shown. */
19
+ readonly iconStep: _angular_core.InputSignal<_iconify_types.IconifyIcon | _ngneers_controls_custom_types.NgnIconEntry | undefined>;
20
+ /** Marks the step optional (shown as a hint; skippable in linear mode). @default false */
21
+ readonly optional: _angular_core.InputSignalWithTransform<boolean, unknown>;
22
+ /** Disables navigation to this step. @default false */
23
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
24
+ /** Renders the step's marker in an error state. @default false */
25
+ readonly error: _angular_core.InputSignalWithTransform<boolean, unknown>;
26
+ /**
27
+ * Whether the step is complete. The app sets this; in linear mode it gates
28
+ * forward navigation past this step. @default false
29
+ */
30
+ readonly completed: _angular_core.ModelSignal<boolean>;
31
+ readonly content: _angular_core.Signal<TemplateRef<unknown> | undefined>;
32
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnStep, never>;
33
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnStep, "ngn-step", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "iconStep": { "alias": "iconStep"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "completed": { "alias": "completed"; "required": false; "isSignal": true; }; }, { "completed": "completedChange"; }, ["content"], never, true, never>;
34
+ }
35
+
36
+ /**
37
+ * @category control
38
+ */
39
+ declare class NgnStepper extends NgnBase<'stepper'> {
40
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"stepper", ["root", "header", "step", "marker", "marker-index", "marker-icon", "connector", "label", "optional", "content", "active", "completed", "error", "disabled"], readonly []>>;
41
+ protected readonly steps: _angular_core.Signal<readonly NgnStep[]>;
42
+ /** The header buttons' roving items, in step order (one per step; connectors are plain spans). */
43
+ private readonly _rovingItems;
44
+ /** The active step index (zero-based). @default 0 */
45
+ readonly active: _angular_core.ModelSignal<number>;
46
+ /** Gate forward navigation on prior steps being `completed`. @default false */
47
+ readonly linear: _angular_core.InputSignalWithTransform<boolean, unknown>;
48
+ /** Lazily render step content (forwarded to `ngn-defer`). @default true */
49
+ readonly lazy: _angular_core.InputSignalWithTransform<boolean, unknown>;
50
+ /** Keep opened step content in the DOM to preserve state (forwarded to `ngn-defer`). @default true */
51
+ readonly cache: _angular_core.InputSignalWithTransform<boolean, unknown>;
52
+ /**
53
+ * Index of the first step that is not yet completed (the furthest reachable in linear mode).
54
+ * Optional steps are exempt — an incomplete optional step never blocks forward progress.
55
+ */
56
+ private readonly _firstIncomplete;
57
+ constructor();
58
+ /** Whether navigation to `index` is currently permitted. */
59
+ canGoTo(index: number): boolean;
60
+ goTo(index: number): void;
61
+ next(): void;
62
+ previous(): void;
63
+ protected onHeaderActivate(index: number): void;
64
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnStepper, never>;
65
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnStepper, "ngn-stepper", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "cache": { "alias": "cache"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, ["steps"], never, true, never>;
66
+ }
67
+
68
+ export { NgnStep, NgnStepper };