@@ -7,6 +7,7 @@ import type {
7
7
Grouping ,
8
8
GroupingFormatterItem ,
9
9
ItemMetadata ,
10
+ ItemMetadataProvider ,
10
11
OnGroupCollapsedEventArgs ,
11
12
OnGroupExpandedEventArgs ,
12
13
OnRowCountChangedEventArgs ,
@@ -37,6 +38,9 @@ const Utils = IIFE_ONLY ? Slick.Utils : Utils_;
37
38
const SlickGroupItemMetadataProvider = IIFE_ONLY ? Slick . Data ?. GroupItemMetadataProvider ?? { } : SlickGroupItemMetadataProvider_ ;
38
39
39
40
export interface DataViewOption {
41
+ /** global override for all rows */
42
+ globalItemMetadataProvider : ItemMetadataProvider | null ;
43
+
40
44
/** Optionally provide a GroupItemMetadataProvider in order to use Grouping/DraggableGrouping features */
41
45
groupItemMetadataProvider : SlickGroupItemMetadataProvider_ | null ;
42
46
@@ -63,6 +67,7 @@ export type GroupGetterFn = (val: any) => string | number;
63
67
*/
64
68
export class SlickDataView < TData extends SlickDataItem = any > implements CustomDataView {
65
69
protected defaults : DataViewOption = {
70
+ globalItemMetadataProvider : null ,
66
71
groupItemMetadataProvider : null ,
67
72
inlineFilters : false ,
68
73
useCSPSafeFilter : false ,
@@ -775,20 +780,25 @@ export class SlickDataView<TData extends SlickDataItem = any> implements CustomD
775
780
return item ;
776
781
}
777
782
778
- getItemMetadata ( i : number ) : ItemMetadata | null {
779
- const item = this . rows [ i ] ;
783
+ getItemMetadata ( row : number ) : ItemMetadata | null {
784
+ const item = this . rows [ row ] ;
780
785
if ( item === undefined ) {
781
786
return null ;
782
787
}
783
788
789
+ // global override for all regular rows
790
+ if ( this . _options . globalItemMetadataProvider ?. getRowMetadata ) {
791
+ return this . _options . globalItemMetadataProvider . getRowMetadata ( item , row ) ;
792
+ }
793
+
784
794
// overrides for grouping rows
785
- if ( ( item as SlickGroup_ ) . __group ) {
786
- return this . _options . groupItemMetadataProvider ! . getGroupRowMetadata ( item as GroupingFormatterItem ) ;
795
+ if ( ( item as SlickGroup_ ) . __group && this . _options . groupItemMetadataProvider ?. getGroupRowMetadata ) {
796
+ return this . _options . groupItemMetadataProvider . getGroupRowMetadata ( item as GroupingFormatterItem , row ) ;
787
797
}
788
798
789
799
// overrides for totals rows
790
- if ( ( item as SlickGroupTotals_ ) . __groupTotals ) {
791
- return this . _options . groupItemMetadataProvider ! . getTotalsRowMetadata ( item as { group : GroupingFormatterItem } ) ;
800
+ if ( ( item as SlickGroupTotals_ ) . __groupTotals && this . _options . groupItemMetadataProvider ?. getTotalsRowMetadata ) {
801
+ return this . _options . groupItemMetadataProvider . getTotalsRowMetadata ( item as { group : GroupingFormatterItem } , row ) ;
792
802
}
793
803
794
804
return null ;
0 commit comments