u-number-box.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. "use strict";
  2. var __defProp = Object.defineProperty;
  3. var __defProps = Object.defineProperties;
  4. var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
  5. var __getOwnPropSymbols = Object.getOwnPropertySymbols;
  6. var __hasOwnProp = Object.prototype.hasOwnProperty;
  7. var __propIsEnum = Object.prototype.propertyIsEnumerable;
  8. var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  9. var __spreadValues = (a, b) => {
  10. for (var prop in b || (b = {}))
  11. if (__hasOwnProp.call(b, prop))
  12. __defNormalProp(a, prop, b[prop]);
  13. if (__getOwnPropSymbols)
  14. for (var prop of __getOwnPropSymbols(b)) {
  15. if (__propIsEnum.call(b, prop))
  16. __defNormalProp(a, prop, b[prop]);
  17. }
  18. return a;
  19. };
  20. var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
  21. var uni_modules_uviewPlus_components_uNumberBox_props = require("./props.js");
  22. var uni_modules_uviewPlus_libs_mixin_mpMixin = require("../../libs/mixin/mpMixin.js");
  23. var uni_modules_uviewPlus_libs_mixin_mixin = require("../../libs/mixin/mixin.js");
  24. var uni_modules_uviewPlus_libs_function_index = require("../../libs/function/index.js");
  25. var common_vendor = require("../../../../common/vendor.js");
  26. require("../../libs/config/props.js");
  27. require("../../libs/config/config.js");
  28. require("../../libs/config/props/actionSheet.js");
  29. require("../../libs/config/props/album.js");
  30. require("../../libs/config/props/alert.js");
  31. require("../../libs/config/props/avatar.js");
  32. require("../../libs/config/props/avatarGroup.js");
  33. require("../../libs/config/props/backtop.js");
  34. require("../../libs/config/props/badge.js");
  35. require("../../libs/config/props/button.js");
  36. require("../../libs/config/props/calendar.js");
  37. require("../../libs/config/props/carKeyboard.js");
  38. require("../../libs/config/props/cell.js");
  39. require("../../libs/config/props/cellGroup.js");
  40. require("../../libs/config/props/checkbox.js");
  41. require("../../libs/config/props/checkboxGroup.js");
  42. require("../../libs/config/props/circleProgress.js");
  43. require("../../libs/config/props/code.js");
  44. require("../../libs/config/props/codeInput.js");
  45. require("../../libs/config/props/col.js");
  46. require("../../libs/config/props/collapse.js");
  47. require("../../libs/config/props/collapseItem.js");
  48. require("../../libs/config/props/columnNotice.js");
  49. require("../../libs/config/props/countDown.js");
  50. require("../../libs/config/props/countTo.js");
  51. require("../../libs/config/props/datetimePicker.js");
  52. require("../../libs/config/props/divider.js");
  53. require("../../libs/config/props/empty.js");
  54. require("../../libs/config/props/form.js");
  55. require("../../libs/config/props/formItem.js");
  56. require("../../libs/config/props/gap.js");
  57. require("../../libs/config/props/grid.js");
  58. require("../../libs/config/props/gridItem.js");
  59. require("../../libs/config/props/icon.js");
  60. require("../../libs/config/props/image.js");
  61. require("../../libs/config/props/indexAnchor.js");
  62. require("../../libs/config/props/indexList.js");
  63. require("../../libs/config/props/input.js");
  64. require("../../libs/config/props/keyboard.js");
  65. require("../../libs/config/props/line.js");
  66. require("../../libs/config/props/lineProgress.js");
  67. require("../../libs/config/props/link.js");
  68. require("../../libs/config/props/list.js");
  69. require("../../libs/config/props/listItem.js");
  70. require("../../libs/config/props/loadingIcon.js");
  71. require("../../libs/config/props/loadingPage.js");
  72. require("../../libs/config/props/loadmore.js");
  73. require("../../libs/config/props/modal.js");
  74. require("../../libs/config/props/navbar.js");
  75. require("../../libs/config/color.js");
  76. require("../../libs/config/props/noNetwork.js");
  77. require("../../libs/config/props/noticeBar.js");
  78. require("../../libs/config/props/notify.js");
  79. require("../../libs/config/props/numberBox.js");
  80. require("../../libs/config/props/numberKeyboard.js");
  81. require("../../libs/config/props/overlay.js");
  82. require("../../libs/config/props/parse.js");
  83. require("../../libs/config/props/picker.js");
  84. require("../../libs/config/props/popup.js");
  85. require("../../libs/config/props/radio.js");
  86. require("../../libs/config/props/radioGroup.js");
  87. require("../../libs/config/props/rate.js");
  88. require("../../libs/config/props/readMore.js");
  89. require("../../libs/config/props/row.js");
  90. require("../../libs/config/props/rowNotice.js");
  91. require("../../libs/config/props/scrollList.js");
  92. require("../../libs/config/props/search.js");
  93. require("../../libs/config/props/section.js");
  94. require("../../libs/config/props/skeleton.js");
  95. require("../../libs/config/props/slider.js");
  96. require("../../libs/config/props/statusBar.js");
  97. require("../../libs/config/props/steps.js");
  98. require("../../libs/config/props/stepsItem.js");
  99. require("../../libs/config/props/sticky.js");
  100. require("../../libs/config/props/subsection.js");
  101. require("../../libs/config/props/swipeAction.js");
  102. require("../../libs/config/props/swipeActionItem.js");
  103. require("../../libs/config/props/swiper.js");
  104. require("../../libs/config/props/swipterIndicator.js");
  105. require("../../libs/config/props/switch.js");
  106. require("../../libs/config/props/tabbar.js");
  107. require("../../libs/config/props/tabbarItem.js");
  108. require("../../libs/config/props/tabs.js");
  109. require("../../libs/config/props/tag.js");
  110. require("../../libs/config/props/text.js");
  111. require("../../libs/config/props/textarea.js");
  112. require("../../libs/config/props/toast.js");
  113. require("../../libs/config/props/toolbar.js");
  114. require("../../libs/config/props/tooltip.js");
  115. require("../../libs/config/props/transition.js");
  116. require("../../libs/config/props/upload.js");
  117. require("../../libs/function/test.js");
  118. require("../../libs/util/route.js");
  119. require("../../libs/function/digit.js");
  120. const _sfc_main = {
  121. name: "u-number-box",
  122. mixins: [uni_modules_uviewPlus_libs_mixin_mpMixin.mpMixin, uni_modules_uviewPlus_libs_mixin_mixin.mixin, uni_modules_uviewPlus_components_uNumberBox_props.props],
  123. data() {
  124. return {
  125. currentValue: "",
  126. longPressTimer: null
  127. };
  128. },
  129. watch: {
  130. watchChange(n) {
  131. this.check();
  132. },
  133. modelValue: {
  134. handler: function(newV, oldV) {
  135. if (newV !== this.currentValue) {
  136. this.currentValue = this.format(this.modelValue);
  137. }
  138. },
  139. immediate: true
  140. }
  141. },
  142. computed: {
  143. getCursorSpacing() {
  144. return uni_modules_uviewPlus_libs_function_index.getPx(this.cursorSpacing);
  145. },
  146. buttonStyle() {
  147. return (type) => {
  148. const style = {
  149. backgroundColor: this.bgColor,
  150. height: uni_modules_uviewPlus_libs_function_index.addUnit(this.buttonSize),
  151. color: this.color
  152. };
  153. if (this.isDisabled(type)) {
  154. style.backgroundColor = "#f7f8fa";
  155. }
  156. return style;
  157. };
  158. },
  159. inputStyle() {
  160. this.disabled || this.disabledInput;
  161. const style = {
  162. color: this.color,
  163. backgroundColor: this.bgColor,
  164. height: uni_modules_uviewPlus_libs_function_index.addUnit(this.buttonSize),
  165. width: uni_modules_uviewPlus_libs_function_index.addUnit(this.inputWidth)
  166. };
  167. return style;
  168. },
  169. watchChange() {
  170. return [this.integer, this.decimalLength, this.min, this.max];
  171. },
  172. isDisabled() {
  173. return (type) => {
  174. if (type === "plus") {
  175. return this.disabled || this.disablePlus || this.currentValue >= this.max;
  176. }
  177. return this.disabled || this.disableMinus || this.currentValue <= this.min;
  178. };
  179. }
  180. },
  181. mounted() {
  182. this.init();
  183. },
  184. emits: ["update:modelValue", "focus", "blur", "overlimit", "change", "plus", "minus"],
  185. methods: {
  186. init() {
  187. this.currentValue = this.format(this.modelValue);
  188. },
  189. format(value) {
  190. value = this.filter(value);
  191. value = value === "" ? 0 : +value;
  192. value = Math.max(Math.min(this.max, value), this.min);
  193. if (this.decimalLength !== null) {
  194. value = value.toFixed(this.decimalLength);
  195. }
  196. return value;
  197. },
  198. filter(value) {
  199. value = String(value).replace(/[^0-9.-]/g, "");
  200. if (this.integer && value.indexOf(".") !== -1) {
  201. value = value.split(".")[0];
  202. }
  203. return value;
  204. },
  205. check() {
  206. const val = this.format(this.currentValue);
  207. if (val !== this.currentValue) {
  208. this.currentValue = val;
  209. }
  210. },
  211. onFocus(event) {
  212. this.$emit("focus", __spreadProps(__spreadValues({}, event.detail), {
  213. name: this.name
  214. }));
  215. },
  216. onBlur(event) {
  217. this.format(event.detail.value);
  218. this.$emit("blur", __spreadProps(__spreadValues({}, event.detail), {
  219. name: this.name
  220. }));
  221. },
  222. onInput(e) {
  223. const {
  224. value = ""
  225. } = e.detail || {};
  226. if (value === "")
  227. return;
  228. let formatted = this.filter(value);
  229. if (this.decimalLength !== null && formatted.indexOf(".") !== -1) {
  230. const pair = formatted.split(".");
  231. formatted = `${pair[0]}.${pair[1].slice(0, this.decimalLength)}`;
  232. }
  233. formatted = this.format(formatted);
  234. this.emitChange(formatted);
  235. return formatted;
  236. },
  237. emitChange(value) {
  238. if (!this.asyncChange) {
  239. this.$nextTick(() => {
  240. this.$emit("update:modelValue", value);
  241. this.currentValue = value;
  242. this.$forceUpdate();
  243. });
  244. }
  245. this.$emit("change", {
  246. value,
  247. name: this.name
  248. });
  249. },
  250. onChange() {
  251. const {
  252. type
  253. } = this;
  254. if (this.isDisabled(type)) {
  255. return this.$emit("overlimit", type);
  256. }
  257. const diff = type === "minus" ? -this.step : +this.step;
  258. const value = this.format(this.add(+this.currentValue, diff));
  259. this.emitChange(value);
  260. this.$emit(type);
  261. },
  262. add(num1, num2) {
  263. const cardinal = Math.pow(10, 10);
  264. return Math.round((num1 + num2) * cardinal) / cardinal;
  265. },
  266. clickHandler(type) {
  267. this.type = type;
  268. this.onChange();
  269. },
  270. longPressStep() {
  271. this.clearTimeout();
  272. this.longPressTimer = setTimeout(() => {
  273. this.onChange();
  274. this.longPressStep();
  275. }, 250);
  276. },
  277. onTouchStart(type) {
  278. if (!this.longPress)
  279. return;
  280. this.clearTimeout();
  281. this.type = type;
  282. this.longPressTimer = setTimeout(() => {
  283. this.onChange();
  284. this.longPressStep();
  285. }, 600);
  286. },
  287. onTouchEnd() {
  288. if (!this.longPress)
  289. return;
  290. this.clearTimeout();
  291. },
  292. clearTimeout() {
  293. clearTimeout(this.longPressTimer);
  294. this.longPressTimer = null;
  295. }
  296. }
  297. };
  298. if (!Array) {
  299. const _easycom_u_icon2 = common_vendor.resolveComponent("u-icon");
  300. _easycom_u_icon2();
  301. }
  302. const _easycom_u_icon = () => "../u-icon/u-icon.js";
  303. if (!Math) {
  304. _easycom_u_icon();
  305. }
  306. function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
  307. return common_vendor.e({
  308. a: _ctx.showMinus && _ctx.$slots.minus
  309. }, _ctx.showMinus && _ctx.$slots.minus ? {
  310. b: common_vendor.o(($event) => $options.clickHandler("minus")),
  311. c: common_vendor.o(($event) => $options.onTouchStart("minus")),
  312. d: common_vendor.o((...args) => $options.clearTimeout && $options.clearTimeout(...args))
  313. } : _ctx.showMinus ? {
  314. f: common_vendor.p({
  315. name: "minus",
  316. color: $options.isDisabled("minus") ? "#c8c9cc" : "#323233",
  317. size: "15",
  318. bold: true,
  319. customStyle: _ctx.iconStyle
  320. }),
  321. g: common_vendor.o(($event) => $options.clickHandler("minus")),
  322. h: common_vendor.o(($event) => $options.onTouchStart("minus")),
  323. i: common_vendor.o((...args) => $options.clearTimeout && $options.clearTimeout(...args)),
  324. j: $options.isDisabled("minus") ? 1 : "",
  325. k: common_vendor.s($options.buttonStyle("minus"))
  326. } : {}, {
  327. e: _ctx.showMinus,
  328. l: _ctx.disabledInput || _ctx.disabled,
  329. m: $options.getCursorSpacing,
  330. n: _ctx.disabled || _ctx.disabledInput ? 1 : "",
  331. o: $data.currentValue,
  332. p: common_vendor.o((...args) => $options.onBlur && $options.onBlur(...args)),
  333. q: common_vendor.o((...args) => $options.onFocus && $options.onFocus(...args)),
  334. r: common_vendor.o((...args) => $options.onInput && $options.onInput(...args)),
  335. s: common_vendor.s($options.inputStyle),
  336. t: _ctx.showPlus && _ctx.$slots.plus
  337. }, _ctx.showPlus && _ctx.$slots.plus ? {
  338. v: common_vendor.o(($event) => $options.clickHandler("plus")),
  339. w: common_vendor.o(($event) => $options.onTouchStart("plus")),
  340. x: common_vendor.o((...args) => $options.clearTimeout && $options.clearTimeout(...args))
  341. } : _ctx.showPlus ? {
  342. z: common_vendor.p({
  343. name: "plus",
  344. color: $options.isDisabled("plus") ? "#c8c9cc" : "#323233",
  345. size: "15",
  346. bold: true,
  347. customStyle: _ctx.iconStyle
  348. }),
  349. A: common_vendor.o(($event) => $options.clickHandler("plus")),
  350. B: common_vendor.o(($event) => $options.onTouchStart("plus")),
  351. C: common_vendor.o((...args) => $options.clearTimeout && $options.clearTimeout(...args)),
  352. D: $options.isDisabled("plus") ? 1 : "",
  353. E: common_vendor.s($options.buttonStyle("plus"))
  354. } : {}, {
  355. y: _ctx.showPlus
  356. });
  357. }
  358. var Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-ccd1fa7a"], ["__file", "C:/Users/Administrator/Desktop/\u9879\u76EE/\u76F4\u64AD/liveH5-v3/uni_modules/uview-plus/components/u-number-box/u-number-box.vue"]]);
  359. wx.createComponent(Component);