UNPKG

tdesign-vue-next

Version:
380 lines (372 loc) 14.2 kB
/** * tdesign v1.17.7 * (c) 2025 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _defineProperty = require('@babel/runtime/helpers/defineProperty'); var _slicedToArray = require('@babel/runtime/helpers/slicedToArray'); var Vue = require('vue'); require('@babel/runtime/helpers/toConsumableArray'); require('@babel/runtime/helpers/typeof'); require('../../_chunks/dep-953a77eb.js'); var index = require('../../_chunks/dep-8382953f.js'); require('../../config-provider/hooks/useConfig.js'); var index$2 = require('../../_chunks/dep-874d2900.js'); require('../../_chunks/dep-cc66acf1.js'); var index$3 = require('../../_chunks/dep-bc848944.js'); var index$1 = require('../../_chunks/dep-e8ff2c13.js'); var number = require('../../_chunks/dep-2359c164.js'); var largeNumber = require('../../_chunks/dep-48e7c2a2.js'); require('../../_chunks/dep-8abdfb41.js'); require('../../_chunks/dep-5d7e2375.js'); require('../../_chunks/dep-94a7dc2d.js'); require('dayjs'); require('../../_chunks/dep-92e23f17.js'); require('../../_chunks/dep-0ff616fe.js'); require('../../_chunks/dep-5f52cd42.js'); require('../../_chunks/dep-48f60c78.js'); require('../../_chunks/dep-b3b464e8.js'); require('../../_chunks/dep-0813861e.js'); require('../../_chunks/dep-f57bcb19.js'); require('../../_chunks/dep-dc4bbc14.js'); require('../../_chunks/dep-05f89f0d.js'); require('../../_chunks/dep-87589faa.js'); require('../../_chunks/dep-e27ea667.js'); require('../../_chunks/dep-165ca38a.js'); require('../../_chunks/dep-32412d92.js'); require('../../_chunks/dep-a8a3d718.js'); require('../../_chunks/dep-54e566d9.js'); require('../../_chunks/dep-591a72de.js'); require('../../_chunks/dep-a55e8a08.js'); require('../../_chunks/dep-8adeee89.js'); require('../../_chunks/dep-4d2ef282.js'); require('../../_chunks/dep-929933ce.js'); require('../../_chunks/dep-6b1f0ef8.js'); require('../../_chunks/dep-d45110a6.js'); require('@babel/runtime/helpers/createClass'); require('@babel/runtime/helpers/classCallCheck'); require('../../_chunks/dep-23f77e26.js'); require('../../_chunks/dep-ee355a9a.js'); require('../../_chunks/dep-71fa6bfc.js'); require('../../_chunks/dep-80a478d7.js'); require('../../_chunks/dep-733b2b51.js'); require('../../_chunks/dep-fd5a369e.js'); require('../../_chunks/dep-990979bb.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty); var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray); function useInputNumber(props) { var _useCommonClassName = index.useCommonClassName(), classPrefix = _useCommonClassName.classPrefix, SIZE = _useCommonClassName.SIZE, STATUS = _useCommonClassName.STATUS; var _toRefs = Vue.toRefs(props), value = _toRefs.value, modelValue = _toRefs.modelValue, max = _toRefs.max, min = _toRefs.min; var _useVModel = index$1.useVModel(value, modelValue, props.defaultValue, props.onChange), _useVModel2 = _slicedToArray__default["default"](_useVModel, 2), tValue = _useVModel2[0], setTValue = _useVModel2[1]; var inputRef = Vue.ref(); var userInput = Vue.ref(""); var tDisabled = index$2.useDisabled(); var isReadonly = index$3.useReadonly(); var isError = Vue.ref(); var disabledReduce = Vue.computed(function () { return tDisabled.value || !number.canReduceNumber(tValue.value, props.min, props.largeNumber); }); var disabledAdd = Vue.computed(function () { return tDisabled.value || !number.canAddNumber(tValue.value, props.max, props.largeNumber); }); var wrapClasses = Vue.computed(function () { return ["".concat(classPrefix.value, "-input-number"), SIZE.value[props.size], _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"]({}, STATUS.value.disabled, tDisabled.value), "".concat(classPrefix.value, "-is-controls-right"), props.theme === "column"), "".concat(classPrefix.value, "-input-number--").concat(props.theme), props.theme), "".concat(classPrefix.value, "-input-number--auto-width"), props.autoWidth)]; }); var reduceClasses = Vue.computed(function () { return ["".concat(classPrefix.value, "-input-number__decrease"), _defineProperty__default["default"]({}, STATUS.value.disabled, disabledReduce.value)]; }); var addClasses = Vue.computed(function () { return ["".concat(classPrefix.value, "-input-number__increase"), _defineProperty__default["default"]({}, STATUS.value.disabled, disabledAdd.value)]; }); var getUserInput = function getUserInput(value2) { var _inputRef$value; if (!value2 && value2 !== 0) return ""; var inputStr = value2 || value2 === 0 ? String(value2) : ""; if (!((_inputRef$value = inputRef.value) !== null && _inputRef$value !== void 0 && (_inputRef$value = _inputRef$value.inputRef) !== null && _inputRef$value !== void 0 && _inputRef$value.contains(document.activeElement))) { var num = number.formatUnCompleteNumber(inputStr, { decimalPlaces: props.decimalPlaces, largeNumber: props.largeNumber, isToFixed: true }); inputStr = num || num === 0 ? String(num) : ""; if (props.format) { inputStr = String(props.format(value2, { fixedNumber: inputStr })); } } return inputStr; }; Vue.watch(tValue, function (val) { var largeNumber$1 = props.largeNumber, decimalPlaces = props.decimalPlaces; var inputValue = [void 0, null].includes(val) ? "" : String(val); if (!largeNumber$1 && !Number.isNaN(userInput.value)) { if (parseFloat(userInput.value) !== val) { userInput.value = getUserInput(inputValue); } var fixedNumber = Number(largeNumber.largeNumberToFixed(inputValue, decimalPlaces, largeNumber$1)); if (decimalPlaces !== void 0 && ![void 0, null].includes(val) && Number(fixedNumber) !== Number(tValue.value)) { setTValue(fixedNumber, { type: "props", e: void 0 }); } } if (largeNumber$1) { userInput.value = getUserInput(inputValue); if (decimalPlaces !== void 0 && largeNumber.largeNumberToFixed(inputValue, decimalPlaces, largeNumber$1) !== val) { var _inputRef$value2; var completeValue = inputValue; if (!((_inputRef$value2 = inputRef.value) !== null && _inputRef$value2 !== void 0 && (_inputRef$value2 = _inputRef$value2.inputRef) !== null && _inputRef$value2 !== void 0 && _inputRef$value2.contains(document.activeElement))) { completeValue = number.formatUnCompleteNumber(completeValue, { decimalPlaces: props.decimalPlaces, largeNumber: props.largeNumber, isToFixed: true }); } setTValue(completeValue, { type: "props", e: void 0 }); } } }, { immediate: true }); Vue.watch([tValue, max, min], function () { var _props$onValidate; if ([void 0, "", null].includes(tValue.value)) return; var max2 = props.max, min2 = props.min, largeNumber = props.largeNumber; var error = number.getMaxOrMinValidateResult({ value: tValue.value, largeNumber: largeNumber, max: max2, min: min2 }); isError.value = error; (_props$onValidate = props.onValidate) === null || _props$onValidate === void 0 || _props$onValidate.call(props, { error: error }); }, { immediate: true }); var handleStepValue = function handleStepValue(op) { var newValue = number.getStepValue({ op: op, step: props.step, max: props.max, min: props.min, lastValue: tValue.value, largeNumber: props.largeNumber }); var largeNumber = props.largeNumber, max2 = props.max, min2 = props.min; var overLimit = number.getMaxOrMinValidateResult({ value: newValue, largeNumber: largeNumber, max: max2, min: min2 }); return { overLimit: overLimit, newValue: newValue }; }; var handleReduce = function handleReduce(e) { if (disabledReduce.value || isReadonly.value) return; var r = handleStepValue("reduce"); if (r.overLimit && !props.allowInputOverLimit) return; setTValue(r.newValue, { type: "reduce", e: e }); }; var handleAdd = function handleAdd(e) { if (disabledAdd.value || isReadonly.value) return; var r = handleStepValue("add"); if (r.overLimit && !props.allowInputOverLimit) return; setTValue(r.newValue, { type: "add", e: e }); }; var onInnerInputChange = function onInnerInputChange(inputValue, _ref4) { var e = _ref4.e; var val = number.formatThousandths(inputValue); if (!number.canInputNumber(val, props.largeNumber)) return; var processedVal = val; if (props.decimalPlaces !== void 0 && val !== "" && val.includes(".")) { var parts = val.split("."); var decimalLimit = typeof props.decimalPlaces === "number" ? props.decimalPlaces : props.decimalPlaces.places; if (parts[1] && parts[1].length > decimalLimit) { processedVal = "".concat(parts[0], ".").concat(parts[1].substring(0, decimalLimit)); } } userInput.value = processedVal; if (props.largeNumber) { setTValue(processedVal, { type: "input", e: e }); return; } var newNumber = processedVal === "" ? void 0 : Number(processedVal); if (number.canSetValue(processedVal, Number(tValue.value))) { setTValue(newNumber, { type: "input", e: e }); } }; var handleBlur = function handleBlur(value2, ctx) { var _props$onBlur4; var largeNumber = props.largeNumber, max2 = props.max, min2 = props.min, decimalPlaces = props.decimalPlaces; if (!props.allowInputOverLimit) { if ([void 0, null].includes(tValue.value) && min2 !== -Infinity) { var _props$onBlur; setTValue(min2, { type: "blur", e: ctx.e }); (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, min2, ctx); return; } if (tValue.value !== void 0) { var r = number.getMaxOrMinValidateResult({ value: tValue.value, largeNumber: largeNumber, max: max2, min: min2 }); if (r === "below-minimum") { var _props$onBlur2; setTValue(min2, { type: "blur", e: ctx.e }); (_props$onBlur2 = props.onBlur) === null || _props$onBlur2 === void 0 || _props$onBlur2.call(props, min2, ctx); return; } if (r === "exceed-maximum") { var _props$onBlur3; setTValue(max2, { type: "blur", e: ctx.e }); (_props$onBlur3 = props.onBlur) === null || _props$onBlur3 === void 0 || _props$onBlur3.call(props, max2, ctx); return; } } } var newValue = number.formatUnCompleteNumber(value2, { decimalPlaces: decimalPlaces, largeNumber: largeNumber }); userInput.value = getUserInput(newValue); if (newValue !== tValue.value) { setTValue(newValue, { type: "blur", e: ctx.e }); } (_props$onBlur4 = props.onBlur) === null || _props$onBlur4 === void 0 || _props$onBlur4.call(props, newValue, ctx); }; var handleFocus = function handleFocus(value2, ctx) { var _props$onFocus; userInput.value = tValue.value || tValue.value === 0 ? String(tValue.value) : ""; (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, value2, ctx); }; var handleKeydown = function handleKeydown(value2, ctx) { var _props$onKeydown; if (tDisabled.value) return; var e = ctx.e; var keyEvent = { ArrowUp: handleAdd, ArrowDown: handleReduce }; var code = e.code || e.key; if (keyEvent[code] !== void 0) { keyEvent[code](e); } (_props$onKeydown = props.onKeydown) === null || _props$onKeydown === void 0 || _props$onKeydown.call(props, value2, ctx); }; var handleKeyup = function handleKeyup(value2, ctx) { var _props$onKeyup; (_props$onKeyup = props.onKeyup) === null || _props$onKeyup === void 0 || _props$onKeyup.call(props, value2, ctx); }; var handleKeypress = function handleKeypress(value2, ctx) { var _props$onKeypress; (_props$onKeypress = props.onKeypress) === null || _props$onKeypress === void 0 || _props$onKeypress.call(props, value2, ctx); }; var handleEnter = function handleEnter(value2, ctx) { var _props$onEnter; userInput.value = getUserInput(value2); var newValue = number.formatUnCompleteNumber(value2, { decimalPlaces: props.decimalPlaces, largeNumber: props.largeNumber }); if (newValue !== value2 && String(newValue) !== value2) { setTValue(newValue, { type: "enter", e: ctx.e }); } (_props$onEnter = props.onEnter) === null || _props$onEnter === void 0 || _props$onEnter.call(props, newValue, ctx); }; var focus = function focus() { if (tDisabled.value || isReadonly.value) return; inputRef.value.focus(); }; var blur = function blur() { inputRef.value.blur(); }; var listeners = { onBlur: handleBlur, onFocus: handleFocus, onKeydown: handleKeydown, onKeyup: handleKeyup, onKeypress: handleKeypress, onEnter: handleEnter, onClick: focus }; return { classPrefix: classPrefix, wrapClasses: wrapClasses, reduceClasses: reduceClasses, addClasses: addClasses, tDisabled: tDisabled, isError: isError, listeners: listeners, userInput: userInput, tValue: tValue, inputRef: inputRef, focus: focus, blur: blur, handleReduce: handleReduce, handleAdd: handleAdd, onInnerInputChange: onInnerInputChange, isReadonly: isReadonly }; } exports["default"] = useInputNumber; //# sourceMappingURL=useInputNumber.js.map