Loading core/tests/Drupal/KernelTests/Core/Theme/ClaroTableTest.php +32 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\KernelTests\Core\Theme; use Drupal\claro\ClaroPreRender; use Drupal\KernelTests\KernelTestBase; /** Loading Loading @@ -38,4 +39,35 @@ public function testThemeTableStickyHeaders() { $this->assertRaw('position-sticky'); } /** * Confirm Claro prerender callback is not executed for non-array class. */ public function testThemeTablePositionStickyPreRender(): void { // Enable the Claro theme. \Drupal::service('theme_installer')->install(['claro']); $this->config('system.theme')->set('default', 'claro')->save(); $header = ['one', 'two', 'three']; $rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; $table = [ '#type' => 'table', '#header' => $header, '#rows' => $rows, '#sticky' => TRUE, '#attributes' => [ 'class' => 'class', ], '#pre_render' => [ [ ClaroPreRender::class, 'tablePositionSticky', ], ], ]; $renderedTable = \Drupal::service('renderer')->renderRoot($table); // Confirm that table is rendered. $this->assertStringContainsString('class="class"', $renderedTable); } } core/themes/claro/src/ClaroPreRender.php +1 −1 Original line number Diff line number Diff line Loading @@ -193,7 +193,7 @@ public static function messagePlaceholder(array $element) { * Prerender callback for table elements. */ public static function tablePositionSticky(array $element) { if (isset($element['#attributes']['class']) && in_array('sticky-enabled', $element['#attributes']['class'])) { if (isset($element['#attributes']['class']) && is_array($element['#attributes']['class']) && in_array('sticky-enabled', $element['#attributes']['class'], TRUE)) { unset($element['#attributes']['class'][array_search('sticky-enabled', $element['#attributes']['class'])]); $element['#attributes']['class'][] = 'position-sticky'; } Loading Loading
core/tests/Drupal/KernelTests/Core/Theme/ClaroTableTest.php +32 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\KernelTests\Core\Theme; use Drupal\claro\ClaroPreRender; use Drupal\KernelTests\KernelTestBase; /** Loading Loading @@ -38,4 +39,35 @@ public function testThemeTableStickyHeaders() { $this->assertRaw('position-sticky'); } /** * Confirm Claro prerender callback is not executed for non-array class. */ public function testThemeTablePositionStickyPreRender(): void { // Enable the Claro theme. \Drupal::service('theme_installer')->install(['claro']); $this->config('system.theme')->set('default', 'claro')->save(); $header = ['one', 'two', 'three']; $rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; $table = [ '#type' => 'table', '#header' => $header, '#rows' => $rows, '#sticky' => TRUE, '#attributes' => [ 'class' => 'class', ], '#pre_render' => [ [ ClaroPreRender::class, 'tablePositionSticky', ], ], ]; $renderedTable = \Drupal::service('renderer')->renderRoot($table); // Confirm that table is rendered. $this->assertStringContainsString('class="class"', $renderedTable); } }
core/themes/claro/src/ClaroPreRender.php +1 −1 Original line number Diff line number Diff line Loading @@ -193,7 +193,7 @@ public static function messagePlaceholder(array $element) { * Prerender callback for table elements. */ public static function tablePositionSticky(array $element) { if (isset($element['#attributes']['class']) && in_array('sticky-enabled', $element['#attributes']['class'])) { if (isset($element['#attributes']['class']) && is_array($element['#attributes']['class']) && in_array('sticky-enabled', $element['#attributes']['class'], TRUE)) { unset($element['#attributes']['class'][array_search('sticky-enabled', $element['#attributes']['class'])]); $element['#attributes']['class'][] = 'position-sticky'; } Loading