@@ -12,6 +12,139 @@ import { MatListModule } from '@angular/material/list';
12
12
<h2>API Documentation</h2>
13
13
14
14
<div class=" mt-8 flex flex-col gap-8">
15
+ <div>
16
+ <h3>Main Function</h3>
17
+ @let mainFunction = apiDoc().mainFunction;
18
+
19
+ <div class="mt-4 flex flex-col gap-4">
20
+ <div class="card flex-col">
21
+ <h4>{{ mainFunction.name }}</h4>
22
+ <p>{{ mainFunction.description }}</p>
23
+
24
+ <div class="mt-4">
25
+ <h5>Parameters</h5>
26
+ <div class="flex flex-col gap-4">
27
+ @for (param of mainFunction.parameters; track param.name) {
28
+ <div class="p-4 rounded-lg odd:bg-gray-50 dark:odd:bg-gray-900">
29
+ <div class="grid grid-cols-1 gap-2 rounded-lg md:grid-cols-4 md:gap-6">
30
+ <div class="flex flex-col items-start gap-2">
31
+ <code>{{ param.name }}: {{ param.type }}</code>
32
+ @if (param.isOptional) {
33
+ <span class="text-xs text-gray-500">Optional</span>
34
+ }
35
+ </div>
36
+ <div class="flex-col gap-4 md:col-span-3">
37
+ <p class="text-sm">
38
+ {{ param.description }}
39
+ @if (param.defaultValue) {
40
+ <div class="pt-4">
41
+ Default value
42
+ <code>{{ param.defaultValue }}</code>
43
+ </div>
44
+ }
45
+ </p>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ }
50
+ </div>
51
+ </div>
52
+
53
+ <div class="mt-4">
54
+ <h5>Returns</h5>
55
+ <div class="p-4 rounded-lg odd:bg-gray-50 dark:odd:bg-gray-900">
56
+ <div class="grid grid-cols-1 gap-2 rounded-lg md:grid-cols-4 md:gap-6">
57
+ <div class="flex flex-col items-start gap-2">
58
+ <code>{{ mainFunction.returnType }}</code>
59
+ </div>
60
+ <div class="flex-col gap-4 md:col-span-3">
61
+ <p class="text-sm">{{ mainFunction.returnDescription }}</p>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </div>
69
+
70
+ <div>
71
+ <h3>Returned Properties</h3>
72
+ @let returnedProperties = apiDoc().returnedProperties;
73
+
74
+ <div class="mt-4 flex flex-col gap-4">
75
+ <div class="card flex-col">
76
+ <div class="flex flex-col gap-8">
77
+ @for (property of returnedProperties; track property.name) {
78
+ <div class="p-4 rounded-lg odd:bg-gray-50 dark:odd:bg-gray-900">
79
+ <div class="grid grid-cols-1 gap-2 rounded-lg md:grid-cols-2 md:gap-6 md:items-center">
80
+ <div class="flex flex-col items-start gap-2">
81
+ <code>{{ property.name }}: {{ property.type }}</code>
82
+ </div>
83
+ <div class="flex-col gap-4">
84
+ <p class="text-sm">
85
+ {{ property.description }}
86
+ @if (property.defaultValue) {
87
+ <div class="pt-4">
88
+ Default value
89
+ <code>{{ property.defaultValue }}</code>
90
+ </div>
91
+ }
92
+ </p>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ }
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+
102
+ <div>
103
+ <h3>Returned Methods</h3>
104
+ @let returnedMethods = apiDoc().returnedMethods;
105
+
106
+ <div class="mt-4 flex flex-col gap-4">
107
+ <div class="card flex-col">
108
+ <div class="flex flex-col gap-8">
109
+ @for (method of returnedMethods; track method.name) {
110
+ <div class="p-4 rounded-lg odd:bg-gray-50 dark:odd:bg-gray-900">
111
+ <div class="grid grid-cols-1 gap-2 rounded-lg md:grid-cols-4 md:gap-6">
112
+ <div class="flex flex-col items-start gap-2">
113
+ <code>{{ method.name }}()</code>
114
+ </div>
115
+ <div class="flex-col gap-4 md:col-span-3">
116
+ <p class="text-sm">{{ method.description }}</p>
117
+
118
+ @if (method.parameters.length > 0) {
119
+ <div class="mt-4">
120
+ <h6>Parameters</h6>
121
+ <div class="flex flex-col gap-2">
122
+ @for (param of method.parameters; track param.name) {
123
+ <div class="flex flex-row gap-4 items-center">
124
+ <code class="whitespace-nowrap">{{ param.name }}: {{ param.type }}</code>
125
+ <span class="text-sm flex-1">{{ param.description }}</span>
126
+ </div>
127
+ }
128
+ </div>
129
+ </div>
130
+ }
131
+
132
+ <div class="mt-4">
133
+ <h6>Returns</h6>
134
+ <div class="flex flex-row gap-4 items-center">
135
+ <code class="whitespace-nowrap">{{ method.returnType }}</code>
136
+ <span class="text-sm flex-1">{{ method.returnDescription }}</span>
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
142
+ }
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </div>
147
+
15
148
<div>
16
149
<h3>Options</h3>
17
150
@let interfaces = apiDoc().interfaces;
@@ -24,7 +157,7 @@ import { MatListModule } from '@angular/material/list';
24
157
25
158
<div class="flex flex-col gap-8">
26
159
@for (property of interface.properties; track property.name) {
27
- <div class="p-4 odd:bg-gray-50 dark:odd:bg-gray-900">
160
+ <div class="p-4 rounded-lg odd:bg-gray-50 dark:odd:bg-gray-900">
28
161
<div
29
162
class="grid grid-cols-1 gap-2 rounded-lg md:grid-cols-4 md:gap-6"
30
163
>
@@ -121,6 +254,38 @@ import { MatListModule } from '@angular/material/list';
121
254
}
122
255
</div>
123
256
</div>
257
+
258
+ <div>
259
+ <h3>Generics</h3>
260
+ @let generics = apiDoc().generics;
261
+
262
+ <div class="mt-4 flex flex-col gap-4">
263
+ <div class="card flex-col">
264
+ <div class="flex flex-col gap-8">
265
+ @for (generic of generics; track generic.name) {
266
+ <div class="p-4 rounded-lg odd:bg-gray-50 dark:odd:bg-gray-900">
267
+ <div class="grid grid-cols-1 gap-2 rounded-lg md:grid-cols-4 md:gap-6">
268
+ <div class="flex flex-col items-start gap-2">
269
+ <code>{{ generic.name }}: {{ generic.type }}</code>
270
+ </div>
271
+ <div class="flex-col gap-4 md:col-span-3">
272
+ <p class="text-sm">
273
+ {{ generic.description }}
274
+ @if (generic.defaultValue) {
275
+ <div class="pt-4">
276
+ Default value
277
+ <code>{{ generic.defaultValue }}</code>
278
+ </div>
279
+ }
280
+ </p>
281
+ </div>
282
+ </div>
283
+ </div>
284
+ }
285
+ </div>
286
+ </div>
287
+ </div>
288
+ </div>
124
289
</div>
125
290
` ,
126
291
styles : `
@@ -354,6 +519,23 @@ export class ApiComponent {
354
519
] ,
355
520
} ,
356
521
] ,
522
+ generics : [
523
+ {
524
+ name : 'T' ,
525
+ type : 'Type' ,
526
+ description : 'The type of the resource items being managed. This is a generic type parameter that should be specified when using the resource.' ,
527
+ } ,
528
+ {
529
+ name : 'ID' ,
530
+ type : 'Type' ,
531
+ description : 'The type of the ID field for the resource items. This is typically a string or number.' ,
532
+ } ,
533
+ {
534
+ name : 'E' ,
535
+ type : 'Type' ,
536
+ description : 'The type of error that can be returned by the API. This is a generic type parameter that can be specified when using the resource.' ,
537
+ } ,
538
+ ] ,
357
539
interfaces : [
358
540
{
359
541
name : 'RestResourceOptions<T, ID>' ,
@@ -525,4 +707,5 @@ interface ApiDocumentation {
525
707
interfaces : ApiInterface [ ] ;
526
708
returnedProperties : ApiProperty [ ] ;
527
709
returnedMethods : ApiMethod [ ] ;
710
+ generics ?: ApiProperty [ ] ;
528
711
}
0 commit comments