@nova-design-system/nova-angular-19 3.20.0 → 3.21.1-beta.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.
@@ -4,7 +4,7 @@ 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, getPaginationRowModel } from '@tanstack/table-core';
7
+ import { memo, createTable, getCoreRowModel, getSortedRowModel, 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
 
@@ -252,11 +252,11 @@ let NvButton = class NvButton {
252
252
  this.el = r.nativeElement;
253
253
  }
254
254
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
255
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvButton, isStandalone: false, selector: "nv-button", inputs: { active: "active", danger: "danger", disabled: "disabled", emphasis: "emphasis", fluid: "fluid", form: "form", loading: "loading", size: "size", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvButton, isStandalone: false, selector: "nv-button", inputs: { active: "active", danger: "danger", disableTabindex: "disableTabindex", disabled: "disabled", emphasis: "emphasis", fluid: "fluid", form: "form", loading: "loading", size: "size", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
256
256
  };
257
257
  NvButton = __decorate([
258
258
  ProxyCmp({
259
- inputs: ['active', 'danger', 'disabled', 'emphasis', 'fluid', 'form', 'loading', 'size', 'type']
259
+ inputs: ['active', 'danger', 'disableTabindex', 'disabled', 'emphasis', 'fluid', 'form', 'loading', 'size', 'type']
260
260
  })
261
261
  ], NvButton);
262
262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvButton, decorators: [{
@@ -266,7 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
266
266
  changeDetection: ChangeDetectionStrategy.OnPush,
267
267
  template: '<ng-content></ng-content>',
268
268
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
269
- inputs: ['active', 'danger', 'disabled', 'emphasis', 'fluid', 'form', 'loading', 'size', 'type'],
269
+ inputs: ['active', 'danger', 'disableTabindex', 'disabled', 'emphasis', 'fluid', 'form', 'loading', 'size', 'type'],
270
270
  standalone: false
271
271
  }]
272
272
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
@@ -902,11 +902,11 @@ let NvIconbutton = class NvIconbutton {
902
902
  this.el = r.nativeElement;
903
903
  }
904
904
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvIconbutton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
905
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvIconbutton, isStandalone: false, selector: "nv-iconbutton", inputs: { active: "active", disabled: "disabled", emphasis: "emphasis", loading: "loading", name: "name", shape: "shape", size: "size", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
905
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvIconbutton, isStandalone: false, selector: "nv-iconbutton", inputs: { active: "active", disableTabindex: "disableTabindex", disabled: "disabled", emphasis: "emphasis", loading: "loading", name: "name", shape: "shape", size: "size", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
906
906
  };
907
907
  NvIconbutton = __decorate([
908
908
  ProxyCmp({
909
- inputs: ['active', 'disabled', 'emphasis', 'loading', 'name', 'shape', 'size', 'type']
909
+ inputs: ['active', 'disableTabindex', 'disabled', 'emphasis', 'loading', 'name', 'shape', 'size', 'type']
910
910
  })
911
911
  ], NvIconbutton);
912
912
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvIconbutton, decorators: [{
@@ -916,7 +916,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
916
916
  changeDetection: ChangeDetectionStrategy.OnPush,
917
917
  template: '<ng-content></ng-content>',
918
918
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
919
- inputs: ['active', 'disabled', 'emphasis', 'loading', 'name', 'shape', 'size', 'type'],
919
+ inputs: ['active', 'disableTabindex', 'disabled', 'emphasis', 'loading', 'name', 'shape', 'size', 'type'],
920
920
  standalone: false
921
921
  }]
922
922
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
@@ -1025,6 +1025,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
1025
1025
  standalone: false
1026
1026
  }]
1027
1027
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1028
+ let NvNotificationBullet = class NvNotificationBullet {
1029
+ constructor(c, r, z) {
1030
+ this.z = z;
1031
+ c.detach();
1032
+ this.el = r.nativeElement;
1033
+ }
1034
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvNotificationBullet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1035
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvNotificationBullet, isStandalone: false, selector: "nv-notification-bullet", inputs: { contrastingBorder: "contrastingBorder", count: "count", emphasis: "emphasis", intention: "intention", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1036
+ };
1037
+ NvNotificationBullet = __decorate([
1038
+ ProxyCmp({
1039
+ inputs: ['contrastingBorder', 'count', 'emphasis', 'intention', 'size']
1040
+ })
1041
+ ], NvNotificationBullet);
1042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvNotificationBullet, decorators: [{
1043
+ type: Component,
1044
+ args: [{
1045
+ selector: 'nv-notification-bullet',
1046
+ changeDetection: ChangeDetectionStrategy.OnPush,
1047
+ template: '<ng-content></ng-content>',
1048
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1049
+ inputs: ['contrastingBorder', 'count', 'emphasis', 'intention', 'size'],
1050
+ standalone: false
1051
+ }]
1052
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1028
1053
  let NvNotificationcontainer = class NvNotificationcontainer {
1029
1054
  constructor(c, r, z) {
1030
1055
  this.z = z;
@@ -1100,6 +1125,224 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
1100
1125
  standalone: false
1101
1126
  }]
1102
1127
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1128
+ let NvSidebar = class NvSidebar {
1129
+ constructor(c, r, z) {
1130
+ this.z = z;
1131
+ c.detach();
1132
+ this.el = r.nativeElement;
1133
+ proxyOutputs(this, this.el, ['openChanged']);
1134
+ }
1135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1136
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebar, isStandalone: false, selector: "nv-sidebar", inputs: { activePath: "activePath", notificationEmphasis: "notificationEmphasis", notificationIntention: "notificationIntention", open: "open", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1137
+ };
1138
+ NvSidebar = __decorate([
1139
+ ProxyCmp({
1140
+ inputs: ['activePath', 'notificationEmphasis', 'notificationIntention', 'open', 'type']
1141
+ })
1142
+ ], NvSidebar);
1143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebar, decorators: [{
1144
+ type: Component,
1145
+ args: [{
1146
+ selector: 'nv-sidebar',
1147
+ changeDetection: ChangeDetectionStrategy.OnPush,
1148
+ template: '<ng-content></ng-content>',
1149
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1150
+ inputs: ['activePath', 'notificationEmphasis', 'notificationIntention', 'open', 'type'],
1151
+ standalone: false
1152
+ }]
1153
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1154
+ let NvSidebarcontent = class NvSidebarcontent {
1155
+ constructor(c, r, z) {
1156
+ this.z = z;
1157
+ c.detach();
1158
+ this.el = r.nativeElement;
1159
+ }
1160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarcontent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1161
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebarcontent, isStandalone: false, selector: "nv-sidebarcontent", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1162
+ };
1163
+ NvSidebarcontent = __decorate([
1164
+ ProxyCmp({})
1165
+ ], NvSidebarcontent);
1166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarcontent, decorators: [{
1167
+ type: Component,
1168
+ args: [{
1169
+ selector: 'nv-sidebarcontent',
1170
+ changeDetection: ChangeDetectionStrategy.OnPush,
1171
+ template: '<ng-content></ng-content>',
1172
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1173
+ inputs: [],
1174
+ standalone: false
1175
+ }]
1176
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1177
+ let NvSidebardivider = class NvSidebardivider {
1178
+ constructor(c, r, z) {
1179
+ this.z = z;
1180
+ c.detach();
1181
+ this.el = r.nativeElement;
1182
+ }
1183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebardivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1184
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebardivider, isStandalone: false, selector: "nv-sidebardivider", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1185
+ };
1186
+ NvSidebardivider = __decorate([
1187
+ ProxyCmp({})
1188
+ ], NvSidebardivider);
1189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebardivider, decorators: [{
1190
+ type: Component,
1191
+ args: [{
1192
+ selector: 'nv-sidebardivider',
1193
+ changeDetection: ChangeDetectionStrategy.OnPush,
1194
+ template: '<ng-content></ng-content>',
1195
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1196
+ inputs: [],
1197
+ standalone: false
1198
+ }]
1199
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1200
+ let NvSidebarfooter = class NvSidebarfooter {
1201
+ constructor(c, r, z) {
1202
+ this.z = z;
1203
+ c.detach();
1204
+ this.el = r.nativeElement;
1205
+ }
1206
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarfooter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1207
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebarfooter, isStandalone: false, selector: "nv-sidebarfooter", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1208
+ };
1209
+ NvSidebarfooter = __decorate([
1210
+ ProxyCmp({})
1211
+ ], NvSidebarfooter);
1212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarfooter, decorators: [{
1213
+ type: Component,
1214
+ args: [{
1215
+ selector: 'nv-sidebarfooter',
1216
+ changeDetection: ChangeDetectionStrategy.OnPush,
1217
+ template: '<ng-content></ng-content>',
1218
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1219
+ inputs: [],
1220
+ standalone: false
1221
+ }]
1222
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1223
+ let NvSidebargroup = class NvSidebargroup {
1224
+ constructor(c, r, z) {
1225
+ this.z = z;
1226
+ c.detach();
1227
+ this.el = r.nativeElement;
1228
+ }
1229
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebargroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1230
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebargroup, isStandalone: false, selector: "nv-sidebargroup", inputs: { label: "label" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1231
+ };
1232
+ NvSidebargroup = __decorate([
1233
+ ProxyCmp({
1234
+ inputs: ['label']
1235
+ })
1236
+ ], NvSidebargroup);
1237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebargroup, decorators: [{
1238
+ type: Component,
1239
+ args: [{
1240
+ selector: 'nv-sidebargroup',
1241
+ changeDetection: ChangeDetectionStrategy.OnPush,
1242
+ template: '<ng-content></ng-content>',
1243
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1244
+ inputs: ['label'],
1245
+ standalone: false
1246
+ }]
1247
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1248
+ let NvSidebarheader = class NvSidebarheader {
1249
+ constructor(c, r, z) {
1250
+ this.z = z;
1251
+ c.detach();
1252
+ this.el = r.nativeElement;
1253
+ }
1254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarheader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebarheader, isStandalone: false, selector: "nv-sidebarheader", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1256
+ };
1257
+ NvSidebarheader = __decorate([
1258
+ ProxyCmp({})
1259
+ ], NvSidebarheader);
1260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarheader, decorators: [{
1261
+ type: Component,
1262
+ args: [{
1263
+ selector: 'nv-sidebarheader',
1264
+ changeDetection: ChangeDetectionStrategy.OnPush,
1265
+ template: '<ng-content></ng-content>',
1266
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1267
+ inputs: [],
1268
+ standalone: false
1269
+ }]
1270
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1271
+ let NvSidebarlogo = class NvSidebarlogo {
1272
+ constructor(c, r, z) {
1273
+ this.z = z;
1274
+ c.detach();
1275
+ this.el = r.nativeElement;
1276
+ }
1277
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarlogo, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1278
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebarlogo, isStandalone: false, selector: "nv-sidebarlogo", inputs: { collapsedLogo: "collapsedLogo", label: "label", logo: "logo" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1279
+ };
1280
+ NvSidebarlogo = __decorate([
1281
+ ProxyCmp({
1282
+ inputs: ['collapsedLogo', 'label', 'logo']
1283
+ })
1284
+ ], NvSidebarlogo);
1285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarlogo, decorators: [{
1286
+ type: Component,
1287
+ args: [{
1288
+ selector: 'nv-sidebarlogo',
1289
+ changeDetection: ChangeDetectionStrategy.OnPush,
1290
+ template: '<ng-content></ng-content>',
1291
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1292
+ inputs: ['collapsedLogo', 'label', 'logo'],
1293
+ standalone: false
1294
+ }]
1295
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1296
+ let NvSidebarnavitem = class NvSidebarnavitem {
1297
+ constructor(c, r, z) {
1298
+ this.z = z;
1299
+ c.detach();
1300
+ this.el = r.nativeElement;
1301
+ }
1302
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarnavitem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1303
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebarnavitem, isStandalone: false, selector: "nv-sidebarnavitem", inputs: { active: "active", collapsible: "collapsible", icon: "icon", notificationCount: "notificationCount", open: "open" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1304
+ };
1305
+ NvSidebarnavitem = __decorate([
1306
+ ProxyCmp({
1307
+ inputs: ['active', 'collapsible', 'icon', 'notificationCount', 'open']
1308
+ })
1309
+ ], NvSidebarnavitem);
1310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarnavitem, decorators: [{
1311
+ type: Component,
1312
+ args: [{
1313
+ selector: 'nv-sidebarnavitem',
1314
+ changeDetection: ChangeDetectionStrategy.OnPush,
1315
+ template: '<ng-content></ng-content>',
1316
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1317
+ inputs: ['active', 'collapsible', 'icon', 'notificationCount', 'open'],
1318
+ standalone: false
1319
+ }]
1320
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1321
+ let NvSidebarnavsubitem = class NvSidebarnavsubitem {
1322
+ constructor(c, r, z) {
1323
+ this.z = z;
1324
+ c.detach();
1325
+ this.el = r.nativeElement;
1326
+ }
1327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarnavsubitem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebarnavsubitem, isStandalone: false, selector: "nv-sidebarnavsubitem", inputs: { active: "active" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1329
+ };
1330
+ NvSidebarnavsubitem = __decorate([
1331
+ ProxyCmp({
1332
+ inputs: ['active']
1333
+ })
1334
+ ], NvSidebarnavsubitem);
1335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarnavsubitem, decorators: [{
1336
+ type: Component,
1337
+ args: [{
1338
+ selector: 'nv-sidebarnavsubitem',
1339
+ changeDetection: ChangeDetectionStrategy.OnPush,
1340
+ template: '<ng-content></ng-content>',
1341
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1342
+ inputs: ['active'],
1343
+ standalone: false
1344
+ }]
1345
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1103
1346
  let NvSplit = class NvSplit {
1104
1347
  constructor(c, r, z) {
1105
1348
  this.z = z;
@@ -1175,6 +1418,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
1175
1418
  standalone: false
1176
1419
  }]
1177
1420
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1421
+ let NvTableheader = class NvTableheader {
1422
+ constructor(c, r, z) {
1423
+ this.z = z;
1424
+ c.detach();
1425
+ this.el = r.nativeElement;
1426
+ proxyOutputs(this, this.el, ['sortDirectionChanged']);
1427
+ }
1428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvTableheader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1429
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.5", type: NvTableheader, isStandalone: false, selector: "nv-tableheader", inputs: { sortDirection: "sortDirection", sortable: "sortable" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1430
+ };
1431
+ NvTableheader = __decorate([
1432
+ ProxyCmp({
1433
+ inputs: ['sortDirection', 'sortable']
1434
+ })
1435
+ ], NvTableheader);
1436
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvTableheader, decorators: [{
1437
+ type: Component,
1438
+ args: [{
1439
+ selector: 'nv-tableheader',
1440
+ changeDetection: ChangeDetectionStrategy.OnPush,
1441
+ template: '<ng-content></ng-content>',
1442
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1443
+ inputs: ['sortDirection', 'sortable'],
1444
+ standalone: false
1445
+ }]
1446
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1178
1447
  let NvToggle = class NvToggle {
1179
1448
  constructor(c, r, z) {
1180
1449
  this.z = z;
@@ -1318,12 +1587,23 @@ const DIRECTIVES = [
1318
1587
  NvMenu,
1319
1588
  NvMenuitem,
1320
1589
  NvNotification,
1590
+ NvNotificationBullet,
1321
1591
  NvNotificationcontainer,
1322
1592
  NvPopover,
1323
1593
  NvRow,
1594
+ NvSidebar,
1595
+ NvSidebarcontent,
1596
+ NvSidebardivider,
1597
+ NvSidebarfooter,
1598
+ NvSidebargroup,
1599
+ NvSidebarheader,
1600
+ NvSidebarlogo,
1601
+ NvSidebarnavitem,
1602
+ NvSidebarnavsubitem,
1324
1603
  NvSplit,
1325
1604
  NvStack,
1326
1605
  NvTable,
1606
+ NvTableheader,
1327
1607
  NvToggle,
1328
1608
  NvTogglebutton,
1329
1609
  NvTogglebuttongroup,
@@ -2092,6 +2372,7 @@ function createAngularTable(options) {
2092
2372
 
2093
2373
  /* eslint-disable jsdoc/require-jsdoc */
2094
2374
  /* eslint-disable jsdoc/require-returns */
2375
+ /* eslint-disable jsdoc/require-param */
2095
2376
  /**
2096
2377
  * A powerful, flexible datatable component built on TanStack Table.
2097
2378
  * Supports custom cell rendering, column configuration, pagination, and full TypeScript typing.
@@ -2101,6 +2382,37 @@ class NvDatatable {
2101
2382
  table() {
2102
2383
  return this.tableInstance();
2103
2384
  }
2385
+ /**
2386
+ * Handle sort direction change from table header
2387
+ * @param {Event} event The sort direction change event or direction string
2388
+ * @param {object} header The table header object
2389
+ */
2390
+ handleSortDirectionChanged(event, header) {
2391
+ // Extract direction from event or use directly if string
2392
+ let direction;
2393
+ if (typeof event === 'string') {
2394
+ direction = event;
2395
+ }
2396
+ else if ('detail' in event && typeof event.detail === 'string') {
2397
+ direction = event.detail;
2398
+ }
2399
+ else {
2400
+ // Fallback - shouldn't happen but handle gracefully
2401
+ console.warn('Unexpected event type in handleSortDirectionChanged:', event);
2402
+ return;
2403
+ }
2404
+ const sortingConfig = this.sorting();
2405
+ // Check if multi-sort is enabled
2406
+ const isMultiSort = sortingConfig?.enableMultiSort ?? false;
2407
+ if (direction === 'none') {
2408
+ // Clear this column's sort
2409
+ header.column.clearSorting();
2410
+ }
2411
+ else {
2412
+ // Toggle sort - TanStack will handle the logic internally
2413
+ header.column.toggleSorting(direction === 'desc', isMultiSort);
2414
+ }
2415
+ }
2104
2416
  constructor() {
2105
2417
  /** Column definitions */
2106
2418
  this.columns = input([]);
@@ -2108,6 +2420,8 @@ class NvDatatable {
2108
2420
  this.rows = input([]);
2109
2421
  /** Optional pagination configuration */
2110
2422
  this.pagination = input(undefined);
2423
+ /** Optional sorting configuration */
2424
+ this.sorting = input(undefined);
2111
2425
  /** Should the header stick to the top of the table when scrolling? */
2112
2426
  this.stickyHeader = input(false);
2113
2427
  /** Signal to track cell templates array */
@@ -2125,6 +2439,8 @@ class NvDatatable {
2125
2439
  pageIndex: 0,
2126
2440
  pageSize: this.pagination()?.initialPageSize || 10,
2127
2441
  });
2442
+ /** Sorting state for controlled sorting (server mode) */
2443
+ this.sortingState = signal(this.sorting()?.sortState || []);
2128
2444
  /** Reference to table rows for infinite scroll observer */
2129
2445
  this.tableRows = viewChild('tableRow');
2130
2446
  /** Intersection observer for infinite scroll */
@@ -2153,7 +2469,7 @@ class NvDatatable {
2153
2469
  // Default: just return the value (formatted if valueFormatter was used)
2154
2470
  return context.getValue();
2155
2471
  };
2156
- return {
2472
+ const columnDef = {
2157
2473
  accessorKey: col.field,
2158
2474
  accessorFn: col.valueFormatter
2159
2475
  ? (row) => {
@@ -2168,27 +2484,82 @@ class NvDatatable {
2168
2484
  header: col.headerName || String(col.field),
2169
2485
  size: col.width,
2170
2486
  enableResizing: col.resizable ?? true,
2487
+ // Sorting configuration
2488
+ enableSorting: this.sorting() ? col.sortable ?? true : false,
2171
2489
  cell: cellRenderer,
2172
2490
  };
2491
+ // Add optional sorting properties only if defined
2492
+ if (col.sortingFn !== undefined) {
2493
+ // @ts-expect-error - TanStack typing is strict but this works at runtime
2494
+ columnDef.sortingFn = col.sortingFn;
2495
+ }
2496
+ if (col.sortDescFirst !== undefined) {
2497
+ columnDef.sortDescFirst = col.sortDescFirst;
2498
+ }
2499
+ if (col.invertSorting !== undefined) {
2500
+ columnDef.invertSorting = col.invertSorting;
2501
+ }
2502
+ if (col.sortUndefined !== undefined) {
2503
+ columnDef.sortUndefined = col.sortUndefined;
2504
+ }
2505
+ return columnDef;
2173
2506
  });
2174
2507
  });
2175
2508
  /** TanStack table instance with Signals */
2176
2509
  this.tableInstance = createAngularTable(() => {
2177
2510
  const paginationConfig = this.pagination();
2178
- if (!paginationConfig || paginationConfig.mode === 'infinite') {
2179
- // No pagination or infinite scroll - simple config
2180
- return {
2511
+ const sortingConfig = this.sorting();
2512
+ // Determine base table configuration with sorting
2513
+ const getBaseTableConfig = () => {
2514
+ const baseConfig = {
2181
2515
  data: this.rows(),
2182
2516
  columns: this.tableColumns(),
2183
2517
  getCoreRowModel: getCoreRowModel(),
2518
+ // Sorting configuration
2519
+ ...(sortingConfig && {
2520
+ state: {
2521
+ sorting: sortingConfig.mode === 'server' && sortingConfig.sortState
2522
+ ? sortingConfig.sortState
2523
+ : this.sortingState(),
2524
+ },
2525
+ onSortingChange: (updaterOrValue) => {
2526
+ const currentSort = sortingConfig.mode === 'server' && sortingConfig.sortState
2527
+ ? sortingConfig.sortState
2528
+ : this.sortingState();
2529
+ const newSort = typeof updaterOrValue === 'function'
2530
+ ? updaterOrValue(currentSort)
2531
+ : updaterOrValue;
2532
+ // Always update internal state for reactivity
2533
+ this.sortingState.set(newSort);
2534
+ // For server-side sorting, also call the callback
2535
+ if (sortingConfig?.mode === 'server' &&
2536
+ sortingConfig.onSortingChange) {
2537
+ sortingConfig.onSortingChange(newSort);
2538
+ }
2539
+ },
2540
+ manualSorting: sortingConfig.mode === 'server',
2541
+ enableSorting: true,
2542
+ enableMultiSort: sortingConfig.enableMultiSort ?? false,
2543
+ enableSortingRemoval: sortingConfig.enableSortingRemoval ?? true,
2544
+ maxMultiSortColCount: sortingConfig.maxMultiSortColCount,
2545
+ sortDescFirst: sortingConfig.sortDescFirst ?? false,
2546
+ // When multi-sort is enabled, treat all clicks as multi-sort events
2547
+ isMultiSortEvent: sortingConfig.enableMultiSort
2548
+ ? () => true
2549
+ : undefined,
2550
+ getSortedRowModel: sortingConfig.mode === 'client' ? getSortedRowModel() : undefined,
2551
+ }),
2184
2552
  };
2553
+ return baseConfig;
2554
+ };
2555
+ if (!paginationConfig || paginationConfig.mode === 'infinite') {
2556
+ // No pagination or infinite scroll - simple config
2557
+ return getBaseTableConfig();
2185
2558
  }
2186
2559
  else if (paginationConfig.mode === 'client') {
2187
2560
  // Client-side pagination
2188
2561
  return {
2189
- data: this.rows(),
2190
- columns: this.tableColumns(),
2191
- getCoreRowModel: getCoreRowModel(),
2562
+ ...getBaseTableConfig(),
2192
2563
  getPaginationRowModel: getPaginationRowModel(),
2193
2564
  initialState: {
2194
2565
  pagination: {
@@ -2199,12 +2570,11 @@ class NvDatatable {
2199
2570
  };
2200
2571
  }
2201
2572
  else {
2202
- // Server-side pagination
2573
+ // Server-side pagination - manual pagination with reactive state
2574
+ const baseConfig = getBaseTableConfig();
2203
2575
  const pageSize = this.paginationState().pageSize;
2204
2576
  return {
2205
- data: this.rows(),
2206
- columns: this.tableColumns(),
2207
- getCoreRowModel: getCoreRowModel(),
2577
+ ...baseConfig,
2208
2578
  manualPagination: true,
2209
2579
  pageCount: paginationConfig.totalPageCount !== undefined
2210
2580
  ? paginationConfig.totalPageCount
@@ -2213,13 +2583,19 @@ class NvDatatable {
2213
2583
  : -1,
2214
2584
  state: {
2215
2585
  pagination: this.paginationState(),
2586
+ ...(baseConfig.state && { sorting: baseConfig.state.sorting }),
2216
2587
  },
2217
2588
  onPaginationChange: (updaterOrValue) => {
2218
- if (typeof updaterOrValue === 'function') {
2219
- this.paginationState.set(updaterOrValue(this.paginationState()));
2220
- }
2221
- else {
2222
- this.paginationState.set(updaterOrValue);
2589
+ const newState = typeof updaterOrValue === 'function'
2590
+ ? updaterOrValue(this.paginationState())
2591
+ : updaterOrValue;
2592
+ this.paginationState.set(newState);
2593
+ // Call user's callback for server-side pagination
2594
+ if (paginationConfig.onPaginationChange) {
2595
+ paginationConfig.onPaginationChange({
2596
+ pageIndex: newState.pageIndex,
2597
+ pageSize: newState.pageSize,
2598
+ });
2223
2599
  }
2224
2600
  },
2225
2601
  };
@@ -2258,18 +2634,6 @@ class NvDatatable {
2258
2634
  : undefined,
2259
2635
  };
2260
2636
  });
2261
- // Watch pagination state changes for server mode
2262
- effect(() => {
2263
- const paginationConfig = this.pagination();
2264
- const state = this.paginationState();
2265
- if (paginationConfig?.mode === 'server' &&
2266
- paginationConfig.onPaginationChange) {
2267
- paginationConfig.onPaginationChange({
2268
- pageIndex: state.pageIndex,
2269
- pageSize: state.pageSize,
2270
- });
2271
- }
2272
- }, { allowSignalWrites: true });
2273
2637
  // Set up intersection observer for infinite scroll
2274
2638
  effect(() => {
2275
2639
  const paginationConfig = this.pagination();
@@ -2328,7 +2692,7 @@ class NvDatatable {
2328
2692
  }
2329
2693
  }
2330
2694
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvDatatable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2331
- 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: `
2695
+ 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 }, sorting: { classPropertyName: "sorting", publicName: "sorting", 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: `
2332
2696
  <nv-table>
2333
2697
  <table>
2334
2698
  <thead [attr.data-sticky-top]="stickyHeader() ? 'true' : null">
@@ -2347,9 +2711,19 @@ class NvDatatable {
2347
2711
  !header.column.columnDef.enableResizing ? 'true' : null
2348
2712
  "
2349
2713
  >
2350
- @if (!header.isPlaceholder) {
2714
+ @if (!header.isPlaceholder) { @if (header.column.getCanSort()) {
2715
+ <nv-tableheader
2716
+ [sortable]="true"
2717
+ [sortDirection]="header.column.getIsSorted() || 'none'"
2718
+ (sortDirectionChanged)="
2719
+ handleSortDirectionChanged($event, header)
2720
+ "
2721
+ >
2722
+ {{ header.column.columnDef.header }}
2723
+ </nv-tableheader>
2724
+ } @else {
2351
2725
  {{ header.column.columnDef.header }}
2352
- }
2726
+ } }
2353
2727
  </th>
2354
2728
  }
2355
2729
  </tr>
@@ -2360,7 +2734,7 @@ class NvDatatable {
2360
2734
  @for (row of table().getRowModel().rows; track row.id; let i = $index)
2361
2735
  {
2362
2736
  <tr
2363
- [attr.data-testid]="'datatable-row-' + row.id"
2737
+ [attr.data-testid]="'datatable-row-' + i"
2364
2738
  #tableRow
2365
2739
  [attr.data-is-last]="
2366
2740
  isInfiniteScroll() && i === table().getRowModel().rows.length - 1
@@ -2369,7 +2743,7 @@ class NvDatatable {
2369
2743
  "
2370
2744
  >
2371
2745
  @for (cell of row.getVisibleCells(); track cell.id) {
2372
- <td [attr.data-testid]="'datatable-cell-' + cell.id">
2746
+ <td [attr.data-testid]="'datatable-cell-' + cell.column.id">
2373
2747
  <ng-container
2374
2748
  *flexRender="
2375
2749
  cell.column.columnDef.cell;
@@ -2424,9 +2798,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2424
2798
  !header.column.columnDef.enableResizing ? 'true' : null
2425
2799
  "
2426
2800
  >
2427
- @if (!header.isPlaceholder) {
2801
+ @if (!header.isPlaceholder) { @if (header.column.getCanSort()) {
2802
+ <nv-tableheader
2803
+ [sortable]="true"
2804
+ [sortDirection]="header.column.getIsSorted() || 'none'"
2805
+ (sortDirectionChanged)="
2806
+ handleSortDirectionChanged($event, header)
2807
+ "
2808
+ >
2809
+ {{ header.column.columnDef.header }}
2810
+ </nv-tableheader>
2811
+ } @else {
2428
2812
  {{ header.column.columnDef.header }}
2429
- }
2813
+ } }
2430
2814
  </th>
2431
2815
  }
2432
2816
  </tr>
@@ -2437,7 +2821,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2437
2821
  @for (row of table().getRowModel().rows; track row.id; let i = $index)
2438
2822
  {
2439
2823
  <tr
2440
- [attr.data-testid]="'datatable-row-' + row.id"
2824
+ [attr.data-testid]="'datatable-row-' + i"
2441
2825
  #tableRow
2442
2826
  [attr.data-is-last]="
2443
2827
  isInfiniteScroll() && i === table().getRowModel().rows.length - 1
@@ -2446,7 +2830,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
2446
2830
  "
2447
2831
  >
2448
2832
  @for (cell of row.getVisibleCells(); track cell.id) {
2449
- <td [attr.data-testid]="'datatable-cell-' + cell.id">
2833
+ <td [attr.data-testid]="'datatable-cell-' + cell.column.id">
2450
2834
  <ng-container
2451
2835
  *flexRender="
2452
2836
  cell.column.columnDef.cell;
@@ -3247,6 +3631,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
3247
3631
  type: HostListener,
3248
3632
  args: ['openChanged', ['$event']]
3249
3633
  }] } });
3634
+ class NvSidebarValueAccessor extends ValueAccessor {
3635
+ constructor(el) {
3636
+ super(el);
3637
+ }
3638
+ handleOpenChanged(event) {
3639
+ this.handleChangeEvent(event.target.open);
3640
+ }
3641
+ writeValue(value) {
3642
+ this.el.nativeElement.open = this.lastValue = value;
3643
+ }
3644
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarValueAccessor, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
3645
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.5", type: NvSidebarValueAccessor, isStandalone: true, selector: "nv-sidebar", host: { listeners: { "openChanged": "handleOpenChanged($event)" } }, providers: [
3646
+ {
3647
+ provide: NG_VALUE_ACCESSOR,
3648
+ useExisting: NvSidebarValueAccessor,
3649
+ multi: true,
3650
+ },
3651
+ ], usesInheritance: true, ngImport: i0 }); }
3652
+ }
3653
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NvSidebarValueAccessor, decorators: [{
3654
+ type: Directive,
3655
+ args: [{
3656
+ selector: 'nv-sidebar',
3657
+ providers: [
3658
+ {
3659
+ provide: NG_VALUE_ACCESSOR,
3660
+ useExisting: NvSidebarValueAccessor,
3661
+ multi: true,
3662
+ },
3663
+ ],
3664
+ }]
3665
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { handleOpenChanged: [{
3666
+ type: HostListener,
3667
+ args: ['openChanged', ['$event']]
3668
+ }] } });
3250
3669
  class NvSplitValueAccessor extends ValueAccessor {
3251
3670
  constructor(el) {
3252
3671
  super(el);
@@ -3373,6 +3792,7 @@ const VALUE_ACCESSORS = [
3373
3792
  NvFieldtimeValueAccessor,
3374
3793
  NvNotificationValueAccessor,
3375
3794
  NvPopoverValueAccessor,
3795
+ NvSidebarValueAccessor,
3376
3796
  NvSplitValueAccessor,
3377
3797
  NvToggleValueAccessor,
3378
3798
  NvTogglebuttongroupValueAccessor,
@@ -3380,7 +3800,7 @@ const VALUE_ACCESSORS = [
3380
3800
 
3381
3801
  class NovaComponentsModule {
3382
3802
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3383
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsModule, declarations: [NvAccordion, NvAccordionItem, NvAlert, NvAvatar, NvBadge, NvBreadcrumb, NvBreadcrumbs, NvButton, NvButtongroup, NvCalendar, NvCol, NvDatagrid, NvDatagridcolumn, NvDialog, NvDialogfooter, NvDialogheader, NvFieldcheckbox, NvFielddate, NvFielddaterange, NvFielddropdown, NvFielddropdownitem, NvFielddropdownitemcheck, NvFieldmultiselect, NvFieldnumber, NvFieldpassword, NvFieldradio, NvFieldselect, NvFieldslider, NvFieldtext, NvFieldtextarea, NvFieldtime, NvIcon, NvIconbutton, NvLoader, NvMenu, NvMenuitem, NvNotification, NvNotificationcontainer, NvPopover, NvRow, NvSplit, NvStack, NvTable, NvToggle, NvTogglebutton, NvTogglebuttongroup, NvTooltip], imports: [NvDatatable], exports: [NvAccordion, NvAccordionItem, NvAlert, NvAvatar, NvBadge, NvBreadcrumb, NvBreadcrumbs, NvButton, NvButtongroup, NvCalendar, NvCol, NvDatagrid, NvDatagridcolumn, NvDialog, NvDialogfooter, NvDialogheader, NvFieldcheckbox, NvFielddate, NvFielddaterange, NvFielddropdown, NvFielddropdownitem, NvFielddropdownitemcheck, NvFieldmultiselect, NvFieldnumber, NvFieldpassword, NvFieldradio, NvFieldselect, NvFieldslider, NvFieldtext, NvFieldtextarea, NvFieldtime, NvIcon, NvIconbutton, NvLoader, NvMenu, NvMenuitem, NvNotification, NvNotificationcontainer, NvPopover, NvRow, NvSplit, NvStack, NvTable, NvToggle, NvTogglebutton, NvTogglebuttongroup, NvTooltip, NvDatatable] }); }
3803
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsModule, declarations: [NvAccordion, NvAccordionItem, NvAlert, NvAvatar, NvBadge, NvBreadcrumb, NvBreadcrumbs, NvButton, NvButtongroup, NvCalendar, NvCol, NvDatagrid, NvDatagridcolumn, NvDialog, NvDialogfooter, NvDialogheader, NvFieldcheckbox, NvFielddate, NvFielddaterange, NvFielddropdown, NvFielddropdownitem, NvFielddropdownitemcheck, NvFieldmultiselect, NvFieldnumber, NvFieldpassword, NvFieldradio, NvFieldselect, NvFieldslider, NvFieldtext, NvFieldtextarea, NvFieldtime, NvIcon, NvIconbutton, NvLoader, NvMenu, NvMenuitem, NvNotification, NvNotificationBullet, NvNotificationcontainer, NvPopover, NvRow, NvSidebar, NvSidebarcontent, NvSidebardivider, NvSidebarfooter, NvSidebargroup, NvSidebarheader, NvSidebarlogo, NvSidebarnavitem, NvSidebarnavsubitem, NvSplit, NvStack, NvTable, NvTableheader, NvToggle, NvTogglebutton, NvTogglebuttongroup, NvTooltip], imports: [NvDatatable], exports: [NvAccordion, NvAccordionItem, NvAlert, NvAvatar, NvBadge, NvBreadcrumb, NvBreadcrumbs, NvButton, NvButtongroup, NvCalendar, NvCol, NvDatagrid, NvDatagridcolumn, NvDialog, NvDialogfooter, NvDialogheader, NvFieldcheckbox, NvFielddate, NvFielddaterange, NvFielddropdown, NvFielddropdownitem, NvFielddropdownitemcheck, NvFieldmultiselect, NvFieldnumber, NvFieldpassword, NvFieldradio, NvFieldselect, NvFieldslider, NvFieldtext, NvFieldtextarea, NvFieldtime, NvIcon, NvIconbutton, NvLoader, NvMenu, NvMenuitem, NvNotification, NvNotificationBullet, NvNotificationcontainer, NvPopover, NvRow, NvSidebar, NvSidebarcontent, NvSidebardivider, NvSidebarfooter, NvSidebargroup, NvSidebarheader, NvSidebarlogo, NvSidebarnavitem, NvSidebarnavsubitem, NvSplit, NvStack, NvTable, NvTableheader, NvToggle, NvTogglebutton, NvTogglebuttongroup, NvTooltip, NvDatatable] }); }
3384
3804
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsModule, imports: [NvDatatable] }); }
3385
3805
  }
3386
3806
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsModule, decorators: [{
@@ -3393,7 +3813,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
3393
3813
  }] });
3394
3814
  class NovaComponentsValueAccessorModule {
3395
3815
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsValueAccessorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3396
- 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] }); }
3816
+ 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, NvSidebarValueAccessor, NvSplitValueAccessor, NvToggleValueAccessor, NvTogglebuttongroupValueAccessor], exports: [NvAccordionValueAccessor, NvAlertValueAccessor, NvCalendarValueAccessor, NvDatagridValueAccessor, NvDialogValueAccessor, NvFieldcheckboxValueAccessor, NvFielddateValueAccessor, NvFielddaterangeValueAccessor, NvFielddropdownValueAccessor, NvFieldmultiselectValueAccessor, NvFieldnumberValueAccessor, NvFieldpasswordValueAccessor, NvFieldradioValueAccessor, NvFieldselectValueAccessor, NvFieldsliderValueAccessor, NvFieldtextValueAccessor, NvFieldtextareaValueAccessor, NvFieldtimeValueAccessor, NvNotificationValueAccessor, NvPopoverValueAccessor, NvSidebarValueAccessor, NvSplitValueAccessor, NvToggleValueAccessor, NvTogglebuttongroupValueAccessor] }); }
3397
3817
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsValueAccessorModule }); }
3398
3818
  }
3399
3819
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NovaComponentsValueAccessorModule, decorators: [{
@@ -3428,6 +3848,7 @@ class NotificationService {
3428
3848
  }
3429
3849
  constructor() {
3430
3850
  this._notifications = new BehaviorSubject([]);
3851
+ this.timers = new Map();
3431
3852
  /**
3432
3853
  * Observable stream of active notifications.
3433
3854
  */
@@ -3465,6 +3886,14 @@ class NotificationService {
3465
3886
  clearRefs() {
3466
3887
  this.elRefs.clear();
3467
3888
  }
3889
+ /**
3890
+ * Clean up all timers and references.
3891
+ */
3892
+ ngOnDestroy() {
3893
+ this.timers.forEach((timer) => clearTimeout(timer));
3894
+ this.timers.clear();
3895
+ this.clearRefs();
3896
+ }
3468
3897
  /**
3469
3898
  * Show a new notification.
3470
3899
  *
@@ -3483,6 +3912,7 @@ class NotificationService {
3483
3912
  icon: options.icon,
3484
3913
  actions: options.actions ?? [],
3485
3914
  actionSlot: options.actionSlot,
3915
+ duration: options.duration ?? 0,
3486
3916
  createdAt: Date.now(),
3487
3917
  };
3488
3918
  const currentNotifications = this._notifications.value;
@@ -3497,6 +3927,13 @@ class NotificationService {
3497
3927
  setTimeout(() => {
3498
3928
  const ref = this.elRefs.get(id);
3499
3929
  ref?.show();
3930
+ // Set up auto-dismiss timer if duration > 0
3931
+ if (notification.duration && notification.duration > 0) {
3932
+ const timer = setTimeout(() => {
3933
+ this.dismiss(id);
3934
+ }, notification.duration);
3935
+ this.timers.set(id, timer);
3936
+ }
3500
3937
  }, 0);
3501
3938
  return id;
3502
3939
  }
@@ -3507,6 +3944,12 @@ class NotificationService {
3507
3944
  * @param {string} id The notification ID to dismiss
3508
3945
  */
3509
3946
  dismiss(id) {
3947
+ // Clear timer if exists
3948
+ const timer = this.timers.get(id);
3949
+ if (timer) {
3950
+ clearTimeout(timer);
3951
+ this.timers.delete(id);
3952
+ }
3510
3953
  this.elRefs.get(id)?.dismiss?.();
3511
3954
  }
3512
3955
  /**
@@ -3515,6 +3958,12 @@ class NotificationService {
3515
3958
  * @param {string} id The notification ID to dismiss
3516
3959
  */
3517
3960
  remove(id) {
3961
+ // Clear timer if exists
3962
+ const timer = this.timers.get(id);
3963
+ if (timer) {
3964
+ clearTimeout(timer);
3965
+ this.timers.delete(id);
3966
+ }
3518
3967
  const currentNotifications = this._notifications.value;
3519
3968
  const filteredNotifications = currentNotifications.filter((notification) => notification.id !== id);
3520
3969
  this._notifications.next(filteredNotifications);
@@ -3523,6 +3972,9 @@ class NotificationService {
3523
3972
  * Immediately remove all active notifications.
3524
3973
  */
3525
3974
  removeAll() {
3975
+ // Clear all timers
3976
+ this.timers.forEach((timer) => clearTimeout(timer));
3977
+ this.timers.clear();
3526
3978
  this._notifications.next([]);
3527
3979
  }
3528
3980
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.5", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -3721,5 +4173,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
3721
4173
  * Generated bundle index. Do not edit.
3722
4174
  */
3723
4175
 
3724
- 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, makeColumn, flexRenderComponent as nvDatatableRenderComponent };
4176
+ 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, NvNotificationBullet, NvNotificationValueAccessor, NvNotificationcontainer, NvPopover, NvPopoverValueAccessor, NvRow, NvSidebar, NvSidebarValueAccessor, NvSidebarcontent, NvSidebardivider, NvSidebarfooter, NvSidebargroup, NvSidebarheader, NvSidebarlogo, NvSidebarnavitem, NvSidebarnavsubitem, NvSplit, NvSplitValueAccessor, NvStack, NvTable, NvTableheader, NvToggle, NvToggleValueAccessor, NvTogglebutton, NvTogglebuttongroup, NvTogglebuttongroupValueAccessor, NvTooltip, VALUE_ACCESSORS, makeColumn, flexRenderComponent as nvDatatableRenderComponent };
3725
4177
  //# sourceMappingURL=nova-components.mjs.map