@dxc-technology/halstack-react 0.0.0-3a8852f → 0.0.0-3e57f0d

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 (126) hide show
  1. package/{dist/README.md → README.md} +1 -1
  2. package/babel.config.js +6 -2
  3. package/dist/BackgroundColorContext.js +46 -0
  4. package/dist/ThemeContext.js +235 -2
  5. package/dist/accordion/Accordion.js +170 -81
  6. package/dist/accordion-group/AccordionGroup.js +186 -0
  7. package/dist/alert/Alert.js +181 -80
  8. package/dist/alert/index.d.ts +51 -0
  9. package/dist/badge/Badge.js +63 -0
  10. package/dist/box/Box.js +39 -19
  11. package/dist/button/Button.js +91 -40
  12. package/dist/card/Card.js +64 -56
  13. package/dist/checkbox/Checkbox.js +118 -39
  14. package/dist/chip/Chip.js +135 -40
  15. package/dist/common/RequiredComponent.js +5 -15
  16. package/dist/common/variables.js +1377 -10
  17. package/dist/date/Date.js +110 -73
  18. package/dist/dialog/Dialog.js +87 -33
  19. package/dist/dropdown/Dropdown.js +226 -94
  20. package/dist/file-input/FileInput.js +644 -0
  21. package/dist/file-input/FileItem.js +280 -0
  22. package/dist/file-input/index.d.ts +81 -0
  23. package/dist/footer/Footer.js +90 -36
  24. package/dist/footer/dxc_logo.svg +15 -0
  25. package/dist/footer/readme.md +1 -1
  26. package/dist/header/Header.js +132 -72
  27. package/dist/header/dxc_logo_black.svg +8 -0
  28. package/dist/header/readme.md +1 -1
  29. package/dist/heading/Heading.js +81 -22
  30. package/dist/input-text/InputText.js +298 -101
  31. package/dist/layout/ApplicationLayout.js +331 -0
  32. package/dist/layout/facebook.svg +45 -0
  33. package/dist/layout/linkedin.svg +50 -0
  34. package/dist/layout/twitter.svg +53 -0
  35. package/dist/link/Link.js +142 -34
  36. package/dist/main.d.ts +7 -0
  37. package/dist/main.js +97 -1
  38. package/dist/new-date/NewDate.js +400 -0
  39. package/dist/new-date/index.d.ts +95 -0
  40. package/dist/new-input-text/NewInputText.js +967 -0
  41. package/dist/new-input-text/index.d.ts +135 -0
  42. package/dist/new-textarea/NewTextarea.js +365 -0
  43. package/dist/new-textarea/index.d.ts +117 -0
  44. package/dist/number/Number.js +136 -0
  45. package/dist/number/NumberContext.js +16 -0
  46. package/dist/number/index.d.ts +113 -0
  47. package/dist/paginator/Paginator.js +160 -49
  48. package/dist/password/Password.js +200 -0
  49. package/dist/password/index.d.ts +94 -0
  50. package/dist/password/styles.css +3 -0
  51. package/dist/progress-bar/ProgressBar.js +97 -44
  52. package/dist/radio/Radio.js +39 -34
  53. package/dist/resultsetTable/ResultsetTable.js +94 -70
  54. package/dist/select/Select.js +253 -129
  55. package/dist/sidenav/Sidenav.js +87 -125
  56. package/dist/slider/Slider.js +125 -74
  57. package/dist/spinner/Spinner.js +249 -64
  58. package/dist/switch/Switch.js +54 -51
  59. package/dist/table/Table.js +63 -15
  60. package/dist/tabs/Tabs.js +210 -50
  61. package/dist/tabs-for-sections/TabsForSections.js +1 -16
  62. package/dist/tag/Tag.js +100 -35
  63. package/dist/textarea/Textarea.js +81 -43
  64. package/dist/toggle/Toggle.js +16 -19
  65. package/dist/toggle-group/ToggleGroup.js +223 -0
  66. package/dist/upload/Upload.js +13 -8
  67. package/dist/upload/buttons-upload/ButtonsUpload.js +34 -20
  68. package/dist/upload/dragAndDropArea/DragAndDropArea.js +78 -31
  69. package/dist/upload/file-upload/FileToUpload.js +50 -24
  70. package/dist/upload/files-upload/FilesToUpload.js +16 -16
  71. package/dist/upload/transaction/Transaction.js +44 -24
  72. package/dist/upload/transactions/Transactions.js +38 -20
  73. package/dist/useTheme.js +22 -0
  74. package/dist/wizard/Wizard.js +156 -55
  75. package/dist/wizard/invalid_icon.svg +4 -5
  76. package/dist/wizard/valid_icon.svg +4 -5
  77. package/package.json +17 -6
  78. package/test/AccordionGroup.test.js +125 -0
  79. package/test/Date.test.js +13 -13
  80. package/test/Dropdown.test.js +19 -4
  81. package/test/FileInput.test.js +201 -0
  82. package/test/InputText.test.js +30 -26
  83. package/test/Link.test.js +25 -7
  84. package/test/NewDate.test.js +232 -0
  85. package/test/NewInputText.test.js +734 -0
  86. package/test/NewTextarea.test.js +195 -0
  87. package/test/Number.test.js +257 -0
  88. package/test/Paginator.test.js +72 -60
  89. package/test/Password.test.js +83 -0
  90. package/test/ResultsetTable.test.js +66 -19
  91. package/test/Select.test.js +55 -34
  92. package/test/Sidenav.test.js +22 -64
  93. package/test/Slider.test.js +17 -0
  94. package/test/Spinner.test.js +5 -0
  95. package/test/Tabs.test.js +21 -0
  96. package/test/ToggleGroup.test.js +81 -0
  97. package/dist/accordion/Accordion.stories.js +0 -207
  98. package/dist/accordion/readme.md +0 -96
  99. package/dist/alert/Alert.stories.js +0 -158
  100. package/dist/alert/close.svg +0 -4
  101. package/dist/alert/error.svg +0 -4
  102. package/dist/alert/info.svg +0 -4
  103. package/dist/alert/readme.md +0 -43
  104. package/dist/alert/success.svg +0 -4
  105. package/dist/alert/warning.svg +0 -4
  106. package/dist/button/Button.stories.js +0 -224
  107. package/dist/button/readme.md +0 -93
  108. package/dist/common/services/example-service.js +0 -10
  109. package/dist/common/services/example-service.test.js +0 -12
  110. package/dist/date/calendar.svg +0 -1
  111. package/dist/date/calendar_dark.svg +0 -1
  112. package/dist/dialog/Dialog.stories.js +0 -217
  113. package/dist/dialog/readme.md +0 -32
  114. package/dist/dropdown/Dropdown.stories.js +0 -249
  115. package/dist/dropdown/baseline-arrow_drop_down.svg +0 -1
  116. package/dist/dropdown/baseline-arrow_drop_down_wh.svg +0 -4
  117. package/dist/dropdown/baseline-arrow_drop_up.svg +0 -1
  118. package/dist/dropdown/baseline-arrow_drop_up_wh.svg +0 -4
  119. package/dist/dropdown/readme.md +0 -69
  120. package/dist/footer/dxc_logo_wht.png +0 -0
  121. package/dist/header/dxc_logo_black.png +0 -0
  122. package/dist/header/dxc_logo_white.png +0 -0
  123. package/dist/select/Select.stories.js +0 -235
  124. package/dist/select/readme.md +0 -72
  125. package/dist/sidenav/arrow_icon.svg +0 -3
  126. package/test/Toggle.test.js +0 -43
@@ -27,16 +27,16 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
28
28
  var _RequiredComponent = _interopRequireDefault(require("../common/RequiredComponent"));
29
29
 
30
- require("../common/OpenSans.css");
31
-
32
30
  var _variables = require("../common/variables.js");
33
31
 
34
32
  var _utils = require("../common/utils.js");
35
33
 
36
- var _ThemeContext = _interopRequireDefault(require("../ThemeContext.js"));
34
+ var _useTheme = _interopRequireDefault(require("../useTheme.js"));
35
+
36
+ var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext.js"));
37
37
 
38
38
  function _templateObject2() {
39
- var data = (0, _taggedTemplateLiteral2["default"])(["\n font-family: \"Open Sans\", sans-serif;\n color: ", ";\n cursor: ", ";\n"]);
39
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n font-style: ", ";\n color: ", ";\n cursor: ", ";\n"]);
40
40
 
41
41
  _templateObject2 = function _templateObject2() {
42
42
  return data;
@@ -46,7 +46,7 @@ function _templateObject2() {
46
46
  }
47
47
 
48
48
  function _templateObject() {
49
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n\n display: inline-flex;\n align-items: center;\n max-height: 42px;\n position: relative;\n flex-direction: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n .MuiButtonBase-root {\n padding: 0px;\n margin: 0px 5px;\n width: 40px;\n height: 40px;\n &.Mui-disabled {\n color: ", ";\n }\n .MuiIconButton-label {\n .MuiSvgIcon-root {\n height: 24px;\n width: 24px;\n }\n color: ", ";\n > div > :nth-child(2) path {\n color: ", ";\n }\n }\n &.Mui-disabled {\n .MuiIconButton-label {\n color: ", ";\n > div > :nth-child(2) path {\n color: ", ";\n }\n }\n }\n &.Mui-focusVisible {\n background-color: ", ";\n opacity: 0.1;\n }\n :hover {\n background-color: transparent;\n }\n .MuiTouchRipple-ripple {\n height: 40px !important;\n width: 40px !important;\n top: 0px !important;\n left: 0px !important;\n .MuiTouchRipple-child {\n background-color: ", ";\n }\n }\n }\n .MuiRadio-colorSecondary.Mui-checked {\n color: ", ";\n :hover {\n background-color: transparent;\n }\n }\n"]);
49
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n\n display: inline-flex;\n align-items: center;\n max-height: 42px;\n position: relative;\n flex-direction: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n .MuiButtonBase-root {\n width: auto;\n height: auto;\n padding: 10px;\n margin: 2px;\n ", ": ", ";\n padding-left: ", ";\n padding-right: ", ";\n margin-left: ", ";\n margin-right: ", ";\n .MuiIconButton-label {\n .MuiSvgIcon-root {\n height: ", ";\n width: ", ";\n }\n color: ", ";\n\n > div > :nth-child(2) path {\n color: ", ";\n }\n }\n\n &.Mui-focusVisible {\n background-color: transparent;\n .MuiSvgIcon-root {\n outline: ", "\n auto 1px;\n }\n }\n :hover {\n background-color: transparent;\n }\n .MuiTouchRipple-ripple {\n height: 40px !important;\n width: 40px !important;\n top: 0px !important;\n left: 0px !important;\n }\n }\n .MuiRadio-colorSecondary.Mui-checked {\n color: ", ";\n :hover {\n background-color: transparent;\n }\n }\n"]);
50
50
 
51
51
  _templateObject = function _templateObject() {
52
52
  return data;
@@ -62,13 +62,9 @@ var DxcRadio = function DxcRadio(_ref) {
62
62
  label = _ref.label,
63
63
  _ref$labelPosition = _ref.labelPosition,
64
64
  labelPosition = _ref$labelPosition === void 0 ? "before" : _ref$labelPosition,
65
- _ref$theme = _ref.theme,
66
- theme = _ref$theme === void 0 ? "light" : _ref$theme,
67
65
  name = _ref.name,
68
66
  _ref$disabled = _ref.disabled,
69
67
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
70
- _ref$disableRipple = _ref.disableRipple,
71
- disableRipple = _ref$disableRipple === void 0 ? false : _ref$disableRipple,
72
68
  onClick = _ref.onClick,
73
69
  _ref$required = _ref.required,
74
70
  required = _ref$required === void 0 ? false : _ref$required,
@@ -81,7 +77,8 @@ var DxcRadio = function DxcRadio(_ref) {
81
77
  innerChecked = _useState2[0],
82
78
  setInnerChecked = _useState2[1];
83
79
 
84
- var colorsTheme = (0, _react.useContext)(_ThemeContext["default"]) || _variables.colors;
80
+ var colorsTheme = (0, _useTheme["default"])();
81
+ var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
85
82
 
86
83
  var handlerRadioChange = function handlerRadioChange(value) {
87
84
  if (checked == null) {
@@ -94,14 +91,14 @@ var DxcRadio = function DxcRadio(_ref) {
94
91
  };
95
92
 
96
93
  return _react["default"].createElement(_styledComponents.ThemeProvider, {
97
- theme: colorsTheme
94
+ theme: colorsTheme.radio
98
95
  }, _react["default"].createElement(RadioContainer, {
99
96
  id: name,
100
- brightness: theme,
101
97
  labelPosition: labelPosition,
102
98
  disabled: disabled,
103
99
  margin: margin,
104
- size: size
100
+ size: size,
101
+ backgroundType: backgroundType
105
102
  }, _react["default"].createElement(_Radio["default"], {
106
103
  checked: checked != null && checked || innerChecked,
107
104
  name: name,
@@ -109,16 +106,14 @@ var DxcRadio = function DxcRadio(_ref) {
109
106
  value: value,
110
107
  label: label,
111
108
  disabled: disabled,
112
- disableRipple: disableRipple
109
+ disableRipple: true
113
110
  }), _react["default"].createElement(LabelContainer, {
114
111
  checked: checked || innerChecked,
115
112
  labelPosition: labelPosition,
116
- brightness: theme,
117
113
  disabled: disabled,
118
- onClick: !disabled && handlerRadioChange || null
119
- }, required && _react["default"].createElement(_RequiredComponent["default"], {
120
- brightness: theme
121
- }), label)));
114
+ onClick: !disabled && handlerRadioChange || null,
115
+ backgroundType: backgroundType
116
+ }, required && _react["default"].createElement(_RequiredComponent["default"], null), label)));
122
117
  };
123
118
 
124
119
  var sizes = {
@@ -154,29 +149,41 @@ var RadioContainer = _styledComponents["default"].span(_templateObject(), functi
154
149
  }, function (props) {
155
150
  return props.disabled === true ? "not-allowed" : "default";
156
151
  }, function (props) {
157
- return props.brightness === "dark" ? props.theme.darkGrey : props.theme.lightGrey;
152
+ return props.labelPosition === "after" ? "padding-right" : "padding-left";
153
+ }, function (props) {
154
+ return props.theme.circleLabelSpacing;
155
+ }, function (props) {
156
+ return props.labelPosition === "after" ? "0px" : "";
157
+ }, function (props) {
158
+ return props.labelPosition === "before" ? "0px" : "";
159
+ }, function (props) {
160
+ return props.labelPosition === "after" ? "0px" : "";
158
161
  }, function (props) {
159
- return props.brightness === "dark" ? props.theme.white : props.theme.black;
162
+ return props.labelPosition === "before" ? "0px" : "";
160
163
  }, function (props) {
161
- return props.brightness === "dark" ? props.theme.yellow : props.theme.black;
164
+ return props.theme.circleSize;
162
165
  }, function (props) {
163
- return props.brightness === "dark" ? props.theme.darkGrey : props.theme.lightGrey;
166
+ return props.theme.circleSize;
164
167
  }, function (props) {
165
- return props.brightness === "dark" ? props.theme.darkGrey : props.theme.lightGrey;
168
+ return props.backgroundType === "dark" ? props.disabled && props.theme.disabledColorOnDark || props.theme.colorOnDark : props.disabled && props.theme.disabledColor || props.theme.color;
166
169
  }, function (props) {
167
- return props.theme.darkGrey;
170
+ return props.backgroundType === "dark" ? props.disabled && props.theme.disabledColorOnDark || props.theme.colorOnDark : props.disabled && props.theme.disabledColor || props.theme.color;
168
171
  }, function (props) {
169
- return props.brightness === "dark" ? props.theme.white : props.theme.darkGrey;
172
+ return props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
170
173
  }, function (props) {
171
- return props.brightness === "dark" ? props.theme.yellow : props.theme.black;
174
+ return props.backgroundType === "dark" ? props.disabled && props.theme.disabledColorOnDark || props.theme.colorOnDark : props.disabled && props.theme.disabledColor || props.theme.color;
172
175
  });
173
176
 
174
177
  var LabelContainer = _styledComponents["default"].span(_templateObject2(), function (props) {
175
- if (props.disabled) {
176
- return props.brightness === "dark" ? props.theme.darkGrey : props.theme.lightGrey;
177
- } else {
178
- return props.brightness === "dark" ? props.theme.white : props.theme.black;
179
- }
178
+ return props.theme.fontFamily;
179
+ }, function (props) {
180
+ return props.theme.fontSize;
181
+ }, function (props) {
182
+ return props.theme.fontWeight;
183
+ }, function (props) {
184
+ return props.theme.fontStyle;
185
+ }, function (props) {
186
+ return props.backgroundType === "dark" ? props.disabled && props.theme.disabledFontColorOnDark || props.theme.fontColorOnDark : props.disabled && props.theme.disabledFontColor || props.theme.fontColor;
180
187
  }, function (props) {
181
188
  return props.disabled === true ? "not-allowed" : "pointer";
182
189
  });
@@ -187,10 +194,8 @@ DxcRadio.propTypes = {
187
194
  value: _propTypes["default"].any,
188
195
  label: _propTypes["default"].string,
189
196
  labelPosition: _propTypes["default"].oneOf(["after", "before", ""]),
190
- theme: _propTypes["default"].oneOf(["light", "dark", ""]),
191
197
  name: _propTypes["default"].string,
192
198
  disabled: _propTypes["default"].bool,
193
- disableRipple: _propTypes["default"].bool,
194
199
  onClick: _propTypes["default"].func,
195
200
  required: _propTypes["default"].bool,
196
201
  margin: _propTypes["default"].oneOfType([_propTypes["default"].shape({
@@ -25,20 +25,14 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
25
25
 
26
26
  var _variables = require("../common/variables.js");
27
27
 
28
- var _ThemeContext = _interopRequireDefault(require("../ThemeContext.js"));
29
-
30
28
  var _Table = _interopRequireDefault(require("../table/Table"));
31
29
 
32
30
  var _Paginator = _interopRequireDefault(require("../paginator/Paginator"));
33
31
 
34
- var _arrow_upward24px_wht = _interopRequireDefault(require("./arrow_upward-24px_wht.svg"));
35
-
36
- var _arrow_downward24px_wht = _interopRequireDefault(require("./arrow_downward-24px_wht.svg"));
37
-
38
- var _unfold_more24px_wht = _interopRequireDefault(require("./unfold_more-24px_wht.svg"));
32
+ var _useTheme = _interopRequireDefault(require("../useTheme.js"));
39
33
 
40
34
  function _templateObject9() {
41
- var data = (0, _taggedTemplateLiteral2["default"])(["\n overflow-x: auto;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n &::-webkit-scrollbar {\n height: 6px;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 6px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 6px;\n }\n"]);
35
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n overflow: hidden;\n"]);
42
36
 
43
37
  _templateObject9 = function _templateObject9() {
44
38
  return data;
@@ -58,7 +52,7 @@ function _templateObject8() {
58
52
  }
59
53
 
60
54
  function _templateObject7() {
61
- var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n width: fit-content;\n"]);
55
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: ", ";\n width: 100%;\n"]);
62
56
 
63
57
  _templateObject7 = function _templateObject7() {
64
58
  return data;
@@ -88,7 +82,7 @@ function _templateObject5() {
88
82
  }
89
83
 
90
84
  function _templateObject4() {
91
- var data = (0, _taggedTemplateLiteral2["default"])(["\n top: 409px;\n left: 390px;\n height: 14px;\n cursor: pointer;\n"]);
85
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n top: 409px;\n left: 390px;\n height: 14px;\n cursor: pointer;\n color: ", ";\n\n svg {\n height: 100%;\n width: 100%;\n }\n"]);
92
86
 
93
87
  _templateObject4 = function _templateObject4() {
94
88
  return data;
@@ -98,7 +92,7 @@ function _templateObject4() {
98
92
  }
99
93
 
100
94
  function _templateObject3() {
101
- var data = (0, _taggedTemplateLiteral2["default"])(["\n > div:nth-child(1) {\n position: absolute;\n left: calc(50% - 68.5px);\n bottom: calc(50% - 68.5px - 30px);\n }\n & tr {\n height: 70px;\n }\n"]);
95
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n > div:nth-child(1) {\n position: absolute;\n left: calc(50% - 68.5px);\n bottom: calc(50% - 68.5px - 30px);\n }\n & tr {\n height: ", ";\n }\n"]);
102
96
 
103
97
  _templateObject3 = function _templateObject3() {
104
98
  return data;
@@ -108,7 +102,7 @@ function _templateObject3() {
108
102
  }
109
103
 
110
104
  function _templateObject2() {
111
- var data = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n margin-right: ", ";\n"]);
105
+ var data = (0, _taggedTemplateLiteral2["default"])([""]);
112
106
 
113
107
  _templateObject2 = function _templateObject2() {
114
108
  return data;
@@ -118,7 +112,7 @@ function _templateObject2() {
118
112
  }
119
113
 
120
114
  function _templateObject() {
121
- var data = (0, _taggedTemplateLiteral2["default"])(["\n & table {\n table-layout: fixed;\n }\n"]);
115
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n & table {\n table-layout: auto;\n }\n"]);
122
116
 
123
117
  _templateObject = function _templateObject() {
124
118
  return data;
@@ -159,14 +153,62 @@ var getMaxItemsPerPageIndex = function getMaxItemsPerPageIndex(minItemsPerPageIn
159
153
  return minItemsPerPageIndex + itemsPerPage > resultset.length ? resultset.length : itemsPerPage * page - 1;
160
154
  };
161
155
 
156
+ var ArrowUp = function ArrowUp() {
157
+ return _react["default"].createElement("svg", {
158
+ xmlns: "http://www.w3.org/2000/svg",
159
+ height: "24",
160
+ viewBox: "0 0 24 24",
161
+ width: "24",
162
+ fill: "currentColor"
163
+ }, _react["default"].createElement("path", {
164
+ d: "M0 0h24v24H0V0z",
165
+ fill: "none"
166
+ }), _react["default"].createElement("path", {
167
+ d: "M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"
168
+ }));
169
+ };
170
+
171
+ var ArrowDown = function ArrowDown() {
172
+ return _react["default"].createElement("svg", {
173
+ xmlns: "http://www.w3.org/2000/svg",
174
+ height: "24",
175
+ viewBox: "0 0 24 24",
176
+ width: "24",
177
+ fill: "currentColor"
178
+ }, _react["default"].createElement("path", {
179
+ d: "M0 0h24v24H0V0z",
180
+ fill: "none"
181
+ }), _react["default"].createElement("path", {
182
+ d: "M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"
183
+ }));
184
+ };
185
+
186
+ var BothArrows = function BothArrows() {
187
+ return _react["default"].createElement("svg", {
188
+ xmlns: "http://www.w3.org/2000/svg",
189
+ height: "24",
190
+ viewBox: "0 0 24 24",
191
+ width: "24",
192
+ fill: "currentColor"
193
+ }, _react["default"].createElement("path", {
194
+ d: "M0 0h24v24H0z",
195
+ fill: "none"
196
+ }), _react["default"].createElement("path", {
197
+ d: "M12 5.83L15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15 12 18.17z"
198
+ }));
199
+ };
200
+
162
201
  var DxcResultsetTable = function DxcResultsetTable(_ref) {
163
202
  var columns = _ref.columns,
164
203
  rows = _ref.rows,
165
204
  _ref$itemsPerPage = _ref.itemsPerPage,
166
205
  itemsPerPage = _ref$itemsPerPage === void 0 ? 5 : _ref$itemsPerPage,
167
- margin = _ref.margin;
168
-
169
- var colorsTheme = (0, _react.useContext)(_ThemeContext["default"]) || _variables.colors;
206
+ itemsPerPageOptions = _ref.itemsPerPageOptions,
207
+ itemsPerPageFunction = _ref.itemsPerPageFunction,
208
+ margin = _ref.margin,
209
+ _ref$tabIndex = _ref.tabIndex,
210
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
211
+ var colorsTheme = (0, _useTheme["default"])();
170
212
 
171
213
  var _useState = (0, _react.useState)(1),
172
214
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -185,26 +227,13 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
185
227
 
186
228
  var minItemsPerPageIndex = (0, _react.useMemo)(function () {
187
229
  return getMinItemsPerPageIndex(page, itemsPerPage, page);
188
- }, [page]); //Merece la pena sacar a una función para usar useMemo?
189
-
230
+ }, [itemsPerPage, page]);
190
231
  var maxItemsPerPageIndex = (0, _react.useMemo)(function () {
191
232
  return getMaxItemsPerPageIndex(minItemsPerPageIndex, itemsPerPage, rows, page);
192
- }, [page]);
233
+ }, [itemsPerPage, minItemsPerPageIndex, page, rows]);
193
234
 
194
- var next = function next() {
195
- changePage(page + 1);
196
- };
197
-
198
- var previous = function previous() {
199
- changePage(page - 1);
200
- };
201
-
202
- var first = function first() {
203
- changePage(1);
204
- };
205
-
206
- var last = function last() {
207
- changePage(Math.ceil(rows.length / itemsPerPage));
235
+ var goToPage = function goToPage(newPage) {
236
+ changePage(newPage);
208
237
  };
209
238
 
210
239
  var changeSorting = function changeSorting(columnIndex) {
@@ -214,7 +243,7 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
214
243
  };
215
244
 
216
245
  var getIconForSortableColumn = function getIconForSortableColumn(clickedColumnIndex) {
217
- return sortColumnIndex === clickedColumnIndex ? sortOrder === "asc" ? _arrow_upward24px_wht["default"] : _arrow_downward24px_wht["default"] : _unfold_more24px_wht["default"];
246
+ return sortColumnIndex === clickedColumnIndex ? sortOrder === "asc" ? _react["default"].createElement(ArrowUp, null) : _react["default"].createElement(ArrowDown, null) : _react["default"].createElement(BothArrows, null);
218
247
  };
219
248
 
220
249
  (0, _react.useEffect)(function () {
@@ -223,37 +252,29 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
223
252
  } else {
224
253
  changePage(0);
225
254
  }
226
- }, [rows]);
255
+ }, [rows.length, itemsPerPage]);
227
256
  var sortedResultset = (0, _react.useMemo)(function () {
228
257
  return sortColumnIndex !== "" ? sortArray(sortColumnIndex, sortOrder, rows) : rows;
229
258
  }, [sortColumnIndex, sortOrder, rows]);
230
259
  var filteredResultset = (0, _react.useMemo)(function () {
231
260
  return sortedResultset && sortedResultset.slice(minItemsPerPageIndex, maxItemsPerPageIndex + 1);
232
- }, [page, sortColumnIndex, sortOrder, rows]);
261
+ }, [sortedResultset, minItemsPerPageIndex, maxItemsPerPageIndex]);
233
262
  return _react["default"].createElement(_styledComponents.ThemeProvider, {
234
- theme: colorsTheme
263
+ theme: colorsTheme.table
235
264
  }, _react["default"].createElement(DxcResultsetTableContainer, {
236
265
  margin: margin
237
- }, _react["default"].createElement(TableContainer, null, _react["default"].createElement(_Table["default"], {
238
- margin: {
239
- top: margin,
240
- right: margin,
241
- bottom: "0px",
242
- left: margin
243
- }
244
- }, _react["default"].createElement(HeaderRow, null, _react["default"].createElement("tr", null, columns.map(function (column, index) {
266
+ }, _react["default"].createElement(TableContainer, null, _react["default"].createElement(_Table["default"], null, _react["default"].createElement(HeaderRow, null, _react["default"].createElement("tr", null, columns.map(function (column, index) {
245
267
  return _react["default"].createElement(TableHeader, {
246
268
  key: "tableHeader_".concat(index)
247
269
  }, _react["default"].createElement(HeaderContainer, {
248
270
  key: "headerContainer_".concat(index),
249
271
  onClick: function onClick() {
250
272
  return column.isSortable && changeSorting(index);
251
- }
273
+ },
274
+ tabIndex: column.isSortable ? tabIndex : -1
252
275
  }, _react["default"].createElement(TitleDiv, {
253
276
  isSortable: column.isSortable
254
- }, column.displayValue), column.isSortable && _react["default"].createElement(SortIcon, {
255
- src: getIconForSortableColumn(index)
256
- })));
277
+ }, column.displayValue), column.isSortable && _react["default"].createElement(SortIcon, null, getIconForSortableColumn(index))));
257
278
  }))), _react["default"].createElement(TableRowGroup, null, filteredResultset.map(function (cells, index) {
258
279
  return _react["default"].createElement("tr", {
259
280
  key: "resultSetTableCell_".concat(index)
@@ -262,30 +283,29 @@ var DxcResultsetTable = function DxcResultsetTable(_ref) {
262
283
  key: "resultSetTableCellContent_".concat(index)
263
284
  }, cellContent.displayValue);
264
285
  }));
265
- })))), _react["default"].createElement(PaginatorContainer, {
266
- margin: margin
267
- }, _react["default"].createElement(_Paginator["default"], {
286
+ })))), _react["default"].createElement(PaginatorContainer, null, _react["default"].createElement(_Paginator["default"], {
268
287
  totalItems: rows.length,
269
288
  itemsPerPage: itemsPerPage,
289
+ itemsPerPageOptions: itemsPerPageOptions,
290
+ itemsPerPageFunction: itemsPerPageFunction,
270
291
  currentPage: page,
271
- nextFunction: next,
272
- prevFunction: previous,
273
- firstFunction: first,
274
- lastFunction: last
292
+ showGoToPage: true,
293
+ onPageChange: goToPage,
294
+ tabIndex: tabIndex
275
295
  }))));
276
296
  };
277
297
 
278
298
  var TableContainer = _styledComponents["default"].div(_templateObject());
279
299
 
280
- var PaginatorContainer = _styledComponents["default"].div(_templateObject2(), function (props) {
281
- return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
282
- }, function (props) {
283
- return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
284
- });
300
+ var PaginatorContainer = _styledComponents["default"].div(_templateObject2());
285
301
 
286
- var TableRowGroup = _styledComponents["default"].tbody(_templateObject3());
302
+ var TableRowGroup = _styledComponents["default"].tbody(_templateObject3(), function (props) {
303
+ return props.theme.rowHeight || "70px";
304
+ });
287
305
 
288
- var SortIcon = _styledComponents["default"].img(_templateObject4());
306
+ var SortIcon = _styledComponents["default"].div(_templateObject4(), function (props) {
307
+ return props.theme.sortIconColor;
308
+ });
289
309
 
290
310
  var TitleDiv = _styledComponents["default"].div(_templateObject5(), function (props) {
291
311
  return props.isSortable && "pointer" || "default";
@@ -293,11 +313,15 @@ var TitleDiv = _styledComponents["default"].div(_templateObject5(), function (pr
293
313
 
294
314
  var TableHeader = _styledComponents["default"].th(_templateObject6());
295
315
 
296
- var HeaderContainer = _styledComponents["default"].div(_templateObject7());
316
+ var HeaderContainer = _styledComponents["default"].div(_templateObject7(), function (props) {
317
+ return props.theme.headerTextAlign === "center" ? "center" : props.theme.headerTextAlign === "right" ? "flex-end" : "flex-start";
318
+ });
297
319
 
298
320
  var HeaderRow = _styledComponents["default"].thead(_templateObject8());
299
321
 
300
322
  var DxcResultsetTableContainer = _styledComponents["default"].div(_templateObject9(), function (props) {
323
+ return props.theme.fontSizeBase;
324
+ }, function (props) {
301
325
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
302
326
  }, function (props) {
303
327
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
@@ -307,28 +331,28 @@ var DxcResultsetTableContainer = _styledComponents["default"].div(_templateObjec
307
331
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
308
332
  }, function (props) {
309
333
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
310
- }, function (props) {
311
- return props.theme.darkGrey;
312
- }, function (props) {
313
- return props.theme.lightGrey;
314
334
  });
315
335
 
316
336
  DxcResultsetTable.propTypes = {
317
337
  rows: _propTypes["default"].array,
318
338
  columns: _propTypes["default"].array,
319
339
  itemsPerPage: _propTypes["default"].number,
340
+ itemsPerPageOptions: _propTypes["default"].arrayOf(_propTypes["default"].number),
341
+ itemsPerPageFunction: _propTypes["default"].func,
320
342
  margin: _propTypes["default"].oneOfType([_propTypes["default"].shape({
321
343
  top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
322
344
  bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
323
345
  left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
324
346
  right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
325
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))])
347
+ }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
348
+ tabIndex: _propTypes["default"].number
326
349
  };
327
350
  DxcResultsetTable.defaultProps = {
328
351
  rows: [],
329
352
  columns: [],
330
353
  itemsPerPage: 5,
331
- margin: "xxsmall"
354
+ itemsPerPageOptions: null,
355
+ itemsPerPageFunction: null
332
356
  };
333
357
  var _default = DxcResultsetTable;
334
358
  exports["default"] = _default;