Skip to content

Commit f352442

Browse files
committed
refactor: popup structure
1 parent 3639a8a commit f352442

File tree

4 files changed

+25
-15
lines changed

4 files changed

+25
-15
lines changed

src/OptionList.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,8 +329,8 @@ const OptionList: React.ForwardRefRenderFunction<RefOptionListProps, {}> = (_, r
329329
direction={direction}
330330
innerProps={virtual ? null : a11yProps}
331331
showScrollBar={showScrollBar}
332-
className={contextClassNames?.list}
333-
style={contextStyles?.list}
332+
className={contextClassNames?.popup?.list}
333+
style={contextStyles?.popup?.list}
334334
>
335335
{(item, itemIndex) => {
336336
const { group, groupOption, data, label, value } = item;
@@ -363,7 +363,7 @@ const OptionList: React.ForwardRefRenderFunction<RefOptionListProps, {}> = (_, r
363363
itemPrefixCls,
364364
optionPrefixCls,
365365
className,
366-
contextClassNames?.listItem,
366+
contextClassNames?.popup?.listItem,
367367
{
368368
[`${optionPrefixCls}-grouped`]: groupOption,
369369
[`${optionPrefixCls}-active`]: activeIndex === itemIndex && !mergedDisabled,
@@ -403,7 +403,7 @@ const OptionList: React.ForwardRefRenderFunction<RefOptionListProps, {}> = (_, r
403403
onSelectValue(value);
404404
}
405405
}}
406-
style={{ ...contextStyles?.listItem, ...style }}
406+
style={{ ...contextStyles?.popup?.listItem, ...style }}
407407
>
408408
<div className={`${optionPrefixCls}-content`}>
409409
{typeof optionRender === 'function'

src/Select.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ export type SelectHandler<ValueType, OptionType extends BaseOptionType = Default
108108

109109
type ArrayElementType<T> = T extends (infer E)[] ? E : T;
110110

111-
export type SemanticName = BaseSelectSemanticName | 'listItem' | 'list';
111+
export type SemanticName = BaseSelectSemanticName;
112+
export type PopupSemantic = 'listItem' | 'list';
112113
export interface SelectProps<ValueType = any, OptionType extends BaseOptionType = DefaultOptionType>
113114
extends BaseSelectPropsWithoutPrivate {
114115
prefixCls?: string;

src/SelectContext.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type {
77
OnInternalSelect,
88
SelectProps,
99
SemanticName,
10+
PopupSemantic,
1011
} from './Select';
1112
import type { FlattenOptionData } from './interface';
1213

@@ -15,8 +16,12 @@ import type { FlattenOptionData } from './interface';
1516
* SelectContext is only used for Select. BaseSelect should not consume this context.
1617
*/
1718
export interface SelectContextProps {
18-
classNames?: Partial<Record<SemanticName, string>>;
19-
styles?: Partial<Record<SemanticName, React.CSSProperties>>;
19+
classNames?: Partial<Record<SemanticName, string>> & {
20+
popup?: Partial<Record<PopupSemantic, string>>;
21+
};
22+
styles?: Partial<Record<SemanticName, React.CSSProperties>> & {
23+
popup?: Partial<Record<PopupSemantic, React.CSSProperties>>;
24+
};
2025
options: BaseOptionType[];
2126
optionRender?: SelectProps['optionRender'];
2227
flattenOptions: FlattenOptionData<BaseOptionType>[];

tests/Select.test.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2423,16 +2423,20 @@ describe('Select.Basic', () => {
24232423
const customClassNames = {
24242424
prefix: 'custom-prefix',
24252425
suffix: 'custom-suffix',
2426-
list: 'custom-list',
2427-
listItem: 'custom-item',
24282426
input: 'custom-input',
2427+
popup: {
2428+
list: 'custom-list',
2429+
listItem: 'custom-item',
2430+
},
24292431
};
24302432
const customStyle = {
24312433
prefix: { color: 'red' },
24322434
suffix: { color: 'green' },
2433-
list: { color: 'yellow' },
2434-
listItem: { color: 'blue' },
24352435
input: { color: 'black' },
2436+
popup: {
2437+
list: { color: 'yellow' },
2438+
listItem: { color: 'blue' },
2439+
},
24362440
};
24372441
const { container } = render(
24382442
<Select
@@ -2459,10 +2463,10 @@ describe('Select.Basic', () => {
24592463
expect(prefix).toHaveStyle(customStyle.prefix);
24602464
expect(suffix).toHaveClass(customClassNames.suffix);
24612465
expect(suffix).toHaveStyle(customStyle.suffix);
2462-
expect(item).toHaveClass(customClassNames.listItem);
2463-
expect(item).toHaveStyle(customStyle.listItem);
2464-
expect(list).toHaveClass(customClassNames.list);
2465-
expect(list).toHaveStyle(customStyle.list);
2466+
expect(item).toHaveClass(customClassNames.popup.listItem);
2467+
expect(item).toHaveStyle(customStyle.popup.listItem);
2468+
expect(list).toHaveClass(customClassNames.popup.list);
2469+
expect(list).toHaveStyle(customStyle.popup.list);
24662470
expect(input).toHaveClass(customClassNames.input);
24672471
expect(input).toHaveStyle(customStyle.input);
24682472
});

0 commit comments

Comments
 (0)