@occmundial/occ-atomic 3.0.0-beta.5 → 3.0.0-beta.51

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.
Files changed (115) hide show
  1. package/CHANGELOG.md +414 -0
  2. package/build/Avatar/Avatar.js +69 -21
  3. package/build/Avatar/Avatar.test.js +15 -8
  4. package/build/Avatar/AvatarContent/AvatarContent.js +61 -21
  5. package/build/Avatar/AvatarContent/AvatarContent.test.js +4 -18
  6. package/build/Avatar/AvatarContent/__snapshots__/AvatarContent.test.js.snap +75 -15
  7. package/build/Avatar/AvatarContent/styles.js +88 -21
  8. package/build/Avatar/__snapshots__/Avatar.test.js.snap +11 -2
  9. package/build/Avatar/styles.js +18 -7
  10. package/build/Banner/Banner.js +30 -40
  11. package/build/Banner/Banner.test.js +64 -17
  12. package/build/Banner/__snapshots__/Banner.test.js.snap +0 -28
  13. package/build/Banner/index.js +1 -6
  14. package/build/Button/Button.js +1 -1
  15. package/build/Button/Button.test.js +0 -11
  16. package/build/Button/__snapshots__/Button.test.js.snap +54 -60
  17. package/build/Button/styles.js +42 -75
  18. package/build/Checkbox/Checkbox.js +48 -3
  19. package/build/Checkbox/__snapshots__/Checkbox.test.js.snap +81 -49
  20. package/build/Checkbox/styles.js +91 -48
  21. package/build/Fab/__snapshots__/Fab.test.js.snap +2 -2
  22. package/build/Footer/Footer.js +63 -84
  23. package/build/Footer/List/List.js +89 -124
  24. package/build/Footer/List/styles.js +85 -31
  25. package/build/Footer/__snapshots__/Footer.test.js.snap +113 -57
  26. package/build/Footer/styles.js +119 -53
  27. package/build/Grid/Col/__snapshots__/Col.test.js.snap +16 -2
  28. package/build/Grid/Col/styles.js +12 -6
  29. package/build/Grid/Row/__snapshots__/Row.test.js.snap +18 -2
  30. package/build/Grid/Row/styles.js +15 -5
  31. package/build/Grid/styles.js +26 -9
  32. package/build/Modal/Modal.js +94 -66
  33. package/build/Modal/Modal.test.js +14 -7
  34. package/build/Modal/__snapshots__/Modal.test.js.snap +155 -100
  35. package/build/Modal/styles.js +165 -143
  36. package/build/Pager/Page/Page.js +8 -5
  37. package/build/Pager/Page/Page.test.js +13 -9
  38. package/build/Pager/Page/__snapshots__/Page.test.js.snap +34 -10
  39. package/build/Pager/Page/styles.js +48 -14
  40. package/build/Pager/Pager.js +139 -235
  41. package/build/Pager/Pager.test.js +81 -36
  42. package/build/Pager/__snapshots__/Pager.test.js.snap +3 -36
  43. package/build/Pager/styles.js +5 -40
  44. package/build/Pill/Choice/Choice.js +6 -4
  45. package/build/Pill/Choice/styles.js +13 -10
  46. package/build/Pill/Group/styles.js +5 -5
  47. package/build/Pill/Stack/Stack.js +2 -2
  48. package/build/Pill/Stack/styles.js +5 -8
  49. package/build/Placeholder/Placeholder.js +29 -12
  50. package/build/Placeholder/Placeholder.test.js +4 -4
  51. package/build/Placeholder/__snapshots__/Placeholder.test.js.snap +81 -38
  52. package/build/Placeholder/styles.js +86 -42
  53. package/build/Provider/usePrevious.js +1 -1
  54. package/build/Radio/Radio.js +42 -6
  55. package/build/Radio/__snapshots__/Radio.test.js.snap +81 -80
  56. package/build/Radio/styles.js +93 -85
  57. package/build/SlideDown/SlideDown.js +162 -169
  58. package/build/SlideDown/SlideDown.test.js +49 -44
  59. package/build/SlideDown/__snapshots__/SlideDown.test.js.snap +45 -13
  60. package/build/SlideDown/styles.js +52 -18
  61. package/build/SlideToggle/SlideToggle.js +38 -6
  62. package/build/SlideToggle/SlideToggle.test.js +2 -2
  63. package/build/SlideToggle/__snapshots__/SlideToggle.test.js.snap +53 -37
  64. package/build/SlideToggle/styles.js +64 -45
  65. package/build/Tabs/Tab/Tab.js +73 -0
  66. package/build/Tabs/Tab/index.js +34 -0
  67. package/build/Tabs/Tab/index.test.js +132 -0
  68. package/build/Tabs/Tab/styles.js +74 -0
  69. package/build/Tabs/TabContent/TabContent.js +76 -0
  70. package/build/Tabs/TabContent/index.js +34 -0
  71. package/build/Tabs/TabContent/index.test.js +68 -0
  72. package/build/Tabs/TabContent/styles.js +23 -0
  73. package/build/Tabs/TabIndicator/TabIndicator.js +158 -0
  74. package/build/Tabs/TabIndicator/index.js +34 -0
  75. package/build/Tabs/TabIndicator/styles.js +24 -0
  76. package/build/Tabs/TabList/TabList.js +108 -0
  77. package/build/Tabs/TabList/index.js +34 -0
  78. package/build/{Pager/Break → Tabs/TabList}/styles.js +3 -2
  79. package/build/Tabs/Tabs.js +74 -0
  80. package/build/Tabs/context.js +94 -0
  81. package/build/Tabs/index.js +34 -0
  82. package/build/Tabs/index.test.js +157 -0
  83. package/build/Tabs/styles.js +19 -0
  84. package/build/Tag/Tag.js +2 -2
  85. package/build/Tag/__snapshots__/Tag.test.js.snap +40 -43
  86. package/build/Tag/styles.js +76 -82
  87. package/build/Text/Text.js +6 -3
  88. package/build/TextField/TextField.js +7 -6
  89. package/build/TextField/__snapshots__/TextField.test.js.snap +3 -0
  90. package/build/TextField/styles.js +3 -0
  91. package/build/Tip/Tip.js +62 -95
  92. package/build/Tip/Tip.test.js +29 -6
  93. package/build/Tip/TipText/index.js +32 -0
  94. package/build/Tip/__snapshots__/Tip.test.js.snap +127 -15
  95. package/build/Tip/styles.js +125 -31
  96. package/build/Toaster/Toast/Toast.js +76 -64
  97. package/build/Toaster/Toast/styles.js +118 -46
  98. package/build/Toaster/Toaster.js +3 -2
  99. package/build/Toaster/Toaster.test.js +5 -2
  100. package/build/Toaster/__snapshots__/Toaster.test.js.snap +1 -1
  101. package/build/Toaster/functions.js +4 -0
  102. package/build/Toaster/styles.js +3 -3
  103. package/build/Tooltip/Tooltip.js +73 -22
  104. package/build/Tooltip/__snapshots__/Tooltip.test.js.snap +22 -6
  105. package/build/Tooltip/styles.js +32 -10
  106. package/build/index.js +14 -1
  107. package/build/subatomic/grid.js +5 -5
  108. package/build/tokens/colors.json +35 -3
  109. package/package.json +4 -1
  110. package/build/Banner/styles.js +0 -41
  111. package/build/Pager/Break/Break.js +0 -27
  112. package/build/Pager/Break/Break.test.js +0 -53
  113. package/build/Pager/Break/__snapshots__/Break.test.js.snap +0 -13
  114. package/build/Pager/Break/index.js +0 -18
  115. /package/build/Button/{Loading.js → Loading/index.js} +0 -0
@@ -5,258 +5,180 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = void 0;
8
+ exports["default"] = Pager;
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
11
 
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
- var _Icon = _interopRequireDefault(require("../Icon"));
14
+ var _Button = _interopRequireDefault(require("../Button"));
15
15
 
16
16
  var _Page = _interopRequireDefault(require("./Page"));
17
17
 
18
- var _Break = _interopRequireDefault(require("./Break"));
19
-
20
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
19
 
22
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23
-
24
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
25
-
26
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
27
-
28
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
29
-
30
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
21
 
32
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
23
 
34
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
35
-
36
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
37
-
38
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
24
+ /** This pager allows the user to navigate between pages with 'Next' and 'Previous' buttons and numerical buttons. */
25
+ function Pager(_ref) {
26
+ var classes = _ref.classes,
27
+ currentPage = _ref.currentPage,
28
+ onPageChange = _ref.onPageChange,
29
+ _ref$pageCount = _ref.pageCount,
30
+ pageCount = _ref$pageCount === void 0 ? 10 : _ref$pageCount,
31
+ _ref$centerPages = _ref.centerPages,
32
+ centerPages = _ref$centerPages === void 0 ? 3 : _ref$centerPages,
33
+ _ref$marginPages = _ref.marginPages,
34
+ marginPages = _ref$marginPages === void 0 ? 2 : _ref$marginPages,
35
+ _ref$previousLabel = _ref.previousLabel,
36
+ previousLabel = _ref$previousLabel === void 0 ? 'Previous' : _ref$previousLabel,
37
+ _ref$nextLabel = _ref.nextLabel,
38
+ nextLabel = _ref$nextLabel === void 0 ? 'Next' : _ref$nextLabel,
39
+ _ref$breakSymbol = _ref.breakSymbol,
40
+ breakSymbol = _ref$breakSymbol === void 0 ? '...' : _ref$breakSymbol,
41
+ hideNumbers = _ref.hideNumbers,
42
+ disabled = _ref.disabled,
43
+ className = _ref.className;
44
+ var handlePageSelected = (0, _react.useCallback)(function (newPage) {
45
+ if (currentPage === newPage) return;
46
+ if (onPageChange) onPageChange(newPage);
47
+ }, [currentPage, onPageChange]);
48
+ (0, _react.useEffect)(function () {
49
+ if (currentPage > pageCount || currentPage < 1) {
50
+ handlePageSelected(1);
51
+ }
52
+ }, [currentPage, pageCount, handlePageSelected]);
39
53
 
40
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
54
+ var handlePrevPage = function handlePrevPage() {
55
+ if (currentPage > 1) handlePageSelected(currentPage - 1);
56
+ };
41
57
 
42
- /** This pager allows the user to navigate between pages with 'Next' and 'Previous' buttons and numerical buttons. */
43
- var Pager = /*#__PURE__*/function (_React$Component) {
44
- _inherits(Pager, _React$Component);
58
+ var handleNextPage = function handleNextPage() {
59
+ if (currentPage < pageCount) handlePageSelected(currentPage + 1);
60
+ };
45
61
 
46
- var _super = _createSuper(Pager);
62
+ var addPage = function addPage(page) {
63
+ var pageData = {
64
+ key: page.toString(),
65
+ type: 'page',
66
+ selected: currentPage === page
67
+ };
68
+ return pageData;
69
+ };
47
70
 
48
- function Pager(props) {
49
- var _this;
71
+ var getStartAndEndPages = function getStartAndEndPages() {
72
+ var startPage = Math.max(currentPage - Math.floor(centerPages / 2), marginPages + 1);
73
+ var endPage = Math.min(startPage + centerPages - 1, pageCount - marginPages);
50
74
 
51
- _classCallCheck(this, Pager);
75
+ if (endPage === pageCount - marginPages) {
76
+ startPage = Math.max(endPage - centerPages + 1, marginPages + 1);
77
+ }
52
78
 
53
- _this = _super.call(this, props);
54
- _this.state = {
55
- selected: props.initialPage ? props.initialPage : props.forcePage ? props.forcePage : 1
79
+ return {
80
+ startPage: startPage,
81
+ endPage: endPage
56
82
  };
57
- _this.callCallback = _this.callCallback.bind(_assertThisInitialized(_this));
58
- _this.handlePrevPage = _this.handlePrevPage.bind(_assertThisInitialized(_this));
59
- _this.handleNextPage = _this.handleNextPage.bind(_assertThisInitialized(_this));
60
- _this.handlePageSelected = _this.handlePageSelected.bind(_assertThisInitialized(_this));
61
- _this.getPageElement = _this.getPageElement.bind(_assertThisInitialized(_this));
62
- _this.pagination = _this.pagination.bind(_assertThisInitialized(_this));
63
- return _this;
64
- }
83
+ };
65
84
 
66
- _createClass(Pager, [{
67
- key: "componentDidMount",
68
- value: function componentDidMount() {
69
- var _this$props = this.props,
70
- initialPage = _this$props.initialPage,
71
- disableInitialCallback = _this$props.disableInitialCallback;
85
+ function getPagination() {
86
+ var elements = [];
72
87
 
73
- if (typeof initialPage != 'undefined' && !disableInitialCallback) {
74
- this.callCallback(initialPage);
88
+ if (pageCount <= centerPages + marginPages * 2) {
89
+ for (var i = 1; i <= pageCount; i++) {
90
+ elements.push(addPage(i));
75
91
  }
76
- }
77
- }, {
78
- key: "componentWillReceiveProps",
79
- value: function componentWillReceiveProps(props) {
80
- if (typeof props.forcePage != 'undefined' && this.props.forcePage != props.forcePage) {
81
- this.setState({
82
- selected: props.forcePage
83
- });
92
+ } else {
93
+ for (var _i = 1; _i <= marginPages; _i++) {
94
+ elements.push(addPage(_i));
84
95
  }
85
- }
86
- }, {
87
- key: "callCallback",
88
- value: function callCallback(selectedItem) {
89
- var onPageChange = this.props.onPageChange;
90
-
91
- if (typeof onPageChange != 'undefined' && typeof onPageChange == 'function') {
92
- onPageChange({
93
- selected: selectedItem
96
+
97
+ var _getStartAndEndPages = getStartAndEndPages(),
98
+ startPage = _getStartAndEndPages.startPage,
99
+ endPage = _getStartAndEndPages.endPage;
100
+
101
+ if (currentPage > marginPages + 1 && startPage > marginPages + 1) {
102
+ elements.push({
103
+ key: 'left-break',
104
+ type: 'break'
94
105
  });
95
106
  }
96
- }
97
- }, {
98
- key: "handlePrevPage",
99
- value: function handlePrevPage(e) {
100
- var selected = this.state.selected;
101
- e.preventDefault ? e.preventDefault() : e.returnValue = false;
102
-
103
- if (selected > 1) {
104
- this.handlePageSelected(selected - 1, e);
107
+
108
+ for (var _i2 = startPage; _i2 <= endPage; _i2++) {
109
+ elements.push(addPage(_i2));
105
110
  }
106
- }
107
- }, {
108
- key: "handleNextPage",
109
- value: function handleNextPage(e) {
110
- var selected = this.state.selected;
111
- var pageCount = this.props.pageCount;
112
- e.preventDefault ? e.preventDefault() : e.returnValue = false;
113
-
114
- if (selected < pageCount) {
115
- this.handlePageSelected(selected + 1, e);
111
+
112
+ if (currentPage < pageCount - marginPages - 1) {
113
+ elements.push({
114
+ key: 'right-break',
115
+ type: 'break'
116
+ });
117
+ }
118
+
119
+ for (var _i3 = pageCount - marginPages + 1; _i3 <= pageCount; _i3++) {
120
+ elements.push(addPage(_i3));
116
121
  }
117
122
  }
118
- }, {
119
- key: "handlePageSelected",
120
- value: function handlePageSelected(selected, e) {
121
- e.preventDefault ? e.preventDefault() : e.returnValue = false;
122
- if (this.state.selected == selected) return;
123
- this.setState({
124
- selected: selected
125
- });
126
- this.callCallback(selected);
127
- }
128
- }, {
129
- key: "getPageElement",
130
- value: function getPageElement(index) {
131
- var selected = this.state.selected;
123
+
124
+ return elements;
125
+ }
126
+
127
+ return /*#__PURE__*/_react["default"].createElement("div", {
128
+ className: "".concat(classes.pager).concat(className ? " ".concat(className) : '')
129
+ }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
130
+ className: classes.prev,
131
+ disabled: currentPage === 1 || disabled,
132
+ theme: "secondary",
133
+ onClick: handlePrevPage,
134
+ icon: "arrow-left",
135
+ size: !previousLabel ? 'lg' : 'sm'
136
+ }, previousLabel), !hideNumbers && getPagination().map(function (_ref2) {
137
+ var key = _ref2.key,
138
+ type = _ref2.type,
139
+ selected = _ref2.selected;
140
+
141
+ if (type === 'page') {
132
142
  return /*#__PURE__*/_react["default"].createElement(_Page["default"], {
133
- key: index,
134
- onClick: this.handlePageSelected.bind(null, index),
135
- selected: selected == index,
136
- page: index
143
+ key: key,
144
+ onClick: function onClick() {
145
+ return handlePageSelected(Number(key));
146
+ },
147
+ selected: selected,
148
+ page: Number(key),
149
+ disabled: disabled
137
150
  });
138
151
  }
139
- }, {
140
- key: "pagination",
141
- value: function pagination() {
142
- var _this2 = this;
143
-
144
- var items = [];
145
- var selected = this.state.selected;
146
- var _this$props2 = this.props,
147
- pageRangeDisplayed = _this$props2.pageRangeDisplayed,
148
- pageCount = _this$props2.pageCount,
149
- marginPagesDisplayed = _this$props2.marginPagesDisplayed,
150
- breakLabel = _this$props2.breakLabel;
151
-
152
- if (pageCount <= pageRangeDisplayed) {
153
- for (var index = 1; index <= pageCount; index++) {
154
- items.push(this.getPageElement(index));
155
- }
156
- } else {
157
- var leftSide = pageRangeDisplayed / 2;
158
- var rightSide = pageRangeDisplayed - leftSide;
159
-
160
- if (selected > pageCount - pageRangeDisplayed / 2) {
161
- rightSide = pageCount - selected;
162
- leftSide = pageRangeDisplayed - rightSide;
163
- } else if (selected < pageRangeDisplayed / 2) {
164
- leftSide = selected;
165
- rightSide = pageRangeDisplayed - leftSide;
166
- }
167
-
168
- var _index;
169
-
170
- var page;
171
- var breakView;
172
-
173
- var createPage = function createPage(index) {
174
- return _this2.getPageElement(index);
175
- };
176
-
177
- for (_index = 1; _index <= pageCount; _index++) {
178
- page = _index;
179
-
180
- if (page <= marginPagesDisplayed) {
181
- items.push(createPage(_index));
182
- continue;
183
- }
184
-
185
- if (page > pageCount - marginPagesDisplayed) {
186
- items.push(createPage(_index));
187
- continue;
188
- }
189
-
190
- if (_index >= selected - leftSide && _index <= selected + rightSide) {
191
- items.push(createPage(_index));
192
- continue;
193
- }
194
-
195
- if (breakLabel && items[items.length - 1] != breakView) {
196
- breakView = /*#__PURE__*/_react["default"].createElement(_Break["default"], {
197
- key: _index,
198
- label: breakLabel
199
- });
200
- items.push(breakView);
201
- }
202
- }
203
- }
204
152
 
205
- return items;
206
- }
207
- }, {
208
- key: "render",
209
- value: function render() {
210
- var selected = this.state.selected;
211
- var _this$props3 = this.props,
212
- classes = _this$props3.classes,
213
- pageCount = _this$props3.pageCount,
214
- previousLabel = _this$props3.previousLabel,
215
- nextLabel = _this$props3.nextLabel,
216
- hideNumbers = _this$props3.hideNumbers,
217
- className = _this$props3.className;
218
- return /*#__PURE__*/_react["default"].createElement("ul", {
219
- className: "".concat(classes.pager).concat(className ? " ".concat(className) : '')
220
- }, /*#__PURE__*/_react["default"].createElement("li", {
221
- className: "".concat(classes.btn, " ").concat(classes.listItemPrevious).concat(selected == 1 ? " ".concat(classes.disabled) : ''),
222
- tabIndex: "0",
223
- onClick: this.handlePrevPage
224
- }, /*#__PURE__*/_react["default"].createElement("div", {
225
- className: classes.prev
226
- }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
227
- iconName: "chevron-left",
228
- width: 14,
229
- height: 14,
230
- colors: ['#adb4bb']
231
- }), previousLabel)), !hideNumbers && this.pagination(), /*#__PURE__*/_react["default"].createElement("li", {
232
- className: "".concat(classes.btn, " ").concat(classes.listItemNext).concat(selected == pageCount ? " ".concat(classes.disabled) : ''),
233
- tabIndex: "0",
234
- onClick: this.handleNextPage
235
- }, /*#__PURE__*/_react["default"].createElement("div", {
236
- className: classes.next
237
- }, nextLabel, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
238
- iconName: "chevron-right",
239
- width: 14,
240
- height: 14,
241
- colors: ['#adb4bb']
242
- }))));
243
- }
244
- }]);
245
-
246
- return Pager;
247
- }(_react["default"].Component);
153
+ return /*#__PURE__*/_react["default"].createElement(_Page["default"], {
154
+ key: key,
155
+ page: breakSymbol,
156
+ disabled: disabled
157
+ });
158
+ }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
159
+ className: classes.next,
160
+ disabled: currentPage === pageCount || disabled,
161
+ theme: "secondary",
162
+ onClick: handleNextPage,
163
+ iconRight: "arrow-right",
164
+ size: !nextLabel ? 'lg' : 'sm'
165
+ }, nextLabel));
166
+ }
248
167
 
249
168
  Pager.propTypes = {
250
169
  classes: _propTypes["default"].object,
251
170
 
171
+ /** The current page number. */
172
+ currentPage: _propTypes["default"].number.isRequired,
173
+
252
174
  /** The total number of pages. */
253
- pageCount: _propTypes["default"].number.isRequired,
175
+ pageCount: _propTypes["default"].number,
254
176
 
255
177
  /** The number of page numbers displayed at the center, between the '...' separators. */
256
- pageRangeDisplayed: _propTypes["default"].number.isRequired,
178
+ centerPages: _propTypes["default"].number,
257
179
 
258
180
  /** The number of page numbers displayed on the sides of the pager. */
259
- marginPagesDisplayed: _propTypes["default"].number.isRequired,
181
+ marginPages: _propTypes["default"].number,
260
182
 
261
183
  /** The label for the 'Previous' button. */
262
184
  previousLabel: _propTypes["default"].node,
@@ -267,31 +189,13 @@ Pager.propTypes = {
267
189
  /** Function to call after clicking a button to change the page. */
268
190
  onPageChange: _propTypes["default"].func,
269
191
 
270
- /** Default page to start the Pager. */
271
- initialPage: _propTypes["default"].number,
272
-
273
- /** Force a page change externally. */
274
- forcePage: _propTypes["default"].number,
275
-
276
- /** By default, a callback triggers after mounting, calling the onPageChange function. Set this to false if you don't want that to happen. */
277
- disableInitialCallback: _propTypes["default"].bool,
278
-
279
192
  /** Hide the numerical buttons, leaving just the 'Next' and 'Previous' buttons to interact with. */
280
193
  hideNumbers: _propTypes["default"].bool,
281
194
 
282
195
  /** Label for the separators. */
283
- breakLabel: _propTypes["default"].string,
196
+ breakSymbol: _propTypes["default"].string,
197
+
198
+ /** Disable the pager */
199
+ disabled: _propTypes["default"].bool,
284
200
  className: _propTypes["default"].string
285
- };
286
- Pager.defaultProps = {
287
- pageCount: 10,
288
- pageRangeDisplayed: 2,
289
- marginPagesDisplayed: 3,
290
- previousLabel: 'Previous',
291
- nextLabel: 'Next',
292
- breakLabel: '...',
293
- disableInitialCallback: false,
294
- hideNumbers: false
295
- };
296
- var _default = Pager;
297
- exports["default"] = _default;
201
+ };
@@ -22,93 +22,138 @@ var classes = Object.keys(_styles["default"]).reduce(reduceClasses, {});
22
22
  describe("Pager", function () {
23
23
  it('matches the snapshot', function () {
24
24
  var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
25
- classes: classes
25
+ classes: classes,
26
+ currentPage: 1
26
27
  }));
27
28
  expect(wrapper).toMatchSnapshot();
28
29
  });
29
30
  it('renders the prev and next buttons', function () {
30
31
  var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
31
- classes: classes
32
+ classes: classes,
33
+ currentPage: 1
32
34
  }));
33
- expect(wrapper.find('.listItemPrevious').length).toBe(1);
34
- expect(wrapper.find('.listItemPrevious').text()).toEqual('<Jss(Icon) />Previous');
35
- expect(wrapper.find('.listItemNext').length).toBe(1);
36
- expect(wrapper.find('.listItemNext').text()).toEqual('Next<Jss(Icon) />');
35
+ expect(wrapper.find('.prev').length).toBe(1);
36
+ expect(wrapper.find('.prev').text()).toEqual('<Jss(Button) />');
37
+ expect(wrapper.find('.next').length).toBe(1);
38
+ expect(wrapper.find('.next').text()).toEqual('<Jss(Button) />');
37
39
  });
38
40
  it('changes to previous page', function () {
39
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
40
- initialPage: 3,
41
- classes: classes
41
+ var onPageChange = jest.fn();
42
+ var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
43
+ currentPage: 3,
44
+ pageCount: 4,
45
+ classes: classes,
46
+ onPageChange: onPageChange
42
47
  }));
43
- expect(wrapper.state('selected')).toEqual(3);
44
- wrapper.find('.listItemPrevious').simulate('click', {
48
+ expect(onPageChange.mock.calls.length).toBe(0);
49
+ expect(wrapper.find('Page').at(1).prop('selected')).toBe(false);
50
+ expect(wrapper.find('Page').at(2).prop('selected')).toBe(true);
51
+ wrapper.find('.prev button').simulate('click', {
45
52
  target: {}
46
53
  });
47
- expect(wrapper.state('selected')).toEqual(2);
54
+ expect(onPageChange.mock.calls.length).toBe(1);
55
+ expect(onPageChange.mock.calls[0][0]).toBe(2);
56
+ wrapper.setProps({
57
+ currentPage: 2
58
+ });
59
+ expect(wrapper.find('Page').at(1).prop('selected')).toBe(true);
60
+ expect(wrapper.find('Page').at(2).prop('selected')).toBe(false);
48
61
  });
49
62
  it('changes to next page', function () {
50
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
51
- initialPage: 3,
52
- classes: classes
63
+ var onPageChange = jest.fn();
64
+ var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
65
+ currentPage: 2,
66
+ pageCount: 4,
67
+ classes: classes,
68
+ onPageChange: onPageChange
53
69
  }));
54
- expect(wrapper.state('selected')).toEqual(3);
55
- wrapper.find('.listItemNext').simulate('click', {
70
+ expect(onPageChange.mock.calls.length).toBe(0);
71
+ expect(wrapper.find('Page').at(1).prop('selected')).toBe(true);
72
+ expect(wrapper.find('Page').at(2).prop('selected')).toBe(false);
73
+ wrapper.find('.next button').simulate('click', {
56
74
  target: {}
57
75
  });
58
- expect(wrapper.state('selected')).toEqual(4);
76
+ expect(onPageChange.mock.calls.length).toBe(1);
77
+ expect(onPageChange.mock.calls[0][0]).toBe(3);
78
+ wrapper.setProps({
79
+ currentPage: 3
80
+ });
81
+ expect(wrapper.find('Page').at(1).prop('selected')).toBe(false);
82
+ expect(wrapper.find('Page').at(2).prop('selected')).toBe(true);
59
83
  });
60
84
  it('renders the pagination', function () {
61
85
  var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
86
+ currentPage: 1,
62
87
  pageCount: 3,
63
- pageRangeDisplayed: 1,
64
- marginPagesDisplayed: 1,
88
+ centerPages: 1,
89
+ marginPages: 1,
65
90
  classes: classes
66
91
  }));
67
- expect(wrapper.find('li').length).toBe(5);
92
+ expect(wrapper.find('Page').length).toBe(3);
93
+ wrapper.setProps({
94
+ pageCount: 10
95
+ });
96
+ expect(wrapper.find('Page').length).toBe(4);
97
+ wrapper.setProps({
98
+ currentPage: 3
99
+ });
100
+ expect(wrapper.find('Page').length).toBe(5);
68
101
  });
69
102
  it('changes to a specific page', function () {
103
+ var onPageChange = jest.fn();
70
104
  var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
105
+ currentPage: 1,
71
106
  pageCount: 5,
72
- pageRangeDisplayed: 1,
73
- marginPagesDisplayed: 1,
74
- classes: classes
107
+ centerPages: 1,
108
+ marginPages: 1,
109
+ classes: classes,
110
+ onPageChange: onPageChange
75
111
  }));
76
- expect(wrapper.state('selected')).toEqual(1);
77
- wrapper.find('li').at(3).simulate('click', {
112
+ expect(onPageChange.mock.calls.length).toBe(0);
113
+ expect(wrapper.find('Page').at(0).prop('selected')).toBe(true);
114
+ expect(wrapper.find('Page').at(1).prop('selected')).toBe(false);
115
+ wrapper.find('Page').at(1).simulate('click', {
78
116
  target: {}
79
117
  });
80
- expect(wrapper.state('selected')).toEqual(5);
118
+ expect(onPageChange.mock.calls.length).toBe(1);
119
+ expect(onPageChange.mock.calls[0][0]).toBe(2);
120
+ wrapper.setProps({
121
+ currentPage: 2
122
+ });
123
+ expect(wrapper.find('Page').at(0).prop('selected')).toBe(false);
124
+ expect(wrapper.find('Page').at(1).prop('selected')).toBe(true);
81
125
  });
82
126
  it('disables the previous page button', function () {
83
127
  var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
84
- initialPage: 1,
128
+ currentPage: 1,
85
129
  classes: classes
86
130
  }));
87
- expect(wrapper.find('.listItemPrevious').hasClass('disabled')).toEqual(true);
131
+ expect(wrapper.find('.prev').prop('disabled')).toEqual(true);
88
132
  wrapper.setProps({
89
- forcePage: 5
133
+ currentPage: 5
90
134
  });
91
- expect(wrapper.find('.listItemPrevious').hasClass('disabled')).toEqual(false);
135
+ expect(wrapper.find('.prev').prop('disabled')).toEqual(false);
92
136
  });
93
137
  it('disables the next page button', function () {
94
138
  var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
95
139
  pageCount: 5,
96
- initialPage: 5,
140
+ currentPage: 5,
97
141
  classes: classes
98
142
  }));
99
- expect(wrapper.find('.listItemNext').hasClass('disabled')).toEqual(true);
143
+ expect(wrapper.find('.next').prop('disabled')).toEqual(true);
100
144
  wrapper.setProps({
101
- forcePage: 1
145
+ currentPage: 1
102
146
  });
103
- expect(wrapper.find('.listItemNext').hasClass('disabled')).toEqual(false);
147
+ expect(wrapper.find('.next').prop('disabled')).toEqual(false);
104
148
  });
105
149
  it('calls the onPageChange function', function () {
106
150
  var onPageChange = jest.fn();
107
151
  var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Pager["default"], {
152
+ currentPage: 1,
108
153
  onPageChange: onPageChange,
109
154
  classes: classes
110
155
  }));
111
- wrapper.find('.listItemNext').simulate('click', {
156
+ wrapper.find('.next').simulate('click', {
112
157
  target: {}
113
158
  });
114
159
  expect(onPageChange.mock.calls.length).toBe(1);
@@ -4,48 +4,15 @@ exports[`Pager matches the snapshot 1`] = `ShallowWrapper {}`;
4
4
 
5
5
  exports[`Pager styles matches the snapshot 1`] = `
6
6
  Object {
7
- "btn": Object {
8
- "& span": Object {
9
- "marginBottom": "-2px",
10
- },
11
- "&:hover": Object {
12
- "background": "#ECECEE",
13
- "borderColor": "#ECECEE",
14
- },
15
- "border": "1px solid #bfbfbf",
16
- "borderRadius": "5px",
17
- "cursor": "pointer",
18
- "fontFamily": "'OccText', sans-serif",
19
- "outline": "0",
20
- "padding": "3px 13px",
21
- "transition": "0.3s all",
22
- },
23
- "disabled": Object {
24
- "opacity": "0.4",
25
- "pointerEvents": "none",
26
- },
27
- "listItemNext": Object {
28
- "marginLeft": "15px",
29
- },
30
- "listItemPrevious": Object {
31
- "marginRight": "15px",
32
- },
33
7
  "next": Object {
34
- "alignItems": "center",
35
- "display": "flex",
8
+ "marginLeft": "8px",
36
9
  },
37
10
  "pager": Object {
38
11
  "alignItems": "center",
39
- "color": "#727272",
40
- "display": "flex",
41
- "fontFamily": "'OccText', sans-serif",
42
- "fontSize": "14px",
43
- "listStyle": "none",
44
- "paddingLeft": "0",
12
+ "display": "inline-flex",
45
13
  },
46
14
  "prev": Object {
47
- "alignItems": "center",
48
- "display": "flex",
15
+ "marginRight": "8px",
49
16
  },
50
17
  }
51
18
  `;