UNPKG

@alifd/meet-react

Version:

Fusion Mobile React UI System Component

95 lines (94 loc) 4.84 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _babelRuntimeJsxStyleTransform = require("@alifd/babel-runtime-jsx-style-transform"); var _tslib = require("tslib"); var _classnames = _interopRequireDefault(require("classnames")); var _react = _interopRequireWildcard(require("react")); var _meetReactComponentOne = require("@alifd/meet-react-component-one"); var _locale = require("../locale"); var _zhCn = _interopRequireDefault(require("../locale/lang/zh-cn")); var _hooks = require("../utils/hooks"); var _view = _interopRequireDefault(require("../view")); var _column = _interopRequireDefault(require("./column")); var _utils = require("./utils"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var formatValues = function (dataArray, value) { if (value === void 0) { value = []; } return dataArray.map(function (columnData, index) { if (columnData.length === 0) { console.error('[Picker] column\'s length cannot be 0, please check "data"', dataArray); return null; } return columnData.find(function (it) { return it.value === value[index]; }) ? value[index] : columnData[0].value; }); }; var Picker = function (props, ref) { var _props$prefix = props.prefix, prefix = _props$prefix === void 0 ? 'mt-' : _props$prefix, _props$data = props.data, data = _props$data === void 0 ? [] : _props$data, cascade = props.cascade, _props$onChange = props.onChange, onChange = _props$onChange === void 0 ? function () {} : _props$onChange, style = props.style, className = props.className, valueProp = props.value, defaultValue = props.defaultValue, others = (0, _tslib.__rest)(props, ["prefix", "data", "cascade", "onChange", "style", "className", "value", "defaultValue"]); var locale = (0, _locale.useLocale)('Picker', others, _zhCn.default.Picker); var _useValue = (0, _hooks.useValue)(props, [], { fitValue: function fitValue(x) { if (!Array.isArray(x)) { return [x]; } return x; }, compare: function compare(a, b) { if (b.length !== a.length) { return false; } return a.join(',') === b.join(','); } }), value = _useValue[0], setValue = _useValue[1], isControlled = _useValue[2]; var handleChange = function (v, index) { var newValue = [].concat(value); newValue[index] = v; var formattedNewValue = formatValues((0, _utils.getDataArray)(data, newValue, cascade), newValue); onChange(formattedNewValue, index); if (!isControlled) { setValue(formattedNewValue); } }; var dataArray = (0, _utils.getDataArray)(data, value, cascade); var values = formatValues(dataArray, value); return /*#__PURE__*/(0, _react.createElement)(_view.default, _extends({}, others, { className: (0, _classnames.default)(prefix + "picker", prefix + "picker--web", className), style: (0, _babelRuntimeJsxStyleTransform.rpx2vw4style)(style), ref: ref }), dataArray.map(function (d, index) { var columnValue = values[index] === undefined ? d[0].value : values[index]; return /*#__PURE__*/(0, _react.createElement)(_column.default, { prefix: prefix, onChange: function (v) { return handleChange(v, index); }, key: index, data: d, value: columnValue }); }), dataArray && dataArray.length === 0 ? /*#__PURE__*/(0, _react.createElement)(_meetReactComponentOne.Text, { className: prefix + "picker-text--empty" }, locale.empty) : null); }; var _default = exports.default = /*#__PURE__*/(0, _react.forwardRef)(Picker);