@e-group/material-module
Version:
EGroup Team react component modules.
102 lines (83 loc) • 3.51 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useDataTable;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = require("react");
var _cache = _interopRequireDefault(require("./cache"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function useDataTable(key, defaultPayloadProp, options) {
const _ref = options || {},
_ref$fromKey = _ref.fromKey,
fromKey = _ref$fromKey === void 0 ? 'from' : _ref$fromKey,
_ref$sizeKey = _ref.sizeKey,
sizeKey = _ref$sizeKey === void 0 ? 'size' : _ref$sizeKey,
_ref$queryKey = _ref.queryKey,
queryKey = _ref$queryKey === void 0 ? 'query' : _ref$queryKey;
const defaultPayload = _cache.default.get(key) || _objectSpread({
[fromKey]: 0,
[sizeKey]: 10
}, defaultPayloadProp);
const _useState = (0, _react.useState)(defaultPayload),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
payload = _useState2[0],
setPayload = _useState2[1];
(0, _react.useEffect)(() => {
_cache.default.set(key, payload);
}, [key, payload]);
const handleSearchChange = e => {
setPayload(value => _objectSpread(_objectSpread({}, value), {}, {
[fromKey]: 0,
[queryKey]: e.target.value
}));
};
const handleChangePage = (_, {
page,
rowsPerPage
}) => {
setPayload(value => _objectSpread(_objectSpread({}, value), {}, {
[fromKey]: page * rowsPerPage
}));
};
const handleRowsPerPageChange = (_, {
rowsPerPage
}) => {
setPayload(value => _objectSpread(_objectSpread({}, value), {}, {
[fromKey]: 0,
[sizeKey]: rowsPerPage
}));
};
const handleColumnSortData = (sortData, key, index) => () => {
sortData({
activeOrderIndex: index,
asc: data => data.sort((a, b) => {
if (a[key] === b[key]) {
return 0;
}
return b[key] > a[key] ? 1 : -1;
}),
desc: data => data.sort((a, b) => {
if (a[key] === b[key]) {
return 0;
}
return a[key] > b[key] ? 1 : -1;
})
});
};
const page = Math.ceil(Number(payload[fromKey]) / Number(payload[sizeKey]));
const rowsPerPage = parseInt(payload[sizeKey], 10);
return {
handleSearchChange,
handleChangePage,
handleRowsPerPageChange,
handleColumnSortData,
payload,
setPayload,
page,
rowsPerPage
};
}
;