@neural-ui/core 1.7.1 → 1.7.3

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 (129) hide show
  1. package/bottom-sheet/package.json +4 -0
  2. package/confirm-popup/package.json +4 -0
  3. package/data-view/package.json +4 -0
  4. package/fesm2022/neural-ui-core-alert.mjs +48 -21
  5. package/fesm2022/neural-ui-core-alert.mjs.map +1 -1
  6. package/fesm2022/neural-ui-core-autocomplete.mjs +153 -71
  7. package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -1
  8. package/fesm2022/neural-ui-core-block-ui.mjs +2 -2
  9. package/fesm2022/neural-ui-core-block-ui.mjs.map +1 -1
  10. package/fesm2022/neural-ui-core-bottom-sheet.mjs +121 -0
  11. package/fesm2022/neural-ui-core-bottom-sheet.mjs.map +1 -0
  12. package/fesm2022/neural-ui-core-breadcrumb.mjs +2 -2
  13. package/fesm2022/neural-ui-core-breadcrumb.mjs.map +1 -1
  14. package/fesm2022/neural-ui-core-button.mjs +2 -2
  15. package/fesm2022/neural-ui-core-button.mjs.map +1 -1
  16. package/fesm2022/neural-ui-core-calendar.mjs +2 -2
  17. package/fesm2022/neural-ui-core-calendar.mjs.map +1 -1
  18. package/fesm2022/neural-ui-core-checkbox.mjs +69 -39
  19. package/fesm2022/neural-ui-core-checkbox.mjs.map +1 -1
  20. package/fesm2022/neural-ui-core-chip.mjs +2 -2
  21. package/fesm2022/neural-ui-core-chip.mjs.map +1 -1
  22. package/fesm2022/neural-ui-core-code-block.mjs +2 -2
  23. package/fesm2022/neural-ui-core-code-block.mjs.map +1 -1
  24. package/fesm2022/neural-ui-core-confirm-popup.mjs +105 -0
  25. package/fesm2022/neural-ui-core-confirm-popup.mjs.map +1 -0
  26. package/fesm2022/neural-ui-core-dashboard-grid.mjs +9 -3
  27. package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -1
  28. package/fesm2022/neural-ui-core-data-view.mjs +386 -0
  29. package/fesm2022/neural-ui-core-data-view.mjs.map +1 -0
  30. package/fesm2022/neural-ui-core-date-input.mjs +185 -10
  31. package/fesm2022/neural-ui-core-date-input.mjs.map +1 -1
  32. package/fesm2022/neural-ui-core-empty-state.mjs +19 -5
  33. package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -1
  34. package/fesm2022/neural-ui-core-form-field.mjs +81 -0
  35. package/fesm2022/neural-ui-core-form-field.mjs.map +1 -0
  36. package/fesm2022/neural-ui-core-inline-editor.mjs +428 -0
  37. package/fesm2022/neural-ui-core-inline-editor.mjs.map +1 -0
  38. package/fesm2022/neural-ui-core-input-mask.mjs +110 -0
  39. package/fesm2022/neural-ui-core-input-mask.mjs.map +1 -0
  40. package/fesm2022/neural-ui-core-input.mjs +2 -2
  41. package/fesm2022/neural-ui-core-input.mjs.map +1 -1
  42. package/fesm2022/neural-ui-core-listbox.mjs +219 -0
  43. package/fesm2022/neural-ui-core-listbox.mjs.map +1 -0
  44. package/fesm2022/neural-ui-core-menu.mjs +229 -0
  45. package/fesm2022/neural-ui-core-menu.mjs.map +1 -0
  46. package/fesm2022/neural-ui-core-modal.mjs +34 -10
  47. package/fesm2022/neural-ui-core-modal.mjs.map +1 -1
  48. package/fesm2022/neural-ui-core-multiselect.mjs +170 -179
  49. package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -1
  50. package/fesm2022/neural-ui-core-number-input.mjs +2 -2
  51. package/fesm2022/neural-ui-core-number-input.mjs.map +1 -1
  52. package/fesm2022/neural-ui-core-panel.mjs +92 -0
  53. package/fesm2022/neural-ui-core-panel.mjs.map +1 -0
  54. package/fesm2022/neural-ui-core-password.mjs +106 -0
  55. package/fesm2022/neural-ui-core-password.mjs.map +1 -0
  56. package/fesm2022/neural-ui-core-pick-list.mjs +133 -0
  57. package/fesm2022/neural-ui-core-pick-list.mjs.map +1 -0
  58. package/fesm2022/neural-ui-core-select.mjs +128 -166
  59. package/fesm2022/neural-ui-core-select.mjs.map +1 -1
  60. package/fesm2022/neural-ui-core-sidebar.mjs +14 -3
  61. package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -1
  62. package/fesm2022/neural-ui-core-slider.mjs +2 -2
  63. package/fesm2022/neural-ui-core-slider.mjs.map +1 -1
  64. package/fesm2022/neural-ui-core-spinner.mjs +19 -9
  65. package/fesm2022/neural-ui-core-spinner.mjs.map +1 -1
  66. package/fesm2022/neural-ui-core-split-button.mjs +2 -2
  67. package/fesm2022/neural-ui-core-split-button.mjs.map +1 -1
  68. package/fesm2022/neural-ui-core-table.mjs +503 -62
  69. package/fesm2022/neural-ui-core-table.mjs.map +1 -1
  70. package/fesm2022/neural-ui-core-tabs.mjs +11 -4
  71. package/fesm2022/neural-ui-core-tabs.mjs.map +1 -1
  72. package/fesm2022/neural-ui-core-tags.mjs +134 -0
  73. package/fesm2022/neural-ui-core-tags.mjs.map +1 -0
  74. package/fesm2022/neural-ui-core-textarea.mjs +2 -2
  75. package/fesm2022/neural-ui-core-textarea.mjs.map +1 -1
  76. package/fesm2022/neural-ui-core-toggle-button-group.mjs +2 -2
  77. package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -1
  78. package/fesm2022/neural-ui-core-toolbar.mjs +16 -4
  79. package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -1
  80. package/fesm2022/neural-ui-core-tree-select.mjs +259 -0
  81. package/fesm2022/neural-ui-core-tree-select.mjs.map +1 -0
  82. package/fesm2022/neural-ui-core-tree-table.mjs +267 -8
  83. package/fesm2022/neural-ui-core-tree-table.mjs.map +1 -1
  84. package/fesm2022/neural-ui-core-tree.mjs +15 -14
  85. package/fesm2022/neural-ui-core-tree.mjs.map +1 -1
  86. package/fesm2022/neural-ui-core-uploader.mjs +103 -12
  87. package/fesm2022/neural-ui-core-uploader.mjs.map +1 -1
  88. package/form-field/package.json +4 -0
  89. package/inline-editor/package.json +4 -0
  90. package/input-mask/package.json +4 -0
  91. package/listbox/package.json +4 -0
  92. package/menu/package.json +4 -0
  93. package/package.json +53 -1
  94. package/panel/package.json +4 -0
  95. package/password/package.json +4 -0
  96. package/pick-list/package.json +4 -0
  97. package/styles/_tokens.scss +33 -17
  98. package/tags/package.json +4 -0
  99. package/tree-select/package.json +4 -0
  100. package/types/neural-ui-core-alert.d.ts +2 -1
  101. package/types/neural-ui-core-autocomplete.d.ts +22 -2
  102. package/types/neural-ui-core-bottom-sheet.d.ts +20 -0
  103. package/types/neural-ui-core-checkbox.d.ts +6 -1
  104. package/types/neural-ui-core-confirm-popup.d.ts +38 -0
  105. package/types/neural-ui-core-dashboard-grid.d.ts +1 -0
  106. package/types/neural-ui-core-data-view.d.ts +95 -0
  107. package/types/neural-ui-core-date-input.d.ts +35 -5
  108. package/types/neural-ui-core-empty-state.d.ts +11 -1
  109. package/types/neural-ui-core-form-field.d.ts +33 -0
  110. package/types/neural-ui-core-inline-editor.d.ts +66 -0
  111. package/types/neural-ui-core-input-mask.d.ts +26 -0
  112. package/types/neural-ui-core-listbox.d.ts +54 -0
  113. package/types/neural-ui-core-menu.d.ts +49 -0
  114. package/types/neural-ui-core-modal.d.ts +10 -2
  115. package/types/neural-ui-core-multiselect.d.ts +10 -1
  116. package/types/neural-ui-core-panel.d.ts +25 -0
  117. package/types/neural-ui-core-password.d.ts +29 -0
  118. package/types/neural-ui-core-pick-list.d.ts +40 -0
  119. package/types/neural-ui-core-select.d.ts +7 -1
  120. package/types/neural-ui-core-sidebar.d.ts +5 -1
  121. package/types/neural-ui-core-spinner.d.ts +4 -2
  122. package/types/neural-ui-core-table.d.ts +89 -5
  123. package/types/neural-ui-core-tabs.d.ts +2 -0
  124. package/types/neural-ui-core-tags.d.ts +32 -0
  125. package/types/neural-ui-core-toolbar.d.ts +8 -2
  126. package/types/neural-ui-core-tree-select.d.ts +57 -0
  127. package/types/neural-ui-core-tree-table.d.ts +111 -4
  128. package/types/neural-ui-core-tree.d.ts +1 -1
  129. package/types/neural-ui-core-uploader.d.ts +26 -3
@@ -44,6 +44,10 @@ declare class NeuSidebarComponent {
44
44
  ariaLabel: _angular_core.InputSignal<string>;
45
45
  /** Etiqueta accesible para el botón cerrar / Accessible label for the close button */
46
46
  closeLabel: _angular_core.InputSignal<string>;
47
+ /** Cierra el overlay al pulsar Escape / Closes the overlay when pressing Escape */
48
+ closeOnEscape: _angular_core.InputSignal<boolean>;
49
+ /** Devuelve el foco al elemento activo antes de abrir / Restores focus after close */
50
+ restoreFocus: _angular_core.InputSignal<boolean>;
47
51
  /**
48
52
  * Modo colapsado: el sidebar muestra solo iconos (icon-only en desktop).
49
53
  * Útil para sidebars persistentes en modo compact / Collapsed mode: sidebar shows only icons.
@@ -69,7 +73,7 @@ declare class NeuSidebarComponent {
69
73
  /** Focus trap: cicla entre elementos focusables con Tab/Shift+Tab / Focus trap cycling */
70
74
  onKeyDown(event: KeyboardEvent): void;
71
75
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSidebarComponent, never>;
72
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSidebarComponent, "neu-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; "persistent": { "alias": "persistent"; "required": false; "isSignal": true; }; "hideHeader": { "alias": "hideHeader"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "closeRequested": "closeRequested"; "collapsedChange": "collapsedChange"; }, never, ["[neu-sidebar-header]", "*", "[neu-sidebar-footer]"], true, never>;
76
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSidebarComponent, "neu-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "urlParam": { "alias": "urlParam"; "required": false; "isSignal": true; }; "persistent": { "alias": "persistent"; "required": false; "isSignal": true; }; "hideHeader": { "alias": "hideHeader"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "closeRequested": "closeRequested"; "collapsedChange": "collapsedChange"; }, never, ["[neu-sidebar-header]", "*", "[neu-sidebar-footer]"], true, never>;
73
77
  }
74
78
 
75
79
  export { NeuSidebarComponent };
@@ -27,11 +27,13 @@ declare class NeuSpinnerComponent {
27
27
  size: _angular_core.InputSignal<string>;
28
28
  /** Duración de la animación de rotación / Rotation animation duration */
29
29
  animationDuration: _angular_core.InputSignal<string>;
30
- /** Texto accesible para lectores de pantalla / Accessible text for screen readers */
30
+ /** Etiqueta visible opcional junto al spinner / Optional visible label beside the spinner */
31
+ label: _angular_core.InputSignal<string>;
32
+ /** Texto accesible cuando no se muestra label / Accessible text when label is not displayed */
31
33
  ariaLabel: _angular_core.InputSignal<string>;
32
34
  readonly _severityColor: _angular_core.Signal<string>;
33
35
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuSpinnerComponent, never>;
34
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSpinnerComponent, "neu-spinner", never, { "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
36
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuSpinnerComponent, "neu-spinner", never, { "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
35
37
  }
36
38
 
37
39
  export { NeuSpinnerComponent };
@@ -1,6 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { TemplateRef, Signal } from '@angular/core';
3
3
  import { FormControl } from '@angular/forms';
4
+ import { NeuInlineEditorType } from '@neural-ui/core/inline-editor';
4
5
  import { NeuSelectOption } from '@neural-ui/core/select';
5
6
 
6
7
  /**
@@ -23,6 +24,18 @@ declare class NeuTableExpandDirective {
23
24
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTableExpandDirective, "ng-template[neuTableExpand]", never, {}, {}, never, never, true, never>;
24
25
  }
25
26
 
27
+ /**
28
+ * Declarative slot for custom NeuTable toolbar content.
29
+ *
30
+ * Use it for actions owned by the application, such as PDF export,
31
+ * bulk workflows, sync buttons or custom filters.
32
+ */
33
+ declare class NeuTableToolbarDirective {
34
+ readonly templateRef: TemplateRef<unknown>;
35
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTableToolbarDirective, never>;
36
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NeuTableToolbarDirective, "ng-template[neuTableToolbar]", never, {}, {}, never, never, true, never>;
37
+ }
38
+
26
39
  type NeuTableBadgeVariant = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default';
27
40
  interface NeuTableBadgeConfig {
28
41
  /** Etiqueta visible. Si se omite, se muestra el valor bruto. */
@@ -56,6 +69,22 @@ interface NeuTableSelectionActionEvent<T = Record<string, unknown>> {
56
69
  action: NeuTableSelectionAction<T>;
57
70
  rows: T[];
58
71
  }
72
+ interface NeuTableLayout {
73
+ columnOrder: string[];
74
+ hiddenColumns: string[];
75
+ columnWidths: Record<string, number>;
76
+ }
77
+ interface NeuTableColumnReorderEvent {
78
+ previousIndex: number;
79
+ currentIndex: number;
80
+ columns: string[];
81
+ }
82
+ interface NeuTableCellEditEvent<T = Record<string, unknown>> {
83
+ row: T;
84
+ column: NeuTableColumn<T>;
85
+ value: unknown;
86
+ previousValue: unknown;
87
+ }
59
88
  interface NeuTableSortEntry {
60
89
  key: string;
61
90
  dir: 'asc' | 'desc';
@@ -98,6 +127,9 @@ interface NeuTableColumn<T = Record<string, unknown>> {
98
127
  filterable?: boolean;
99
128
  filterType?: 'text' | 'select' | 'number-range' | 'date';
100
129
  filterOptions?: string[];
130
+ editable?: boolean;
131
+ editor?: 'text' | 'number' | 'select' | 'date';
132
+ editOptions?: string[];
101
133
  frozen?: 'left' | 'right';
102
134
  headerTemplate?: TemplateRef<{
103
135
  $implicit: NeuTableColumn<T>;
@@ -105,6 +137,17 @@ interface NeuTableColumn<T = Record<string, unknown>> {
105
137
  }
106
138
 
107
139
  type Row = Record<string, unknown>;
140
+ type NeuTablePageEntry = {
141
+ kind: 'group';
142
+ key: string;
143
+ label: string;
144
+ count: number;
145
+ } | {
146
+ kind: 'row';
147
+ key: unknown;
148
+ row: Row;
149
+ rowIndex: number;
150
+ };
108
151
  /**
109
152
  * NeuralUI Table — Componente Estrella
110
153
  *
@@ -128,7 +171,6 @@ declare class NeuTableComponent {
128
171
  private readonly _platformId;
129
172
  private readonly _scrollContainer;
130
173
  private readonly _virtualOverscan;
131
- readonly expandTemplate: Signal<NeuTableExpandDirective | undefined>;
132
174
  readonly columns: _angular_core.InputSignal<NeuTableColumn<Record<string, unknown>>[]>;
133
175
  readonly data: _angular_core.InputSignal<object[]>;
134
176
  readonly pageSize: _angular_core.InputSignal<number>;
@@ -139,6 +181,9 @@ declare class NeuTableComponent {
139
181
  readonly toolbarExtraRef: _angular_core.InputSignal<TemplateRef<unknown> | null>;
140
182
  readonly emptyMessage: _angular_core.InputSignal<string>;
141
183
  readonly skeletonRows: _angular_core.InputSignal<number[]>;
184
+ readonly expandTemplate: Signal<NeuTableExpandDirective | undefined>;
185
+ readonly toolbarTemplate: Signal<NeuTableToolbarDirective | undefined>;
186
+ protected readonly _toolbarTemplateRef: Signal<TemplateRef<unknown> | null>;
142
187
  readonly searchable: _angular_core.InputSignal<boolean>;
143
188
  readonly searchPlaceholder: _angular_core.InputSignal<string>;
144
189
  readonly exactMatchable: _angular_core.InputSignal<boolean>;
@@ -153,6 +198,7 @@ declare class NeuTableComponent {
153
198
  readonly paginationAriaLabel: _angular_core.InputSignal<string>;
154
199
  readonly exportCsvTitle: _angular_core.InputSignal<string>;
155
200
  readonly exportJsonTitle: _angular_core.InputSignal<string>;
201
+ readonly exportXlsxTitle: _angular_core.InputSignal<string>;
156
202
  readonly clearSelectionLabel: _angular_core.InputSignal<string>;
157
203
  readonly selectionSummaryLabel: _angular_core.InputSignal<string>;
158
204
  readonly tableAriaLabel: _angular_core.InputSignal<string>;
@@ -176,6 +222,16 @@ declare class NeuTableComponent {
176
222
  readonly virtualScroll: _angular_core.InputSignal<boolean>;
177
223
  readonly virtualScrollVisibleItems: _angular_core.InputSignal<number>;
178
224
  readonly resizableColumns: _angular_core.InputSignal<boolean>;
225
+ readonly reorderableColumns: _angular_core.InputSignal<boolean>;
226
+ readonly columnChooser: _angular_core.InputSignal<boolean>;
227
+ readonly columnChooserLabel: _angular_core.InputSignal<string>;
228
+ readonly groupBy: _angular_core.InputSignal<string>;
229
+ readonly groupHeaderLabel: _angular_core.InputSignal<string>;
230
+ readonly inlineEdit: _angular_core.InputSignal<boolean>;
231
+ readonly inlineEditLabel: _angular_core.InputSignal<string>;
232
+ readonly saveInlineEditLabel: _angular_core.InputSignal<string>;
233
+ readonly cancelInlineEditLabel: _angular_core.InputSignal<string>;
234
+ readonly initialLayout: _angular_core.InputSignal<NeuTableLayout | null>;
179
235
  readonly rowKey: _angular_core.InputSignal<string>;
180
236
  readonly bordered: _angular_core.InputSignal<boolean>;
181
237
  readonly roundedBorders: _angular_core.InputSignal<boolean>;
@@ -188,7 +244,7 @@ declare class NeuTableComponent {
188
244
  readonly serverSide: _angular_core.InputSignal<boolean>;
189
245
  readonly totalItems: _angular_core.InputSignal<number | undefined>;
190
246
  readonly multiSort: _angular_core.InputSignal<boolean>;
191
- readonly exportFormats: _angular_core.InputSignal<("csv" | "json")[]>;
247
+ readonly exportFormats: _angular_core.InputSignal<("csv" | "json" | "xlsx")[]>;
192
248
  readonly exportColumns: _angular_core.InputSignal<string[]>;
193
249
  readonly exportScope: _angular_core.InputSignal<"selected" | "filtered" | "auto">;
194
250
  readonly selectionActions: _angular_core.InputSignal<NeuTableSelectionAction<Row>[]>;
@@ -219,12 +275,19 @@ declare class NeuTableComponent {
219
275
  key: string;
220
276
  width: number;
221
277
  }>;
278
+ readonly columnReorder: _angular_core.OutputEmitterRef<NeuTableColumnReorderEvent>;
279
+ readonly layoutChange: _angular_core.OutputEmitterRef<NeuTableLayout>;
280
+ readonly cellEditCommit: _angular_core.OutputEmitterRef<NeuTableCellEditEvent<Row>>;
222
281
  private readonly _internalPage;
223
282
  private readonly _internalSearch;
224
283
  private readonly _internalSortKey;
225
284
  private readonly _internalSortDir;
226
285
  private readonly _internalMultiSort;
227
286
  private readonly _columnWidths;
287
+ private readonly _columnOrder;
288
+ private readonly _hiddenColumns;
289
+ readonly columnChooserOpen: _angular_core.WritableSignal<boolean>;
290
+ private readonly _editingCell;
228
291
  private _resizeCleanup;
229
292
  private readonly _urlParamSignals;
230
293
  private _getUrlParamSignal;
@@ -246,6 +309,8 @@ declare class NeuTableComponent {
246
309
  private readonly _columnFilterControls;
247
310
  /** True when at least one column has filterable:true / True si alguna columna tiene filterable:true */
248
311
  readonly _hasFilterableCol: Signal<boolean>;
312
+ readonly orderedColumns: Signal<NeuTableColumn<Record<string, unknown>>[]>;
313
+ readonly visibleColumns: Signal<NeuTableColumn<Record<string, unknown>>[]>;
249
314
  /** Convierte filterOptions de string[] a NeuSelectOption[] con opción "Todos" al inicio.
250
315
  * Converts filterOptions from string[] to NeuSelectOption[] with a leading "All" option. */
251
316
  _filterOpts(col: NeuTableColumn): NeuSelectOption[];
@@ -267,6 +332,7 @@ declare class NeuTableComponent {
267
332
  readonly _virtualStartIndex: Signal<number>;
268
333
  readonly _virtualEndIndex: Signal<number>;
269
334
  readonly visiblePageRows: Signal<Row[]>;
335
+ readonly visiblePageEntries: Signal<NeuTablePageEntry[]>;
270
336
  readonly _virtualTopSpacerHeight: Signal<number>;
271
337
  readonly _virtualBottomSpacerHeight: Signal<number>;
272
338
  readonly pageNumbers: Signal<number[]>;
@@ -277,6 +343,14 @@ declare class NeuTableComponent {
277
343
  readonly _firstFrozenRightKey: Signal<string>;
278
344
  isLastFrozenLeftColumn(key: string): boolean;
279
345
  isFirstFrozenRightColumn(key: string): boolean;
346
+ toggleColumnChooser(): void;
347
+ isColumnVisible(key: string): boolean;
348
+ toggleColumnVisibility(key: string): void;
349
+ isFirstVisibleColumn(key: string): boolean;
350
+ isLastVisibleColumn(key: string): boolean;
351
+ moveColumn(key: string, direction: -1 | 1): void;
352
+ applyLayout(layout: NeuTableLayout): void;
353
+ currentLayout(): NeuTableLayout;
280
354
  isColumnResizable(col: NeuTableColumn): boolean;
281
355
  columnWidth(col: NeuTableColumn): string | null;
282
356
  startColumnResize(col: NeuTableColumn, event: MouseEvent): void;
@@ -324,6 +398,7 @@ declare class NeuTableComponent {
324
398
  cancelSelectionConfirm(): void;
325
399
  exportCsv(): void;
326
400
  exportJson(): void;
401
+ exportXlsx(): void;
327
402
  private _getExportColumns;
328
403
  private _getExportRows;
329
404
  private _downloadBlob;
@@ -336,13 +411,22 @@ declare class NeuTableComponent {
336
411
  private _setColumnWidth;
337
412
  private _stopColumnResize;
338
413
  getCellValue(row: Row, col: NeuTableColumn): string;
414
+ isEditingCell(row: Row, col: NeuTableColumn): boolean;
415
+ editingValue(): unknown;
416
+ inlineEditorType(col: NeuTableColumn): NeuInlineEditorType;
417
+ inlineEditorOptions(col: NeuTableColumn): NeuSelectOption[];
418
+ setEditingValue(value: unknown): void;
419
+ startCellEdit(row: Row, col: NeuTableColumn, event?: Event): void;
420
+ commitCellEdit(row: Row, col: NeuTableColumn): void;
421
+ cancelCellEdit(event?: Event): void;
339
422
  getSortPriority(key: string): number;
340
423
  columnFilterControl(key: string): FormControl<string>;
341
424
  getColumnFilterValue(key: string): unknown;
342
425
  private _emitServerState;
426
+ private _emitLayoutChange;
343
427
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTableComponent, never>;
344
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTableComponent, "neu-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "toolbarExtraRef": { "alias": "toolbarExtraRef"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "skeletonRows": { "alias": "skeletonRows"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "exactMatchable": { "alias": "exactMatchable"; "required": false; "isSignal": true; }; "exactMatchLabel": { "alias": "exactMatchLabel"; "required": false; "isSignal": true; }; "searchAriaLabel": { "alias": "searchAriaLabel"; "required": false; "isSignal": true; }; "clearSearchAriaLabel": { "alias": "clearSearchAriaLabel"; "required": false; "isSignal": true; }; "clearFilterLabel": { "alias": "clearFilterLabel"; "required": false; "isSignal": true; }; "previousPageAriaLabel": { "alias": "previousPageAriaLabel"; "required": false; "isSignal": true; }; "nextPageAriaLabel": { "alias": "nextPageAriaLabel"; "required": false; "isSignal": true; }; "pageSizeLabel": { "alias": "pageSizeLabel"; "required": false; "isSignal": true; }; "pageSizeAriaLabel": { "alias": "pageSizeAriaLabel"; "required": false; "isSignal": true; }; "paginationAriaLabel": { "alias": "paginationAriaLabel"; "required": false; "isSignal": true; }; "exportCsvTitle": { "alias": "exportCsvTitle"; "required": false; "isSignal": true; }; "exportJsonTitle": { "alias": "exportJsonTitle"; "required": false; "isSignal": true; }; "clearSelectionLabel": { "alias": "clearSelectionLabel"; "required": false; "isSignal": true; }; "selectionSummaryLabel": { "alias": "selectionSummaryLabel"; "required": false; "isSignal": true; }; "tableAriaLabel": { "alias": "tableAriaLabel"; "required": false; "isSignal": true; }; "selectAllAriaLabel": { "alias": "selectAllAriaLabel"; "required": false; "isSignal": true; }; "selectRowAriaLabel": { "alias": "selectRowAriaLabel"; "required": false; "isSignal": true; }; "expandRowAriaLabel": { "alias": "expandRowAriaLabel"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "filterAriaPrefix": { "alias": "filterAriaPrefix"; "required": false; "isSignal": true; }; "allFilterOptionLabel": { "alias": "allFilterOptionLabel"; "required": false; "isSignal": true; }; "ofLabel": { "alias": "ofLabel"; "required": false; "isSignal": true; }; "resultLabelSingular": { "alias": "resultLabelSingular"; "required": false; "isSignal": true; }; "resultLabelPlural": { "alias": "resultLabelPlural"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "expandMode": { "alias": "expandMode"; "required": false; "isSignal": true; }; "exportable": { "alias": "exportable"; "required": false; "isSignal": true; }; "exportFileName": { "alias": "exportFileName"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollVisibleItems": { "alias": "virtualScrollVisibleItems"; "required": false; "isSignal": true; }; "resizableColumns": { "alias": "resizableColumns"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "roundedBorders": { "alias": "roundedBorders"; "required": false; "isSignal": true; }; "stripedRows": { "alias": "stripedRows"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "footerRow": { "alias": "footerRow"; "required": false; "isSignal": true; }; "emptyStateTemplate": { "alias": "emptyStateTemplate"; "required": false; "isSignal": true; }; "serverSide": { "alias": "serverSide"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "exportFormats": { "alias": "exportFormats"; "required": false; "isSignal": true; }; "exportColumns": { "alias": "exportColumns"; "required": false; "isSignal": true; }; "exportScope": { "alias": "exportScope"; "required": false; "isSignal": true; }; "selectionActions": { "alias": "selectionActions"; "required": false; "isSignal": true; }; "pageParam": { "alias": "pageParam"; "required": false; "isSignal": true; }; "searchParam": { "alias": "searchParam"; "required": false; "isSignal": true; }; "sortParam": { "alias": "sortParam"; "required": false; "isSignal": true; }; "sortDirParam": { "alias": "sortDirParam"; "required": false; "isSignal": true; }; "multiSortParam": { "alias": "multiSortParam"; "required": false; "isSignal": true; }; "useUrlState": { "alias": "useUrlState"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "rowClick": "rowClick"; "rowDblClick": "rowDblClick"; "actionClick": "actionClick"; "selectionActionClick": "selectionActionClick"; "serverStateChange": "serverStateChange"; "searchChange": "searchChange"; "columnResize": "columnResize"; }, ["expandTemplate"], never, true, never>;
428
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTableComponent, "neu-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "toolbarExtraRef": { "alias": "toolbarExtraRef"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "skeletonRows": { "alias": "skeletonRows"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "exactMatchable": { "alias": "exactMatchable"; "required": false; "isSignal": true; }; "exactMatchLabel": { "alias": "exactMatchLabel"; "required": false; "isSignal": true; }; "searchAriaLabel": { "alias": "searchAriaLabel"; "required": false; "isSignal": true; }; "clearSearchAriaLabel": { "alias": "clearSearchAriaLabel"; "required": false; "isSignal": true; }; "clearFilterLabel": { "alias": "clearFilterLabel"; "required": false; "isSignal": true; }; "previousPageAriaLabel": { "alias": "previousPageAriaLabel"; "required": false; "isSignal": true; }; "nextPageAriaLabel": { "alias": "nextPageAriaLabel"; "required": false; "isSignal": true; }; "pageSizeLabel": { "alias": "pageSizeLabel"; "required": false; "isSignal": true; }; "pageSizeAriaLabel": { "alias": "pageSizeAriaLabel"; "required": false; "isSignal": true; }; "paginationAriaLabel": { "alias": "paginationAriaLabel"; "required": false; "isSignal": true; }; "exportCsvTitle": { "alias": "exportCsvTitle"; "required": false; "isSignal": true; }; "exportJsonTitle": { "alias": "exportJsonTitle"; "required": false; "isSignal": true; }; "exportXlsxTitle": { "alias": "exportXlsxTitle"; "required": false; "isSignal": true; }; "clearSelectionLabel": { "alias": "clearSelectionLabel"; "required": false; "isSignal": true; }; "selectionSummaryLabel": { "alias": "selectionSummaryLabel"; "required": false; "isSignal": true; }; "tableAriaLabel": { "alias": "tableAriaLabel"; "required": false; "isSignal": true; }; "selectAllAriaLabel": { "alias": "selectAllAriaLabel"; "required": false; "isSignal": true; }; "selectRowAriaLabel": { "alias": "selectRowAriaLabel"; "required": false; "isSignal": true; }; "expandRowAriaLabel": { "alias": "expandRowAriaLabel"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "filterAriaPrefix": { "alias": "filterAriaPrefix"; "required": false; "isSignal": true; }; "allFilterOptionLabel": { "alias": "allFilterOptionLabel"; "required": false; "isSignal": true; }; "ofLabel": { "alias": "ofLabel"; "required": false; "isSignal": true; }; "resultLabelSingular": { "alias": "resultLabelSingular"; "required": false; "isSignal": true; }; "resultLabelPlural": { "alias": "resultLabelPlural"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "expandMode": { "alias": "expandMode"; "required": false; "isSignal": true; }; "exportable": { "alias": "exportable"; "required": false; "isSignal": true; }; "exportFileName": { "alias": "exportFileName"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollVisibleItems": { "alias": "virtualScrollVisibleItems"; "required": false; "isSignal": true; }; "resizableColumns": { "alias": "resizableColumns"; "required": false; "isSignal": true; }; "reorderableColumns": { "alias": "reorderableColumns"; "required": false; "isSignal": true; }; "columnChooser": { "alias": "columnChooser"; "required": false; "isSignal": true; }; "columnChooserLabel": { "alias": "columnChooserLabel"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "groupHeaderLabel": { "alias": "groupHeaderLabel"; "required": false; "isSignal": true; }; "inlineEdit": { "alias": "inlineEdit"; "required": false; "isSignal": true; }; "inlineEditLabel": { "alias": "inlineEditLabel"; "required": false; "isSignal": true; }; "saveInlineEditLabel": { "alias": "saveInlineEditLabel"; "required": false; "isSignal": true; }; "cancelInlineEditLabel": { "alias": "cancelInlineEditLabel"; "required": false; "isSignal": true; }; "initialLayout": { "alias": "initialLayout"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "roundedBorders": { "alias": "roundedBorders"; "required": false; "isSignal": true; }; "stripedRows": { "alias": "stripedRows"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "footerRow": { "alias": "footerRow"; "required": false; "isSignal": true; }; "emptyStateTemplate": { "alias": "emptyStateTemplate"; "required": false; "isSignal": true; }; "serverSide": { "alias": "serverSide"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "exportFormats": { "alias": "exportFormats"; "required": false; "isSignal": true; }; "exportColumns": { "alias": "exportColumns"; "required": false; "isSignal": true; }; "exportScope": { "alias": "exportScope"; "required": false; "isSignal": true; }; "selectionActions": { "alias": "selectionActions"; "required": false; "isSignal": true; }; "pageParam": { "alias": "pageParam"; "required": false; "isSignal": true; }; "searchParam": { "alias": "searchParam"; "required": false; "isSignal": true; }; "sortParam": { "alias": "sortParam"; "required": false; "isSignal": true; }; "sortDirParam": { "alias": "sortDirParam"; "required": false; "isSignal": true; }; "multiSortParam": { "alias": "multiSortParam"; "required": false; "isSignal": true; }; "useUrlState": { "alias": "useUrlState"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "rowClick": "rowClick"; "rowDblClick": "rowDblClick"; "actionClick": "actionClick"; "selectionActionClick": "selectionActionClick"; "serverStateChange": "serverStateChange"; "searchChange": "searchChange"; "columnResize": "columnResize"; "columnReorder": "columnReorder"; "layoutChange": "layoutChange"; "cellEditCommit": "cellEditCommit"; }, ["expandTemplate", "toolbarTemplate"], never, true, never>;
345
429
  }
346
430
 
347
- export { NeuTableComponent, NeuTableExpandDirective };
348
- export type { NeuTableAction, NeuTableActionEvent, NeuTableBadgeConfig, NeuTableBadgeVariant, NeuTableCellType, NeuTableColumn, NeuTableSelectionAction, NeuTableSelectionActionEvent, NeuTableServerState, NeuTableSortEntry };
431
+ export { NeuTableComponent, NeuTableExpandDirective, NeuTableToolbarDirective };
432
+ export type { NeuTableAction, NeuTableActionEvent, NeuTableBadgeConfig, NeuTableBadgeVariant, NeuTableCellEditEvent, NeuTableCellType, NeuTableColumn, NeuTableColumnReorderEvent, NeuTableLayout, NeuTableSelectionAction, NeuTableSelectionActionEvent, NeuTableServerState, NeuTableSortEntry };
@@ -27,6 +27,7 @@ interface NeuTab {
27
27
  declare class NeuTabsComponent implements AfterViewInit, OnDestroy {
28
28
  private readonly urlState;
29
29
  private readonly elRef;
30
+ private readonly platformId;
30
31
  private resizeObserver?;
31
32
  private readonly _urlParamSignals;
32
33
  private _dragPointerId;
@@ -37,6 +38,7 @@ declare class NeuTabsComponent implements AfterViewInit, OnDestroy {
37
38
  readonly isDraggingNav: _angular_core.WritableSignal<boolean>;
38
39
  private _getUrlParamSignal;
39
40
  private _readUrlParam;
41
+ private _requestFrame;
40
42
  constructor();
41
43
  /** Definición de pestañas / Tab definitions */
42
44
  tabs: _angular_core.InputSignal<NeuTab[]>;
@@ -0,0 +1,32 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+
4
+ declare class NeuTagsComponent implements ControlValueAccessor {
5
+ readonly label: _angular_core.InputSignal<string>;
6
+ readonly placeholder: _angular_core.InputSignal<string>;
7
+ readonly disabled: _angular_core.InputSignal<boolean>;
8
+ readonly suggestions: _angular_core.InputSignal<string[]>;
9
+ readonly separators: _angular_core.InputSignal<string[]>;
10
+ readonly removeLabel: _angular_core.InputSignal<string>;
11
+ readonly valueChange: _angular_core.OutputEmitterRef<string[]>;
12
+ readonly inputId: string;
13
+ readonly value: _angular_core.WritableSignal<string[]>;
14
+ readonly draft: _angular_core.WritableSignal<string>;
15
+ readonly cvaDisabled: _angular_core.WritableSignal<boolean>;
16
+ readonly filteredSuggestions: _angular_core.Signal<string[]>;
17
+ private onChange;
18
+ private onTouched;
19
+ writeValue(value: string[] | null): void;
20
+ registerOnChange(fn: (value: string[]) => void): void;
21
+ registerOnTouched(fn: () => void): void;
22
+ setDisabledState(isDisabled: boolean): void;
23
+ onKeyDown(event: KeyboardEvent): void;
24
+ commitDraft(): void;
25
+ add(tag: string): void;
26
+ remove(tag: string): void;
27
+ private commit;
28
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTagsComponent, never>;
29
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTagsComponent, "neu-tags", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "separators": { "alias": "separators"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
30
+ }
31
+
32
+ export { NeuTagsComponent };
@@ -1,6 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
 
3
3
  type NeuToolbarSize = 'sm' | 'md' | 'lg';
4
+ type NeuToolbarDensity = 'comfortable' | 'compact';
5
+ type NeuToolbarWrap = 'nowrap' | 'wrap';
4
6
  /**
5
7
  * NeuralUI Toolbar Component
6
8
  *
@@ -20,6 +22,10 @@ declare class NeuToolbarComponent {
20
22
  readonly shadow: _angular_core.InputSignal<boolean>;
21
23
  /** Añade separador inferior / Adds bottom separator */
22
24
  readonly bordered: _angular_core.InputSignal<boolean>;
25
+ /** Densidad visual: comfortable mantiene el espaciado actual, compact reduce huecos / Visual density */
26
+ readonly density: _angular_core.InputSignal<NeuToolbarDensity>;
27
+ /** Permite que los grupos pasen a varias líneas en responsive / Allows groups to wrap on narrow surfaces */
28
+ readonly wrap: _angular_core.InputSignal<NeuToolbarWrap>;
23
29
  /** Color de fondo personalizado vía CSS (pasa a la variable local) / Custom background color via CSS */
24
30
  readonly surface: _angular_core.InputSignal<"primary" | "surface" | "none">;
25
31
  readonly hostClasses: _angular_core.Signal<{
@@ -29,8 +35,8 @@ declare class NeuToolbarComponent {
29
35
  'neu-toolbar--bordered': boolean;
30
36
  }>;
31
37
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuToolbarComponent, never>;
32
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuToolbarComponent, "neu-toolbar", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "surface": { "alias": "surface"; "required": false; "isSignal": true; }; }, {}, never, ["[neu-toolbar-start]", "[neu-toolbar-center]", "[neu-toolbar-end]", "*"], true, never>;
38
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuToolbarComponent, "neu-toolbar", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "surface": { "alias": "surface"; "required": false; "isSignal": true; }; }, {}, never, ["[neu-toolbar-start]", "[neu-toolbar-center]", "[neu-toolbar-end]", "[neu-toolbar-secondary]", "*"], true, never>;
33
39
  }
34
40
 
35
41
  export { NeuToolbarComponent };
36
- export type { NeuToolbarSize };
42
+ export type { NeuToolbarDensity, NeuToolbarSize, NeuToolbarWrap };
@@ -0,0 +1,57 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+
4
+ interface NeuTreeSelectNode {
5
+ value: string;
6
+ label: string;
7
+ disabled?: boolean;
8
+ children?: NeuTreeSelectNode[];
9
+ lazy?: boolean;
10
+ data?: unknown;
11
+ }
12
+ interface FlatNode {
13
+ node: NeuTreeSelectNode;
14
+ level: number;
15
+ }
16
+ declare class NeuTreeSelectComponent implements ControlValueAccessor {
17
+ readonly nodes: _angular_core.InputSignal<NeuTreeSelectNode[]>;
18
+ readonly label: _angular_core.InputSignal<string>;
19
+ readonly placeholder: _angular_core.InputSignal<string>;
20
+ readonly emptyLabel: _angular_core.InputSignal<string>;
21
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
22
+ readonly searchable: _angular_core.InputSignal<boolean>;
23
+ readonly multiple: _angular_core.InputSignal<boolean>;
24
+ readonly clearable: _angular_core.InputSignal<boolean>;
25
+ readonly disabled: _angular_core.InputSignal<boolean>;
26
+ readonly selectionChange: _angular_core.OutputEmitterRef<NeuTreeSelectNode[]>;
27
+ readonly nodeExpand: _angular_core.OutputEmitterRef<NeuTreeSelectNode>;
28
+ readonly triggerId: string;
29
+ readonly open: _angular_core.WritableSignal<boolean>;
30
+ readonly query: _angular_core.WritableSignal<string>;
31
+ readonly values: _angular_core.WritableSignal<string[]>;
32
+ readonly expanded: _angular_core.WritableSignal<Set<string>>;
33
+ readonly cvaDisabled: _angular_core.WritableSignal<boolean>;
34
+ readonly isDisabled: _angular_core.Signal<boolean>;
35
+ readonly selectedLabel: _angular_core.Signal<string>;
36
+ readonly visibleNodes: _angular_core.Signal<FlatNode[]>;
37
+ private onChange;
38
+ private onTouched;
39
+ writeValue(value: string | string[] | null): void;
40
+ registerOnChange(fn: (value: string | string[] | null) => void): void;
41
+ registerOnTouched(fn: () => void): void;
42
+ setDisabledState(isDisabled: boolean): void;
43
+ toggle(): void;
44
+ close(): void;
45
+ clear(event: Event): void;
46
+ isSelected(value: string): boolean;
47
+ selectNode(node: NeuTreeSelectNode): void;
48
+ toggleExpanded(node: NeuTreeSelectNode, event: Event): void;
49
+ private commit;
50
+ private flatten;
51
+ private flattenVisible;
52
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeSelectComponent, never>;
53
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTreeSelectComponent, "neu-tree-select", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "nodeExpand": "nodeExpand"; }, never, never, true, never>;
54
+ }
55
+
56
+ export { NeuTreeSelectComponent };
57
+ export type { NeuTreeSelectNode };