You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ant-design-vue/components/vc-picker/utils/getRanges.tsx

67 lines
1.3 KiB

import type { VueNode } from '../../_util/type';
import type { Components, Locale } from '../interface';
export type RangesProps = {
prefixCls: string;
components?: Components;
needConfirmButton: boolean;
onNow?: null | (() => void) | false;
onOk?: null | (() => void) | false;
okDisabled?: boolean;
showNow?: boolean;
locale: Locale;
};
export default function getRanges({
prefixCls,
components = {},
needConfirmButton,
onNow,
onOk,
okDisabled,
showNow,
locale,
}: RangesProps) {
let presetNode: VueNode;
let okNode: VueNode;
if (needConfirmButton) {
const Button = (components.button || 'button') as any;
if (onNow && showNow !== false) {
presetNode = (
<li class={`${prefixCls}-now`}>
<a class={`${prefixCls}-now-btn`} onClick={onNow}>
{locale.now}
</a>
</li>
);
}
okNode = needConfirmButton && (
<li class={`${prefixCls}-ok`}>
<Button
disabled={okDisabled}
onClick={e => {
e.stopPropagation();
onOk && onOk();
}}
>
{locale.ok}
</Button>
</li>
);
}
if (!presetNode && !okNode) {
return null;
}
return (
<ul class={`${prefixCls}-ranges`}>
{presetNode}
{okNode}
</ul>
);
}