Skip to content

Commit 9066f4a

Browse files
authored
fix(tools): cem demo paths and dev server (#2917)
* docs: cem config for elements * fix(tools): filter demos in dev server: only show those directly relevant to tagName * fix(tools): redirect demos based on filename * docs: fix build * fix(tools): hard-code "elements" path into demos we'll eventually remove this helper altogether * chore: deps
1 parent 6c1eba7 commit 9066f4a

File tree

10 files changed

+93
-64
lines changed

10 files changed

+93
-64
lines changed

.changeset/moody-corners-help.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
"@patternfly/pfe-tools": patch
3+
---
4+
Fix the manifest helper's demo `filePath` field.

docs/components.11tydata.cjs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module.exports = {
2+
layout: 'layout-basic.njk',
3+
templateEngineOverride: 'njk,md',
4+
tags: ['component'],
5+
permalink: '/components/{{ element.slug }}/index.html',
6+
package: '{{ element.package }}',
7+
description: '{{ element.description }}',
8+
pagination: {
9+
data: 'elements',
10+
size: 1,
11+
alias: 'element',
12+
before: xs => xs.filter(x => !!x.docsTemplatePath),
13+
},
14+
};
Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,3 @@
1-
---js
2-
{
3-
layout: 'layout-basic.njk',
4-
templateEngineOverride: 'njk,md',
5-
tags: ['component'],
6-
permalink: '/components/{{ element.slug }}/index.html',
7-
package: '{{ element.package }}',
8-
description: '{{ element.description }}',
9-
pagination: {
10-
data: 'elements',
11-
size: 1,
12-
alias: 'element',
13-
before: xs => xs.filter(x => !!x.docsTemplatePath),
14-
}
15-
}
16-
---
17-
181
<script type="module">
192
const CLASS_KEY = 'html-lit-react-snippets';
203
const LS_KEY = `${CLASS_KEY}-index`;

docs/components/demos.11tydata.cjs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
1+
const { dirname } = require('path');
12
module.exports = {
23
templateEngineOverride: 'njk',
34
permalink: '{{ demo.permalink }}',
45
pagination: {
56
data: 'demos',
67
alias: 'demo',
78
size: 1,
8-
before: xs => xs.filter(x => x.permalink),
9+
// somehow the main pf-icon demo is being printed twice.
10+
// so we'll group by tag name, and only take the first of each.
11+
before: demos => Object.values(Object.groupBy(demos
12+
.filter(demo => demo.permalink?.includes(demo.tagName))
13+
.map(demo => {
14+
if (demo.filePath?.endsWith(`${demo.tagName}.html`)) {
15+
return {
16+
...demo,
17+
permalink: `${dirname(demo.permalink)}/`,
18+
};
19+
} else {
20+
return demo;
21+
}
22+
}), demo => demo.tagName)).map(([x]) => x),
923
},
1024
};

elements/.config/cem.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ generate:
99
output: custom-elements.json
1010
noDefaultExcludes: false
1111
demoDiscovery:
12-
fileGlob: ./*/demo/*.html
13-
urlPattern: (?P<tag>[\\w-]+)/demo/(?P<demo>[\\w-]+).html
14-
urlTemplate: https://patternflyelements.org/components/{tag}/{demo}/
12+
fileGlob: '*/demo/*.html'
13+
urlPattern: pf-(?P<tag>[\w-]+)/demo/(?P<demo>[\w-]+).html
14+
urlTemplate: https://patternflyelements.org/components/{tag}/demo/{demo}/

package-lock.json

Lines changed: 34 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@
290290
"@lit/react": "^1.0.5",
291291
"@octokit/core": "^6.1.2",
292292
"@patternfly/patternfly": "^4.224.5",
293-
"@pwrs/cem": "^0.2.2",
293+
"@pwrs/cem": "^0.2.3",
294294
"@rhds/elements": "^1.4.5",
295295
"@types/koa__router": "^12.0.4",
296296
"@types/node": "^22.15.32",
@@ -316,10 +316,10 @@
316316
"optionalDependencies": {
317317
"@esbuild/darwin-arm64": "^0.23.1",
318318
"@esbuild/linux-x64": "^0.23.1",
319-
"@pwrs/cem-darwin-arm64": "^0.2.2",
320-
"@pwrs/cem-darwin-x64": "^0.2.2",
321-
"@pwrs/cem-linux-arm64": "^0.2.2",
322-
"@pwrs/cem-linux-x64": "^0.2.2",
319+
"@pwrs/cem-darwin-arm64": "^0.2.3",
320+
"@pwrs/cem-darwin-x64": "^0.2.3",
321+
"@pwrs/cem-linux-arm64": "^0.2.3",
322+
"@pwrs/cem-linux-x64": "^0.2.3",
323323
"@rollup/rollup-darwin-arm64": "^4.21.0"
324324
},
325325
"workspaces": [

tools/pfe-tools/custom-elements-manifest/lib/Manifest.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,11 @@ export class Manifest {
314314
// strict removes all special characters from slug
315315
slug = slugify(slug, { strict: true, lower: true });
316316
const primaryElementName = deslugify(slug, options.rootDir);
317-
const filePath = demo.source?.href.replace(options.sourceControlURLPrefix, `${options.rootDir}/`) ?? '';
317+
const filePath =
318+
demo.source?.href.replace(
319+
options.sourceControlURLPrefix,
320+
`${join(options.rootDir, options.elementsDir)}/`,
321+
) ?? '';
318322
const [last = ''] = filePath.split('/').reverse();
319323
const filename = last.replace('.html', '');
320324
const isMainElementDemo = this.getTagNames().includes(filename);

tools/pfe-tools/dev-server/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { join } from 'node:path';
2323
const replace = fromRollup(rollupReplace);
2424

2525
type BaseConfig = DevServerConfig & PfeConfig;
26+
2627
export interface PfeDevServerConfigOptions extends BaseConfig {
2728
hostname?: string;
2829
litcssOptions?: LitCSSOptions;

tools/pfe-tools/dev-server/plugins/dev-server-templates.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,18 @@ async function getDemos(config: PfeDevServerInternalConfig) {
3636
manifest
3737
.getTagNames()
3838
.flatMap(tagName =>
39-
manifest.getDemoMetadata(tagName, config as PfeDevServerInternalConfig)));
39+
manifest.getDemoMetadata(tagName, config as PfeDevServerInternalConfig)
40+
.filter(demo => demo.filePath?.includes(tagName))
41+
.map(demo => {
42+
if (demo.filePath?.endsWith(`${tagName}.html`) || demo.filePath?.endsWith('index.html')) {
43+
return {
44+
...demo,
45+
permalink: dirname(demo.permalink),
46+
};
47+
} else {
48+
return demo;
49+
}
50+
})));
4051
}
4152

4253
async function getTemplateContent(demo?: DemoRecord) {
@@ -76,5 +87,3 @@ export function pfeDevServerTemplateMiddleware(config: PfeDevServerInternalConfi
7687
return next();
7788
};
7889
}
79-
80-

0 commit comments

Comments
 (0)