1 |
- "use strict";var _baseComponent=_interopRequireDefault(require("../helpers/baseComponent")),_classNames2=_interopRequireDefault(require("../helpers/libs/classNames")),_shallowEqual=_interopRequireDefault(require("../helpers/libs/shallowEqual")),_styleToCssString=_interopRequireDefault(require("../helpers/libs/styleToCssString")),_fieldNamesBehavior=_interopRequireDefault(require("../helpers/mixins/fieldNamesBehavior")),_gestures=require("../helpers/shared/gestures"),_useNativeAPI=require("../helpers/hooks/useNativeAPI"),_props=require("./props"),_utils=require("./utils");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperty(t,e,i){return(e=_toPropertyKey(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function _toPropertyKey(t){t=_toPrimitive(t,"string");return"symbol"==_typeof(t)?t:String(t)}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var i=t[Symbol.toPrimitive];if(void 0===i)return("string"===e?String:Number)(t);i=i.call(t,e||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}function getStyles(t){return Array.isArray(t)?t.map(function(t){return(0,_styleToCssString.default)(t)}):(0,_styleToCssString.default)(t)}(0,_baseComponent.default)({behaviors:[_fieldNamesBehavior.default],properties:_props.props,data:{inputValue:null,selectedIndex:null,selectedValue:null,cols:[],extIndicatorStyle:"",extItemStyle:"",extMaskStyle:"",contentStyle:"",itemCount:7,styles:{}},computed:{classes:["prefixCls, labelAlign",function(t,e){return{wrap:(0,_classNames2.default)(t,_defineProperty({},"".concat(t,"--").concat(e),e)),mask:"".concat(t,"__mask"),indicator:"".concat(t,"__indicator"),content:"".concat(t,"__content"),item:"".concat(t,"__item")}}]},observers:_defineProperty(_defineProperty({itemHeight:function(t){this.updatedStyles(t)},itemStyle:function(t){this.setData({extItemStyle:getStyles(t)})},indicatorStyle:function(t){this.setData({extIndicatorStyle:getStyles(t)})},maskStyle:function(t){this.setData({extMaskStyle:getStyles(t)})}},"value, options",function(t,e){var i=this.data.controlled,s=this.getFieldNames(),e=(0,_utils.getRealCol)(e,s);(0,_shallowEqual.default)(this.data.cols,e)||this.setData({cols:e}),i&&this.setValue(t,!0)}),"inputValue",function(t){var t=this.getValue(t),e=t.selectedIndex,t=t.selectedValue;this.setData({selectedIndex:e,selectedValue:t})}),methods:{updatedStyles:function(t){var e=this.data.itemCount,i=(e%2==0&&e--,e--,e/=2,"height: ".concat(t*this.data.itemCount,"px;")),s="line-height: ".concat(t,"px; height: ").concat(t,"px;"),l="padding: ".concat(t*e,"px 0;"),a="top: ".concat(t*e,"px; height: ").concat(t,"px;"),t="background-size: 100% ".concat(t*e,"px;");this.setData({styles:{wrap:i,item:s,content:l,indicator:a,mask:t}})},updated:function(t,e){var i=this;this.data.inputValue===t&&!e||this.setData({inputValue:t}),e&&this.select(t,this.data.itemHeight,function(t){return i.scrollTo(t,0,!1)})},setValue:function(t,e){t=this.getValue(t).value;this.updated(t,e)},getValue:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.data.inputValue,e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:this.data.cols,i=this.getFieldNames(),s=(0,_utils.getRealValue)(t,e,i)||null,l=s,t=(0,_utils.getIndexFromValue)(t,e,i);return{value:s,displayValue:(0,_utils.getLabelFromIndex)(t,e,i.label),selectedIndex:t,selectedValue:l,cols:e}},scrollTo:function(t){var e=this,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:.3,s=!(2<arguments.length&&void 0!==arguments[2])||arguments[2];this.scrollY!==t&&(this.runCallbacks&&(clearTimeout(this.runCallbacks),this.runCallbacks=null),this.scrollY=t,this.setTransform(-t,i,function(){s&&(e.runCallbacks=setTimeout(function(){e.setTransform(-t,0,e.scrollingComplete)},1e3*+i))}))},onFinish:function(){var e=this,t=(this.isMoving=!1,this.scrollY),i=this.data,s=i.cols,i=i.itemHeight,s=(s.length-1)*i,s=((t=t%i!=0?Math.round(t/i)*i:t)<0?t=0:s<t&&(t=s),this.getChildMeta(t,i)),l=this.getFieldName("disabled");s&&!s[l]?this.scrollTo(t,.3):this.select(this.data.inputValue,i,function(t){return e.scrollTo(t,0,!1)}),this.onScrollChange()},onTouchStart:function(t){1<(0,_gestures.getPointsNumber)(t)||(this.isMoving=!0,this.startY=(0,_gestures.getTouchPoints)(t).y,this.lastY=this.scrollY,this.triggerEvent("beforeChange",this.getValue()))},onTouchMove:function(t){!this.isMoving||1<(0,_gestures.getPointsNumber)(t)||(this.scrollY=this.lastY-(0,_gestures.getTouchPoints)(t).y+this.startY,this.setTransform(-this.scrollY,!1,this.onScrollChange))},onTouchEnd:function(t){1<(0,_gestures.getPointsNumber)(t)||this.onFinish()},onItemClick:function(t){var t=t.currentTarget.dataset,e=t.index;t.disabled||this.scrollTo(e*this.data.itemHeight)},setTransform:function(t,e,i){t={transform:"translate3d(0,".concat(t,"px,0)"),transition:e?"cubic-bezier(0, 0, 0.2, 1.15) ".concat(e,"s"):"none"};this.setData({contentStyle:(0,_styleToCssString.default)(t)},i)},select:function(t,e,i){var s=this.getFieldNames(),l=this.data.cols,t=(0,_utils.getIndexFromValue)(t,l,s);this.selectByIndex(t,e,i)},selectByIndex:function(t,e,i){t<0||t>=this.data.cols.length||!e||i.call(this,t*e)},computeChildIndex:function(t,e,i){t=Math.round(t/e);return Math.min(t,i-1)},getChildMeta:function(t,e){var i=this.data.cols;return i[this.computeChildIndex(t,e,i.length)]},scrollingComplete:function(){var t,e,i=this.scrollY;0<=i&&(t=this.getFieldName("value"),e=this.data.itemHeight,i=this.getChildMeta(i,e))&&(e=i[t],this.data.inputValue!==e)&&this.fireValueChange(e)},onScrollChange:function(){var t,e,i,s=this.scrollY;0<=s&&(t=this.getFieldName("value"),i=(e=this.data).cols,e=e.itemHeight,s=this.computeChildIndex(s,e,i.length),this.scrollValue!==s)&&((e=i[this.scrollValue=s])&&(i=this.getValue(e[t]),this.triggerEvent("scrollChange",i)),(0,_useNativeAPI.vibrateShort)())},fireValueChange:function(t){this.data.controlled||this.updated(t),this.triggerEvent("valueChange",this.getValue(t)),(0,_useNativeAPI.vibrateShort)()}},created:function(){this.scrollValue=void 0,this.scrollY=-1,this.lastY=0,this.startY=0,this.isMoving=!1},attached:function(){var t=this.data,e=t.defaultValue,i=t.value,s=t.controlled,l=t.options,t=t.itemHeight,s=s?i:e,i=this.getFieldNames(),e=(0,_utils.getRealCol)(l,i);this.updatedStyles(t),this.setData({cols:e}),this.setValue(s,!0)}});
|