|
|
|
@ -21,6 +21,8 @@ import { booleanType, stringType } from '../_util/type';
|
|
|
|
|
|
|
|
|
|
// CSSINJS
|
|
|
|
|
import useStyle from './style';
|
|
|
|
|
import { NoCompactStyle, useCompactItemContext } from '../space/Compact';
|
|
|
|
|
import { useInjectDisabled } from '../config-provider/DisabledContext';
|
|
|
|
|
|
|
|
|
|
const baseProps = baseInputNumberProps();
|
|
|
|
|
export const inputNumberProps = () => ({
|
|
|
|
@ -52,11 +54,14 @@ const InputNumber = defineComponent({
|
|
|
|
|
const formItemContext = useInjectFormItemContext();
|
|
|
|
|
const formItemInputContext = FormItemInputContext.useInject();
|
|
|
|
|
const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));
|
|
|
|
|
const { prefixCls, size, direction } = useConfigInject('input-number', props);
|
|
|
|
|
|
|
|
|
|
const { prefixCls, size, direction, disabled } = useConfigInject('input-number', props);
|
|
|
|
|
const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);
|
|
|
|
|
// Style
|
|
|
|
|
const [wrapSSR, hashId] = useStyle(prefixCls);
|
|
|
|
|
|
|
|
|
|
const mergedSize = computed(() => compactSize.value || size.value);
|
|
|
|
|
const disabledContext = useInjectDisabled();
|
|
|
|
|
const mergedDisabled = computed(() => disabled.value ?? disabledContext.value);
|
|
|
|
|
const mergedValue = ref(props.value === undefined ? props.defaultValue : props.value);
|
|
|
|
|
const focused = ref(false);
|
|
|
|
|
watch(
|
|
|
|
@ -109,11 +114,10 @@ const InputNumber = defineComponent({
|
|
|
|
|
|
|
|
|
|
const preCls = prefixCls.value;
|
|
|
|
|
|
|
|
|
|
const mergeSize = size.value;
|
|
|
|
|
const inputNumberClass = classNames(
|
|
|
|
|
{
|
|
|
|
|
[`${preCls}-lg`]: mergeSize === 'large',
|
|
|
|
|
[`${preCls}-sm`]: mergeSize === 'small',
|
|
|
|
|
[`${preCls}-lg`]: mergedSize.value === 'large',
|
|
|
|
|
[`${preCls}-sm`]: mergedSize.value === 'small',
|
|
|
|
|
[`${preCls}-rtl`]: direction.value === 'rtl',
|
|
|
|
|
[`${preCls}-readonly`]: readonly,
|
|
|
|
|
[`${preCls}-borderless`]: !bordered,
|
|
|
|
@ -121,6 +125,7 @@ const InputNumber = defineComponent({
|
|
|
|
|
},
|
|
|
|
|
getStatusClassNames(preCls, mergedStatus.value),
|
|
|
|
|
className,
|
|
|
|
|
compactItemClassnames.value,
|
|
|
|
|
hashId.value,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
@ -154,9 +159,9 @@ const InputNumber = defineComponent({
|
|
|
|
|
getStatusClassNames(`${preCls}-affix-wrapper`, mergedStatus.value, hasFeedback),
|
|
|
|
|
{
|
|
|
|
|
[`${preCls}-affix-wrapper-focused`]: focused.value,
|
|
|
|
|
[`${preCls}-affix-wrapper-disabled`]: props.disabled,
|
|
|
|
|
[`${preCls}-affix-wrapper-sm`]: size.value === 'small',
|
|
|
|
|
[`${preCls}-affix-wrapper-lg`]: size.value === 'large',
|
|
|
|
|
[`${preCls}-affix-wrapper-disabled`]: mergedDisabled.value,
|
|
|
|
|
[`${preCls}-affix-wrapper-sm`]: mergedSize.value === 'small',
|
|
|
|
|
[`${preCls}-affix-wrapper-lg`]: mergedSize.value === 'large',
|
|
|
|
|
[`${preCls}-affix-wrapper-rtl`]: direction.value === 'rtl',
|
|
|
|
|
[`${preCls}-affix-wrapper-readonly`]: readonly,
|
|
|
|
|
[`${preCls}-affix-wrapper-borderless`]: !bordered,
|
|
|
|
@ -198,8 +203,8 @@ const InputNumber = defineComponent({
|
|
|
|
|
const mergedGroupClassName = classNames(
|
|
|
|
|
`${preCls}-group-wrapper`,
|
|
|
|
|
{
|
|
|
|
|
[`${preCls}-group-wrapper-sm`]: mergeSize === 'small',
|
|
|
|
|
[`${preCls}-group-wrapper-lg`]: mergeSize === 'large',
|
|
|
|
|
[`${preCls}-group-wrapper-sm`]: mergedSize.value === 'small',
|
|
|
|
|
[`${preCls}-group-wrapper-lg`]: mergedSize.value === 'large',
|
|
|
|
|
[`${preCls}-group-wrapper-rtl`]: direction.value === 'rtl',
|
|
|
|
|
},
|
|
|
|
|
getStatusClassNames(`${prefixCls}-group-wrapper`, mergedStatus.value, hasFeedback),
|
|
|
|
@ -209,9 +214,17 @@ const InputNumber = defineComponent({
|
|
|
|
|
element = (
|
|
|
|
|
<div class={mergedGroupClassName} style={style}>
|
|
|
|
|
<div class={mergedWrapperClassName}>
|
|
|
|
|
{addonBeforeNode && <NoFormStatus>{addonBeforeNode}</NoFormStatus>}
|
|
|
|
|
{addonBeforeNode && (
|
|
|
|
|
<NoCompactStyle>
|
|
|
|
|
<NoFormStatus>{addonBeforeNode}</NoFormStatus>
|
|
|
|
|
</NoCompactStyle>
|
|
|
|
|
)}
|
|
|
|
|
{element}
|
|
|
|
|
{addonAfterNode && <NoFormStatus>{addonAfterNode}</NoFormStatus>}
|
|
|
|
|
{addonAfterNode && (
|
|
|
|
|
<NoCompactStyle>
|
|
|
|
|
<NoFormStatus>{addonAfterNode}</NoFormStatus>
|
|
|
|
|
</NoCompactStyle>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|