Skip to content

Commit 7d65e04

Browse files
committed
Enhance Accordion documentation: add target configurations and properties
1 parent 38d916f commit 7d65e04

File tree

5 files changed

+126
-117
lines changed

5 files changed

+126
-117
lines changed

examples/markdown/docs/lightning-web-components/accordion.md

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,47 +4,54 @@
44

55
Accordion
66

7-
Targets
8-
7+
## Targets
98
- lightningCommunity__Default
109
- lightningCommunity__Page
1110

11+
## Target Configs
12+
1213
### lightningCommunity__Default
1314

1415
#### Properties
1516

16-
**contextUrlParam**
17+
**Context URL Parameter** `contextUrlParam`
18+
19+
Optional - The name of the URL parameter that contains the context ID.
20+
21+
- **Type:** String
22+
- **Required:** false
23+
24+
**Preview Context ID** `previewContextId`
25+
26+
Optional - The ID of the context record to use when previewing the component in the builder.
27+
28+
- **Type:** String
29+
- **Required:** false
30+
31+
**Formula Expression** `expr`
1732

18-
- Type: String
19-
- Required: false
20-
- Description: Optional - The name of the URL parameter that contains the context ID.
33+
Formula expression to be evaluated.
2134

22-
**previewContextId**
35+
- **Type:** String
36+
- **Required:** true
2337

24-
- Type: String
25-
- Required: false
26-
- Description: Optional - The ID of the context record to use when previewing the component in the builder.
38+
**Respect Sharing** `respectSharing`
2739

28-
**expr**
40+
Whether to run the evaluation with or without sharing.
2941

30-
- Type: String
31-
- Required: true
32-
- Description: Formula expression to be evaluated.
42+
- **Type:** Boolean
43+
- **Required:** false
3344

34-
**respectSharing**
45+
**Auto Collapse** `autoCollapse`
3546

36-
- Type: Boolean
37-
- Required: false
38-
- Description: Whether to run the evaluation with or without sharing.
47+
Whether to automatically collapse the accordion when a new section is expanded.
3948

40-
**autoCollapse**
49+
- **Type:** Boolean
50+
- **Required:** false
4151

42-
- Type: Boolean
43-
- Required: false
44-
- Description: Whether to automatically collapse the accordion when a new section is expanded.
52+
**Flush Style** `flushStyle`
4553

46-
**flushStyle**
54+
Removes the background color and rounded borders from the accordion component.
4755

48-
- Type: Boolean
49-
- Required: false
50-
- Description: Removes the background color and rounded borders from the accordion component.
56+
- **Type:** Boolean
57+
- **Required:** false

src/core/markdown/__test__/generating-lwc-docs.spec.ts

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -257,22 +257,14 @@ export default class RecordViewer extends LightningElement {
257257
expect(data).firstDocContains('- lightning__AppPage');
258258
expect(data).firstDocContains('- lightning__RecordPage');
259259
expect(data).firstDocContains('lightningCommunity__Default');
260-
expect(data).firstDocContains(' Properties');
261-
expect(data).firstDocContains('**communityTitle**');
262-
expect(data).firstDocContains('- Type: String');
263-
expect(data).firstDocContains('- Required: true');
260+
expect(data).firstDocContains(' Target Configs');
261+
expect(data).firstDocContains('`communityTitle`');
264262
expect(data).firstDocContains('lightning__AppPage');
265-
expect(data).firstDocContains('**appPageTitle**');
266-
expect(data).firstDocContains('- Type: String');
267-
expect(data).firstDocContains('- Required: false');
263+
expect(data).firstDocContains('`appPageTitle`');
268264
expect(data).firstDocContains('lightning__RecordPage');
269-
expect(data).firstDocContains('**recordId**');
270-
expect(data).firstDocContains('- Type: String');
271-
expect(data).firstDocContains('- Required: true');
272-
expect(data).firstDocContains('**showDetails**');
273-
expect(data).firstDocContains('- Type: Boolean');
274-
expect(data).firstDocContains('- Required: false');
275-
expect(data).firstDocContains('- Description: Whether to show detailed information');
265+
expect(data).firstDocContains('`recordId`');
266+
expect(data).firstDocContains('`showDetails`');
267+
expect(data).firstDocContains('Whether to show detailed information');
276268
});
277269
});
278270

@@ -367,11 +359,11 @@ export default class MinimalComponent extends LightningElement {}`;
367359
expect(data).firstDocContains('- lightningCommunity__Default');
368360
expect(data).firstDocContains('- lightning__AppPage');
369361
expect(data).firstDocContains('lightningCommunity__Default');
370-
expect(data).firstDocContains(' Properties');
371-
expect(data).firstDocContains('**recordId**');
372-
expect(data).firstDocContains('- Type: String');
373-
expect(data).firstDocContains('- Required: true');
374-
expect(data).firstDocContains('- Description: The ID of the record to display');
362+
expect(data).firstDocContains('Target Configs');
363+
expect(data).firstDocContains('`recordId`');
364+
expect(data).firstDocContains('- **Type:** String');
365+
expect(data).firstDocContains('- **Required:** true');
366+
expect(data).firstDocContains('The ID of the record to display');
375367
});
376368
});
377369
});

src/core/markdown/adapters/__tests__/lwc-adapter.spec.ts

Lines changed: 57 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,26 @@
11
import { LwcMetadata } from '../../../reflection/lwc/reflect-lwc-source';
22
import { lwcMetadataToRenderable } from '../type-to-renderable';
3+
import { MarkdownGeneratorConfig } from '../../generate-docs';
34

45
describe('LWC Adapter', () => {
6+
const defaultConfig: MarkdownGeneratorConfig = {
7+
targetDir: '',
8+
scope: ['global', 'public'],
9+
customObjectVisibility: ['public'],
10+
namespace: '',
11+
defaultGroupName: 'Miscellaneous',
12+
customObjectsGroupName: 'Custom Objects',
13+
triggersGroupName: 'Triggers',
14+
referenceGuideTemplate: '',
15+
sortAlphabetically: false,
16+
linkingStrategy: 'relative',
17+
referenceGuideTitle: 'Apex Reference Guide',
18+
includeFieldSecurityMetadata: true,
19+
includeInlineHelpTextMetadata: true,
20+
exclude: [],
21+
excludeTags: [],
22+
};
23+
524
describe('lwcMetadataToRenderable', () => {
625
it('converts LWC metadata to renderable with correct type', () => {
726
const lwcMetadata: LwcMetadata = {
@@ -12,7 +31,7 @@ describe('LWC Adapter', () => {
1231
masterLabel: 'Test Component',
1332
};
1433

15-
const renderable = lwcMetadataToRenderable(lwcMetadata);
34+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
1635

1736
expect(renderable.type).toBe('lwc');
1837
});
@@ -26,7 +45,7 @@ describe('LWC Adapter', () => {
2645
masterLabel: 'Test Component',
2746
};
2847

29-
const renderable = lwcMetadataToRenderable(lwcMetadata);
48+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
3049

3150
expect(renderable.headingLevel).toBe(1);
3251
});
@@ -40,7 +59,7 @@ describe('LWC Adapter', () => {
4059
masterLabel: 'My Awesome Component',
4160
};
4261

43-
const renderable = lwcMetadataToRenderable(lwcMetadata);
62+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
4463

4564
expect(renderable.heading).toBe('MyAwesomeComponent');
4665
});
@@ -54,7 +73,7 @@ describe('LWC Adapter', () => {
5473
masterLabel: 'Data Table Component',
5574
};
5675

57-
const renderable = lwcMetadataToRenderable(lwcMetadata);
76+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
5877

5978
expect(renderable.name).toBe('DataTableComponent');
6079
});
@@ -68,7 +87,7 @@ describe('LWC Adapter', () => {
6887
masterLabel: 'Test Component',
6988
};
7089

71-
const renderable = lwcMetadataToRenderable(lwcMetadata);
90+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
7291

7392
expect(renderable.doc.description).toBeUndefined();
7493
});
@@ -82,9 +101,9 @@ describe('LWC Adapter', () => {
82101
masterLabel: 'Test Component',
83102
};
84103

85-
const renderable = lwcMetadataToRenderable(lwcMetadata);
104+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
86105

87-
expect(renderable.doc.description).toEqual(['A comprehensive test component']);
106+
expect(renderable.description).toEqual('A comprehensive test component');
88107
});
89108

90109
it('works with components that have special characters in names', () => {
@@ -96,7 +115,7 @@ describe('LWC Adapter', () => {
96115
masterLabel: 'Custom Component V2',
97116
};
98117

99-
const renderable = lwcMetadataToRenderable(lwcMetadata);
118+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
100119

101120
expect(renderable.name).toBe('custom_component_v2');
102121
expect(renderable.heading).toBe('custom_component_v2');
@@ -111,7 +130,7 @@ describe('LWC Adapter', () => {
111130
masterLabel: 'My Custom Data Component',
112131
};
113132

114-
const renderable = lwcMetadataToRenderable(lwcMetadata);
133+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
115134

116135
expect(renderable.name).toBe('myCustomDataComponent');
117136
expect(renderable.heading).toBe('myCustomDataComponent');
@@ -126,7 +145,7 @@ describe('LWC Adapter', () => {
126145
masterLabel: 'My Custom Data Component',
127146
};
128147

129-
const renderable = lwcMetadataToRenderable(lwcMetadata);
148+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
130149

131150
expect(renderable.name).toBe('MyCustomDataComponent');
132151
expect(renderable.heading).toBe('MyCustomDataComponent');
@@ -141,18 +160,18 @@ describe('LWC Adapter', () => {
141160
masterLabel: 'Another Component',
142161
};
143162

144-
const renderable = lwcMetadataToRenderable(lwcMetadata);
163+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
145164

146165
// Verify the renderable has the expected structure
147166
expect(renderable).toHaveProperty('type', 'lwc');
148167
expect(renderable).toHaveProperty('headingLevel', 1);
149168
expect(renderable).toHaveProperty('heading');
150169
expect(renderable).toHaveProperty('name');
151170
expect(renderable).toHaveProperty('doc');
152-
expect(renderable.doc).toHaveProperty('description');
171+
expect(renderable).toHaveProperty('description');
153172
});
154173

155-
it('includes isExposed information in custom tags when component is exposed', () => {
174+
it('includes isExposed information when component is exposed', () => {
156175
const lwcMetadata: LwcMetadata = {
157176
description: 'Test component description',
158177
type_name: 'lwc',
@@ -161,11 +180,9 @@ describe('LWC Adapter', () => {
161180
masterLabel: 'Test Component',
162181
};
163182

164-
const renderable = lwcMetadataToRenderable(lwcMetadata);
183+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
165184

166-
expect(renderable.doc.customTags).toBeDefined();
167-
expect(renderable.doc.customTags![0].name).toBe('exposed');
168-
expect(renderable.doc.customTags![0].description).toContain('`Exposed`');
185+
expect(renderable.exposed).toBe(true);
169186
});
170187

171188
it('does not include isExposed information when component is not exposed', () => {
@@ -177,12 +194,12 @@ describe('LWC Adapter', () => {
177194
masterLabel: 'Test Component',
178195
};
179196

180-
const renderable = lwcMetadataToRenderable(lwcMetadata);
197+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
181198

182-
expect(renderable.doc.customTags).toBeUndefined();
199+
expect(renderable.exposed).toBe(false);
183200
});
184201

185-
it('includes master label information in custom tags', () => {
202+
it('includes master label information', () => {
186203
const lwcMetadata: LwcMetadata = {
187204
description: 'Test component description',
188205
type_name: 'lwc',
@@ -191,14 +208,12 @@ describe('LWC Adapter', () => {
191208
masterLabel: 'Test Component Label',
192209
};
193210

194-
const renderable = lwcMetadataToRenderable(lwcMetadata);
211+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
195212

196-
expect(renderable.doc.customTags).toBeDefined();
197-
expect(renderable.doc.customTags![0].name).toBe('exposed');
198-
expect(renderable.doc.customTags![0].description).toContain('`Exposed`');
213+
expect(renderable.exposed).toBe(true);
199214
});
200215

201-
it('includes targets information in custom tags when available', () => {
216+
it('includes targets information when available', () => {
202217
const lwcMetadata: LwcMetadata = {
203218
description: 'Test component description',
204219
type_name: 'lwc',
@@ -210,19 +225,14 @@ describe('LWC Adapter', () => {
210225
},
211226
};
212227

213-
const renderable = lwcMetadataToRenderable(lwcMetadata);
228+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
214229

215-
expect(renderable.doc.customTags).toBeDefined();
216-
expect(renderable.doc.customTags![0].name).toBe('exposed');
217-
expect(renderable.doc.customTags![0].description).toContain('`Exposed`');
218-
expect(renderable.doc.customTags![1].name).toBe('targets');
219-
expect(renderable.doc.customTags![1].description).toEqual([
220-
'- lightningCommunity__Default',
221-
'- lightning__AppPage',
222-
]);
230+
expect(renderable.targets.value).toEqual(['lightningCommunity__Default', 'lightning__AppPage']);
231+
expect(renderable.targets.heading).toBe('Targets');
232+
expect(renderable.targets.headingLevel).toBe(2);
223233
});
224234

225-
it('includes target configs information in custom tags when available', () => {
235+
it('includes target configs information when available', () => {
226236
const lwcMetadata: LwcMetadata = {
227237
description: 'Test component description',
228238
type_name: 'lwc',
@@ -247,18 +257,17 @@ describe('LWC Adapter', () => {
247257
},
248258
};
249259

250-
const renderable = lwcMetadataToRenderable(lwcMetadata);
251-
252-
expect(renderable.doc.customTags).toBeDefined();
253-
expect(renderable.doc.customTags![0].name).toBe('exposed');
254-
expect(renderable.doc.customTags![0].description).toContain('`Exposed`');
255-
expect(renderable.doc.customTags![1].name).toBe('targetConfig');
256-
expect(renderable.doc.customTags![1].description).toContain('### lightningCommunity__Default');
257-
expect(renderable.doc.customTags![1].description).toContain('#### Properties');
258-
expect(renderable.doc.customTags![1].description).toContain('**recordId**');
259-
expect(renderable.doc.customTags![1].description).toContain('- Type: String');
260-
expect(renderable.doc.customTags![1].description).toContain('- Required: true');
261-
expect(renderable.doc.customTags![1].description).toContain('- Description: The ID of the record to display');
260+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
261+
262+
expect(renderable.targetConfigs.value).toHaveLength(1);
263+
expect(renderable.targetConfigs.value[0].targetName).toBe('lightningCommunity__Default');
264+
expect(renderable.targetConfigs.value[0].properties).toHaveLength(1);
265+
expect(renderable.targetConfigs.value[0].properties[0].name).toBe('recordId');
266+
expect(renderable.targetConfigs.value[0].properties[0].type).toBe('String');
267+
expect(renderable.targetConfigs.value[0].properties[0].required).toBe(true);
268+
expect(renderable.targetConfigs.value[0].properties[0].description).toBe('The ID of the record to display');
269+
expect(renderable.targetConfigs.heading).toBe('Target Configs');
270+
expect(renderable.targetConfigs.headingLevel).toBe(2);
262271
});
263272

264273
it('handles components with no additional metadata gracefully', () => {
@@ -270,7 +279,7 @@ describe('LWC Adapter', () => {
270279
masterLabel: 'Test Component',
271280
};
272281

273-
const renderable = lwcMetadataToRenderable(lwcMetadata);
282+
const renderable = lwcMetadataToRenderable(lwcMetadata, defaultConfig);
274283

275284
expect(renderable.doc.description).toBeUndefined();
276285
});

src/core/markdown/adapters/type-to-renderable.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ export function lwcMetadataToRenderable(metadata: LwcMetadata, config: MarkdownG
447447
description: prop['@_description'],
448448
required: prop['@_required'] ?? false,
449449
type: prop['@_type'],
450-
label: prop['@_label'] ?? '',
450+
label: prop['@_label'] ?? prop['@_name'],
451451
name: prop['@_name'],
452452
}))
453453
}

0 commit comments

Comments
 (0)