From 6d565028c8f31c51bb4197fbbba3b438ab09421b Mon Sep 17 00:00:00 2001
From: Guy Sartorelli <36352093+GuySartorelli@users.noreply.github.com>
Date: Fri, 4 Mar 2022 10:13:45 +1300
Subject: [PATCH] ENH Prefer dependency injection for GridFieldComponents.
 (#147)

GridFieldComponents packaged with silverstripe/framework are injectable as of 4.11.0
---
 code/Report.php      | 12 ++++++------
 code/ReportAdmin.php |  8 ++++----
 composer.json        |  2 +-
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/code/Report.php b/code/Report.php
index fa783d0c..b934b579 100644
--- a/code/Report.php
+++ b/code/Report.php
@@ -389,12 +389,12 @@ public function getReportField()
         $items = $this->sourceRecords($params, null, null);
 
         $gridFieldConfig = GridFieldConfig::create()->addComponents(
-            new GridFieldButtonRow('before'),
-            new GridFieldPrintButton('buttons-before-left'),
-            new GridFieldExportButton('buttons-before-left'),
-            new GridFieldSortableHeader(),
-            new GridFieldDataColumns(),
-            new GridFieldPaginator()
+            GridFieldButtonRow::create('before'),
+            GridFieldPrintButton::create('buttons-before-left'),
+            GridFieldExportButton::create('buttons-before-left'),
+            GridFieldSortableHeader::create(),
+            GridFieldDataColumns::create(),
+            GridFieldPaginator::create()
         );
         /** @var GridField $gridField */
         $gridField = GridField::create('Report', null, $items, $gridFieldConfig);
diff --git a/code/ReportAdmin.php b/code/ReportAdmin.php
index 95faebd6..19a1fc24 100644
--- a/code/ReportAdmin.php
+++ b/code/ReportAdmin.php
@@ -230,11 +230,11 @@ public function getEditForm($id = null, $fields = null)
             // List all reports
             $fields = new FieldList();
             $gridFieldConfig = GridFieldConfig::create()->addComponents(
-                new GridFieldSortableHeader(),
-                new GridFieldDataColumns(),
-                new GridFieldFooter()
+                GridFieldSortableHeader::create(),
+                GridFieldDataColumns::create(),
+                GridFieldFooter::create()
             );
-            $gridField = new GridField('Reports', false, $this->Reports(), $gridFieldConfig);
+            $gridField = GridField::create('Reports', false, $this->Reports(), $gridFieldConfig);
             /** @var GridFieldDataColumns $columns */
             $columns = $gridField->getConfig()->getComponentByType('SilverStripe\\Forms\\GridField\\GridFieldDataColumns');
             $columns->setDisplayFields(array(
diff --git a/composer.json b/composer.json
index 54daf94e..2fa7dfeb 100644
--- a/composer.json
+++ b/composer.json
@@ -21,7 +21,7 @@
     ],
     "require": {
         "php": "^7.4 || ^8.0",
-        "silverstripe/framework": "^4.10",
+        "silverstripe/framework": "^4.11",
         "silverstripe/admin": "^1.6@dev",
         "silverstripe/versioned": "^1.6@dev",
         "silverstripe/config": "^1.0@dev",