Skip to content

Commit 9f31b2d

Browse files
authored
feat: support popupItem (#924)
1 parent 3eac54f commit 9f31b2d

File tree

4 files changed

+14
-3
lines changed

4 files changed

+14
-3
lines changed

src/PickerPanel/PanelBody.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export default function PanelBody<DateType extends object = any>(props: PanelBod
127127
<td
128128
key={col}
129129
title={title}
130-
className={classNames(cellPrefixCls, {
130+
className={classNames(cellPrefixCls, pickerClassNames?.popupItem, {
131131
[`${cellPrefixCls}-disabled`]: disabled,
132132
[`${cellPrefixCls}-hover`]: (hoverValue || []).some((date) =>
133133
isSame(generateConfig, locale, currentDate, date, type),
@@ -142,6 +142,7 @@ export default function PanelBody<DateType extends object = any>(props: PanelBod
142142
matchValues(currentDate),
143143
...getCellClassName(currentDate),
144144
})}
145+
style={styles?.popupItem}
145146
onClick={() => {
146147
if (!disabled) {
147148
onSelect(currentDate);

src/PickerPanel/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export interface SinglePickerPanelProps<DateType extends object = any>
127127
onChange?: (date: DateType) => void;
128128
}
129129

130-
type PanelSemanticName = 'popupBody' | 'popupContent';
130+
type PanelSemanticName = 'popupBody' | 'popupContent' | 'popupItem';
131131
export type PickerPanelProps<DateType extends object = any> = BasePickerPanelProps<DateType> & {
132132
/** multiple selection. Not support time or datetime picker */
133133
multiple?: boolean;

src/interface.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ export type Components<DateType extends object = any> = Partial<
281281
>;
282282

283283
// ========================= Picker =========================
284-
export type SemanticStructure = 'popup' | 'popupBody' | 'popupContent';
284+
export type SemanticStructure = 'popup' | 'popupBody' | 'popupContent' | 'popupItem';
285285

286286
export type CustomFormat<DateType> = (value: DateType) => string;
287287

tests/picker.spec.tsx

+10
Original file line numberDiff line numberDiff line change
@@ -1355,31 +1355,38 @@ describe('Picker.Basic', () => {
13551355
popup: 'custom-popup',
13561356
popupBody: 'custom-body',
13571357
popupContent: 'custom-content',
1358+
popupItem: 'custom-item',
13581359
};
13591360
const customStyles = {
13601361
popup: { color: 'red' },
13611362
popupBody: { color: 'green' },
13621363
popupContent: { color: 'blue' },
1364+
popupItem: { color: 'yellow' },
13631365
};
13641366
render(<DayPicker classNames={customClassNames} styles={customStyles} open />);
13651367

13661368
expect(document.querySelector('.rc-picker-dropdown')).toHaveClass(customClassNames.popup);
13671369
expect(document.querySelector('.rc-picker-dropdown')).toHaveStyle(customStyles.popup);
13681370
const content = document.querySelector('.rc-picker-content');
13691371
const body = document.querySelector('.rc-picker-body');
1372+
const item = document.querySelector('.rc-picker-cell');
13701373
expect(content).toHaveClass(customClassNames.popupContent);
13711374
expect(content).toHaveStyle(customStyles.popupContent);
13721375
expect(body).toHaveClass(customClassNames.popupBody);
13731376
expect(body).toHaveStyle(customStyles.popupBody);
1377+
expect(item).toHaveClass(customClassNames.popupItem);
1378+
expect(item).toHaveStyle(customStyles.popupItem);
13741379
});
13751380
it('support classNames and styles for panel', () => {
13761381
const customClassNames = {
13771382
popupBody: 'custom-body',
13781383
popupContent: 'custom-content',
1384+
popupItem: 'custom-item',
13791385
};
13801386
const customStyles = {
13811387
popupBody: { color: 'green' },
13821388
popupContent: { color: 'blue' },
1389+
popupItem: { color: 'yellow' },
13831390
};
13841391
render(
13851392
<PickerPanel
@@ -1391,10 +1398,13 @@ describe('Picker.Basic', () => {
13911398
);
13921399
const content = document.querySelector('.rc-picker-content');
13931400
const body = document.querySelector('.rc-picker-body');
1401+
const item = document.querySelector('.rc-picker-cell');
13941402
expect(content).toHaveClass(customClassNames.popupContent);
13951403
expect(content).toHaveStyle(customStyles.popupContent);
13961404
expect(body).toHaveClass(customClassNames.popupBody);
13971405
expect(body).toHaveStyle(customStyles.popupBody);
1406+
expect(item).toHaveClass(customClassNames.popupItem);
1407+
expect(item).toHaveStyle(customStyles.popupItem);
13981408
});
13991409
it('showTime config should have format', () => {
14001410
render(

0 commit comments

Comments
 (0)