@neural-ui/core 1.5.14 → 1.6.1
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/fesm2022/neural-ui-core-accordion.mjs +13 -9
- package/fesm2022/neural-ui-core-accordion.mjs.map +1 -1
- package/fesm2022/neural-ui-core-alert.mjs +25 -14
- package/fesm2022/neural-ui-core-alert.mjs.map +1 -1
- package/fesm2022/neural-ui-core-autocomplete.mjs +53 -28
- package/fesm2022/neural-ui-core-autocomplete.mjs.map +1 -1
- package/fesm2022/neural-ui-core-avatar.mjs +23 -13
- package/fesm2022/neural-ui-core-avatar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-badge.mjs +15 -9
- package/fesm2022/neural-ui-core-badge.mjs.map +1 -1
- package/fesm2022/neural-ui-core-block-ui.mjs +16 -11
- package/fesm2022/neural-ui-core-block-ui.mjs.map +1 -1
- package/fesm2022/neural-ui-core-breadcrumb.mjs +8 -6
- package/fesm2022/neural-ui-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/neural-ui-core-button.mjs +29 -16
- package/fesm2022/neural-ui-core-button.mjs.map +1 -1
- package/fesm2022/neural-ui-core-calendar.mjs +75 -50
- package/fesm2022/neural-ui-core-calendar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-card.mjs +13 -8
- package/fesm2022/neural-ui-core-card.mjs.map +1 -1
- package/fesm2022/neural-ui-core-chart.mjs +45 -24
- package/fesm2022/neural-ui-core-chart.mjs.map +1 -1
- package/fesm2022/neural-ui-core-checkbox.mjs +15 -9
- package/fesm2022/neural-ui-core-checkbox.mjs.map +1 -1
- package/fesm2022/neural-ui-core-chip.mjs +23 -13
- package/fesm2022/neural-ui-core-chip.mjs.map +1 -1
- package/fesm2022/neural-ui-core-code-block.mjs +32 -17
- package/fesm2022/neural-ui-core-code-block.mjs.map +1 -1
- package/fesm2022/neural-ui-core-color-picker.mjs +19 -11
- package/fesm2022/neural-ui-core-color-picker.mjs.map +1 -1
- package/fesm2022/neural-ui-core-command-palette.mjs +16 -11
- package/fesm2022/neural-ui-core-command-palette.mjs.map +1 -1
- package/fesm2022/neural-ui-core-confirm-dialog.mjs +6 -6
- package/fesm2022/neural-ui-core-context-menu.mjs +12 -9
- package/fesm2022/neural-ui-core-context-menu.mjs.map +1 -1
- package/fesm2022/neural-ui-core-dashboard-grid.mjs +11 -7
- package/fesm2022/neural-ui-core-dashboard-grid.mjs.map +1 -1
- package/fesm2022/neural-ui-core-date-input.mjs +111 -57
- package/fesm2022/neural-ui-core-date-input.mjs.map +1 -1
- package/fesm2022/neural-ui-core-divider.mjs +7 -5
- package/fesm2022/neural-ui-core-divider.mjs.map +1 -1
- package/fesm2022/neural-ui-core-empty-state.mjs +13 -8
- package/fesm2022/neural-ui-core-empty-state.mjs.map +1 -1
- package/fesm2022/neural-ui-core-filter-bar.mjs +19 -11
- package/fesm2022/neural-ui-core-filter-bar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-icon.mjs +11 -7
- package/fesm2022/neural-ui-core-icon.mjs.map +1 -1
- package/fesm2022/neural-ui-core-image-gallery.mjs +23 -13
- package/fesm2022/neural-ui-core-image-gallery.mjs.map +1 -1
- package/fesm2022/neural-ui-core-image-viewer.mjs +22 -14
- package/fesm2022/neural-ui-core-image-viewer.mjs.map +1 -1
- package/fesm2022/neural-ui-core-input-otp.mjs +19 -11
- package/fesm2022/neural-ui-core-input-otp.mjs.map +1 -1
- package/fesm2022/neural-ui-core-input.mjs +67 -35
- package/fesm2022/neural-ui-core-input.mjs.map +1 -1
- package/fesm2022/neural-ui-core-kanban.mjs +17 -11
- package/fesm2022/neural-ui-core-kanban.mjs.map +1 -1
- package/fesm2022/neural-ui-core-knob.mjs +41 -22
- package/fesm2022/neural-ui-core-knob.mjs.map +1 -1
- package/fesm2022/neural-ui-core-meter-group.mjs +23 -13
- package/fesm2022/neural-ui-core-meter-group.mjs.map +1 -1
- package/fesm2022/neural-ui-core-modal.mjs +16 -11
- package/fesm2022/neural-ui-core-modal.mjs.map +1 -1
- package/fesm2022/neural-ui-core-multiselect.mjs +72 -39
- package/fesm2022/neural-ui-core-multiselect.mjs.map +1 -1
- package/fesm2022/neural-ui-core-nav.mjs +22 -13
- package/fesm2022/neural-ui-core-nav.mjs.map +1 -1
- package/fesm2022/neural-ui-core-notification-center.mjs +27 -10
- package/fesm2022/neural-ui-core-notification-center.mjs.map +1 -1
- package/fesm2022/neural-ui-core-number-input.mjs +35 -19
- package/fesm2022/neural-ui-core-number-input.mjs.map +1 -1
- package/fesm2022/neural-ui-core-pagination.mjs +15 -9
- package/fesm2022/neural-ui-core-pagination.mjs.map +1 -1
- package/fesm2022/neural-ui-core-popover.mjs +22 -14
- package/fesm2022/neural-ui-core-popover.mjs.map +1 -1
- package/fesm2022/neural-ui-core-progress-bar.mjs +19 -11
- package/fesm2022/neural-ui-core-progress-bar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-radio.mjs +24 -15
- package/fesm2022/neural-ui-core-radio.mjs.map +1 -1
- package/fesm2022/neural-ui-core-rating.mjs +13 -8
- package/fesm2022/neural-ui-core-rating.mjs.map +1 -1
- package/fesm2022/neural-ui-core-rich-text-editor.mjs +773 -0
- package/fesm2022/neural-ui-core-rich-text-editor.mjs.map +1 -0
- package/fesm2022/neural-ui-core-scheduler-gantt.mjs +41 -22
- package/fesm2022/neural-ui-core-scheduler-gantt.mjs.map +1 -1
- package/fesm2022/neural-ui-core-select.mjs +77 -43
- package/fesm2022/neural-ui-core-select.mjs.map +1 -1
- package/fesm2022/neural-ui-core-sidebar.mjs +23 -14
- package/fesm2022/neural-ui-core-sidebar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-skeleton.mjs +11 -7
- package/fesm2022/neural-ui-core-skeleton.mjs.map +1 -1
- package/fesm2022/neural-ui-core-slider.mjs +23 -13
- package/fesm2022/neural-ui-core-slider.mjs.map +1 -1
- package/fesm2022/neural-ui-core-spinner.mjs +17 -10
- package/fesm2022/neural-ui-core-spinner.mjs.map +1 -1
- package/fesm2022/neural-ui-core-split-button.mjs +27 -15
- package/fesm2022/neural-ui-core-split-button.mjs.map +1 -1
- package/fesm2022/neural-ui-core-splitter.mjs +9 -6
- package/fesm2022/neural-ui-core-splitter.mjs.map +1 -1
- package/fesm2022/neural-ui-core-stats-card.mjs +19 -11
- package/fesm2022/neural-ui-core-stats-card.mjs.map +1 -1
- package/fesm2022/neural-ui-core-stepper.mjs +13 -8
- package/fesm2022/neural-ui-core-stepper.mjs.map +1 -1
- package/fesm2022/neural-ui-core-switch.mjs +15 -9
- package/fesm2022/neural-ui-core-switch.mjs.map +1 -1
- package/fesm2022/neural-ui-core-table.mjs +242 -124
- package/fesm2022/neural-ui-core-table.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tabs.mjs +30 -18
- package/fesm2022/neural-ui-core-tabs.mjs.map +1 -1
- package/fesm2022/neural-ui-core-textarea.mjs +43 -23
- package/fesm2022/neural-ui-core-textarea.mjs.map +1 -1
- package/fesm2022/neural-ui-core-timeline-grid.mjs +21 -12
- package/fesm2022/neural-ui-core-timeline-grid.mjs.map +1 -1
- package/fesm2022/neural-ui-core-timeline.mjs +5 -4
- package/fesm2022/neural-ui-core-timeline.mjs.map +1 -1
- package/fesm2022/neural-ui-core-toast.mjs +25 -9
- package/fesm2022/neural-ui-core-toast.mjs.map +1 -1
- package/fesm2022/neural-ui-core-toggle-button-group.mjs +17 -10
- package/fesm2022/neural-ui-core-toggle-button-group.mjs.map +1 -1
- package/fesm2022/neural-ui-core-toolbar.mjs +13 -8
- package/fesm2022/neural-ui-core-toolbar.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tooltip.mjs +16 -11
- package/fesm2022/neural-ui-core-tooltip.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tree-table.mjs +57 -30
- package/fesm2022/neural-ui-core-tree-table.mjs.map +1 -1
- package/fesm2022/neural-ui-core-tree.mjs +31 -17
- package/fesm2022/neural-ui-core-tree.mjs.map +1 -1
- package/fesm2022/neural-ui-core-uploader.mjs +91 -47
- package/fesm2022/neural-ui-core-uploader.mjs.map +1 -1
- package/fesm2022/neural-ui-core-url-state.mjs +7 -5
- package/fesm2022/neural-ui-core-url-state.mjs.map +1 -1
- package/fesm2022/neural-ui-core-virtual-list.mjs +32 -19
- package/fesm2022/neural-ui-core-virtual-list.mjs.map +1 -1
- package/package.json +5 -1
- package/types/neural-ui-core-notification-center.d.ts +2 -0
- package/types/neural-ui-core-rich-text-editor.d.ts +97 -0
- package/types/neural-ui-core-toast.d.ts +2 -0
|
@@ -24,10 +24,10 @@ import { NeuIconComponent } from '@neural-ui/core/icon';
|
|
|
24
24
|
*/
|
|
25
25
|
class NeuTableExpandDirective {
|
|
26
26
|
templateRef = inject(TemplateRef);
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuTableExpandDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
28
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: NeuTableExpandDirective, isStandalone: true, selector: "ng-template[neuTableExpand]", ngImport: i0 });
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuTableExpandDirective, decorators: [{
|
|
31
31
|
type: Directive,
|
|
32
32
|
args: [{
|
|
33
33
|
selector: 'ng-template[neuTableExpand]',
|
|
@@ -61,82 +61,151 @@ class NeuTableComponent {
|
|
|
61
61
|
_destroyRef = inject(DestroyRef);
|
|
62
62
|
_urlState = inject(NeuUrlStateService);
|
|
63
63
|
_platformId = inject(PLATFORM_ID);
|
|
64
|
-
_scrollContainer = viewChild('scrollContainer',
|
|
64
|
+
_scrollContainer = viewChild('scrollContainer', /* @ts-ignore */
|
|
65
|
+
...(ngDevMode ? [{ debugName: "_scrollContainer" }] : /* istanbul ignore next */ []));
|
|
65
66
|
_virtualOverscan = 3;
|
|
66
|
-
expandTemplate = contentChild(NeuTableExpandDirective,
|
|
67
|
+
expandTemplate = contentChild(NeuTableExpandDirective, /* @ts-ignore */
|
|
68
|
+
...(ngDevMode ? [{ debugName: "expandTemplate" }] : /* istanbul ignore next */ []));
|
|
67
69
|
// ── Inputs de datos ─────────────────────────────────────────────────
|
|
68
|
-
columns = input([],
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
columns = input([], /* @ts-ignore */
|
|
71
|
+
...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
72
|
+
data = input([], /* @ts-ignore */
|
|
73
|
+
...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
74
|
+
pageSize = input(10, /* @ts-ignore */
|
|
75
|
+
...(ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []));
|
|
71
76
|
/** 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. */
|
|
72
|
-
pagination = input(true,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
pagination = input(true, /* @ts-ignore */
|
|
78
|
+
...(ngDevMode ? [{ debugName: "pagination" }] : /* istanbul ignore next */ []));
|
|
79
|
+
loading = input(false, /* @ts-ignore */
|
|
80
|
+
...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
81
|
+
title = input('', /* @ts-ignore */
|
|
82
|
+
...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
83
|
+
toolbarExtraRef = input(null, /* @ts-ignore */
|
|
84
|
+
...(ngDevMode ? [{ debugName: "toolbarExtraRef" }] : /* istanbul ignore next */ []));
|
|
85
|
+
emptyMessage = input('No results found', /* @ts-ignore */
|
|
86
|
+
...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
|
|
87
|
+
skeletonRows = input([1, 2, 3, 4, 5], /* @ts-ignore */
|
|
88
|
+
...(ngDevMode ? [{ debugName: "skeletonRows" }] : /* istanbul ignore next */ []));
|
|
78
89
|
// ── Inputs de funcionalidad ──────────────────────────────────────────
|
|
79
|
-
searchable = input(true,
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
90
|
+
searchable = input(true, /* @ts-ignore */
|
|
91
|
+
...(ngDevMode ? [{ debugName: "searchable" }] : /* istanbul ignore next */ []));
|
|
92
|
+
searchPlaceholder = input('Search...', /* @ts-ignore */
|
|
93
|
+
...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : /* istanbul ignore next */ []));
|
|
94
|
+
exactMatchable = input(false, /* @ts-ignore */
|
|
95
|
+
...(ngDevMode ? [{ debugName: "exactMatchable" }] : /* istanbul ignore next */ []));
|
|
96
|
+
exactMatchLabel = input('Exact match', /* @ts-ignore */
|
|
97
|
+
...(ngDevMode ? [{ debugName: "exactMatchLabel" }] : /* istanbul ignore next */ []));
|
|
98
|
+
searchAriaLabel = input('Search table', /* @ts-ignore */
|
|
99
|
+
...(ngDevMode ? [{ debugName: "searchAriaLabel" }] : /* istanbul ignore next */ []));
|
|
100
|
+
clearSearchAriaLabel = input('Clear search', /* @ts-ignore */
|
|
101
|
+
...(ngDevMode ? [{ debugName: "clearSearchAriaLabel" }] : /* istanbul ignore next */ []));
|
|
102
|
+
clearFilterLabel = input('Clear filter', /* @ts-ignore */
|
|
103
|
+
...(ngDevMode ? [{ debugName: "clearFilterLabel" }] : /* istanbul ignore next */ []));
|
|
104
|
+
previousPageAriaLabel = input('Previous page', /* @ts-ignore */
|
|
105
|
+
...(ngDevMode ? [{ debugName: "previousPageAriaLabel" }] : /* istanbul ignore next */ []));
|
|
106
|
+
nextPageAriaLabel = input('Next page', /* @ts-ignore */
|
|
107
|
+
...(ngDevMode ? [{ debugName: "nextPageAriaLabel" }] : /* istanbul ignore next */ []));
|
|
108
|
+
pageSizeLabel = input('Rows:', /* @ts-ignore */
|
|
109
|
+
...(ngDevMode ? [{ debugName: "pageSizeLabel" }] : /* istanbul ignore next */ []));
|
|
110
|
+
pageSizeAriaLabel = input('Rows per page', /* @ts-ignore */
|
|
111
|
+
...(ngDevMode ? [{ debugName: "pageSizeAriaLabel" }] : /* istanbul ignore next */ []));
|
|
112
|
+
paginationAriaLabel = input('Pagination', /* @ts-ignore */
|
|
113
|
+
...(ngDevMode ? [{ debugName: "paginationAriaLabel" }] : /* istanbul ignore next */ []));
|
|
114
|
+
exportCsvTitle = input('Export CSV', /* @ts-ignore */
|
|
115
|
+
...(ngDevMode ? [{ debugName: "exportCsvTitle" }] : /* istanbul ignore next */ []));
|
|
116
|
+
exportJsonTitle = input('Export JSON', /* @ts-ignore */
|
|
117
|
+
...(ngDevMode ? [{ debugName: "exportJsonTitle" }] : /* istanbul ignore next */ []));
|
|
118
|
+
clearSelectionLabel = input('Clear selection', /* @ts-ignore */
|
|
119
|
+
...(ngDevMode ? [{ debugName: "clearSelectionLabel" }] : /* istanbul ignore next */ []));
|
|
120
|
+
selectionSummaryLabel = input('selected', /* @ts-ignore */
|
|
121
|
+
...(ngDevMode ? [{ debugName: "selectionSummaryLabel" }] : /* istanbul ignore next */ []));
|
|
122
|
+
tableAriaLabel = input('Data table', /* @ts-ignore */
|
|
123
|
+
...(ngDevMode ? [{ debugName: "tableAriaLabel" }] : /* istanbul ignore next */ []));
|
|
124
|
+
selectAllAriaLabel = input('Select all filtered rows', /* @ts-ignore */
|
|
125
|
+
...(ngDevMode ? [{ debugName: "selectAllAriaLabel" }] : /* istanbul ignore next */ []));
|
|
126
|
+
selectRowAriaLabel = input('Select row', /* @ts-ignore */
|
|
127
|
+
...(ngDevMode ? [{ debugName: "selectRowAriaLabel" }] : /* istanbul ignore next */ []));
|
|
128
|
+
expandRowAriaLabel = input('Expand row', /* @ts-ignore */
|
|
129
|
+
...(ngDevMode ? [{ debugName: "expandRowAriaLabel" }] : /* istanbul ignore next */ []));
|
|
130
|
+
filterPlaceholder = input('Filter...', /* @ts-ignore */
|
|
131
|
+
...(ngDevMode ? [{ debugName: "filterPlaceholder" }] : /* istanbul ignore next */ []));
|
|
132
|
+
filterAriaPrefix = input('Filter by', /* @ts-ignore */
|
|
133
|
+
...(ngDevMode ? [{ debugName: "filterAriaPrefix" }] : /* istanbul ignore next */ []));
|
|
134
|
+
allFilterOptionLabel = input('All', /* @ts-ignore */
|
|
135
|
+
...(ngDevMode ? [{ debugName: "allFilterOptionLabel" }] : /* istanbul ignore next */ []));
|
|
136
|
+
ofLabel = input('of', /* @ts-ignore */
|
|
137
|
+
...(ngDevMode ? [{ debugName: "ofLabel" }] : /* istanbul ignore next */ []));
|
|
138
|
+
resultLabelSingular = input('result', /* @ts-ignore */
|
|
139
|
+
...(ngDevMode ? [{ debugName: "resultLabelSingular" }] : /* istanbul ignore next */ []));
|
|
140
|
+
resultLabelPlural = input('results', /* @ts-ignore */
|
|
141
|
+
...(ngDevMode ? [{ debugName: "resultLabelPlural" }] : /* istanbul ignore next */ []));
|
|
142
|
+
sortable = input(false, /* @ts-ignore */
|
|
143
|
+
...(ngDevMode ? [{ debugName: "sortable" }] : /* istanbul ignore next */ []));
|
|
144
|
+
selectable = input(false, /* @ts-ignore */
|
|
145
|
+
...(ngDevMode ? [{ debugName: "selectable" }] : /* istanbul ignore next */ []));
|
|
146
|
+
expandable = input(false, /* @ts-ignore */
|
|
147
|
+
...(ngDevMode ? [{ debugName: "expandable" }] : /* istanbul ignore next */ []));
|
|
148
|
+
expandMode = input('multiple', /* @ts-ignore */
|
|
149
|
+
...(ngDevMode ? [{ debugName: "expandMode" }] : /* istanbul ignore next */ []));
|
|
150
|
+
exportable = input(false, /* @ts-ignore */
|
|
151
|
+
...(ngDevMode ? [{ debugName: "exportable" }] : /* istanbul ignore next */ []));
|
|
152
|
+
exportFileName = input('export', /* @ts-ignore */
|
|
153
|
+
...(ngDevMode ? [{ debugName: "exportFileName" }] : /* istanbul ignore next */ []));
|
|
154
|
+
pageSizeOptions = input([], /* @ts-ignore */
|
|
155
|
+
...(ngDevMode ? [{ debugName: "pageSizeOptions" }] : /* istanbul ignore next */ []));
|
|
156
|
+
stickyHeader = input(false, /* @ts-ignore */
|
|
157
|
+
...(ngDevMode ? [{ debugName: "stickyHeader" }] : /* istanbul ignore next */ []));
|
|
158
|
+
virtualScroll = input(false, /* @ts-ignore */
|
|
159
|
+
...(ngDevMode ? [{ debugName: "virtualScroll" }] : /* istanbul ignore next */ []));
|
|
160
|
+
virtualScrollVisibleItems = input(8, /* @ts-ignore */
|
|
161
|
+
...(ngDevMode ? [{ debugName: "virtualScrollVisibleItems" }] : /* istanbul ignore next */ []));
|
|
162
|
+
resizableColumns = input(false, /* @ts-ignore */
|
|
163
|
+
...(ngDevMode ? [{ debugName: "resizableColumns" }] : /* istanbul ignore next */ []));
|
|
164
|
+
rowKey = input('id', /* @ts-ignore */
|
|
165
|
+
...(ngDevMode ? [{ debugName: "rowKey" }] : /* istanbul ignore next */ []));
|
|
166
|
+
bordered = input(true, /* @ts-ignore */
|
|
167
|
+
...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
|
|
168
|
+
roundedBorders = input(true, /* @ts-ignore */
|
|
169
|
+
...(ngDevMode ? [{ debugName: "roundedBorders" }] : /* istanbul ignore next */ []));
|
|
170
|
+
stripedRows = input(false, /* @ts-ignore */
|
|
171
|
+
...(ngDevMode ? [{ debugName: "stripedRows" }] : /* istanbul ignore next */ []));
|
|
120
172
|
// ── Inputs nuevos v1.3.0 ──────────────────────────────────────────────
|
|
121
|
-
density = input('normal',
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
173
|
+
density = input('normal', /* @ts-ignore */
|
|
174
|
+
...(ngDevMode ? [{ debugName: "density" }] : /* istanbul ignore next */ []));
|
|
175
|
+
showRowNumbers = input(false, /* @ts-ignore */
|
|
176
|
+
...(ngDevMode ? [{ debugName: "showRowNumbers" }] : /* istanbul ignore next */ []));
|
|
177
|
+
rowClass = input(undefined, /* @ts-ignore */
|
|
178
|
+
...(ngDevMode ? [{ debugName: "rowClass" }] : /* istanbul ignore next */ []));
|
|
179
|
+
footerRow = input(undefined, /* @ts-ignore */
|
|
180
|
+
...(ngDevMode ? [{ debugName: "footerRow" }] : /* istanbul ignore next */ []));
|
|
181
|
+
emptyStateTemplate = input(undefined, /* @ts-ignore */
|
|
182
|
+
...(ngDevMode ? [{ debugName: "emptyStateTemplate" }] : /* istanbul ignore next */ []));
|
|
183
|
+
serverSide = input(false, /* @ts-ignore */
|
|
184
|
+
...(ngDevMode ? [{ debugName: "serverSide" }] : /* istanbul ignore next */ []));
|
|
185
|
+
totalItems = input(undefined, /* @ts-ignore */
|
|
186
|
+
...(ngDevMode ? [{ debugName: "totalItems" }] : /* istanbul ignore next */ []));
|
|
187
|
+
multiSort = input(false, /* @ts-ignore */
|
|
188
|
+
...(ngDevMode ? [{ debugName: "multiSort" }] : /* istanbul ignore next */ []));
|
|
189
|
+
exportFormats = input(['csv'], /* @ts-ignore */
|
|
190
|
+
...(ngDevMode ? [{ debugName: "exportFormats" }] : /* istanbul ignore next */ []));
|
|
191
|
+
exportColumns = input([], /* @ts-ignore */
|
|
192
|
+
...(ngDevMode ? [{ debugName: "exportColumns" }] : /* istanbul ignore next */ []));
|
|
193
|
+
exportScope = input('auto', /* @ts-ignore */
|
|
194
|
+
...(ngDevMode ? [{ debugName: "exportScope" }] : /* istanbul ignore next */ []));
|
|
195
|
+
selectionActions = input([], /* @ts-ignore */
|
|
196
|
+
...(ngDevMode ? [{ debugName: "selectionActions" }] : /* istanbul ignore next */ []));
|
|
133
197
|
// ── URL params ────────────────────────────────────────────────────────
|
|
134
|
-
pageParam = input('page',
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
198
|
+
pageParam = input('page', /* @ts-ignore */
|
|
199
|
+
...(ngDevMode ? [{ debugName: "pageParam" }] : /* istanbul ignore next */ []));
|
|
200
|
+
searchParam = input('q', /* @ts-ignore */
|
|
201
|
+
...(ngDevMode ? [{ debugName: "searchParam" }] : /* istanbul ignore next */ []));
|
|
202
|
+
sortParam = input('sort', /* @ts-ignore */
|
|
203
|
+
...(ngDevMode ? [{ debugName: "sortParam" }] : /* istanbul ignore next */ []));
|
|
204
|
+
sortDirParam = input('sortDir', /* @ts-ignore */
|
|
205
|
+
...(ngDevMode ? [{ debugName: "sortDirParam" }] : /* istanbul ignore next */ []));
|
|
138
206
|
/** Param used to persist multi-sort state in the URL / Param para persistir multisort en la URL */
|
|
139
|
-
multiSortParam = input('msort',
|
|
207
|
+
multiSortParam = input('msort', /* @ts-ignore */
|
|
208
|
+
...(ngDevMode ? [{ debugName: "multiSortParam" }] : /* istanbul ignore next */ []));
|
|
140
209
|
/**
|
|
141
210
|
* Activa o desactiva la sincronización de estado con los queryParams de la URL.
|
|
142
211
|
* Cuando es false, la paginación, búsqueda y ordenación se gestionan con
|
|
@@ -146,7 +215,8 @@ class NeuTableComponent {
|
|
|
146
215
|
* When false, pagination, search and sort are managed with internal signals
|
|
147
216
|
* and the browser URL is never modified.
|
|
148
217
|
*/
|
|
149
|
-
useUrlState = input(true,
|
|
218
|
+
useUrlState = input(true, /* @ts-ignore */
|
|
219
|
+
...(ngDevMode ? [{ debugName: "useUrlState" }] : /* istanbul ignore next */ []));
|
|
150
220
|
// ── Outputs ───────────────────────────────────────────────────────────
|
|
151
221
|
selectionChange = output();
|
|
152
222
|
rowClick = output();
|
|
@@ -158,12 +228,18 @@ class NeuTableComponent {
|
|
|
158
228
|
columnResize = output();
|
|
159
229
|
// ── Estado interno (usado cuando useUrlState = false) ─────────────────
|
|
160
230
|
// Internal state signals (used when useUrlState = false)
|
|
161
|
-
_internalPage = signal(1,
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
231
|
+
_internalPage = signal(1, /* @ts-ignore */
|
|
232
|
+
...(ngDevMode ? [{ debugName: "_internalPage" }] : /* istanbul ignore next */ []));
|
|
233
|
+
_internalSearch = signal('', /* @ts-ignore */
|
|
234
|
+
...(ngDevMode ? [{ debugName: "_internalSearch" }] : /* istanbul ignore next */ []));
|
|
235
|
+
_internalSortKey = signal('', /* @ts-ignore */
|
|
236
|
+
...(ngDevMode ? [{ debugName: "_internalSortKey" }] : /* istanbul ignore next */ []));
|
|
237
|
+
_internalSortDir = signal('asc', /* @ts-ignore */
|
|
238
|
+
...(ngDevMode ? [{ debugName: "_internalSortDir" }] : /* istanbul ignore next */ []));
|
|
239
|
+
_internalMultiSort = signal('', /* @ts-ignore */
|
|
240
|
+
...(ngDevMode ? [{ debugName: "_internalMultiSort" }] : /* istanbul ignore next */ []));
|
|
241
|
+
_columnWidths = signal({}, /* @ts-ignore */
|
|
242
|
+
...(ngDevMode ? [{ debugName: "_columnWidths" }] : /* istanbul ignore next */ []));
|
|
167
243
|
_resizeCleanup = null;
|
|
168
244
|
// ── URL State ─────────────────────────────────────────────────────────
|
|
169
245
|
_urlParamSignals = new Map();
|
|
@@ -184,27 +260,33 @@ class NeuTableComponent {
|
|
|
184
260
|
const raw = this._readUrlParam(this.pageParam());
|
|
185
261
|
const n = Number(raw);
|
|
186
262
|
return !raw || isNaN(n) || n < 1 ? 1 : n;
|
|
187
|
-
},
|
|
263
|
+
}, /* @ts-ignore */
|
|
264
|
+
...(ngDevMode ? [{ debugName: "currentPage" }] : /* istanbul ignore next */ []));
|
|
188
265
|
searchQuery = computed(() => {
|
|
189
266
|
if (!this.useUrlState())
|
|
190
267
|
return this._internalSearch();
|
|
191
268
|
return this._readUrlParam(this.searchParam()) ?? '';
|
|
192
|
-
},
|
|
269
|
+
}, /* @ts-ignore */
|
|
270
|
+
...(ngDevMode ? [{ debugName: "searchQuery" }] : /* istanbul ignore next */ []));
|
|
193
271
|
sortKey = computed(() => {
|
|
194
272
|
if (!this.useUrlState())
|
|
195
273
|
return this._internalSortKey();
|
|
196
274
|
return this._readUrlParam(this.sortParam()) ?? '';
|
|
197
|
-
},
|
|
275
|
+
}, /* @ts-ignore */
|
|
276
|
+
...(ngDevMode ? [{ debugName: "sortKey" }] : /* istanbul ignore next */ []));
|
|
198
277
|
sortDir = computed(() => {
|
|
199
278
|
if (!this.useUrlState())
|
|
200
279
|
return this._internalSortDir();
|
|
201
280
|
const d = this._readUrlParam(this.sortDirParam());
|
|
202
281
|
return d === 'desc' ? 'desc' : 'asc';
|
|
203
|
-
},
|
|
282
|
+
}, /* @ts-ignore */
|
|
283
|
+
...(ngDevMode ? [{ debugName: "sortDir" }] : /* istanbul ignore next */ []));
|
|
204
284
|
// ---- Pipeline de datos / Data pipeline ----
|
|
205
|
-
rows = computed(() => asRows(this.data()),
|
|
285
|
+
rows = computed(() => asRows(this.data()), /* @ts-ignore */
|
|
286
|
+
...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
206
287
|
// ── Estado interno ────────────────────────────────────────────────────
|
|
207
|
-
_exactMatch = signal(false,
|
|
288
|
+
_exactMatch = signal(false, /* @ts-ignore */
|
|
289
|
+
...(ngDevMode ? [{ debugName: "_exactMatch" }] : /* istanbul ignore next */ []));
|
|
208
290
|
exactMatch = this._exactMatch.asReadonly();
|
|
209
291
|
/**
|
|
210
292
|
* Multi-sort entries derived from URL param or internal state.
|
|
@@ -224,12 +306,15 @@ class NeuTableComponent {
|
|
|
224
306
|
return [];
|
|
225
307
|
return [{ key, dir: (dir === 'desc' ? 'desc' : 'asc') }];
|
|
226
308
|
});
|
|
227
|
-
},
|
|
228
|
-
|
|
309
|
+
}, /* @ts-ignore */
|
|
310
|
+
...(ngDevMode ? [{ debugName: "_sortEntries" }] : /* istanbul ignore next */ []));
|
|
311
|
+
_columnFilters = signal({}, /* @ts-ignore */
|
|
312
|
+
...(ngDevMode ? [{ debugName: "_columnFilters" }] : /* istanbul ignore next */ []));
|
|
229
313
|
_pageSizeControl = new FormControl('', { nonNullable: true });
|
|
230
314
|
_columnFilterControls = new Map();
|
|
231
315
|
/** True when at least one column has filterable:true / True si alguna columna tiene filterable:true */
|
|
232
|
-
_hasFilterableCol = computed(() => this.columns().some((c) => c.filterable),
|
|
316
|
+
_hasFilterableCol = computed(() => this.columns().some((c) => c.filterable), /* @ts-ignore */
|
|
317
|
+
...(ngDevMode ? [{ debugName: "_hasFilterableCol" }] : /* istanbul ignore next */ []));
|
|
233
318
|
/** Convierte filterOptions de string[] a NeuSelectOption[] con opción "Todos" al inicio.
|
|
234
319
|
* Converts filterOptions from string[] to NeuSelectOption[] with a leading "All" option. */
|
|
235
320
|
_filterOpts(col) {
|
|
@@ -238,8 +323,10 @@ class NeuTableComponent {
|
|
|
238
323
|
...(col.filterOptions ?? []).map((o) => ({ label: o, value: o })),
|
|
239
324
|
];
|
|
240
325
|
}
|
|
241
|
-
_pageSizeOptions = computed(() => this.pageSizeOptions().map((size) => ({ label: String(size), value: String(size) })),
|
|
242
|
-
|
|
326
|
+
_pageSizeOptions = computed(() => this.pageSizeOptions().map((size) => ({ label: String(size), value: String(size) })), /* @ts-ignore */
|
|
327
|
+
...(ngDevMode ? [{ debugName: "_pageSizeOptions" }] : /* istanbul ignore next */ []));
|
|
328
|
+
_virtualScrollTop = signal(0, /* @ts-ignore */
|
|
329
|
+
...(ngDevMode ? [{ debugName: "_virtualScrollTop" }] : /* istanbul ignore next */ []));
|
|
243
330
|
constructor() {
|
|
244
331
|
this._destroyRef.onDestroy(() => this._stopColumnResize());
|
|
245
332
|
this._pageSizeControl.valueChanges
|
|
@@ -278,9 +365,11 @@ class NeuTableComponent {
|
|
|
278
365
|
this.resetVirtualScrollPosition();
|
|
279
366
|
});
|
|
280
367
|
}
|
|
281
|
-
_confirmPending = signal(null,
|
|
368
|
+
_confirmPending = signal(null, /* @ts-ignore */
|
|
369
|
+
...(ngDevMode ? [{ debugName: "_confirmPending" }] : /* istanbul ignore next */ []));
|
|
282
370
|
// ── Pipeline de datos ─────────────────────────────────────────────────
|
|
283
|
-
_rows = computed(() => asRows(this.data()),
|
|
371
|
+
_rows = computed(() => asRows(this.data()), /* @ts-ignore */
|
|
372
|
+
...(ngDevMode ? [{ debugName: "_rows" }] : /* istanbul ignore next */ []));
|
|
284
373
|
filteredData = computed(() => {
|
|
285
374
|
if (this.serverSide())
|
|
286
375
|
return this._rows();
|
|
@@ -312,7 +401,8 @@ class NeuTableComponent {
|
|
|
312
401
|
}
|
|
313
402
|
return true;
|
|
314
403
|
});
|
|
315
|
-
},
|
|
404
|
+
}, /* @ts-ignore */
|
|
405
|
+
...(ngDevMode ? [{ debugName: "filteredData" }] : /* istanbul ignore next */ []));
|
|
316
406
|
sortedData = computed(() => {
|
|
317
407
|
if (this.serverSide())
|
|
318
408
|
return this.filteredData();
|
|
@@ -340,13 +430,16 @@ class NeuTableComponent {
|
|
|
340
430
|
});
|
|
341
431
|
return dir === 'asc' ? cmp : -cmp;
|
|
342
432
|
});
|
|
343
|
-
},
|
|
344
|
-
|
|
433
|
+
}, /* @ts-ignore */
|
|
434
|
+
...(ngDevMode ? [{ debugName: "sortedData" }] : /* istanbul ignore next */ []));
|
|
435
|
+
_dynamicPageSize = signal(null, /* @ts-ignore */
|
|
436
|
+
...(ngDevMode ? [{ debugName: "_dynamicPageSize" }] : /* istanbul ignore next */ []));
|
|
345
437
|
effectivePageSize = computed(() => {
|
|
346
438
|
if (!this.pagination())
|
|
347
439
|
return this.filteredData().length || 1;
|
|
348
440
|
return this._dynamicPageSize() ?? this.pageSize();
|
|
349
|
-
},
|
|
441
|
+
}, /* @ts-ignore */
|
|
442
|
+
...(ngDevMode ? [{ debugName: "effectivePageSize" }] : /* istanbul ignore next */ []));
|
|
350
443
|
totalPages = computed(() => {
|
|
351
444
|
if (!this.pagination())
|
|
352
445
|
return 1;
|
|
@@ -354,7 +447,8 @@ class NeuTableComponent {
|
|
|
354
447
|
? this.totalItems()
|
|
355
448
|
: this.filteredData().length;
|
|
356
449
|
return Math.max(1, Math.ceil(total / this.effectivePageSize()));
|
|
357
|
-
},
|
|
450
|
+
}, /* @ts-ignore */
|
|
451
|
+
...(ngDevMode ? [{ debugName: "totalPages" }] : /* istanbul ignore next */ []));
|
|
358
452
|
paginatedData = computed(() => {
|
|
359
453
|
if (!this.pagination())
|
|
360
454
|
return this.sortedData();
|
|
@@ -363,7 +457,8 @@ class NeuTableComponent {
|
|
|
363
457
|
const page = Math.min(this.currentPage(), this.totalPages());
|
|
364
458
|
const size = this.effectivePageSize();
|
|
365
459
|
return this.sortedData().slice((page - 1) * size, page * size);
|
|
366
|
-
},
|
|
460
|
+
}, /* @ts-ignore */
|
|
461
|
+
...(ngDevMode ? [{ debugName: "paginatedData" }] : /* istanbul ignore next */ []));
|
|
367
462
|
_virtualRowHeight = computed(() => {
|
|
368
463
|
switch (this.density()) {
|
|
369
464
|
case 'compact':
|
|
@@ -373,10 +468,14 @@ class NeuTableComponent {
|
|
|
373
468
|
default:
|
|
374
469
|
return 48;
|
|
375
470
|
}
|
|
376
|
-
},
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
471
|
+
}, /* @ts-ignore */
|
|
472
|
+
...(ngDevMode ? [{ debugName: "_virtualRowHeight" }] : /* istanbul ignore next */ []));
|
|
473
|
+
_virtualHeaderHeight = computed(() => 44 + (this._hasFilterableCol() ? 52 : 0), /* @ts-ignore */
|
|
474
|
+
...(ngDevMode ? [{ debugName: "_virtualHeaderHeight" }] : /* istanbul ignore next */ []));
|
|
475
|
+
_virtualScrollActive = computed(() => this.virtualScroll() && this.paginatedData().length > this.virtualScrollVisibleItems(), /* @ts-ignore */
|
|
476
|
+
...(ngDevMode ? [{ debugName: "_virtualScrollActive" }] : /* istanbul ignore next */ []));
|
|
477
|
+
virtualContainerMaxHeight = computed(() => `${this._virtualHeaderHeight() + this.virtualScrollVisibleItems() * this._virtualRowHeight()}px`, /* @ts-ignore */
|
|
478
|
+
...(ngDevMode ? [{ debugName: "virtualContainerMaxHeight" }] : /* istanbul ignore next */ []));
|
|
380
479
|
_virtualStartIndex = computed(() => {
|
|
381
480
|
if (!this._virtualScrollActive()) {
|
|
382
481
|
return 0;
|
|
@@ -384,32 +483,37 @@ class NeuTableComponent {
|
|
|
384
483
|
const bodyScrollTop = Math.max(0, this._virtualScrollTop() - this._virtualHeaderHeight());
|
|
385
484
|
const startIndex = Math.floor(bodyScrollTop / this._virtualRowHeight());
|
|
386
485
|
return Math.max(0, startIndex - this._virtualOverscan);
|
|
387
|
-
},
|
|
486
|
+
}, /* @ts-ignore */
|
|
487
|
+
...(ngDevMode ? [{ debugName: "_virtualStartIndex" }] : /* istanbul ignore next */ []));
|
|
388
488
|
_virtualEndIndex = computed(() => {
|
|
389
489
|
if (!this._virtualScrollActive()) {
|
|
390
490
|
return this.paginatedData().length;
|
|
391
491
|
}
|
|
392
492
|
return Math.min(this.paginatedData().length, this._virtualStartIndex() + this.virtualScrollVisibleItems() + this._virtualOverscan * 2);
|
|
393
|
-
},
|
|
493
|
+
}, /* @ts-ignore */
|
|
494
|
+
...(ngDevMode ? [{ debugName: "_virtualEndIndex" }] : /* istanbul ignore next */ []));
|
|
394
495
|
visiblePageRows = computed(() => {
|
|
395
496
|
const rows = this.paginatedData();
|
|
396
497
|
if (!this._virtualScrollActive()) {
|
|
397
498
|
return rows;
|
|
398
499
|
}
|
|
399
500
|
return rows.slice(this._virtualStartIndex(), this._virtualEndIndex());
|
|
400
|
-
},
|
|
501
|
+
}, /* @ts-ignore */
|
|
502
|
+
...(ngDevMode ? [{ debugName: "visiblePageRows" }] : /* istanbul ignore next */ []));
|
|
401
503
|
_virtualTopSpacerHeight = computed(() => {
|
|
402
504
|
if (!this._virtualScrollActive()) {
|
|
403
505
|
return 0;
|
|
404
506
|
}
|
|
405
507
|
return this._virtualStartIndex() * this._virtualRowHeight();
|
|
406
|
-
},
|
|
508
|
+
}, /* @ts-ignore */
|
|
509
|
+
...(ngDevMode ? [{ debugName: "_virtualTopSpacerHeight" }] : /* istanbul ignore next */ []));
|
|
407
510
|
_virtualBottomSpacerHeight = computed(() => {
|
|
408
511
|
if (!this._virtualScrollActive()) {
|
|
409
512
|
return 0;
|
|
410
513
|
}
|
|
411
514
|
return Math.max(0, (this.paginatedData().length - this._virtualEndIndex()) * this._virtualRowHeight());
|
|
412
|
-
},
|
|
515
|
+
}, /* @ts-ignore */
|
|
516
|
+
...(ngDevMode ? [{ debugName: "_virtualBottomSpacerHeight" }] : /* istanbul ignore next */ []));
|
|
413
517
|
pageNumbers = computed(() => {
|
|
414
518
|
const total = this.totalPages();
|
|
415
519
|
const current = this.currentPage();
|
|
@@ -417,7 +521,8 @@ class NeuTableComponent {
|
|
|
417
521
|
const end = Math.min(total, start + 4);
|
|
418
522
|
start = Math.max(1, end - 4);
|
|
419
523
|
return Array.from({ length: end - start + 1 }, (_, i) => start + i);
|
|
420
|
-
},
|
|
524
|
+
}, /* @ts-ignore */
|
|
525
|
+
...(ngDevMode ? [{ debugName: "pageNumbers" }] : /* istanbul ignore next */ []));
|
|
421
526
|
paginationInfo = computed(() => {
|
|
422
527
|
const total = this.serverSide() && this.totalItems() != null
|
|
423
528
|
? this.totalItems()
|
|
@@ -427,7 +532,8 @@ class NeuTableComponent {
|
|
|
427
532
|
const from = total === 0 ? 0 : Math.min((page - 1) * size + 1, total);
|
|
428
533
|
const to = total === 0 ? 0 : Math.min(page * size, total);
|
|
429
534
|
return `${from}-${to} ${this.ofLabel()} ${total} ${total === 1 ? this.resultLabelSingular() : this.resultLabelPlural()}`;
|
|
430
|
-
},
|
|
535
|
+
}, /* @ts-ignore */
|
|
536
|
+
...(ngDevMode ? [{ debugName: "paginationInfo" }] : /* istanbul ignore next */ []));
|
|
431
537
|
totalColspan = computed(() => {
|
|
432
538
|
let cols = this.columns().length;
|
|
433
539
|
if (this.selectable())
|
|
@@ -437,7 +543,8 @@ class NeuTableComponent {
|
|
|
437
543
|
if (this.showRowNumbers())
|
|
438
544
|
cols++;
|
|
439
545
|
return cols;
|
|
440
|
-
},
|
|
546
|
+
}, /* @ts-ignore */
|
|
547
|
+
...(ngDevMode ? [{ debugName: "totalColspan" }] : /* istanbul ignore next */ []));
|
|
441
548
|
_frozenLeftOffsets = computed(() => {
|
|
442
549
|
this._columnWidths();
|
|
443
550
|
const offsets = new Map();
|
|
@@ -449,15 +556,18 @@ class NeuTableComponent {
|
|
|
449
556
|
}
|
|
450
557
|
}
|
|
451
558
|
return offsets;
|
|
452
|
-
},
|
|
559
|
+
}, /* @ts-ignore */
|
|
560
|
+
...(ngDevMode ? [{ debugName: "_frozenLeftOffsets" }] : /* istanbul ignore next */ []));
|
|
453
561
|
_lastFrozenLeftKey = computed(() => {
|
|
454
562
|
const frozenLeft = this.columns().filter((col) => col.frozen === 'left');
|
|
455
563
|
return frozenLeft.at(-1)?.key ?? null;
|
|
456
|
-
},
|
|
564
|
+
}, /* @ts-ignore */
|
|
565
|
+
...(ngDevMode ? [{ debugName: "_lastFrozenLeftKey" }] : /* istanbul ignore next */ []));
|
|
457
566
|
_firstFrozenRightKey = computed(() => {
|
|
458
567
|
const frozenRight = this.columns().filter((col) => col.frozen === 'right');
|
|
459
568
|
return frozenRight[0]?.key ?? null;
|
|
460
|
-
},
|
|
569
|
+
}, /* @ts-ignore */
|
|
570
|
+
...(ngDevMode ? [{ debugName: "_firstFrozenRightKey" }] : /* istanbul ignore next */ []));
|
|
461
571
|
isLastFrozenLeftColumn(key) {
|
|
462
572
|
return this._lastFrozenLeftKey() === key;
|
|
463
573
|
}
|
|
@@ -520,7 +630,8 @@ class NeuTableComponent {
|
|
|
520
630
|
});
|
|
521
631
|
}
|
|
522
632
|
// ── Expansión de filas ────────────────────────────────────────────────
|
|
523
|
-
_expandedKeys = signal(new Set(),
|
|
633
|
+
_expandedKeys = signal(new Set(), /* @ts-ignore */
|
|
634
|
+
...(ngDevMode ? [{ debugName: "_expandedKeys" }] : /* istanbul ignore next */ []));
|
|
524
635
|
isRowExpanded(row) {
|
|
525
636
|
return this._expandedKeys().has(this.getRowKey(row));
|
|
526
637
|
}
|
|
@@ -546,11 +657,16 @@ class NeuTableComponent {
|
|
|
546
657
|
this._expandedKeys.set(set);
|
|
547
658
|
}
|
|
548
659
|
// ── Selección ─────────────────────────────────────────────────────────
|
|
549
|
-
_selectedKeys = signal(new Set(),
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
660
|
+
_selectedKeys = signal(new Set(), /* @ts-ignore */
|
|
661
|
+
...(ngDevMode ? [{ debugName: "_selectedKeys" }] : /* istanbul ignore next */ []));
|
|
662
|
+
_selectionConfirmPending = signal(null, /* @ts-ignore */
|
|
663
|
+
...(ngDevMode ? [{ debugName: "_selectionConfirmPending" }] : /* istanbul ignore next */ []));
|
|
664
|
+
selectedCount = computed(() => this._selectedKeys().size, /* @ts-ignore */
|
|
665
|
+
...(ngDevMode ? [{ debugName: "selectedCount" }] : /* istanbul ignore next */ []));
|
|
666
|
+
selectedRows = computed(() => this._rows().filter((row) => this._selectedKeys().has(this.getRowKey(row))), /* @ts-ignore */
|
|
667
|
+
...(ngDevMode ? [{ debugName: "selectedRows" }] : /* istanbul ignore next */ []));
|
|
668
|
+
selectedRowsInfo = computed(() => `${this.selectedCount()} ${this.selectionSummaryLabel()}`, /* @ts-ignore */
|
|
669
|
+
...(ngDevMode ? [{ debugName: "selectedRowsInfo" }] : /* istanbul ignore next */ []));
|
|
554
670
|
/**
|
|
555
671
|
* TRUE cuando TODOS los registros que pasan el filtro activo están seleccionados.
|
|
556
672
|
* A diferencia de una selección global, actúa solo sobre el subconjunto filtrado.
|
|
@@ -558,9 +674,11 @@ class NeuTableComponent {
|
|
|
558
674
|
isAllFilteredSelected = computed(() => {
|
|
559
675
|
const filtered = this.filteredData();
|
|
560
676
|
return (filtered.length > 0 && filtered.every((r) => this._selectedKeys().has(this.getRowKey(r))));
|
|
561
|
-
},
|
|
677
|
+
}, /* @ts-ignore */
|
|
678
|
+
...(ngDevMode ? [{ debugName: "isAllFilteredSelected" }] : /* istanbul ignore next */ []));
|
|
562
679
|
isSomeFilteredSelected = computed(() => this.filteredData().some((r) => this._selectedKeys().has(this.getRowKey(r))) &&
|
|
563
|
-
!this.isAllFilteredSelected(),
|
|
680
|
+
!this.isAllFilteredSelected(), /* @ts-ignore */
|
|
681
|
+
...(ngDevMode ? [{ debugName: "isSomeFilteredSelected" }] : /* istanbul ignore next */ []));
|
|
564
682
|
isRowSelected(row) {
|
|
565
683
|
return this._selectedKeys().has(this.getRowKey(row));
|
|
566
684
|
}
|
|
@@ -913,8 +1031,8 @@ class NeuTableComponent {
|
|
|
913
1031
|
};
|
|
914
1032
|
this.serverStateChange.emit({ ...current, ...patch });
|
|
915
1033
|
}
|
|
916
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
917
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: NeuTableComponent, isStandalone: true, selector: "neu-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, toolbarExtraRef: { classPropertyName: "toolbarExtraRef", publicName: "toolbarExtraRef", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, skeletonRows: { classPropertyName: "skeletonRows", publicName: "skeletonRows", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, exactMatchable: { classPropertyName: "exactMatchable", publicName: "exactMatchable", isSignal: true, isRequired: false, transformFunction: null }, exactMatchLabel: { classPropertyName: "exactMatchLabel", publicName: "exactMatchLabel", isSignal: true, isRequired: false, transformFunction: null }, searchAriaLabel: { classPropertyName: "searchAriaLabel", publicName: "searchAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, clearSearchAriaLabel: { classPropertyName: "clearSearchAriaLabel", publicName: "clearSearchAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, clearFilterLabel: { classPropertyName: "clearFilterLabel", publicName: "clearFilterLabel", isSignal: true, isRequired: false, transformFunction: null }, previousPageAriaLabel: { classPropertyName: "previousPageAriaLabel", publicName: "previousPageAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, nextPageAriaLabel: { classPropertyName: "nextPageAriaLabel", publicName: "nextPageAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, pageSizeLabel: { classPropertyName: "pageSizeLabel", publicName: "pageSizeLabel", isSignal: true, isRequired: false, transformFunction: null }, pageSizeAriaLabel: { classPropertyName: "pageSizeAriaLabel", publicName: "pageSizeAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, paginationAriaLabel: { classPropertyName: "paginationAriaLabel", publicName: "paginationAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, exportCsvTitle: { classPropertyName: "exportCsvTitle", publicName: "exportCsvTitle", isSignal: true, isRequired: false, transformFunction: null }, exportJsonTitle: { classPropertyName: "exportJsonTitle", publicName: "exportJsonTitle", isSignal: true, isRequired: false, transformFunction: null }, clearSelectionLabel: { classPropertyName: "clearSelectionLabel", publicName: "clearSelectionLabel", isSignal: true, isRequired: false, transformFunction: null }, selectionSummaryLabel: { classPropertyName: "selectionSummaryLabel", publicName: "selectionSummaryLabel", isSignal: true, isRequired: false, transformFunction: null }, tableAriaLabel: { classPropertyName: "tableAriaLabel", publicName: "tableAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, selectAllAriaLabel: { classPropertyName: "selectAllAriaLabel", publicName: "selectAllAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, selectRowAriaLabel: { classPropertyName: "selectRowAriaLabel", publicName: "selectRowAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, expandRowAriaLabel: { classPropertyName: "expandRowAriaLabel", publicName: "expandRowAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, filterAriaPrefix: { classPropertyName: "filterAriaPrefix", publicName: "filterAriaPrefix", isSignal: true, isRequired: false, transformFunction: null }, allFilterOptionLabel: { classPropertyName: "allFilterOptionLabel", publicName: "allFilterOptionLabel", isSignal: true, isRequired: false, transformFunction: null }, ofLabel: { classPropertyName: "ofLabel", publicName: "ofLabel", isSignal: true, isRequired: false, transformFunction: null }, resultLabelSingular: { classPropertyName: "resultLabelSingular", publicName: "resultLabelSingular", isSignal: true, isRequired: false, transformFunction: null }, resultLabelPlural: { classPropertyName: "resultLabelPlural", publicName: "resultLabelPlural", isSignal: true, isRequired: false, transformFunction: null }, sortable: { classPropertyName: "sortable", publicName: "sortable", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, expandable: { classPropertyName: "expandable", publicName: "expandable", isSignal: true, isRequired: false, transformFunction: null }, expandMode: { classPropertyName: "expandMode", publicName: "expandMode", isSignal: true, isRequired: false, transformFunction: null }, exportable: { classPropertyName: "exportable", publicName: "exportable", isSignal: true, isRequired: false, transformFunction: null }, exportFileName: { classPropertyName: "exportFileName", publicName: "exportFileName", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollVisibleItems: { classPropertyName: "virtualScrollVisibleItems", publicName: "virtualScrollVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, resizableColumns: { classPropertyName: "resizableColumns", publicName: "resizableColumns", isSignal: true, isRequired: false, transformFunction: null }, rowKey: { classPropertyName: "rowKey", publicName: "rowKey", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, roundedBorders: { classPropertyName: "roundedBorders", publicName: "roundedBorders", isSignal: true, isRequired: false, transformFunction: null }, stripedRows: { classPropertyName: "stripedRows", publicName: "stripedRows", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null }, showRowNumbers: { classPropertyName: "showRowNumbers", publicName: "showRowNumbers", isSignal: true, isRequired: false, transformFunction: null }, rowClass: { classPropertyName: "rowClass", publicName: "rowClass", isSignal: true, isRequired: false, transformFunction: null }, footerRow: { classPropertyName: "footerRow", publicName: "footerRow", isSignal: true, isRequired: false, transformFunction: null }, emptyStateTemplate: { classPropertyName: "emptyStateTemplate", publicName: "emptyStateTemplate", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, multiSort: { classPropertyName: "multiSort", publicName: "multiSort", isSignal: true, isRequired: false, transformFunction: null }, exportFormats: { classPropertyName: "exportFormats", publicName: "exportFormats", isSignal: true, isRequired: false, transformFunction: null }, exportColumns: { classPropertyName: "exportColumns", publicName: "exportColumns", isSignal: true, isRequired: false, transformFunction: null }, exportScope: { classPropertyName: "exportScope", publicName: "exportScope", isSignal: true, isRequired: false, transformFunction: null }, selectionActions: { classPropertyName: "selectionActions", publicName: "selectionActions", isSignal: true, isRequired: false, transformFunction: null }, pageParam: { classPropertyName: "pageParam", publicName: "pageParam", isSignal: true, isRequired: false, transformFunction: null }, searchParam: { classPropertyName: "searchParam", publicName: "searchParam", isSignal: true, isRequired: false, transformFunction: null }, sortParam: { classPropertyName: "sortParam", publicName: "sortParam", isSignal: true, isRequired: false, transformFunction: null }, sortDirParam: { classPropertyName: "sortDirParam", publicName: "sortDirParam", isSignal: true, isRequired: false, transformFunction: null }, multiSortParam: { classPropertyName: "multiSortParam", publicName: "multiSortParam", isSignal: true, isRequired: false, transformFunction: null }, useUrlState: { classPropertyName: "useUrlState", publicName: "useUrlState", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", rowClick: "rowClick", rowDblClick: "rowDblClick", actionClick: "actionClick", selectionActionClick: "selectionActionClick", serverStateChange: "serverStateChange", searchChange: "searchChange", columnResize: "columnResize" }, host: { properties: { "class.neu-table__host": "true", "class.neu-table__host--compact": "density() === \"compact\"", "class.neu-table__host--relaxed": "density() === \"relaxed\"" } }, queries: [{ propertyName: "expandTemplate", first: true, predicate: NeuTableExpandDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
1034
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1035
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: NeuTableComponent, isStandalone: true, selector: "neu-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, toolbarExtraRef: { classPropertyName: "toolbarExtraRef", publicName: "toolbarExtraRef", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, skeletonRows: { classPropertyName: "skeletonRows", publicName: "skeletonRows", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, exactMatchable: { classPropertyName: "exactMatchable", publicName: "exactMatchable", isSignal: true, isRequired: false, transformFunction: null }, exactMatchLabel: { classPropertyName: "exactMatchLabel", publicName: "exactMatchLabel", isSignal: true, isRequired: false, transformFunction: null }, searchAriaLabel: { classPropertyName: "searchAriaLabel", publicName: "searchAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, clearSearchAriaLabel: { classPropertyName: "clearSearchAriaLabel", publicName: "clearSearchAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, clearFilterLabel: { classPropertyName: "clearFilterLabel", publicName: "clearFilterLabel", isSignal: true, isRequired: false, transformFunction: null }, previousPageAriaLabel: { classPropertyName: "previousPageAriaLabel", publicName: "previousPageAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, nextPageAriaLabel: { classPropertyName: "nextPageAriaLabel", publicName: "nextPageAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, pageSizeLabel: { classPropertyName: "pageSizeLabel", publicName: "pageSizeLabel", isSignal: true, isRequired: false, transformFunction: null }, pageSizeAriaLabel: { classPropertyName: "pageSizeAriaLabel", publicName: "pageSizeAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, paginationAriaLabel: { classPropertyName: "paginationAriaLabel", publicName: "paginationAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, exportCsvTitle: { classPropertyName: "exportCsvTitle", publicName: "exportCsvTitle", isSignal: true, isRequired: false, transformFunction: null }, exportJsonTitle: { classPropertyName: "exportJsonTitle", publicName: "exportJsonTitle", isSignal: true, isRequired: false, transformFunction: null }, clearSelectionLabel: { classPropertyName: "clearSelectionLabel", publicName: "clearSelectionLabel", isSignal: true, isRequired: false, transformFunction: null }, selectionSummaryLabel: { classPropertyName: "selectionSummaryLabel", publicName: "selectionSummaryLabel", isSignal: true, isRequired: false, transformFunction: null }, tableAriaLabel: { classPropertyName: "tableAriaLabel", publicName: "tableAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, selectAllAriaLabel: { classPropertyName: "selectAllAriaLabel", publicName: "selectAllAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, selectRowAriaLabel: { classPropertyName: "selectRowAriaLabel", publicName: "selectRowAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, expandRowAriaLabel: { classPropertyName: "expandRowAriaLabel", publicName: "expandRowAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, filterAriaPrefix: { classPropertyName: "filterAriaPrefix", publicName: "filterAriaPrefix", isSignal: true, isRequired: false, transformFunction: null }, allFilterOptionLabel: { classPropertyName: "allFilterOptionLabel", publicName: "allFilterOptionLabel", isSignal: true, isRequired: false, transformFunction: null }, ofLabel: { classPropertyName: "ofLabel", publicName: "ofLabel", isSignal: true, isRequired: false, transformFunction: null }, resultLabelSingular: { classPropertyName: "resultLabelSingular", publicName: "resultLabelSingular", isSignal: true, isRequired: false, transformFunction: null }, resultLabelPlural: { classPropertyName: "resultLabelPlural", publicName: "resultLabelPlural", isSignal: true, isRequired: false, transformFunction: null }, sortable: { classPropertyName: "sortable", publicName: "sortable", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, expandable: { classPropertyName: "expandable", publicName: "expandable", isSignal: true, isRequired: false, transformFunction: null }, expandMode: { classPropertyName: "expandMode", publicName: "expandMode", isSignal: true, isRequired: false, transformFunction: null }, exportable: { classPropertyName: "exportable", publicName: "exportable", isSignal: true, isRequired: false, transformFunction: null }, exportFileName: { classPropertyName: "exportFileName", publicName: "exportFileName", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollVisibleItems: { classPropertyName: "virtualScrollVisibleItems", publicName: "virtualScrollVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, resizableColumns: { classPropertyName: "resizableColumns", publicName: "resizableColumns", isSignal: true, isRequired: false, transformFunction: null }, rowKey: { classPropertyName: "rowKey", publicName: "rowKey", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, roundedBorders: { classPropertyName: "roundedBorders", publicName: "roundedBorders", isSignal: true, isRequired: false, transformFunction: null }, stripedRows: { classPropertyName: "stripedRows", publicName: "stripedRows", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null }, showRowNumbers: { classPropertyName: "showRowNumbers", publicName: "showRowNumbers", isSignal: true, isRequired: false, transformFunction: null }, rowClass: { classPropertyName: "rowClass", publicName: "rowClass", isSignal: true, isRequired: false, transformFunction: null }, footerRow: { classPropertyName: "footerRow", publicName: "footerRow", isSignal: true, isRequired: false, transformFunction: null }, emptyStateTemplate: { classPropertyName: "emptyStateTemplate", publicName: "emptyStateTemplate", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, multiSort: { classPropertyName: "multiSort", publicName: "multiSort", isSignal: true, isRequired: false, transformFunction: null }, exportFormats: { classPropertyName: "exportFormats", publicName: "exportFormats", isSignal: true, isRequired: false, transformFunction: null }, exportColumns: { classPropertyName: "exportColumns", publicName: "exportColumns", isSignal: true, isRequired: false, transformFunction: null }, exportScope: { classPropertyName: "exportScope", publicName: "exportScope", isSignal: true, isRequired: false, transformFunction: null }, selectionActions: { classPropertyName: "selectionActions", publicName: "selectionActions", isSignal: true, isRequired: false, transformFunction: null }, pageParam: { classPropertyName: "pageParam", publicName: "pageParam", isSignal: true, isRequired: false, transformFunction: null }, searchParam: { classPropertyName: "searchParam", publicName: "searchParam", isSignal: true, isRequired: false, transformFunction: null }, sortParam: { classPropertyName: "sortParam", publicName: "sortParam", isSignal: true, isRequired: false, transformFunction: null }, sortDirParam: { classPropertyName: "sortDirParam", publicName: "sortDirParam", isSignal: true, isRequired: false, transformFunction: null }, multiSortParam: { classPropertyName: "multiSortParam", publicName: "multiSortParam", isSignal: true, isRequired: false, transformFunction: null }, useUrlState: { classPropertyName: "useUrlState", publicName: "useUrlState", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", rowClick: "rowClick", rowDblClick: "rowDblClick", actionClick: "actionClick", selectionActionClick: "selectionActionClick", serverStateChange: "serverStateChange", searchChange: "searchChange", columnResize: "columnResize" }, host: { properties: { "class.neu-table__host": "true", "class.neu-table__host--compact": "density() === \"compact\"", "class.neu-table__host--relaxed": "density() === \"relaxed\"" } }, queries: [{ propertyName: "expandTemplate", first: true, predicate: NeuTableExpandDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
918
1036
|
<div
|
|
919
1037
|
class="neu-table-container"
|
|
920
1038
|
[class.neu-table--sticky-header]="stickyHeader()"
|
|
@@ -1588,7 +1706,7 @@ class NeuTableComponent {
|
|
|
1588
1706
|
</div>
|
|
1589
1707
|
`, isInline: true, styles: [".neu-table-container{background:var(--neu-surface);overflow:hidden;box-shadow:var(--neu-shadow-sm)}.neu-table-container--bordered{border:1px solid var(--neu-border)}.neu-table-container--rounded{border-radius:var(--neu-radius-lg)}.neu-table-container--striped .neu-table__row:not(.neu-table__row--selected):nth-child(2n){background:color-mix(in srgb,var(--neu-surface-2) 70%,transparent)}.neu-table__toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--neu-space-3);padding:var(--neu-space-4) var(--neu-space-5);border-bottom:1px solid var(--neu-border);background:var(--neu-surface)}.neu-table__toolbar-extra{display:flex;align-items:center;gap:var(--neu-space-2);flex-wrap:wrap}.neu-table__title{font-size:var(--neu-text-base);font-weight:600;color:var(--neu-text);margin:0;letter-spacing:-.01em}.neu-table__search-group{display:flex;align-items:center;gap:var(--neu-space-3);flex:1;max-width:420px;min-width:0}.neu-table__search-wrapper{position:relative;display:flex;align-items:center;flex:1;min-width:0}.neu-table__search-icon{position:absolute;left:var(--neu-space-3);width:15px;height:15px;color:var(--neu-text-muted);pointer-events:none;flex-shrink:0}.neu-table__search{width:100%;height:36px;padding:0 var(--neu-space-3) 0 36px;border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);background:var(--neu-surface-2);font-family:var(--neu-font-sans);font-size:var(--neu-text-sm);color:var(--neu-text);outline:none;transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-table__search::placeholder{color:var(--neu-text-muted)}.neu-table__search:focus{border-color:var(--neu-primary);box-shadow:var(--neu-focus-ring);background:var(--neu-surface)}.neu-table__search::-webkit-search-cancel-button{display:none}.neu-table__search-clear{position:absolute;right:var(--neu-space-2);display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;color:var(--neu-text-muted);cursor:pointer;border-radius:var(--neu-radius-sm);transition:color var(--neu-transition),background-color var(--neu-transition)}.neu-table__search-clear svg{width:13px;height:13px}.neu-table__search-clear:hover{color:var(--neu-error);background:var(--neu-error-bg)}.neu-table__exact-label{display:inline-flex;align-items:center;gap:6px;font-size:var(--neu-text-sm);color:var(--neu-text-muted);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none}.neu-table__exact-label:hover{color:var(--neu-text)}.neu-table__exact-checkbox{width:14px;height:14px;accent-color:var(--neu-primary);cursor:pointer}.neu-table__scroll-container{position:relative;isolation:isolate;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--neu-surface-3) transparent}.neu-table__scroll-container::-webkit-scrollbar{height:4px}.neu-table__scroll-container::-webkit-scrollbar-track{background:transparent}.neu-table__scroll-container::-webkit-scrollbar-thumb{background:var(--neu-surface-3);border-radius:99px}@media(max-width:399px){.neu-table__scroll-container{background-image:linear-gradient(to right,var(--neu-surface),var(--neu-surface)),linear-gradient(to right,var(--neu-surface),var(--neu-surface)),linear-gradient(to right,rgba(15,23,42,.08),transparent),linear-gradient(to left,rgba(15,23,42,.08),transparent);background-position:left center,right center,left center,right center;background-repeat:no-repeat;background-color:var(--neu-surface);background-size:20px 100%,20px 100%,10px 100%,10px 100%;background-attachment:local,local,scroll,scroll}}.neu-table__scroll-container--virtual{overflow-y:auto}.neu-table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--neu-text-sm);min-width:400px}.neu-table--sticky-header .neu-table__scroll-container{overflow-y:auto;max-height:var(--neu-table-max-height, 480px)}.neu-table--sticky-header .neu-table__head tr:first-child .neu-table__th{position:sticky;top:0;z-index:2;background:var(--neu-surface-2);box-shadow:inset 0 -1px 0 var(--neu-border)}.neu-table--sticky-header .neu-table__th--filter,.neu-table--sticky-header .neu-table__th--filter-placeholder{position:sticky;top:var(--neu-table-header-height, 44px);z-index:1;background:var(--neu-surface-2)}.neu-table--scrollable .neu-table__scroll-container{max-height:480px;overflow-y:auto}.neu-table--scrollable .neu-table__head .neu-table__th{position:sticky;top:0;z-index:2;background:var(--neu-surface-2);box-shadow:0 1px 0 var(--neu-border)}.neu-table__head{background:var(--neu-surface-2)}.neu-table__th{position:relative;padding:var(--neu-space-3) var(--neu-space-4);font-size:var(--neu-text-xs);font-weight:600;color:color-mix(in srgb,var(--neu-text) 72%,var(--neu-surface) 28%);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--neu-border);white-space:nowrap;-webkit-user-select:none;user-select:none;background-clip:padding-box}.neu-table__th--check{width:40px;text-align:center!important;padding:var(--neu-space-3) var(--neu-space-3)}.neu-table__th--sortable{cursor:pointer;transition:color var(--neu-transition)}.neu-table__th--sortable:hover{color:var(--neu-text)}.neu-table__th--sorted-asc,.neu-table__th--sorted-desc{color:var(--neu-primary-dark, var(--neu-primary))}.neu-table__resize-handle{position:absolute;top:0;right:-4px;width:12px;height:100%;padding:0;border:0;background:transparent;cursor:col-resize;touch-action:none;opacity:1}.neu-table__resize-handle:after{content:\"\";position:absolute;top:10px;bottom:10px;left:50%;width:2px;border-radius:999px;transform:translate(-50%);background:color-mix(in srgb,var(--neu-primary) 26%,var(--neu-border) 74%);box-shadow:0 0 0 1px color-mix(in srgb,var(--neu-surface) 55%,transparent 45%);opacity:1;transition:background var(--neu-transition)}.neu-table__resize-handle:focus-visible{outline:none}.neu-table__resize-handle:focus-visible:after,.neu-table__resize-handle:hover:after{background:color-mix(in srgb,var(--neu-primary) 62%,var(--neu-border) 38%)}.neu-table__sort-icon{margin-left:4px;font-style:normal;font-size:10px;opacity:.5}.neu-table__th--sorted-asc .neu-table__sort-icon,.neu-table__th--sorted-desc .neu-table__sort-icon{opacity:1}.neu-table__checkbox{width:16px;height:16px;cursor:pointer;accent-color:var(--neu-primary)}.neu-table__selection-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--neu-space-3);flex-wrap:wrap;padding:var(--neu-space-2) var(--neu-space-5);background:var(--neu-primary-50);border-bottom:1px solid var(--neu-primary-100);font-size:var(--neu-text-sm);color:var(--neu-primary);font-weight:500;animation:neu-tab-fade .15s ease}.neu-table__selection-main{display:flex;align-items:center;gap:var(--neu-space-3);flex-wrap:wrap}.neu-table__selection-actions{display:flex;align-items:center;gap:var(--neu-space-2);flex-wrap:wrap}.neu-table__selection-clear{background:none;border:none;color:var(--neu-primary);font-size:var(--neu-text-xs);font-weight:500;cursor:pointer;text-decoration:underline;text-underline-offset:2px;padding:0;font-family:var(--neu-font-sans)}.neu-table__row{transition:background-color var(--neu-transition)}.neu-table__row:hover{background:var(--neu-surface-2)}.neu-table__row:not(:last-child) .neu-table__td{border-bottom:1px solid var(--neu-border)}.neu-table__row--selected{background:var(--neu-primary-50)!important}.neu-table__row--selected .neu-table__td{color:var(--neu-primary)}.neu-table__row--clickable{cursor:pointer}.neu-table__td{padding:var(--neu-space-3) var(--neu-space-4);color:var(--neu-text);line-height:1.5;vertical-align:middle;background-clip:padding-box}.neu-table__td--center{text-align:center}.neu-table__td--empty{padding:var(--neu-space-8) 0}.neu-table__spacer-row{pointer-events:none}.neu-table__spacer-cell{padding:0!important;border:0!important;line-height:0}.neu-table__skeleton-rows{display:flex;flex-direction:column;gap:1px}.neu-table__skeleton-row{display:flex;align-items:center;padding:var(--neu-space-3) var(--neu-space-4);gap:var(--neu-space-4);border-bottom:1px solid var(--neu-border)}.neu-table__skeleton-cell{height:14px;flex:1;border-radius:var(--neu-radius-sm);background:linear-gradient(90deg,var(--neu-surface-2) 0%,var(--neu-surface-3) 50%,var(--neu-surface-2) 100%);background-size:200% 100%;animation:neu-skeleton 1.4s ease infinite}.neu-table__skeleton-cell:first-child{max-width:60px}.neu-table__skeleton-cell:nth-child(2){max-width:160px}.neu-table__skeleton-cell:last-child{max-width:80px}@keyframes neu-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}.neu-table__empty{display:flex;flex-direction:column;align-items:center;gap:var(--neu-space-3);padding:var(--neu-space-8) var(--neu-space-4);color:var(--neu-text-muted)}.neu-table__empty svg{width:40px;height:40px;opacity:.4}.neu-table__empty p{font-size:var(--neu-text-sm);margin:0}.neu-table__clear-filter{background:none;border:none;color:var(--neu-primary);font-size:var(--neu-text-xs);font-weight:500;cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:2px}.neu-table__clear-filter:hover{color:var(--neu-primary-dark)}.neu-table__footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--neu-space-3);padding:var(--neu-space-3) var(--neu-space-5);border-top:1px solid var(--neu-border);background:var(--neu-surface-2)}.neu-table__info{font-size:var(--neu-text-xs);color:color-mix(in srgb,var(--neu-text) 72%,var(--neu-surface) 28%)}.neu-table__pagination{display:flex;align-items:center;gap:2px}.neu-table__page-btn{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 var(--neu-space-2);border:1px solid transparent;border-radius:var(--neu-radius);background:transparent;font-family:var(--neu-font-sans);font-size:var(--neu-text-xs);font-weight:500;color:var(--neu-text-muted);cursor:pointer;transition:all var(--neu-transition)}.neu-table__page-btn svg{width:14px;height:14px}.neu-table__page-btn:hover:not(:disabled){background:var(--neu-surface-3);color:var(--neu-text);border-color:var(--neu-border)}.neu-table__page-btn:disabled{opacity:.35;cursor:not-allowed}.neu-table__page-btn--active{background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)));color:var(--neu-primary-solid-fg, var(--neu-primary-fg));border-color:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)))}.neu-table__page-btn--active:hover{background:var(--neu-primary-solid-hover, var(--neu-primary-dark));border-color:var(--neu-primary-solid-hover, var(--neu-primary-dark))}.neu-table__export-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 var(--neu-space-3);border:1.5px solid var(--neu-border);border-radius:var(--neu-radius);background:var(--neu-surface);font-family:var(--neu-font-sans);font-size:var(--neu-text-sm);font-weight:500;color:var(--neu-text-muted);cursor:pointer;white-space:nowrap;transition:all var(--neu-transition);flex-shrink:0}.neu-table__export-btn svg{flex-shrink:0}.neu-table__export-btn:hover{color:var(--neu-primary);border-color:var(--neu-primary);background:var(--neu-primary-50)}.neu-table__export-btn:disabled{opacity:.45;cursor:not-allowed}.neu-table__export-btn--selection{height:30px;font-size:var(--neu-text-xs);padding:0 var(--neu-space-2)}.neu-table__export-btn--primary{color:var(--neu-primary);border-color:var(--neu-primary-200);background:var(--neu-surface)}.neu-table__export-btn--danger{color:var(--neu-error);border-color:color-mix(in srgb,var(--neu-error) 24%,var(--neu-border) 76%)}.neu-table__export-btn--danger:hover:not(:disabled){background:var(--neu-error-bg);border-color:color-mix(in srgb,var(--neu-error) 40%,var(--neu-border) 60%);color:var(--neu-error)}.neu-table__page-size{display:flex;align-items:center;gap:var(--neu-space-2);min-width:0}.neu-table__page-size-label{font-size:var(--neu-text-xs);color:color-mix(in srgb,var(--neu-text) 72%,var(--neu-surface) 28%)}.neu-table__page-size-select{display:block;min-width:78px}.neu-table__page-size-select .neu-select__trigger{min-width:78px}@supports selector(:has(*)){.neu-table-container:has(.neu-table__page-size .neu-select--open){overflow:visible}.neu-table__footer:has(.neu-table__page-size .neu-select--open){position:relative;z-index:4}}.neu-table__th--expand-col,.neu-table__td--expand-col{width:36px;padding:var(--neu-space-2) var(--neu-space-2);text-align:center}.neu-table__expand-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;color:var(--neu-text-muted);cursor:pointer;border-radius:var(--neu-radius-sm);transition:all var(--neu-transition);padding:0}.neu-table__expand-btn svg{width:14px;height:14px;transition:transform .2s ease}.neu-table__expand-btn:hover{color:var(--neu-primary);background:var(--neu-primary-50)}.neu-table__expand-btn--open svg{transform:rotate(90deg)}.neu-table__row-expand-detail{background:var(--neu-surface-2)}.neu-table__td--expand-panel{padding:0}.neu-table__expand-content{padding:var(--neu-space-4) var(--neu-space-5);border-bottom:1px solid var(--neu-border);animation:neu-tab-fade .18s ease}.neu-table__cell-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--neu-radius-full);font-size:var(--neu-text-xs);font-weight:600;letter-spacing:.02em;white-space:nowrap}.neu-table__cell-badge--primary{background:var(--neu-primary-100);color:var(--neu-primary-dark)}.neu-table__cell-badge--success{background:var(--neu-table-badge-success-bg);color:color-mix(in srgb,var(--neu-text) 78%,var(--neu-success) 22%)}.neu-table__cell-badge--warning{background:var(--neu-table-badge-warning-bg);color:color-mix(in srgb,var(--neu-text) 78%,var(--neu-warning) 22%)}.neu-table__cell-badge--danger{background:var(--neu-table-badge-danger-bg);color:color-mix(in srgb,var(--neu-text) 74%,var(--neu-error) 26%)}.neu-table__cell-badge--info{background:var(--neu-primary-50);color:var(--neu-primary-dark, var(--neu-primary))}.neu-table__cell-badge--default{background:var(--neu-surface-3);color:color-mix(in srgb,var(--neu-text) 72%,var(--neu-surface) 28%)}@keyframes neu-tab-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.neu-table__host--compact .neu-table__th,.neu-table__host--compact .neu-table__td{padding:var(--neu-table-density-compact-padding, 4px 8px)}.neu-table__host--relaxed .neu-table__th,.neu-table__host--relaxed .neu-table__td{padding:var(--neu-table-density-relaxed-padding, 16px 20px)}.neu-table__th--rn,.neu-table__td--rn{width:44px;text-align:right;padding-right:var(--neu-space-4);color:var(--neu-text-muted);font-variant-numeric:tabular-nums;font-size:var(--neu-text-xs)}.neu-table__th--frozen-left,.neu-table__th--frozen-right{position:sticky;z-index:3;background:var(--neu-surface-2);background-clip:border-box}.neu-table__th--frozen-left{left:0}.neu-table__th--frozen-right{right:0}.neu-table__th--frozen-left-boundary{box-shadow:inset -1px 0 0 var(--neu-border),6px 0 8px -8px #0f172a29}.neu-table__th--frozen-right-boundary{box-shadow:inset 1px 0 0 var(--neu-border),-6px 0 8px -8px #0f172a29}.neu-table__td--frozen-left,.neu-table__td--frozen-right{position:sticky;z-index:2;background:var(--neu-surface);background-clip:border-box}.neu-table__td--frozen-left{left:0}.neu-table__td--frozen-right{right:0}.neu-table__td--frozen-left-boundary{box-shadow:inset -1px 0 0 var(--neu-border),6px 0 8px -8px #0f172a29}.neu-table__td--frozen-right-boundary{box-shadow:inset 1px 0 0 var(--neu-border),-6px 0 8px -8px #0f172a29}.neu-table__foot{background:var(--neu-surface-2)}.neu-table__footer-row .neu-table__td--footer{padding:var(--neu-space-3) var(--neu-space-4);font-weight:600;font-size:var(--neu-text-sm);border-top:2px solid var(--neu-border);color:var(--neu-text)}.neu-table__sort-priority{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)));color:var(--neu-primary-solid-fg, var(--neu-primary-fg));font-size:9px;font-weight:700;margin-right:2px}.neu-table__cell-link{color:var(--neu-primary);text-decoration:none;text-underline-offset:2px}.neu-table__cell-link:hover{text-decoration:underline}.neu-table__actions{display:flex;align-items:center;gap:var(--neu-space-1);flex-wrap:nowrap}.neu-table__action-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:none;border-radius:var(--neu-radius-sm);background:transparent;font-size:14px;cursor:pointer;transition:all var(--neu-transition);color:var(--neu-text-muted)}.neu-table__action-btn:disabled{opacity:.35;cursor:not-allowed}.neu-table__action-btn--ghost:hover:not(:disabled){background:var(--neu-surface-3);color:var(--neu-text)}.neu-table__action-btn--primary{background:var(--neu-primary-50);color:var(--neu-primary)}.neu-table__action-btn--primary:hover:not(:disabled){background:var(--neu-primary-solid, var(--neu-primary-dark, var(--neu-primary)));color:var(--neu-primary-solid-fg, var(--neu-primary-fg))}.neu-table__action-btn--danger{color:var(--neu-error)}.neu-table__action-btn--danger:hover:not(:disabled){background:var(--neu-error-bg)}.neu-table__action-icon{line-height:1}.neu-table__action-confirm{display:inline-flex;align-items:center;gap:var(--neu-space-1);font-size:var(--neu-text-xs);color:var(--neu-text-muted);white-space:nowrap}.neu-table__action-confirm .neu-table__action-btn{width:auto;padding:0 var(--neu-space-2);font-size:var(--neu-text-xs);font-family:var(--neu-font-sans);font-weight:500;border:1px solid var(--neu-border)}.neu-table__export-group{display:flex;align-items:center;gap:var(--neu-space-2);flex-shrink:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.neu-table__filter-row .neu-table__th--filter,.neu-table__filter-row .neu-table__th--filter-placeholder{padding:var(--neu-space-2) var(--neu-space-3);background:var(--neu-surface-2);border-bottom:2px solid var(--neu-border);font-weight:400;text-transform:none;letter-spacing:0;vertical-align:middle}.neu-table__col-filter-input,.neu-table__col-filter-select{display:block;width:100%;height:28px;padding:0 var(--neu-space-2);border:1px solid var(--neu-border);border-radius:var(--neu-radius-sm);background:var(--neu-surface);font-family:var(--neu-font-sans);font-size:var(--neu-text-xs);color:var(--neu-text);font-weight:400;outline:none;transition:border-color var(--neu-transition),box-shadow var(--neu-transition)}.neu-table__col-filter-input::placeholder,.neu-table__col-filter-select::placeholder{color:var(--neu-text-muted)}.neu-table__col-filter-input:focus,.neu-table__col-filter-select:focus{border-color:var(--neu-primary);box-shadow:0 0 0 2px #007aff1a;background:var(--neu-surface)}.neu-table__col-filter-select{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: NeuInputComponent, selector: "neu-input", inputs: ["type", "label", "placeholder", "floatingLabel", "size", "hint", "errorMessage", "disabled", "autocomplete", "startIcon", "endIcon", "icon", "iconPosition", "inputId", "name", "required", "readonly", "maxlength", "minlength", "min", "max", "pattern"] }, { kind: "component", type: NeuSelectComponent, selector: "neu-select", inputs: ["options", "label", "placeholder", "errorMessage", "hint", "disabled", "floatingLabel", "size", "searchable", "searchPlaceholder", "clearable", "virtualScroll", "virtualScrollVisibleItems", "noResultsMessage", "clearAriaLabel", "urlParam"], outputs: ["selectionChange"] }, { kind: "component", type: NeuDateInputComponent, selector: "neu-date-input", inputs: ["type", "label", "hint", "errorMessage", "disabled", "size", "readonly", "name", "inputId", "required", "min", "max", "step", "locale", "placeholder", "dateFormat", "floatingLabel"], outputs: ["rangeChange"] }, { kind: "component", type: NeuIconComponent, selector: "neu-icon", inputs: ["name", "strokeWidth", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1590
1708
|
}
|
|
1591
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1709
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NeuTableComponent, decorators: [{
|
|
1592
1710
|
type: Component,
|
|
1593
1711
|
args: [{ selector: 'neu-table', imports: [
|
|
1594
1712
|
NgTemplateOutlet,
|