UNPKG

zp-bee

Version:

zp-bee,是一款基于 Dumi,由 React + TypeScript 开发的组件库 🎉。

168 lines (145 loc) 4.65 kB
import _regeneratorRuntime from "@babel/runtime/regenerator"; import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __rest = this && this.__rest || function (s, e) { var t = {}; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; } if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; import React, { useEffect, memo } from 'react'; import { BeeSelect } from 'zp-bee'; import { atom, setCoiledState, selector, useCoiledValue } from '../../_utils/recoil'; var Option = BeeSelect.Option; var selectGen = function selectGen(params) { var _this = this; var initialState = { dataSource: params.list || [], value: '' }; var createSlice = atom({ key: 'selectGen', default: initialState }); var dispatch = setCoiledState(createSlice); var dataSourceSelector = selector({ key: 'selectSelector', get: function get(_ref) { var _get = _ref.get; var _get2 = _get(createSlice), dataSource = _get2.dataSource; return dataSource; } }); var valueSelector = selector({ key: 'selectSelector', get: function get(_ref2) { var _get3 = _ref2.get; var _get4 = _get3(createSlice), value = _get4.value; return value; } }); var handleChange = function handleChange(value) { dispatch({ value: value }); }; var _params$selectProps = params.selectProps, label = _params$selectProps.label, id = _params$selectProps.id, name = _params$selectProps.name, paramName = _params$selectProps.paramName; params.inject.set(Symbol('select'), { getValue: function getValue() { return _defineProperty({}, paramName, createSlice.snapshot().value); }, resetValue: function resetValue() { return dispatch({ value: createSlice.snapshot().defaultValue }); } }); return /*#__PURE__*/memo(function (props) { var fetchDataSource = props.fetchDataSource, propsValue = props.value, defaultValue = props.defaultValue, others = __rest(props, ["fetchDataSource", "value", "defaultValue"]); var dataSource = useCoiledValue(dataSourceSelector); var value = useCoiledValue(valueSelector); useEffect(function () { if (propsValue || defaultValue) { dispatch({ value: propsValue || defaultValue, defaultValue: defaultValue || '' }); } if (fetchDataSource) { var fetchData = function fetchData() { return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { var data; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return fetchDataSource(); case 2: data = _context.sent; dispatch({ dataSource: data }); case 4: case "end": return _context.stop(); } } }, _callee); })); }; fetchData(); } }, []); return /*#__PURE__*/React.createElement(BeeSelect, Object.assign({ label: label, value: value }, others, { onChange: handleChange }), dataSource.map(function (item) { return /*#__PURE__*/React.createElement(Option, { value: item[id] }, item[name]); })); }); }; export default selectGen;