@jannie-shao/components-antd4
Version:
177 lines (176 loc) • 7.34 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _utils = require("../utils");
var _searchBar = _interopRequireDefault(require("../search-bar"));
var _searchRet = _interopRequireDefault(require("../search-ret"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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; }
var defaultStore = {
filter: {},
page: {
current: 1,
pageSize: 20
},
total: 0,
list: []
};
var List = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
var className = _ref.className,
model = _ref.model,
defaultFilter = _ref.defaultFilter,
columns = _ref.columns,
useSearchBar = _ref.useSearchBar,
searchBarProps = _ref.searchBarProps,
searchRetProps = _ref.searchRetProps,
onFilterChange = _ref.onFilterChange,
onSearch = _ref.onSearch,
autoSearch = _ref.autoSearch,
resetAutoSearch = _ref.resetAutoSearch;
var _searchRetProps$usePa = searchRetProps.usePagination,
usePagination = _searchRetProps$usePa === void 0 ? true : _searchRetProps$usePa;
var compSearchBar = (0, _react.useRef)();
var _useState = (0, _react.useState)(false),
loading = _useState[0],
setLoading = _useState[1];
var _useState2 = (0, _react.useState)(defaultStore),
store = _useState2[0],
setStore = _useState2[1];
var doSearch = function doSearch(searchFilter) {
setLoading(true);
(0, _utils.callFun)(function () {
return onSearch(searchFilter);
}, function (res) {
setLoading(false);
var _ref2 = res || {},
_ref2$total = _ref2.total,
total = _ref2$total === void 0 ? 0 : _ref2$total,
_ref2$list = _ref2.list,
list = _ref2$list === void 0 ? [] : _ref2$list;
setStore((0, _extends2["default"])({}, store, {
filter: (0, _extends2["default"])({}, searchFilter.filter),
page: (0, _extends2["default"])({}, searchFilter.page),
total: total || list.length,
list: list
}));
});
};
var handleSearch = function handleSearch(f, pageNow) {
var _store$page;
if (f === void 0) {
f = {};
}
if (pageNow === void 0) {
pageNow = 1;
}
var searchFilter = {
filter: (0, _extends2["default"])({}, f),
page: {
current: pageNow,
pageSize: (store === null || store === void 0 ? void 0 : (_store$page = store.page) === null || _store$page === void 0 ? void 0 : _store$page.pageSize) || defaultStore.page.pageSize
}
};
doSearch(searchFilter);
};
var handlePageChange = function handlePageChange(cp) {
var _store$page2;
var searchFilter = {
filter: (0, _extends2["default"])({}, store.filter || {}),
page: {
current: ((_store$page2 = store.page) === null || _store$page2 === void 0 ? void 0 : _store$page2.pageSize) === cp.pageSize ? cp.current : 1,
pageSize: cp.pageSize
}
};
doSearch(searchFilter);
};
(0, _react.useImperativeHandle)(ref, function () {
return {
setFilter: function setFilter(f) {
return compSearchBar.current && compSearchBar.current.setFieldsValue(f);
},
getFilter: function getFilter(f) {
return compSearchBar.current && compSearchBar.current.getFieldsValue(f);
},
getStore: function getStore() {
return store;
},
autoSearch: function autoSearch(f) {
return handleSearch((0, _extends2["default"])({}, defaultFilter, f));
},
handleSearch: function handleSearch() {
return compSearchBar.current && compSearchBar.current.handleSubmit();
},
reload: function reload() {
return handleSearch(store === null || store === void 0 ? void 0 : store.filter, store === null || store === void 0 ? void 0 : store.page.current);
},
reset: function reset() {
return compSearchBar.current && compSearchBar.current.handleReset();
},
resetSubmit: function resetSubmit() {
return compSearchBar.current && compSearchBar.current.handleResetSubmit();
}
};
});
return /*#__PURE__*/_react["default"].createElement("div", {
className: className
}, useSearchBar && /*#__PURE__*/_react["default"].createElement(_searchBar["default"], (0, _extends2["default"])({}, searchBarProps, {
ref: compSearchBar,
isLoading: searchBarProps.useLoading ? loading : false,
model: model,
defaultFilter: defaultFilter,
onFilterChange: onFilterChange,
onSearch: handleSearch,
autoSearch: autoSearch,
resetAutoSearch: resetAutoSearch
})), /*#__PURE__*/_react["default"].createElement(_searchRet["default"], (0, _extends2["default"])({}, searchRetProps, {
isLoading: searchRetProps.useLoading ? loading : false,
dataList: store.list,
columns: columns,
pagination: usePagination ? (0, _extends2["default"])({}, store.page, {
total: store.total
}) : false,
onPageChange: handlePageChange
})));
});
List.propTypes = {
className: _propTypes["default"].string,
model: _propTypes["default"].array,
columns: _propTypes["default"].array,
store: _propTypes["default"].object,
defaultFilter: _propTypes["default"].object,
// searchBar & searchRet
useSearchBar: _propTypes["default"].bool,
searchBarProps: _propTypes["default"].object,
searchRetProps: _propTypes["default"].object,
// functions & flag
onSearch: _propTypes["default"].func,
autoSearch: _propTypes["default"].bool,
resetAutoSearch: _propTypes["default"].bool
};
List.defaultProps = {
className: '',
model: [],
columns: [],
store: {},
defaultFilter: {},
// searchBar & searchRet
useSearchBar: true,
searchBarProps: {},
searchRetProps: {},
// functions & flag
onSearch: function onSearch() {},
autoSearch: true,
resetAutoSearch: false
};
List.Result = function (props) {
if (props === void 0) {
props = {};
}
return /*#__PURE__*/_react["default"].createElement(_searchRet["default"], props);
};
var _default = List;
exports["default"] = _default;