@neural-ui/core 1.7.1 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) 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 +141 -68
  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-data-view.mjs +386 -0
  27. package/fesm2022/neural-ui-core-data-view.mjs.map +1 -0
  28. package/fesm2022/neural-ui-core-date-input.mjs +185 -10
  29. package/fesm2022/neural-ui-core-date-input.mjs.map +1 -1
  30. package/fesm2022/neural-ui-core-empty-state.mjs +19 -5
  31. package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -1
  32. package/fesm2022/neural-ui-core-form-field.mjs +81 -0
  33. package/fesm2022/neural-ui-core-form-field.mjs.map +1 -0
  34. package/fesm2022/neural-ui-core-inline-editor.mjs +428 -0
  35. package/fesm2022/neural-ui-core-inline-editor.mjs.map +1 -0
  36. package/fesm2022/neural-ui-core-input-mask.mjs +110 -0
  37. package/fesm2022/neural-ui-core-input-mask.mjs.map +1 -0
  38. package/fesm2022/neural-ui-core-input.mjs +2 -2
  39. package/fesm2022/neural-ui-core-input.mjs.map +1 -1
  40. package/fesm2022/neural-ui-core-listbox.mjs +219 -0
  41. package/fesm2022/neural-ui-core-listbox.mjs.map +1 -0
  42. package/fesm2022/neural-ui-core-menu.mjs +229 -0
  43. package/fesm2022/neural-ui-core-menu.mjs.map +1 -0
  44. package/fesm2022/neural-ui-core-modal.mjs +34 -10
  45. package/fesm2022/neural-ui-core-modal.mjs.map +1 -1
  46. package/fesm2022/neural-ui-core-multiselect.mjs +159 -174
  47. package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -1
  48. package/fesm2022/neural-ui-core-number-input.mjs +2 -2
  49. package/fesm2022/neural-ui-core-number-input.mjs.map +1 -1
  50. package/fesm2022/neural-ui-core-panel.mjs +92 -0
  51. package/fesm2022/neural-ui-core-panel.mjs.map +1 -0
  52. package/fesm2022/neural-ui-core-password.mjs +106 -0
  53. package/fesm2022/neural-ui-core-password.mjs.map +1 -0
  54. package/fesm2022/neural-ui-core-pick-list.mjs +133 -0
  55. package/fesm2022/neural-ui-core-pick-list.mjs.map +1 -0
  56. package/fesm2022/neural-ui-core-select.mjs +118 -162
  57. package/fesm2022/neural-ui-core-select.mjs.map +1 -1
  58. package/fesm2022/neural-ui-core-sidebar.mjs +14 -3
  59. package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -1
  60. package/fesm2022/neural-ui-core-slider.mjs +2 -2
  61. package/fesm2022/neural-ui-core-slider.mjs.map +1 -1
  62. package/fesm2022/neural-ui-core-spinner.mjs +19 -9
  63. package/fesm2022/neural-ui-core-spinner.mjs.map +1 -1
  64. package/fesm2022/neural-ui-core-split-button.mjs +2 -2
  65. package/fesm2022/neural-ui-core-split-button.mjs.map +1 -1
  66. package/fesm2022/neural-ui-core-table.mjs +501 -62
  67. package/fesm2022/neural-ui-core-table.mjs.map +1 -1
  68. package/fesm2022/neural-ui-core-tags.mjs +134 -0
  69. package/fesm2022/neural-ui-core-tags.mjs.map +1 -0
  70. package/fesm2022/neural-ui-core-textarea.mjs +2 -2
  71. package/fesm2022/neural-ui-core-textarea.mjs.map +1 -1
  72. package/fesm2022/neural-ui-core-toggle-button-group.mjs +2 -2
  73. package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -1
  74. package/fesm2022/neural-ui-core-toolbar.mjs +16 -4
  75. package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -1
  76. package/fesm2022/neural-ui-core-tree-select.mjs +259 -0
  77. package/fesm2022/neural-ui-core-tree-select.mjs.map +1 -0
  78. package/fesm2022/neural-ui-core-tree-table.mjs +267 -8
  79. package/fesm2022/neural-ui-core-tree-table.mjs.map +1 -1
  80. package/fesm2022/neural-ui-core-tree.mjs +15 -14
  81. package/fesm2022/neural-ui-core-tree.mjs.map +1 -1
  82. package/fesm2022/neural-ui-core-uploader.mjs +103 -12
  83. package/fesm2022/neural-ui-core-uploader.mjs.map +1 -1
  84. package/form-field/package.json +4 -0
  85. package/inline-editor/package.json +4 -0
  86. package/input-mask/package.json +4 -0
  87. package/listbox/package.json +4 -0
  88. package/menu/package.json +4 -0
  89. package/package.json +53 -1
  90. package/panel/package.json +4 -0
  91. package/password/package.json +4 -0
  92. package/pick-list/package.json +4 -0
  93. package/styles/_tokens.scss +30 -15
  94. package/tags/package.json +4 -0
  95. package/tree-select/package.json +4 -0
  96. package/types/neural-ui-core-alert.d.ts +2 -1
  97. package/types/neural-ui-core-autocomplete.d.ts +20 -2
  98. package/types/neural-ui-core-bottom-sheet.d.ts +20 -0
  99. package/types/neural-ui-core-checkbox.d.ts +6 -1
  100. package/types/neural-ui-core-confirm-popup.d.ts +38 -0
  101. package/types/neural-ui-core-data-view.d.ts +95 -0
  102. package/types/neural-ui-core-date-input.d.ts +35 -5
  103. package/types/neural-ui-core-empty-state.d.ts +11 -1
  104. package/types/neural-ui-core-form-field.d.ts +33 -0
  105. package/types/neural-ui-core-inline-editor.d.ts +66 -0
  106. package/types/neural-ui-core-input-mask.d.ts +26 -0
  107. package/types/neural-ui-core-listbox.d.ts +54 -0
  108. package/types/neural-ui-core-menu.d.ts +49 -0
  109. package/types/neural-ui-core-modal.d.ts +10 -2
  110. package/types/neural-ui-core-multiselect.d.ts +8 -1
  111. package/types/neural-ui-core-panel.d.ts +25 -0
  112. package/types/neural-ui-core-password.d.ts +29 -0
  113. package/types/neural-ui-core-pick-list.d.ts +40 -0
  114. package/types/neural-ui-core-select.d.ts +5 -1
  115. package/types/neural-ui-core-sidebar.d.ts +5 -1
  116. package/types/neural-ui-core-spinner.d.ts +4 -2
  117. package/types/neural-ui-core-table.d.ts +89 -5
  118. package/types/neural-ui-core-tags.d.ts +32 -0
  119. package/types/neural-ui-core-toolbar.d.ts +8 -2
  120. package/types/neural-ui-core-tree-select.d.ts +57 -0
  121. package/types/neural-ui-core-tree-table.d.ts +111 -4
  122. package/types/neural-ui-core-tree.d.ts +1 -1
  123. package/types/neural-ui-core-uploader.d.ts +26 -3
@@ -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 };
@@ -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 };
@@ -1,5 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { NeuTableColumn } from '@neural-ui/core/table';
2
+ import { TemplateRef } from '@angular/core';
3
+ import { NeuTableAction, NeuTableColumn, NeuTableSelectionAction, NeuTableLayout, NeuTableServerState, NeuTableColumnReorderEvent, NeuTableExpandDirective, NeuTableCellEditEvent } from '@neural-ui/core/table';
3
4
 
4
5
  interface NeuTreeTableNode<T extends Record<string, unknown> = Record<string, unknown>> {
5
6
  id: string;
@@ -23,33 +24,123 @@ interface NeuTreeTableRow<T extends Record<string, unknown> = Record<string, unk
23
24
  __treeParentId?: string;
24
25
  __treeNode: NeuTreeTableNode<T>;
25
26
  }
27
+ interface NeuTreeTableActionEvent<T extends Record<string, unknown> = Record<string, unknown>> {
28
+ action: NeuTableAction<Record<string, unknown>>;
29
+ node: NeuTreeTableNode<T>;
30
+ row: NeuTreeTableRow<T>;
31
+ }
32
+ interface NeuTreeTableSelectionActionEvent<T extends Record<string, unknown> = Record<string, unknown>> {
33
+ action: NeuTableSelectionAction<Record<string, unknown>>;
34
+ nodes: NeuTreeTableNode<T>[];
35
+ rows: NeuTreeTableRow<T>[];
36
+ }
37
+ interface NeuTreeTableCellEditEvent<T extends Record<string, unknown> = Record<string, unknown>> {
38
+ node: NeuTreeTableNode<T>;
39
+ row: NeuTreeTableRow<T>;
40
+ column: NeuTableColumn<Record<string, unknown>>;
41
+ value: unknown;
42
+ previousValue: unknown;
43
+ }
26
44
  declare class NeuTreeTableComponent {
27
45
  readonly nodes: _angular_core.InputSignal<NeuTreeTableNode<Record<string, unknown>>[]>;
28
- readonly columns: _angular_core.InputSignal<NeuTableColumn<Record<string, unknown>>[]>;
46
+ readonly columns: _angular_core.InputSignal<NeuTableColumn<any>[]>;
29
47
  readonly title: _angular_core.InputSignal<string>;
48
+ readonly toolbarExtraRef: _angular_core.InputSignal<TemplateRef<unknown> | null>;
30
49
  readonly treeColumnKey: _angular_core.InputSignal<string>;
31
50
  readonly rowKey: _angular_core.InputSignal<string>;
32
51
  readonly tableAriaLabel: _angular_core.InputSignal<string>;
33
52
  readonly searchPlaceholder: _angular_core.InputSignal<string>;
53
+ readonly exactMatchLabel: _angular_core.InputSignal<string>;
54
+ readonly searchAriaLabel: _angular_core.InputSignal<string>;
55
+ readonly clearSearchAriaLabel: _angular_core.InputSignal<string>;
56
+ readonly clearFilterLabel: _angular_core.InputSignal<string>;
57
+ readonly previousPageAriaLabel: _angular_core.InputSignal<string>;
58
+ readonly nextPageAriaLabel: _angular_core.InputSignal<string>;
59
+ readonly pageSizeLabel: _angular_core.InputSignal<string>;
60
+ readonly pageSizeAriaLabel: _angular_core.InputSignal<string>;
61
+ readonly paginationAriaLabel: _angular_core.InputSignal<string>;
62
+ readonly exportCsvTitle: _angular_core.InputSignal<string>;
63
+ readonly exportJsonTitle: _angular_core.InputSignal<string>;
64
+ readonly exportXlsxTitle: _angular_core.InputSignal<string>;
65
+ readonly clearSelectionLabel: _angular_core.InputSignal<string>;
66
+ readonly selectionSummaryLabel: _angular_core.InputSignal<string>;
67
+ readonly selectAllAriaLabel: _angular_core.InputSignal<string>;
68
+ readonly selectRowAriaLabel: _angular_core.InputSignal<string>;
69
+ readonly expandRowAriaLabel: _angular_core.InputSignal<string>;
70
+ readonly filterPlaceholder: _angular_core.InputSignal<string>;
71
+ readonly filterAriaPrefix: _angular_core.InputSignal<string>;
72
+ readonly allFilterOptionLabel: _angular_core.InputSignal<string>;
73
+ readonly ofLabel: _angular_core.InputSignal<string>;
74
+ readonly resultLabelSingular: _angular_core.InputSignal<string>;
75
+ readonly resultLabelPlural: _angular_core.InputSignal<string>;
34
76
  readonly emptyMessage: _angular_core.InputSignal<string>;
35
77
  readonly expandLabel: _angular_core.InputSignal<string>;
36
78
  readonly collapseLabel: _angular_core.InputSignal<string>;
37
79
  readonly indentSize: _angular_core.InputSignal<number>;
80
+ readonly loading: _angular_core.InputSignal<boolean>;
81
+ readonly skeletonRows: _angular_core.InputSignal<number[]>;
38
82
  readonly searchable: _angular_core.InputSignal<boolean>;
83
+ readonly exactMatchable: _angular_core.InputSignal<boolean>;
39
84
  readonly pagination: _angular_core.InputSignal<boolean>;
85
+ readonly pageSize: _angular_core.InputSignal<number>;
40
86
  readonly selectable: _angular_core.InputSignal<boolean>;
87
+ readonly selectionActions: _angular_core.InputSignal<NeuTableSelectionAction<Record<string, unknown>>[]>;
41
88
  readonly stickyHeader: _angular_core.InputSignal<boolean>;
42
89
  readonly stripedRows: _angular_core.InputSignal<boolean>;
43
90
  readonly bordered: _angular_core.InputSignal<boolean>;
44
91
  readonly roundedBorders: _angular_core.InputSignal<boolean>;
45
92
  readonly sortable: _angular_core.InputSignal<boolean>;
93
+ readonly multiSort: _angular_core.InputSignal<boolean>;
94
+ readonly expandable: _angular_core.InputSignal<boolean>;
95
+ readonly expandMode: _angular_core.InputSignal<"multiple" | "single">;
96
+ readonly exportable: _angular_core.InputSignal<boolean>;
97
+ readonly exportFileName: _angular_core.InputSignal<string>;
98
+ readonly exportFormats: _angular_core.InputSignal<("csv" | "json" | "xlsx")[]>;
99
+ readonly exportColumns: _angular_core.InputSignal<string[]>;
100
+ readonly exportScope: _angular_core.InputSignal<"selected" | "filtered" | "auto">;
101
+ readonly virtualScroll: _angular_core.InputSignal<boolean>;
102
+ readonly virtualScrollVisibleItems: _angular_core.InputSignal<number>;
103
+ readonly resizableColumns: _angular_core.InputSignal<boolean>;
104
+ readonly reorderableColumns: _angular_core.InputSignal<boolean>;
105
+ readonly columnChooser: _angular_core.InputSignal<boolean>;
106
+ readonly columnChooserLabel: _angular_core.InputSignal<string>;
107
+ readonly groupBy: _angular_core.InputSignal<string>;
108
+ readonly groupHeaderLabel: _angular_core.InputSignal<string>;
109
+ readonly inlineEdit: _angular_core.InputSignal<boolean>;
110
+ readonly inlineEditLabel: _angular_core.InputSignal<string>;
111
+ readonly saveInlineEditLabel: _angular_core.InputSignal<string>;
112
+ readonly cancelInlineEditLabel: _angular_core.InputSignal<string>;
113
+ readonly initialLayout: _angular_core.InputSignal<NeuTableLayout | null>;
46
114
  readonly showRowNumbers: _angular_core.InputSignal<boolean>;
47
115
  readonly useUrlState: _angular_core.InputSignal<boolean>;
48
116
  readonly density: _angular_core.InputSignal<"compact" | "normal" | "relaxed">;
49
117
  readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
118
+ readonly rowClass: _angular_core.InputSignal<((row: Record<string, unknown>) => string) | undefined>;
119
+ readonly footerRow: _angular_core.InputSignal<Record<string, string | number> | undefined>;
120
+ readonly emptyStateTemplate: _angular_core.InputSignal<TemplateRef<void> | undefined>;
121
+ readonly serverSide: _angular_core.InputSignal<boolean>;
122
+ readonly totalItems: _angular_core.InputSignal<number | undefined>;
123
+ readonly pageParam: _angular_core.InputSignal<string>;
124
+ readonly searchParam: _angular_core.InputSignal<string>;
125
+ readonly sortParam: _angular_core.InputSignal<string>;
126
+ readonly sortDirParam: _angular_core.InputSignal<string>;
127
+ readonly multiSortParam: _angular_core.InputSignal<string>;
50
128
  readonly selectionChange: _angular_core.OutputEmitterRef<NeuTreeTableNode<Record<string, unknown>>[]>;
51
129
  readonly nodeClick: _angular_core.OutputEmitterRef<NeuTreeTableNode<Record<string, unknown>>>;
130
+ readonly nodeDblClick: _angular_core.OutputEmitterRef<NeuTreeTableNode<Record<string, unknown>>>;
52
131
  readonly expansionChange: _angular_core.OutputEmitterRef<string[]>;
132
+ readonly actionClick: _angular_core.OutputEmitterRef<NeuTreeTableActionEvent<Record<string, unknown>>>;
133
+ readonly selectionActionClick: _angular_core.OutputEmitterRef<NeuTreeTableSelectionActionEvent<Record<string, unknown>>>;
134
+ readonly serverStateChange: _angular_core.OutputEmitterRef<NeuTableServerState>;
135
+ readonly searchChange: _angular_core.OutputEmitterRef<string>;
136
+ readonly columnResize: _angular_core.OutputEmitterRef<{
137
+ key: string;
138
+ width: number;
139
+ }>;
140
+ readonly columnReorder: _angular_core.OutputEmitterRef<NeuTableColumnReorderEvent>;
141
+ readonly layoutChange: _angular_core.OutputEmitterRef<NeuTableLayout>;
142
+ readonly cellEditCommit: _angular_core.OutputEmitterRef<NeuTreeTableCellEditEvent<Record<string, unknown>>>;
143
+ readonly expandTemplate: _angular_core.Signal<NeuTableExpandDirective | undefined>;
53
144
  private readonly treeCellTpl;
54
145
  private readonly expandedKeys;
55
146
  readonly flatRows: _angular_core.Signal<Record<string, unknown>[]>;
@@ -58,6 +149,22 @@ declare class NeuTreeTableComponent {
58
149
  toggleNode(node: NeuTreeTableNode, event?: Event): void;
59
150
  onTableSelectionChange(rows: Record<string, unknown>[]): void;
60
151
  onTableRowClick(row: Record<string, unknown>): void;
152
+ onTableRowDblClick(row: Record<string, unknown>): void;
153
+ onTableActionClick(event: {
154
+ action: NeuTableAction<Record<string, unknown>>;
155
+ row: Record<string, unknown>;
156
+ }): void;
157
+ onTableSelectionActionClick(event: {
158
+ action: NeuTableSelectionAction<Record<string, unknown>>;
159
+ rows: Record<string, unknown>[];
160
+ }): void;
161
+ onTableCellEditCommit(event: NeuTableCellEditEvent<Record<string, unknown>>): void;
162
+ expandTemplateContext(row: Record<string, unknown>): {
163
+ $implicit: NeuTreeTableNode;
164
+ node: NeuTreeTableNode;
165
+ row: NeuTreeTableRow;
166
+ };
167
+ expandTemplateRef(directive: NeuTableExpandDirective): TemplateRef<unknown>;
61
168
  treeIndent(row: NeuTreeTableRow): number;
62
169
  isTreeRowDisabled(row: NeuTreeTableRow): boolean;
63
170
  treeToggleAriaLabel(row: NeuTreeTableRow): string;
@@ -65,8 +172,8 @@ declare class NeuTreeTableComponent {
65
172
  private collectExpandedKeys;
66
173
  private asFlatRow;
67
174
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeTableComponent, never>;
68
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTreeTableComponent, "neu-tree-table", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "treeColumnKey": { "alias": "treeColumnKey"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "tableAriaLabel": { "alias": "tableAriaLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "stripedRows": { "alias": "stripedRows"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "roundedBorders": { "alias": "roundedBorders"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; "isSignal": true; }; "useUrlState": { "alias": "useUrlState"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "nodeClick": "nodeClick"; "expansionChange": "expansionChange"; }, never, never, true, never>;
175
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTreeTableComponent, "neu-tree-table", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "toolbarExtraRef": { "alias": "toolbarExtraRef"; "required": false; "isSignal": true; }; "treeColumnKey": { "alias": "treeColumnKey"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "tableAriaLabel": { "alias": "tableAriaLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "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; }; "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; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "skeletonRows": { "alias": "skeletonRows"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "exactMatchable": { "alias": "exactMatchable"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selectionActions": { "alias": "selectionActions"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "stripedRows": { "alias": "stripedRows"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "roundedBorders": { "alias": "roundedBorders"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "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; }; "exportFormats": { "alias": "exportFormats"; "required": false; "isSignal": true; }; "exportColumns": { "alias": "exportColumns"; "required": false; "isSignal": true; }; "exportScope": { "alias": "exportScope"; "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; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; "isSignal": true; }; "useUrlState": { "alias": "useUrlState"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "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; }; "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; }; }, { "selectionChange": "selectionChange"; "nodeClick": "nodeClick"; "nodeDblClick": "nodeDblClick"; "expansionChange": "expansionChange"; "actionClick": "actionClick"; "selectionActionClick": "selectionActionClick"; "serverStateChange": "serverStateChange"; "searchChange": "searchChange"; "columnResize": "columnResize"; "columnReorder": "columnReorder"; "layoutChange": "layoutChange"; "cellEditCommit": "cellEditCommit"; }, ["expandTemplate"], never, true, never>;
69
176
  }
70
177
 
71
178
  export { NeuTreeTableComponent };
72
- export type { NeuTreeTableNode, NeuTreeTableRow };
179
+ export type { NeuTreeTableActionEvent, NeuTreeTableCellEditEvent, NeuTreeTableNode, NeuTreeTableRow, NeuTreeTableSelectionActionEvent };
@@ -39,7 +39,7 @@ declare class NeuTreeComponent {
39
39
  onSearch(event: Event): void;
40
40
  toggleNode(node: NeuTreeNode, event?: Event): void;
41
41
  activateNode(node: NeuTreeNode): void;
42
- onCheckboxChange(node: NeuTreeNode, event: Event): void;
42
+ onCheckboxChange(node: NeuTreeNode, checkedOrEvent: boolean | Event): void;
43
43
  private updateSelection;
44
44
  private collectExpandedKeys;
45
45
  private collectSelectedNodes;