Skip to content

Commit 7407804

Browse files
committed
Media: Restore usage of attachment filters in media modal.
[61757] wrapped the media attachment filters, which changed the return value of toolbar filters from `AttachmentFilters` to a `wp.media.View` instance, breaking the API to customize media library filters. Reverts the shape change in the attachment filter return value and implements CSS based positioning for the visible labels. Props bernhard-reiter, joedolson, ozgursar, audrasjb, darshitrajyaguru97, jorbin. Fixes #64948. git-svn-id: https://develop.svn.wordpress.org/trunk@62326 602fd350-edb4-49c9-b593-d223f7449a82
1 parent aaeb4e8 commit 7407804

3 files changed

Lines changed: 64 additions & 78 deletions

File tree

src/js/media/views/attachments/browser.js

Lines changed: 20 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -198,44 +198,32 @@ AttachmentsBrowser = View.extend(/** @lends wp.media.view.AttachmentsBrowser.pro
198198
}
199199

200200
if ( showFilterByType ) {
201-
// "Filters" is a <select>, a visually hidden label element needs to be rendered before.
202-
var filtersLabel = new wp.media.view.Label({
201+
// "Filters" is a <select>, a label element needs to be rendered before.
202+
this.toolbar.set( 'filtersLabel', new wp.media.view.Label({
203203
value: l10n.filterByType,
204204
attributes: {
205205
'for': 'media-attachment-filters'
206206
},
207207
priority: -80
208-
});
208+
}).render() );
209209

210210
if ( 'uploaded' === this.options.filters ) {
211-
Filters = new wp.media.view.AttachmentFilters.Uploaded({
211+
this.toolbar.set( 'filters', new wp.media.view.AttachmentFilters.Uploaded({
212212
controller: this.controller,
213213
model: this.collection.props,
214-
});
214+
priority: -80
215+
}).render() );
215216
} else {
216217
Filters = new wp.media.view.AttachmentFilters.All({
217218
controller: this.controller,
218219
model: this.collection.props,
220+
priority: -80
219221
});
220-
}
221-
222-
var filterContainer = wp.media.View.extend({
223-
tagname: 'div',
224-
className: 'media-filter-container type-filter',
225-
226-
initialize: function() {
227-
this.views.add( [ filtersLabel, Filters ] );
228-
}
229-
});
230222

231-
this.toolbar.set( 'filters', new filterContainer({
232-
controller: this.controller,
233-
model: this.controller.props,
234-
priority: -80
235-
}).render() );
223+
this.toolbar.set( 'filters', Filters.render() );
224+
}
236225
}
237226

238-
var dateFilter, dateFilterLabel, dateFilterContainer;
239227
/*
240228
* Feels odd to bring the global media library switcher into the Attachment browser view.
241229
* Is this a use case for doAction( 'add:toolbar-items:attachments-browser', this.toolbar );
@@ -252,31 +240,18 @@ AttachmentsBrowser = View.extend(/** @lends wp.media.view.AttachmentsBrowser.pro
252240
priority: -90
253241
}).render() );
254242

255-
// DateFilter is a <select>, a visually hidden label element needs to be rendered before.
256-
dateFilterLabel = new wp.media.view.Label({
243+
// DateFilter is a <select>, a label element needs to be rendered before.
244+
this.toolbar.set( 'dateFilter', new wp.media.view.Label({
257245
value: l10n.filterByDate,
258246
attributes: {
259247
'for': 'media-attachment-date-filters'
260248
},
261-
});
262-
dateFilter = new wp.media.view.DateFilter({
263-
controller: this.controller,
264-
model: this.collection.props,
265-
});
266-
267-
dateFilterContainer = wp.media.View.extend({
268-
tagname: 'div',
269-
className: 'media-filter-container date-filter',
270-
271-
initialize: function() {
272-
this.views.add( [ dateFilterLabel, dateFilter ] );
273-
}
274-
});
275-
276-
this.toolbar.set( 'dateFilters', new dateFilterContainer({
249+
priority: -75
250+
}).render() );
251+
this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({
277252
controller: this.controller,
278253
model: this.collection.props,
279-
priority: -75
254+
priority: -75,
280255
}).render() );
281256

282257
// BulkSelection is a <div> with subviews, including screen reader text.
@@ -387,28 +362,15 @@ AttachmentsBrowser = View.extend(/** @lends wp.media.view.AttachmentsBrowser.pro
387362
}
388363

389364
} else if ( this.options.date ) {
390-
// DateFilter is a <select>, a visually hidden label element needs to be rendered before.
391-
dateFilterLabel = new wp.media.view.Label({
365+
// DateFilter is a <select>, a label element needs to be rendered before.
366+
this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
392367
value: l10n.filterByDate,
393368
attributes: {
394369
'for': 'media-attachment-date-filters'
395370
},
396-
});
397-
dateFilter = new wp.media.view.DateFilter({
398-
controller: this.controller,
399-
model: this.collection.props,
400-
});
401-
402-
dateFilterContainer = wp.media.View.extend({
403-
tagname: 'div',
404-
className: 'media-filter-container date-filter',
405-
406-
initialize: function() {
407-
this.views.add( [ dateFilterLabel, dateFilter ] );
408-
}
409-
});
410-
411-
this.toolbar.set( 'dateFilters', new dateFilterContainer({
371+
priority: -75
372+
}).render() );
373+
this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({
412374
controller: this.controller,
413375
model: this.collection.props,
414376
priority: -75

src/wp-admin/css/media.css

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -555,8 +555,18 @@ border color while dragging a file over the uploader drop area */
555555
height: auto;
556556
}
557557

558-
.media-frame.mode-grid .media-toolbar label {
559-
display: block;
558+
.media-frame.mode-grid .media-toolbar label:not(.media-search-input-label) {
559+
border: 0;
560+
clip-path: inset(50%);
561+
height: 1px;
562+
margin: -1px;
563+
overflow: hidden;
564+
padding: 0;
565+
position: absolute;
566+
width: 1px;
567+
/* Many screen reader and browser combinations announce broken words as they would appear visually. */
568+
word-wrap: normal !important;
569+
word-break: normal !important;
560570
}
561571

562572
.media-frame.mode-grid .media-toolbar select {
@@ -571,11 +581,11 @@ border color while dragging a file over the uploader drop area */
571581
padding: 0 8px;
572582
}
573583

574-
.media-frame.mode-grid .media-toolbar .button {
575-
min-height: 32px;
576-
line-height: 2.30769231; /* 30px for 32px height with 13px font */
577-
padding: 0 12px;
578-
align-self: end;
584+
.media-frame.mode-grid .media-toolbar-secondary {
585+
display: flex;
586+
flex-wrap: wrap;
587+
align-items: center;
588+
gap: 8px;
579589
}
580590

581591
.media-frame.mode-grid.mode-edit .media-toolbar-secondary > .select-mode-toggle-button {

src/wp-includes/css/media-views.css

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,7 @@
2525

2626
.media-modal label {
2727
font-size: 13px;
28-
}
29-
30-
.media-modal .media-filter-container label {
31-
display: block;
32-
}
33-
34-
.media-modal .media-filter-container select,
35-
.media-modal .search-form input {
36-
margin-top: 6px;
37-
}
28+
}
3829

3930
.media-modal .legend-inline {
4031
position: absolute;
@@ -349,12 +340,30 @@
349340
.media-toolbar-secondary {
350341
float: left;
351342
height: 100%;
352-
display: flex;
353-
flex-wrap: wrap;
354-
gap: 12px;
343+
display: grid;
344+
grid-template-columns: repeat( 2, 1fr );
345+
grid-template-rows: repeat( 2, 1fr );
346+
grid-column-gap: 12px;
347+
grid-row-gap: 0px;
355348
align-items: end;
356349
}
357350

351+
label[for="media-attachment-filters"] {
352+
grid-area: 1 / 1 / 2 / 2;
353+
}
354+
355+
select#media-attachment-filters {
356+
grid-area: 2 / 1 / 3 / 2;
357+
}
358+
359+
label[for="media-attachment-date-filters"] {
360+
grid-area: 1 / 2 / 2 / 3;
361+
}
362+
363+
select#media-attachment-date-filters {
364+
grid-area: 2 / 2 / 3 / 3;
365+
}
366+
358367
.media-toolbar-primary > .media-button,
359368
.media-toolbar-primary > .media-button-group {
360369
margin-left: 10px;
@@ -2717,6 +2726,11 @@
27172726
line-height: 2.25; /* 36px */
27182727
}
27192728

2729+
.media-toolbar-secondary,
2730+
.media-toolbar-secondary label {
2731+
display: block;
2732+
}
2733+
27202734
.media-sidebar .setting select.columns,
27212735
.attachment-details .setting select.columns {
27222736
width: auto;

0 commit comments

Comments
 (0)