@alicloud/console-base-rc-pagination
Version:
44 lines (43 loc) • 1.39 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useHandlePage;
var _react = require("react");
var _useModelProps2 = _interopRequireDefault(require("./_use-model-props"));
var _usePage = _interopRequireDefault(require("./use-page"));
var _usePages = _interopRequireDefault(require("./use-pages"));
var _useDispatchSetPage = _interopRequireDefault(require("./use-dispatch-set-page"));
function getPageNew(value, page, pages) {
var pageNew;
if (value === '+1') {
pageNew = page + 1;
} else if (value === '-1') {
pageNew = page - 1;
} else {
pageNew = value;
}
if (pageNew < 1) {
return 1;
}
if (pageNew > pages) {
return pages;
}
return pageNew;
}
function useHandlePage() {
var _useModelProps = (0, _useModelProps2.default)(),
onChange = _useModelProps.onChange;
var page = (0, _usePage.default)();
var pages = (0, _usePages.default)();
var dispatchSetPage = (0, _useDispatchSetPage.default)();
return (0, _react.useCallback)(function (value) {
var pageNew = getPageNew(value, page, pages);
if (pageNew === page) {
return;
}
dispatchSetPage(pageNew);
onChange === null || onChange === void 0 ? void 0 : onChange(pageNew);
}, [page, pages, onChange, dispatchSetPage]);
}