tui-slide-verify.wxs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. var slideBarWidth = 200;
  2. var slideBlockWidth = 32;
  3. var errorRange = 2
  4. var disabled = false
  5. function bool(str) {
  6. return str === 'true' || str == true ? true : false
  7. }
  8. function touchstart(e, ins) {
  9. var state = e.instance.getState()
  10. var touch = e.touches[0] || e.changedTouches[0]
  11. var dataset = e.instance.getDataset()
  12. state.startX = touch.pageX
  13. slideBarWidth = +dataset.slidebarwidth
  14. slideBlockWidth = +dataset.slideblockwidth
  15. errorRange = +dataset.errorrange
  16. disabled = bool(dataset.disabled)
  17. }
  18. function styleChange(left, ins) {
  19. if (!ins) return;
  20. var tsb = ins.selectComponent('.tui-slider-block')
  21. var tsg = ins.selectComponent('.tui-slide-glided')
  22. if (!tsb || !tsg) return;
  23. tsb.setStyle({
  24. transform: 'translate3d(' + left + 'px,0,0)'
  25. })
  26. tsg.setStyle({
  27. width: left + 'px'
  28. })
  29. }
  30. function touchmove(e, ins) {
  31. if (disabled) return;
  32. var state = e.instance.getState()
  33. var touch = e.touches[0] || e.changedTouches[0]
  34. var pageX = touch.pageX;
  35. var left = pageX - state.startX + (state.lastLeft || 0);
  36. left = left < 0 ? 0 : left;
  37. var width = slideBarWidth - slideBlockWidth;
  38. left = left >= width ? width : left;
  39. state.startX = pageX
  40. state.lastLeft = left
  41. styleChange(left, ins)
  42. }
  43. function touchend(e, ins) {
  44. if (disabled) return;
  45. var state = e.instance.getState()
  46. let left = slideBarWidth - slideBlockWidth
  47. if (left - state.lastLeft <= errorRange) {
  48. styleChange(left, ins)
  49. ins.callMethod('success')
  50. } else {
  51. state.startX = 0;
  52. state.lastLeft = 0;
  53. styleChange(0, ins)
  54. }
  55. }
  56. function slidereset(reset, oldreset, owner, ins) {
  57. var state = ins.getState()
  58. if (reset > 0) {
  59. state.startX = 0;
  60. state.lastLeft = 0;
  61. styleChange(0, owner)
  62. }
  63. }
  64. module.exports = {
  65. touchstart: touchstart,
  66. touchmove: touchmove,
  67. touchend: touchend,
  68. slidereset: slidereset
  69. }