@ngneers/controls 0.0.1-pre5 → 0.0.1-pre6

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 (120) hide show
  1. package/fesm2022/ngneers-controls-accordion.mjs +32 -32
  2. package/fesm2022/ngneers-controls-accordion.mjs.map +1 -1
  3. package/fesm2022/ngneers-controls-api-ng.mjs +19 -19
  4. package/fesm2022/ngneers-controls-api-ng.mjs.map +1 -1
  5. package/fesm2022/ngneers-controls-api-resize.mjs +706 -0
  6. package/fesm2022/ngneers-controls-api-resize.mjs.map +1 -0
  7. package/fesm2022/ngneers-controls-avatar.mjs +13 -13
  8. package/fesm2022/ngneers-controls-avatar.mjs.map +1 -1
  9. package/fesm2022/ngneers-controls-base.mjs +89 -64
  10. package/fesm2022/ngneers-controls-base.mjs.map +1 -1
  11. package/fesm2022/ngneers-controls-breadcrumb.mjs +18 -18
  12. package/fesm2022/ngneers-controls-breadcrumb.mjs.map +1 -1
  13. package/fesm2022/ngneers-controls-button-group.mjs +8 -8
  14. package/fesm2022/ngneers-controls-button-group.mjs.map +1 -1
  15. package/fesm2022/ngneers-controls-button.mjs +15 -10
  16. package/fesm2022/ngneers-controls-button.mjs.map +1 -1
  17. package/fesm2022/{ngneers-controls-calendar-time-BEeJIqIX.mjs → ngneers-controls-calendar-time-Bzlv9Vkn.mjs} +9 -9
  18. package/fesm2022/{ngneers-controls-calendar-time-BEeJIqIX.mjs.map → ngneers-controls-calendar-time-Bzlv9Vkn.mjs.map} +1 -1
  19. package/fesm2022/ngneers-controls-calendar.mjs +54 -54
  20. package/fesm2022/ngneers-controls-calendar.mjs.map +1 -1
  21. package/fesm2022/ngneers-controls-checkbox.mjs +9 -9
  22. package/fesm2022/ngneers-controls-checkbox.mjs.map +1 -1
  23. package/fesm2022/ngneers-controls-chip.mjs +6 -6
  24. package/fesm2022/ngneers-controls-chip.mjs.map +1 -1
  25. package/fesm2022/ngneers-controls-defer.mjs +10 -10
  26. package/fesm2022/ngneers-controls-defer.mjs.map +1 -1
  27. package/fesm2022/ngneers-controls-dialog.mjs +37 -39
  28. package/fesm2022/ngneers-controls-dialog.mjs.map +1 -1
  29. package/fesm2022/ngneers-controls-directives.mjs +45 -39
  30. package/fesm2022/ngneers-controls-directives.mjs.map +1 -1
  31. package/fesm2022/ngneers-controls-drawer.mjs +28 -28
  32. package/fesm2022/ngneers-controls-drawer.mjs.map +1 -1
  33. package/fesm2022/ngneers-controls-edit-inplace.mjs +15 -15
  34. package/fesm2022/ngneers-controls-edit-inplace.mjs.map +1 -1
  35. package/fesm2022/ngneers-controls-filter.mjs +192 -44
  36. package/fesm2022/ngneers-controls-filter.mjs.map +1 -1
  37. package/fesm2022/{ngneers-controls-i18n-de-CdTPeBiR.mjs → ngneers-controls-i18n-de-CF0xTWEX.mjs} +9 -5
  38. package/fesm2022/ngneers-controls-i18n-de-CF0xTWEX.mjs.map +1 -0
  39. package/fesm2022/{ngneers-controls-i18n-en-Cfp2pOLY.mjs → ngneers-controls-i18n-en-8B7xAjH2.mjs} +9 -5
  40. package/fesm2022/ngneers-controls-i18n-en-8B7xAjH2.mjs.map +1 -0
  41. package/fesm2022/ngneers-controls-i18n.mjs +5 -5
  42. package/fesm2022/ngneers-controls-i18n.mjs.map +1 -1
  43. package/fesm2022/ngneers-controls-icon.mjs +10 -10
  44. package/fesm2022/ngneers-controls-icon.mjs.map +1 -1
  45. package/fesm2022/ngneers-controls-inplace.mjs +18 -18
  46. package/fesm2022/ngneers-controls-inplace.mjs.map +1 -1
  47. package/fesm2022/ngneers-controls-input-field.mjs +14 -14
  48. package/fesm2022/ngneers-controls-input-field.mjs.map +1 -1
  49. package/fesm2022/ngneers-controls-input-mask.mjs +8 -8
  50. package/fesm2022/ngneers-controls-input-mask.mjs.map +1 -1
  51. package/fesm2022/ngneers-controls-input.mjs +6 -6
  52. package/fesm2022/ngneers-controls-input.mjs.map +1 -1
  53. package/fesm2022/ngneers-controls-item-view.mjs +33 -33
  54. package/fesm2022/ngneers-controls-item-view.mjs.map +1 -1
  55. package/fesm2022/ngneers-controls-list-box.mjs +31 -31
  56. package/fesm2022/ngneers-controls-list-box.mjs.map +1 -1
  57. package/fesm2022/ngneers-controls-menu.mjs +32 -32
  58. package/fesm2022/ngneers-controls-menu.mjs.map +1 -1
  59. package/fesm2022/ngneers-controls-message.mjs +4 -4
  60. package/fesm2022/ngneers-controls-message.mjs.map +1 -1
  61. package/fesm2022/ngneers-controls-paginator.mjs +12 -12
  62. package/fesm2022/ngneers-controls-paginator.mjs.map +1 -1
  63. package/fesm2022/ngneers-controls-popover.mjs +13 -13
  64. package/fesm2022/ngneers-controls-popover.mjs.map +1 -1
  65. package/fesm2022/ngneers-controls-progress.mjs +16 -16
  66. package/fesm2022/ngneers-controls-progress.mjs.map +1 -1
  67. package/fesm2022/ngneers-controls-scroller.mjs +74 -39
  68. package/fesm2022/ngneers-controls-scroller.mjs.map +1 -1
  69. package/fesm2022/ngneers-controls-select-button.mjs +6 -6
  70. package/fesm2022/ngneers-controls-select-button.mjs.map +1 -1
  71. package/fesm2022/ngneers-controls-select.mjs +46 -46
  72. package/fesm2022/ngneers-controls-select.mjs.map +1 -1
  73. package/fesm2022/ngneers-controls-slider.mjs +11 -11
  74. package/fesm2022/ngneers-controls-slider.mjs.map +1 -1
  75. package/fesm2022/ngneers-controls-spinner.mjs +7 -7
  76. package/fesm2022/ngneers-controls-spinner.mjs.map +1 -1
  77. package/fesm2022/ngneers-controls-splitter.mjs +141 -328
  78. package/fesm2022/ngneers-controls-splitter.mjs.map +1 -1
  79. package/fesm2022/ngneers-controls-switch.mjs +3 -3
  80. package/fesm2022/ngneers-controls-table.mjs +1520 -80
  81. package/fesm2022/ngneers-controls-table.mjs.map +1 -1
  82. package/fesm2022/ngneers-controls-tabs.mjs +40 -39
  83. package/fesm2022/ngneers-controls-tabs.mjs.map +1 -1
  84. package/fesm2022/ngneers-controls-tag.mjs +4 -4
  85. package/fesm2022/ngneers-controls-tag.mjs.map +1 -1
  86. package/fesm2022/ngneers-controls-toast.mjs +18 -18
  87. package/fesm2022/ngneers-controls-toast.mjs.map +1 -1
  88. package/fesm2022/ngneers-controls-toggle-button.mjs +9 -9
  89. package/fesm2022/ngneers-controls-toggle-button.mjs.map +1 -1
  90. package/fesm2022/ngneers-controls-tooltip.mjs +36 -36
  91. package/fesm2022/ngneers-controls-tooltip.mjs.map +1 -1
  92. package/fesm2022/ngneers-controls-utils-ng.mjs +9 -9
  93. package/fesm2022/ngneers-controls-utils-ng.mjs.map +1 -1
  94. package/package.json +14 -10
  95. package/types/ngneers-controls-api-ng.d.ts +2 -2
  96. package/types/ngneers-controls-api-resize.d.ts +318 -0
  97. package/types/ngneers-controls-base.d.ts +8 -0
  98. package/types/ngneers-controls-breadcrumb.d.ts +1 -1
  99. package/types/ngneers-controls-button.d.ts +13 -8
  100. package/types/ngneers-controls-calendar.d.ts +5 -1
  101. package/types/ngneers-controls-checkbox.d.ts +1 -1
  102. package/types/ngneers-controls-directives.d.ts +7 -1
  103. package/types/ngneers-controls-drawer.d.ts +4 -0
  104. package/types/ngneers-controls-edit-inplace.d.ts +4 -0
  105. package/types/ngneers-controls-filter.d.ts +53 -4
  106. package/types/ngneers-controls-i18n.d.ts +4 -0
  107. package/types/ngneers-controls-icon.d.ts +1 -1
  108. package/types/ngneers-controls-input-field.d.ts +4 -0
  109. package/types/ngneers-controls-list-box.d.ts +5 -1
  110. package/types/ngneers-controls-menu.d.ts +1 -1
  111. package/types/ngneers-controls-paginator.d.ts +4 -0
  112. package/types/ngneers-controls-popover.d.ts +1 -1
  113. package/types/ngneers-controls-scroller.d.ts +12 -2
  114. package/types/ngneers-controls-select.d.ts +6 -2
  115. package/types/ngneers-controls-spinner.d.ts +1 -1
  116. package/types/ngneers-controls-splitter.d.ts +29 -59
  117. package/types/ngneers-controls-table.d.ts +392 -24
  118. package/types/ngneers-controls-toast.d.ts +1 -1
  119. package/fesm2022/ngneers-controls-i18n-de-CdTPeBiR.mjs.map +0 -1
  120. package/fesm2022/ngneers-controls-i18n-en-Cfp2pOLY.mjs.map +0 -1
@@ -50,7 +50,7 @@ type NgnFilterOutput<T> = NgnFilterConfig & {
50
50
  * @category control
51
51
  */
52
52
  declare class NgnFilter<T = unknown> extends ValueControlBase<'filter', NgnFilterConfig | null> {
53
- protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"filter", ["root", "inline", "input-field", "summary", "icon", "popover-content", "rows", "row", "operator", "value", "row-actions", "match", "footer"], readonly [_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing", "anim-in", "anim-out"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [_ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>, _ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"select", ["root", "combobox", "input", "icon", "input-editable", "popover-content", "filter", "filter-icon", "list-box", "list-box-empty"], readonly [_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing", "anim-in", "anim-out"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"list-box", ["root", "empty", "invalid", "item", "group", "default-item", "default-group", "scroller", "item-selected", "item-highlighted"], readonly [_ngneers_controls_themes.ControlTemplate<"checkbox", ["root", "input", "box", "box-checked", "box-indeterminate", "box-icon", "anim-box-icon-enter", "anim-box-icon-leave", "invalid"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"scroller", ["root", "virtual", "item", "item-sticky"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>, _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [_ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>]>, _ngneers_controls_themes.ControlTemplate<"button", ["root", "inline", "loading", `kind-${string}`, `color-${string}`], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>>;
53
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"filter", ["root", "inline", "input-field", "summary", "icon", "popover-content", "rows", "row", "operator", "value", "remove-btn", "condition-divider", "footer", "footer-actions", "active-indicator"], readonly [_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [_ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>, _ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"select", ["root", "combobox", "input", "icon", "input-editable", "popover-content", "filter", "filter-icon", "list-box", "list-box-empty"], readonly [_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"list-box", ["root", "empty", "invalid", "item", "group", "default-item", "default-group", "scroller", "item-selected", "item-highlighted"], readonly [_ngneers_controls_themes.ControlTemplate<"checkbox", ["root", "input", "box", "box-checked", "box-indeterminate", "box-icon", "box-icon-visible", "invalid"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"scroller", ["root", "virtual", "item", "item-sticky"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>, _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [_ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>]>, _ngneers_controls_themes.ControlTemplate<"button", ["root", "inline", "loading", `kind-${string}`, `color-${string}`], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"calendar", ["root", "inline", "input", "input-field", "details", "header", "navigation", "days", "week-day", "day", "day-selected", "day-today", "day-other-month", "months", "month", "current-month", "current-year", "time", "next", "previous"], readonly [_ngneers_controls_themes.ControlTemplate<"button", ["root", "inline", "loading", `kind-${string}`, `color-${string}`], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"select", ["root", "combobox", "input", "icon", "input-editable", "popover-content", "filter", "filter-icon", "list-box", "list-box-empty"], readonly [_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"list-box", ["root", "empty", "invalid", "item", "group", "default-item", "default-group", "scroller", "item-selected", "item-highlighted"], readonly [_ngneers_controls_themes.ControlTemplate<"checkbox", ["root", "input", "box", "box-checked", "box-indeterminate", "box-icon", "box-icon-visible", "invalid"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"scroller", ["root", "virtual", "item", "item-sticky"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>, _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [_ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>]>, _ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [_ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>]>]>>;
54
54
  protected readonly i18n: _ngneers_signal_translate.TranslationsSignal<{
55
55
  calendar: {
56
56
  today: string;
@@ -96,10 +96,14 @@ declare class NgnFilter<T = unknown> extends ValueControlBase<'filter', NgnFilte
96
96
  addCondition: string;
97
97
  removeCondition: string;
98
98
  clear: string;
99
+ apply: string;
100
+ cancel: string;
99
101
  matchModeLabel: string;
100
102
  match: {
101
103
  all: string;
102
104
  any: string;
105
+ and: string;
106
+ or: string;
103
107
  };
104
108
  selected: string;
105
109
  conditions: string;
@@ -136,6 +140,7 @@ declare class NgnFilter<T = unknown> extends ValueControlBase<'filter', NgnFilte
136
140
  };
137
141
  }, "_">;
138
142
  protected readonly unsafeI18n: (key: string) => _angular_core.Signal<string>;
143
+ private readonly _destroyRef;
139
144
  /** Data to filter. */
140
145
  readonly data: _angular_core.InputSignal<readonly T[]>;
141
146
  /** Datatype of the values in {@link data}. */
@@ -164,6 +169,16 @@ declare class NgnFilter<T = unknown> extends ValueControlBase<'filter', NgnFilte
164
169
  * When false, only the filter configuration is emitted (useful for server-side filtering).
165
170
  */
166
171
  readonly filterLocally: _angular_core.InputSignalWithTransform<boolean, unknown>;
172
+ /**
173
+ * When true (default), filters apply automatically as the user types/selects.
174
+ * When false, the user must click "Apply" to commit the filter.
175
+ */
176
+ readonly autoApply: _angular_core.InputSignalWithTransform<boolean, unknown>;
177
+ /**
178
+ * Debounce time in milliseconds for auto-apply mode.
179
+ * Only relevant when {@link autoApply} is `true`.
180
+ */
181
+ readonly autoApplyDebounce: _angular_core.InputSignalWithTransform<number, unknown>;
167
182
  /** Options for the popover (when {@link mode} is not `inline`). */
168
183
  readonly popoverOptions: _angular_core.InputSignal<PopoverOptions>;
169
184
  protected readonly appliedPopoverOptions: _angular_core.Signal<PopoverOptions>;
@@ -172,11 +187,24 @@ declare class NgnFilter<T = unknown> extends ValueControlBase<'filter', NgnFilte
172
187
  /** Emits the filtered data whenever local filtering is enabled. */
173
188
  readonly filterResultChange: _angular_core.OutputEmitterRef<readonly T[]>;
174
189
  private readonly _popover;
190
+ /**
191
+ * Internal working config that the template binds to.
192
+ * In auto-apply mode, this syncs to value() via debounce.
193
+ * In manual mode, only apply() commits this to value().
194
+ */
195
+ protected readonly workingConfig: _angular_core.WritableSignal<NgnFilterConfig | null>;
196
+ /** Snapshot of value() taken when popover opens in manual mode, for cancel to restore. */
197
+ private _snapshotConfig;
198
+ /** Debounce timer handle for auto-apply. */
199
+ private _debounceTimer;
200
+ /** Whether there is an active filter applied. */
201
+ protected readonly hasActiveFilter: _angular_core.Signal<boolean>;
175
202
  private createCondition;
176
203
  private defaultConfig;
177
204
  /**
178
205
  * Config used for UI rendering.
179
- * Falls back to a default config when the actual {@link value} is null.
206
+ * Always reads from workingConfig (the live editing state).
207
+ * Falls back to a default config when null.
180
208
  */
181
209
  protected readonly templateConfig: _angular_core.Signal<NgnFilterConfig>;
182
210
  protected readonly templateListSelection: _angular_core.Signal<readonly string[]>;
@@ -277,19 +305,40 @@ declare class NgnFilter<T = unknown> extends ValueControlBase<'filter', NgnFilte
277
305
  protected readonly autoListOptions: _angular_core.Signal<readonly NgnItem[]>;
278
306
  protected readonly resolvedListOptions: _angular_core.Signal<readonly NgnItem[]>;
279
307
  protected readonly matchModeOptions: readonly NgnItem[];
280
- protected readonly inputType: _angular_core.Signal<"number" | "date" | "text" | "datetime-local">;
308
+ protected readonly inputType: _angular_core.Signal<"text" | "number" | "date" | "datetime-local">;
309
+ protected readonly isDateType: _angular_core.Signal<boolean>;
310
+ protected readonly isShowTime: _angular_core.Signal<boolean>;
311
+ /** Parse a rawValue string to a Date for the calendar component. */
312
+ protected parseRawDate(rawValue: string | null): Date | null;
313
+ /** Convert a Date from the calendar to a rawValue string. */
314
+ protected dateToRaw(date: Date | null): string | null;
281
315
  protected readonly summaryText: _angular_core.Signal<string | undefined>;
282
316
  protected readonly activeConditionConfigs: _angular_core.Signal<readonly NgnFilterConditionConfig[]>;
283
317
  protected readonly activeConditions: _angular_core.Signal<readonly NgnFilterCondition[]>;
284
318
  protected readonly filteredData: _angular_core.Signal<readonly T[]>;
319
+ /** The current match mode label for the condition divider */
320
+ protected readonly matchModeLabel: _angular_core.Signal<string>;
285
321
  constructor();
322
+ /**
323
+ * Commits the working config to the actual value, with optional debounce.
324
+ * Called after every working config change.
325
+ */
326
+ private commitWorkingConfig;
327
+ /** Updates the working config and optionally auto-applies. */
328
+ private updateWorkingConfig;
329
+ protected toggleMatchMode(): void;
286
330
  protected setMatchMode(value: unknown): void;
287
331
  protected operatorRequiresValue(operator: NgnFilterOperatorId): boolean;
288
332
  protected setOperator(index: number, operator: NgnFilterOperatorId | null): void;
289
333
  protected setRawValue(index: number, rawValue: string | null): void;
334
+ protected setDateValue(index: number, date: Date | null): void;
290
335
  protected addCondition(): void;
291
336
  protected removeCondition(index: number): void;
292
337
  protected setListSelection(value: unknown): void;
338
+ /** Applies the working config (manual mode). */
339
+ protected apply(): void;
340
+ /** Cancels changes and restores the snapshot (manual mode). */
341
+ protected cancelChanges(): void;
293
342
  protected clear(): void;
294
343
  /** Shows the filter popup. Only works when {@link mode} is not `inline`. */
295
344
  show(): void;
@@ -297,7 +346,7 @@ declare class NgnFilter<T = unknown> extends ValueControlBase<'filter', NgnFilte
297
346
  hide(): void;
298
347
  protected onKeyDown(event: KeyboardEvent): void;
299
348
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnFilter<any>, never>;
300
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnFilter<any>, "ngn-filter", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "allowMultiple": { "alias": "allowMultiple"; "required": false; "isSignal": true; }; "listOptions": { "alias": "listOptions"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "filterLocally": { "alias": "filterLocally"; "required": false; "isSignal": true; }; "popoverOptions": { "alias": "popoverOptions"; "required": false; "isSignal": true; }; }, { "filterChange": "filterChange"; "filterResultChange": "filterResultChange"; }, never, never, true, never>;
349
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnFilter<any>, "ngn-filter", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "allowMultiple": { "alias": "allowMultiple"; "required": false; "isSignal": true; }; "listOptions": { "alias": "listOptions"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "filterLocally": { "alias": "filterLocally"; "required": false; "isSignal": true; }; "autoApply": { "alias": "autoApply"; "required": false; "isSignal": true; }; "autoApplyDebounce": { "alias": "autoApplyDebounce"; "required": false; "isSignal": true; }; "popoverOptions": { "alias": "popoverOptions"; "required": false; "isSignal": true; }; }, { "filterChange": "filterChange"; "filterResultChange": "filterResultChange"; }, never, never, true, never>;
301
350
  }
302
351
 
303
352
  export { NgnFilter };
@@ -47,10 +47,14 @@ declare const _default: {
47
47
  addCondition: string;
48
48
  removeCondition: string;
49
49
  clear: string;
50
+ apply: string;
51
+ cancel: string;
50
52
  matchModeLabel: string;
51
53
  match: {
52
54
  all: string;
53
55
  any: string;
56
+ and: string;
57
+ or: string;
54
58
  };
55
59
  selected: string;
56
60
  conditions: string;
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef, OnDestroy } from '@angular/core';
2
+ import { OnDestroy, TemplateRef } from '@angular/core';
3
3
  import { IconType } from '@ngneers/controls-custom-types';
4
4
  import * as _ngneers_controls_icon from '@ngneers/controls/icon';
5
5
  import * as _angular_platform_browser from '@angular/platform-browser';
@@ -55,10 +55,14 @@ declare class NgnInputField extends NgnBase<'inputField'> {
55
55
  addCondition: string;
56
56
  removeCondition: string;
57
57
  clear: string;
58
+ apply: string;
59
+ cancel: string;
58
60
  matchModeLabel: string;
59
61
  match: {
60
62
  all: string;
61
63
  any: string;
64
+ and: string;
65
+ or: string;
62
66
  };
63
67
  selected: string;
64
68
  conditions: string;
@@ -126,10 +126,14 @@ declare class NgnListBox<Items extends readonly NgnItem[], Multiple extends bool
126
126
  addCondition: string;
127
127
  removeCondition: string;
128
128
  clear: string;
129
+ apply: string;
130
+ cancel: string;
129
131
  matchModeLabel: string;
130
132
  match: {
131
133
  all: string;
132
134
  any: string;
135
+ and: string;
136
+ or: string;
133
137
  };
134
138
  selected: string;
135
139
  conditions: string;
@@ -165,7 +169,7 @@ declare class NgnListBox<Items extends readonly NgnItem[], Multiple extends bool
165
169
  close: string;
166
170
  };
167
171
  }, "_">;
168
- protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"list-box", ["root", "empty", "invalid", "item", "group", "default-item", "default-group", "scroller", "item-selected", "item-highlighted"], readonly [_ngneers_controls_themes.ControlTemplate<"checkbox", ["root", "input", "box", "box-checked", "box-indeterminate", "box-icon", "anim-box-icon-enter", "anim-box-icon-leave", "invalid"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"scroller", ["root", "virtual", "item", "item-sticky"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>>;
172
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"list-box", ["root", "empty", "invalid", "item", "group", "default-item", "default-group", "scroller", "item-selected", "item-highlighted"], readonly [_ngneers_controls_themes.ControlTemplate<"checkbox", ["root", "input", "box", "box-checked", "box-indeterminate", "box-icon", "box-icon-visible", "invalid"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"scroller", ["root", "virtual", "item", "item-sticky"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>>;
169
173
  private readonly _scroller;
170
174
  readonly items: _angular_core.InputSignal<Items>;
171
175
  readonly scrollToSelectedItemOnInit: _angular_core.InputSignal<boolean | ScrollLogicalPosition>;
@@ -84,7 +84,7 @@ declare abstract class MenuTemplates extends NgnBase<'menu'> {
84
84
  * @category control
85
85
  */
86
86
  declare class NgnMenu extends MenuTemplates implements Openable {
87
- protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"menu", ["root", "submenu", "popover", "item", "item-opened", "icon-children", "separator"], readonly [_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing", "anim-in", "anim-out"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>>;
87
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"menu", ["root", "submenu", "popover", "item", "item-opened", "icon-children", "separator"], readonly [_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>>;
88
88
  protected readonly elementId: _angular_core.InputSignal<string>;
89
89
  /**
90
90
  * The element to which the menu is anchored. Required if `popover` is true.
@@ -76,10 +76,14 @@ declare class NgnPaginator extends NgnBase<'paginator'> {
76
76
  addCondition: string;
77
77
  removeCondition: string;
78
78
  clear: string;
79
+ apply: string;
80
+ cancel: string;
79
81
  matchModeLabel: string;
80
82
  match: {
81
83
  all: string;
82
84
  any: string;
85
+ and: string;
86
+ or: string;
83
87
  };
84
88
  selected: string;
85
89
  conditions: string;
@@ -31,7 +31,7 @@ type PopoverOptions = {
31
31
  * @category control
32
32
  */
33
33
  declare class NgnPopover extends NgnBase<'popover'> implements Openable {
34
- protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing", "anim-in", "anim-out"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>>;
34
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>>;
35
35
  /**
36
36
  * Emits when the popover has fully closed.
37
37
  */
@@ -86,8 +86,18 @@ declare class NgnScroller<T> extends ScrollerTemplates<T> {
86
86
  * If set, the scroller will stick the items with a truthy value for the specified field to the top of the scroller.
87
87
  */
88
88
  readonly fieldSticky: _angular_core.InputSignal<AllKeysOfUnion<T> | null>;
89
- private readonly _elementSize;
89
+ /**
90
+ * Viewport size — tracks the scroll ancestor's dimensions so that virtual
91
+ * scrolling works when an outer element handles overflow (e.g. table wrapper).
92
+ */
93
+ private readonly _viewportSize;
90
94
  private readonly _itemHeightPx;
95
+ /**
96
+ * Vertical offset between the scroll container's top and the scroller element.
97
+ * Non-zero when a parent (e.g. table wrapper) owns the scroll and the scroller
98
+ * is positioned below other content (e.g. a sticky header row).
99
+ */
100
+ private readonly _scrollOffset;
91
101
  private readonly _visibleItemCount;
92
102
  private readonly _scrollTop;
93
103
  /**
@@ -121,7 +131,7 @@ declare class NgnScroller<T> extends ScrollerTemplates<T> {
121
131
  index: number;
122
132
  }): unknown;
123
133
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnScroller<any>, never>;
124
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnScroller<any>, "ngn-scroller, [ngn-scroller]", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "fieldId": { "alias": "fieldId"; "required": false; "isSignal": true; }; "virtual": { "alias": "virtual"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "virtualPadding": { "alias": "virtualPadding"; "required": false; "isSignal": true; }; "focusable": { "alias": "focusable"; "required": false; "isSignal": true; }; "fieldSticky": { "alias": "fieldSticky"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.NgnScrollAmount; inputs: {}; outputs: {}; }]>;
134
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnScroller<any>, "ngn-scroller, [ngn-scroller]", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "fieldId": { "alias": "fieldId"; "required": false; "isSignal": true; }; "virtual": { "alias": "virtual"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "virtualPadding": { "alias": "virtualPadding"; "required": false; "isSignal": true; }; "focusable": { "alias": "focusable"; "required": false; "isSignal": true; }; "fieldSticky": { "alias": "fieldSticky"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.NgnScrollAmount; inputs: { "scrollContainer": "scrollContainer"; }; outputs: {}; }]>;
125
135
  }
126
136
 
127
137
  declare class NgnScrollerItem implements AfterViewInit {
@@ -3,7 +3,7 @@ import { TemplateRef, Signal } from '@angular/core';
3
3
  import * as _ngneers_signal_translate from '@ngneers/signal-translate';
4
4
  import * as _ngneers_controls_api_ng from '@ngneers/controls/api/ng';
5
5
  import * as _ngneers_controls_themes from '@ngneers/controls-themes';
6
- import { NgnItem, FilterConfig, FilterConfigInternal, FilterFn } from '@ngneers/controls/api';
6
+ import { NgnItem, FilterConfig, FilterFn, FilterConfigInternal } from '@ngneers/controls/api';
7
7
  import { PopoverOptions } from '@ngneers/controls/popover';
8
8
  import { InputGeneric, maybeCallback } from '@ngneers/controls/utils';
9
9
  import { ValueControlBase } from '@ngneers/controls/base';
@@ -106,7 +106,7 @@ type SelectFilterFn<T extends object> = FilterFn<NgnItem<T>>;
106
106
  * @category control
107
107
  */
108
108
  declare class NgnSelect<V, Editable extends boolean = false, Multiple extends boolean = false> extends SelectTemplates<V, Editable, Multiple> {
109
- protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"select", ["root", "combobox", "input", "icon", "input-editable", "popover-content", "filter", "filter-icon", "list-box", "list-box-empty"], readonly [_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing", "anim-in", "anim-out"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"list-box", ["root", "empty", "invalid", "item", "group", "default-item", "default-group", "scroller", "item-selected", "item-highlighted"], readonly [_ngneers_controls_themes.ControlTemplate<"checkbox", ["root", "input", "box", "box-checked", "box-indeterminate", "box-icon", "anim-box-icon-enter", "anim-box-icon-leave", "invalid"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"scroller", ["root", "virtual", "item", "item-sticky"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>, _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [_ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>]>>;
109
+ protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"select", ["root", "combobox", "input", "icon", "input-editable", "popover-content", "filter", "filter-icon", "list-box", "list-box-empty"], readonly [_ngneers_controls_themes.ControlTemplate<"popover", ["root", "content", "content-closing"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"list-box", ["root", "empty", "invalid", "item", "group", "default-item", "default-group", "scroller", "item-selected", "item-highlighted"], readonly [_ngneers_controls_themes.ControlTemplate<"checkbox", ["root", "input", "box", "box-checked", "box-indeterminate", "box-icon", "box-icon-visible", "invalid"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>, _ngneers_controls_themes.ControlTemplate<"scroller", ["root", "virtual", "item", "item-sticky"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>, _ngneers_controls_themes.ControlTemplate<"input-field", ["root", "host", "disabled", "readonly", "invalid", "label", "clear-button", `labelKind-${string}`], readonly [_ngneers_controls_themes.ControlTemplate<"input", ["root", "invalid", "empty"], readonly _ngneers_controls_themes.ControlTemplate<string, string[], readonly any[]>[]>]>]>>;
110
110
  protected readonly i18n: _ngneers_signal_translate.TranslationsSignal<{
111
111
  calendar: {
112
112
  today: string;
@@ -152,10 +152,14 @@ declare class NgnSelect<V, Editable extends boolean = false, Multiple extends bo
152
152
  addCondition: string;
153
153
  removeCondition: string;
154
154
  clear: string;
155
+ apply: string;
156
+ cancel: string;
155
157
  matchModeLabel: string;
156
158
  match: {
157
159
  all: string;
158
160
  any: string;
161
+ and: string;
162
+ or: string;
159
163
  };
160
164
  selected: string;
161
165
  conditions: string;
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Injector, ElementRef, Signal } from '@angular/core';
2
+ import { ElementRef, Signal, Injector } from '@angular/core';
3
3
  import { CustomColor } from '@ngneers/controls-custom-types';
4
4
  import * as _ngneers_controls_api_ng from '@ngneers/controls/api/ng';
5
5
  import * as _ngneers_controls_themes from '@ngneers/controls-themes';
@@ -29,6 +29,8 @@ type SplitterPanelSize<U extends SplitterPanelSizeUnit = SplitterPanelSizeUnit>
29
29
  type SplitterPanelSizeLimitUnit = 'px' | '%';
30
30
  type SplitterPanelSizeLimit<U extends SplitterPanelSizeLimitUnit = SplitterPanelSizeLimitUnit> = `${number}${U}`;
31
31
  type SplitterLayout = 'horizontal' | 'vertical';
32
+ /** Splitter supports adjacent and proportional resize modes (not push). */
33
+ type SplitterResizeMode = 'adjacent' | 'proportional';
32
34
  type _SplitterState = {
33
35
  layout?: SplitterLayout;
34
36
  panelOrder?: string[] | null;
@@ -39,15 +41,6 @@ type SplitterState = _SplitterState & {
39
41
  [key: string]: unknown;
40
42
  };
41
43
 
42
- type ExpandedSplitterPanelSize = {
43
- value: number;
44
- unit: SplitterPanelSizeUnit;
45
- };
46
- type ExpandedSplitterPanelSizeLimit = {
47
- value: number;
48
- unit: SplitterPanelSizeLimitUnit;
49
- };
50
-
51
44
  /**
52
45
  * Type interface for the {@link SplitterCalculator} interface.
53
46
  */
@@ -109,36 +102,6 @@ interface SplitterCalculator {
109
102
  */
110
103
  moveDivider(index: number, pxDelta: number): void;
111
104
  }
112
- type SplitterFractionFactors = {
113
- /**
114
- * The number of fraction units per pixel.
115
- * This is used to convert pixel values to fraction values.
116
- */
117
- frPerPx: number;
118
- /**
119
- * The number of pixels per fraction unit.
120
- * This is used to convert fraction values to pixel values.
121
- */
122
- pxPerFr: number;
123
- };
124
- type SplitterDragContextPanel = {
125
- /**
126
- * A reference to the panel component.
127
- */
128
- panel: NgnSplitterPanel;
129
- /**
130
- * The starting size of the panel at the beginning of the drag operation.
131
- */
132
- startSize: ExpandedSplitterPanelSize;
133
- /**
134
- * The minimum size limit of the panel.
135
- */
136
- minSize: ExpandedSplitterPanelSizeLimit;
137
- /**
138
- * The maximum size limit of the panel.
139
- */
140
- maxSize: ExpandedSplitterPanelSizeLimit;
141
- };
142
105
  /**
143
106
  * Represents the context of a drag operation in the splitter.
144
107
  */
@@ -155,17 +118,10 @@ type SplitterDragContext = {
155
118
  * The starting position of the pointer when the drag operation started, in pixels.
156
119
  */
157
120
  startPosition: number;
158
- /**
159
- * An array of panels involved in the drag operation.
160
- */
161
- panels: SplitterDragContextPanel[];
162
- /**
163
- * The fraction factors used for calculating sizes during the drag operation.
164
- */
165
- fractionFactors: SplitterFractionFactors;
166
121
  };
167
122
  /**
168
123
  * Default implementation of the {@link SplitterCalculator} interface.
124
+ * Delegates all resize math to the generic {@link ResizeEngine}.
169
125
  */
170
126
  declare class DefaultSplitterCalculator implements SplitterCalculator {
171
127
  protected readonly panels: Signal<readonly NgnSplitterPanel[]>;
@@ -173,6 +129,7 @@ declare class DefaultSplitterCalculator implements SplitterCalculator {
173
129
  protected readonly panelOrder: Signal<readonly string[] | null | undefined>;
174
130
  protected readonly layout: Signal<SplitterLayout>;
175
131
  protected readonly splitterSize: Signal<number>;
132
+ private readonly _engine;
176
133
  constructor(splitter: NgnSplitter);
177
134
  readonly orderedPanels: Signal<readonly NgnSplitterPanel[]>;
178
135
  readonly gridTemplateSizes: Signal<string>;
@@ -181,21 +138,17 @@ declare class DefaultSplitterCalculator implements SplitterCalculator {
181
138
  readonly maxSize: Signal<string>;
182
139
  readonly dragContext: _angular_core.WritableSignal<SplitterDragContext | null>;
183
140
  protected readonly dividerSizes: Signal<number[]>;
184
- protected readonly totalDividerSize: Signal<number>;
185
- protected readonly totalPanelSizes: Signal<{
186
- px: number;
187
- fr: number;
188
- }>;
189
141
  startDrag(index: number, event: PointerEvent): void;
190
142
  drag(index: number, event: PointerEvent): void;
191
143
  endDrag(index: number, event: PointerEvent, isCancel: boolean): void;
192
144
  moveDivider(index: number, pxDelta: number): void;
145
+ /**
146
+ * Ensures all panels respect their min/max size constraints.
147
+ * Delegates to the underlying {@link ResizeEngine}.
148
+ */
193
149
  ensureMinMaxSizes(): void;
194
- private createContextPanel;
195
- private getCurrentFractionFactors;
196
- private setPanelSize;
197
- private isPanelSizeCalculated;
198
- private applyDividerDelta;
150
+ /** @internal — used by tests to seed panel sizes into the engine. */
151
+ setPanelSize(panel: NgnSplitterPanel, size: string): void;
199
152
  }
200
153
 
201
154
  /**
@@ -250,10 +203,14 @@ declare class NgnSplitter extends NgnBase<'splitter'> implements OnDestroy {
250
203
  addCondition: string;
251
204
  removeCondition: string;
252
205
  clear: string;
206
+ apply: string;
207
+ cancel: string;
253
208
  matchModeLabel: string;
254
209
  match: {
255
210
  all: string;
256
211
  any: string;
212
+ and: string;
213
+ or: string;
257
214
  };
258
215
  selected: string;
259
216
  conditions: string;
@@ -322,6 +279,19 @@ declare class NgnSplitter extends NgnBase<'splitter'> implements OnDestroy {
322
279
  * @default `DefaultSplitterCalculator`
323
280
  */
324
281
  readonly calculatorType: _angular_core.InputSignal<SplitterCalculatorType>;
282
+ /**
283
+ * The resize distribution mode for the splitter.
284
+ * - `'adjacent'` (default): Only the panels adjacent to the divider are resized.
285
+ * - `'proportional'`: The deficit is distributed proportionally across all panels on the other side.
286
+ */
287
+ readonly resizeMode: _angular_core.InputSignal<SplitterResizeMode>;
288
+ /**
289
+ * Whether to lock affected panels to fixed `px` values after a resize completes.
290
+ * When `true`, panels whose size changed are converted from their original unit to `px`.
291
+ * When `false`, panels keep their original units (`fr`, `px`).
292
+ * @default false
293
+ */
294
+ readonly lockSizes: _angular_core.InputSignal<boolean>;
325
295
  /**
326
296
  * The step size for moving the dividers using the keyboard.
327
297
  * This can be a pixel value (e.g., '5px') or a percentage value (e.g., '5%').
@@ -378,7 +348,7 @@ declare class NgnSplitter extends NgnBase<'splitter'> implements OnDestroy {
378
348
  private applyFromState;
379
349
  private getStepInPx;
380
350
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnSplitter, never>;
381
- 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; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, { "layout": "layoutChange"; "panelOrder": "panelOrderChange"; "stateSaving": "stateSaving"; "stateLoading": "stateLoading"; }, ["panels"], ["*"], true, never>;
351
+ 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>;
382
352
  }
383
353
 
384
354
  declare class NgnSplitterModule {
@@ -388,4 +358,4 @@ declare class NgnSplitterModule {
388
358
  }
389
359
 
390
360
  export { DefaultSplitterCalculator, NgnSplitter, NgnSplitterModule, NgnSplitterPanel };
391
- export type { SplitterCalculator, SplitterCalculatorType, SplitterDragContext, SplitterLayout, SplitterPanelSize, SplitterPanelSizeLimit, SplitterPanelSizeLimitUnit, SplitterPanelSizeUnit, SplitterState, SplitterStateData };
361
+ export type { SplitterCalculator, SplitterCalculatorType, SplitterDragContext, SplitterLayout, SplitterPanelSize, SplitterPanelSizeLimit, SplitterPanelSizeLimitUnit, SplitterPanelSizeUnit, SplitterResizeMode, SplitterState, SplitterStateData };