UNPKG

antd-mobile

Version:
86 lines (85 loc) 4.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PickerView = void 0; var _react = _interopRequireWildcard(require("react")); var _withDefaultProps = require("../../utils/with-default-props"); var _wheel = require("./wheel"); var _columnsExtend = require("./columns-extend"); var _nativeProps = require("../../utils/native-props"); var _ahooks = require("ahooks"); var _pickerUtils = require("../picker/picker-utils"); var _spinLoading = _interopRequireDefault(require("../spin-loading")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const classPrefix = `adm-picker-view`; const defaultProps = { defaultValue: [], renderLabel: _pickerUtils.defaultRenderLabel, mouseWheel: false, loadingContent: _react.default.createElement("div", { className: `${classPrefix}-loading-content` }, _react.default.createElement(_spinLoading.default, null)) }; const PickerView = (0, _react.memo)(p => { const props = (0, _withDefaultProps.mergeProps)(defaultProps, p); const [innerValue, setInnerValue] = (0, _react.useState)(props.value === undefined ? props.defaultValue : props.value); // Sync `value` to `innerValue` (0, _react.useEffect)(() => { if (props.value === undefined) return; // Uncontrolled mode if (props.value === innerValue) return; setInnerValue(props.value); }, [props.value]); (0, _react.useEffect)(() => { if (props.value === innerValue) return; const timeout = window.setTimeout(() => { if (props.value !== undefined && props.value !== innerValue) { setInnerValue(props.value); } }, 1000); return () => { window.clearTimeout(timeout); }; }, [props.value, innerValue]); const extend = (0, _columnsExtend.useColumnsExtend)(props.columns, innerValue); const columns = extend.columns; (0, _ahooks.useDebounceEffect)(() => { var _a; if (props.value === innerValue) return; (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, innerValue, extend); }, [innerValue], { wait: 0, leading: false, trailing: true }); const handleSelect = (0, _react.useCallback)((val, index) => { setInnerValue(prev => { const next = [...prev]; next[index] = val; return next; }); }, []); return (0, _nativeProps.withNativeProps)(props, _react.default.createElement("div", { className: `${classPrefix}` }, props.loading ? props.loadingContent : _react.default.createElement(_react.default.Fragment, null, columns.map((column, index) => _react.default.createElement(_wheel.Wheel, { key: index, index: index, column: column, value: innerValue[index], onSelect: handleSelect, renderLabel: props.renderLabel, mouseWheel: props.mouseWheel })), _react.default.createElement("div", { className: `${classPrefix}-mask` }, _react.default.createElement("div", { className: `${classPrefix}-mask-top` }), _react.default.createElement("div", { className: `${classPrefix}-mask-middle` }), _react.default.createElement("div", { className: `${classPrefix}-mask-bottom` }))))); }); exports.PickerView = PickerView; PickerView.displayName = 'PickerView';