Skip to content

Commit 25ecb03

Browse files
committed
chore: refactor pos
1 parent e2c507f commit 25ecb03

File tree

6 files changed

+34
-29
lines changed

6 files changed

+34
-29
lines changed

src/PickerInput/Selector/Icon.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as React from 'react';
22
import PickerContext from '../context';
3-
import classNames from 'classnames';
3+
import cls from 'classnames';
44

55
export interface IconProps extends React.HtmlHTMLAttributes<HTMLElement> {
66
icon?: React.ReactNode;
@@ -9,12 +9,12 @@ export interface IconProps extends React.HtmlHTMLAttributes<HTMLElement> {
99

1010
export default function Icon(props: IconProps) {
1111
const { icon, type, ...restProps } = props;
12-
const { prefixCls, classNames: iconClassNames, styles } = React.useContext(PickerContext);
12+
const { prefixCls, classNames, styles } = React.useContext(PickerContext);
1313

1414
return icon ? (
1515
<span
16-
className={classNames(`${prefixCls}-${type}`, iconClassNames?.suffix)}
17-
style={styles?.suffix}
16+
className={cls(`${prefixCls}-${type}`, classNames.suffix)}
17+
style={styles.suffix}
1818
{...restProps}
1919
>
2020
{icon}

src/PickerInput/Selector/Input.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import classNames from 'classnames';
1+
import cls from 'classnames';
22
import { useEvent } from '@rc-component/util';
33
import useLayoutEffect from '@rc-component/util/lib/hooks/useLayoutEffect';
44
import raf from '@rc-component/util/lib/raf';
@@ -75,7 +75,7 @@ const Input = React.forwardRef<InputRef, InputProps>((props, ref) => {
7575
const {
7676
prefixCls,
7777
input: Component = 'input',
78-
classNames: inputClassNames,
78+
classNames,
7979
styles,
8080
} = React.useContext(PickerContext);
8181
const inputPrefixCls = `${prefixCls}-input`;
@@ -383,7 +383,7 @@ const Input = React.forwardRef<InputRef, InputProps>((props, ref) => {
383383
return (
384384
<div
385385
ref={holderRef}
386-
className={classNames(
386+
className={cls(
387387
inputPrefixCls,
388388
{
389389
[`${inputPrefixCls}-active`]: active && showActiveCls,
@@ -404,8 +404,8 @@ const Input = React.forwardRef<InputRef, InputProps>((props, ref) => {
404404
// Value
405405
value={inputValue}
406406
onChange={onInternalChange}
407-
className={inputClassNames?.input}
408-
style={styles?.input}
407+
className={classNames.input}
408+
style={styles.input}
409409
/>
410410
<Icon type="suffix" icon={suffixIcon} />
411411
{clearIcon}

src/PickerInput/Selector/RangeSelector.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import classNames from 'classnames';
1+
import cls from 'classnames';
22
import ResizeObserver from '@rc-component/resize-observer';
33
import { useEvent } from '@rc-component/util';
44
import * as React from 'react';
@@ -121,7 +121,7 @@ function RangeSelector<DateType extends object = any>(
121121
const rtl = direction === 'rtl';
122122

123123
// ======================== Prefix ========================
124-
const { prefixCls, classNames: selectorClassNames, styles } = React.useContext(PickerContext);
124+
const { prefixCls, classNames, styles } = React.useContext(PickerContext);
125125

126126
// ========================== Id ==========================
127127
const ids = React.useMemo(() => {
@@ -211,7 +211,7 @@ function RangeSelector<DateType extends object = any>(
211211
<ResizeObserver onResize={syncActiveOffset}>
212212
<div
213213
{...rootProps}
214-
className={classNames(
214+
className={cls(
215215
prefixCls,
216216
`${prefixCls}-range`,
217217
{
@@ -239,10 +239,7 @@ function RangeSelector<DateType extends object = any>(
239239
}}
240240
>
241241
{prefix && (
242-
<div
243-
className={classNames(`${prefixCls}-prefix`, selectorClassNames?.prefix)}
244-
style={styles?.prefix}
245-
>
242+
<div className={cls(`${prefixCls}-prefix`, classNames.prefix)} style={styles.prefix}>
246243
{prefix}
247244
</div>
248245
)}

src/PickerInput/Selector/SingleSelector/index.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import classNames from 'classnames';
1+
import cls from 'classnames';
22
import * as React from 'react';
33
import type { InternalMode, PickerRef, SelectorProps } from '../../../interface';
44
import { isSame } from '../../../utils/dateUtil';
@@ -110,7 +110,7 @@ function SingleSelector<DateType extends object = any>(
110110
const rtl = direction === 'rtl';
111111

112112
// ======================== Prefix ========================
113-
const { prefixCls, classNames: selectorClassNames, styles } = React.useContext(PickerContext);
113+
const { prefixCls, classNames, styles } = React.useContext(PickerContext);
114114

115115
// ========================= Refs =========================
116116
const rootRef = React.useRef<HTMLDivElement>();
@@ -201,7 +201,7 @@ function SingleSelector<DateType extends object = any>(
201201
return (
202202
<div
203203
{...rootProps}
204-
className={classNames(
204+
className={cls(
205205
prefixCls,
206206
{
207207
[`${prefixCls}-multiple`]: multiple,
@@ -226,10 +226,7 @@ function SingleSelector<DateType extends object = any>(
226226
}}
227227
>
228228
{prefix && (
229-
<div
230-
className={classNames(`${prefixCls}-prefix`, selectorClassNames?.prefix)}
231-
style={styles?.prefix}
232-
>
229+
<div className={cls(`${prefixCls}-prefix`, classNames.prefix)} style={styles.prefix}>
233230
{prefix}
234231
</div>
235232
)}

src/PickerPanel/context.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as React from 'react';
2-
import type { PanelMode, SemanticStructure, SharedPanelProps } from '../interface';
2+
import type { PanelMode, SharedPanelProps } from '../interface';
3+
import type { FilledPanelClassNames, FilledPanelStyles } from '../hooks/useSemantic';
34

45
export interface PanelContextProps<DateType extends object = any>
56
extends Pick<
@@ -31,6 +32,9 @@ export interface PanelContextProps<DateType extends object = any>
3132

3233
// Shared
3334
now: DateType;
35+
36+
classNames: FilledPanelClassNames;
37+
styles: FilledPanelStyles;
3438
}
3539

3640
/** Used for each single Panel. e.g. DatePanel */
@@ -49,7 +53,7 @@ export function useInfo<DateType extends object = any>(
4953
): [sharedProps: PanelContextProps<DateType>, now: DateType] {
5054
const {
5155
prefixCls,
52-
generateConfig,
56+
// generateConfig,
5357
locale,
5458
disabledDate,
5559
minDate,
@@ -69,6 +73,9 @@ export function useInfo<DateType extends object = any>(
6973
superNextIcon,
7074
} = props;
7175

76+
// ======================= Context ========================
77+
const { classNames, styles, generateConfig } = usePanelContext();
78+
7279
// ========================= MISC =========================
7380
const now = generateConfig.getNow();
7481

@@ -78,6 +85,8 @@ export function useInfo<DateType extends object = any>(
7885
values,
7986
pickerValue,
8087
prefixCls,
88+
classNames,
89+
styles,
8190
disabledDate,
8291
minDate,
8392
maxDate,
@@ -106,8 +115,6 @@ export interface PickerHackContextProps {
106115
hideNext?: boolean;
107116
hideHeader?: boolean;
108117
onCellDblClick?: () => void;
109-
styles?: Partial<Record<SemanticStructure, React.CSSProperties>>;
110-
classNames?: Partial<Record<SemanticStructure, string>>;
111118
}
112119

113120
/**

src/hooks/useSemantic.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
import { useMemo } from 'react';
22
import type { SharedPickerProps } from '../interface';
33

4+
export type FilledPanelClassNames = NonNullable<SharedPickerProps['classNames']>['popup'];
5+
6+
export type FilledPanelStyles = NonNullable<SharedPickerProps['styles']>['popup'];
7+
48
export type FilledClassNames = NonNullable<SharedPickerProps['classNames']> & {
5-
popup: NonNullable<SharedPickerProps['classNames']>['popup'];
9+
popup: FilledPanelClassNames;
610
};
711

812
export type FilledStyles = NonNullable<SharedPickerProps['styles']> & {
9-
popup: NonNullable<SharedPickerProps['styles']>['popup'];
13+
popup: FilledPanelStyles;
1014
};
1115

1216
/**

0 commit comments

Comments
 (0)