5
5
* LICENSE file in the root directory of this source tree.
6
6
* ========================================================================== */
7
7
8
+ import clsx from "clsx" ;
8
9
import { SchemaObject } from "../openapi/types" ;
9
10
import {
10
11
createClosingArrayBracket ,
@@ -338,41 +339,60 @@ function createDetailsNode(
338
339
className : "schemaItem" ,
339
340
children : [
340
341
createDetails ( {
342
+ className : "openapi-markdown__details" ,
341
343
children : [
342
344
createDetailsSummary ( {
343
345
children : [
344
- create ( "strong" , { children : name } ) ,
345
346
create ( "span" , {
346
- style : { opacity : "0.6" } ,
347
- children : ` ${ schemaName } ` ,
348
- } ) ,
349
- guard (
350
- ( schema . nullable && schema . nullable === true ) ||
351
- ( nullable && nullable === true ) ,
352
- ( ) => [
347
+ className : "openapi-schema__container" ,
348
+ children : [
353
349
create ( "strong" , {
354
- style : {
355
- fontSize : "var(--ifm-code-font-size)" ,
356
- color : "var(--openapi-nullable)" ,
357
- } ,
358
- children : " nullable" ,
350
+ className : clsx ( "openapi-schema__property" , {
351
+ "openapi-schema__strikethrough" : schema . deprecated ,
352
+ } ) ,
353
+ children : name ,
359
354
} ) ,
360
- ]
361
- ) ,
362
- guard (
363
- Array . isArray ( required )
364
- ? required . includes ( name )
365
- : required === true ,
366
- ( ) => [
367
- create ( "strong" , {
368
- style : {
369
- fontSize : "var(--ifm-code-font-size)" ,
370
- color : "var(--openapi-required)" ,
371
- } ,
372
- children : " required" ,
355
+ create ( "span" , {
356
+ className : "openapi-schema__name" ,
357
+ children : ` ${ schemaName } ` ,
373
358
} ) ,
374
- ]
375
- ) ,
359
+ guard (
360
+ ( Array . isArray ( required )
361
+ ? required . includes ( name )
362
+ : required === true ) ||
363
+ schema . deprecated ||
364
+ nullable ,
365
+ ( ) => [
366
+ create ( "span" , {
367
+ className : "openapi-schema__divider" ,
368
+ } ) ,
369
+ ]
370
+ ) ,
371
+ guard ( nullable , ( ) => [
372
+ create ( "span" , {
373
+ className : "openapi-schema__nullable" ,
374
+ children : "nullable" ,
375
+ } ) ,
376
+ ] ) ,
377
+ guard (
378
+ Array . isArray ( required )
379
+ ? required . includes ( name )
380
+ : required === true ,
381
+ ( ) => [
382
+ create ( "span" , {
383
+ className : "openapi-schema__required" ,
384
+ children : "required" ,
385
+ } ) ,
386
+ ]
387
+ ) ,
388
+ guard ( schema . deprecated , ( ) => [
389
+ create ( "span" , {
390
+ className : "openapi-schema__deprecated" ,
391
+ children : "deprecated" ,
392
+ } ) ,
393
+ ] ) ,
394
+ ] ,
395
+ } ) ,
376
396
] ,
377
397
} ) ,
378
398
create ( "div" , {
@@ -519,7 +539,7 @@ function createPropertyDiscriminator(
519
539
schema : SchemaObject ,
520
540
discriminator : any ,
521
541
required : string [ ] | boolean
522
- ) {
542
+ ) : any {
523
543
if ( schema === undefined ) {
524
544
return undefined ;
525
545
}
@@ -528,26 +548,61 @@ function createPropertyDiscriminator(
528
548
return undefined ;
529
549
}
530
550
531
- return create ( "SchemaItem" , {
532
- name,
533
- required : Array . isArray ( required ) ? required . includes ( name ) : required ,
534
- schemaName : schemaName ,
535
- qualifierMessage : getQualifierMessage ( schema ) ,
536
- schema : schema ,
537
- collapsible : false ,
538
- discriminator : true ,
539
- children : [
540
- create ( "DiscriminatorTabs" , {
541
- children : Object . keys ( discriminator ?. mapping ! ) . map ( ( key , index ) => {
542
- const label = key ;
543
- return create ( "TabItem" , {
544
- label : label ,
545
- value : `${ index } -item-discriminator` ,
546
- children : createNodes ( discriminator ?. mapping [ key ] ) ,
547
- } ) ;
551
+ return create ( "div" , {
552
+ className : "openapi-discriminator__item openapi-schema__list-item" ,
553
+ children : create ( "div" , {
554
+ children : [
555
+ create ( "span" , {
556
+ className : "openapi-schema__container" ,
557
+ children : [
558
+ create ( "strong" , {
559
+ className : "openapi-discriminator__name openapi-schema__property" ,
560
+ children : name ,
561
+ } ) ,
562
+ guard ( schemaName , ( name ) =>
563
+ create ( "span" , {
564
+ className : "openapi-schema__name" ,
565
+ children : ` ${ schemaName } ` ,
566
+ } )
567
+ ) ,
568
+ guard ( required , ( ) => [
569
+ create ( "span" , {
570
+ className : "openapi-schema__required" ,
571
+ children : "required" ,
572
+ } ) ,
573
+ ] ) ,
574
+ ] ,
548
575
} ) ,
549
- } ) ,
550
- ] ,
576
+ guard ( getQualifierMessage ( discriminator ) , ( message ) =>
577
+ create ( "div" , {
578
+ style : {
579
+ paddingLeft : "1rem" ,
580
+ } ,
581
+ children : createDescription ( message ) ,
582
+ } )
583
+ ) ,
584
+ guard ( schema . description , ( description ) =>
585
+ create ( "div" , {
586
+ style : {
587
+ paddingLeft : "1rem" ,
588
+ } ,
589
+ children : createDescription ( description ) ,
590
+ } )
591
+ ) ,
592
+ create ( "DiscriminatorTabs" , {
593
+ className : "openapi-tabs__discriminator" ,
594
+ children : Object . keys ( discriminator ?. mapping ! ) . map ( ( key , index ) => {
595
+ const label = key ;
596
+ return create ( "TabItem" , {
597
+ // className: "openapi-tabs__discriminator-item",
598
+ label : label ,
599
+ value : `${ index } -item-discriminator` ,
600
+ children : [ createNodes ( discriminator ?. mapping [ key ] ) ] ,
601
+ } ) ;
602
+ } ) ,
603
+ } ) ,
604
+ ] ,
605
+ } ) ,
551
606
} ) ;
552
607
}
553
608
0 commit comments