UNPKG

@e-group/material-module

Version:
102 lines (83 loc) 3.51 kB
"use strict"; 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 }; }