@acorex/components 18.5.17 → 18.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/audio-wave/lib/audio-wave.component.d.ts +5 -0
- package/button-group/lib/button-group.component.d.ts +5 -2
- package/circular-progress/lib/circular-progress.component.d.ts +21 -57
- package/data-pager/lib/data-pager-pagesize-dropdown.component.d.ts +28 -0
- package/data-pager/lib/data-pager-prev-buttons.component.d.ts +20 -0
- package/data-pager/lib/data-pager.component.d.ts +111 -0
- package/data-table/lib/columns/data-text-column.component.d.ts +58 -0
- package/data-table/lib/columns/row-command-column.component.d.ts +83 -0
- package/data-table/lib/columns/row-index-column.component.d.ts +51 -0
- package/data-table/lib/columns/row-select-column.component.d.ts +47 -0
- package/data-table/lib/data-table/data-table.component.d.ts +200 -0
- package/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.d.ts +185 -0
- package/datetime-box/lib/datetime-box.component.d.ts +59 -1
- package/datetime-input/lib/datetime-input.component.d.ts +133 -0
- package/datetime-picker/lib/datetime-picker.component.d.ts +95 -0
- package/decorators/lib/components/clear-button.component.d.ts +25 -0
- package/decorators/lib/components/close-button.component.d.ts +22 -0
- package/decorators/lib/components/generic-content.component.d.ts +4 -0
- package/decorators/lib/components/icon.component.d.ts +12 -0
- package/dialog/lib/dialog.component.d.ts +20 -0
- package/drawer/lib/drawer-container.component.d.ts +7 -0
- package/drawer/lib/drawer.component.d.ts +104 -0
- package/dropdown/lib/dropdown-box.component.d.ts +66 -0
- package/dropdown/lib/dropdown-panel.component.d.ts +85 -0
- package/dropdown-button/lib/dropdown-button.component.d.ts +38 -0
- package/esm2022/audio-wave/lib/audio-wave.component.mjs +6 -1
- package/esm2022/button-group/lib/button-group.component.mjs +6 -3
- package/esm2022/circular-progress/lib/circular-progress.component.mjs +45 -114
- package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +23 -1
- package/esm2022/data-pager/lib/data-pager-prev-buttons.component.mjs +18 -1
- package/esm2022/data-pager/lib/data-pager.component.mjs +109 -1
- package/esm2022/data-table/lib/columns/data-text-column.component.mjs +32 -1
- package/esm2022/data-table/lib/columns/row-command-column.component.mjs +63 -1
- package/esm2022/data-table/lib/columns/row-index-column.component.mjs +40 -1
- package/esm2022/data-table/lib/columns/row-select-column.component.mjs +39 -1
- package/esm2022/data-table/lib/data-table/data-table.component.mjs +183 -1
- package/esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.mjs +159 -1
- package/esm2022/datetime-box/lib/datetime-box.component.mjs +51 -2
- package/esm2022/datetime-input/lib/datetime-input.component.mjs +122 -1
- package/esm2022/datetime-picker/lib/datetime-picker.component.mjs +90 -1
- package/esm2022/decorators/lib/components/clear-button.component.mjs +26 -1
- package/esm2022/decorators/lib/components/close-button.component.mjs +23 -1
- package/esm2022/decorators/lib/components/generic-content.component.mjs +5 -1
- package/esm2022/decorators/lib/components/icon.component.mjs +13 -1
- package/esm2022/dialog/lib/dialog.component.mjs +18 -1
- package/esm2022/drawer/lib/drawer-container.component.mjs +8 -1
- package/esm2022/drawer/lib/drawer.component.mjs +102 -1
- package/esm2022/dropdown/lib/dropdown-box.component.mjs +58 -1
- package/esm2022/dropdown/lib/dropdown-panel.component.mjs +77 -1
- package/esm2022/dropdown-button/lib/dropdown-button.component.mjs +36 -1
- package/esm2022/form/lib/form-field.component.mjs +40 -1
- package/esm2022/form/lib/form.component.mjs +59 -1
- package/esm2022/form/lib/validation-summary.component.mjs +41 -1
- package/esm2022/image/lib/image.component.mjs +47 -1
- package/esm2022/label/lib/label.component.mjs +32 -1
- package/esm2022/list/lib/list.component.mjs +84 -1
- package/esm2022/loading/lib/loading-spinner.component.mjs +17 -1
- package/esm2022/loading/lib/loading.component.mjs +27 -1
- package/esm2022/popup/lib/popup.component.mjs +2 -2
- package/esm2022/progress-bar/lib/progress-bar.component.mjs +1 -1
- package/esm2022/uploader/index.mjs +5 -5
- package/esm2022/uploader/lib/{uploader-dialog-container.component.mjs → uploader-dialog-container/uploader-dialog-container.component.mjs} +2 -2
- package/esm2022/uploader/lib/uploader-drop-zone/uploader-drop-zone.component.mjs +27 -0
- package/esm2022/uploader/lib/uploader-list/uploader-list.component.mjs +26 -0
- package/esm2022/uploader/lib/uploader-zone.directive.mjs +23 -16
- package/esm2022/uploader/lib/uploader.models.mjs +6 -1
- package/esm2022/uploader/lib/uploader.module.mjs +18 -13
- package/esm2022/uploader/lib/uploader.service.mjs +14 -7
- package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.mjs +50 -10
- package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-toolbar/wysiwyg-toolbar.component.mjs +8 -16
- package/fesm2022/acorex-components-audio-wave.mjs +5 -0
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-button-group.mjs +5 -2
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-circular-progress.mjs +44 -113
- package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +147 -0
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +510 -0
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +50 -1
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +121 -0
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +89 -0
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +63 -0
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +17 -0
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +108 -0
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs +35 -0
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +133 -0
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +137 -0
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-image.mjs +46 -0
- package/fesm2022/acorex-components-image.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs +31 -0
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +83 -0
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-loading.mjs +42 -0
- package/fesm2022/acorex-components-loading.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +1 -1
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs +63 -32
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +55 -25
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/form/lib/form-field.component.d.ts +45 -0
- package/form/lib/form.component.d.ts +58 -0
- package/form/lib/validation-summary.component.d.ts +49 -0
- package/image/lib/image.component.d.ts +61 -0
- package/label/lib/label.component.d.ts +34 -0
- package/list/lib/list.component.d.ts +98 -0
- package/loading/lib/loading-spinner.component.d.ts +20 -0
- package/loading/lib/loading.component.d.ts +35 -0
- package/package.json +66 -66
- package/progress-bar/lib/progress-bar.component.d.ts +0 -1
- package/uploader/index.d.ts +4 -4
- package/uploader/lib/{uploader-drop-zone.component.d.ts → uploader-drop-zone/uploader-drop-zone.component.d.ts} +3 -1
- package/uploader/lib/{uploader-list.component.d.ts → uploader-list/uploader-list.component.d.ts} +1 -1
- package/uploader/lib/uploader-zone.directive.d.ts +1 -0
- package/uploader/lib/uploader.models.d.ts +5 -0
- package/uploader/lib/uploader.module.d.ts +4 -4
- package/uploader/lib/uploader.service.d.ts +2 -1
- package/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.d.ts +16 -3
- package/wysiwyg/lib/wysiwyg/wysiwyg-toolbar/wysiwyg-toolbar.component.d.ts +3 -4
- package/esm2022/uploader/lib/uploader-drop-zone.component.mjs +0 -18
- package/esm2022/uploader/lib/uploader-list.component.mjs +0 -26
- /package/uploader/lib/{uploader-dialog-container.component.d.ts → uploader-dialog-container/uploader-dialog-container.component.d.ts} +0 -0
|
@@ -160,24 +160,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
160
160
|
args: ['mousedown', ['$event']]
|
|
161
161
|
}] } });
|
|
162
162
|
|
|
163
|
+
/**
|
|
164
|
+
* Component for a text column in a data table, supporting header, cell, and footer templates.
|
|
165
|
+
*
|
|
166
|
+
* @category Components
|
|
167
|
+
*/
|
|
163
168
|
class AXDataTableTextColumnComponent extends AXDataTableColumnComponent {
|
|
164
169
|
constructor() {
|
|
165
170
|
super(...arguments);
|
|
171
|
+
/**
|
|
172
|
+
* Toggles text wrapping in the cell.
|
|
173
|
+
*
|
|
174
|
+
* @defaultValue false
|
|
175
|
+
*/
|
|
166
176
|
this.wrapText = false;
|
|
177
|
+
/**
|
|
178
|
+
* @ignore
|
|
179
|
+
*/
|
|
167
180
|
this.formatService = inject(AXFormatService);
|
|
168
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Returns the template used for rendering cells.
|
|
184
|
+
* Falls back to a default template if no custom template is provided.
|
|
185
|
+
*/
|
|
169
186
|
get renderCellTemplate() {
|
|
170
187
|
return this.cellTemplate ?? this._contentCellTemplate;
|
|
171
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Returns the template used for rendering the column footer,
|
|
191
|
+
* falling back to a default if not provided.
|
|
192
|
+
*/
|
|
172
193
|
get renderFooterTemplate() {
|
|
173
194
|
return this.footerTemplate ?? this._contentFooterTemplate;
|
|
174
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Retrieves the template used for rendering the column header.
|
|
198
|
+
* Falls back to a default template if none is provided.
|
|
199
|
+
*/
|
|
175
200
|
get renderHeaderTemplate() {
|
|
176
201
|
return this.headerTemplate ?? this._contentHeaderTemplate;
|
|
177
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Indicates whether loading functionality is enabled.
|
|
205
|
+
*/
|
|
178
206
|
get loadingEnabled() {
|
|
179
207
|
return true;
|
|
180
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Generates a unique name based on the `dataField` value.
|
|
211
|
+
*/
|
|
181
212
|
get name() {
|
|
182
213
|
return `cl-${this.dataField}`;
|
|
183
214
|
}
|
|
@@ -266,24 +297,50 @@ class AXBaseRowCommandColumnComponent extends AXDataTableColumnComponent {
|
|
|
266
297
|
return 'ax-command-column';
|
|
267
298
|
}
|
|
268
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* A column for displaying dropdown command buttons in a data table.
|
|
302
|
+
*
|
|
303
|
+
* @category Components
|
|
304
|
+
*/
|
|
269
305
|
class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponent {
|
|
270
306
|
constructor() {
|
|
271
307
|
super(...arguments);
|
|
308
|
+
/**
|
|
309
|
+
* @ignore
|
|
310
|
+
*/
|
|
272
311
|
this._items = [];
|
|
273
312
|
this.items = [];
|
|
274
313
|
}
|
|
314
|
+
/**
|
|
315
|
+
* Returns the template used for rendering cell content.
|
|
316
|
+
* This method provides the cell template used in the data table column, falling back to a default template if none is provided.
|
|
317
|
+
*/
|
|
275
318
|
get renderCellTemplate() {
|
|
276
319
|
return this._cellTemplate;
|
|
277
320
|
}
|
|
321
|
+
/**
|
|
322
|
+
* Returns the template used for rendering the header content.
|
|
323
|
+
* This method provides the header template used in the data table column.
|
|
324
|
+
*/
|
|
278
325
|
get renderHeaderTemplate() {
|
|
279
326
|
return this._contentHeaderTemplate;
|
|
280
327
|
}
|
|
328
|
+
/**
|
|
329
|
+
* Returns the template used for rendering the footer content.
|
|
330
|
+
* This method provides the footer template used in the data table column.
|
|
331
|
+
*/
|
|
281
332
|
get renderFooterTemplate() {
|
|
282
333
|
return this.footerTemplate ?? this._contentFooterTemplate;
|
|
283
334
|
}
|
|
335
|
+
/**
|
|
336
|
+
* Returns the name identifier for the column component.
|
|
337
|
+
*/
|
|
284
338
|
get name() {
|
|
285
339
|
return 'cl-dd-cmd';
|
|
286
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* @ignore
|
|
343
|
+
*/
|
|
287
344
|
async handleOnOpened(rowData) {
|
|
288
345
|
if (Array.isArray(this.items)) {
|
|
289
346
|
this._items = this.items;
|
|
@@ -301,9 +358,15 @@ class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumnComponen
|
|
|
301
358
|
}
|
|
302
359
|
this.cdr.detectChanges();
|
|
303
360
|
}
|
|
361
|
+
/**
|
|
362
|
+
* @ignore
|
|
363
|
+
*/
|
|
304
364
|
handleOnClosed() {
|
|
305
365
|
this._items = [];
|
|
306
366
|
}
|
|
367
|
+
/**
|
|
368
|
+
* @ignore
|
|
369
|
+
*/
|
|
307
370
|
handleOnItemClick(e, data) {
|
|
308
371
|
const args = {
|
|
309
372
|
component: this.grid,
|
|
@@ -404,23 +467,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
404
467
|
}], items: [{
|
|
405
468
|
type: Input
|
|
406
469
|
}] } });
|
|
470
|
+
/**
|
|
471
|
+
* A column for displaying command buttons in a data table.
|
|
472
|
+
*
|
|
473
|
+
* @category Components
|
|
474
|
+
*/
|
|
407
475
|
class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {
|
|
408
476
|
constructor() {
|
|
409
477
|
super(...arguments);
|
|
478
|
+
/**
|
|
479
|
+
* Defines the command items to display in the column.
|
|
480
|
+
* @defaultValue []
|
|
481
|
+
*/
|
|
410
482
|
this.items = [];
|
|
411
483
|
}
|
|
484
|
+
/**
|
|
485
|
+
* Returns the template used for rendering the cell content.
|
|
486
|
+
* Uses the specified cell template if provided; otherwise, falls back to a default template.
|
|
487
|
+
*/
|
|
412
488
|
get renderCellTemplate() {
|
|
413
489
|
return this._cellTemplate;
|
|
414
490
|
}
|
|
491
|
+
/**
|
|
492
|
+
* Returns the template used for rendering the header content.
|
|
493
|
+
* Overrides the base implementation to provide a specific template for the command column.
|
|
494
|
+
*/
|
|
415
495
|
get renderHeaderTemplate() {
|
|
416
496
|
return this._contentHeaderTemplate;
|
|
417
497
|
}
|
|
498
|
+
/**
|
|
499
|
+
* Gets the template used for rendering the footer content of the column.
|
|
500
|
+
* Returns `footerTemplate` if provided; otherwise, returns `_contentFooterTemplate`.
|
|
501
|
+
*/
|
|
418
502
|
get renderFooterTemplate() {
|
|
419
503
|
return this.footerTemplate ?? this._contentFooterTemplate;
|
|
420
504
|
}
|
|
505
|
+
/**
|
|
506
|
+
* Gets the unique name identifier for the command column.
|
|
507
|
+
*/
|
|
421
508
|
get name() {
|
|
422
509
|
return 'cl-in-cmd';
|
|
423
510
|
}
|
|
511
|
+
/**
|
|
512
|
+
* @ignore
|
|
513
|
+
*/
|
|
424
514
|
getItems(rowData) {
|
|
425
515
|
if (Array.isArray(this.items)) {
|
|
426
516
|
return this.items;
|
|
@@ -432,6 +522,9 @@ class AXRowCommandColumnComponent extends AXBaseRowCommandColumnComponent {
|
|
|
432
522
|
}
|
|
433
523
|
return [];
|
|
434
524
|
}
|
|
525
|
+
/**
|
|
526
|
+
* @ignore
|
|
527
|
+
*/
|
|
435
528
|
handleOnItemClick(e, item, data) {
|
|
436
529
|
const args = {
|
|
437
530
|
component: this.grid,
|
|
@@ -513,27 +606,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
513
606
|
type: Input
|
|
514
607
|
}] } });
|
|
515
608
|
|
|
609
|
+
/**
|
|
610
|
+
* Component for displaying row indices in a data table column.
|
|
611
|
+
*
|
|
612
|
+
* @category Components
|
|
613
|
+
*/
|
|
516
614
|
class AXRowIndexColumnComponent extends AXDataTableColumnComponent {
|
|
517
615
|
constructor() {
|
|
518
616
|
super(...arguments);
|
|
519
617
|
this.grid = inject(AXBaseDataTable);
|
|
520
618
|
this.unsubscriber = inject(AXUnsubscriber);
|
|
619
|
+
/**
|
|
620
|
+
* Determines whether the index should be zero-padded.
|
|
621
|
+
* @defaultValue false
|
|
622
|
+
*/
|
|
521
623
|
this.padZero = false;
|
|
624
|
+
/**
|
|
625
|
+
* @ignore
|
|
626
|
+
*/
|
|
522
627
|
this.formatCount = 1;
|
|
628
|
+
/**
|
|
629
|
+
* Disables sorting for this column.
|
|
630
|
+
*
|
|
631
|
+
* @defaultValue false
|
|
632
|
+
*/
|
|
523
633
|
this.allowSorting = false;
|
|
524
634
|
}
|
|
635
|
+
/**
|
|
636
|
+
* Provides the cell template for custom rendering if defined.
|
|
637
|
+
*/
|
|
525
638
|
get renderCellTemplate() {
|
|
526
639
|
return this._cellTemplate;
|
|
527
640
|
}
|
|
641
|
+
/**
|
|
642
|
+
* Provides the header template for custom rendering if defined.
|
|
643
|
+
*/
|
|
528
644
|
get renderHeaderTemplate() {
|
|
529
645
|
return this._contentHeaderTemplate;
|
|
530
646
|
}
|
|
647
|
+
/**
|
|
648
|
+
* Returns the template used for rendering the footer of the column.
|
|
649
|
+
* This method returns the `footerTemplate` if it is provided; otherwise, it defaults to the `_contentFooterTemplate`. This allows for custom footer content while falling back to a default template if no custom template is specified.
|
|
650
|
+
*/
|
|
531
651
|
get renderFooterTemplate() {
|
|
532
652
|
return this.footerTemplate ?? this._contentFooterTemplate;
|
|
533
653
|
}
|
|
654
|
+
/**
|
|
655
|
+
* Gets the unique identifier name for the column.
|
|
656
|
+
*/
|
|
534
657
|
get name() {
|
|
535
658
|
return 'cl-inx';
|
|
536
659
|
}
|
|
660
|
+
/**
|
|
661
|
+
* @ignore
|
|
662
|
+
*/
|
|
537
663
|
ngOnInit() {
|
|
538
664
|
if (this.padZero) {
|
|
539
665
|
this.grid.dataSource.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {
|
|
@@ -541,9 +667,15 @@ class AXRowIndexColumnComponent extends AXDataTableColumnComponent {
|
|
|
541
667
|
});
|
|
542
668
|
}
|
|
543
669
|
}
|
|
670
|
+
/**
|
|
671
|
+
* Indicates whether loading is enabled for this component.
|
|
672
|
+
*/
|
|
544
673
|
get loadingEnabled() {
|
|
545
674
|
return false;
|
|
546
675
|
}
|
|
676
|
+
/**
|
|
677
|
+
* Gets the CSS class applied to the component.
|
|
678
|
+
*/
|
|
547
679
|
get cssClass() {
|
|
548
680
|
return 'ax-index-column';
|
|
549
681
|
}
|
|
@@ -595,36 +727,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
595
727
|
type: Input
|
|
596
728
|
}] } });
|
|
597
729
|
|
|
730
|
+
/**
|
|
731
|
+
* Column component that provides checkboxes for row selection in a data table.
|
|
732
|
+
*
|
|
733
|
+
* @category Components
|
|
734
|
+
*/
|
|
598
735
|
class AXRowSelectColumnComponent extends AXDataTableColumnComponent {
|
|
599
736
|
constructor() {
|
|
600
737
|
super(...arguments);
|
|
601
738
|
this.grid = inject(AXBaseDataTable);
|
|
602
739
|
}
|
|
740
|
+
/**
|
|
741
|
+
* Gets the template used to render cells in the column.
|
|
742
|
+
*/
|
|
603
743
|
get renderCellTemplate() {
|
|
604
744
|
return this._cellTemplate;
|
|
605
745
|
}
|
|
746
|
+
/**
|
|
747
|
+
* Gets the template used to render the column header.
|
|
748
|
+
*/
|
|
606
749
|
get renderHeaderTemplate() {
|
|
607
750
|
return this._contentHeaderTemplate;
|
|
608
751
|
}
|
|
752
|
+
/**
|
|
753
|
+
* Gets the template used to render the column footer.
|
|
754
|
+
*/
|
|
609
755
|
get renderFooterTemplate() {
|
|
610
756
|
return this._contentFooterTemplate;
|
|
611
757
|
}
|
|
758
|
+
/**
|
|
759
|
+
* Gets the unique identifier for the column.
|
|
760
|
+
*/
|
|
612
761
|
get name() {
|
|
613
762
|
return 'cl-select';
|
|
614
763
|
}
|
|
764
|
+
/**
|
|
765
|
+
* @ignore
|
|
766
|
+
*/
|
|
615
767
|
getDataSourceKey() {
|
|
616
768
|
return this.grid.dataSource.config.key || 'id';
|
|
617
769
|
}
|
|
770
|
+
/**
|
|
771
|
+
* @ignore
|
|
772
|
+
*/
|
|
618
773
|
isSelected(item) {
|
|
619
774
|
const key = this.getDataSourceKey();
|
|
620
775
|
const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));
|
|
621
776
|
return item != null && selectedRowKeys.includes(typeof item === 'object' ? item[key] : item);
|
|
622
777
|
}
|
|
778
|
+
/**
|
|
779
|
+
* @ignore
|
|
780
|
+
*/
|
|
623
781
|
checkAllSelected(rows) {
|
|
624
782
|
const key = this.getDataSourceKey();
|
|
625
783
|
const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));
|
|
626
784
|
return rows[0] && rows.every((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element));
|
|
627
785
|
}
|
|
786
|
+
/**
|
|
787
|
+
* @ignore
|
|
788
|
+
*/
|
|
628
789
|
checkAnySelected(rows) {
|
|
629
790
|
const key = this.getDataSourceKey();
|
|
630
791
|
const selectedRowKeys = this.grid.selectedRows.map((sr) => (typeof sr === 'object' ? sr[key] : sr));
|
|
@@ -632,6 +793,9 @@ class AXRowSelectColumnComponent extends AXDataTableColumnComponent {
|
|
|
632
793
|
!this.checkAllSelected(rows) &&
|
|
633
794
|
rows.some((element) => selectedRowKeys.includes(typeof element === 'object' ? element[key] : element)));
|
|
634
795
|
}
|
|
796
|
+
/**
|
|
797
|
+
* @ignore
|
|
798
|
+
*/
|
|
635
799
|
handleChange(item) {
|
|
636
800
|
if (this.isSelected(item)) {
|
|
637
801
|
this.grid.unSelectRows(item);
|
|
@@ -640,6 +804,9 @@ class AXRowSelectColumnComponent extends AXDataTableColumnComponent {
|
|
|
640
804
|
this.grid.selectRows(item);
|
|
641
805
|
}
|
|
642
806
|
}
|
|
807
|
+
/**
|
|
808
|
+
* @ignore
|
|
809
|
+
*/
|
|
643
810
|
handleSelectAll(rows) {
|
|
644
811
|
if (this.checkAllSelected(rows)) {
|
|
645
812
|
this.grid.unSelectRows(...rows);
|
|
@@ -648,6 +815,9 @@ class AXRowSelectColumnComponent extends AXDataTableColumnComponent {
|
|
|
648
815
|
this.grid.selectRows(...rows);
|
|
649
816
|
}
|
|
650
817
|
}
|
|
818
|
+
/**
|
|
819
|
+
* Indicates whether loading is enabled for the column.
|
|
820
|
+
*/
|
|
651
821
|
get loadingEnabled() {
|
|
652
822
|
return false;
|
|
653
823
|
}
|
|
@@ -721,19 +891,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
721
891
|
args: ['footer']
|
|
722
892
|
}] } });
|
|
723
893
|
|
|
894
|
+
/**
|
|
895
|
+
* Component for displaying and managing a data table with advanced features.
|
|
896
|
+
*
|
|
897
|
+
* @category Components
|
|
898
|
+
*/
|
|
724
899
|
class AXDataTableComponent extends AXBaseDataTable {
|
|
725
900
|
constructor() {
|
|
726
901
|
super(...arguments);
|
|
727
902
|
this._unsubscriber = inject(AXUnsubscriber);
|
|
728
903
|
this._zone = inject(NgZone);
|
|
904
|
+
/**
|
|
905
|
+
* @ignore
|
|
906
|
+
*/
|
|
729
907
|
this.displayedRows = signal([]);
|
|
908
|
+
/**
|
|
909
|
+
* @ignore
|
|
910
|
+
*/
|
|
730
911
|
this.page = signal(0);
|
|
912
|
+
/**
|
|
913
|
+
* @ignore
|
|
914
|
+
*/
|
|
731
915
|
this.pageSize = signal(0);
|
|
916
|
+
/**
|
|
917
|
+
* @ignore
|
|
918
|
+
*/
|
|
732
919
|
this.isLoading = signal(true);
|
|
920
|
+
/**
|
|
921
|
+
* @ignore
|
|
922
|
+
*/
|
|
733
923
|
this.columnsList = signal([]);
|
|
924
|
+
/**
|
|
925
|
+
* @ignore
|
|
926
|
+
*/
|
|
734
927
|
this.endFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'end'));
|
|
928
|
+
/**
|
|
929
|
+
* @ignore
|
|
930
|
+
*/
|
|
735
931
|
this.startFixedColumnsList = computed(() => this.columnsList().filter((c) => c.fixed === 'start'));
|
|
932
|
+
/**
|
|
933
|
+
* @ignore
|
|
934
|
+
*/
|
|
736
935
|
this.normalColumnsList = computed(() => this.columnsList().filter((c) => c.fixed !== 'end' && c.fixed !== 'start'));
|
|
936
|
+
/**
|
|
937
|
+
* @ignore
|
|
938
|
+
*/
|
|
737
939
|
this.resizeColumnProp = {
|
|
738
940
|
startX: 0,
|
|
739
941
|
startWidth: 0,
|
|
@@ -741,35 +943,129 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
741
943
|
newColumnWidth: 0,
|
|
742
944
|
thElement: null,
|
|
743
945
|
};
|
|
946
|
+
/**
|
|
947
|
+
* @ignore
|
|
948
|
+
*/
|
|
744
949
|
this.hasItems = false;
|
|
950
|
+
/**
|
|
951
|
+
* @ignore
|
|
952
|
+
*/
|
|
745
953
|
this.totalRows = 0;
|
|
954
|
+
/**
|
|
955
|
+
* @ignore
|
|
956
|
+
*/
|
|
746
957
|
this.currentPage = 0;
|
|
958
|
+
/**
|
|
959
|
+
* @ignore
|
|
960
|
+
*/
|
|
747
961
|
this.totalPages = 0;
|
|
962
|
+
/**
|
|
963
|
+
* @ignore
|
|
964
|
+
*/
|
|
748
965
|
this.startRowIndex = 0;
|
|
966
|
+
/**
|
|
967
|
+
* Defines if alternative row styling should be applied.
|
|
968
|
+
*
|
|
969
|
+
* @defaultValue `true`
|
|
970
|
+
*/
|
|
749
971
|
this.alternative = true;
|
|
972
|
+
/**
|
|
973
|
+
* Indicates if the table header should be displayed.
|
|
974
|
+
*
|
|
975
|
+
* @defaultValue `true`
|
|
976
|
+
*/
|
|
750
977
|
this.showHeader = true;
|
|
978
|
+
/**
|
|
979
|
+
* Indicates if the table header should be fixed.
|
|
980
|
+
*
|
|
981
|
+
* @defaultValue `true`
|
|
982
|
+
*/
|
|
751
983
|
this.fixedHeader = true;
|
|
984
|
+
/**
|
|
985
|
+
* Indicates if the table footer should be displayed.
|
|
986
|
+
*
|
|
987
|
+
* @defaultValue `false`
|
|
988
|
+
*/
|
|
752
989
|
this.showFooter = false;
|
|
990
|
+
/**
|
|
991
|
+
* Indicates if the table footer should be fixed.
|
|
992
|
+
*
|
|
993
|
+
* @defaultValue `true`
|
|
994
|
+
*/
|
|
753
995
|
this.fixedFooter = true;
|
|
996
|
+
/**
|
|
997
|
+
* Specifies the height of each item in the table.
|
|
998
|
+
*
|
|
999
|
+
* @defaultValue `40`
|
|
1000
|
+
*/
|
|
754
1001
|
this.itemHeight = 40;
|
|
1002
|
+
/**
|
|
1003
|
+
* Enables or disables row reordering.
|
|
1004
|
+
*
|
|
1005
|
+
* @defaultValue `false`
|
|
1006
|
+
*/
|
|
755
1007
|
this.allowReordering = false;
|
|
1008
|
+
/**
|
|
1009
|
+
* Enables or disables paging.
|
|
1010
|
+
*
|
|
1011
|
+
* @defaultValue `true`
|
|
1012
|
+
*/
|
|
756
1013
|
this.paging = true;
|
|
1014
|
+
/**
|
|
1015
|
+
* Specifies how data should be fetched.
|
|
1016
|
+
*
|
|
1017
|
+
* @defaultValue `'auto'`
|
|
1018
|
+
*/
|
|
757
1019
|
this.fetchDataMode = 'auto';
|
|
1020
|
+
/**
|
|
1021
|
+
* Configuration for loading state.
|
|
1022
|
+
*
|
|
1023
|
+
* @defaultValue `{ enabled: true, animation: true }`
|
|
1024
|
+
*/
|
|
758
1025
|
this.loading = {
|
|
759
1026
|
enabled: true,
|
|
760
1027
|
animation: true,
|
|
761
1028
|
};
|
|
1029
|
+
/**
|
|
1030
|
+
* Emits when the focused row changes.
|
|
1031
|
+
*
|
|
1032
|
+
* @event
|
|
1033
|
+
*/
|
|
762
1034
|
this.focusedRowChange = new EventEmitter();
|
|
1035
|
+
/**
|
|
1036
|
+
* Emits when a row is clicked.
|
|
1037
|
+
*
|
|
1038
|
+
* @event onRowClick
|
|
1039
|
+
*/
|
|
763
1040
|
this.onRowClick = new EventEmitter();
|
|
1041
|
+
/**
|
|
1042
|
+
* Emits when a row is double-clicked.
|
|
1043
|
+
*
|
|
1044
|
+
* @event onRowDbClick
|
|
1045
|
+
*/
|
|
764
1046
|
this.onRowDbClick = new EventEmitter();
|
|
1047
|
+
/**
|
|
1048
|
+
* Emits when the order of columns changes.
|
|
1049
|
+
*
|
|
1050
|
+
* @event onColumnsOrderChanged
|
|
1051
|
+
*/
|
|
765
1052
|
this.onColumnsOrderChanged = new EventEmitter();
|
|
1053
|
+
/**
|
|
1054
|
+
* @ignore
|
|
1055
|
+
*/
|
|
766
1056
|
this.clickSubject = new Subject();
|
|
1057
|
+
/**
|
|
1058
|
+
* @ignore
|
|
1059
|
+
*/
|
|
767
1060
|
this.onResizeColumnMove = (event) => {
|
|
768
1061
|
const diffX = event.pageX - this.resizeColumnProp.startX;
|
|
769
1062
|
const newWidth = this.rtl ? this.resizeColumnProp.startWidth - diffX : this.resizeColumnProp.startWidth + diffX;
|
|
770
1063
|
this.resizeColumnProp.thElement.style.width = `${Math.max(100, newWidth)}px`;
|
|
771
1064
|
this.resizeColumnProp.thElement.setAttribute('new-width', `${newWidth}`);
|
|
772
1065
|
};
|
|
1066
|
+
/**
|
|
1067
|
+
* @ignore
|
|
1068
|
+
*/
|
|
773
1069
|
this.onResizeColumnEnd = () => {
|
|
774
1070
|
document.removeEventListener('mousemove', this.onResizeColumnMove);
|
|
775
1071
|
document.removeEventListener('mouseup', this.onResizeColumnEnd);
|
|
@@ -778,13 +1074,24 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
778
1074
|
this.resetResizingProcess();
|
|
779
1075
|
};
|
|
780
1076
|
}
|
|
1077
|
+
/**
|
|
1078
|
+
* Gets the currently focused row.
|
|
1079
|
+
*/
|
|
781
1080
|
get focusedRow() {
|
|
782
1081
|
return this._focusedRow;
|
|
783
1082
|
}
|
|
1083
|
+
/**
|
|
1084
|
+
* Sets the currently focused row and emits the change event.
|
|
1085
|
+
*
|
|
1086
|
+
* @param v - The row to be focused.
|
|
1087
|
+
*/
|
|
784
1088
|
set focusedRow(v) {
|
|
785
1089
|
this._focusedRow = v;
|
|
786
1090
|
this.focusedRowChange.emit(v);
|
|
787
1091
|
}
|
|
1092
|
+
/**
|
|
1093
|
+
* @ignore
|
|
1094
|
+
*/
|
|
788
1095
|
ngOnInit() {
|
|
789
1096
|
super.ngOnInit();
|
|
790
1097
|
this.rtl = AXHtmlUtil.isRtl(this.getHostElement());
|
|
@@ -810,6 +1117,9 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
810
1117
|
this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);
|
|
811
1118
|
});
|
|
812
1119
|
}
|
|
1120
|
+
/**
|
|
1121
|
+
* @ignore
|
|
1122
|
+
*/
|
|
813
1123
|
ngAfterViewInit() {
|
|
814
1124
|
this.calculateStickyColumnsPositions();
|
|
815
1125
|
this.columnsList.set(this.columns.toArray());
|
|
@@ -817,6 +1127,9 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
817
1127
|
this.columnsList.set(cols.toArray());
|
|
818
1128
|
});
|
|
819
1129
|
}
|
|
1130
|
+
/**
|
|
1131
|
+
* @ignore
|
|
1132
|
+
*/
|
|
820
1133
|
drop(event) {
|
|
821
1134
|
const clonedColumns = [...this.columnsList()];
|
|
822
1135
|
moveItemInArray(clonedColumns, event.previousIndex, event.currentIndex);
|
|
@@ -827,10 +1140,16 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
827
1140
|
isUserInteraction: true,
|
|
828
1141
|
});
|
|
829
1142
|
}
|
|
1143
|
+
/**
|
|
1144
|
+
* @ignore
|
|
1145
|
+
*/
|
|
830
1146
|
handleRowClick(event, item) {
|
|
831
1147
|
this.handleRowSingleClick(event, item);
|
|
832
1148
|
this.clickSubject.next({ event, item });
|
|
833
1149
|
}
|
|
1150
|
+
/**
|
|
1151
|
+
* @ignore
|
|
1152
|
+
*/
|
|
834
1153
|
handleRowSingleClick(event, item) {
|
|
835
1154
|
if (this.focusedRow == item) {
|
|
836
1155
|
this.focusedRow = null;
|
|
@@ -845,6 +1164,9 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
845
1164
|
isUserInteraction: true,
|
|
846
1165
|
});
|
|
847
1166
|
}
|
|
1167
|
+
/**
|
|
1168
|
+
* @ignore
|
|
1169
|
+
*/
|
|
848
1170
|
onPageChanged(event) {
|
|
849
1171
|
if (event.isUserInteraction) {
|
|
850
1172
|
const pageChanged = event.page - 1 != this.page();
|
|
@@ -863,6 +1185,9 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
863
1185
|
}
|
|
864
1186
|
}
|
|
865
1187
|
}
|
|
1188
|
+
/**
|
|
1189
|
+
* @ignore
|
|
1190
|
+
*/
|
|
866
1191
|
handleRowDoubleClick(e, item) {
|
|
867
1192
|
this.focusedRow = item;
|
|
868
1193
|
//
|
|
@@ -872,6 +1197,14 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
872
1197
|
isUserInteraction: true,
|
|
873
1198
|
});
|
|
874
1199
|
}
|
|
1200
|
+
/**
|
|
1201
|
+
* Handles the click event on a column header.
|
|
1202
|
+
* Toggles the sorting direction or removes the sort if already sorted.
|
|
1203
|
+
*
|
|
1204
|
+
* @param e - The mouse event triggered by the click.
|
|
1205
|
+
* @param column - The column that was clicked.
|
|
1206
|
+
* @ignore
|
|
1207
|
+
*/
|
|
875
1208
|
handleColumnClick(e, column) {
|
|
876
1209
|
if (column instanceof AXDataTableTextColumnComponent) {
|
|
877
1210
|
const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);
|
|
@@ -892,6 +1225,9 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
892
1225
|
this.refresh();
|
|
893
1226
|
}
|
|
894
1227
|
}
|
|
1228
|
+
/**
|
|
1229
|
+
* @ignore
|
|
1230
|
+
*/
|
|
895
1231
|
getSort(column) {
|
|
896
1232
|
if (column instanceof AXDataTableTextColumnComponent) {
|
|
897
1233
|
const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);
|
|
@@ -899,15 +1235,25 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
899
1235
|
}
|
|
900
1236
|
return undefined;
|
|
901
1237
|
}
|
|
1238
|
+
/**
|
|
1239
|
+
* Refreshes the data in the data source and resets the data pager to the first page.
|
|
1240
|
+
* @ignore
|
|
1241
|
+
*/
|
|
902
1242
|
refresh() {
|
|
903
1243
|
this.dataSource.refresh();
|
|
904
1244
|
if (this.dataPager) {
|
|
905
1245
|
this.dataPager.goFirstPage();
|
|
906
1246
|
}
|
|
907
1247
|
}
|
|
1248
|
+
/**
|
|
1249
|
+
* @ignore
|
|
1250
|
+
*/
|
|
908
1251
|
calculateRowIndex(index) {
|
|
909
1252
|
return this.dataSource.pageSize * this.page() + index;
|
|
910
1253
|
}
|
|
1254
|
+
/**
|
|
1255
|
+
* @ignore
|
|
1256
|
+
*/
|
|
911
1257
|
onResizeColumnStart(event, columnIndex) {
|
|
912
1258
|
event.preventDefault();
|
|
913
1259
|
event.stopPropagation();
|
|
@@ -920,6 +1266,9 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
920
1266
|
document.addEventListener('mouseup', this.onResizeColumnEnd);
|
|
921
1267
|
});
|
|
922
1268
|
}
|
|
1269
|
+
/**
|
|
1270
|
+
* @ignore
|
|
1271
|
+
*/
|
|
923
1272
|
resetResizingProcess() {
|
|
924
1273
|
this.resizeColumnProp.thElement.removeAttribute('new-width');
|
|
925
1274
|
this.resizeColumnProp = {
|
|
@@ -930,6 +1279,9 @@ class AXDataTableComponent extends AXBaseDataTable {
|
|
|
930
1279
|
thElement: null,
|
|
931
1280
|
};
|
|
932
1281
|
}
|
|
1282
|
+
/**
|
|
1283
|
+
* @ignore
|
|
1284
|
+
*/
|
|
933
1285
|
calculateStickyColumnsPositions() {
|
|
934
1286
|
let totalWidth = 0;
|
|
935
1287
|
let accumulatedWidthFromStart = 0;
|
|
@@ -1028,51 +1380,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
1028
1380
|
args: [AXDataTableColumnComponent]
|
|
1029
1381
|
}] } });
|
|
1030
1382
|
|
|
1383
|
+
/**
|
|
1384
|
+
* Component for a data table with infinite scrolling capabilities.
|
|
1385
|
+
*
|
|
1386
|
+
* @category Components
|
|
1387
|
+
*/
|
|
1031
1388
|
class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
1032
1389
|
constructor() {
|
|
1033
1390
|
super(...arguments);
|
|
1034
1391
|
this.ngZone = inject(NgZone);
|
|
1392
|
+
/**
|
|
1393
|
+
* Emits an event when the page changes.
|
|
1394
|
+
*
|
|
1395
|
+
* @event
|
|
1396
|
+
*/
|
|
1035
1397
|
this.onPageChanged = new EventEmitter();
|
|
1398
|
+
/**
|
|
1399
|
+
* @ignore
|
|
1400
|
+
*/
|
|
1036
1401
|
this.clickSubject = new Subject();
|
|
1402
|
+
/**
|
|
1403
|
+
* Emits an event when a row is clicked.
|
|
1404
|
+
*
|
|
1405
|
+
* @event
|
|
1406
|
+
*/
|
|
1037
1407
|
this.onRowClick = new EventEmitter();
|
|
1408
|
+
/**
|
|
1409
|
+
* Emits an event when a row is double-clicked.
|
|
1410
|
+
*
|
|
1411
|
+
* @event
|
|
1412
|
+
*/
|
|
1038
1413
|
this.onRowDbClick = new EventEmitter();
|
|
1414
|
+
/**
|
|
1415
|
+
* Controls the visibility of the table header.
|
|
1416
|
+
*
|
|
1417
|
+
* @defaultValue true
|
|
1418
|
+
*/
|
|
1039
1419
|
this.showHeader = true;
|
|
1420
|
+
/**
|
|
1421
|
+
* Defines the mode for fetching data.
|
|
1422
|
+
*
|
|
1423
|
+
* @defaultValue 'auto'
|
|
1424
|
+
*/
|
|
1040
1425
|
this.fetchDataMode = 'auto';
|
|
1426
|
+
/**
|
|
1427
|
+
* Configuration for the loading state of the data table.
|
|
1428
|
+
*
|
|
1429
|
+
* @defaultValue { enabled: true, animation: true }
|
|
1430
|
+
*/
|
|
1041
1431
|
this.loading = {
|
|
1042
1432
|
enabled: true,
|
|
1043
1433
|
animation: true,
|
|
1044
1434
|
};
|
|
1435
|
+
/**
|
|
1436
|
+
* @ignore
|
|
1437
|
+
*/
|
|
1045
1438
|
this.isLoading = signal(true);
|
|
1439
|
+
/**
|
|
1440
|
+
* @ignore
|
|
1441
|
+
*/
|
|
1046
1442
|
this.hasItems = false;
|
|
1443
|
+
/**
|
|
1444
|
+
* @ignore
|
|
1445
|
+
*/
|
|
1047
1446
|
this.totalRows = 0;
|
|
1447
|
+
/**
|
|
1448
|
+
* @ignore
|
|
1449
|
+
*/
|
|
1048
1450
|
this.currentPage = 0;
|
|
1451
|
+
/**
|
|
1452
|
+
* @ignore
|
|
1453
|
+
*/
|
|
1049
1454
|
this.totalPages = 0;
|
|
1455
|
+
/**
|
|
1456
|
+
* @ignore
|
|
1457
|
+
*/
|
|
1050
1458
|
this.startRowIndex = 0;
|
|
1459
|
+
/**
|
|
1460
|
+
* @ignore
|
|
1461
|
+
*/
|
|
1051
1462
|
this.lastIndex = 0;
|
|
1463
|
+
/**
|
|
1464
|
+
* Event emitted when the focused row changes.
|
|
1465
|
+
*
|
|
1466
|
+
* @event
|
|
1467
|
+
*/
|
|
1052
1468
|
this.focusedRowChange = new EventEmitter();
|
|
1469
|
+
/**
|
|
1470
|
+
* Defines the height of each item in the table.
|
|
1471
|
+
*
|
|
1472
|
+
* @default 40
|
|
1473
|
+
*/
|
|
1053
1474
|
this.itemHeight = 40;
|
|
1475
|
+
/**
|
|
1476
|
+
* @ignore
|
|
1477
|
+
*/
|
|
1054
1478
|
this.width = '100%';
|
|
1479
|
+
/**
|
|
1480
|
+
* @ignore
|
|
1481
|
+
*/
|
|
1055
1482
|
this.height = '100%';
|
|
1483
|
+
/**
|
|
1484
|
+
* Emitted when the scroll index changes in the table.
|
|
1485
|
+
*
|
|
1486
|
+
* @event
|
|
1487
|
+
*/
|
|
1056
1488
|
this.onScrolledIndexChanged = new EventEmitter();
|
|
1057
1489
|
}
|
|
1490
|
+
/**
|
|
1491
|
+
* @ignore
|
|
1492
|
+
*/
|
|
1058
1493
|
startFixedColumn() {
|
|
1059
1494
|
return this.columns?.toArray().filter((c) => c.fixed == 'start') ?? [];
|
|
1060
1495
|
}
|
|
1496
|
+
/**
|
|
1497
|
+
* @ignore
|
|
1498
|
+
*/
|
|
1061
1499
|
endFixedColumn() {
|
|
1062
1500
|
return this.columns?.toArray().filter((c) => c.fixed == 'end') ?? [];
|
|
1063
1501
|
}
|
|
1502
|
+
/**
|
|
1503
|
+
* @ignore
|
|
1504
|
+
*/
|
|
1064
1505
|
notFixedColumn() {
|
|
1065
1506
|
return this.columns?.toArray().filter((c) => !c.fixed) ?? [];
|
|
1066
1507
|
}
|
|
1508
|
+
/**
|
|
1509
|
+
* @ignore
|
|
1510
|
+
*/
|
|
1067
1511
|
notFixedColumnCount() {
|
|
1068
1512
|
return this.columns?.toArray().filter((c) => !c.fixed).length ?? 0;
|
|
1069
1513
|
}
|
|
1514
|
+
/**
|
|
1515
|
+
* @ignore
|
|
1516
|
+
*/
|
|
1070
1517
|
fixedColumnCount() {
|
|
1071
1518
|
return this.columns?.toArray().filter((c) => c.fixed).length ?? 0;
|
|
1072
1519
|
}
|
|
1520
|
+
/**
|
|
1521
|
+
* Retrieves the currently focused row.
|
|
1522
|
+
*/
|
|
1073
1523
|
get focusedRow() {
|
|
1074
1524
|
return this._focusedRow;
|
|
1075
1525
|
}
|
|
1526
|
+
/**
|
|
1527
|
+
* Sets the currently focused row and emits a change event.
|
|
1528
|
+
*
|
|
1529
|
+
* @param v - The row data to be set as focused.
|
|
1530
|
+
*/
|
|
1076
1531
|
set focusedRow(v) {
|
|
1077
1532
|
this._focusedRow = v;
|
|
1078
1533
|
this.focusedRowChange.emit(v);
|
|
@@ -1080,6 +1535,9 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1080
1535
|
trackByIdx(i) {
|
|
1081
1536
|
return i;
|
|
1082
1537
|
}
|
|
1538
|
+
/**
|
|
1539
|
+
* @ignore
|
|
1540
|
+
*/
|
|
1083
1541
|
ngOnInit() {
|
|
1084
1542
|
super.ngOnInit();
|
|
1085
1543
|
this.listDataSource = new AXListDataSource({
|
|
@@ -1102,6 +1560,9 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1102
1560
|
this.handleRowDoubleClick(clickArray[0].event, clickArray[0].item);
|
|
1103
1561
|
});
|
|
1104
1562
|
}
|
|
1563
|
+
/**
|
|
1564
|
+
* @ignore
|
|
1565
|
+
*/
|
|
1105
1566
|
_handleOnscrolledIndexChange(e) {
|
|
1106
1567
|
this.lastIndex = e;
|
|
1107
1568
|
this.onScrolledIndexChanged.emit({
|
|
@@ -1110,6 +1571,9 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1110
1571
|
isUserInteraction: true,
|
|
1111
1572
|
});
|
|
1112
1573
|
}
|
|
1574
|
+
/**
|
|
1575
|
+
* @ignore
|
|
1576
|
+
*/
|
|
1113
1577
|
ngDoCheck() {
|
|
1114
1578
|
//this.copyFixedColumns();
|
|
1115
1579
|
this.updateHScroll();
|
|
@@ -1119,6 +1583,9 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1119
1583
|
//
|
|
1120
1584
|
this.updateTotalCount();
|
|
1121
1585
|
}
|
|
1586
|
+
/**
|
|
1587
|
+
* @ignore
|
|
1588
|
+
*/
|
|
1122
1589
|
updateTotalCount() {
|
|
1123
1590
|
this.startRowIndex = this.lastIndex;
|
|
1124
1591
|
if (this.startRowIndex < 1)
|
|
@@ -1126,15 +1593,24 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1126
1593
|
if (this.startRowIndex > this.totalRows)
|
|
1127
1594
|
this.startRowIndex = this.totalRows;
|
|
1128
1595
|
}
|
|
1596
|
+
/**
|
|
1597
|
+
* @ignore
|
|
1598
|
+
*/
|
|
1129
1599
|
updateHeight() {
|
|
1130
1600
|
this.height = `calc(100% - ${(this.headerContainer?.nativeElement.clientHeight ?? 0) + (this.footerContainer?.nativeElement.clientHeight ?? 0)}px)`;
|
|
1131
1601
|
}
|
|
1602
|
+
/**
|
|
1603
|
+
* @ignore
|
|
1604
|
+
*/
|
|
1132
1605
|
updateWidth() {
|
|
1133
1606
|
if (this.columns && this.columns.length) {
|
|
1134
1607
|
const sumPx = sum(this.columns.toArray().map((c) => (typeof c.width == 'number' ? c.width : Number(c.width.replace('px', '')))));
|
|
1135
1608
|
this.width = `${Math.max(sumPx, this.getHostElement().clientWidth - 5)}px`;
|
|
1136
1609
|
}
|
|
1137
1610
|
}
|
|
1611
|
+
/**
|
|
1612
|
+
* @ignore
|
|
1613
|
+
*/
|
|
1138
1614
|
updateHScroll() {
|
|
1139
1615
|
this.ngZone.runOutsideAngular(() => {
|
|
1140
1616
|
if (this.headerContainer) {
|
|
@@ -1144,6 +1620,9 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1144
1620
|
}
|
|
1145
1621
|
});
|
|
1146
1622
|
}
|
|
1623
|
+
/**
|
|
1624
|
+
* @ignore
|
|
1625
|
+
*/
|
|
1147
1626
|
// Function to copy fixed columns
|
|
1148
1627
|
copyFixedColumns() {
|
|
1149
1628
|
const originalRows = Array.from(this.viewport._contentWrapper.nativeElement.querySelectorAll('tr'));
|
|
@@ -1161,19 +1640,34 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1161
1640
|
const scrollTop = this.getHostElement().querySelector('.cdk-virtual-scrollable').scrollTop;
|
|
1162
1641
|
fixedColumnTable.style.transform = `translateY(${-scrollTop}px)`;
|
|
1163
1642
|
}
|
|
1643
|
+
/**
|
|
1644
|
+
* Updates the viewport by checking its size and scrolling to the last index.
|
|
1645
|
+
* Marks the component for change detection.
|
|
1646
|
+
* @ignore
|
|
1647
|
+
*/
|
|
1164
1648
|
render() {
|
|
1165
1649
|
this.viewport.checkViewportSize();
|
|
1166
1650
|
this.viewport.scrollToIndex(this.lastIndex);
|
|
1167
1651
|
this.cdr.markForCheck();
|
|
1168
1652
|
}
|
|
1653
|
+
/**
|
|
1654
|
+
* Resets the index to zero and refreshes the data source.
|
|
1655
|
+
* @ignore
|
|
1656
|
+
*/
|
|
1169
1657
|
refresh() {
|
|
1170
1658
|
this.lastIndex = 0;
|
|
1171
1659
|
this.listDataSource.refresh();
|
|
1172
1660
|
}
|
|
1661
|
+
/**
|
|
1662
|
+
* @ignore
|
|
1663
|
+
*/
|
|
1173
1664
|
handleRowClick(event, item) {
|
|
1174
1665
|
this.handleRowSingleClick(event, item);
|
|
1175
1666
|
this.clickSubject.next({ event, item });
|
|
1176
1667
|
}
|
|
1668
|
+
/**
|
|
1669
|
+
* @ignore
|
|
1670
|
+
*/
|
|
1177
1671
|
handleRowSingleClick(event, item) {
|
|
1178
1672
|
if (this.focusedRow == item) {
|
|
1179
1673
|
this.focusedRow = null;
|
|
@@ -1188,6 +1682,9 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1188
1682
|
isUserInteraction: true,
|
|
1189
1683
|
});
|
|
1190
1684
|
}
|
|
1685
|
+
/**
|
|
1686
|
+
* @ignore
|
|
1687
|
+
*/
|
|
1191
1688
|
handleRowDoubleClick(e, item) {
|
|
1192
1689
|
this.focusedRow = item;
|
|
1193
1690
|
//
|
|
@@ -1197,6 +1694,13 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1197
1694
|
isUserInteraction: true,
|
|
1198
1695
|
});
|
|
1199
1696
|
}
|
|
1697
|
+
/**
|
|
1698
|
+
* Handles column header clicks to toggle sorting on the column.
|
|
1699
|
+
*
|
|
1700
|
+
* @param e - The mouse event triggered by the click.
|
|
1701
|
+
* @param column - The column that was clicked.
|
|
1702
|
+
* @ignore
|
|
1703
|
+
*/
|
|
1200
1704
|
handleColumnClick(e, column) {
|
|
1201
1705
|
if (column instanceof AXDataTableTextColumnComponent) {
|
|
1202
1706
|
const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);
|
|
@@ -1217,6 +1721,9 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1217
1721
|
this.refresh();
|
|
1218
1722
|
}
|
|
1219
1723
|
}
|
|
1724
|
+
/**
|
|
1725
|
+
* @ignore
|
|
1726
|
+
*/
|
|
1220
1727
|
getSort(column) {
|
|
1221
1728
|
if (column instanceof AXDataTableTextColumnComponent) {
|
|
1222
1729
|
const sort = this.dataSource.query.sort.find((c) => c.field == column.dataField);
|
|
@@ -1224,6 +1731,9 @@ class AXInfiniteScrollDataTableComponent extends AXBaseDataTable {
|
|
|
1224
1731
|
}
|
|
1225
1732
|
return undefined;
|
|
1226
1733
|
}
|
|
1734
|
+
/**
|
|
1735
|
+
* @ignore
|
|
1736
|
+
*/
|
|
1227
1737
|
_handleOnScroll() {
|
|
1228
1738
|
this.updateHScroll();
|
|
1229
1739
|
}
|