(diff)
| 128 | setTranslate($scrollable, translate); |
| 129 | |
| 130 | function stop(diff) { |
| 131 | translate += diff; |
| 132 | |
| 133 | // 移动到最接近的那一行 |
| 134 | translate = Math.round(translate / defaults.rowHeight) * defaults.rowHeight; |
| 135 | const max = getMax(defaults.offset, defaults.rowHeight); |
| 136 | const min = getMin(defaults.offset, defaults.rowHeight, defaults.items.length); |
| 137 | // 不要超过最大值或者最小值 |
| 138 | if (translate > max) { |
| 139 | translate = max; |
| 140 | } |
| 141 | if (translate < min) { |
| 142 | translate = min; |
| 143 | } |
| 144 | |
| 145 | // 如果是 disabled 的就跳过 |
| 146 | let index = defaults.offset - translate / defaults.rowHeight; |
| 147 | while (!!defaults.items[index] && defaults.items[index].disabled) { |
| 148 | diff > 0 ? ++index : --index; |
| 149 | } |
| 150 | translate = (defaults.offset - index) * defaults.rowHeight; |
| 151 | setTransition($scrollable, .3); |
| 152 | setTranslate($scrollable, translate); |
| 153 | |
| 154 | // 触发选择事件 |
| 155 | if (index !== lastIndex) { |
| 156 | defaults.onScroll.call(this, defaults.items[index], index); |
| 157 | defaults.onChange.call(this, defaults.items[index], index); |
| 158 | } |
| 159 | lastIndex = null; // 重置 |
| 160 | } |
| 161 | |
| 162 | function _start(pageY){ |
| 163 | start = pageY; |
no test coverage detected