1 | "use strict";
|
2 | 'use client';
|
3 |
|
4 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
5 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
6 | Object.defineProperty(exports, "__esModule", {
|
7 | value: true
|
8 | });
|
9 | exports.default = void 0;
|
10 | var React = _interopRequireWildcard(require("react"));
|
11 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
12 | var _RtlProvider = require("@mui/system/RtlProvider");
|
13 | var _KeyboardArrowLeft = _interopRequireDefault(require("../internal/svg-icons/KeyboardArrowLeft"));
|
14 | var _KeyboardArrowRight = _interopRequireDefault(require("../internal/svg-icons/KeyboardArrowRight"));
|
15 | var _IconButton = _interopRequireDefault(require("../IconButton"));
|
16 | var _LastPage = _interopRequireDefault(require("../internal/svg-icons/LastPage"));
|
17 | var _FirstPage = _interopRequireDefault(require("../internal/svg-icons/FirstPage"));
|
18 | var _jsxRuntime = require("react/jsx-runtime");
|
19 |
|
20 |
|
21 | const TablePaginationActions = React.forwardRef(function TablePaginationActions(props, ref) {
|
22 | const {
|
23 | backIconButtonProps,
|
24 | count,
|
25 | disabled = false,
|
26 | getItemAriaLabel,
|
27 | nextIconButtonProps,
|
28 | onPageChange,
|
29 | page,
|
30 | rowsPerPage,
|
31 | showFirstButton,
|
32 | showLastButton,
|
33 | slots = {},
|
34 | slotProps = {},
|
35 | ...other
|
36 | } = props;
|
37 | const isRtl = (0, _RtlProvider.useRtl)();
|
38 | const handleFirstPageButtonClick = event => {
|
39 | onPageChange(event, 0);
|
40 | };
|
41 | const handleBackButtonClick = event => {
|
42 | onPageChange(event, page - 1);
|
43 | };
|
44 | const handleNextButtonClick = event => {
|
45 | onPageChange(event, page + 1);
|
46 | };
|
47 | const handleLastPageButtonClick = event => {
|
48 | onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
|
49 | };
|
50 | const FirstButton = slots.firstButton ?? _IconButton.default;
|
51 | const LastButton = slots.lastButton ?? _IconButton.default;
|
52 | const NextButton = slots.nextButton ?? _IconButton.default;
|
53 | const PreviousButton = slots.previousButton ?? _IconButton.default;
|
54 | const FirstButtonIcon = slots.firstButtonIcon ?? _FirstPage.default;
|
55 | const LastButtonIcon = slots.lastButtonIcon ?? _LastPage.default;
|
56 | const NextButtonIcon = slots.nextButtonIcon ?? _KeyboardArrowRight.default;
|
57 | const PreviousButtonIcon = slots.previousButtonIcon ?? _KeyboardArrowLeft.default;
|
58 | const FirstButtonSlot = isRtl ? LastButton : FirstButton;
|
59 | const PreviousButtonSlot = isRtl ? NextButton : PreviousButton;
|
60 | const NextButtonSlot = isRtl ? PreviousButton : NextButton;
|
61 | const LastButtonSlot = isRtl ? FirstButton : LastButton;
|
62 | const firstButtonSlotProps = isRtl ? slotProps.lastButton : slotProps.firstButton;
|
63 | const previousButtonSlotProps = isRtl ? slotProps.nextButton : slotProps.previousButton;
|
64 | const nextButtonSlotProps = isRtl ? slotProps.previousButton : slotProps.nextButton;
|
65 | const lastButtonSlotProps = isRtl ? slotProps.firstButton : slotProps.lastButton;
|
66 | return (0, _jsxRuntime.jsxs)("div", {
|
67 | ref: ref,
|
68 | ...other,
|
69 | children: [showFirstButton && (0, _jsxRuntime.jsx)(FirstButtonSlot, {
|
70 | onClick: handleFirstPageButtonClick,
|
71 | disabled: disabled || page === 0,
|
72 | "aria-label": getItemAriaLabel('first', page),
|
73 | title: getItemAriaLabel('first', page),
|
74 | ...firstButtonSlotProps,
|
75 | children: isRtl ? (0, _jsxRuntime.jsx)(LastButtonIcon, {
|
76 | ...slotProps.lastButtonIcon
|
77 | }) : (0, _jsxRuntime.jsx)(FirstButtonIcon, {
|
78 | ...slotProps.firstButtonIcon
|
79 | })
|
80 | }), (0, _jsxRuntime.jsx)(PreviousButtonSlot, {
|
81 | onClick: handleBackButtonClick,
|
82 | disabled: disabled || page === 0,
|
83 | color: "inherit",
|
84 | "aria-label": getItemAriaLabel('previous', page),
|
85 | title: getItemAriaLabel('previous', page),
|
86 | ...(previousButtonSlotProps ?? backIconButtonProps),
|
87 | children: isRtl ? (0, _jsxRuntime.jsx)(NextButtonIcon, {
|
88 | ...slotProps.nextButtonIcon
|
89 | }) : (0, _jsxRuntime.jsx)(PreviousButtonIcon, {
|
90 | ...slotProps.previousButtonIcon
|
91 | })
|
92 | }), (0, _jsxRuntime.jsx)(NextButtonSlot, {
|
93 | onClick: handleNextButtonClick,
|
94 | disabled: disabled || (count !== -1 ? page >= Math.ceil(count / rowsPerPage) - 1 : false),
|
95 | color: "inherit",
|
96 | "aria-label": getItemAriaLabel('next', page),
|
97 | title: getItemAriaLabel('next', page),
|
98 | ...(nextButtonSlotProps ?? nextIconButtonProps),
|
99 | children: isRtl ? (0, _jsxRuntime.jsx)(PreviousButtonIcon, {
|
100 | ...slotProps.previousButtonIcon
|
101 | }) : (0, _jsxRuntime.jsx)(NextButtonIcon, {
|
102 | ...slotProps.nextButtonIcon
|
103 | })
|
104 | }), showLastButton && (0, _jsxRuntime.jsx)(LastButtonSlot, {
|
105 | onClick: handleLastPageButtonClick,
|
106 | disabled: disabled || page >= Math.ceil(count / rowsPerPage) - 1,
|
107 | "aria-label": getItemAriaLabel('last', page),
|
108 | title: getItemAriaLabel('last', page),
|
109 | ...lastButtonSlotProps,
|
110 | children: isRtl ? (0, _jsxRuntime.jsx)(FirstButtonIcon, {
|
111 | ...slotProps.firstButtonIcon
|
112 | }) : (0, _jsxRuntime.jsx)(LastButtonIcon, {
|
113 | ...slotProps.lastButtonIcon
|
114 | })
|
115 | })]
|
116 | });
|
117 | });
|
118 | process.env.NODE_ENV !== "production" ? TablePaginationActions.propTypes = {
|
119 | |
120 |
|
121 |
|
122 | backIconButtonProps: _propTypes.default.object,
|
123 | |
124 |
|
125 |
|
126 | count: _propTypes.default.number.isRequired,
|
127 | |
128 |
|
129 |
|
130 |
|
131 | disabled: _propTypes.default.bool,
|
132 | |
133 |
|
134 |
|
135 |
|
136 |
|
137 |
|
138 |
|
139 |
|
140 |
|
141 | getItemAriaLabel: _propTypes.default.func.isRequired,
|
142 | |
143 |
|
144 |
|
145 | nextIconButtonProps: _propTypes.default.object,
|
146 | |
147 |
|
148 |
|
149 |
|
150 |
|
151 |
|
152 | onPageChange: _propTypes.default.func.isRequired,
|
153 | |
154 |
|
155 |
|
156 | page: _propTypes.default.number.isRequired,
|
157 | |
158 |
|
159 |
|
160 | rowsPerPage: _propTypes.default.number.isRequired,
|
161 | |
162 |
|
163 |
|
164 | showFirstButton: _propTypes.default.bool.isRequired,
|
165 | |
166 |
|
167 |
|
168 | showLastButton: _propTypes.default.bool.isRequired,
|
169 | |
170 |
|
171 |
|
172 |
|
173 | slotProps: _propTypes.default.shape({
|
174 | firstButton: _propTypes.default.object,
|
175 | firstButtonIcon: _propTypes.default.object,
|
176 | lastButton: _propTypes.default.object,
|
177 | lastButtonIcon: _propTypes.default.object,
|
178 | nextButton: _propTypes.default.object,
|
179 | nextButtonIcon: _propTypes.default.object,
|
180 | previousButton: _propTypes.default.object,
|
181 | previousButtonIcon: _propTypes.default.object
|
182 | }),
|
183 | |
184 |
|
185 |
|
186 |
|
187 |
|
188 | slots: _propTypes.default.shape({
|
189 | firstButton: _propTypes.default.elementType,
|
190 | firstButtonIcon: _propTypes.default.elementType,
|
191 | lastButton: _propTypes.default.elementType,
|
192 | lastButtonIcon: _propTypes.default.elementType,
|
193 | nextButton: _propTypes.default.elementType,
|
194 | nextButtonIcon: _propTypes.default.elementType,
|
195 | previousButton: _propTypes.default.elementType,
|
196 | previousButtonIcon: _propTypes.default.elementType
|
197 | })
|
198 | } : void 0;
|
199 | var _default = exports.default = TablePaginationActions; |
\ | No newline at end of file |