diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 454414d373f..06ba2710037 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -959,25 +959,6 @@ function template_preprocess_table(&$variables) {
}
}
-/**
- * Prepares variables for tablesort indicator templates.
- *
- * Default template: tablesort-indicator.html.twig.
- *
- * @param array $variables
- * An associative array containing:
- * - style: Set to either 'asc' or 'desc'. This determines which icon to show.
- */
-function template_preprocess_tablesort_indicator(&$variables) {
- // Provide the image attributes for an ascending or descending image.
- if ($variables['style'] == 'asc') {
- $variables['arrow_asc'] = file_create_url('core/misc/arrow-asc.png');
- }
- else {
- $variables['arrow_desc'] = file_create_url('core/misc/arrow-desc.png');
- }
-}
-
/**
* Prepares variables for item list templates.
*
diff --git a/core/misc/arrow-asc.png b/core/misc/arrow-asc.png
deleted file mode 100644
index 2edbb17d776..00000000000
Binary files a/core/misc/arrow-asc.png and /dev/null differ
diff --git a/core/misc/arrow-desc.png b/core/misc/arrow-desc.png
deleted file mode 100644
index a3ccabc556e..00000000000
Binary files a/core/misc/arrow-desc.png and /dev/null differ
diff --git a/core/misc/icons/004875/twistie-down.svg b/core/misc/icons/004875/twistie-down.svg
new file mode 100644
index 00000000000..6cd6a786bbb
--- /dev/null
+++ b/core/misc/icons/004875/twistie-down.svg
@@ -0,0 +1 @@
+
diff --git a/core/misc/icons/004875/twistie-up.svg b/core/misc/icons/004875/twistie-up.svg
new file mode 100644
index 00000000000..bf3b80ed01e
--- /dev/null
+++ b/core/misc/icons/004875/twistie-up.svg
@@ -0,0 +1 @@
+
diff --git a/core/misc/icons/008ee6/twistie-down.svg b/core/misc/icons/008ee6/twistie-down.svg
new file mode 100644
index 00000000000..23f6d9ac1b8
--- /dev/null
+++ b/core/misc/icons/008ee6/twistie-down.svg
@@ -0,0 +1 @@
+
diff --git a/core/misc/icons/008ee6/twistie-up.svg b/core/misc/icons/008ee6/twistie-up.svg
new file mode 100644
index 00000000000..dc9dd8e9f7d
--- /dev/null
+++ b/core/misc/icons/008ee6/twistie-up.svg
@@ -0,0 +1 @@
+
diff --git a/core/misc/icons/ffffff/twistie-down.svg b/core/misc/icons/ffffff/twistie-down.svg
new file mode 100644
index 00000000000..83c77fd7bb6
--- /dev/null
+++ b/core/misc/icons/ffffff/twistie-down.svg
@@ -0,0 +1 @@
+
diff --git a/core/misc/icons/ffffff/twistie-up.svg b/core/misc/icons/ffffff/twistie-up.svg
new file mode 100644
index 00000000000..7b550286239
--- /dev/null
+++ b/core/misc/icons/ffffff/twistie-up.svg
@@ -0,0 +1 @@
+
diff --git a/core/modules/system/css/components/tablesort.module.css b/core/modules/system/css/components/tablesort.module.css
new file mode 100644
index 00000000000..5e0e711e52f
--- /dev/null
+++ b/core/modules/system/css/components/tablesort.module.css
@@ -0,0 +1,19 @@
+/**
+ * @file
+ * Table sort indicator.
+ *
+ * @see tablesort-indicator.html.twig
+ */
+
+.tablesort {
+ width: 16px;
+ height: 16px;
+ display: inline-block;
+ background-size: 100%;
+}
+.tablesort--asc {
+ background-image: url(../../../../misc/icons/787878/twistie-down.svg);
+}
+.tablesort--desc {
+ background-image: url(../../../../misc/icons/787878/twistie-up.svg);
+}
diff --git a/core/modules/system/system.libraries.yml b/core/modules/system/system.libraries.yml
index 96b2f280995..4a3bae6e4ca 100644
--- a/core/modules/system/system.libraries.yml
+++ b/core/modules/system/system.libraries.yml
@@ -19,6 +19,7 @@ base:
css/components/resize.module.css: { weight: -10 }
css/components/sticky-header.module.css: { weight: -10 }
css/components/tabledrag.module.css: { weight: -10 }
+ css/components/tablesort.module.css: { weight: -10 }
css/components/tree-child.module.css: { weight: -10 }
admin:
diff --git a/core/modules/system/templates/tablesort-indicator.html.twig b/core/modules/system/templates/tablesort-indicator.html.twig
index 059805f1d41..3601c6d190d 100644
--- a/core/modules/system/templates/tablesort-indicator.html.twig
+++ b/core/modules/system/templates/tablesort-indicator.html.twig
@@ -11,8 +11,18 @@
* @ingroup themeable
*/
#}
-{% if style == 'asc' -%}
-
-{% else -%}
-
-{% endif %}
+{%
+ set classes = [
+ 'tablesort',
+ 'tablesort--' ~ style,
+ ]
+%}
+
+
+ {% if style == 'asc' -%}
+ {{ 'Sort ascending'|t }}
+ {% else -%}
+ {{ 'Sort descending'|t }}
+ {% endif %}
+
+
diff --git a/core/modules/views/src/Tests/Handler/FieldWebTest.php b/core/modules/views/src/Tests/Handler/FieldWebTest.php
index 98fe8afd86d..3f9a18456fe 100644
--- a/core/modules/views/src/Tests/Handler/FieldWebTest.php
+++ b/core/modules/views/src/Tests/Handler/FieldWebTest.php
@@ -87,7 +87,7 @@ class FieldWebTest extends HandlerTestBase {
$ids = $this->clickSortLoadIdsFromOutput();
$this->assertEqual($ids, range(1, 5));
- $this->clickLink(t('ID'));
+ $this->clickLink(t('ID Sort descending'));
// Check that the output has the expected order (desc).
$ids = $this->clickSortLoadIdsFromOutput();
$this->assertEqual($ids, range(5, 1, -1));
diff --git a/core/themes/bartik/bartik.libraries.yml b/core/themes/bartik/bartik.libraries.yml
index ab90023c9be..3bfa3a6886f 100644
--- a/core/themes/bartik/bartik.libraries.yml
+++ b/core/themes/bartik/bartik.libraries.yml
@@ -41,6 +41,7 @@ global-styling:
css/components/site-branding.css: {}
css/components/site-footer.css: {}
css/components/table.css: {}
+ css/components/tablesort-indicator.css: {}
css/components/tabs.css: {}
css/components/toolbar.css: {}
css/components/featured-bottom.css: {}
diff --git a/core/themes/bartik/css/components/tablesort-indicator.css b/core/themes/bartik/css/components/tablesort-indicator.css
new file mode 100644
index 00000000000..d0ea03b7963
--- /dev/null
+++ b/core/themes/bartik/css/components/tablesort-indicator.css
@@ -0,0 +1,17 @@
+/**
+ * @file
+ * Tablesort indicator styles.
+ */
+
+.tablesort {
+ width: 14px;
+ height: 14px;
+ vertical-align: top;
+ margin: 1px 0 0 5px;
+}
+.tablesort--asc {
+ background-image: url(../../../../misc/icons/ffffff/twistie-down.svg);
+}
+.tablesort--desc {
+ background-image: url(../../../../misc/icons/ffffff/twistie-up.svg);
+}
diff --git a/core/themes/classy/templates/dataset/tablesort-indicator.html.twig b/core/themes/classy/templates/dataset/tablesort-indicator.html.twig
deleted file mode 100644
index 2b3f90da955..00000000000
--- a/core/themes/classy/templates/dataset/tablesort-indicator.html.twig
+++ /dev/null
@@ -1,16 +0,0 @@
-{#
-/**
- * @file
- * Theme override for displaying a tablesort indicator.
- *
- * Available variables:
- * - style: Either 'asc' or 'desc', indicating the sorting direction.
- *
- * @see template_preprocess_tablesort_indicator()
- */
-#}
-{% if style == 'asc' -%}
-
-{% else -%}
-
-{% endif %}
diff --git a/core/themes/seven/css/components/tablesort-indicator.css b/core/themes/seven/css/components/tablesort-indicator.css
new file mode 100644
index 00000000000..fa49af700c7
--- /dev/null
+++ b/core/themes/seven/css/components/tablesort-indicator.css
@@ -0,0 +1,26 @@
+/**
+ * @file
+ * Tablesort indicator styles.
+ */
+
+.tablesort {
+ float: right; /* LTR */
+ margin-top: 5px;
+ width: 10px;
+ height: 10px;
+}
+[dir="rtl"] .tablesort {
+ float: left;
+}
+.tablesort--asc {
+ background-image: url(../../../../misc/icons/004875/twistie-down.svg);
+}
+a:hover .tablesort--asc {
+ background-image: url(../../../../misc/icons/008ee6/twistie-down.svg);
+}
+.tablesort--desc {
+ background-image: url(../../../../misc/icons/004875/twistie-up.svg);
+}
+a:hover .tablesort--desc {
+ background-image: url(../../../../misc/icons/008ee6/twistie-up.svg);
+}
diff --git a/core/themes/seven/seven.libraries.yml b/core/themes/seven/seven.libraries.yml
index 0b814b57f4b..764403b6400 100644
--- a/core/themes/seven/seven.libraries.yml
+++ b/core/themes/seven/seven.libraries.yml
@@ -26,6 +26,7 @@ global-styling:
css/components/skip-link.css: {}
css/components/tables.css: {}
css/components/search-admin-settings.css: {}
+ css/components/tablesort-indicator.css: {}
css/components/system-status-report.css: {}
css/components/tabs.css: {}
css/components/tour.theme.css: {}
diff --git a/core/themes/seven/seven.theme b/core/themes/seven/seven.theme
index 1a44bc4d695..9727e15d08b 100644
--- a/core/themes/seven/seven.theme
+++ b/core/themes/seven/seven.theme
@@ -94,18 +94,6 @@ function seven_preprocess_admin_block_content(&$variables) {
}
}
-/**
- * Implements hook_preprocess_HOOK() for tablesort indicator templates.
- *
- * Uses Seven's image versions, so the arrows show up as black and not gray on
- * gray.
- */
-function seven_preprocess_tablesort_indicator(&$variables) {
- $theme_path = drupal_get_path('theme', 'seven');
- $variables['arrow_asc'] = file_create_url($theme_path . '/images/arrow-asc.png');
- $variables['arrow_desc'] = file_create_url($theme_path . '/images/arrow-desc.png');
-}
-
/**
* Implements hook_preprocess_HOOK() for menu-local-action templates.
*/
diff --git a/core/themes/seven/templates/tablesort-indicator.html.twig b/core/themes/seven/templates/tablesort-indicator.html.twig
deleted file mode 100644
index b2eadaa4baa..00000000000
--- a/core/themes/seven/templates/tablesort-indicator.html.twig
+++ /dev/null
@@ -1,16 +0,0 @@
-{#
-/**
- * @file
- * Seven's theme implementation for displaying a tablesort indicator.
- *
- * Available variables:
- * - style: Either 'asc' or 'desc', indicating the sorting direction.
- * - arrow_asc: URL to the image for an ascending arrow.
- * - arrow_desc: URL to the image for a descending arrow.
- */
-#}
-{% if style == 'asc' -%}
-
-{% else -%}
-
-{% endif %}