@dhis2-ui/pagination 9.11.0 → 9.11.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/__fixtures__/index.js +8 -15
- package/build/cjs/__tests__/get-item-range.test.js +2 -6
- package/build/cjs/__tests__/page-controls.test.js +2 -7
- package/build/cjs/__tests__/page-select.test.js +3 -11
- package/build/cjs/__tests__/page-size-select.test.js +3 -11
- package/build/cjs/__tests__/page-summary.test.js +2 -8
- package/build/cjs/__tests__/pagination.test.js +8 -15
- package/build/cjs/get-default-page-summary-text.js +1 -9
- package/build/cjs/get-item-range.js +0 -6
- package/build/cjs/index.js +0 -1
- package/build/cjs/locales/index.js +3 -73
- package/build/cjs/page-controls.js +6 -17
- package/build/cjs/page-select.js +5 -17
- package/build/cjs/page-size-select.js +5 -15
- package/build/cjs/page-summary.js +3 -13
- package/build/cjs/pagination.js +2 -19
- package/build/cjs/pagination.prod.stories.js +133 -0
- package/build/es/__tests__/page-controls.test.js +1 -2
- package/build/es/__tests__/page-summary.test.js +1 -2
- package/build/es/__tests__/pagination.test.js +5 -4
- package/build/es/get-default-page-summary-text.js +0 -5
- package/build/es/get-item-range.js +0 -4
- package/build/es/page-controls.js +5 -9
- package/build/es/page-select.js +6 -9
- package/build/es/page-size-select.js +6 -8
- package/build/es/page-summary.js +2 -6
- package/build/es/pagination.js +1 -3
- package/build/es/{pagination.stories.js → pagination.prod.stories.js} +42 -24
- package/package.json +8 -8
- package/build/cjs/pagination.stories.js +0 -140
|
@@ -4,28 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.PageSizeSelect = void 0;
|
|
7
|
-
|
|
8
7
|
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
9
|
-
|
|
10
|
-
var _select = require("@dhis2-ui/select");
|
|
11
|
-
|
|
12
8
|
var _uiConstants = require("@dhis2/ui-constants");
|
|
13
|
-
|
|
9
|
+
var _select = require("@dhis2-ui/select");
|
|
14
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
-
|
|
16
11
|
var _react = _interopRequireDefault(require("react"));
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
13
|
// TODO: i18n translate
|
|
21
14
|
const translate = (prop, interpolationObject) => {
|
|
22
15
|
if (typeof prop === 'function') {
|
|
23
16
|
return prop(interpolationObject);
|
|
24
17
|
}
|
|
25
|
-
|
|
26
18
|
return prop;
|
|
27
19
|
};
|
|
28
|
-
|
|
29
20
|
const PageSizeSelect = _ref => {
|
|
30
21
|
let {
|
|
31
22
|
dataTest,
|
|
@@ -36,7 +27,7 @@ const PageSizeSelect = _ref => {
|
|
|
36
27
|
onChange
|
|
37
28
|
} = _ref;
|
|
38
29
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
39
|
-
"data-test":
|
|
30
|
+
"data-test": `${dataTest}-pagesize`,
|
|
40
31
|
className: _style.default.dynamic([["3539890457", [_uiConstants.spacers.dp12]]])
|
|
41
32
|
}, /*#__PURE__*/_react.default.createElement(_select.SingleSelect, {
|
|
42
33
|
dense: true,
|
|
@@ -49,7 +40,7 @@ const PageSizeSelect = _ref => {
|
|
|
49
40
|
return onChange(parseInt(selected, 10));
|
|
50
41
|
},
|
|
51
42
|
className: "select",
|
|
52
|
-
dataTest:
|
|
43
|
+
dataTest: `${dataTest}-pagesize-select`,
|
|
53
44
|
prefix: translate(pageSizeSelectText)
|
|
54
45
|
}, pageSizes.map(length => /*#__PURE__*/_react.default.createElement(_select.SingleSelectOption, {
|
|
55
46
|
key: length,
|
|
@@ -58,9 +49,8 @@ const PageSizeSelect = _ref => {
|
|
|
58
49
|
}))), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
59
50
|
id: "3539890457",
|
|
60
51
|
dynamic: [_uiConstants.spacers.dp12]
|
|
61
|
-
}, [
|
|
52
|
+
}, [`div.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;min-height:32px;margin-inline-end:${_uiConstants.spacers.dp12};-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}`]));
|
|
62
53
|
};
|
|
63
|
-
|
|
64
54
|
exports.PageSizeSelect = PageSizeSelect;
|
|
65
55
|
PageSizeSelect.propTypes = {
|
|
66
56
|
dataTest: _propTypes.default.string.isRequired,
|
|
@@ -4,27 +4,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.PageSummary = void 0;
|
|
7
|
-
|
|
8
7
|
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
9
|
-
|
|
10
8
|
var _uiConstants = require("@dhis2/ui-constants");
|
|
11
|
-
|
|
12
9
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
|
-
|
|
14
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
-
|
|
16
11
|
var _react = _interopRequireDefault(require("react"));
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
13
|
const translate = (prop, interpolationObject) => {
|
|
21
14
|
if (typeof prop === 'function') {
|
|
22
15
|
return prop(interpolationObject);
|
|
23
16
|
}
|
|
24
|
-
|
|
25
17
|
return prop;
|
|
26
18
|
};
|
|
27
|
-
|
|
28
19
|
const PageSummary = _ref => {
|
|
29
20
|
let {
|
|
30
21
|
dataTest,
|
|
@@ -44,7 +35,7 @@ const PageSummary = _ref => {
|
|
|
44
35
|
total
|
|
45
36
|
});
|
|
46
37
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
47
|
-
"data-test":
|
|
38
|
+
"data-test": `${dataTest}-summary`,
|
|
48
39
|
className: _style.default.dynamic([["3973865131", [_uiConstants.spacers.dp12, _uiConstants.colors.grey700, _uiConstants.colors.grey500]]])
|
|
49
40
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
50
41
|
className: _style.default.dynamic([["3973865131", [_uiConstants.spacers.dp12, _uiConstants.colors.grey700, _uiConstants.colors.grey500]]]) + " " + ((0, _classnames.default)({
|
|
@@ -53,9 +44,8 @@ const PageSummary = _ref => {
|
|
|
53
44
|
}, summary), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
54
45
|
id: "3973865131",
|
|
55
46
|
dynamic: [_uiConstants.spacers.dp12, _uiConstants.colors.grey700, _uiConstants.colors.grey500]
|
|
56
|
-
}, [
|
|
47
|
+
}, [`div.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;min-height:32px;margin-inline-end:${_uiConstants.spacers.dp12};}`, `span.__jsx-style-dynamic-selector{color:${_uiConstants.colors.grey700};font-size:14px;}`, `span.inactive.__jsx-style-dynamic-selector{color:${_uiConstants.colors.grey500};}`]));
|
|
57
48
|
};
|
|
58
|
-
|
|
59
49
|
exports.PageSummary = PageSummary;
|
|
60
50
|
PageSummary.propTypes = {
|
|
61
51
|
dataTest: _propTypes.default.string.isRequired,
|
package/build/cjs/pagination.js
CHANGED
|
@@ -4,37 +4,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Pagination = void 0;
|
|
7
|
-
|
|
8
7
|
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
9
|
-
|
|
10
8
|
var _propTypes = require("@dhis2/prop-types");
|
|
11
|
-
|
|
12
9
|
var _uiConstants = require("@dhis2/ui-constants");
|
|
13
|
-
|
|
14
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
|
-
|
|
16
11
|
var _propTypes2 = _interopRequireDefault(require("prop-types"));
|
|
17
|
-
|
|
18
12
|
var _react = _interopRequireDefault(require("react"));
|
|
19
|
-
|
|
20
13
|
var _getDefaultPageSummaryText = require("./get-default-page-summary-text.js");
|
|
21
|
-
|
|
22
14
|
var _getItemRange = require("./get-item-range.js");
|
|
23
|
-
|
|
24
15
|
var _index = _interopRequireDefault(require("./locales/index.js"));
|
|
25
|
-
|
|
26
16
|
var _pageControls = require("./page-controls.js");
|
|
27
|
-
|
|
28
17
|
var _pageSelect = require("./page-select.js");
|
|
29
|
-
|
|
30
18
|
var _pageSizeSelect = require("./page-size-select.js");
|
|
31
|
-
|
|
32
19
|
var _pageSummary = require("./page-summary.js");
|
|
33
|
-
|
|
34
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
-
|
|
20
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
36
21
|
const MAX_PAGE_COUNT = 2000;
|
|
37
|
-
|
|
38
22
|
const Pagination = _ref => {
|
|
39
23
|
let {
|
|
40
24
|
className,
|
|
@@ -110,9 +94,8 @@ const Pagination = _ref => {
|
|
|
110
94
|
})), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
111
95
|
id: "3796520840",
|
|
112
96
|
dynamic: [_uiConstants.spacers.dp4]
|
|
113
|
-
}, [
|
|
97
|
+
}, [`.container.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:${_uiConstants.spacers.dp4};}`, ".spacer.__jsx-style-dynamic-selector{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}", ".page-navigation.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;min-height:32px;}"]));
|
|
114
98
|
};
|
|
115
|
-
|
|
116
99
|
exports.Pagination = Pagination;
|
|
117
100
|
Pagination.defaultProps = {
|
|
118
101
|
dataTest: 'dhis2-uiwidgets-pagination',
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.WithoutPageSummary = exports.WithoutPageSizeSelect = exports.WithoutGoToPageSelect = exports.WithoutAnySelect = exports.WithCustomPageSummary = exports.RTL = exports.PagerAtLastPage = exports.PagerAtFirstPage = exports.NoTotalAtLastPageWithoutPageLength = exports.NoTotalAtLastPage = exports.NoTotal = exports.NarrowWidth = exports.MediumWidth = exports.Disabled = exports.Default = void 0;
|
|
7
|
+
var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var pagers = _interopRequireWildcard(require("./__fixtures__/index.js"));
|
|
10
|
+
var _pagination = require("./pagination.js");
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
const subtitle = 'Allows navigation through data displayed over several pages';
|
|
15
|
+
const description = `
|
|
16
|
+
Pagination allows data to be split in pages. Paging large amounts of data avoids overwhelming users and should always be used wherever a lot of data is displayed. Pagination controls allow a user to browse through a set of data or navigate to a specific page depending on the type of pagination used.
|
|
17
|
+
|
|
18
|
+
**Do not rely on pagination for navigating datasets. A user should be able to search within, sort and filter datasets too, rather than needing to click through many pages looking for the right data item.**
|
|
19
|
+
|
|
20
|
+
\`\`\`js
|
|
21
|
+
import { Pagination } from '@dhis2/ui'
|
|
22
|
+
\`\`\`
|
|
23
|
+
|
|
24
|
+
_**Note**: Dropdown menus may not display properly on this page. View these demos in the 'Canvas' tab._
|
|
25
|
+
`;
|
|
26
|
+
const logOnPageChange = page => {
|
|
27
|
+
console.log(`Now navigate to page ${page}...`);
|
|
28
|
+
};
|
|
29
|
+
const logOnPageSizeChange = pageSize => {
|
|
30
|
+
console.log(`Now change page size to ${pageSize}...`);
|
|
31
|
+
};
|
|
32
|
+
var _default = exports.default = {
|
|
33
|
+
title: 'Pagination',
|
|
34
|
+
component: _pagination.Pagination,
|
|
35
|
+
parameters: {
|
|
36
|
+
componentSubtitle: subtitle,
|
|
37
|
+
docs: {
|
|
38
|
+
description: {
|
|
39
|
+
component: description
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
// Default args for stories
|
|
44
|
+
args: {
|
|
45
|
+
onPageChange: logOnPageChange,
|
|
46
|
+
onPageSizeChange: logOnPageSizeChange
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const Template = args => /*#__PURE__*/_react.default.createElement(_pagination.Pagination, args);
|
|
50
|
+
const Default = exports.Default = Template.bind({});
|
|
51
|
+
Default.args = {
|
|
52
|
+
...pagers.atTenthPage
|
|
53
|
+
};
|
|
54
|
+
const Disabled = exports.Disabled = Template.bind({});
|
|
55
|
+
Disabled.args = {
|
|
56
|
+
...pagers.atTenthPage,
|
|
57
|
+
disabled: true
|
|
58
|
+
};
|
|
59
|
+
const PagerAtFirstPage = exports.PagerAtFirstPage = Template.bind({});
|
|
60
|
+
PagerAtFirstPage.args = {
|
|
61
|
+
...pagers.atFirstPage
|
|
62
|
+
};
|
|
63
|
+
const PagerAtLastPage = exports.PagerAtLastPage = Template.bind({});
|
|
64
|
+
PagerAtLastPage.args = {
|
|
65
|
+
...pagers.atLastPage
|
|
66
|
+
};
|
|
67
|
+
const NoTotal = exports.NoTotal = Template.bind({});
|
|
68
|
+
NoTotal.args = {
|
|
69
|
+
...pagers.noTotal
|
|
70
|
+
};
|
|
71
|
+
const NoTotalAtLastPage = exports.NoTotalAtLastPage = Template.bind({});
|
|
72
|
+
NoTotalAtLastPage.args = {
|
|
73
|
+
...pagers.noTotalAtLastPage,
|
|
74
|
+
pageLength: 26
|
|
75
|
+
};
|
|
76
|
+
const NoTotalAtLastPageWithoutPageLength = exports.NoTotalAtLastPageWithoutPageLength = Template.bind({});
|
|
77
|
+
NoTotalAtLastPageWithoutPageLength.args = {
|
|
78
|
+
...pagers.noTotalAtLastPage
|
|
79
|
+
};
|
|
80
|
+
const WithoutPageSizeSelect = exports.WithoutPageSizeSelect = Template.bind({});
|
|
81
|
+
WithoutPageSizeSelect.args = {
|
|
82
|
+
...pagers.atTenthPage,
|
|
83
|
+
hidePageSizeSelect: true
|
|
84
|
+
};
|
|
85
|
+
const WithoutGoToPageSelect = exports.WithoutGoToPageSelect = Template.bind({});
|
|
86
|
+
WithoutGoToPageSelect.args = {
|
|
87
|
+
...pagers.atTenthPage,
|
|
88
|
+
hidePageSelect: true
|
|
89
|
+
};
|
|
90
|
+
const WithoutPageSummary = exports.WithoutPageSummary = Template.bind({});
|
|
91
|
+
WithoutPageSummary.args = {
|
|
92
|
+
...pagers.atTenthPage,
|
|
93
|
+
hidePageSummary: true
|
|
94
|
+
};
|
|
95
|
+
const WithCustomPageSummary = exports.WithCustomPageSummary = Template.bind({});
|
|
96
|
+
WithCustomPageSummary.args = {
|
|
97
|
+
...pagers.atTenthPage,
|
|
98
|
+
pageSummaryText: interpolationObject => _d2I18n.default.t('You are at page {{page}} showing items {{firstItem}}-{{lastItem}}, but there are {{pageCount}} pages and {{total}} items', interpolationObject)
|
|
99
|
+
};
|
|
100
|
+
const WithoutAnySelect = exports.WithoutAnySelect = Template.bind({});
|
|
101
|
+
WithoutAnySelect.args = {
|
|
102
|
+
...pagers.atTenthPage,
|
|
103
|
+
...WithoutGoToPageSelect.args,
|
|
104
|
+
...WithoutPageSizeSelect.args
|
|
105
|
+
};
|
|
106
|
+
const InBox = _ref => {
|
|
107
|
+
let {
|
|
108
|
+
boxWidth,
|
|
109
|
+
...args
|
|
110
|
+
} = _ref;
|
|
111
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
112
|
+
style: {
|
|
113
|
+
width: boxWidth
|
|
114
|
+
}
|
|
115
|
+
}, /*#__PURE__*/_react.default.createElement(_pagination.Pagination, args));
|
|
116
|
+
};
|
|
117
|
+
const MediumWidth = exports.MediumWidth = InBox.bind({});
|
|
118
|
+
MediumWidth.args = {
|
|
119
|
+
...pagers.atTenthPage,
|
|
120
|
+
boxWidth: 500
|
|
121
|
+
};
|
|
122
|
+
const NarrowWidth = exports.NarrowWidth = InBox.bind({});
|
|
123
|
+
NarrowWidth.args = {
|
|
124
|
+
...pagers.atTenthPage,
|
|
125
|
+
boxWidth: 100
|
|
126
|
+
};
|
|
127
|
+
const RTL = args => /*#__PURE__*/_react.default.createElement("div", {
|
|
128
|
+
dir: "rtl"
|
|
129
|
+
}, /*#__PURE__*/_react.default.createElement(_pagination.Pagination, args));
|
|
130
|
+
exports.RTL = RTL;
|
|
131
|
+
RTL.args = {
|
|
132
|
+
...pagers.atTenthPage
|
|
133
|
+
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign
|
|
2
|
-
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
2
|
import { shallow } from 'enzyme';
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import { PageControls } from '../page-controls.js';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign
|
|
2
|
-
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
2
|
import { shallow } from 'enzyme';
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import { PageSummary } from '../page-summary.js';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign
|
|
2
|
-
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
2
|
import '@testing-library/dom';
|
|
4
3
|
import { render } from '@testing-library/react';
|
|
5
4
|
import React from 'react';
|
|
@@ -7,7 +6,8 @@ import * as mockPagers from '../__fixtures__/index.js';
|
|
|
7
6
|
import { Pagination } from '../pagination.js';
|
|
8
7
|
describe('<Pagination />', () => {
|
|
9
8
|
describe('Pagination with total and totalPages', () => {
|
|
10
|
-
const props = {
|
|
9
|
+
const props = {
|
|
10
|
+
...mockPagers.atTenthPage,
|
|
11
11
|
onPageChange: () => {},
|
|
12
12
|
onPageSizeChange: () => {}
|
|
13
13
|
};
|
|
@@ -143,7 +143,8 @@ describe('<Pagination />', () => {
|
|
|
143
143
|
});
|
|
144
144
|
});
|
|
145
145
|
describe('Pagination without total and totalPages', () => {
|
|
146
|
-
const props = {
|
|
146
|
+
const props = {
|
|
147
|
+
...mockPagers.noTotal,
|
|
147
148
|
pageLength: mockPagers.noTotal.pageSize,
|
|
148
149
|
onPageChange: () => {},
|
|
149
150
|
onPageSizeChange: () => {}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import i18n from './locales/index.js';
|
|
2
|
-
|
|
3
2
|
const isValidNumber = input => typeof input === 'number' && !isNaN(input);
|
|
4
|
-
|
|
5
3
|
export const getDefaultPageSummaryText = _ref => {
|
|
6
4
|
let {
|
|
7
5
|
firstItem,
|
|
@@ -10,7 +8,6 @@ export const getDefaultPageSummaryText = _ref => {
|
|
|
10
8
|
pageCount,
|
|
11
9
|
total
|
|
12
10
|
} = _ref;
|
|
13
|
-
|
|
14
11
|
if (isValidNumber(total) && isValidNumber(lastItem)) {
|
|
15
12
|
return i18n.t('Page {{page}} of {{pageCount}}, items {{firstItem}}-{{lastItem}} of {{total}}', {
|
|
16
13
|
page,
|
|
@@ -20,7 +17,6 @@ export const getDefaultPageSummaryText = _ref => {
|
|
|
20
17
|
total
|
|
21
18
|
});
|
|
22
19
|
}
|
|
23
|
-
|
|
24
20
|
if (isValidNumber(lastItem)) {
|
|
25
21
|
return i18n.t('Page {{page}}, items {{firstItem}}-{{lastItem}}', {
|
|
26
22
|
page,
|
|
@@ -28,7 +24,6 @@ export const getDefaultPageSummaryText = _ref => {
|
|
|
28
24
|
lastItem
|
|
29
25
|
});
|
|
30
26
|
}
|
|
31
|
-
|
|
32
27
|
return i18n.t('Page {{page}}', {
|
|
33
28
|
page
|
|
34
29
|
});
|
|
@@ -9,7 +9,6 @@ export const getItemRange = _ref => {
|
|
|
9
9
|
// page is 1-based
|
|
10
10
|
let firstItem = (page - 1) * pageSize + 1;
|
|
11
11
|
let lastItem = firstItem + pageSize - 1;
|
|
12
|
-
|
|
13
12
|
if (typeof total === 'number') {
|
|
14
13
|
if (total === 0) {
|
|
15
14
|
/*
|
|
@@ -22,16 +21,13 @@ export const getItemRange = _ref => {
|
|
|
22
21
|
lastItem = total;
|
|
23
22
|
}
|
|
24
23
|
}
|
|
25
|
-
|
|
26
24
|
if (typeof pageLength === 'number') {
|
|
27
25
|
lastItem = firstItem + pageLength - 1;
|
|
28
26
|
}
|
|
29
|
-
|
|
30
27
|
if (isLastPage && isNaN(total) && isNaN(pageLength)) {
|
|
31
28
|
// impossible to accurately determine the last item
|
|
32
29
|
lastItem = NaN;
|
|
33
30
|
}
|
|
34
|
-
|
|
35
31
|
return {
|
|
36
32
|
firstItem,
|
|
37
33
|
lastItem
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import _JSXStyle from "styled-jsx/style";
|
|
2
|
-
import { Button } from '@dhis2-ui/button';
|
|
3
2
|
import { spacers } from '@dhis2/ui-constants';
|
|
4
3
|
import { IconChevronLeft16, IconChevronRight16 } from '@dhis2/ui-icons';
|
|
4
|
+
import { Button } from '@dhis2-ui/button';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import React from 'react';
|
|
7
|
-
|
|
8
7
|
const translate = (prop, interpolationObject) => {
|
|
9
8
|
if (typeof prop === 'function') {
|
|
10
9
|
return prop(interpolationObject);
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
return prop;
|
|
14
12
|
};
|
|
15
|
-
|
|
16
13
|
const PageControls = _ref => {
|
|
17
14
|
let {
|
|
18
15
|
dataTest,
|
|
@@ -24,7 +21,7 @@ const PageControls = _ref => {
|
|
|
24
21
|
onClick
|
|
25
22
|
} = _ref;
|
|
26
23
|
return /*#__PURE__*/React.createElement("div", {
|
|
27
|
-
"data-test":
|
|
24
|
+
"data-test": `${dataTest}-pagecontrols`,
|
|
28
25
|
className: _JSXStyle.dynamic([["3252926163", [spacers.dp4]]])
|
|
29
26
|
}, /*#__PURE__*/React.createElement(Button, {
|
|
30
27
|
secondary: true,
|
|
@@ -32,7 +29,7 @@ const PageControls = _ref => {
|
|
|
32
29
|
small: true,
|
|
33
30
|
disabled: isPreviousDisabled,
|
|
34
31
|
onClick: () => onClick(page - 1),
|
|
35
|
-
dataTest:
|
|
32
|
+
dataTest: `${dataTest}-page-previous`
|
|
36
33
|
}, /*#__PURE__*/React.createElement("div", {
|
|
37
34
|
className: _JSXStyle.dynamic([["3252926163", [spacers.dp4]]]) + " " + "navigator-icon"
|
|
38
35
|
}, /*#__PURE__*/React.createElement(IconChevronLeft16, null)), translate(previousPageText)), /*#__PURE__*/React.createElement(Button, {
|
|
@@ -41,15 +38,14 @@ const PageControls = _ref => {
|
|
|
41
38
|
small: true,
|
|
42
39
|
disabled: isNextDisabled,
|
|
43
40
|
onClick: () => onClick(page + 1),
|
|
44
|
-
dataTest:
|
|
41
|
+
dataTest: `${dataTest}-page-next`
|
|
45
42
|
}, translate(nextPageText), /*#__PURE__*/React.createElement("div", {
|
|
46
43
|
className: _JSXStyle.dynamic([["3252926163", [spacers.dp4]]]) + " " + "navigator-icon"
|
|
47
44
|
}, /*#__PURE__*/React.createElement(IconChevronRight16, null))), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
48
45
|
id: "3252926163",
|
|
49
46
|
dynamic: [spacers.dp4]
|
|
50
|
-
}, ["div.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", "div.__jsx-style-dynamic-selector .button-previous{height:32px;padding-inline-start:0;}",
|
|
47
|
+
}, ["div.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", "div.__jsx-style-dynamic-selector .button-previous{height:32px;padding-inline-start:0;}", `div.__jsx-style-dynamic-selector .button-next{height:32px;padding-inline-end:0;margin-inline-start:${spacers.dp4};}`, "div.__jsx-style-dynamic-selector .navigator-icon.__jsx-style-dynamic-selector:dir(rtl){-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}"]));
|
|
51
48
|
};
|
|
52
|
-
|
|
53
49
|
PageControls.propTypes = {
|
|
54
50
|
dataTest: PropTypes.string.isRequired,
|
|
55
51
|
nextPageText: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,
|
package/build/es/page-select.js
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import _JSXStyle from "styled-jsx/style";
|
|
2
|
-
import { SingleSelect, SingleSelectOption } from '@dhis2-ui/select';
|
|
3
2
|
import { spacers } from '@dhis2/ui-constants';
|
|
3
|
+
import { SingleSelect, SingleSelectOption } from '@dhis2-ui/select';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import React from 'react';
|
|
5
|
+
import React from 'react';
|
|
6
6
|
|
|
7
|
+
// TODO: i18n translate
|
|
7
8
|
const translate = (prop, interpolationObject) => {
|
|
8
9
|
if (typeof prop === 'function') {
|
|
9
10
|
return prop(interpolationObject);
|
|
10
11
|
}
|
|
11
|
-
|
|
12
12
|
return prop;
|
|
13
13
|
};
|
|
14
|
-
|
|
15
14
|
const createAvailablePages = length => Array.from({
|
|
16
15
|
length
|
|
17
16
|
}, (_x, i) => (i + 1).toString());
|
|
18
|
-
|
|
19
17
|
const PageSelect = _ref => {
|
|
20
18
|
let {
|
|
21
19
|
dataTest,
|
|
@@ -26,7 +24,7 @@ const PageSelect = _ref => {
|
|
|
26
24
|
pageCount
|
|
27
25
|
} = _ref;
|
|
28
26
|
return /*#__PURE__*/React.createElement("div", {
|
|
29
|
-
"data-test":
|
|
27
|
+
"data-test": `${dataTest}-gotopage`,
|
|
30
28
|
className: _JSXStyle.dynamic([["599400768", [spacers.dp12]]])
|
|
31
29
|
}, /*#__PURE__*/React.createElement(SingleSelect, {
|
|
32
30
|
dense: true,
|
|
@@ -39,7 +37,7 @@ const PageSelect = _ref => {
|
|
|
39
37
|
return onChange(parseInt(selected, 10));
|
|
40
38
|
},
|
|
41
39
|
className: "select",
|
|
42
|
-
dataTest:
|
|
40
|
+
dataTest: `${dataTest}-page-select`,
|
|
43
41
|
prefix: translate(pageSelectText)
|
|
44
42
|
}, createAvailablePages(pageCount).map(availablePage => /*#__PURE__*/React.createElement(SingleSelectOption, {
|
|
45
43
|
key: availablePage,
|
|
@@ -48,9 +46,8 @@ const PageSelect = _ref => {
|
|
|
48
46
|
}))), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
49
47
|
id: "599400768",
|
|
50
48
|
dynamic: [spacers.dp12]
|
|
51
|
-
}, [
|
|
49
|
+
}, [`div.__jsx-style-dynamic-selector{margin-inline-end:${spacers.dp12};}`]));
|
|
52
50
|
};
|
|
53
|
-
|
|
54
51
|
PageSelect.propTypes = {
|
|
55
52
|
dataTest: PropTypes.string.isRequired,
|
|
56
53
|
page: PropTypes.number.isRequired,
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import _JSXStyle from "styled-jsx/style";
|
|
2
|
-
import { SingleSelect, SingleSelectOption } from '@dhis2-ui/select';
|
|
3
2
|
import { spacers } from '@dhis2/ui-constants';
|
|
3
|
+
import { SingleSelect, SingleSelectOption } from '@dhis2-ui/select';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import React from 'react';
|
|
5
|
+
import React from 'react';
|
|
6
6
|
|
|
7
|
+
// TODO: i18n translate
|
|
7
8
|
const translate = (prop, interpolationObject) => {
|
|
8
9
|
if (typeof prop === 'function') {
|
|
9
10
|
return prop(interpolationObject);
|
|
10
11
|
}
|
|
11
|
-
|
|
12
12
|
return prop;
|
|
13
13
|
};
|
|
14
|
-
|
|
15
14
|
const PageSizeSelect = _ref => {
|
|
16
15
|
let {
|
|
17
16
|
dataTest,
|
|
@@ -22,7 +21,7 @@ const PageSizeSelect = _ref => {
|
|
|
22
21
|
onChange
|
|
23
22
|
} = _ref;
|
|
24
23
|
return /*#__PURE__*/React.createElement("div", {
|
|
25
|
-
"data-test":
|
|
24
|
+
"data-test": `${dataTest}-pagesize`,
|
|
26
25
|
className: _JSXStyle.dynamic([["3539890457", [spacers.dp12]]])
|
|
27
26
|
}, /*#__PURE__*/React.createElement(SingleSelect, {
|
|
28
27
|
dense: true,
|
|
@@ -35,7 +34,7 @@ const PageSizeSelect = _ref => {
|
|
|
35
34
|
return onChange(parseInt(selected, 10));
|
|
36
35
|
},
|
|
37
36
|
className: "select",
|
|
38
|
-
dataTest:
|
|
37
|
+
dataTest: `${dataTest}-pagesize-select`,
|
|
39
38
|
prefix: translate(pageSizeSelectText)
|
|
40
39
|
}, pageSizes.map(length => /*#__PURE__*/React.createElement(SingleSelectOption, {
|
|
41
40
|
key: length,
|
|
@@ -44,9 +43,8 @@ const PageSizeSelect = _ref => {
|
|
|
44
43
|
}))), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
45
44
|
id: "3539890457",
|
|
46
45
|
dynamic: [spacers.dp12]
|
|
47
|
-
}, [
|
|
46
|
+
}, [`div.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;min-height:32px;margin-inline-end:${spacers.dp12};-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}`]));
|
|
48
47
|
};
|
|
49
|
-
|
|
50
48
|
PageSizeSelect.propTypes = {
|
|
51
49
|
dataTest: PropTypes.string.isRequired,
|
|
52
50
|
pageSize: PropTypes.number.isRequired,
|
package/build/es/page-summary.js
CHANGED
|
@@ -3,15 +3,12 @@ import { colors, spacers } from '@dhis2/ui-constants';
|
|
|
3
3
|
import cx from 'classnames';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import React from 'react';
|
|
6
|
-
|
|
7
6
|
const translate = (prop, interpolationObject) => {
|
|
8
7
|
if (typeof prop === 'function') {
|
|
9
8
|
return prop(interpolationObject);
|
|
10
9
|
}
|
|
11
|
-
|
|
12
10
|
return prop;
|
|
13
11
|
};
|
|
14
|
-
|
|
15
12
|
const PageSummary = _ref => {
|
|
16
13
|
let {
|
|
17
14
|
dataTest,
|
|
@@ -31,7 +28,7 @@ const PageSummary = _ref => {
|
|
|
31
28
|
total
|
|
32
29
|
});
|
|
33
30
|
return /*#__PURE__*/React.createElement("div", {
|
|
34
|
-
"data-test":
|
|
31
|
+
"data-test": `${dataTest}-summary`,
|
|
35
32
|
className: _JSXStyle.dynamic([["3973865131", [spacers.dp12, colors.grey700, colors.grey500]]])
|
|
36
33
|
}, /*#__PURE__*/React.createElement("span", {
|
|
37
34
|
className: _JSXStyle.dynamic([["3973865131", [spacers.dp12, colors.grey700, colors.grey500]]]) + " " + (cx({
|
|
@@ -40,9 +37,8 @@ const PageSummary = _ref => {
|
|
|
40
37
|
}, summary), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
41
38
|
id: "3973865131",
|
|
42
39
|
dynamic: [spacers.dp12, colors.grey700, colors.grey500]
|
|
43
|
-
}, [
|
|
40
|
+
}, [`div.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;min-height:32px;margin-inline-end:${spacers.dp12};}`, `span.__jsx-style-dynamic-selector{color:${colors.grey700};font-size:14px;}`, `span.inactive.__jsx-style-dynamic-selector{color:${colors.grey500};}`]));
|
|
44
41
|
};
|
|
45
|
-
|
|
46
42
|
PageSummary.propTypes = {
|
|
47
43
|
dataTest: PropTypes.string.isRequired,
|
|
48
44
|
page: PropTypes.number.isRequired,
|
package/build/es/pagination.js
CHANGED
|
@@ -12,7 +12,6 @@ import { PageSelect } from './page-select.js';
|
|
|
12
12
|
import { PageSizeSelect } from './page-size-select.js';
|
|
13
13
|
import { PageSummary } from './page-summary.js';
|
|
14
14
|
const MAX_PAGE_COUNT = 2000;
|
|
15
|
-
|
|
16
15
|
const Pagination = _ref => {
|
|
17
16
|
let {
|
|
18
17
|
className,
|
|
@@ -88,9 +87,8 @@ const Pagination = _ref => {
|
|
|
88
87
|
})), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
89
88
|
id: "3796520840",
|
|
90
89
|
dynamic: [spacers.dp4]
|
|
91
|
-
}, [
|
|
90
|
+
}, [`.container.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;row-gap:${spacers.dp4};}`, ".spacer.__jsx-style-dynamic-selector{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}", ".page-navigation.__jsx-style-dynamic-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;min-height:32px;}"]));
|
|
92
91
|
};
|
|
93
|
-
|
|
94
92
|
Pagination.defaultProps = {
|
|
95
93
|
dataTest: 'dhis2-uiwidgets-pagination',
|
|
96
94
|
pageSizes: ['5', '10', '20', '30', '40', '50', '75', '100'],
|