Skip to content

Commit 0083385

Browse files
authored
Set an order for page layout categories (#50110)
1 parent 9581072 commit 0083385

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

packages/page-template-modal/src/components/page-template-modal.js

+6-13
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import replacePlaceholders from '../utils/replace-placeholders';
1818
import ensureAssets from '../utils/ensure-assets';
1919
import mapBlocksRecursively from '../utils/map-blocks-recursively';
2020
import containsMissingBlock from '../utils/contains-missing-block';
21+
import { sortGroupNames } from '../utils/group-utils';
2122

2223
export default class PageTemplateModal extends Component {
2324
state = {
@@ -280,16 +281,8 @@ export default class PageTemplateModal extends Component {
280281
}
281282
}
282283

283-
return this.sortGroupsNames( templateGroups );
284-
};
285-
286-
sortGroupsNames = ( groups ) => {
287-
return Object.keys( groups )
288-
.sort()
289-
.reduce( ( result, key ) => {
290-
result[ key ] = groups[ key ];
291-
return result;
292-
}, {} );
284+
const preferredGroupOrder = [ 'about', 'blog', 'home-page', 'gallery', 'services', 'contact' ];
285+
return sortGroupNames( preferredGroupOrder, templateGroups );
293286
};
294287

295288
getTemplatesForGroup = ( groupName ) => {
@@ -339,7 +332,7 @@ export default class PageTemplateModal extends Component {
339332
const blankGroup = this.renderTemplateGroup( 'blank', __( 'Blank', __i18n_text_domain__ ) );
340333

341334
const homePageGroup = this.props.isFrontPage
342-
? this.renderTemplateGroup( 'home-page', __( 'Home Page', __i18n_text_domain__ ) )
335+
? this.renderTemplateGroup( 'home-page', __( 'Home', __i18n_text_domain__ ) )
343336
: null;
344337

345338
const renderedGroups = [];
@@ -364,10 +357,10 @@ export default class PageTemplateModal extends Component {
364357
return null;
365358
}
366359

367-
return this.renderTemplatesList( templates, groupName, groupTitle );
360+
return this.renderTemplatesList( templates, groupTitle );
368361
};
369362

370-
renderTemplatesList = ( templatesList, groupName, groupTitle ) => {
363+
renderTemplatesList = ( templatesList, groupTitle ) => {
371364
if ( ! templatesList.length ) {
372365
return null;
373366
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* External dependencies
3+
*/
4+
import { intersection, difference } from 'lodash';
5+
6+
/**
7+
* Sorts the keys on the group object to have a preferred order.
8+
* If some groups exist without a preferred order, they will be included last
9+
*
10+
* @param {Array<string>} preferredGroupOrder the order of group slugs that we want
11+
* @param {object} groupsObject an object with all group information, with group names as keys
12+
*/
13+
export function sortGroupNames( preferredGroupOrder, groupsObject ) {
14+
const groups = Object.keys( groupsObject );
15+
16+
const orderedGroups = intersection( preferredGroupOrder, groups );
17+
const remainingGroups = difference( groups, preferredGroupOrder );
18+
const allGroups = orderedGroups.concat( remainingGroups.sort() );
19+
20+
return allGroups.reduce( ( result, groupName ) => {
21+
result[ groupName ] = groupsObject[ groupName ];
22+
return result;
23+
}, {} );
24+
}

0 commit comments

Comments
 (0)