@nova-design-system/nova-angular-19 3.17.0 → 3.18.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.
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, untracked, computed, InjectionToken, inject, reflectComponentType, ViewContainerRef, Injectable, KeyValueDiffers, ChangeDetectorRef, OutputEmitterRef, TemplateRef, Type, Injector, runInInjectionContext, effect, Directive, Inject, Input, signal, input, CUSTOM_ELEMENTS_SCHEMA, HostListener, NgModule, ElementRef, ViewChildren } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Directive, Input, untracked, computed, InjectionToken, inject, reflectComponentType, ViewContainerRef, Injectable, KeyValueDiffers, ChangeDetectorRef, OutputEmitterRef, TemplateRef, Type, Injector, runInInjectionContext, effect, Inject, signal, input, viewChild, CUSTOM_ELEMENTS_SCHEMA, ContentChild, ContentChildren, HostListener, NgModule, ElementRef, ViewChildren } from '@angular/core';
3
3
  import { __decorate } from 'tslib';
4
4
  import { fromEvent, BehaviorSubject } from 'rxjs';
5
5
  import * as i2 from '@angular/common';
6
6
  import { CommonModule } from '@angular/common';
7
- import { memo, createTable, getCoreRowModel } from '@tanstack/table-core';
7
+ import { memo, createTable, getCoreRowModel, getPaginationRowModel } from '@tanstack/table-core';
8
8
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
9
  export * from '@nova-design-system/nova-webcomponents/constants';
10
10
 
@@ -1330,6 +1330,41 @@ const DIRECTIVES = [
1330
1330
  NvTooltip
1331
1331
  ];
1332
1332
 
1333
+ /**
1334
+ * Directive to mark ng-templates as cell templates for specific fields.
1335
+ *
1336
+ * @example
1337
+ * ```html
1338
+ * <nv-datatable [columns]="columns" [rows]="data">
1339
+ * <ng-template nvDatatableCell="name" let-context>
1340
+ * <div class="font-semibold">{{ context.value }}</div>
1341
+ * </ng-template>
1342
+ *
1343
+ * <ng-template nvDatatableCell="price" let-context>
1344
+ * <span class="font-mono">${{ context.value }}</span>
1345
+ * </ng-template>
1346
+ * </nv-datatable>
1347
+ * ```
1348
+ */
1349
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1350
+ class NvDatatableCellDirective {
1351
+ constructor(template) {
1352
+ this.template = template;
1353
+ }
1354
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvDatatableCellDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1355
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: NvDatatableCellDirective, isStandalone: true, selector: "ng-template[nvDatatableCell]", inputs: { nvDatatableCell: "nvDatatableCell" }, ngImport: i0 }); }
1356
+ }
1357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvDatatableCellDirective, decorators: [{
1358
+ type: Directive,
1359
+ args: [{
1360
+ selector: 'ng-template[nvDatatableCell]',
1361
+ standalone: true,
1362
+ }]
1363
+ }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { nvDatatableCell: [{
1364
+ type: Input,
1365
+ args: [{ required: true }]
1366
+ }] } });
1367
+
1333
1368
  /**
1334
1369
  * Implementation from @tanstack/angular-query
1335
1370
  * {@link https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/util/lazy-init/lazy-init.ts}
@@ -2061,38 +2096,227 @@ function createAngularTable(options) {
2061
2096
  * Nova Datatable built on TanStack Table (Angular).
2062
2097
  */
2063
2098
  class NvDatatable {
2099
+ /** Public getter for table instance. */
2100
+ table() {
2101
+ return this.tableInstance();
2102
+ }
2064
2103
  constructor() {
2065
2104
  /** Column definitions */
2066
2105
  this.columns = input([]);
2067
2106
  /** Row data */
2068
2107
  this.rows = input([]);
2108
+ /** Optional pagination configuration */
2109
+ this.pagination = input(undefined);
2110
+ /** Should the header stick to the top of the table when scrolling? */
2111
+ this.stickyHeader = input(false);
2112
+ /** Signal to track cell templates array */
2113
+ this.cellTemplatesSignal = signal([]);
2114
+ /** Map of field names to cell templates */
2115
+ this.cellTemplateMap = computed(() => {
2116
+ const map = new Map();
2117
+ this.cellTemplatesSignal().forEach((directive) => {
2118
+ map.set(directive.nvDatatableCell, directive.template);
2119
+ });
2120
+ return map;
2121
+ });
2122
+ /** Pagination state for server mode */
2123
+ this.paginationState = signal({
2124
+ pageIndex: 0,
2125
+ pageSize: this.pagination()?.initialPageSize || 10,
2126
+ });
2127
+ /** Reference to table rows for infinite scroll observer */
2128
+ this.tableRows = viewChild('tableRow');
2129
+ /** Intersection observer for infinite scroll */
2130
+ this.observer = null;
2131
+ /** Helper to check if using infinite scroll */
2132
+ this.isInfiniteScroll = computed(() => this.pagination()?.mode === 'infinite');
2069
2133
  /** Computed table columns with proper typing and filtering. */
2070
- this.tableColumns = computed(() => this.columns()
2071
- .filter((col) => !col.hidden)
2072
- .map((col) => ({
2073
- accessorKey: col.field,
2074
- header: col.headerName || String(col.field),
2075
- size: col.width,
2076
- enableResizing: col.resizable ?? true,
2077
- cell: col.renderCell ??
2078
- ((context) => context.getValue()),
2079
- })));
2134
+ this.tableColumns = computed(() => {
2135
+ const templateMap = this.cellTemplateMap();
2136
+ return this.columns()
2137
+ .filter((col) => !col.hidden)
2138
+ .map((col) => ({
2139
+ accessorKey: col.field,
2140
+ header: col.headerName || String(col.field),
2141
+ size: col.width,
2142
+ enableResizing: col.resizable ?? true,
2143
+ cell: (context) => {
2144
+ const fieldName = String(col.field);
2145
+ const cellTemplate = templateMap.get(fieldName);
2146
+ // Priority: template > renderCell > default
2147
+ if (cellTemplate) {
2148
+ // Return TemplateRef directly - FlexRender will handle it
2149
+ return cellTemplate;
2150
+ }
2151
+ // Fall back to renderCell if provided
2152
+ if (col.renderCell) {
2153
+ return col.renderCell(context);
2154
+ }
2155
+ // Default: just return the value
2156
+ return context.getValue();
2157
+ },
2158
+ }));
2159
+ });
2080
2160
  /** TanStack table instance with Signals */
2081
- this.tableInstance = createAngularTable(() => ({
2082
- data: this.rows(),
2083
- columns: this.tableColumns(),
2084
- getCoreRowModel: getCoreRowModel(),
2085
- }));
2161
+ this.tableInstance = createAngularTable(() => {
2162
+ const paginationConfig = this.pagination();
2163
+ if (!paginationConfig || paginationConfig.mode === 'infinite') {
2164
+ // No pagination or infinite scroll - simple config
2165
+ return {
2166
+ data: this.rows(),
2167
+ columns: this.tableColumns(),
2168
+ getCoreRowModel: getCoreRowModel(),
2169
+ };
2170
+ }
2171
+ else if (paginationConfig.mode === 'client') {
2172
+ // Client-side pagination
2173
+ return {
2174
+ data: this.rows(),
2175
+ columns: this.tableColumns(),
2176
+ getCoreRowModel: getCoreRowModel(),
2177
+ getPaginationRowModel: getPaginationRowModel(),
2178
+ initialState: {
2179
+ pagination: {
2180
+ pageIndex: 0,
2181
+ pageSize: paginationConfig.initialPageSize || 10,
2182
+ },
2183
+ },
2184
+ };
2185
+ }
2186
+ else {
2187
+ // Server-side pagination
2188
+ const pageSize = this.paginationState().pageSize;
2189
+ return {
2190
+ data: this.rows(),
2191
+ columns: this.tableColumns(),
2192
+ getCoreRowModel: getCoreRowModel(),
2193
+ manualPagination: true,
2194
+ pageCount: paginationConfig.totalPageCount !== undefined
2195
+ ? paginationConfig.totalPageCount
2196
+ : paginationConfig.totalRowCount !== undefined
2197
+ ? Math.ceil(paginationConfig.totalRowCount / pageSize)
2198
+ : -1,
2199
+ state: {
2200
+ pagination: this.paginationState(),
2201
+ },
2202
+ onPaginationChange: (updaterOrValue) => {
2203
+ if (typeof updaterOrValue === 'function') {
2204
+ this.paginationState.set(updaterOrValue(this.paginationState()));
2205
+ }
2206
+ else {
2207
+ this.paginationState.set(updaterOrValue);
2208
+ }
2209
+ },
2210
+ };
2211
+ }
2212
+ });
2213
+ /** Build pagination API for template */
2214
+ this.paginationAPI = computed(() => {
2215
+ const paginationConfig = this.pagination();
2216
+ if (!paginationConfig) {
2217
+ return null;
2218
+ }
2219
+ const table = this.table();
2220
+ const tablePaginationState = table.getState().pagination;
2221
+ const pageCount = table.getPageCount();
2222
+ const rowCount = paginationConfig.mode === 'server'
2223
+ ? paginationConfig.totalRowCount || this.rows().length
2224
+ : this.rows().length;
2225
+ return {
2226
+ pageIndex: tablePaginationState.pageIndex,
2227
+ pageSize: tablePaginationState.pageSize,
2228
+ pageCount,
2229
+ rowCount,
2230
+ firstPage: () => table.setPageIndex(0),
2231
+ previousPage: () => table.previousPage(),
2232
+ nextPage: () => table.nextPage(),
2233
+ lastPage: () => table.setPageIndex(pageCount - 1),
2234
+ setPageIndex: (index) => table.setPageIndex(index),
2235
+ setPageSize: (size) => table.setPageSize(size),
2236
+ canPreviousPage: table.getCanPreviousPage(),
2237
+ canNextPage: table.getCanNextPage(),
2238
+ isLoading: paginationConfig.mode === 'infinite'
2239
+ ? paginationConfig.isLoading
2240
+ : undefined,
2241
+ hasMore: paginationConfig.mode === 'infinite'
2242
+ ? paginationConfig.hasMore
2243
+ : undefined,
2244
+ };
2245
+ });
2246
+ // Watch pagination state changes for server mode
2247
+ effect(() => {
2248
+ const paginationConfig = this.pagination();
2249
+ const state = this.paginationState();
2250
+ if (paginationConfig?.mode === 'server' &&
2251
+ paginationConfig.onPaginationChange) {
2252
+ paginationConfig.onPaginationChange({
2253
+ pageIndex: state.pageIndex,
2254
+ pageSize: state.pageSize,
2255
+ });
2256
+ }
2257
+ }, { allowSignalWrites: true });
2258
+ // Set up intersection observer for infinite scroll
2259
+ effect(() => {
2260
+ const paginationConfig = this.pagination();
2261
+ const rows = this.rows(); // Track rows changes
2262
+ // Clean up existing observer
2263
+ if (this.observer) {
2264
+ this.observer.disconnect();
2265
+ this.observer = null;
2266
+ }
2267
+ // Only set up observer for infinite scroll mode
2268
+ if (paginationConfig?.mode !== 'infinite' || rows.length === 0) {
2269
+ return;
2270
+ }
2271
+ // Use setTimeout to ensure DOM is updated
2272
+ setTimeout(() => {
2273
+ const threshold = paginationConfig.loadMoreThreshold || 500;
2274
+ // Find the last row element
2275
+ const tableRowElements = document.querySelectorAll('[data-is-last="true"]');
2276
+ const lastRowElement = tableRowElements[tableRowElements.length - 1];
2277
+ if (!lastRowElement) {
2278
+ return;
2279
+ }
2280
+ this.observer = new IntersectionObserver((entries) => {
2281
+ const entry = entries[0];
2282
+ if (entry.isIntersecting &&
2283
+ paginationConfig.mode === 'infinite' &&
2284
+ paginationConfig.hasMore &&
2285
+ !paginationConfig.isLoading &&
2286
+ paginationConfig.onLoadMore) {
2287
+ paginationConfig.onLoadMore();
2288
+ }
2289
+ }, {
2290
+ rootMargin: `${threshold}px`,
2291
+ root: null,
2292
+ });
2293
+ this.observer.observe(lastRowElement);
2294
+ }, 0);
2295
+ }, { allowSignalWrites: true });
2086
2296
  }
2087
- /** Public getter for table instance. */
2088
- table() {
2089
- return this.tableInstance();
2297
+ ngAfterViewInit() {
2298
+ // Sync cell templates QueryList to signal
2299
+ if (this.cellTemplates) {
2300
+ this.cellTemplatesSignal.set(this.cellTemplates.toArray());
2301
+ // Subscribe to changes in the QueryList
2302
+ this.cellTemplates.changes.subscribe(() => {
2303
+ if (this.cellTemplates) {
2304
+ this.cellTemplatesSignal.set(this.cellTemplates.toArray());
2305
+ }
2306
+ });
2307
+ }
2308
+ }
2309
+ ngOnDestroy() {
2310
+ if (this.observer) {
2311
+ this.observer.disconnect();
2312
+ this.observer = null;
2313
+ }
2090
2314
  }
2091
2315
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvDatatable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2092
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: NvDatatable, isStandalone: true, selector: "nv-datatable", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
2316
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.5", type: NvDatatable, isStandalone: true, selector: "nv-datatable", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "paginationTemplate", first: true, predicate: ["paginationTemplate"], descendants: true, read: TemplateRef }, { propertyName: "cellTemplates", predicate: NvDatatableCellDirective }], viewQueries: [{ propertyName: "tableRows", first: true, predicate: ["tableRow"], descendants: true, isSignal: true }], ngImport: i0, template: `
2093
2317
  <nv-table>
2094
2318
  <table>
2095
- <thead>
2319
+ <thead [attr.data-sticky-top]="stickyHeader() ? 'true' : null">
2096
2320
  @for (headerGroup of table().getHeaderGroups(); track headerGroup.id)
2097
2321
  {
2098
2322
  <tr>
@@ -2118,14 +2342,19 @@ class NvDatatable {
2118
2342
  </thead>
2119
2343
 
2120
2344
  <tbody>
2121
- @for (row of table().getRowModel().rows; track row.id) {
2122
- <tr [attr.data-testid]="'datatable-row-' + row.id">
2345
+ @for (row of table().getRowModel().rows; track row.id; let i = $index)
2346
+ {
2347
+ <tr
2348
+ [attr.data-testid]="'datatable-row-' + row.id"
2349
+ #tableRow
2350
+ [attr.data-is-last]="
2351
+ isInfiniteScroll() && i === table().getRowModel().rows.length - 1
2352
+ ? 'true'
2353
+ : null
2354
+ "
2355
+ >
2123
2356
  @for (cell of row.getVisibleCells(); track cell.id) {
2124
- <td
2125
- [attr.data-testid]="'datatable-cell-' + cell.id"
2126
- style="padding: 8px; border-bottom: 1px solid #eee;"
2127
- >
2128
- <!-- Let FlexRender handle strings vs TemplateRef -->
2357
+ <td [attr.data-testid]="'datatable-cell-' + cell.id">
2129
2358
  <ng-container
2130
2359
  *flexRender="
2131
2360
  cell.column.columnDef.cell;
@@ -2142,7 +2371,17 @@ class NvDatatable {
2142
2371
  </tbody>
2143
2372
  </table>
2144
2373
  </nv-table>
2145
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: FlexRenderDirective, selector: "[flexRender]", inputs: ["flexRender", "flexRenderProps", "flexRenderInjector"] }] }); }
2374
+
2375
+ <!-- Render pagination if configured -->
2376
+ @if (paginationAPI()) {
2377
+ <ng-container
2378
+ *ngTemplateOutlet="
2379
+ paginationTemplate || null;
2380
+ context: { $implicit: paginationAPI() }
2381
+ "
2382
+ ></ng-container>
2383
+ }
2384
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FlexRenderDirective, selector: "[flexRender]", inputs: ["flexRender", "flexRenderProps", "flexRenderInjector"] }] }); }
2146
2385
  }
2147
2386
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvDatatable, decorators: [{
2148
2387
  type: Component,
@@ -2154,7 +2393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2154
2393
  template: `
2155
2394
  <nv-table>
2156
2395
  <table>
2157
- <thead>
2396
+ <thead [attr.data-sticky-top]="stickyHeader() ? 'true' : null">
2158
2397
  @for (headerGroup of table().getHeaderGroups(); track headerGroup.id)
2159
2398
  {
2160
2399
  <tr>
@@ -2180,14 +2419,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2180
2419
  </thead>
2181
2420
 
2182
2421
  <tbody>
2183
- @for (row of table().getRowModel().rows; track row.id) {
2184
- <tr [attr.data-testid]="'datatable-row-' + row.id">
2422
+ @for (row of table().getRowModel().rows; track row.id; let i = $index)
2423
+ {
2424
+ <tr
2425
+ [attr.data-testid]="'datatable-row-' + row.id"
2426
+ #tableRow
2427
+ [attr.data-is-last]="
2428
+ isInfiniteScroll() && i === table().getRowModel().rows.length - 1
2429
+ ? 'true'
2430
+ : null
2431
+ "
2432
+ >
2185
2433
  @for (cell of row.getVisibleCells(); track cell.id) {
2186
- <td
2187
- [attr.data-testid]="'datatable-cell-' + cell.id"
2188
- style="padding: 8px; border-bottom: 1px solid #eee;"
2189
- >
2190
- <!-- Let FlexRender handle strings vs TemplateRef -->
2434
+ <td [attr.data-testid]="'datatable-cell-' + cell.id">
2191
2435
  <ng-container
2192
2436
  *flexRender="
2193
2437
  cell.column.columnDef.cell;
@@ -2204,9 +2448,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2204
2448
  </tbody>
2205
2449
  </table>
2206
2450
  </nv-table>
2451
+
2452
+ <!-- Render pagination if configured -->
2453
+ @if (paginationAPI()) {
2454
+ <ng-container
2455
+ *ngTemplateOutlet="
2456
+ paginationTemplate || null;
2457
+ context: { $implicit: paginationAPI() }
2458
+ "
2459
+ ></ng-container>
2460
+ }
2207
2461
  `,
2208
2462
  }]
2209
- }] });
2463
+ }], ctorParameters: () => [], propDecorators: { paginationTemplate: [{
2464
+ type: ContentChild,
2465
+ args: ['paginationTemplate', { read: TemplateRef }]
2466
+ }], cellTemplates: [{
2467
+ type: ContentChildren,
2468
+ args: [NvDatatableCellDirective]
2469
+ }] } });
2210
2470
 
2211
2471
  class ValueAccessor {
2212
2472
  constructor(el) {
@@ -2842,6 +3102,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2842
3102
  type: HostListener,
2843
3103
  args: ['valueChanged', ['$event']]
2844
3104
  }] } });
3105
+ class NvFieldtimeValueAccessor extends ValueAccessor {
3106
+ constructor(el) {
3107
+ super(el);
3108
+ }
3109
+ handleValueChanged(event) {
3110
+ this.handleChangeEvent(event.target.value);
3111
+ }
3112
+ writeValue(value) {
3113
+ this.el.nativeElement.value = this.lastValue = value;
3114
+ }
3115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvFieldtimeValueAccessor, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
3116
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: NvFieldtimeValueAccessor, isStandalone: true, selector: "nv-fieldtime", host: { listeners: { "valueChanged": "handleValueChanged($event)" } }, providers: [
3117
+ {
3118
+ provide: NG_VALUE_ACCESSOR,
3119
+ useExisting: NvFieldtimeValueAccessor,
3120
+ multi: true,
3121
+ },
3122
+ ], usesInheritance: true, ngImport: i0 }); }
3123
+ }
3124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvFieldtimeValueAccessor, decorators: [{
3125
+ type: Directive,
3126
+ args: [{
3127
+ selector: 'nv-fieldtime',
3128
+ providers: [
3129
+ {
3130
+ provide: NG_VALUE_ACCESSOR,
3131
+ useExisting: NvFieldtimeValueAccessor,
3132
+ multi: true,
3133
+ },
3134
+ ],
3135
+ }]
3136
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { handleValueChanged: [{
3137
+ type: HostListener,
3138
+ args: ['valueChanged', ['$event']]
3139
+ }] } });
2845
3140
  class NvNotificationValueAccessor extends ValueAccessor {
2846
3141
  constructor(el) {
2847
3142
  super(el);
@@ -3035,6 +3330,7 @@ const VALUE_ACCESSORS = [
3035
3330
  NvFieldsliderValueAccessor,
3036
3331
  NvFieldtextValueAccessor,
3037
3332
  NvFieldtextareaValueAccessor,
3333
+ NvFieldtimeValueAccessor,
3038
3334
  NvNotificationValueAccessor,
3039
3335
  NvPopoverValueAccessor,
3040
3336
  NvSplitValueAccessor,
@@ -3057,7 +3353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
3057
3353
  }] });
3058
3354
  class NovaComponentsValueAccessorModule {
3059
3355
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsValueAccessorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3060
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsValueAccessorModule, imports: [NvAccordionValueAccessor, NvAlertValueAccessor, NvCalendarValueAccessor, NvDatagridValueAccessor, NvDialogValueAccessor, NvFieldcheckboxValueAccessor, NvFielddateValueAccessor, NvFielddaterangeValueAccessor, NvFielddropdownValueAccessor, NvFieldmultiselectValueAccessor, NvFieldnumberValueAccessor, NvFieldpasswordValueAccessor, NvFieldradioValueAccessor, NvFieldselectValueAccessor, NvFieldsliderValueAccessor, NvFieldtextValueAccessor, NvFieldtextareaValueAccessor, NvNotificationValueAccessor, NvPopoverValueAccessor, NvSplitValueAccessor, NvToggleValueAccessor, NvTogglebuttongroupValueAccessor], exports: [NvAccordionValueAccessor, NvAlertValueAccessor, NvCalendarValueAccessor, NvDatagridValueAccessor, NvDialogValueAccessor, NvFieldcheckboxValueAccessor, NvFielddateValueAccessor, NvFielddaterangeValueAccessor, NvFielddropdownValueAccessor, NvFieldmultiselectValueAccessor, NvFieldnumberValueAccessor, NvFieldpasswordValueAccessor, NvFieldradioValueAccessor, NvFieldselectValueAccessor, NvFieldsliderValueAccessor, NvFieldtextValueAccessor, NvFieldtextareaValueAccessor, NvNotificationValueAccessor, NvPopoverValueAccessor, NvSplitValueAccessor, NvToggleValueAccessor, NvTogglebuttongroupValueAccessor] }); }
3356
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsValueAccessorModule, imports: [NvAccordionValueAccessor, NvAlertValueAccessor, NvCalendarValueAccessor, NvDatagridValueAccessor, NvDialogValueAccessor, NvFieldcheckboxValueAccessor, NvFielddateValueAccessor, NvFielddaterangeValueAccessor, NvFielddropdownValueAccessor, NvFieldmultiselectValueAccessor, NvFieldnumberValueAccessor, NvFieldpasswordValueAccessor, NvFieldradioValueAccessor, NvFieldselectValueAccessor, NvFieldsliderValueAccessor, NvFieldtextValueAccessor, NvFieldtextareaValueAccessor, NvFieldtimeValueAccessor, NvNotificationValueAccessor, NvPopoverValueAccessor, NvSplitValueAccessor, NvToggleValueAccessor, NvTogglebuttongroupValueAccessor], exports: [NvAccordionValueAccessor, NvAlertValueAccessor, NvCalendarValueAccessor, NvDatagridValueAccessor, NvDialogValueAccessor, NvFieldcheckboxValueAccessor, NvFielddateValueAccessor, NvFielddaterangeValueAccessor, NvFielddropdownValueAccessor, NvFieldmultiselectValueAccessor, NvFieldnumberValueAccessor, NvFieldpasswordValueAccessor, NvFieldradioValueAccessor, NvFieldselectValueAccessor, NvFieldsliderValueAccessor, NvFieldtextValueAccessor, NvFieldtextareaValueAccessor, NvFieldtimeValueAccessor, NvNotificationValueAccessor, NvPopoverValueAccessor, NvSplitValueAccessor, NvToggleValueAccessor, NvTogglebuttongroupValueAccessor] }); }
3061
3357
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsValueAccessorModule }); }
3062
3358
  }
3063
3359
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsValueAccessorModule, decorators: [{
@@ -3385,5 +3681,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
3385
3681
  * Generated bundle index. Do not edit.
3386
3682
  */
3387
3683
 
3388
- export { NotificationService, NotificationServiceComponent, NovaComponentsModule, NovaComponentsValueAccessorModule, NvAccordion, NvAccordionItem, NvAccordionValueAccessor, NvAlert, NvAlertValueAccessor, NvAvatar, NvBadge, NvBreadcrumb, NvBreadcrumbs, NvButton, NvButtongroup, NvCalendar, NvCalendarValueAccessor, NvCol, NvDatagrid, NvDatagridValueAccessor, NvDatagridcolumn, NvDatatable, NvDialog, NvDialogValueAccessor, NvDialogfooter, NvDialogheader, NvFieldcheckbox, NvFieldcheckboxValueAccessor, NvFielddate, NvFielddateValueAccessor, NvFielddaterange, NvFielddaterangeValueAccessor, NvFielddropdown, NvFielddropdownValueAccessor, NvFielddropdownitem, NvFielddropdownitemcheck, NvFieldmultiselect, NvFieldmultiselectValueAccessor, NvFieldnumber, NvFieldnumberValueAccessor, NvFieldpassword, NvFieldpasswordValueAccessor, NvFieldradio, NvFieldradioValueAccessor, NvFieldselect, NvFieldselectValueAccessor, NvFieldslider, NvFieldsliderValueAccessor, NvFieldtext, NvFieldtextValueAccessor, NvFieldtextarea, NvFieldtextareaValueAccessor, NvFieldtime, NvIcon, NvIconbutton, NvLoader, NvMenu, NvMenuitem, NvNotification, NvNotificationValueAccessor, NvNotificationcontainer, NvPopover, NvPopoverValueAccessor, NvRow, NvSplit, NvSplitValueAccessor, NvStack, NvTable, NvToggle, NvToggleValueAccessor, NvTogglebutton, NvTogglebuttongroup, NvTogglebuttongroupValueAccessor, NvTooltip, VALUE_ACCESSORS, flexRenderComponent as nvDatatableRenderComponent };
3684
+ export { NotificationService, NotificationServiceComponent, NovaComponentsModule, NovaComponentsValueAccessorModule, NvAccordion, NvAccordionItem, NvAccordionValueAccessor, NvAlert, NvAlertValueAccessor, NvAvatar, NvBadge, NvBreadcrumb, NvBreadcrumbs, NvButton, NvButtongroup, NvCalendar, NvCalendarValueAccessor, NvCol, NvDatagrid, NvDatagridValueAccessor, NvDatagridcolumn, NvDatatable, NvDatatableCellDirective, NvDialog, NvDialogValueAccessor, NvDialogfooter, NvDialogheader, NvFieldcheckbox, NvFieldcheckboxValueAccessor, NvFielddate, NvFielddateValueAccessor, NvFielddaterange, NvFielddaterangeValueAccessor, NvFielddropdown, NvFielddropdownValueAccessor, NvFielddropdownitem, NvFielddropdownitemcheck, NvFieldmultiselect, NvFieldmultiselectValueAccessor, NvFieldnumber, NvFieldnumberValueAccessor, NvFieldpassword, NvFieldpasswordValueAccessor, NvFieldradio, NvFieldradioValueAccessor, NvFieldselect, NvFieldselectValueAccessor, NvFieldslider, NvFieldsliderValueAccessor, NvFieldtext, NvFieldtextValueAccessor, NvFieldtextarea, NvFieldtextareaValueAccessor, NvFieldtime, NvFieldtimeValueAccessor, NvIcon, NvIconbutton, NvLoader, NvMenu, NvMenuitem, NvNotification, NvNotificationValueAccessor, NvNotificationcontainer, NvPopover, NvPopoverValueAccessor, NvRow, NvSplit, NvSplitValueAccessor, NvStack, NvTable, NvToggle, NvToggleValueAccessor, NvTogglebutton, NvTogglebuttongroup, NvTogglebuttongroupValueAccessor, NvTooltip, VALUE_ACCESSORS, flexRenderComponent as nvDatatableRenderComponent };
3389
3685
  //# sourceMappingURL=nova-components.mjs.map