feat: inputnumber add lazy

pull/5485/head
tangjinzhou 2022-04-12 10:52:06 +08:00
parent 278478b5b0
commit f1f6085dbb
2 changed files with 15 additions and 3 deletions

View File

@ -24,6 +24,7 @@ export const inputNumberProps = () => ({
addonAfter: PropTypes.any, addonAfter: PropTypes.any,
prefix: PropTypes.any, prefix: PropTypes.any,
'update:value': baseProps.onChange, 'update:value': baseProps.onChange,
valueModifiers: Object,
}); });
export type InputNumberProps = Partial<ExtractPropTypes<ReturnType<typeof inputNumberProps>>>; export type InputNumberProps = Partial<ExtractPropTypes<ReturnType<typeof inputNumberProps>>>;
@ -91,6 +92,7 @@ const InputNumber = defineComponent({
addonBefore = slots.addonBefore?.(), addonBefore = slots.addonBefore?.(),
addonAfter = slots.addonAfter?.(), addonAfter = slots.addonAfter?.(),
prefix = slots.prefix?.(), prefix = slots.prefix?.(),
valueModifiers = {},
...others ...others
} = { ...(attrs as HTMLAttributes), ...props }; } = { ...(attrs as HTMLAttributes), ...props };
@ -112,6 +114,7 @@ const InputNumber = defineComponent({
<VcInputNumber <VcInputNumber
{...omit(others, ['size', 'defaultValue'])} {...omit(others, ['size', 'defaultValue'])}
ref={inputNumberRef} ref={inputNumberRef}
lazy={!!valueModifiers.lazy}
value={mergedValue.value} value={mergedValue.value}
class={inputNumberClass} class={inputNumberClass}
prefixCls={preCls} prefixCls={preCls}

View File

@ -81,7 +81,10 @@ export const inputNumberProps = () => ({
export default defineComponent({ export default defineComponent({
name: 'InnerInputNumber', name: 'InnerInputNumber',
inheritAttrs: false, inheritAttrs: false,
props: inputNumberProps(), props: {
...inputNumberProps(),
lazy: Boolean,
},
slots: ['upHandler', 'downHandler'], slots: ['upHandler', 'downHandler'],
setup(props, { attrs, slots, emit, expose }) { setup(props, { attrs, slots, emit, expose }) {
const inputRef = ref<HTMLInputElement>(); const inputRef = ref<HTMLInputElement>();
@ -509,7 +512,7 @@ export default defineComponent({
onInput, onInput,
onPressEnter, onPressEnter,
onStep, onStep,
lazy,
class: className, class: className,
style, style,
@ -517,6 +520,12 @@ export default defineComponent({
} = { ...(attrs as HTMLAttributes), ...props }; } = { ...(attrs as HTMLAttributes), ...props };
const { upHandler, downHandler } = slots; const { upHandler, downHandler } = slots;
const inputClassName = `${prefixCls}-input`; const inputClassName = `${prefixCls}-input`;
const eventProps = {} as any;
if (lazy) {
eventProps.onChange = onInternalInput;
} else {
eventProps.onInput = onInternalInput;
}
return ( return (
<div <div
class={classNames(prefixCls, className, { class={classNames(prefixCls, className, {
@ -561,7 +570,7 @@ export default defineComponent({
focus.value = true; focus.value = true;
emit('focus', e); emit('focus', e);
}} }}
onInput={onInternalInput} {...eventProps}
onBlur={onBlur} onBlur={onBlur}
onCompositionstart={onCompositionStart} onCompositionstart={onCompositionStart}
onCompositionend={onCompositionEnd} onCompositionend={onCompositionEnd}