123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import { useEffect } from 'functional-mini/compat';
- import { useEvent, useState } from 'functional-mini/component';
- import { mountComponent } from '../_util/component';
- import { useComponentEvent } from '../_util/hooks/useComponentEvent';
- import { NumberKeyboardFunctionalProps } from './props';
- import { useEvent as useStableCallback } from '../_util/hooks/useEvent';
- var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
- var NumberKeyboard = function (props) {
- var numArr = [
- [1, 2, 3],
- [4, 5, 6],
- [7, 8, 9],
- ];
- var _a = useState([]), randomArr = _a[0], setRandomArr = _a[1];
- var _b = useComponentEvent(props), triggerEventOnly = _b.triggerEventOnly, triggerEvent = _b.triggerEvent;
- var setRandom = useStableCallback(function () {
- if (props.random) {
- var newArr = arr.sort(function () {
- return Math.random() - 0.5;
- });
- setRandomArr([
- newArr.slice(0, 3),
- newArr.slice(3, 6),
- newArr.slice(6, 9),
- ]);
- }
- });
- var vibrate = useStableCallback(function () {
- if (props.vibrate && typeof my !== 'undefined') {
- my.canIUse('vibrateShort') && my.vibrateShort();
- }
- });
- useEvent('handleHide', function () {
- triggerEventOnly('close');
- });
- useEvent('tapButton', function (e) {
- var value = props.value, confirmDisabled = props.confirmDisabled;
- vibrate();
- var _key = e.currentTarget.dataset.key;
- var _val = "".concat(value);
- // 回退
- if (_key === 'del') {
- triggerEvent('change', "".concat(_val.substr(0, _val.length - 1)));
- return;
- }
- if (_key !== 'del' && _key !== 'enter') {
- triggerEvent('change', "".concat(_val).concat(_key));
- }
- if (_key === 'enter' && !confirmDisabled) {
- triggerEventOnly('close');
- triggerEventOnly('confirm');
- triggerEventOnly('close'); // 保持和之前一样的逻辑
- }
- });
- useEvent('catchAppearModal', function () {
- setRandom();
- });
- useEffect(function () {
- setRandom();
- }, []);
- return {
- randomArr: randomArr,
- numArr: numArr,
- };
- };
- mountComponent(NumberKeyboard, NumberKeyboardFunctionalProps);
|