Skip to content

Commit cf78c48

Browse files
authored
feat: add semantic for popup container (#945)
* feat: add semantic for popup container * feat: adjust code
1 parent 14c2211 commit cf78c48

File tree

7 files changed

+38
-2
lines changed

7 files changed

+38
-2
lines changed

docs/examples/basic.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,17 @@ export default () => {
5959
className="little"
6060
classNames={{
6161
root: 'light',
62+
popup: {
63+
container: 'popup-c',
64+
},
65+
}}
66+
open
67+
styles={{
68+
popup: {
69+
container: {
70+
backgroundColor: 'red',
71+
},
72+
},
6273
}}
6374
/>
6475
<Picker<Moment> {...sharedProps} locale={enUS} />

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
},
4141
"dependencies": {
4242
"@rc-component/resize-observer": "^1.0.0",
43-
"@rc-component/trigger": "^3.0.0",
43+
"@rc-component/trigger": "^3.6.15",
4444
"@rc-component/util": "^1.3.0",
4545
"clsx": "^2.1.1",
4646
"rc-overflow": "^1.3.2"

src/PickerInput/Popup/index.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ export interface PopupProps<DateType extends object = any, PresetValue = DateTyp
4545
onOk: VoidFunction;
4646

4747
onPanelMouseDown?: React.MouseEventHandler<HTMLDivElement>;
48+
49+
classNames?: SharedPickerProps['classNames'];
50+
styles?: SharedPickerProps['styles'];
4851
}
4952

5053
export default function Popup<DateType extends object = any>(props: PopupProps<DateType>) {
@@ -79,6 +82,8 @@ export default function Popup<DateType extends object = any>(props: PopupProps<D
7982
defaultOpenValue,
8083
onOk,
8184
onSubmit,
85+
classNames,
86+
styles,
8287
} = props;
8388

8489
const { prefixCls } = React.useContext(PickerContext);
@@ -217,10 +222,12 @@ export default function Popup<DateType extends object = any>(props: PopupProps<D
217222
containerPrefixCls,
218223
// Used for Today Button style, safe to remove if no need
219224
`${prefixCls}-${internalMode}-panel-container`,
225+
classNames?.popup?.container,
220226
)}
221227
style={{
222228
[rtl ? marginRight : marginLeft]: containerOffset,
223229
[rtl ? marginLeft : marginRight]: 'auto',
230+
...styles?.popup?.container,
224231
}}
225232
// Still wish not to lose focus on mouse down
226233
// onMouseDown={(e) => {

src/PickerInput/RangePicker.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,9 @@ function RangePicker<DateType extends object = any>(
626626
onNow={onNow}
627627
// Render
628628
cellRender={onInternalCellRender}
629+
// Styles
630+
classNames={mergedClassNames}
631+
styles={mergedStyles}
629632
/>
630633
);
631634

src/PickerInput/SinglePicker.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,9 @@ function Picker<DateType extends object = any>(
540540
onNow={onNow}
541541
// Render
542542
cellRender={onInternalCellRender}
543+
// Styles
544+
classNames={mergedClassNames}
545+
styles={mergedStyles}
543546
/>
544547
);
545548

src/interface.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,14 @@ export type SemanticName = 'root' | 'prefix' | 'input' | 'suffix';
315315

316316
export type PreviewValueType = 'hover';
317317

318-
export type PanelSemanticName = 'root' | 'header' | 'body' | 'content' | 'item' | 'footer';
318+
export type PanelSemanticName =
319+
| 'root'
320+
| 'header'
321+
| 'body'
322+
| 'content'
323+
| 'item'
324+
| 'footer'
325+
| 'container';
319326

320327
export interface SharedPickerProps<DateType extends object = any>
321328
extends SharedHTMLAttrs,

tests/picker.spec.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1358,8 +1358,10 @@ describe('Picker.Basic', () => {
13581358
content: 'custom-content',
13591359
item: 'custom-item',
13601360
footer: 'custom-footer',
1361+
container: 'custom-container',
13611362
};
13621363
const popupStyles = {
1364+
container: { backgroundColor: 'red' },
13631365
root: { color: 'red' },
13641366
header: { color: 'purple' },
13651367
body: { color: 'green' },
@@ -1387,6 +1389,7 @@ describe('Picker.Basic', () => {
13871389
const content = document.querySelector('.rc-picker-content');
13881390
const item = document.querySelector('.rc-picker-cell');
13891391
const footer = document.querySelector('.rc-picker-footer');
1392+
const container = document.querySelector('.rc-picker-panel-container');
13901393

13911394
expect(header).toHaveClass(popupClassNames.header);
13921395
expect(header).toHaveStyle(popupStyles.header);
@@ -1398,6 +1401,8 @@ describe('Picker.Basic', () => {
13981401
expect(item).toHaveStyle(popupStyles.item);
13991402
expect(footer).toHaveClass(popupClassNames.footer);
14001403
expect(footer).toHaveStyle(popupStyles.footer);
1404+
expect(container).toHaveClass(popupClassNames.container);
1405+
expect(container).toHaveStyle(popupStyles.container);
14011406
});
14021407

14031408
it('support classNames and styles for panel', () => {

0 commit comments

Comments
 (0)