index.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
  3. import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
  4. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  5. var _excluded = ["class", "bordered", "readonly", "style", "addonBefore", "addonAfter", "prefix", "valueModifiers"];
  6. import { resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
  7. import { watch, defineComponent, ref } from 'vue';
  8. import classNames from '../_util/classNames';
  9. import UpOutlined from "@ant-design/icons-vue/es/icons/UpOutlined";
  10. import DownOutlined from "@ant-design/icons-vue/es/icons/DownOutlined";
  11. import VcInputNumber, { inputNumberProps as baseInputNumberProps } from './src/InputNumber';
  12. import { useInjectFormItemContext } from '../form/FormItemContext';
  13. import useConfigInject from '../_util/hooks/useConfigInject';
  14. import { cloneElement } from '../_util/vnode';
  15. import omit from '../_util/omit';
  16. import PropTypes from '../_util/vue-types';
  17. import isValidValue from '../_util/isValidValue';
  18. var baseProps = baseInputNumberProps();
  19. export var inputNumberProps = function inputNumberProps() {
  20. return _objectSpread(_objectSpread({}, baseProps), {}, {
  21. size: {
  22. type: String
  23. },
  24. bordered: {
  25. type: Boolean,
  26. default: true
  27. },
  28. placeholder: String,
  29. name: String,
  30. id: String,
  31. type: String,
  32. addonBefore: PropTypes.any,
  33. addonAfter: PropTypes.any,
  34. prefix: PropTypes.any,
  35. 'onUpdate:value': baseProps.onChange,
  36. valueModifiers: Object
  37. });
  38. };
  39. var InputNumber = defineComponent({
  40. compatConfig: {
  41. MODE: 3
  42. },
  43. name: 'AInputNumber',
  44. inheritAttrs: false,
  45. props: inputNumberProps(),
  46. // emits: ['focus', 'blur', 'change', 'input', 'update:value'],
  47. slots: ['addonBefore', 'addonAfter', 'prefix'],
  48. setup: function setup(props, _ref) {
  49. var emit = _ref.emit,
  50. expose = _ref.expose,
  51. attrs = _ref.attrs,
  52. slots = _ref.slots;
  53. var formItemContext = useInjectFormItemContext();
  54. var _useConfigInject = useConfigInject('input-number', props),
  55. prefixCls = _useConfigInject.prefixCls,
  56. size = _useConfigInject.size,
  57. direction = _useConfigInject.direction;
  58. var mergedValue = ref(props.value === undefined ? props.defaultValue : props.value);
  59. var focused = ref(false);
  60. watch(function () {
  61. return props.value;
  62. }, function () {
  63. mergedValue.value = props.value;
  64. });
  65. var inputNumberRef = ref(null);
  66. var focus = function focus() {
  67. var _inputNumberRef$value;
  68. (_inputNumberRef$value = inputNumberRef.value) === null || _inputNumberRef$value === void 0 ? void 0 : _inputNumberRef$value.focus();
  69. };
  70. var blur = function blur() {
  71. var _inputNumberRef$value2;
  72. (_inputNumberRef$value2 = inputNumberRef.value) === null || _inputNumberRef$value2 === void 0 ? void 0 : _inputNumberRef$value2.blur();
  73. };
  74. expose({
  75. focus: focus,
  76. blur: blur
  77. });
  78. var handleChange = function handleChange(val) {
  79. if (props.value === undefined) {
  80. mergedValue.value = val;
  81. }
  82. emit('update:value', val);
  83. emit('change', val);
  84. formItemContext.onFieldChange();
  85. };
  86. var handleBlur = function handleBlur(e) {
  87. focused.value = false;
  88. emit('blur', e);
  89. formItemContext.onFieldBlur();
  90. };
  91. var handleFocus = function handleFocus(e) {
  92. focused.value = true;
  93. emit('focus', e);
  94. };
  95. return function () {
  96. var _slots$addonBefore, _slots$addonAfter, _slots$prefix, _classNames;
  97. var _attrs$props = _objectSpread(_objectSpread({}, attrs), props),
  98. className = _attrs$props.class,
  99. bordered = _attrs$props.bordered,
  100. readonly = _attrs$props.readonly,
  101. style = _attrs$props.style,
  102. _attrs$props$addonBef = _attrs$props.addonBefore,
  103. addonBefore = _attrs$props$addonBef === void 0 ? (_slots$addonBefore = slots.addonBefore) === null || _slots$addonBefore === void 0 ? void 0 : _slots$addonBefore.call(slots) : _attrs$props$addonBef,
  104. _attrs$props$addonAft = _attrs$props.addonAfter,
  105. addonAfter = _attrs$props$addonAft === void 0 ? (_slots$addonAfter = slots.addonAfter) === null || _slots$addonAfter === void 0 ? void 0 : _slots$addonAfter.call(slots) : _attrs$props$addonAft,
  106. _attrs$props$prefix = _attrs$props.prefix,
  107. prefix = _attrs$props$prefix === void 0 ? (_slots$prefix = slots.prefix) === null || _slots$prefix === void 0 ? void 0 : _slots$prefix.call(slots) : _attrs$props$prefix,
  108. _attrs$props$valueMod = _attrs$props.valueModifiers,
  109. valueModifiers = _attrs$props$valueMod === void 0 ? {} : _attrs$props$valueMod,
  110. others = _objectWithoutProperties(_attrs$props, _excluded);
  111. var preCls = prefixCls.value;
  112. var mergeSize = size.value;
  113. var inputNumberClass = classNames((_classNames = {}, _defineProperty(_classNames, "".concat(preCls, "-lg"), mergeSize === 'large'), _defineProperty(_classNames, "".concat(preCls, "-sm"), mergeSize === 'small'), _defineProperty(_classNames, "".concat(preCls, "-rtl"), direction.value === 'rtl'), _defineProperty(_classNames, "".concat(preCls, "-readonly"), readonly), _defineProperty(_classNames, "".concat(preCls, "-borderless"), !bordered), _classNames), className);
  114. var element = _createVNode(VcInputNumber, _objectSpread(_objectSpread({}, omit(others, ['size', 'defaultValue'])), {}, {
  115. "ref": inputNumberRef,
  116. "lazy": !!valueModifiers.lazy,
  117. "value": mergedValue.value,
  118. "class": inputNumberClass,
  119. "prefixCls": preCls,
  120. "readonly": readonly,
  121. "onChange": handleChange,
  122. "onBlur": handleBlur,
  123. "onFocus": handleFocus
  124. }), {
  125. upHandler: function upHandler() {
  126. return _createVNode(UpOutlined, {
  127. "class": "".concat(preCls, "-handler-up-inner")
  128. }, null);
  129. },
  130. downHandler: function downHandler() {
  131. return _createVNode(DownOutlined, {
  132. "class": "".concat(preCls, "-handler-down-inner")
  133. }, null);
  134. }
  135. });
  136. var hasAddon = isValidValue(addonBefore) || isValidValue(addonAfter);
  137. if (isValidValue(prefix)) {
  138. var _classNames2;
  139. var affixWrapperCls = classNames("".concat(preCls, "-affix-wrapper"), (_classNames2 = {}, _defineProperty(_classNames2, "".concat(preCls, "-affix-wrapper-focused"), focused.value), _defineProperty(_classNames2, "".concat(preCls, "-affix-wrapper-disabled"), props.disabled), _defineProperty(_classNames2, "".concat(preCls, "-affix-wrapper-rtl"), direction.value === 'rtl'), _defineProperty(_classNames2, "".concat(preCls, "-affix-wrapper-readonly"), readonly), _defineProperty(_classNames2, "".concat(preCls, "-affix-wrapper-borderless"), !bordered), _defineProperty(_classNames2, "".concat(className), !hasAddon && className), _classNames2));
  140. element = _createVNode("div", {
  141. "class": affixWrapperCls,
  142. "style": style,
  143. "onMouseup": function onMouseup() {
  144. return inputNumberRef.value.focus();
  145. }
  146. }, [_createVNode("span", {
  147. "class": "".concat(preCls, "-prefix")
  148. }, [prefix]), element]);
  149. }
  150. if (hasAddon) {
  151. var _classNames4;
  152. var wrapperClassName = "".concat(preCls, "-group");
  153. var addonClassName = "".concat(wrapperClassName, "-addon");
  154. var addonBeforeNode = addonBefore ? _createVNode("div", {
  155. "class": addonClassName
  156. }, [addonBefore]) : null;
  157. var addonAfterNode = addonAfter ? _createVNode("div", {
  158. "class": addonClassName
  159. }, [addonAfter]) : null;
  160. var mergedWrapperClassName = classNames("".concat(preCls, "-wrapper"), wrapperClassName, _defineProperty({}, "".concat(wrapperClassName, "-rtl"), direction.value === 'rtl'));
  161. var mergedGroupClassName = classNames("".concat(preCls, "-group-wrapper"), (_classNames4 = {}, _defineProperty(_classNames4, "".concat(preCls, "-group-wrapper-sm"), mergeSize === 'small'), _defineProperty(_classNames4, "".concat(preCls, "-group-wrapper-lg"), mergeSize === 'large'), _defineProperty(_classNames4, "".concat(preCls, "-group-wrapper-rtl"), direction.value === 'rtl'), _classNames4), className);
  162. element = _createVNode("div", {
  163. "class": mergedGroupClassName,
  164. "style": style
  165. }, [_createVNode("div", {
  166. "class": mergedWrapperClassName
  167. }, [addonBeforeNode, element, addonAfterNode])]);
  168. }
  169. return cloneElement(element, {
  170. style: style
  171. });
  172. };
  173. }
  174. });
  175. export default _extends(InputNumber, {
  176. install: function install(app) {
  177. app.component(InputNumber.name, InputNumber);
  178. return app;
  179. }
  180. });