@ray-js/components
Version:
Ray basic components
64 lines • 1.77 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import * as React from 'react';
import { useTouch } from '@ray-js/framework-shared';
import { useEventListener } from 'ahooks';
import handleProps from '../utils/handleProps';
let countArr = 1;
const Picker = props => {
const {
onTouchStart,
onTouchMove,
onTouchEnd,
onTouchCancel,
onClick,
children
} = props;
const currentNode = React.useRef(null);
useEventListener('change', e => {
var _props$onChange;
(_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, _objectSpread(_objectSpread({}, e), {}, {
type: 'change',
value: e.detail.value,
origin: e
}));
}, {
target: currentNode
});
useEventListener('cancel', e => {
var _props$onCancel;
(_props$onCancel = props.onCancel) === null || _props$onCancel === void 0 || _props$onCancel.call(props, _objectSpread(_objectSpread({}, e), {}, {
type: 'cancel',
origin: e
}));
}, {
target: currentNode
});
const [, handlers] = useTouch({
onTouchStart,
onTouchMove,
onTouchEnd,
onTouchCancel,
onClick
});
const multiarr = arr => {
for (let i = 0; i < arr.length; i++) {
if (arr[i] instanceof Array) {
countArr++;
arr = arr[i];
multiarr(arr);
}
}
return countArr;
};
return (
/*#__PURE__*/
// @ts-ignore
React.createElement("v-picker", _extends({}, handleProps(props), handlers, {
ref: currentNode,
mode: multiarr(props.range) > 1 ? 'multiSelector' : 'selector'
}), children)
);
};
Picker.displayName = 'Picker';
export default Picker;