@@ -337,7 +337,7 @@ export default class DashAgGrid extends Component {
337
337
338
338
const filterModel = this . state . gridApi . getFilterModel ( ) ;
339
339
this . setState ( { filterModel} ) ;
340
- setProps ( { virtualRowData} ) ;
340
+ setProps ( { virtualRowData, filterModel } ) ;
341
341
}
342
342
}
343
343
@@ -517,7 +517,17 @@ export default class DashAgGrid extends Component {
517
517
onGridReady ( params ) {
518
518
// Applying Infinite Row Model
519
519
// see: https://www.ag-grid.com/javascript-grid/infinite-scrolling/
520
- const { rowModelType, selectedRows} = this . props ;
520
+ const {
521
+ rowModelType,
522
+ selectedRows,
523
+ resetColumnState,
524
+ csvExportParams,
525
+ exportDataAsCsv,
526
+ selectAll,
527
+ deselectAll,
528
+ autoSizeAllColumns,
529
+ deleteSelectedRows,
530
+ } = this . props ;
521
531
if ( rowModelType === 'infinite' ) {
522
532
params . api . setDatasource ( this . getDatasource ( ) ) ;
523
533
}
@@ -528,6 +538,31 @@ export default class DashAgGrid extends Component {
528
538
} ) ;
529
539
530
540
this . updateColumnWidths ( ) ;
541
+
542
+ if ( resetColumnState ) {
543
+ this . resetColumnState ( ) ;
544
+ }
545
+
546
+ if ( exportDataAsCsv ) {
547
+ this . exportDataAsCsv ( csvExportParams ) ;
548
+ }
549
+
550
+ if ( selectAll ) {
551
+ this . selectAll ( selectAll ) ;
552
+ }
553
+
554
+ if ( deselectAll ) {
555
+ this . deselectAll ( ) ;
556
+ }
557
+
558
+ if ( autoSizeAllColumns ) {
559
+ this . autoSizeAllColumns ( autoSizeAllColumns ) ;
560
+ }
561
+
562
+ if ( deleteSelectedRows ) {
563
+ this . deleteSelectedRows ( ) ;
564
+ }
565
+
531
566
this . updateColumnState ( ) ;
532
567
533
568
if ( this . state . rowTransaction ) {
@@ -666,21 +701,31 @@ export default class DashAgGrid extends Component {
666
701
) ;
667
702
}
668
703
669
- resetColumnState ( ) {
670
- this . state . gridColumnApi . resetColumnState ( ) ;
704
+ // Event actions that reset
705
+ exportDataAsCsv ( csvExportParams ) {
706
+ if ( ! this . state . gridApi ) {
707
+ return ;
708
+ }
709
+ this . state . gridApi . exportDataAsCsv ( csvExportParams ) ;
671
710
this . props . setProps ( {
672
- resetColumnState : false ,
711
+ exportDataAsCsv : false ,
673
712
} ) ;
674
713
}
675
714
676
- exportDataAsCsv ( csvExportParams ) {
677
- this . state . gridApi . exportDataAsCsv ( csvExportParams ) ;
715
+ resetColumnState ( ) {
716
+ if ( ! this . state . gridApi ) {
717
+ return ;
718
+ }
719
+ this . state . gridColumnApi . resetColumnState ( ) ;
678
720
this . props . setProps ( {
679
- exportDataAsCsv : false ,
721
+ resetColumnState : false ,
680
722
} ) ;
681
723
}
682
724
683
725
selectAll ( opts ) {
726
+ if ( ! this . state . gridApi ) {
727
+ return ;
728
+ }
684
729
if ( opts ?. filtered ) {
685
730
this . state . gridApi . selectAllFiltered ( ) ;
686
731
} else {
@@ -692,13 +737,19 @@ export default class DashAgGrid extends Component {
692
737
}
693
738
694
739
deselectAll ( ) {
740
+ if ( ! this . state . gridApi ) {
741
+ return ;
742
+ }
695
743
this . state . gridApi . deselectAll ( ) ;
696
744
this . props . setProps ( {
697
745
deselectAll : false ,
698
746
} ) ;
699
747
}
700
748
701
749
deleteSelectedRows ( ) {
750
+ if ( ! this . state . gridApi ) {
751
+ return ;
752
+ }
702
753
const sel = this . state . gridApi . getSelectedRows ( ) ;
703
754
this . state . gridApi . applyTransaction ( { remove : sel } ) ;
704
755
this . props . setProps ( {
@@ -707,6 +758,33 @@ export default class DashAgGrid extends Component {
707
758
} ) ;
708
759
}
709
760
761
+ autoSizeAllColumns ( opts ) {
762
+ if ( ! this . state . gridApi ) {
763
+ return ;
764
+ }
765
+ const allColumnIds = this . state . gridColumnApi
766
+ . getColumnState ( )
767
+ . map ( ( column ) => column . colId ) ;
768
+ const skipHeaders = Boolean ( opts ?. skipHeaders ) ;
769
+ this . state . gridColumnApi . autoSizeColumns ( allColumnIds , skipHeaders ) ;
770
+ this . props . setProps ( {
771
+ autoSizeAllColumns : false ,
772
+ } ) ;
773
+ }
774
+ // end event actions
775
+
776
+ updateColumnState ( ) {
777
+ if ( ! this . state . gridApi ) {
778
+ return ;
779
+ }
780
+ this . props . setProps ( {
781
+ columnState : JSON . parse (
782
+ JSON . stringify ( this . state . gridColumnApi . getColumnState ( ) )
783
+ ) ,
784
+ updateColumnState : false ,
785
+ } ) ;
786
+ }
787
+
710
788
buildArray ( arr1 , arr2 ) {
711
789
if ( arr1 ) {
712
790
if ( ! arr1 . includes ( arr2 ) ) {
@@ -743,26 +821,6 @@ export default class DashAgGrid extends Component {
743
821
this . syncRowData ( ) ;
744
822
}
745
823
746
- autoSizeAllColumns ( opts ) {
747
- const allColumnIds = this . state . gridColumnApi
748
- . getColumnState ( )
749
- . map ( ( column ) => column . colId ) ;
750
- const skipHeaders = Boolean ( opts ?. skipHeaders ) ;
751
- this . state . gridColumnApi . autoSizeColumns ( allColumnIds , skipHeaders ) ;
752
- this . props . setProps ( {
753
- autoSizeAllColumns : false ,
754
- } ) ;
755
- }
756
-
757
- updateColumnState ( ) {
758
- this . props . setProps ( {
759
- columnState : JSON . parse (
760
- JSON . stringify ( this . state . gridColumnApi . getColumnState ( ) )
761
- ) ,
762
- updateColumnState : false ,
763
- } ) ;
764
- }
765
-
766
824
render ( ) {
767
825
const {
768
826
id,
0 commit comments