Skip to content

Commit a5a1265

Browse files
Update starter kit file structure to match deprecation tickets (#1253)
* Rename files to match #1252 & #1237 * #1253: update dev editions * #1253 Update doc locations * #1253 cleanup merge bugs * #1253 Fix view all pages are not sorted correctly
1 parent d79c29c commit a5a1265

File tree

317 files changed

+559
-176
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

317 files changed

+559
-176
lines changed

packages/core/src/lib/object_factory.js

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,18 @@ const Pattern = function(
161161
this.variantOrder = 0;
162162
this.engine = patternEngines.getEngineForPattern(this);
163163

164+
// TODO: Remove the following when ordering by file prefix gets obsolete
165+
this.patternGroupData = this.patternGroupData || {};
166+
if (!this.patternGroupData.order && info.patternGroupOrder) {
167+
this.patternGroupData.order = info.patternGroupOrder;
168+
}
169+
170+
// TODO: Remove the following when ordering by file prefix gets obsolete
171+
this.patternSubgroupData = this.patternSubgroupData || {};
172+
if (!this.patternSubgroupData.order && info.patternSubgroupOrder) {
173+
this.patternGroupData.order = info.patternSubgroupOrder;
174+
}
175+
164176
/**
165177
* Determines if this pattern needs to be recompiled.
166178
*
@@ -303,6 +315,19 @@ Pattern.prototype = {
303315
});
304316
},
305317

318+
/**
319+
* Retrieves the number prefix, which later is used for sorting.
320+
* (Can be removed when sorting by number prefix becomes obsolete)
321+
* @param {*} pathStr the path that needs to be checked for number prefixes
322+
* @returns the order number or 0 when no prefix is available
323+
*/
324+
setPatternOrderDataForInfo: pathStr => {
325+
const match = pathStr.match(prefixMatcherDeprecationCheckOrder);
326+
return match && match.length >= 1
327+
? pathStr.match(prefixMatcherDeprecationCheckOrder)[1].replace('-', '')
328+
: 0;
329+
},
330+
306331
/**
307332
* The "info" object contains information about pattern structure if it is
308333
* a nested pattern or if it just a sub folder structure. It's just used for
@@ -336,12 +361,29 @@ Pattern.prototype = {
336361
info.shortNotation = 'root';
337362
} else if (info.dirLevel === 2 && info.patternHasOwnDir) {
338363
// -> ./folder
339-
info.shortNotation = path.dirname(pathObj.dir);
364+
info.shortNotation = path.dirname(pathObj.dir).replace(prefixMatcher, '');
365+
info.patternGroupOrder = Pattern.prototype.setPatternOrderDataForInfo(
366+
path.dirname(pathObj.dir)
367+
);
340368
} else {
341369
// -> ./folder/folder
342370
info.shortNotation = pathObj.dir
343371
.split(/\/|\\/, 2)
344-
.map(o => o.replace(prefixMatcher, ''))
372+
.map((o, i) => {
373+
if (i === 0) {
374+
info.patternGroupOrder = Pattern.prototype.setPatternOrderDataForInfo(
375+
o
376+
);
377+
}
378+
379+
if (i === 1) {
380+
info.patternSubgroupOrder = Pattern.prototype.setPatternOrderDataForInfo(
381+
o
382+
);
383+
}
384+
385+
return o.replace(prefixMatcher, '');
386+
})
345387
.join('-')
346388
.replace(new RegExp(`-${info.dir}$`), '');
347389
info.verbosePartial = pathObj.dir

packages/core/src/lib/readDocumentation.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ module.exports = function(pattern, patternlab, isVariant) {
8585
try {
8686
const markdownFileNameGroup = path.resolve(
8787
patternlab.config.paths.source.patterns,
88-
path.parse(pattern.subdir).dir,
88+
path.parse(pattern.subdir).dir || pattern.subdir,
8989
GROUP_DOC_PREFIX + pattern.patternGroup + FILE_EXTENSION
9090
);
9191
const markdownFileContentsGroup = fs.readFileSync(

packages/core/src/lib/ui_builder.js

Lines changed: 58 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,15 @@ const ui_builder = function() {
159159
);
160160
}
161161

162+
/**
163+
* Sorts the given patterns in the way they are ment to be sorted
164+
* @param {array} patterns which should be sorted
165+
* @returns a sorted array of patterns
166+
*/
167+
function getSortedPatterns(patterns) {
168+
return _.sortBy(patterns, ['order', 'variantOrder', 'name']);
169+
}
170+
162171
/**
163172
* Registers flat patterns with the patternGroups object
164173
* This is a new menu group like atoms
@@ -307,9 +316,8 @@ const ui_builder = function() {
307316

308317
const patternSubgroup = getPatternSubgroup(patternlab, pattern);
309318
patternSubgroup.patternSubgroupItems.push(newSubgroupItem);
310-
patternSubgroup.patternSubgroupItems = _.sortBy(
311-
patternSubgroup.patternSubgroupItems,
312-
['order', 'variantOrder', 'name']
319+
patternSubgroup.patternSubgroupItems = getSortedPatterns(
320+
patternSubgroup.patternSubgroupItems
313321
);
314322
}
315323

@@ -339,65 +347,7 @@ const ui_builder = function() {
339347
} else {
340348
patternGroup.patternItems.push(createPatternSubgroupItem(pattern));
341349
}
342-
patternGroup.patternItems = _.sortBy(patternGroup.patternItems, [
343-
'order',
344-
'variantOrder',
345-
'name',
346-
]);
347-
}
348-
349-
/**
350-
* Sorts patterns based on order property found within pattern markdown, falling back on name.
351-
* @param patternsArray - patterns to sort
352-
* @returns sorted patterns
353-
*/
354-
function sortPatterns(patternsArray) {
355-
return patternsArray.sort(function(a, b) {
356-
let aOrder = parseInt(a.order, 10);
357-
const bOrder = parseInt(b.order, 10);
358-
359-
if (aOrder === NaN) {
360-
aOrder = Number.MAX_SAFE_INTEGER;
361-
}
362-
363-
if (bOrder === NaN) {
364-
aOrder = Number.MAX_SAFE_INTEGER;
365-
}
366-
367-
// always return a docPattern first
368-
if (a.isDocPattern && !b.isDocPattern) {
369-
return -1;
370-
}
371-
372-
if (!a.isDocPattern && b.isDocPattern) {
373-
return 1;
374-
}
375-
376-
// use old alphabetical ordering if we have nothing else to use
377-
// pattern.order will be Number.MAX_SAFE_INTEGER if never defined by markdown, or markdown parsing fails
378-
if (
379-
aOrder === Number.MAX_SAFE_INTEGER &&
380-
bOrder === Number.MAX_SAFE_INTEGER
381-
) {
382-
if (a.name > b.name) {
383-
return 1;
384-
}
385-
if (a.name < b.name) {
386-
return -1;
387-
}
388-
}
389-
390-
// if we get this far, we can sort safely
391-
if (aOrder && bOrder) {
392-
if (aOrder > bOrder) {
393-
return 1;
394-
}
395-
if (aOrder < bOrder) {
396-
return -1;
397-
}
398-
}
399-
return 0;
400-
});
350+
patternGroup.patternItems = getSortedPatterns(patternGroup.patternItems);
401351
}
402352

403353
/**
@@ -485,7 +435,7 @@ const ui_builder = function() {
485435
pattern => pattern.patternGroup === patternGroup && pattern.isFlatPattern
486436
);
487437
if (patterns) {
488-
return sortPatterns(patterns);
438+
return getSortedPatterns(patterns);
489439
}
490440
return [];
491441
}
@@ -518,6 +468,45 @@ const ui_builder = function() {
518468
});
519469
}
520470

471+
/**
472+
* Sorts the pattern groups for the view all page as they are meant to be sorted.
473+
* Therefore the function searches for the subgroup in the patternGroupItems and retrieves its sorting.
474+
* @param patternGroup The pattern group object with it's subgroups
475+
* @param patternGroupName the pattern group name e.g. atoms
476+
* @param patternlab - global data store
477+
* @returns a sorted list of pattern groups
478+
*/
479+
function getSortedPatternSubgroups(
480+
patternGroup,
481+
patternGroupName,
482+
patternlab
483+
) {
484+
return _.sortBy(_.values(patternGroup), [
485+
pSubgroup => {
486+
const group = patternlab.patternGroups.find(
487+
g => g.patternGroup === patternGroupName
488+
);
489+
490+
if (group) {
491+
const sg = group.patternGroupItems.find(item => {
492+
const firstPattern = _.first(
493+
_.values(pSubgroup).filter(p => p.patternBaseName !== '.')
494+
);
495+
return (
496+
item &&
497+
firstPattern &&
498+
firstPattern.patternSubgroup === item.patternSubgroup
499+
);
500+
});
501+
502+
return sg ? sg.order : 0;
503+
} else {
504+
return 0;
505+
}
506+
},
507+
]);
508+
}
509+
521510
/**
522511
* Constructs viewall pages for each set of grouped patterns
523512
* @param mainPageHeadHtml - the already built main page HTML
@@ -536,8 +525,10 @@ const ui_builder = function() {
536525

537526
// loop through the grouped styleguide patterns, building at each level
538527
const allPatternGroupPromises = _.map(
539-
styleguidePatterns.patternGroups,
540-
(patternGroup, patternGroupName) => {
528+
patternlab.patternGroups,
529+
patternGroup => {
530+
const patternGroupName = patternGroup.patternGroup;
531+
const group = styleguidePatterns.patternGroups[patternGroupName];
541532
let groupedPatterns = [];
542533
let styleguideGroupedPatterns = [];
543534
const styleGuideExcludes = patternlab.config.styleGuideExcludes || [];
@@ -546,7 +537,7 @@ const ui_builder = function() {
546537
* View all pages for subgroups
547538
*/
548539
const subgroupPromises = _.map(
549-
_.values(patternGroup),
540+
getSortedPatternSubgroups(group, patternGroupName, patternlab),
550541
(patternSubgroups, patternSubgroup, originalPatternGroup) => {
551542
let p;
552543
const samplePattern = _.find(
@@ -571,7 +562,7 @@ const ui_builder = function() {
571562
return buildFooter(patternlab, `viewall-${patternPartial}`, uikit)
572563
.then(footerHTML => {
573564
// render the viewall template by finding these smallest subgroup-grouped patterns
574-
const subgroupPatterns = sortPatterns(
565+
const subgroupPatterns = getSortedPatterns(
575566
_.values(patternSubgroups)
576567
);
577568

packages/development-edition-engine-handlebars/package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"pl:help": "patternlab --help",
99
"pl:install": "patternlab install --config ./patternlab-config.json",
1010
"pl:serve": "patternlab serve --config ./patternlab-config.json",
11-
"pl:starterkit": "patternlab add --starterkits @pattern-lab/starterkit-handlebars-vanilla",
11+
"pl:starterkit": "patternlab add --starterkits @pattern-lab/starterkit-handlebars-demo",
1212
"pl:version": "patternlab --version",
1313
"dev": "node ./node_modules/@pattern-lab/uikit-workshop/build-tools.js"
1414
},
@@ -34,8 +34,7 @@
3434
"@pattern-lab/engine-handlebars": "^5.10.1",
3535
"@pattern-lab/engine-mustache": "^5.12.0",
3636
"@pattern-lab/plugin-tab": "^5.13.0",
37-
"@pattern-lab/starterkit-handlebars-vanilla": "1.4.0",
38-
"@pattern-lab/starterkit-mustache-demo": "^5.0.0",
37+
"@pattern-lab/starterkit-handlebars-demo": "^5.11.1",
3938
"@pattern-lab/uikit-workshop": "^5.13.3"
4039
}
4140
}

packages/development-edition-engine-twig/patternlab-config.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"cacheBust": true,
33
"cleanPublic": true,
4-
"defaultPattern": "pages-homepage",
4+
"defaultPattern": "all",
55
"defaultShowPatternInfo": false,
66
"ishControlsHide": {
77
"s": false,
@@ -105,11 +105,11 @@
105105
"engines": {
106106
"twig": {
107107
"namespaces": {
108-
"atoms": "source/_patterns/00-atoms/",
109-
"molecules": "source/_patterns/01-molecules/",
110-
"organisms": "source/_patterns/02-organisms/",
111-
"templates": "source/_patterns/03-templates/",
112-
"pages": "source/_patterns/04-pages/",
108+
"atoms": "source/_patterns/atoms/",
109+
"molecules": "source/_patterns/molecules/",
110+
"organisms": "source/_patterns/organisms/",
111+
"templates": "source/_patterns/templates/",
112+
"pages": "source/_patterns/pages/",
113113
"macros": "source/_macros/"
114114
}
115115
}

packages/starterkit-handlebars-demo/dist/_meta/_01-foot.hbs

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)