UNPKG

@wfrog/vc

Version:

`自用` 的基于 `element-plus` 二次封装的 `vue3` 组件库。追求在业务场景中,尽可能使用更少的代码量来实现需求。 因此在组件封装上,以 `方便` 为主,打包仅 `esm` 模式。

110 lines (107 loc) 4.65 kB
import './index.css' // vue-script:D:\project\_my\vc\src\components\input-number\index.vue?type=script import { useCssVars as _useCssVars, defineComponent as _defineComponent } from "vue"; import { unref as _unref, renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, isRef as _isRef, mergeProps as _mergeProps, createBlock as _createBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue"; import { computed, nextTick, ref, shallowRef, useCssModule, useSlots } from "vue"; import { ElInputNumber } from "element-plus"; var _hoisted_1 = { key: 0, class: "el-input-group__prepend" }; var input_number_default = /* @__PURE__ */ _defineComponent({ __name: "index", props: { modelValue: { type: Number, required: true, default: 0 }, precision: { type: Number, required: false, default: 0 }, controlsPosition: { type: String, required: false }, size: { type: String, required: false }, inputNumberClass: { type: String, required: false }, inputWidth: { type: String, required: false, default: "80px" } }, emits: ["update:modelValue", "change", "blur"], setup(__props, { emit: emits }) { const props = __props; _useCssVars((_ctx) => ({ "82b20fc6-inputWidth": __props.inputWidth })); const $slots = useSlots(); const $style = useCssModule(); const visible = ref(true); const eleInputNumber = shallowRef(); const mainClass = computed(() => { const className = { [$style["input-number"]]: true, "el-input": true, "el-input-group--prepend": $slots.prepend, "input-with-select": eleInputNumber.value?.querySelector(".el-input-group__prepend>.el-select") }; if (props.size) { className[`el-input--${props.size}`] = true; } return className; }); const myControlsPosition = computed(() => $slots.prepend && props.controlsPosition === void 0 ? "right" : props.controlsPosition); const myValue = computed({ get: () => props.modelValue, set: (val) => { const myVal = val === null ? myValue.value : val; emits("update:modelValue", myVal); } }); const limitInputValue = (e) => { const key = e.key; if (key === "e" || key === "E" || props.precision === 0 && key === ".") { e.preventDefault(); return false; } return true; }; const handleChange = (currentValue, oldValue) => { myValue.value = currentValue === 0 ? currentValue : currentValue || oldValue || 0; emits("change", myValue.value, oldValue || 0); }; const handleBlur = (e) => { const eleInput = eleInputNumber.value?.querySelector(".el-input__inner[type=number]"); if (eleInput.value === "") { visible.value = false; nextTick(() => visible.value = true); } emits("blur", e); }; return (_ctx, _cache) => { return _openBlock(), _createElementBlock("div", { ref_key: "eleInputNumber", ref: eleInputNumber, class: _normalizeClass(_unref(mainClass)) }, [ _unref($slots).prepend ? (_openBlock(), _createElementBlock("div", _hoisted_1, [ _renderSlot(_ctx.$slots, "prepend") ])) : _createCommentVNode("v-if", true), visible.value ? (_openBlock(), _createBlock(_unref(ElInputNumber), _mergeProps({ key: 1, modelValue: _unref(myValue), "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _isRef(myValue) ? myValue.value = $event : null) }, _ctx.$attrs, { size: __props.size, "step-strictly": "", class: [__props.inputNumberClass, _unref($style)["el-input-number"]], precision: __props.precision, "controls-position": _unref(myControlsPosition), onKeydown: limitInputValue, onChange: handleChange, onBlur: handleBlur }), null, 16, ["modelValue", "size", "class", "precision", "controls-position"])) : _createCommentVNode("v-if", true) ], 2); }; } }); // vue-style:D:\project\_my\vc\src\components\input-number\index.vue?type=style&index=0&isModule=true&isNameImport=true var input_number_default2 = { "input-number": "_input-number_199yu_1", "el-input-number": "_el-input-number_199yu_18" }; // src/components/input-number/index.vue var cssModules = {}; input_number_default.__cssModules = cssModules = {}; cssModules["$style"] = input_number_default2; var input_number_default3 = input_number_default; export { input_number_default3 as default };