mirror of
https://github.com/ant-design/ant-design.git
synced 2026-02-09 02:49:18 +08:00
* refactor: uninstall classnames & install clsx * refactor: uninstall classnames & install clsx * test: rename test fn * test: update snap * update * update * update * update * update snap * update * update --------- Signed-off-by: lijianan <574980606@qq.com> Co-authored-by: thinkasany <480968828@qq.com>
70 lines
2.2 KiB
TypeScript
70 lines
2.2 KiB
TypeScript
/* eslint-disable react/no-array-index-key */
|
|
import * as React from 'react';
|
|
import { clsx } from 'clsx';
|
|
|
|
import { ConfigContext } from '../config-provider';
|
|
import BackTop from './BackTop';
|
|
import FloatButton, { floatButtonPrefixCls } from './FloatButton';
|
|
import type { FloatButtonProps } from './FloatButton';
|
|
import FloatButtonGroup from './FloatButtonGroup';
|
|
import type { FloatButtonGroupProps } from './FloatButtonGroup';
|
|
|
|
export interface PureFloatButtonProps extends Omit<FloatButtonProps, 'target'> {
|
|
backTop?: boolean;
|
|
}
|
|
|
|
type ClassNamesType = PureFloatButtonProps['classNames'] | FloatButtonGroupProps['classNames'];
|
|
type StylesType = PureFloatButtonProps['styles'] | FloatButtonGroupProps['styles'];
|
|
|
|
export interface PurePanelProps
|
|
extends Omit<PureFloatButtonProps, 'classNames' | 'styles'>,
|
|
Omit<FloatButtonGroupProps, 'children' | 'classNames' | 'styles'> {
|
|
/** Convert to FloatGroup when configured */
|
|
items?: PureFloatButtonProps[];
|
|
classNames?: ClassNamesType;
|
|
styles?: StylesType;
|
|
}
|
|
|
|
const PureFloatButton: React.FC<PureFloatButtonProps> = ({ backTop, ...props }) =>
|
|
backTop ? <BackTop {...props} visibilityHeight={0} /> : <FloatButton {...props} />;
|
|
|
|
/** @private Internal Component. Do not use in your production. */
|
|
const PurePanel: React.FC<PurePanelProps> = ({
|
|
className,
|
|
items,
|
|
classNames: cls,
|
|
styles,
|
|
prefixCls: customizePrefixCls,
|
|
...restProps
|
|
}) => {
|
|
const { getPrefixCls } = React.useContext(ConfigContext);
|
|
const prefixCls = getPrefixCls(floatButtonPrefixCls, customizePrefixCls);
|
|
const pureCls = `${prefixCls}-pure`;
|
|
|
|
if (items) {
|
|
return (
|
|
<FloatButtonGroup
|
|
className={clsx(className, pureCls)}
|
|
classNames={cls as FloatButtonGroupProps['classNames']}
|
|
styles={styles as FloatButtonGroupProps['styles']}
|
|
{...restProps}
|
|
>
|
|
{items.map((item, index) => (
|
|
<PureFloatButton key={index} {...item} />
|
|
))}
|
|
</FloatButtonGroup>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<PureFloatButton
|
|
className={clsx(className, pureCls)}
|
|
classNames={cls as FloatButtonProps['classNames']}
|
|
styles={styles as FloatButtonProps['styles']}
|
|
{...restProps}
|
|
/>
|
|
);
|
|
};
|
|
|
|
export default PurePanel;
|