@elliemae/ds-page-number 1.55.0-next.7 → 2.0.0-alpha.10

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.
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _extends = require('@babel/runtime/helpers/extends');
6
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
+ var _jsx = require('@babel/runtime/helpers/jsx');
7
7
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
8
- var React = require('react');
8
+ var react = require('react');
9
9
  var reactDesc = require('react-desc');
10
10
  var dsClassnames = require('@elliemae/ds-classnames');
11
11
  var ChevronSmallDown = require('@elliemae/ds-icons/ChevronSmallDown');
@@ -13,124 +13,125 @@ var ChevronSmallUp = require('@elliemae/ds-icons/ChevronSmallUp');
13
13
  var DSButton = require('@elliemae/ds-button');
14
14
  var DSInputGroup = require('@elliemae/ds-form/InputGroup');
15
15
  var DSInput = require('@elliemae/ds-form/Input');
16
- var components_utils = require('./components/utils.js');
16
+ var utils = require('./components/utils.js');
17
+ var jsxRuntime = require('react/jsx-runtime');
17
18
 
18
19
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
20
 
20
- var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
21
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
21
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
22
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
22
23
  var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
23
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
24
  var ChevronSmallDown__default = /*#__PURE__*/_interopDefaultLegacy(ChevronSmallDown);
25
25
  var ChevronSmallUp__default = /*#__PURE__*/_interopDefaultLegacy(ChevronSmallUp);
26
26
  var DSButton__default = /*#__PURE__*/_interopDefaultLegacy(DSButton);
27
27
  var DSInputGroup__default = /*#__PURE__*/_interopDefaultLegacy(DSInputGroup);
28
28
  var DSInput__default = /*#__PURE__*/_interopDefaultLegacy(DSInput);
29
29
 
30
- var _excluded = ["className", "disabled", "value", "onChange", "containerProps", "currentPage", "totalPages", "separator"];
31
- var blockName = 'page-number-block';
32
- var PageNumberInputContainer = dsClassnames.aggregatedClasses(DSInputGroup__default['default'])(blockName);
33
-
34
- var DSPageNumber = function DSPageNumber(_ref) {
35
- var className = _ref.className,
36
- disabled = _ref.disabled;
37
- _ref.value;
38
- var onChange = _ref.onChange,
39
- containerProps = _ref.containerProps,
40
- currentPage = _ref.currentPage,
41
- totalPages = _ref.totalPages,
42
- separator = _ref.separator,
43
- otherProps = _objectWithoutProperties__default['default'](_ref, _excluded);
44
-
45
- var safeTotal = components_utils.cleanPage(totalPages);
46
- var ref = React.useRef(null);
47
-
48
- var _convertPropToCssClas = dsClassnames.convertPropToCssClassName('page-number', className, {
49
- disabled: disabled
50
- }),
51
- cssClassName = _convertPropToCssClas.cssClassName,
52
- classNameElement = _convertPropToCssClas.classNameElement;
53
-
54
- var _useState = React.useState(components_utils.cleanPage(currentPage) || 1),
55
- _useState2 = _slicedToArray__default['default'](_useState, 2),
56
- page = _useState2[0],
57
- setPage = _useState2[1];
58
-
59
- var _useState3 = React.useState(null),
60
- _useState4 = _slicedToArray__default['default'](_useState3, 2),
61
- size = _useState4[0],
62
- setSize = _useState4[1];
63
-
64
- React.useEffect(function () {
65
- var _ref$current$getBound = ref.current.getBoundingClientRect(),
66
- width = _ref$current$getBound.width;
67
-
68
- var calculatedWidth = components_utils.lengthToSize(width, page);
30
+ var _ChevronSmallUp, _ChevronSmallDown;
31
+
32
+ const _excluded = ["className", "disabled", "value", "onChange", "containerProps", "currentPage", "totalPages", "separator"];
33
+
34
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
35
+
36
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
37
+ const blockName = 'page-number-block';
38
+ const PageNumberInputContainer = dsClassnames.aggregatedClasses(DSInputGroup__default["default"])(blockName);
39
+
40
+ const DSPageNumber = _ref => {
41
+ let {
42
+ className,
43
+ disabled,
44
+ value,
45
+ onChange,
46
+ containerProps,
47
+ currentPage,
48
+ totalPages,
49
+ separator
50
+ } = _ref,
51
+ otherProps = _objectWithoutProperties__default["default"](_ref, _excluded);
52
+
53
+ const safeTotal = utils.cleanPage(totalPages);
54
+ const ref = react.useRef(null);
55
+ const {
56
+ cssClassName,
57
+ classNameElement
58
+ } = dsClassnames.convertPropToCssClassName('page-number', className, {
59
+ disabled
60
+ });
61
+ const [page, setPage] = react.useState(utils.cleanPage(currentPage) || 1);
62
+ const [size, setSize] = react.useState(null);
63
+ react.useEffect(() => {
64
+ const {
65
+ width
66
+ } = ref.current.getBoundingClientRect();
67
+ const calculatedWidth = utils.lengthToSize(width, page);
69
68
  setSize(calculatedWidth);
70
69
  }, [page, safeTotal]);
71
70
 
72
71
  function handleUpdateInput(e) {
73
- var newValue = components_utils.cleanPage(e.target.value);
72
+ const newValue = utils.cleanPage(e.target.value);
74
73
  if (newValue > safeTotal || newValue === 0) return;
75
74
  setPage(newValue);
76
75
  onChange(newValue);
77
76
  }
78
77
 
79
78
  function handleIncrease() {
80
- var newValue = page ? parseInt(page, 10) + 1 : 1;
79
+ const newValue = page ? parseInt(page, 10) + 1 : 1;
81
80
  if (newValue > safeTotal) return;
82
81
  setPage(newValue);
83
82
  onChange(newValue);
84
83
  }
85
84
 
86
85
  function handleDecrease() {
87
- var newValue = page ? parseInt(page, 10) - 1 : 1;
86
+ const newValue = page ? parseInt(page, 10) - 1 : 1;
88
87
  if (newValue < 1) return;
89
88
  setPage(newValue);
90
89
  onChange(newValue);
91
90
  }
92
91
 
93
- return /*#__PURE__*/React__default['default'].createElement("div", _extends__default['default']({
92
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread(_objectSpread({
94
93
  "data-testid": "ds-page-number",
95
- className: "".concat(cssClassName)
96
- }, containerProps, otherProps), /*#__PURE__*/React__default['default'].createElement(PageNumberInputContainer, null, /*#__PURE__*/React__default['default'].createElement("div", {
97
- className: "".concat(classNameElement('pages'))
98
- }, /*#__PURE__*/React__default['default'].createElement(DSInput__default['default'], {
99
- className: "".concat(classNameElement('input')),
100
- "data-testid": "page-number__current-page",
101
- onChange: handleUpdateInput,
102
- style: {
103
- width: "".concat(size, "px")
104
- },
105
- value: page
106
- }), /*#__PURE__*/React__default['default'].createElement("div", {
107
- className: "".concat(classNameElement('separator'))
108
- }, separator), /*#__PURE__*/React__default['default'].createElement("div", {
109
- className: "".concat(classNameElement('total')),
110
- "data-testid": "page-number__total-pages"
111
- }, totalPages), /*#__PURE__*/React__default['default'].createElement("div", {
112
- ref: ref,
113
- className: "".concat(classNameElement('ref'))
114
- })), /*#__PURE__*/React__default['default'].createElement("div", {
115
- className: "".concat(classNameElement('limiter'))
116
- }), /*#__PURE__*/React__default['default'].createElement(DSButton__default['default'], {
117
- "aria-label": "dropdown-indicator",
118
- buttonType: "text",
119
- className: "dropdown-indicator",
120
- "data-testid": "page-number__increase",
121
- icon: /*#__PURE__*/React__default['default'].createElement(ChevronSmallUp__default['default'], null),
122
- onClick: handleIncrease
123
- }), /*#__PURE__*/React__default['default'].createElement(DSButton__default['default'], {
124
- "aria-label": "dropdown-indicator",
125
- buttonType: "text",
126
- className: "dropdown-indicator",
127
- "data-testid": "page-number__decrease",
128
- icon: /*#__PURE__*/React__default['default'].createElement(ChevronSmallDown__default['default'], null),
129
- onClick: handleDecrease
130
- })));
94
+ className: `${cssClassName}`
95
+ }, containerProps), otherProps), {}, {
96
+ children: /*#__PURE__*/_jsx__default["default"](PageNumberInputContainer, {}, void 0, /*#__PURE__*/_jsx__default["default"]("div", {
97
+ className: `${classNameElement('pages')}`
98
+ }, void 0, /*#__PURE__*/_jsx__default["default"](DSInput__default["default"], {
99
+ className: `${classNameElement('input')}`,
100
+ "data-testid": "page-number__current-page",
101
+ onChange: handleUpdateInput,
102
+ style: {
103
+ width: `${size}px`
104
+ },
105
+ value: page
106
+ }), /*#__PURE__*/_jsx__default["default"]("div", {
107
+ className: `${classNameElement('separator')}`
108
+ }, void 0, separator), /*#__PURE__*/_jsx__default["default"]("div", {
109
+ className: `${classNameElement('total')}`,
110
+ "data-testid": "page-number__total-pages"
111
+ }, void 0, totalPages), /*#__PURE__*/jsxRuntime.jsx("div", {
112
+ ref: ref,
113
+ className: `${classNameElement('ref')}`
114
+ })), /*#__PURE__*/_jsx__default["default"]("div", {
115
+ className: `${classNameElement('limiter')}`
116
+ }), /*#__PURE__*/_jsx__default["default"](DSButton__default["default"], {
117
+ "aria-label": "dropdown-indicator",
118
+ buttonType: "text",
119
+ className: "dropdown-indicator",
120
+ "data-testid": "page-number__increase",
121
+ icon: _ChevronSmallUp || (_ChevronSmallUp = /*#__PURE__*/_jsx__default["default"](ChevronSmallUp__default["default"], {})),
122
+ onClick: handleIncrease
123
+ }), /*#__PURE__*/_jsx__default["default"](DSButton__default["default"], {
124
+ "aria-label": "dropdown-indicator",
125
+ buttonType: "text",
126
+ className: "dropdown-indicator",
127
+ "data-testid": "page-number__decrease",
128
+ icon: _ChevronSmallDown || (_ChevronSmallDown = /*#__PURE__*/_jsx__default["default"](ChevronSmallDown__default["default"], {})),
129
+ onClick: handleDecrease
130
+ }))
131
+ }));
131
132
  };
132
133
 
133
- var pageNumberProps = {
134
+ const pageNumberProps = {
134
135
  className: reactDesc.PropTypes.string.description('html class attribute'),
135
136
  containerProps: reactDesc.PropTypes.object.description('Set of Properties attached to the main container'),
136
137
  disabled: reactDesc.PropTypes.bool.description('Whether the component is disabled or not').defaultValue(false),
@@ -140,15 +141,12 @@ var pageNumberProps = {
140
141
  totalPages: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.number]).description('Amount of pages').defaultValue(1),
141
142
  separator: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.number]).description('Separator between current page and total pages').defaultValue('/')
142
143
  };
143
- DSPageNumber.propTypes = pageNumberProps;
144
- var PageNumberWithSchema = reactDesc.describe(DSPageNumber);
144
+ const PageNumberWithSchema = reactDesc.describe(DSPageNumber);
145
145
  PageNumberWithSchema.propTypes = pageNumberProps;
146
146
  DSPageNumber.defaultProps = {
147
147
  className: '',
148
148
  disabled: false,
149
- onChange: function onChange() {
150
- return null;
151
- },
149
+ onChange: () => null,
152
150
  containerProps: {},
153
151
  value: undefined,
154
152
  currentPage: undefined,
@@ -158,5 +156,4 @@ DSPageNumber.defaultProps = {
158
156
 
159
157
  exports.DSPageNumber = DSPageNumber;
160
158
  exports.PageNumberWithSchema = PageNumberWithSchema;
161
- exports['default'] = DSPageNumber;
162
- //# sourceMappingURL=DSPageNumber.js.map
159
+ exports["default"] = DSPageNumber;
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var _jsx = require('@babel/runtime/helpers/jsx');
4
+ require('react');
5
+ require('@testing-library/jest-dom/extend-expect');
6
+ var react = require('@testing-library/react');
7
+ var DSPageNumber = require('./DSPageNumber.js');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
12
+
13
+ var _PageNumber, _PageNumber2, _PageNumber3;
14
+ test('Increases page number ', async () => {
15
+ const {
16
+ queryByTestId
17
+ } = react.render(_PageNumber || (_PageNumber = /*#__PURE__*/_jsx__default["default"](DSPageNumber.DSPageNumber, {
18
+ totalPages: 3
19
+ })));
20
+ const increaseButton = queryByTestId('page-number__increase');
21
+ const currentPage = queryByTestId('page-number__current-page');
22
+ react.fireEvent.click(increaseButton);
23
+ expect(currentPage).toHaveValue('2');
24
+ });
25
+ test('Decreases page number ', async () => {
26
+ const {
27
+ queryByTestId
28
+ } = react.render(_PageNumber2 || (_PageNumber2 = /*#__PURE__*/_jsx__default["default"](DSPageNumber.DSPageNumber, {
29
+ currentPage: 2,
30
+ totalPages: 3
31
+ })));
32
+ const decreaseButton = queryByTestId('page-number__decrease');
33
+ const currentPage = queryByTestId('page-number__current-page');
34
+ react.fireEvent.click(decreaseButton);
35
+ expect(currentPage).toHaveValue('1');
36
+ });
37
+ test('Increases page number until last page number', async () => {
38
+ const {
39
+ queryByTestId
40
+ } = react.render(_PageNumber3 || (_PageNumber3 = /*#__PURE__*/_jsx__default["default"](DSPageNumber.DSPageNumber, {
41
+ currentPage: 2,
42
+ totalPages: 3
43
+ })));
44
+ const increaseButton = queryByTestId('page-number__increase');
45
+ const currentPage = queryByTestId('page-number__current-page');
46
+ react.fireEvent.click(increaseButton);
47
+ expect(currentPage).toHaveValue('3');
48
+ });
@@ -2,14 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var lengthToSize = function lengthToSize(referenceWidth, value) {
6
- return referenceWidth + referenceWidth / 7 * String(value).length;
7
- };
8
- var cleanPage = function cleanPage(value) {
5
+ require('core-js/modules/es.string.replace.js');
6
+
7
+ const lengthToSize = (referenceWidth, value) => referenceWidth + referenceWidth / 7 * String(value).length;
8
+ const cleanPage = value => {
9
9
  if (!value || value === '' || isNaN(parseInt(value))) return '';
10
10
  return parseInt(String(value || 1).replace(/\D/g, ''), 10);
11
11
  };
12
12
 
13
13
  exports.cleanPage = cleanPage;
14
14
  exports.lengthToSize = lengthToSize;
15
- //# sourceMappingURL=utils.js.map
package/cjs/index.js CHANGED
@@ -3,22 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var DSPageNumber = require('./DSPageNumber.js');
6
- require('@babel/runtime/helpers/extends');
7
- require('@babel/runtime/helpers/slicedToArray');
8
- require('@babel/runtime/helpers/objectWithoutProperties');
9
- require('react');
10
- require('react-desc');
11
- require('@elliemae/ds-classnames');
12
- require('@elliemae/ds-icons/ChevronSmallDown');
13
- require('@elliemae/ds-icons/ChevronSmallUp');
14
- require('@elliemae/ds-button');
15
- require('@elliemae/ds-form/InputGroup');
16
- require('@elliemae/ds-form/Input');
17
- require('./components/utils.js');
18
6
 
19
7
 
20
8
 
21
9
  exports.DSPageNumber = DSPageNumber.DSPageNumber;
22
10
  exports.PageNumberWithSchema = DSPageNumber.PageNumberWithSchema;
23
- exports.default = DSPageNumber.DSPageNumber;
24
- //# sourceMappingURL=index.js.map
11
+ exports["default"] = DSPageNumber.DSPageNumber;
@@ -0,0 +1,7 @@
1
+ {
2
+ "type": "commonjs",
3
+ "sideEffects": [
4
+ "*.css",
5
+ "*.scss"
6
+ ]
7
+ }
@@ -1,7 +1,7 @@
1
- import _extends from '@babel/runtime/helpers/esm/extends';
2
- import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
3
3
  import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
4
- import React, { useRef, useState, useEffect } from 'react';
4
+ import { useRef, useState, useEffect } from 'react';
5
5
  import { PropTypes, describe } from 'react-desc';
6
6
  import { aggregatedClasses, convertPropToCssClassName } from '@elliemae/ds-classnames';
7
7
  import ChevronSmallDown from '@elliemae/ds-icons/ChevronSmallDown';
@@ -10,111 +10,113 @@ import DSButton from '@elliemae/ds-button';
10
10
  import DSInputGroup from '@elliemae/ds-form/InputGroup';
11
11
  import DSInput from '@elliemae/ds-form/Input';
12
12
  import { cleanPage, lengthToSize } from './components/utils.js';
13
+ import { jsx } from 'react/jsx-runtime';
13
14
 
14
- var _excluded = ["className", "disabled", "value", "onChange", "containerProps", "currentPage", "totalPages", "separator"];
15
- var blockName = 'page-number-block';
16
- var PageNumberInputContainer = aggregatedClasses(DSInputGroup)(blockName);
15
+ var _ChevronSmallUp, _ChevronSmallDown;
17
16
 
18
- var DSPageNumber = function DSPageNumber(_ref) {
19
- var className = _ref.className,
20
- disabled = _ref.disabled;
21
- _ref.value;
22
- var onChange = _ref.onChange,
23
- containerProps = _ref.containerProps,
24
- currentPage = _ref.currentPage,
25
- totalPages = _ref.totalPages,
26
- separator = _ref.separator,
27
- otherProps = _objectWithoutProperties(_ref, _excluded);
28
-
29
- var safeTotal = cleanPage(totalPages);
30
- var ref = useRef(null);
17
+ const _excluded = ["className", "disabled", "value", "onChange", "containerProps", "currentPage", "totalPages", "separator"];
31
18
 
32
- var _convertPropToCssClas = convertPropToCssClassName('page-number', className, {
33
- disabled: disabled
34
- }),
35
- cssClassName = _convertPropToCssClas.cssClassName,
36
- classNameElement = _convertPropToCssClas.classNameElement;
19
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
37
20
 
38
- var _useState = useState(cleanPage(currentPage) || 1),
39
- _useState2 = _slicedToArray(_useState, 2),
40
- page = _useState2[0],
41
- setPage = _useState2[1];
21
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
22
+ const blockName = 'page-number-block';
23
+ const PageNumberInputContainer = aggregatedClasses(DSInputGroup)(blockName);
42
24
 
43
- var _useState3 = useState(null),
44
- _useState4 = _slicedToArray(_useState3, 2),
45
- size = _useState4[0],
46
- setSize = _useState4[1];
47
-
48
- useEffect(function () {
49
- var _ref$current$getBound = ref.current.getBoundingClientRect(),
50
- width = _ref$current$getBound.width;
25
+ const DSPageNumber = _ref => {
26
+ let {
27
+ className,
28
+ disabled,
29
+ value,
30
+ onChange,
31
+ containerProps,
32
+ currentPage,
33
+ totalPages,
34
+ separator
35
+ } = _ref,
36
+ otherProps = _objectWithoutProperties(_ref, _excluded);
51
37
 
52
- var calculatedWidth = lengthToSize(width, page);
38
+ const safeTotal = cleanPage(totalPages);
39
+ const ref = useRef(null);
40
+ const {
41
+ cssClassName,
42
+ classNameElement
43
+ } = convertPropToCssClassName('page-number', className, {
44
+ disabled
45
+ });
46
+ const [page, setPage] = useState(cleanPage(currentPage) || 1);
47
+ const [size, setSize] = useState(null);
48
+ useEffect(() => {
49
+ const {
50
+ width
51
+ } = ref.current.getBoundingClientRect();
52
+ const calculatedWidth = lengthToSize(width, page);
53
53
  setSize(calculatedWidth);
54
54
  }, [page, safeTotal]);
55
55
 
56
56
  function handleUpdateInput(e) {
57
- var newValue = cleanPage(e.target.value);
57
+ const newValue = cleanPage(e.target.value);
58
58
  if (newValue > safeTotal || newValue === 0) return;
59
59
  setPage(newValue);
60
60
  onChange(newValue);
61
61
  }
62
62
 
63
63
  function handleIncrease() {
64
- var newValue = page ? parseInt(page, 10) + 1 : 1;
64
+ const newValue = page ? parseInt(page, 10) + 1 : 1;
65
65
  if (newValue > safeTotal) return;
66
66
  setPage(newValue);
67
67
  onChange(newValue);
68
68
  }
69
69
 
70
70
  function handleDecrease() {
71
- var newValue = page ? parseInt(page, 10) - 1 : 1;
71
+ const newValue = page ? parseInt(page, 10) - 1 : 1;
72
72
  if (newValue < 1) return;
73
73
  setPage(newValue);
74
74
  onChange(newValue);
75
75
  }
76
76
 
77
- return /*#__PURE__*/React.createElement("div", _extends({
77
+ return /*#__PURE__*/jsx("div", _objectSpread(_objectSpread(_objectSpread({
78
78
  "data-testid": "ds-page-number",
79
- className: "".concat(cssClassName)
80
- }, containerProps, otherProps), /*#__PURE__*/React.createElement(PageNumberInputContainer, null, /*#__PURE__*/React.createElement("div", {
81
- className: "".concat(classNameElement('pages'))
82
- }, /*#__PURE__*/React.createElement(DSInput, {
83
- className: "".concat(classNameElement('input')),
84
- "data-testid": "page-number__current-page",
85
- onChange: handleUpdateInput,
86
- style: {
87
- width: "".concat(size, "px")
88
- },
89
- value: page
90
- }), /*#__PURE__*/React.createElement("div", {
91
- className: "".concat(classNameElement('separator'))
92
- }, separator), /*#__PURE__*/React.createElement("div", {
93
- className: "".concat(classNameElement('total')),
94
- "data-testid": "page-number__total-pages"
95
- }, totalPages), /*#__PURE__*/React.createElement("div", {
96
- ref: ref,
97
- className: "".concat(classNameElement('ref'))
98
- })), /*#__PURE__*/React.createElement("div", {
99
- className: "".concat(classNameElement('limiter'))
100
- }), /*#__PURE__*/React.createElement(DSButton, {
101
- "aria-label": "dropdown-indicator",
102
- buttonType: "text",
103
- className: "dropdown-indicator",
104
- "data-testid": "page-number__increase",
105
- icon: /*#__PURE__*/React.createElement(ChevronSmallUp, null),
106
- onClick: handleIncrease
107
- }), /*#__PURE__*/React.createElement(DSButton, {
108
- "aria-label": "dropdown-indicator",
109
- buttonType: "text",
110
- className: "dropdown-indicator",
111
- "data-testid": "page-number__decrease",
112
- icon: /*#__PURE__*/React.createElement(ChevronSmallDown, null),
113
- onClick: handleDecrease
114
- })));
79
+ className: `${cssClassName}`
80
+ }, containerProps), otherProps), {}, {
81
+ children: /*#__PURE__*/_jsx(PageNumberInputContainer, {}, void 0, /*#__PURE__*/_jsx("div", {
82
+ className: `${classNameElement('pages')}`
83
+ }, void 0, /*#__PURE__*/_jsx(DSInput, {
84
+ className: `${classNameElement('input')}`,
85
+ "data-testid": "page-number__current-page",
86
+ onChange: handleUpdateInput,
87
+ style: {
88
+ width: `${size}px`
89
+ },
90
+ value: page
91
+ }), /*#__PURE__*/_jsx("div", {
92
+ className: `${classNameElement('separator')}`
93
+ }, void 0, separator), /*#__PURE__*/_jsx("div", {
94
+ className: `${classNameElement('total')}`,
95
+ "data-testid": "page-number__total-pages"
96
+ }, void 0, totalPages), /*#__PURE__*/jsx("div", {
97
+ ref: ref,
98
+ className: `${classNameElement('ref')}`
99
+ })), /*#__PURE__*/_jsx("div", {
100
+ className: `${classNameElement('limiter')}`
101
+ }), /*#__PURE__*/_jsx(DSButton, {
102
+ "aria-label": "dropdown-indicator",
103
+ buttonType: "text",
104
+ className: "dropdown-indicator",
105
+ "data-testid": "page-number__increase",
106
+ icon: _ChevronSmallUp || (_ChevronSmallUp = /*#__PURE__*/_jsx(ChevronSmallUp, {})),
107
+ onClick: handleIncrease
108
+ }), /*#__PURE__*/_jsx(DSButton, {
109
+ "aria-label": "dropdown-indicator",
110
+ buttonType: "text",
111
+ className: "dropdown-indicator",
112
+ "data-testid": "page-number__decrease",
113
+ icon: _ChevronSmallDown || (_ChevronSmallDown = /*#__PURE__*/_jsx(ChevronSmallDown, {})),
114
+ onClick: handleDecrease
115
+ }))
116
+ }));
115
117
  };
116
118
 
117
- var pageNumberProps = {
119
+ const pageNumberProps = {
118
120
  className: PropTypes.string.description('html class attribute'),
119
121
  containerProps: PropTypes.object.description('Set of Properties attached to the main container'),
120
122
  disabled: PropTypes.bool.description('Whether the component is disabled or not').defaultValue(false),
@@ -124,15 +126,12 @@ var pageNumberProps = {
124
126
  totalPages: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).description('Amount of pages').defaultValue(1),
125
127
  separator: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).description('Separator between current page and total pages').defaultValue('/')
126
128
  };
127
- DSPageNumber.propTypes = pageNumberProps;
128
- var PageNumberWithSchema = describe(DSPageNumber);
129
+ const PageNumberWithSchema = describe(DSPageNumber);
129
130
  PageNumberWithSchema.propTypes = pageNumberProps;
130
131
  DSPageNumber.defaultProps = {
131
132
  className: '',
132
133
  disabled: false,
133
- onChange: function onChange() {
134
- return null;
135
- },
134
+ onChange: () => null,
136
135
  containerProps: {},
137
136
  value: undefined,
138
137
  currentPage: undefined,
@@ -141,4 +140,3 @@ DSPageNumber.defaultProps = {
141
140
  };
142
141
 
143
142
  export { DSPageNumber, PageNumberWithSchema, DSPageNumber as default };
144
- //# sourceMappingURL=DSPageNumber.js.map
@@ -0,0 +1,42 @@
1
+ import _jsx from '@babel/runtime/helpers/esm/jsx';
2
+ import 'react';
3
+ import '@testing-library/jest-dom/extend-expect';
4
+ import { render, fireEvent } from '@testing-library/react';
5
+ import { DSPageNumber } from './DSPageNumber.js';
6
+
7
+ var _PageNumber, _PageNumber2, _PageNumber3;
8
+ test('Increases page number ', async () => {
9
+ const {
10
+ queryByTestId
11
+ } = render(_PageNumber || (_PageNumber = /*#__PURE__*/_jsx(DSPageNumber, {
12
+ totalPages: 3
13
+ })));
14
+ const increaseButton = queryByTestId('page-number__increase');
15
+ const currentPage = queryByTestId('page-number__current-page');
16
+ fireEvent.click(increaseButton);
17
+ expect(currentPage).toHaveValue('2');
18
+ });
19
+ test('Decreases page number ', async () => {
20
+ const {
21
+ queryByTestId
22
+ } = render(_PageNumber2 || (_PageNumber2 = /*#__PURE__*/_jsx(DSPageNumber, {
23
+ currentPage: 2,
24
+ totalPages: 3
25
+ })));
26
+ const decreaseButton = queryByTestId('page-number__decrease');
27
+ const currentPage = queryByTestId('page-number__current-page');
28
+ fireEvent.click(decreaseButton);
29
+ expect(currentPage).toHaveValue('1');
30
+ });
31
+ test('Increases page number until last page number', async () => {
32
+ const {
33
+ queryByTestId
34
+ } = render(_PageNumber3 || (_PageNumber3 = /*#__PURE__*/_jsx(DSPageNumber, {
35
+ currentPage: 2,
36
+ totalPages: 3
37
+ })));
38
+ const increaseButton = queryByTestId('page-number__increase');
39
+ const currentPage = queryByTestId('page-number__current-page');
40
+ fireEvent.click(increaseButton);
41
+ expect(currentPage).toHaveValue('3');
42
+ });
@@ -1,10 +1,9 @@
1
- var lengthToSize = function lengthToSize(referenceWidth, value) {
2
- return referenceWidth + referenceWidth / 7 * String(value).length;
3
- };
4
- var cleanPage = function cleanPage(value) {
1
+ import 'core-js/modules/es.string.replace.js';
2
+
3
+ const lengthToSize = (referenceWidth, value) => referenceWidth + referenceWidth / 7 * String(value).length;
4
+ const cleanPage = value => {
5
5
  if (!value || value === '' || isNaN(parseInt(value))) return '';
6
6
  return parseInt(String(value || 1).replace(/\D/g, ''), 10);
7
7
  };
8
8
 
9
9
  export { cleanPage, lengthToSize };
10
- //# sourceMappingURL=utils.js.map
package/esm/index.js CHANGED
@@ -1,14 +1 @@
1
1
  export { DSPageNumber, PageNumberWithSchema, DSPageNumber as default } from './DSPageNumber.js';
2
- import '@babel/runtime/helpers/esm/extends';
3
- import '@babel/runtime/helpers/esm/slicedToArray';
4
- import '@babel/runtime/helpers/esm/objectWithoutProperties';
5
- import 'react';
6
- import 'react-desc';
7
- import '@elliemae/ds-classnames';
8
- import '@elliemae/ds-icons/ChevronSmallDown';
9
- import '@elliemae/ds-icons/ChevronSmallUp';
10
- import '@elliemae/ds-button';
11
- import '@elliemae/ds-form/InputGroup';
12
- import '@elliemae/ds-form/Input';
13
- import './components/utils.js';
14
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "type": "module",
3
+ "sideEffects": [
4
+ "*.css",
5
+ "*.scss"
6
+ ]
7
+ }
package/package.json CHANGED
@@ -1,14 +1,38 @@
1
1
  {
2
2
  "name": "@elliemae/ds-page-number",
3
- "version": "1.55.0-next.7",
3
+ "version": "2.0.0-alpha.10",
4
4
  "license": "MIT",
5
- "description": "Ellie Mae - Dim Sum - Page Number",
6
- "module": "esm/index.js",
7
- "main": "cjs/index.js",
5
+ "description": "ICE MT - Dimsum - Page Number",
6
+ "module": "./esm/index.js",
7
+ "main": "./cjs/index.js",
8
+ "types": "./types/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./esm/index.js",
12
+ "require": "./cjs/index.js"
13
+ },
14
+ "./DSPageNumber": {
15
+ "import": "./esm/DSPageNumber.js",
16
+ "require": "./cjs/DSPageNumber.js"
17
+ },
18
+ "./components/utils": {
19
+ "import": "./esm/components/utils.js",
20
+ "require": "./cjs/components/utils.js"
21
+ }
22
+ },
8
23
  "sideEffects": [
9
24
  "*.css",
10
25
  "*.scss"
11
26
  ],
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://git.elliemae.io/platform-ui/dimsum.git"
30
+ },
31
+ "engines": {
32
+ "npm": ">=7",
33
+ "node": ">=14"
34
+ },
35
+ "author": "ICE MT",
12
36
  "scripts": {
13
37
  "dev": "cross-env NODE_ENV=development && node ../../scripts/build/build.js -w",
14
38
  "prebuild": "exit 0",
@@ -16,23 +40,24 @@
16
40
  "build": "node ../../scripts/build/build.js"
17
41
  },
18
42
  "dependencies": {
19
- "@elliemae/ds-button": "1.55.0-next.7",
20
- "@elliemae/ds-classnames": "1.55.0-next.7",
21
- "@elliemae/ds-form": "1.55.0-next.7",
22
- "@elliemae/ds-icons": "1.55.0-next.7",
23
- "react-desc": "^4.1.2"
43
+ "@elliemae/ds-button": "2.0.0-alpha.10",
44
+ "@elliemae/ds-classnames": "2.0.0-alpha.10",
45
+ "@elliemae/ds-form": "2.0.0-alpha.10",
46
+ "@elliemae/ds-icons": "2.0.0-alpha.10",
47
+ "react-desc": "~4.1.3"
24
48
  },
25
49
  "devDependencies": {
26
- "styled-components": "~5.3.0"
50
+ "styled-components": "~5.3.1"
27
51
  },
28
52
  "peerDependencies": {
29
- "lodash": "^4.17.20",
30
- "react": "^17.0.1",
31
- "react-dom": "^17.0.1",
32
- "styled-components": "^5.3.0"
53
+ "lodash": "^4.17.21",
54
+ "react": "^17.0.2",
55
+ "react-dom": "^17.0.2",
56
+ "styled-components": "^5.3.1"
33
57
  },
34
58
  "publishConfig": {
35
59
  "access": "public",
36
- "directory": "dist"
60
+ "directory": "dist",
61
+ "generateSubmodules": true
37
62
  }
38
63
  }
@@ -0,0 +1,37 @@
1
+ /// <reference types="react" />
2
+ declare const DSPageNumber: {
3
+ ({ className, disabled, value, onChange, containerProps, currentPage, totalPages, separator, ...otherProps }: {
4
+ [x: string]: any;
5
+ className: any;
6
+ disabled: any;
7
+ value: any;
8
+ onChange: any;
9
+ containerProps: any;
10
+ currentPage: any;
11
+ totalPages: any;
12
+ separator: any;
13
+ }): JSX.Element;
14
+ propTypes: {
15
+ className: any;
16
+ containerProps: any;
17
+ disabled: any;
18
+ value: any;
19
+ onChange: any;
20
+ currentPage: any;
21
+ totalPages: any;
22
+ separator: any;
23
+ };
24
+ defaultProps: {
25
+ className: string;
26
+ disabled: boolean;
27
+ onChange: () => null;
28
+ containerProps: {};
29
+ value: undefined;
30
+ currentPage: undefined;
31
+ totalPages: number;
32
+ separator: string;
33
+ };
34
+ };
35
+ declare const PageNumberWithSchema: any;
36
+ export { DSPageNumber, PageNumberWithSchema };
37
+ export default DSPageNumber;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare const lengthToSize: (referenceWidth: any, value: any) => any;
2
+ export declare const cleanPage: (value: any) => number | "";
@@ -0,0 +1,2 @@
1
+ export * from './DSPageNumber';
2
+ export { default } from './DSPageNumber';
@@ -1,10 +0,0 @@
1
- {
2
- "name": "@elliemae/ds-page-number/DSPageNumber",
3
- "sideEffects": [
4
- "*.css",
5
- "*.scss"
6
- ],
7
- "private": true,
8
- "main": "../cjs/DSPageNumber.js",
9
- "module": "../esm/DSPageNumber.js"
10
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"DSPageNumber.js","sources":["../../src/DSPageNumber.tsx"],"sourcesContent":["/* eslint-disable max-lines */\nimport React, { useState, useRef, useEffect } from 'react';\nimport { describe, PropTypes } from 'react-desc';\nimport {\n aggregatedClasses,\n convertPropToCssClassName,\n} from '@elliemae/ds-classnames';\nimport ChevronSmallDown from '@elliemae/ds-icons/ChevronSmallDown';\nimport ChevronSmallUp from '@elliemae/ds-icons/ChevronSmallUp';\nimport DSButton from '@elliemae/ds-button';\nimport DSInputGroup from '@elliemae/ds-form/InputGroup';\nimport DSInput from '@elliemae/ds-form/Input';\nimport { lengthToSize, cleanPage } from './components/utils';\n\nconst blockName = 'page-number-block';\nconst PageNumberInputContainer = aggregatedClasses(DSInputGroup)(blockName);\n\nconst DSPageNumber = ({\n className,\n disabled,\n value,\n onChange,\n containerProps,\n currentPage,\n totalPages,\n separator,\n ...otherProps\n}) => {\n const safeTotal = cleanPage(totalPages);\n const ref = useRef(null);\n const { cssClassName, classNameElement } = convertPropToCssClassName(\n 'page-number',\n className,\n {\n disabled,\n },\n );\n const [page, setPage] = useState(cleanPage(currentPage) || 1);\n const [size, setSize] = useState(null);\n useEffect(() => {\n const { width } = ref.current.getBoundingClientRect();\n const calculatedWidth = lengthToSize(width, page);\n setSize(calculatedWidth);\n }, [page, safeTotal]);\n\n function handleUpdateInput(e) {\n const newValue = cleanPage(e.target.value);\n if (newValue > safeTotal || newValue === 0) return;\n setPage(newValue);\n onChange(newValue);\n }\n function handleIncrease() {\n const newValue = page ? parseInt(page, 10) + 1 : 1;\n if (newValue > safeTotal) return;\n setPage(newValue);\n onChange(newValue);\n }\n function handleDecrease() {\n const newValue = page ? parseInt(page, 10) - 1 : 1;\n if (newValue < 1) return;\n setPage(newValue);\n onChange(newValue);\n }\n\n return (\n <div\n data-testid=\"ds-page-number\"\n className={`${cssClassName}`}\n {...containerProps}\n {...otherProps}\n >\n <PageNumberInputContainer>\n <div className={`${classNameElement('pages')}`}>\n <DSInput\n className={`${classNameElement('input')}`}\n data-testid=\"page-number__current-page\"\n onChange={handleUpdateInput}\n style={{\n width: `${size}px`,\n }}\n value={page}\n />\n <div className={`${classNameElement('separator')}`}>{separator}</div>\n <div\n className={`${classNameElement('total')}`}\n data-testid=\"page-number__total-pages\"\n >\n {totalPages}\n </div>\n <div ref={ref} className={`${classNameElement('ref')}`} />\n </div>\n <div className={`${classNameElement('limiter')}`} />\n <DSButton\n aria-label=\"dropdown-indicator\"\n buttonType=\"text\"\n className=\"dropdown-indicator\"\n data-testid=\"page-number__increase\"\n icon={<ChevronSmallUp />}\n onClick={handleIncrease}\n />\n <DSButton\n aria-label=\"dropdown-indicator\"\n buttonType=\"text\"\n className=\"dropdown-indicator\"\n data-testid=\"page-number__decrease\"\n icon={<ChevronSmallDown />}\n onClick={handleDecrease}\n />\n </PageNumberInputContainer>\n </div>\n );\n};\n\nconst pageNumberProps = {\n className: PropTypes.string.description('html class attribute'),\n containerProps: PropTypes.object.description(\n 'Set of Properties attached to the main container',\n ),\n disabled: PropTypes.bool\n .description('Whether the component is disabled or not')\n .defaultValue(false),\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.object,\n ]).description('page number value'),\n onChange: PropTypes.func.description(\n 'function executed when the page number changes',\n ),\n currentPage: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).description('Value of the current page'),\n totalPages: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .description('Amount of pages')\n .defaultValue(1),\n separator: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .description('Separator between current page and total pages')\n .defaultValue('/'),\n};\n\nDSPageNumber.propTypes = pageNumberProps;\n\nconst PageNumberWithSchema = describe(DSPageNumber);\nPageNumberWithSchema.propTypes = pageNumberProps;\n\nDSPageNumber.defaultProps = {\n className: '',\n disabled: false,\n onChange: () => null,\n containerProps: {},\n value: undefined,\n currentPage: undefined,\n totalPages: 1,\n separator: '/',\n};\n\nexport { DSPageNumber, PageNumberWithSchema };\nexport default DSPageNumber;\n"],"names":["blockName","PageNumberInputContainer","aggregatedClasses","DSInputGroup","DSPageNumber","className","disabled","value","onChange","containerProps","currentPage","totalPages","separator","otherProps","safeTotal","cleanPage","ref","useRef","convertPropToCssClassName","cssClassName","classNameElement","useState","page","setPage","size","setSize","useEffect","current","getBoundingClientRect","width","calculatedWidth","lengthToSize","handleUpdateInput","e","newValue","target","handleIncrease","parseInt","handleDecrease","React","DSInput","DSButton","ChevronSmallUp","ChevronSmallDown","pageNumberProps","PropTypes","string","description","object","bool","defaultValue","oneOfType","number","func","propTypes","PageNumberWithSchema","describe","defaultProps","undefined"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/utils.tsx"],"sourcesContent":["export const lengthToSize = (referenceWidth, value) =>\n referenceWidth + (referenceWidth / 7) * String(value).length;\n\nexport const cleanPage = value => {\n if (!value || value === '' || isNaN(parseInt(value))) return '';\n return parseInt(String(value || 1).replace(/\\D/g, ''), 10);\n};\n"],"names":["lengthToSize","referenceWidth","value","String","length","cleanPage","isNaN","parseInt","replace"],"mappings":";;;;IAAaA,YAAY,GAAG,SAAfA,YAAe,CAACC,cAAD,EAAiBC,KAAjB;AAAA,SAC1BD,cAAc,GAAIA,cAAc,GAAG,CAAlB,GAAuBE,MAAM,CAACD,KAAD,CAAN,CAAcE,MAD5B;AAAA;IAGfC,SAAS,GAAG,SAAZA,SAAY,CAAAH,KAAK,EAAI;AAChC,MAAI,CAACA,KAAD,IAAUA,KAAK,KAAK,EAApB,IAA0BI,KAAK,CAACC,QAAQ,CAACL,KAAD,CAAT,CAAnC,EAAsD,OAAO,EAAP;AACtD,SAAOK,QAAQ,CAACJ,MAAM,CAACD,KAAK,IAAI,CAAV,CAAN,CAAmBM,OAAnB,CAA2B,KAA3B,EAAkC,EAAlC,CAAD,EAAwC,EAAxC,CAAf;AACD;;;;;"}
package/cjs/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,10 +0,0 @@
1
- {
2
- "name": "@elliemae/ds-page-number/components/utils",
3
- "sideEffects": [
4
- "*.css",
5
- "*.scss"
6
- ],
7
- "private": true,
8
- "main": "../../cjs/components/utils.js",
9
- "module": "../../esm/components/utils.js"
10
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"DSPageNumber.js","sources":["../../src/DSPageNumber.tsx"],"sourcesContent":["/* eslint-disable max-lines */\nimport React, { useState, useRef, useEffect } from 'react';\nimport { describe, PropTypes } from 'react-desc';\nimport {\n aggregatedClasses,\n convertPropToCssClassName,\n} from '@elliemae/ds-classnames';\nimport ChevronSmallDown from '@elliemae/ds-icons/ChevronSmallDown';\nimport ChevronSmallUp from '@elliemae/ds-icons/ChevronSmallUp';\nimport DSButton from '@elliemae/ds-button';\nimport DSInputGroup from '@elliemae/ds-form/InputGroup';\nimport DSInput from '@elliemae/ds-form/Input';\nimport { lengthToSize, cleanPage } from './components/utils';\n\nconst blockName = 'page-number-block';\nconst PageNumberInputContainer = aggregatedClasses(DSInputGroup)(blockName);\n\nconst DSPageNumber = ({\n className,\n disabled,\n value,\n onChange,\n containerProps,\n currentPage,\n totalPages,\n separator,\n ...otherProps\n}) => {\n const safeTotal = cleanPage(totalPages);\n const ref = useRef(null);\n const { cssClassName, classNameElement } = convertPropToCssClassName(\n 'page-number',\n className,\n {\n disabled,\n },\n );\n const [page, setPage] = useState(cleanPage(currentPage) || 1);\n const [size, setSize] = useState(null);\n useEffect(() => {\n const { width } = ref.current.getBoundingClientRect();\n const calculatedWidth = lengthToSize(width, page);\n setSize(calculatedWidth);\n }, [page, safeTotal]);\n\n function handleUpdateInput(e) {\n const newValue = cleanPage(e.target.value);\n if (newValue > safeTotal || newValue === 0) return;\n setPage(newValue);\n onChange(newValue);\n }\n function handleIncrease() {\n const newValue = page ? parseInt(page, 10) + 1 : 1;\n if (newValue > safeTotal) return;\n setPage(newValue);\n onChange(newValue);\n }\n function handleDecrease() {\n const newValue = page ? parseInt(page, 10) - 1 : 1;\n if (newValue < 1) return;\n setPage(newValue);\n onChange(newValue);\n }\n\n return (\n <div\n data-testid=\"ds-page-number\"\n className={`${cssClassName}`}\n {...containerProps}\n {...otherProps}\n >\n <PageNumberInputContainer>\n <div className={`${classNameElement('pages')}`}>\n <DSInput\n className={`${classNameElement('input')}`}\n data-testid=\"page-number__current-page\"\n onChange={handleUpdateInput}\n style={{\n width: `${size}px`,\n }}\n value={page}\n />\n <div className={`${classNameElement('separator')}`}>{separator}</div>\n <div\n className={`${classNameElement('total')}`}\n data-testid=\"page-number__total-pages\"\n >\n {totalPages}\n </div>\n <div ref={ref} className={`${classNameElement('ref')}`} />\n </div>\n <div className={`${classNameElement('limiter')}`} />\n <DSButton\n aria-label=\"dropdown-indicator\"\n buttonType=\"text\"\n className=\"dropdown-indicator\"\n data-testid=\"page-number__increase\"\n icon={<ChevronSmallUp />}\n onClick={handleIncrease}\n />\n <DSButton\n aria-label=\"dropdown-indicator\"\n buttonType=\"text\"\n className=\"dropdown-indicator\"\n data-testid=\"page-number__decrease\"\n icon={<ChevronSmallDown />}\n onClick={handleDecrease}\n />\n </PageNumberInputContainer>\n </div>\n );\n};\n\nconst pageNumberProps = {\n className: PropTypes.string.description('html class attribute'),\n containerProps: PropTypes.object.description(\n 'Set of Properties attached to the main container',\n ),\n disabled: PropTypes.bool\n .description('Whether the component is disabled or not')\n .defaultValue(false),\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.object,\n ]).description('page number value'),\n onChange: PropTypes.func.description(\n 'function executed when the page number changes',\n ),\n currentPage: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).description('Value of the current page'),\n totalPages: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .description('Amount of pages')\n .defaultValue(1),\n separator: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .description('Separator between current page and total pages')\n .defaultValue('/'),\n};\n\nDSPageNumber.propTypes = pageNumberProps;\n\nconst PageNumberWithSchema = describe(DSPageNumber);\nPageNumberWithSchema.propTypes = pageNumberProps;\n\nDSPageNumber.defaultProps = {\n className: '',\n disabled: false,\n onChange: () => null,\n containerProps: {},\n value: undefined,\n currentPage: undefined,\n totalPages: 1,\n separator: '/',\n};\n\nexport { DSPageNumber, PageNumberWithSchema };\nexport default DSPageNumber;\n"],"names":["blockName","PageNumberInputContainer","aggregatedClasses","DSInputGroup","DSPageNumber","className","disabled","value","onChange","containerProps","currentPage","totalPages","separator","otherProps","safeTotal","cleanPage","ref","useRef","convertPropToCssClassName","cssClassName","classNameElement","useState","page","setPage","size","setSize","useEffect","current","getBoundingClientRect","width","calculatedWidth","lengthToSize","handleUpdateInput","e","newValue","target","handleIncrease","parseInt","handleDecrease","pageNumberProps","PropTypes","string","description","object","bool","defaultValue","oneOfType","number","func","propTypes","PageNumberWithSchema","describe","defaultProps","undefined"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/components/utils.tsx"],"sourcesContent":["export const lengthToSize = (referenceWidth, value) =>\n referenceWidth + (referenceWidth / 7) * String(value).length;\n\nexport const cleanPage = value => {\n if (!value || value === '' || isNaN(parseInt(value))) return '';\n return parseInt(String(value || 1).replace(/\\D/g, ''), 10);\n};\n"],"names":["lengthToSize","referenceWidth","value","String","length","cleanPage","isNaN","parseInt","replace"],"mappings":"IAAaA,YAAY,GAAG,SAAfA,YAAe,CAACC,cAAD,EAAiBC,KAAjB;AAAA,SAC1BD,cAAc,GAAIA,cAAc,GAAG,CAAlB,GAAuBE,MAAM,CAACD,KAAD,CAAN,CAAcE,MAD5B;AAAA;IAGfC,SAAS,GAAG,SAAZA,SAAY,CAAAH,KAAK,EAAI;AAChC,MAAI,CAACA,KAAD,IAAUA,KAAK,KAAK,EAApB,IAA0BI,KAAK,CAACC,QAAQ,CAACL,KAAD,CAAT,CAAnC,EAAsD,OAAO,EAAP;AACtD,SAAOK,QAAQ,CAACJ,MAAM,CAACD,KAAK,IAAI,CAAV,CAAN,CAAmBM,OAAnB,CAA2B,KAA3B,EAAkC,EAAlC,CAAD,EAAwC,EAAxC,CAAf;AACD;;;;"}
package/esm/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}