@neural-ui/core 1.3.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -7
- package/calendar/package.json +4 -0
- package/fesm2022/neural-ui-core-accordion.mjs +8 -6
- package/fesm2022/neural-ui-core-accordion.mjs.map +1 -1
- package/fesm2022/neural-ui-core-autocomplete.mjs +121 -29
- package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -1
- package/fesm2022/neural-ui-core-badge.mjs +2 -2
- package/fesm2022/neural-ui-core-badge.mjs.map +1 -1
- package/fesm2022/neural-ui-core-block-ui.mjs +2 -2
- package/fesm2022/neural-ui-core-button.mjs +2 -2
- package/fesm2022/neural-ui-core-button.mjs.map +1 -1
- package/fesm2022/neural-ui-core-calendar.mjs +551 -0
- package/fesm2022/neural-ui-core-calendar.mjs.map +1 -0
- package/fesm2022/neural-ui-core-chip.mjs +2 -2
- package/fesm2022/neural-ui-core-chip.mjs.map +1 -1
- package/fesm2022/neural-ui-core-color-picker.mjs +3 -9
- package/fesm2022/neural-ui-core-color-picker.mjs.map +1 -1
- package/fesm2022/neural-ui-core-confirm-dialog.mjs +2 -2
- package/fesm2022/neural-ui-core-confirm-dialog.mjs.map +1 -1
- package/fesm2022/neural-ui-core-dashboard-grid.mjs +2 -2
- package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -1
- package/fesm2022/neural-ui-core-date-input.mjs +2 -2
- package/fesm2022/neural-ui-core-date-input.mjs.map +1 -1
- package/fesm2022/neural-ui-core-filter-bar.mjs +2 -2
- package/fesm2022/neural-ui-core-filter-bar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-image-gallery.mjs +224 -0
- package/fesm2022/neural-ui-core-image-gallery.mjs.map +1 -0
- package/fesm2022/neural-ui-core-input.mjs +2 -2
- package/fesm2022/neural-ui-core-kanban.mjs +270 -0
- package/fesm2022/neural-ui-core-kanban.mjs.map +1 -0
- package/fesm2022/neural-ui-core-meter-group.mjs +2 -2
- package/fesm2022/neural-ui-core-modal.mjs +81 -31
- package/fesm2022/neural-ui-core-modal.mjs.map +1 -1
- package/fesm2022/neural-ui-core-multiselect.mjs +269 -99
- package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -1
- package/fesm2022/neural-ui-core-nav.mjs +4 -6
- package/fesm2022/neural-ui-core-nav.mjs.map +1 -1
- package/fesm2022/neural-ui-core-number-input.mjs +2 -2
- package/fesm2022/neural-ui-core-pagination.mjs +2 -2
- package/fesm2022/neural-ui-core-pagination.mjs.map +1 -1
- package/fesm2022/neural-ui-core-progress-bar.mjs +2 -2
- package/fesm2022/neural-ui-core-scheduler-gantt.mjs +289 -0
- package/fesm2022/neural-ui-core-scheduler-gantt.mjs.map +1 -0
- package/fesm2022/neural-ui-core-select.mjs +276 -101
- package/fesm2022/neural-ui-core-select.mjs.map +1 -1
- package/fesm2022/neural-ui-core-sidebar.mjs +3 -2
- package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-slider.mjs +2 -2
- package/fesm2022/neural-ui-core-slider.mjs.map +1 -1
- package/fesm2022/neural-ui-core-split-button.mjs +2 -2
- package/fesm2022/neural-ui-core-split-button.mjs.map +1 -1
- package/fesm2022/neural-ui-core-stepper.mjs +2 -2
- package/fesm2022/neural-ui-core-stepper.mjs.map +1 -1
- package/fesm2022/neural-ui-core-table.mjs +435 -34
- package/fesm2022/neural-ui-core-table.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tabs.mjs +11 -4
- package/fesm2022/neural-ui-core-tabs.mjs.map +1 -1
- package/fesm2022/neural-ui-core-textarea.mjs +2 -2
- package/fesm2022/neural-ui-core-timeline-grid.mjs +215 -0
- package/fesm2022/neural-ui-core-timeline-grid.mjs.map +1 -0
- package/fesm2022/neural-ui-core-toggle-button-group.mjs +2 -2
- package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -1
- package/fesm2022/neural-ui-core-toolbar.mjs +2 -2
- package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tree-table.mjs +262 -0
- package/fesm2022/neural-ui-core-tree-table.mjs.map +1 -0
- package/fesm2022/neural-ui-core-tree.mjs +413 -0
- package/fesm2022/neural-ui-core-tree.mjs.map +1 -0
- package/fesm2022/neural-ui-core-uploader.mjs +624 -0
- package/fesm2022/neural-ui-core-uploader.mjs.map +1 -0
- package/fesm2022/neural-ui-core-url-state.mjs +90 -10
- package/fesm2022/neural-ui-core-url-state.mjs.map +1 -1
- package/fesm2022/neural-ui-core-virtual-list.mjs +53 -23
- package/fesm2022/neural-ui-core-virtual-list.mjs.map +1 -1
- package/fesm2022/neural-ui-core.mjs +3 -1
- package/fesm2022/neural-ui-core.mjs.map +1 -1
- package/image-gallery/package.json +4 -0
- package/kanban/package.json +4 -0
- package/package.json +34 -2
- package/scheduler-gantt/package.json +4 -0
- package/styles/_tokens.scss +13 -4
- package/timeline-grid/package.json +4 -0
- package/tree/package.json +4 -0
- package/tree-table/package.json +4 -0
- package/types/neural-ui-core-autocomplete.d.ts +10 -1
- package/types/neural-ui-core-calendar.d.ts +79 -0
- package/types/neural-ui-core-color-picker.d.ts +0 -1
- package/types/neural-ui-core-image-gallery.d.ts +26 -0
- package/types/neural-ui-core-kanban.d.ts +52 -0
- package/types/neural-ui-core-modal.d.ts +22 -16
- package/types/neural-ui-core-multiselect.d.ts +13 -1
- package/types/neural-ui-core-scheduler-gantt.d.ts +68 -0
- package/types/neural-ui-core-select.d.ts +14 -1
- package/types/neural-ui-core-sidebar.d.ts +1 -0
- package/types/neural-ui-core-table.d.ts +66 -4
- package/types/neural-ui-core-tabs.d.ts +1 -0
- package/types/neural-ui-core-timeline-grid.d.ts +55 -0
- package/types/neural-ui-core-tree-table.d.ts +72 -0
- package/types/neural-ui-core-tree.d.ts +52 -0
- package/types/neural-ui-core-uploader.d.ts +98 -0
- package/types/neural-ui-core-url-state.d.ts +9 -0
- package/types/neural-ui-core-virtual-list.d.ts +17 -1
- package/uploader/package.json +4 -0
|
@@ -43,6 +43,19 @@ interface NeuTableActionEvent<T = Record<string, unknown>> {
|
|
|
43
43
|
action: NeuTableAction<T>;
|
|
44
44
|
row: T;
|
|
45
45
|
}
|
|
46
|
+
interface NeuTableSelectionAction<T = Record<string, unknown>> {
|
|
47
|
+
key: string;
|
|
48
|
+
label: string;
|
|
49
|
+
icon: string;
|
|
50
|
+
variant?: 'ghost' | 'primary' | 'danger';
|
|
51
|
+
show?: (rows: T[]) => boolean;
|
|
52
|
+
disabled?: (rows: T[]) => boolean;
|
|
53
|
+
confirm?: string;
|
|
54
|
+
}
|
|
55
|
+
interface NeuTableSelectionActionEvent<T = Record<string, unknown>> {
|
|
56
|
+
action: NeuTableSelectionAction<T>;
|
|
57
|
+
rows: T[];
|
|
58
|
+
}
|
|
46
59
|
interface NeuTableSortEntry {
|
|
47
60
|
key: string;
|
|
48
61
|
dir: 'asc' | 'desc';
|
|
@@ -61,6 +74,8 @@ interface NeuTableColumn<T = Record<string, unknown>> {
|
|
|
61
74
|
key: string;
|
|
62
75
|
header: string;
|
|
63
76
|
width?: string;
|
|
77
|
+
minWidth?: number;
|
|
78
|
+
maxWidth?: number;
|
|
64
79
|
align?: 'left' | 'center' | 'right';
|
|
65
80
|
cell?: (row: T) => string;
|
|
66
81
|
cellTemplate?: TemplateRef<{
|
|
@@ -70,6 +85,7 @@ interface NeuTableColumn<T = Record<string, unknown>> {
|
|
|
70
85
|
}>;
|
|
71
86
|
cellClass?: string;
|
|
72
87
|
sortable?: boolean;
|
|
88
|
+
resizable?: boolean;
|
|
73
89
|
type?: NeuTableCellType;
|
|
74
90
|
badgeMap?: Record<string, NeuTableBadgeConfig>;
|
|
75
91
|
dateFormat?: Intl.DateTimeFormatOptions;
|
|
@@ -110,10 +126,14 @@ declare class NeuTableComponent {
|
|
|
110
126
|
private readonly _destroyRef;
|
|
111
127
|
private readonly _urlState;
|
|
112
128
|
private readonly _platformId;
|
|
129
|
+
private readonly _scrollContainer;
|
|
130
|
+
private readonly _virtualOverscan;
|
|
113
131
|
readonly expandTemplate: Signal<NeuTableExpandDirective | undefined>;
|
|
114
132
|
readonly columns: _angular_core.InputSignal<NeuTableColumn<Record<string, unknown>>[]>;
|
|
115
133
|
readonly data: _angular_core.InputSignal<object[]>;
|
|
116
134
|
readonly pageSize: _angular_core.InputSignal<number>;
|
|
135
|
+
/** Controla si la paginación está activa. Si es false, se muestran todos los datos y se ocultan los controles de paginación y pageSize. */
|
|
136
|
+
readonly pagination: _angular_core.InputSignal<boolean>;
|
|
117
137
|
readonly loading: _angular_core.InputSignal<boolean>;
|
|
118
138
|
readonly title: _angular_core.InputSignal<string>;
|
|
119
139
|
readonly emptyMessage: _angular_core.InputSignal<string>;
|
|
@@ -147,11 +167,18 @@ declare class NeuTableComponent {
|
|
|
147
167
|
readonly sortable: _angular_core.InputSignal<boolean>;
|
|
148
168
|
readonly selectable: _angular_core.InputSignal<boolean>;
|
|
149
169
|
readonly expandable: _angular_core.InputSignal<boolean>;
|
|
170
|
+
readonly expandMode: _angular_core.InputSignal<"multiple" | "single">;
|
|
150
171
|
readonly exportable: _angular_core.InputSignal<boolean>;
|
|
151
172
|
readonly exportFileName: _angular_core.InputSignal<string>;
|
|
152
173
|
readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
|
|
153
174
|
readonly stickyHeader: _angular_core.InputSignal<boolean>;
|
|
175
|
+
readonly virtualScroll: _angular_core.InputSignal<boolean>;
|
|
176
|
+
readonly virtualScrollVisibleItems: _angular_core.InputSignal<number>;
|
|
177
|
+
readonly resizableColumns: _angular_core.InputSignal<boolean>;
|
|
154
178
|
readonly rowKey: _angular_core.InputSignal<string>;
|
|
179
|
+
readonly bordered: _angular_core.InputSignal<boolean>;
|
|
180
|
+
readonly roundedBorders: _angular_core.InputSignal<boolean>;
|
|
181
|
+
readonly stripedRows: _angular_core.InputSignal<boolean>;
|
|
155
182
|
readonly density: _angular_core.InputSignal<"compact" | "normal" | "relaxed">;
|
|
156
183
|
readonly showRowNumbers: _angular_core.InputSignal<boolean>;
|
|
157
184
|
readonly rowClass: _angular_core.InputSignal<((row: Row) => string) | undefined>;
|
|
@@ -162,6 +189,8 @@ declare class NeuTableComponent {
|
|
|
162
189
|
readonly multiSort: _angular_core.InputSignal<boolean>;
|
|
163
190
|
readonly exportFormats: _angular_core.InputSignal<("csv" | "json")[]>;
|
|
164
191
|
readonly exportColumns: _angular_core.InputSignal<string[]>;
|
|
192
|
+
readonly exportScope: _angular_core.InputSignal<"selected" | "filtered" | "auto">;
|
|
193
|
+
readonly selectionActions: _angular_core.InputSignal<NeuTableSelectionAction<Row>[]>;
|
|
165
194
|
readonly pageParam: _angular_core.InputSignal<string>;
|
|
166
195
|
readonly searchParam: _angular_core.InputSignal<string>;
|
|
167
196
|
readonly sortParam: _angular_core.InputSignal<string>;
|
|
@@ -182,13 +211,20 @@ declare class NeuTableComponent {
|
|
|
182
211
|
readonly rowClick: _angular_core.OutputEmitterRef<Row>;
|
|
183
212
|
readonly rowDblClick: _angular_core.OutputEmitterRef<Row>;
|
|
184
213
|
readonly actionClick: _angular_core.OutputEmitterRef<NeuTableActionEvent<Row>>;
|
|
214
|
+
readonly selectionActionClick: _angular_core.OutputEmitterRef<NeuTableSelectionActionEvent<Row>>;
|
|
185
215
|
readonly serverStateChange: _angular_core.OutputEmitterRef<NeuTableServerState>;
|
|
186
216
|
readonly searchChange: _angular_core.OutputEmitterRef<string>;
|
|
217
|
+
readonly columnResize: _angular_core.OutputEmitterRef<{
|
|
218
|
+
key: string;
|
|
219
|
+
width: number;
|
|
220
|
+
}>;
|
|
187
221
|
private readonly _internalPage;
|
|
188
222
|
private readonly _internalSearch;
|
|
189
223
|
private readonly _internalSortKey;
|
|
190
224
|
private readonly _internalSortDir;
|
|
191
225
|
private readonly _internalMultiSort;
|
|
226
|
+
private readonly _columnWidths;
|
|
227
|
+
private _resizeCleanup;
|
|
192
228
|
private readonly _urlParamSignals;
|
|
193
229
|
private _getUrlParamSignal;
|
|
194
230
|
private _readUrlParam;
|
|
@@ -213,6 +249,7 @@ declare class NeuTableComponent {
|
|
|
213
249
|
* Converts filterOptions from string[] to NeuSelectOption[] with a leading "All" option. */
|
|
214
250
|
_filterOpts(col: NeuTableColumn): NeuSelectOption[];
|
|
215
251
|
readonly _pageSizeOptions: Signal<NeuSelectOption[]>;
|
|
252
|
+
private readonly _virtualScrollTop;
|
|
216
253
|
constructor();
|
|
217
254
|
private readonly _confirmPending;
|
|
218
255
|
private readonly _rows;
|
|
@@ -222,21 +259,36 @@ declare class NeuTableComponent {
|
|
|
222
259
|
readonly effectivePageSize: Signal<number>;
|
|
223
260
|
readonly totalPages: Signal<number>;
|
|
224
261
|
readonly paginatedData: Signal<Row[]>;
|
|
262
|
+
readonly _virtualRowHeight: Signal<34 | 64 | 48>;
|
|
263
|
+
readonly _virtualHeaderHeight: Signal<number>;
|
|
264
|
+
readonly _virtualScrollActive: Signal<boolean>;
|
|
265
|
+
readonly virtualContainerMaxHeight: Signal<string>;
|
|
266
|
+
readonly _virtualStartIndex: Signal<number>;
|
|
267
|
+
readonly _virtualEndIndex: Signal<number>;
|
|
268
|
+
readonly visiblePageRows: Signal<Row[]>;
|
|
269
|
+
readonly _virtualTopSpacerHeight: Signal<number>;
|
|
270
|
+
readonly _virtualBottomSpacerHeight: Signal<number>;
|
|
225
271
|
readonly pageNumbers: Signal<number[]>;
|
|
226
272
|
readonly paginationInfo: Signal<string>;
|
|
227
273
|
readonly totalColspan: Signal<number>;
|
|
228
|
-
/** Calcula el offset izquierdo acumulado para columnas frozen-left múltiples.
|
|
229
|
-
* Calculates cumulative left offset for multiple frozen-left columns. */
|
|
230
274
|
readonly _frozenLeftOffsets: Signal<Map<string, number>>;
|
|
231
275
|
readonly _lastFrozenLeftKey: Signal<string | null>;
|
|
232
276
|
readonly _firstFrozenRightKey: Signal<string>;
|
|
233
277
|
isLastFrozenLeftColumn(key: string): boolean;
|
|
234
278
|
isFirstFrozenRightColumn(key: string): boolean;
|
|
279
|
+
isColumnResizable(col: NeuTableColumn): boolean;
|
|
280
|
+
columnWidth(col: NeuTableColumn): string | null;
|
|
281
|
+
startColumnResize(col: NeuTableColumn, event: MouseEvent): void;
|
|
282
|
+
resetColumnWidth(key: string, event?: Event): void;
|
|
235
283
|
private readonly _expandedKeys;
|
|
236
284
|
isRowExpanded(row: Row): boolean;
|
|
285
|
+
expandRow(row: Row): void;
|
|
286
|
+
collapseRow(row: Row): void;
|
|
237
287
|
toggleExpand(row: Row): void;
|
|
238
288
|
private readonly _selectedKeys;
|
|
289
|
+
private readonly _selectionConfirmPending;
|
|
239
290
|
readonly selectedCount: Signal<number>;
|
|
291
|
+
readonly selectedRows: Signal<Row[]>;
|
|
240
292
|
readonly selectedRowsInfo: Signal<string>;
|
|
241
293
|
/**
|
|
242
294
|
* TRUE cuando TODOS los registros que pasan el filtro activo están seleccionados.
|
|
@@ -266,20 +318,30 @@ declare class NeuTableComponent {
|
|
|
266
318
|
isConfirmPending(row: Row, action: NeuTableAction<Row>): boolean;
|
|
267
319
|
handleAction(row: Row, action: NeuTableAction<Row>): void;
|
|
268
320
|
cancelConfirm(): void;
|
|
321
|
+
isSelectionConfirmPending(action: NeuTableSelectionAction<Row>): boolean;
|
|
322
|
+
handleSelectionAction(action: NeuTableSelectionAction<Row>): void;
|
|
323
|
+
cancelSelectionConfirm(): void;
|
|
269
324
|
exportCsv(): void;
|
|
270
325
|
exportJson(): void;
|
|
271
326
|
private _getExportColumns;
|
|
327
|
+
private _getExportRows;
|
|
272
328
|
private _downloadBlob;
|
|
329
|
+
onTableScroll(event: Event): void;
|
|
273
330
|
getRowKey(row: Row): unknown;
|
|
331
|
+
visibleRowNumber(rowIdx: number): number;
|
|
332
|
+
private resetVirtualScrollPosition;
|
|
274
333
|
getRowClass(row: Row): string;
|
|
334
|
+
private _columnWidthPx;
|
|
335
|
+
private _setColumnWidth;
|
|
336
|
+
private _stopColumnResize;
|
|
275
337
|
getCellValue(row: Row, col: NeuTableColumn): string;
|
|
276
338
|
getSortPriority(key: string): number;
|
|
277
339
|
columnFilterControl(key: string): FormControl<string>;
|
|
278
340
|
getColumnFilterValue(key: string): unknown;
|
|
279
341
|
private _emitServerState;
|
|
280
342
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTableComponent, never>;
|
|
281
|
-
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; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "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; }; "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; }; "rowKey": { "alias": "rowKey"; "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; }; "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"; "serverStateChange": "serverStateChange"; "searchChange": "searchChange"; }, ["expandTemplate"], never, true, never>;
|
|
343
|
+
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; }; "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>;
|
|
282
344
|
}
|
|
283
345
|
|
|
284
346
|
export { NeuTableComponent, NeuTableExpandDirective };
|
|
285
|
-
export type { NeuTableAction, NeuTableActionEvent, NeuTableBadgeConfig, NeuTableBadgeVariant, NeuTableCellType, NeuTableColumn, NeuTableServerState, NeuTableSortEntry };
|
|
347
|
+
export type { NeuTableAction, NeuTableActionEvent, NeuTableBadgeConfig, NeuTableBadgeVariant, NeuTableCellType, NeuTableColumn, NeuTableSelectionAction, NeuTableSelectionActionEvent, NeuTableServerState, NeuTableSortEntry };
|
|
@@ -33,6 +33,7 @@ declare class NeuTabsComponent implements AfterViewInit, OnDestroy {
|
|
|
33
33
|
private _dragStartX;
|
|
34
34
|
private _dragStartScrollLeft;
|
|
35
35
|
private _suppressNextClick;
|
|
36
|
+
private readonly _optimisticActiveTabId;
|
|
36
37
|
readonly isDraggingNav: _angular_core.WritableSignal<boolean>;
|
|
37
38
|
private _getUrlParamSignal;
|
|
38
39
|
private _readUrlParam;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
type NeuTimelineGridItemVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';
|
|
4
|
+
interface NeuTimelineGridColumn {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
interface NeuTimelineGridItem {
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
start: string;
|
|
13
|
+
span?: number;
|
|
14
|
+
subtitle?: string;
|
|
15
|
+
meta?: string;
|
|
16
|
+
variant?: NeuTimelineGridItemVariant;
|
|
17
|
+
}
|
|
18
|
+
interface NeuTimelineGridRow {
|
|
19
|
+
id: string;
|
|
20
|
+
label: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
items: NeuTimelineGridItem[];
|
|
23
|
+
}
|
|
24
|
+
interface NeuTimelineGridSlotSelection {
|
|
25
|
+
rowId: string;
|
|
26
|
+
columnId: string;
|
|
27
|
+
}
|
|
28
|
+
declare class NeuTimelineGridComponent {
|
|
29
|
+
readonly columns: _angular_core.InputSignal<NeuTimelineGridColumn[]>;
|
|
30
|
+
readonly rows: _angular_core.InputSignal<NeuTimelineGridRow[]>;
|
|
31
|
+
readonly compact: _angular_core.InputSignal<boolean>;
|
|
32
|
+
readonly stickyLabels: _angular_core.InputSignal<boolean>;
|
|
33
|
+
readonly minColumnWidth: _angular_core.InputSignal<string>;
|
|
34
|
+
readonly selectedItemId: _angular_core.InputSignal<string | null>;
|
|
35
|
+
readonly selectedSlot: _angular_core.InputSignal<NeuTimelineGridSlotSelection | null>;
|
|
36
|
+
readonly itemClick: _angular_core.OutputEmitterRef<NeuTimelineGridItem>;
|
|
37
|
+
readonly slotClick: _angular_core.OutputEmitterRef<NeuTimelineGridSlotSelection>;
|
|
38
|
+
readonly _columnIndexMap: _angular_core.Signal<Map<string, number>>;
|
|
39
|
+
readonly gridTemplateColumns: _angular_core.Signal<string>;
|
|
40
|
+
validItems(row: NeuTimelineGridRow): NeuTimelineGridItem[];
|
|
41
|
+
itemGridColumn(item: NeuTimelineGridItem): string;
|
|
42
|
+
slotGridColumn(columnId: string): string;
|
|
43
|
+
itemClass(item: NeuTimelineGridItem): string;
|
|
44
|
+
itemAriaLabel(row: NeuTimelineGridRow, item: NeuTimelineGridItem): string;
|
|
45
|
+
slotAriaLabel(row: NeuTimelineGridRow, column: NeuTimelineGridColumn): string;
|
|
46
|
+
slotKey(rowId: string, columnId: string): string;
|
|
47
|
+
isItemSelected(itemId: string): boolean;
|
|
48
|
+
isSlotSelected(rowId: string, columnId: string): boolean;
|
|
49
|
+
onSlotClick(rowId: string, columnId: string): void;
|
|
50
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTimelineGridComponent, never>;
|
|
51
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTimelineGridComponent, "neu-timeline-grid", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "stickyLabels": { "alias": "stickyLabels"; "required": false; "isSignal": true; }; "minColumnWidth": { "alias": "minColumnWidth"; "required": false; "isSignal": true; }; "selectedItemId": { "alias": "selectedItemId"; "required": false; "isSignal": true; }; "selectedSlot": { "alias": "selectedSlot"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "slotClick": "slotClick"; }, never, never, true, never>;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { NeuTimelineGridComponent };
|
|
55
|
+
export type { NeuTimelineGridColumn, NeuTimelineGridItem, NeuTimelineGridItemVariant, NeuTimelineGridRow, NeuTimelineGridSlotSelection };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { NeuTableColumn } from '@neural-ui/core/table';
|
|
3
|
+
|
|
4
|
+
interface NeuTreeTableNode<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
badge?: string;
|
|
9
|
+
children?: NeuTreeTableNode<T>[];
|
|
10
|
+
expanded?: boolean;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
data?: T;
|
|
13
|
+
}
|
|
14
|
+
interface NeuTreeTableRow<T extends Record<string, unknown> = Record<string, unknown>> extends Record<string, unknown> {
|
|
15
|
+
id: string;
|
|
16
|
+
label: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
badge?: string;
|
|
19
|
+
__treeLevel: number;
|
|
20
|
+
__treeHasChildren: boolean;
|
|
21
|
+
__treeExpanded: boolean;
|
|
22
|
+
__treeDisabled: boolean;
|
|
23
|
+
__treeParentId?: string;
|
|
24
|
+
__treeNode: NeuTreeTableNode<T>;
|
|
25
|
+
}
|
|
26
|
+
declare class NeuTreeTableComponent {
|
|
27
|
+
readonly nodes: _angular_core.InputSignal<NeuTreeTableNode<Record<string, unknown>>[]>;
|
|
28
|
+
readonly columns: _angular_core.InputSignal<NeuTableColumn<Record<string, unknown>>[]>;
|
|
29
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
30
|
+
readonly treeColumnKey: _angular_core.InputSignal<string>;
|
|
31
|
+
readonly rowKey: _angular_core.InputSignal<string>;
|
|
32
|
+
readonly tableAriaLabel: _angular_core.InputSignal<string>;
|
|
33
|
+
readonly searchPlaceholder: _angular_core.InputSignal<string>;
|
|
34
|
+
readonly emptyMessage: _angular_core.InputSignal<string>;
|
|
35
|
+
readonly expandLabel: _angular_core.InputSignal<string>;
|
|
36
|
+
readonly collapseLabel: _angular_core.InputSignal<string>;
|
|
37
|
+
readonly indentSize: _angular_core.InputSignal<number>;
|
|
38
|
+
readonly searchable: _angular_core.InputSignal<boolean>;
|
|
39
|
+
readonly pagination: _angular_core.InputSignal<boolean>;
|
|
40
|
+
readonly selectable: _angular_core.InputSignal<boolean>;
|
|
41
|
+
readonly stickyHeader: _angular_core.InputSignal<boolean>;
|
|
42
|
+
readonly stripedRows: _angular_core.InputSignal<boolean>;
|
|
43
|
+
readonly bordered: _angular_core.InputSignal<boolean>;
|
|
44
|
+
readonly roundedBorders: _angular_core.InputSignal<boolean>;
|
|
45
|
+
readonly sortable: _angular_core.InputSignal<boolean>;
|
|
46
|
+
readonly showRowNumbers: _angular_core.InputSignal<boolean>;
|
|
47
|
+
readonly useUrlState: _angular_core.InputSignal<boolean>;
|
|
48
|
+
readonly density: _angular_core.InputSignal<"compact" | "normal" | "relaxed">;
|
|
49
|
+
readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
|
|
50
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<NeuTreeTableNode<Record<string, unknown>>[]>;
|
|
51
|
+
readonly nodeClick: _angular_core.OutputEmitterRef<NeuTreeTableNode<Record<string, unknown>>>;
|
|
52
|
+
readonly expansionChange: _angular_core.OutputEmitterRef<string[]>;
|
|
53
|
+
private readonly treeCellTpl;
|
|
54
|
+
private readonly expandedKeys;
|
|
55
|
+
readonly flatRows: _angular_core.Signal<Record<string, unknown>[]>;
|
|
56
|
+
readonly resolvedColumns: _angular_core.Signal<NeuTableColumn<Record<string, unknown>>[]>;
|
|
57
|
+
constructor();
|
|
58
|
+
toggleNode(node: NeuTreeTableNode, event?: Event): void;
|
|
59
|
+
onTableSelectionChange(rows: Record<string, unknown>[]): void;
|
|
60
|
+
onTableRowClick(row: Record<string, unknown>): void;
|
|
61
|
+
treeIndent(row: NeuTreeTableRow): number;
|
|
62
|
+
isTreeRowDisabled(row: NeuTreeTableRow): boolean;
|
|
63
|
+
treeToggleAriaLabel(row: NeuTreeTableRow): string;
|
|
64
|
+
private flattenNodes;
|
|
65
|
+
private collectExpandedKeys;
|
|
66
|
+
private asFlatRow;
|
|
67
|
+
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>;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export { NeuTreeTableComponent };
|
|
72
|
+
export type { NeuTreeTableNode, NeuTreeTableRow };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
interface NeuTreeNode<T = unknown> {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
badge?: string;
|
|
8
|
+
children?: NeuTreeNode<T>[];
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
expanded?: boolean;
|
|
11
|
+
selectable?: boolean;
|
|
12
|
+
data?: T;
|
|
13
|
+
}
|
|
14
|
+
type NeuTreeSelectionMode = 'single' | 'multiple';
|
|
15
|
+
declare class NeuTreeComponent {
|
|
16
|
+
nodes: _angular_core.InputSignal<NeuTreeNode<unknown>[]>;
|
|
17
|
+
selectable: _angular_core.InputSignal<boolean>;
|
|
18
|
+
searchable: _angular_core.InputSignal<boolean>;
|
|
19
|
+
selectionMode: _angular_core.InputSignal<NeuTreeSelectionMode>;
|
|
20
|
+
indentSize: _angular_core.InputSignal<number>;
|
|
21
|
+
ariaLabel: _angular_core.InputSignal<string>;
|
|
22
|
+
searchPlaceholder: _angular_core.InputSignal<string>;
|
|
23
|
+
emptyLabel: _angular_core.InputSignal<string>;
|
|
24
|
+
expandLabel: _angular_core.InputSignal<string>;
|
|
25
|
+
collapseLabel: _angular_core.InputSignal<string>;
|
|
26
|
+
selectionChange: _angular_core.OutputEmitterRef<NeuTreeNode<unknown>[]>;
|
|
27
|
+
expansionChange: _angular_core.OutputEmitterRef<string[]>;
|
|
28
|
+
nodeClick: _angular_core.OutputEmitterRef<NeuTreeNode<unknown>>;
|
|
29
|
+
readonly searchQuery: _angular_core.WritableSignal<string>;
|
|
30
|
+
private readonly expandedKeys;
|
|
31
|
+
private readonly selectedKeys;
|
|
32
|
+
readonly visibleNodes: _angular_core.Signal<NeuTreeNode<unknown>[]>;
|
|
33
|
+
constructor();
|
|
34
|
+
hasChildren(node: NeuTreeNode): boolean;
|
|
35
|
+
canSelect(node: NeuTreeNode): boolean;
|
|
36
|
+
isExpanded(nodeId: string): boolean;
|
|
37
|
+
isRenderedExpanded(node: NeuTreeNode): boolean;
|
|
38
|
+
isSelected(nodeId: string): boolean;
|
|
39
|
+
onSearch(event: Event): void;
|
|
40
|
+
toggleNode(node: NeuTreeNode, event?: Event): void;
|
|
41
|
+
activateNode(node: NeuTreeNode): void;
|
|
42
|
+
onCheckboxChange(node: NeuTreeNode, event: Event): void;
|
|
43
|
+
private updateSelection;
|
|
44
|
+
private collectExpandedKeys;
|
|
45
|
+
private collectSelectedNodes;
|
|
46
|
+
private filterNodes;
|
|
47
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuTreeComponent, never>;
|
|
48
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuTreeComponent, "neu-tree", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "expansionChange": "expansionChange"; "nodeClick": "nodeClick"; }, never, never, true, never>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export { NeuTreeComponent };
|
|
52
|
+
export type { NeuTreeNode, NeuTreeSelectionMode };
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { ElementRef } from '@angular/core';
|
|
3
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
4
|
+
|
|
5
|
+
type NeuUploaderSize = 'sm' | 'md' | 'lg';
|
|
6
|
+
type NeuUploaderErrorCode = 'accept' | 'max-file-size' | 'max-files' | 'duplicate' | 'empty-selection';
|
|
7
|
+
interface NeuUploaderError {
|
|
8
|
+
code: NeuUploaderErrorCode;
|
|
9
|
+
message: string;
|
|
10
|
+
file?: File;
|
|
11
|
+
}
|
|
12
|
+
interface NeuUploaderFileItem {
|
|
13
|
+
id: string;
|
|
14
|
+
file: File;
|
|
15
|
+
name: string;
|
|
16
|
+
size: number;
|
|
17
|
+
type: string;
|
|
18
|
+
progress: number | null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare class NeuUploaderComponent implements ControlValueAccessor {
|
|
22
|
+
readonly fileInput: _angular_core.Signal<ElementRef<HTMLInputElement>>;
|
|
23
|
+
label: _angular_core.InputSignal<string>;
|
|
24
|
+
hint: _angular_core.InputSignal<string>;
|
|
25
|
+
errorMessage: _angular_core.InputSignal<string>;
|
|
26
|
+
placeholder: _angular_core.InputSignal<string>;
|
|
27
|
+
pickerDescription: _angular_core.InputSignal<string>;
|
|
28
|
+
dropzoneLabel: _angular_core.InputSignal<string>;
|
|
29
|
+
chooseLabel: _angular_core.InputSignal<string>;
|
|
30
|
+
clearLabel: _angular_core.InputSignal<string>;
|
|
31
|
+
progressLabel: _angular_core.InputSignal<string>;
|
|
32
|
+
showPickerText: _angular_core.InputSignal<boolean>;
|
|
33
|
+
showProgress: _angular_core.InputSignal<boolean>;
|
|
34
|
+
listAriaLabel: _angular_core.InputSignal<string>;
|
|
35
|
+
removeAriaLabel: _angular_core.InputSignal<string>;
|
|
36
|
+
acceptedTypesLabel: _angular_core.InputSignal<string>;
|
|
37
|
+
maxFileSizeTextLabel: _angular_core.InputSignal<string>;
|
|
38
|
+
fileCountSingularLabel: _angular_core.InputSignal<string>;
|
|
39
|
+
fileCountPluralLabel: _angular_core.InputSignal<string>;
|
|
40
|
+
emptySelectionMessage: _angular_core.InputSignal<string>;
|
|
41
|
+
invalidTypeMessage: _angular_core.InputSignal<string>;
|
|
42
|
+
maxFileSizeMessage: _angular_core.InputSignal<string>;
|
|
43
|
+
duplicateFileMessage: _angular_core.InputSignal<string>;
|
|
44
|
+
maxFilesMessage: _angular_core.InputSignal<string>;
|
|
45
|
+
accept: _angular_core.InputSignal<string>;
|
|
46
|
+
multiple: _angular_core.InputSignal<boolean>;
|
|
47
|
+
dropzone: _angular_core.InputSignal<boolean>;
|
|
48
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
49
|
+
size: _angular_core.InputSignal<NeuUploaderSize>;
|
|
50
|
+
maxFiles: _angular_core.InputSignal<number | null>;
|
|
51
|
+
maxFileSize: _angular_core.InputSignal<number | null>;
|
|
52
|
+
progress: _angular_core.InputSignal<number | null>;
|
|
53
|
+
readonly filesSelected: _angular_core.OutputEmitterRef<File[]>;
|
|
54
|
+
readonly fileRemoved: _angular_core.OutputEmitterRef<File>;
|
|
55
|
+
readonly filesRejected: _angular_core.OutputEmitterRef<NeuUploaderError[]>;
|
|
56
|
+
readonly cleared: _angular_core.OutputEmitterRef<void>;
|
|
57
|
+
readonly inputId: _angular_core.InputSignal<string>;
|
|
58
|
+
protected readonly isDragOver: _angular_core.WritableSignal<boolean>;
|
|
59
|
+
protected readonly internalErrors: _angular_core.WritableSignal<NeuUploaderError[]>;
|
|
60
|
+
protected readonly fileItems: _angular_core.WritableSignal<NeuUploaderFileItem[]>;
|
|
61
|
+
private readonly cvaDisabled;
|
|
62
|
+
private onChange;
|
|
63
|
+
private onTouched;
|
|
64
|
+
readonly isDisabledFinal: _angular_core.Signal<boolean>;
|
|
65
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
66
|
+
readonly shouldShowProgress: _angular_core.Signal<boolean>;
|
|
67
|
+
readonly pickerButtonAriaLabel: _angular_core.Signal<string | null>;
|
|
68
|
+
readonly describedBy: _angular_core.Signal<string | null>;
|
|
69
|
+
readonly headlineText: _angular_core.Signal<string>;
|
|
70
|
+
readonly descriptionText: _angular_core.Signal<string>;
|
|
71
|
+
readonly summaryText: _angular_core.Signal<string>;
|
|
72
|
+
readonly displayErrorMessage: _angular_core.Signal<string>;
|
|
73
|
+
writeValue(value: File[] | File | null | undefined): void;
|
|
74
|
+
registerOnChange(fn: (value: File[]) => void): void;
|
|
75
|
+
registerOnTouched(fn: () => void): void;
|
|
76
|
+
setDisabledState(isDisabled: boolean): void;
|
|
77
|
+
openFilePicker(): void;
|
|
78
|
+
onDropzoneKey(event: KeyboardEvent): void;
|
|
79
|
+
onNativeInputChange(event: Event): void;
|
|
80
|
+
onDragOver(event: DragEvent): void;
|
|
81
|
+
onDragLeave(event: DragEvent): void;
|
|
82
|
+
onDrop(event: DragEvent): void;
|
|
83
|
+
removeFile(id: string, event?: Event): void;
|
|
84
|
+
clearFiles(event?: Event): void;
|
|
85
|
+
formatBytes(bytes: number): string;
|
|
86
|
+
private consumeFiles;
|
|
87
|
+
private emitValue;
|
|
88
|
+
private toItem;
|
|
89
|
+
private fileSignature;
|
|
90
|
+
private reportErrors;
|
|
91
|
+
private interpolate;
|
|
92
|
+
private isAcceptedType;
|
|
93
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuUploaderComponent, never>;
|
|
94
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuUploaderComponent, "neu-uploader", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "pickerDescription": { "alias": "pickerDescription"; "required": false; "isSignal": true; }; "dropzoneLabel": { "alias": "dropzoneLabel"; "required": false; "isSignal": true; }; "chooseLabel": { "alias": "chooseLabel"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "progressLabel": { "alias": "progressLabel"; "required": false; "isSignal": true; }; "showPickerText": { "alias": "showPickerText"; "required": false; "isSignal": true; }; "showProgress": { "alias": "showProgress"; "required": false; "isSignal": true; }; "listAriaLabel": { "alias": "listAriaLabel"; "required": false; "isSignal": true; }; "removeAriaLabel": { "alias": "removeAriaLabel"; "required": false; "isSignal": true; }; "acceptedTypesLabel": { "alias": "acceptedTypesLabel"; "required": false; "isSignal": true; }; "maxFileSizeTextLabel": { "alias": "maxFileSizeTextLabel"; "required": false; "isSignal": true; }; "fileCountSingularLabel": { "alias": "fileCountSingularLabel"; "required": false; "isSignal": true; }; "fileCountPluralLabel": { "alias": "fileCountPluralLabel"; "required": false; "isSignal": true; }; "emptySelectionMessage": { "alias": "emptySelectionMessage"; "required": false; "isSignal": true; }; "invalidTypeMessage": { "alias": "invalidTypeMessage"; "required": false; "isSignal": true; }; "maxFileSizeMessage": { "alias": "maxFileSizeMessage"; "required": false; "isSignal": true; }; "duplicateFileMessage": { "alias": "duplicateFileMessage"; "required": false; "isSignal": true; }; "maxFilesMessage": { "alias": "maxFilesMessage"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "dropzone": { "alias": "dropzone"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; }, { "filesSelected": "filesSelected"; "fileRemoved": "fileRemoved"; "filesRejected": "filesRejected"; "cleared": "cleared"; }, never, never, true, never>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export { NeuUploaderComponent };
|
|
98
|
+
export type { NeuUploaderError, NeuUploaderErrorCode, NeuUploaderFileItem, NeuUploaderSize };
|
|
@@ -17,6 +17,11 @@ import { Params, Router } from '@angular/router';
|
|
|
17
17
|
declare class NeuUrlStateService {
|
|
18
18
|
private readonly injector;
|
|
19
19
|
private readonly router;
|
|
20
|
+
private _pendingParams;
|
|
21
|
+
private _pendingReplaceUrl;
|
|
22
|
+
private _batchScheduled;
|
|
23
|
+
private readonly _pendingParamsState;
|
|
24
|
+
private readonly _routerParams;
|
|
20
25
|
/**
|
|
21
26
|
* Signal con el mapa completo de queryParams actual.
|
|
22
27
|
* Se actualiza automáticamente en cada NavigationEnd.
|
|
@@ -40,6 +45,10 @@ declare class NeuUrlStateService {
|
|
|
40
45
|
* Pasar false para acciones que el usuario debe poder deshacer con Atrás.
|
|
41
46
|
*/
|
|
42
47
|
setParam(key: string, value: string | null, replaceUrl?: boolean): void;
|
|
48
|
+
private _schedulePendingNavigation;
|
|
49
|
+
private _consumePendingNavigation;
|
|
50
|
+
private _resetPendingNavigation;
|
|
51
|
+
private _finalizePendingNavigation;
|
|
43
52
|
/**
|
|
44
53
|
* Actualiza múltiples queryParams en una sola navegación.
|
|
45
54
|
*
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { AfterViewInit, TemplateRef } from '@angular/core';
|
|
3
3
|
|
|
4
|
+
declare class NeuVirtualListRowComponent {
|
|
5
|
+
readonly item: _angular_core.InputSignal<unknown>;
|
|
6
|
+
readonly index: _angular_core.InputSignal<number>;
|
|
7
|
+
readonly itemSize: _angular_core.InputSignal<number>;
|
|
8
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
9
|
+
readonly template: _angular_core.InputSignal<TemplateRef<{
|
|
10
|
+
$implicit: unknown;
|
|
11
|
+
index: number;
|
|
12
|
+
}> | null>;
|
|
13
|
+
readonly context: _angular_core.Signal<{
|
|
14
|
+
$implicit: unknown;
|
|
15
|
+
index: number;
|
|
16
|
+
}>;
|
|
17
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NeuVirtualListRowComponent, never>;
|
|
18
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuVirtualListRowComponent, "neu-virtual-list-row", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; "itemSize": { "alias": "itemSize"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
19
|
+
}
|
|
4
20
|
/**
|
|
5
21
|
* NeuralUI VirtualList
|
|
6
22
|
*
|
|
@@ -57,4 +73,4 @@ declare class NeuVirtualListComponent<T = unknown> implements AfterViewInit {
|
|
|
57
73
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NeuVirtualListComponent<any>, "neu-virtual-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "itemSize": { "alias": "itemSize"; "required": false; "isSignal": true; }; "visibleRows": { "alias": "visibleRows"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, ["itemTemplate"], never, true, never>;
|
|
58
74
|
}
|
|
59
75
|
|
|
60
|
-
export { NeuVirtualListComponent };
|
|
76
|
+
export { NeuVirtualListComponent, NeuVirtualListRowComponent };
|