devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
94 lines (93 loc) • 3.72 kB
JavaScript
/**
* DevExtreme (cjs/__internal/pagination/page_size/selector.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PageSizeSelector = void 0;
var _inferno = require("inferno");
var _inferno2 = require("@devextreme/runtime/inferno");
var _consts = require("../common/consts");
var _pagination_props = require("../common/pagination_props");
var _compatibility_utils = require("../utils/compatibility_utils");
var _large = require("./large");
var _small = require("./small");
const PageSizeSelectorDefaultProps = {
isLargeDisplayMode: true,
pageSize: _pagination_props.PaginationDefaultProps.pageSize,
pageSizeChangedInternal: _pagination_props.PaginationDefaultProps.pageSizeChangedInternal,
allowedPageSizes: _pagination_props.PaginationDefaultProps.allowedPageSizes
};
class PageSizeSelector extends _inferno2.InfernoComponent {
constructor(props) {
super(props);
this.state = {};
this.refs = null;
this.rootElementRef = (0, _inferno.createRef)();
this.htmlRef = (0, _inferno.createRef)();
this.__getterCache = {
normalizedPageSizes: void 0
};
this.setRootElementRef = this.setRootElementRef.bind(this)
}
createEffects() {
return [new _inferno2.InfernoEffect(this.setRootElementRef, [])]
}
setRootElementRef() {
const {
rootElementRef: rootElementRef
} = this.props;
if (rootElementRef) {
rootElementRef.current = this.htmlRef.current
}
}
getAllText() {
return (0, _compatibility_utils.getLocalizationMessage)(this.context, "dxPagination-pageSizesAllText")
}
getNormalizedPageSizes() {
if (void 0 !== this.__getterCache.normalizedPageSizes) {
return this.__getterCache.normalizedPageSizes
}
const result = this.props.allowedPageSizes.map((p => "all" === p || 0 === p ? {
text: this.getAllText(),
value: 0
} : {
text: String(p),
value: p
}));
this.__getterCache.normalizedPageSizes = result;
return result
}
componentWillUpdate(nextProps) {
super.componentWillUpdate();
if (this.props.allowedPageSizes !== nextProps.allowedPageSizes) {
this.__getterCache.normalizedPageSizes = void 0
}
}
render() {
const normalizedPageSizes = this.getNormalizedPageSizes();
const {
pageSize: pageSize,
pageSizeChangedInternal: pageSizeChangedInternal,
isLargeDisplayMode: isLargeDisplayMode
} = this.props;
return (0, _inferno.createVNode)(1, "div", _consts.PAGINATION_PAGE_SIZES_CLASS, [isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _large.PageSizeLarge, {
allowedPageSizes: this.getNormalizedPageSizes(),
pageSize: pageSize,
pageSizeChangedInternal: pageSizeChangedInternal
}), !isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _small.PageSizeSmall, {
parentRef: this.htmlRef,
allowedPageSizes: normalizedPageSizes,
pageSize: pageSize,
pageSizeChangedInternal: pageSizeChangedInternal
})], 0, null, null, this.htmlRef)
}
}
exports.PageSizeSelector = PageSizeSelector;
PageSizeSelector.defaultProps = PageSizeSelectorDefaultProps;