mirror of
https://github.com/ant-design/ant-design.git
synced 2025-06-20 01:41:51 +08:00
feat(spin): configProvider support indicator prop (#50183)
This commit is contained in:
parent
aebc23fea8
commit
2a6d88489d
@ -24,6 +24,7 @@ import type { ArgsProps } from '../notification/interface';
|
|||||||
import type { PaginationProps } from '../pagination';
|
import type { PaginationProps } from '../pagination';
|
||||||
import type { SelectProps } from '../select';
|
import type { SelectProps } from '../select';
|
||||||
import type { SpaceProps } from '../space';
|
import type { SpaceProps } from '../space';
|
||||||
|
import type { SpinProps } from '../spin';
|
||||||
import type { TableProps } from '../table';
|
import type { TableProps } from '../table';
|
||||||
import type { TabsProps } from '../tabs';
|
import type { TabsProps } from '../tabs';
|
||||||
import type { TagProps } from '../tag';
|
import type { TagProps } from '../tag';
|
||||||
@ -175,6 +176,8 @@ export type SelectConfig = ComponentStyleConfig & Pick<SelectProps, 'showSearch'
|
|||||||
|
|
||||||
export type SpaceConfig = ComponentStyleConfig & Pick<SpaceProps, 'size' | 'classNames' | 'styles'>;
|
export type SpaceConfig = ComponentStyleConfig & Pick<SpaceProps, 'size' | 'classNames' | 'styles'>;
|
||||||
|
|
||||||
|
export type SpinConfig = ComponentStyleConfig & Pick<SpinProps, 'indicator'>;
|
||||||
|
|
||||||
export type InputNumberConfig = ComponentStyleConfig & Pick<InputNumberProps, 'variant'>;
|
export type InputNumberConfig = ComponentStyleConfig & Pick<InputNumberProps, 'variant'>;
|
||||||
|
|
||||||
export type CascaderConfig = ComponentStyleConfig & Pick<CascaderProps, 'variant'>;
|
export type CascaderConfig = ComponentStyleConfig & Pick<CascaderProps, 'variant'>;
|
||||||
@ -254,7 +257,7 @@ export interface ConfigConsumerProps {
|
|||||||
floatButtonGroup?: FloatButtonGroupConfig;
|
floatButtonGroup?: FloatButtonGroupConfig;
|
||||||
typography?: ComponentStyleConfig;
|
typography?: ComponentStyleConfig;
|
||||||
skeleton?: ComponentStyleConfig;
|
skeleton?: ComponentStyleConfig;
|
||||||
spin?: ComponentStyleConfig;
|
spin?: SpinConfig;
|
||||||
segmented?: ComponentStyleConfig;
|
segmented?: ComponentStyleConfig;
|
||||||
steps?: ComponentStyleConfig;
|
steps?: ComponentStyleConfig;
|
||||||
statistic?: ComponentStyleConfig;
|
statistic?: ComponentStyleConfig;
|
||||||
|
@ -152,7 +152,7 @@ const {
|
|||||||
| slider | Set Slider common props | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| slider | Set Slider common props | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
||||||
| switch | Set Switch common props | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| switch | Set Switch common props | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
||||||
| space | Set Space common props, ref [Space](/components/space) | { size: `small` \| `middle` \| `large` \| `number`, className?: string, style?: React.CSSProperties, classNames?: { item: string }, styles?: { item: React.CSSProperties } } | - | 5.6.0 |
|
| space | Set Space common props, ref [Space](/components/space) | { size: `small` \| `middle` \| `large` \| `number`, className?: string, style?: React.CSSProperties, classNames?: { item: string }, styles?: { item: React.CSSProperties } } | - | 5.6.0 |
|
||||||
| spin | Set Spin common props | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| spin | Set Spin common props | { className?: string, style?: React.CSSProperties, indicator?: React.ReactElement } | - | 5.7.0, indicator: 5.20.0 |
|
||||||
| statistic | Set Statistic common props | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| statistic | Set Statistic common props | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
||||||
| steps | Set Steps common props | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| steps | Set Steps common props | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
||||||
| table | Set Table common props | { className?: string, style?: React.CSSProperties, expandable?: { expandIcon?: props => React.ReactNode } } | - | 5.7.0, expandable: 5.14.0 |
|
| table | Set Table common props | { className?: string, style?: React.CSSProperties, expandable?: { expandIcon?: props => React.ReactNode } } | - | 5.7.0, expandable: 5.14.0 |
|
||||||
|
@ -43,6 +43,7 @@ import type {
|
|||||||
RangePickerConfig,
|
RangePickerConfig,
|
||||||
SelectConfig,
|
SelectConfig,
|
||||||
SpaceConfig,
|
SpaceConfig,
|
||||||
|
SpinConfig,
|
||||||
TableConfig,
|
TableConfig,
|
||||||
TabsConfig,
|
TabsConfig,
|
||||||
TagConfig,
|
TagConfig,
|
||||||
@ -189,7 +190,7 @@ export interface ConfigProviderProps {
|
|||||||
drawer?: DrawerConfig;
|
drawer?: DrawerConfig;
|
||||||
typography?: ComponentStyleConfig;
|
typography?: ComponentStyleConfig;
|
||||||
skeleton?: ComponentStyleConfig;
|
skeleton?: ComponentStyleConfig;
|
||||||
spin?: ComponentStyleConfig;
|
spin?: SpinConfig;
|
||||||
segmented?: ComponentStyleConfig;
|
segmented?: ComponentStyleConfig;
|
||||||
statistic?: ComponentStyleConfig;
|
statistic?: ComponentStyleConfig;
|
||||||
steps?: ComponentStyleConfig;
|
steps?: ComponentStyleConfig;
|
||||||
|
@ -154,7 +154,7 @@ const {
|
|||||||
| slider | 设置 Slider 组件的通用属性 | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| slider | 设置 Slider 组件的通用属性 | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
||||||
| switch | 设置 Switch 组件的通用属性 | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| switch | 设置 Switch 组件的通用属性 | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
||||||
| space | 设置 Space 的通用属性,参考 [Space](/components/space-cn) | { size: `small` \| `middle` \| `large` \| `number`, className?: string, style?: React.CSSProperties, classNames?: { item: string }, styles?: { item: React.CSSProperties } } | - | 5.6.0 |
|
| space | 设置 Space 的通用属性,参考 [Space](/components/space-cn) | { size: `small` \| `middle` \| `large` \| `number`, className?: string, style?: React.CSSProperties, classNames?: { item: string }, styles?: { item: React.CSSProperties } } | - | 5.6.0 |
|
||||||
| spin | 设置 Spin 组件的通用属性 | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| spin | 设置 Spin 组件的通用属性 | { className?: string, style?: React.CSSProperties, indicator?: React.ReactElement } | - | 5.7.0, indicator: 5.20.0 |
|
||||||
| statistic | 设置 Statistic 组件的通用属性 | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| statistic | 设置 Statistic 组件的通用属性 | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
||||||
| steps | 设置 Steps 组件的通用属性 | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
| steps | 设置 Steps 组件的通用属性 | { className?: string, style?: React.CSSProperties } | - | 5.7.0 |
|
||||||
| table | 设置 Table 组件的通用属性 | { className?: string, style?: React.CSSProperties, expandable?: { expandIcon?: props => React.ReactNode } } | - | 5.7.0, expandable: 5.14.0 |
|
| table | 设置 Table 组件的通用属性 | { className?: string, style?: React.CSSProperties, expandable?: { expandIcon?: props => React.ReactNode } } | - | 5.7.0, expandable: 5.14.0 |
|
||||||
|
@ -4,6 +4,7 @@ import Spin from '..';
|
|||||||
import mountTest from '../../../tests/shared/mountTest';
|
import mountTest from '../../../tests/shared/mountTest';
|
||||||
import rtlTest from '../../../tests/shared/rtlTest';
|
import rtlTest from '../../../tests/shared/rtlTest';
|
||||||
import { act, render, waitFakeTimer } from '../../../tests/utils';
|
import { act, render, waitFakeTimer } from '../../../tests/utils';
|
||||||
|
import ConfigProvider from '../../config-provider';
|
||||||
|
|
||||||
describe('Spin', () => {
|
describe('Spin', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@ -101,6 +102,15 @@ describe('Spin', () => {
|
|||||||
expect(element).not.toHaveStyle({ pointerEvents: 'none' });
|
expect(element).not.toHaveStyle({ pointerEvents: 'none' });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should support ConfigProvider indicator', () => {
|
||||||
|
const { container } = render(
|
||||||
|
<ConfigProvider spin={{ indicator: <div className="custom-indicator" /> }}>
|
||||||
|
<Spin />
|
||||||
|
</ConfigProvider>,
|
||||||
|
);
|
||||||
|
expect(container.querySelector('.custom-indicator')).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
describe('percent', () => {
|
describe('percent', () => {
|
||||||
it('percent support auto', () => {
|
it('percent support auto', () => {
|
||||||
const { container } = render(<Spin percent="auto" />);
|
const { container } = render(<Spin percent="auto" />);
|
||||||
|
@ -3,7 +3,6 @@ import classNames from 'classnames';
|
|||||||
import { debounce } from 'throttle-debounce';
|
import { debounce } from 'throttle-debounce';
|
||||||
|
|
||||||
import { devUseWarning } from '../_util/warning';
|
import { devUseWarning } from '../_util/warning';
|
||||||
import type { ConfigConsumerProps } from '../config-provider';
|
|
||||||
import { ConfigContext } from '../config-provider';
|
import { ConfigContext } from '../config-provider';
|
||||||
import Indicator from './Indicator';
|
import Indicator from './Indicator';
|
||||||
import useStyle from './style/index';
|
import useStyle from './style/index';
|
||||||
@ -70,7 +69,7 @@ const Spin: SpinType = (props) => {
|
|||||||
...restProps
|
...restProps
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const { getPrefixCls } = React.useContext(ConfigContext);
|
const { getPrefixCls, direction, spin } = React.useContext(ConfigContext);
|
||||||
|
|
||||||
const prefixCls = getPrefixCls('spin', customizePrefixCls);
|
const prefixCls = getPrefixCls('spin', customizePrefixCls);
|
||||||
|
|
||||||
@ -111,8 +110,6 @@ const Spin: SpinType = (props) => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { direction, spin } = React.useContext<ConfigConsumerProps>(ConfigContext);
|
|
||||||
|
|
||||||
const spinClassName = classNames(
|
const spinClassName = classNames(
|
||||||
prefixCls,
|
prefixCls,
|
||||||
spin?.className,
|
spin?.className,
|
||||||
@ -133,6 +130,8 @@ const Spin: SpinType = (props) => {
|
|||||||
[`${prefixCls}-blur`]: spinning,
|
[`${prefixCls}-blur`]: spinning,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const mergedIndicator = indicator ?? spin?.indicator ?? defaultIndicator;
|
||||||
|
|
||||||
const mergedStyle: React.CSSProperties = { ...spin?.style, ...style };
|
const mergedStyle: React.CSSProperties = { ...spin?.style, ...style };
|
||||||
|
|
||||||
const spinElement: React.ReactNode = (
|
const spinElement: React.ReactNode = (
|
||||||
@ -143,11 +142,7 @@ const Spin: SpinType = (props) => {
|
|||||||
aria-live="polite"
|
aria-live="polite"
|
||||||
aria-busy={spinning}
|
aria-busy={spinning}
|
||||||
>
|
>
|
||||||
<Indicator
|
<Indicator prefixCls={prefixCls} indicator={mergedIndicator} percent={mergedPercent} />
|
||||||
prefixCls={prefixCls}
|
|
||||||
indicator={indicator ?? defaultIndicator}
|
|
||||||
percent={mergedPercent}
|
|
||||||
/>
|
|
||||||
{tip && (isNestedPattern || fullscreen) ? (
|
{tip && (isNestedPattern || fullscreen) ? (
|
||||||
<div className={`${prefixCls}-text`}>{tip}</div>
|
<div className={`${prefixCls}-text`}>{tip}</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
Loading…
Reference in New Issue
Block a user