zp-bee
Version:
zp-bee,是一款基于 Dumi,由 React + TypeScript 开发的组件库 🎉。
168 lines (145 loc) • 4.65 kB
JavaScript
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;