Skip to content

Commit d1f56e5

Browse files
committed
Fix PR comments
Feature: CMS-47083
1 parent 1080571 commit d1f56e5

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

packages/optimizely-cms-sdk/src/infer.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,12 @@ type InferFromDisplayTemplate<T extends DisplayTemplate> =
190190
T extends { settings: infer S }
191191
? {
192192
[K in keyof S]:
193-
S[K] extends { choices: Record<string, any> }
194-
? keyof S[K]['choices']
193+
S[K] extends { choices: Record<string, any>; editor: infer E }
194+
? E extends 'select'
195+
? keyof S[K]['choices']
196+
: E extends 'checkbox'
197+
? Array<keyof S[K]['choices']>
198+
: never
195199
: never;
196200
}
197201
: {};

packages/optimizely-cms-sdk/src/model/displayTemplates.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ export type DisplayTemplate<T = DisplayTemplateVariant> = T & {
8282

8383
export const parseDisplaySettings = <T extends DisplayTemplate>(
8484
settings: DisplaySettingsType[] | null | undefined
85-
): Infer<DisplayTemplate> => {
85+
): Partial<Infer<T>> | undefined => {
8686
const result = {} as Infer<T>;
8787
settings?.forEach(s => {
8888
result[s.key as keyof Infer<T>] = s.value as Infer<T>[keyof Infer<T>];

packages/optimizely-cms-sdk/src/react/server.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ import {
1010
ExperienceComponentNode,
1111
DisplaySettingsType,
1212
ExperienceCompositionNode,
13+
Infer,
1314
} from '../infer.js';
1415
import { isComponentNode } from '../util/baseTypeUtil.js';
15-
import { parseDisplaySettings } from '../model/displayTemplates.js';
16+
import { DisplayTemplate, parseDisplaySettings } from '../model/displayTemplates.js';
1617
import { getDisplayTemplateTag } from '../model/displayTemplateRegistry.js';
1718
import { isDev } from '../util/environment.js';
1819

@@ -70,7 +71,7 @@ export function initReactComponentRegistry(options: InitOptions) {
7071
}
7172

7273
/** Props for the {@linkcode OptimizelyComponent} component */
73-
type OptimizelyComponentProps = {
74+
type OptimizelyComponentProps<T extends DisplayTemplate = DisplayTemplate> = {
7475
/** Data read from the CMS */
7576
opti: {
7677
/** Content type name */
@@ -87,7 +88,7 @@ type OptimizelyComponentProps = {
8788
__composition?: ExperienceCompositionNode;
8889
};
8990

90-
displaySettings?: Record<string, string>;
91+
displaySettings?: Partial<Infer<T>>;
9192
};
9293

9394
export async function OptimizelyComponent({
@@ -127,16 +128,16 @@ export async function OptimizelyComponent({
127128
);
128129
}
129130

130-
export type StructureContainerProps = {
131+
export type StructureContainerProps<T extends DisplayTemplate = DisplayTemplate> = {
131132
node: ExperienceStructureNode;
132133
children: React.ReactNode;
133134
index?: number;
134-
displaySettings?: Record<string, string>;
135+
displaySettings?: Partial<Infer<T>>;
135136
};
136-
export type ComponentContainerProps = {
137+
export type ComponentContainerProps<T extends DisplayTemplate = DisplayTemplate> = {
137138
node: ExperienceComponentNode;
138139
children: React.ReactNode;
139-
displaySettings?: Record<string, string>;
140+
displaySettings?: Partial<Infer<T>>;
140141
};
141142
export type StructureContainer = (
142143
props: StructureContainerProps

0 commit comments

Comments
 (0)