Skip to content

Commit 9a3dac1

Browse files
committed
Issue #3024184 by seanB, andrewmacpherson, Kristen Pol: Make the tabbing order match the visual reading order in MediaLibraryWidget
(cherry picked from commit dd324bd)
1 parent 1441707 commit 9a3dac1

File tree

3 files changed

+27
-25
lines changed

3 files changed

+27
-25
lines changed

modules/media_library/css/media_library.theme.css

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,14 @@
165165
margin: 0.75em;
166166
}
167167

168-
.media-library-item__remove,
169-
.media-library-item__remove:hover,
170-
.media-library-item__remove:focus,
171-
.media-library-item__remove.button,
172-
.media-library-item__remove.button:disabled,
173-
.media-library-item__remove.button:disabled:active,
174-
.media-library-item__remove.button:hover,
175-
.media-library-item__remove.button:focus {
168+
.media-library-item .media-library-item__remove,
169+
.media-library-item .media-library-item__remove:hover,
170+
.media-library-item .media-library-item__remove:focus,
171+
.media-library-item .media-library-item__remove.button,
172+
.media-library-item .media-library-item__remove.button:disabled,
173+
.media-library-item .media-library-item__remove.button:disabled:active,
174+
.media-library-item .media-library-item__remove.button:hover,
175+
.media-library-item .media-library-item__remove.button:focus {
176176
position: absolute;
177177
z-index: 1;
178178
top: 0;
@@ -190,11 +190,11 @@
190190
transition: 0.2s border-color;
191191
}
192192

193-
.media-library-item__remove:hover,
194-
.media-library-item__remove:focus,
195-
.media-library-item__remove.button:hover,
196-
.media-library-item__remove.button:focus,
197-
.media-library-item__remove.button:disabled:active {
193+
.media-library-item .media-library-item__remove:hover,
194+
.media-library-item .media-library-item__remove:focus,
195+
.media-library-item .media-library-item__remove.button:hover,
196+
.media-library-item .media-library-item__remove.button:focus,
197+
.media-library-item .media-library-item__remove.button:disabled:active {
198198
border-color: #40b6ff;
199199
}
200200

modules/media_library/src/Plugin/Field/FieldWidget/MediaLibraryWidget.php

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,6 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
139139
],
140140
];
141141

142-
$element['selection'] = [
143-
'#type' => 'container',
144-
'#attributes' => [
145-
'class' => [
146-
'js-media-library-selection',
147-
'media-library-selection',
148-
],
149-
],
150-
];
151-
152142
if (empty($referenced_entities)) {
153143
$element['empty_selection'] = [
154144
'#markup' => $this->t('<p>No media items are selected.</p>'),
@@ -170,6 +160,16 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
170160
];
171161
}
172162

163+
$element['selection'] = [
164+
'#type' => 'container',
165+
'#attributes' => [
166+
'class' => [
167+
'js-media-library-selection',
168+
'media-library-selection',
169+
],
170+
],
171+
];
172+
173173
foreach ($referenced_entities as $delta => $media_item) {
174174
$element['selection'][$delta] = [
175175
'#type' => 'container',
@@ -181,14 +181,13 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
181181
],
182182
'preview' => [
183183
'#type' => 'container',
184-
// @todo Make the view mode configurable in https://www.drupal.org/project/drupal/issues/2971209
185-
'rendered_entity' => $view_builder->view($media_item, 'media_library'),
186184
'remove_button' => [
187185
'#type' => 'submit',
188186
'#name' => $field_name . '-' . $delta . '-media-library-remove-button' . $id_suffix,
189187
'#value' => $this->t('Remove'),
190188
'#attributes' => [
191189
'class' => ['media-library-item__remove'],
190+
'aria-label' => $this->t('Remove @label', ['@label' => $media_item->label()]),
192191
],
193192
'#ajax' => [
194193
'callback' => [static::class, 'updateWidget'],
@@ -198,6 +197,8 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
198197
// Prevent errors in other widgets from preventing removal.
199198
'#limit_validation_errors' => $limit_validation_errors,
200199
],
200+
// @todo Make the view mode configurable in https://www.drupal.org/project/drupal/issues/2971209
201+
'rendered_entity' => $view_builder->view($media_item, 'media_library'),
201202
],
202203
'target_id' => [
203204
'#type' => 'hidden',

modules/media_library/tests/src/FunctionalJavascript/MediaLibraryTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ public function testWidget() {
186186
$assert_session->pageTextContains('Cat');
187187
$assert_session->pageTextContains('Bear');
188188
// Remove "Dog" (happens to be the first remove button on the page).
189+
$assert_session->elementAttributeContains('css', '.media-library-item__remove', 'aria-label', 'Remove Dog');
189190
$assert_session->elementExists('css', '.media-library-item__remove')->click();
190191
$assert_session->assertWaitOnAjaxRequest();
191192
$assert_session->pageTextNotContains('Dog');

0 commit comments

Comments
 (0)