From e03f1736265bb151c2606d7d8ae80e152eb6a8b2 Mon Sep 17 00:00:00 2001 From: Junghyun Colin Kim Date: Tue, 30 Nov 2021 01:22:50 +0900 Subject: [PATCH] Use enums instead of raw string --- src/services/RedocNormalizedOptions.ts | 17 +++++++++++------ src/services/models/Operation.ts | 3 ++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/services/RedocNormalizedOptions.ts b/src/services/RedocNormalizedOptions.ts index 2128a359..f1640b92 100644 --- a/src/services/RedocNormalizedOptions.ts +++ b/src/services/RedocNormalizedOptions.ts @@ -5,6 +5,11 @@ import { isNumeric, mergeObjects } from '../utils/helpers'; import { LabelsConfigRaw, setRedocLabels } from './Labels'; import { MDXComponentMeta } from './MarkdownRenderer'; +export enum SideNavStyleEnum { + SummaryOnly = 'summary-only', + PathOnly = 'path-only', +} + export interface RedocRawOptions { theme?: ThemeInterface; scrollYOffset?: number | string | (() => number); @@ -22,7 +27,7 @@ export interface RedocRawOptions { disableSearch?: boolean | string; onlyRequiredInSamples?: boolean | string; showExtensions?: boolean | string | string[]; - sideNavStyle?: string | 'summary-only'; + sideNavStyle?: SideNavStyleEnum; hideSingleRequestSampleTab?: boolean | string; menuToggle?: boolean | string; jsonSampleExpandLevel?: number | string | 'all'; @@ -143,8 +148,8 @@ export class RedocNormalizedOptions { } } - static normalizeSideNavStyle(value: RedocRawOptions['sideNavStyle']): string { - const defaultValue = 'summary-only'; + static normalizeSideNavStyle(value: RedocRawOptions['sideNavStyle']): SideNavStyleEnum { + const defaultValue = SideNavStyleEnum.SummaryOnly; if (typeof value !== 'string') { return defaultValue; } @@ -152,8 +157,8 @@ export class RedocNormalizedOptions { switch (value) { case defaultValue: return value; - case 'path-only': - return value; + case SideNavStyleEnum.PathOnly: + return SideNavStyleEnum.PathOnly; default: return defaultValue; } @@ -206,7 +211,7 @@ export class RedocNormalizedOptions { disableSearch: boolean; onlyRequiredInSamples: boolean; showExtensions: boolean | string[]; - sideNavStyle: string; + sideNavStyle: SideNavStyleEnum; hideSingleRequestSampleTab: boolean; menuToggle: boolean; jsonSampleExpandLevel: number; diff --git a/src/services/models/Operation.ts b/src/services/models/Operation.ts index a0087017..8e7e9fe5 100644 --- a/src/services/models/Operation.ts +++ b/src/services/models/Operation.ts @@ -25,6 +25,7 @@ import { FieldModel } from './Field'; import { MediaContentModel } from './MediaContent'; import { RequestBodyModel } from './RequestBody'; import { ResponseModel } from './Response'; +import { SideNavStyleEnum } from '../RedocNormalizedOptions'; export interface XPayloadSample { lang: 'payload'; @@ -105,7 +106,7 @@ export class OperationModel implements IMenuItem { this.name = getOperationSummary(operationSpec); - this.sidebarLabel = options.sideNavStyle === 'path-only' ? this.path : this.name; + this.sidebarLabel = options.sideNavStyle === SideNavStyleEnum.PathOnly ? this.path : this.name; if (this.isCallback) { // NOTE: Callbacks by default should not inherit the specification's global `security` definition.