@widergy/energy-ui 3.50.0 → 3.51.0

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 (25) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/UTAlert/index.js +43 -32
  3. package/dist/components/UTBreadcrumbs/index.js +7 -2
  4. package/dist/components/UTCheckList/versions/V1/index.js +5 -2
  5. package/dist/components/UTDialog/index.js +29 -10
  6. package/dist/components/UTFieldLabel/index.js +3 -0
  7. package/dist/components/UTHeader/index.js +34 -19
  8. package/dist/components/UTSelect/versions/V0/index.js +49 -29
  9. package/dist/components/UTSelect/versions/V1/components/InputComponent/index.js +4 -1
  10. package/dist/components/UTSelect/versions/V1/components/ListboxComponent/index.js +9 -3
  11. package/dist/components/UTSelect/versions/V1/index.js +24 -9
  12. package/dist/components/UTTable/components/ActionIcons/index.js +18 -15
  13. package/dist/components/UTTable/components/Cell/index.js +10 -4
  14. package/dist/components/UTTable/components/HeaderCell/index.js +9 -6
  15. package/dist/components/UTTable/components/PrimaryAction/index.js +7 -4
  16. package/dist/components/UTTable/components/TableRow/index.js +61 -43
  17. package/dist/components/UTTable/index.js +71 -52
  18. package/dist/components/UTTextInput/versions/V0/index.js +14 -11
  19. package/dist/components/UTTextInput/versions/V1/index.js +20 -14
  20. package/dist/components/UTWorkflowContainer/versions/V0/components/ActionButton/index.js +1 -0
  21. package/dist/components/UTWorkflowContainer/versions/V0/index.js +21 -10
  22. package/dist/components/UTWorkflowContainer/versions/V1/components/NavActions/index.js +13 -1
  23. package/dist/components/UTWorkflowContainer/versions/V1/index.js +34 -11
  24. package/dist/constants/testIds.js +46 -0
  25. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [3.51.0](https://github.com/widergy/energy-ui/compare/v3.50.1...v3.51.0) (2025-01-02)
2
+
3
+
4
+ ### Features
5
+
6
+ * [AUT-411] [AUT-415] multiple component test ids ([#551](https://github.com/widergy/energy-ui/issues/551)) ([bca605f](https://github.com/widergy/energy-ui/commit/bca605f133f100adf89b702e2484e33edf1ca3c6))
7
+
8
+ ## [3.50.1](https://github.com/widergy/energy-ui/compare/v3.50.0...v3.50.1) (2024-12-19)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * select options string cast ([#554](https://github.com/widergy/energy-ui/issues/554)) ([0bc707c](https://github.com/widergy/energy-ui/commit/0bc707c484243eab0b43fe3a28ffc82b54544211))
14
+
1
15
  # [3.50.0](https://github.com/widergy/energy-ui/compare/v3.49.8...v3.50.0) (2024-12-19)
2
16
 
3
17
 
@@ -4,30 +4,35 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _propTypes = require("prop-types");
9
- var _Snackbar = _interopRequireDefault(require("@material-ui/core/Snackbar"));
10
- var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
11
7
  var _CheckCircle = _interopRequireDefault(require("@material-ui/icons/CheckCircle"));
8
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
12
9
  var _Error = _interopRequireDefault(require("@material-ui/icons/Error"));
10
+ var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
13
11
  var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
14
- var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
15
- var _Warning = _interopRequireDefault(require("@material-ui/icons/Warning"));
12
+ var _react = _interopRequireWildcard(require("react"));
16
13
  var _Slide = _interopRequireDefault(require("@material-ui/core/Slide"));
17
- var _WithTheme = _interopRequireDefault(require("../WithTheme"));
14
+ var _Snackbar = _interopRequireDefault(require("@material-ui/core/Snackbar"));
15
+ var _Warning = _interopRequireDefault(require("@material-ui/icons/Warning"));
16
+ var _propTypes = require("prop-types");
18
17
  var _UTLabel = _interopRequireDefault(require("../UTLabel"));
18
+ var _WithTheme = _interopRequireDefault(require("../WithTheme"));
19
+ var _testIds = require("../../constants/testIds");
19
20
  var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
20
21
  var _theme = require("./theme");
21
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
22
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
23
23
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
24
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
25
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
25
26
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
26
27
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
28
+ const {
29
+ closeButtonId,
30
+ labelId
31
+ } = _testIds.COMPONENT_IDS.snackBarIds;
27
32
  const variantIcon = {
28
- success: _CheckCircle.default,
29
33
  error: _Error.default,
30
34
  info: _Info.default,
35
+ success: _CheckCircle.default,
31
36
  warning: _Warning.default
32
37
  };
33
38
  class UTAlert extends _react.PureComponent {
@@ -62,25 +67,32 @@ class UTAlert extends _react.PureComponent {
62
67
  }
63
68
  render() {
64
69
  const {
70
+ classes = {},
71
+ closeDataTestId = closeButtonId,
65
72
  content: alert = {},
66
- withoutIcon,
67
- classes = {}
73
+ labelDataTestId = labelId,
74
+ withoutIcon
68
75
  } = this.props;
69
76
  const anchor = {
70
- vertical: alert.topRight ? 'top' : 'bottom',
71
- horizontal: alert.topRight ? 'right' : 'left'
77
+ horizontal: alert.topRight ? 'right' : 'left',
78
+ vertical: alert.topRight ? 'top' : 'bottom'
72
79
  };
73
80
  const transition = {
74
81
  direction: alert.topRight ? 'left' : 'up'
75
82
  };
76
83
  const AlertTypeIcon = alert.type && variantIcon[alert.type];
77
84
  return /*#__PURE__*/_react.default.createElement(_Snackbar.default, {
85
+ action: [/*#__PURE__*/_react.default.createElement(_IconButton.default, {
86
+ classes: {
87
+ root: classes.action
88
+ },
89
+ color: "inherit",
90
+ "data-testid": closeDataTestId,
91
+ key: "close",
92
+ onClick: this.handleClose
93
+ }, /*#__PURE__*/_react.default.createElement(_Close.default, null))],
78
94
  anchorOrigin: anchor,
79
- open: alert.open,
80
95
  autoHideDuration: alert.timeDuration,
81
- onClose: this.handleClose,
82
- TransitionProps: transition,
83
- TransitionComponent: _Slide.default,
84
96
  classes: {
85
97
  root: _stylesModule.default.snackbarRoot
86
98
  },
@@ -99,42 +111,41 @@ class UTAlert extends _react.PureComponent {
99
111
  }
100
112
  }), /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
101
113
  colorTheme: "light",
102
- withMarkdown: true
114
+ withMarkdown: true,
115
+ dataTestId: labelDataTestId
103
116
  }, alert.message)),
104
- action: [/*#__PURE__*/_react.default.createElement(_IconButton.default, {
105
- classes: {
106
- root: classes.action
107
- },
108
- key: "close",
109
- color: "inherit",
110
- onClick: this.handleClose
111
- }, /*#__PURE__*/_react.default.createElement(_Close.default, null))]
117
+ onClose: this.handleClose,
118
+ open: alert.open,
119
+ TransitionComponent: _Slide.default,
120
+ TransitionProps: transition
112
121
  });
113
122
  }
114
123
  }
115
124
  UTAlert.propTypes = {
116
125
  content: (0, _propTypes.shape)({
117
126
  message: _propTypes.string,
127
+ onClose: _propTypes.func,
118
128
  open: _propTypes.bool,
119
- type: _propTypes.string,
120
- topRight: _propTypes.bool,
121
129
  timeDuration: _propTypes.number,
122
- onClose: _propTypes.func
130
+ topRight: _propTypes.bool,
131
+ type: _propTypes.string
123
132
  }),
124
133
  classes: (0, _propTypes.shape)({
125
134
  error: _propTypes.string,
126
135
  info: _propTypes.string,
127
136
  success: _propTypes.string
128
137
  }),
138
+ closeDataTestId: _propTypes.string,
139
+ labelDataTestId: _propTypes.string,
129
140
  withoutIcon: _propTypes.bool
130
141
  };
131
142
  UTAlert.defaultProps = {
132
143
  content: {
133
- open: false,
134
- type: undefined,
135
144
  message: undefined,
145
+ open: false,
146
+ timeDuration: undefined,
136
147
  topRight: undefined,
137
- timeDuration: undefined
148
+ type: undefined
138
149
  },
139
150
  classes: {}
140
151
  };
@@ -11,6 +11,7 @@ var _UTMenu = _interopRequireDefault(require("../UTMenu"));
11
11
  var _UTButton = _interopRequireDefault(require("../UTButton"));
12
12
  var _UTLabel = _interopRequireDefault(require("../UTLabel"));
13
13
  var _classesUtils = require("../../utils/classesUtils");
14
+ var _testIds = require("../../constants/testIds");
14
15
  var _constants = require("./constants");
15
16
  var _theme = require("./theme");
16
17
  var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
@@ -18,6 +19,9 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
18
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
20
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
21
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
22
+ const {
23
+ buttonId
24
+ } = _testIds.COMPONENT_IDS.breadcrumbsIds;
21
25
  const UTBreadcrumbs = _ref => {
22
26
  let {
23
27
  breadcrumbs,
@@ -150,7 +154,7 @@ const UTBreadcrumbs = _ref => {
150
154
  key: "".concat(route, "-").concat(label)
151
155
  }, !route && !menuItems || disableMenu ? /*#__PURE__*/_react.default.createElement(_UTLabel.default, _extends({
152
156
  className: _stylesModule.default.label,
153
- dataTestId: dataTestId,
157
+ dataTestId: dataTestId ? "".concat(dataTestId, ".").concat(index) : "".concat(buttonId, "}.").concat(index),
154
158
  variant: "small",
155
159
  weight: "medium"
156
160
  }, colorThemesDefinition.label), label) : /*#__PURE__*/_react.default.createElement(_UTButton.default, _extends({
@@ -159,12 +163,13 @@ const UTBreadcrumbs = _ref => {
159
163
  childrenContainer: overflowControl ? _stylesModule.default.buttonContainer : null,
160
164
  text: overflowControl ? _stylesModule.default.ellipsis : null
161
165
  },
162
- dataTestId: dataTestId,
166
+ dataTestId: dataTestId ? "".concat(dataTestId, ".").concat(index) : "".concat(buttonId, "}.").concat(index),
163
167
  onClick: handleClick,
164
168
  size: "small",
165
169
  variant: "text"
166
170
  }, colorThemesDefinition.button), "".concat(label)), !isLast && /*#__PURE__*/_react.default.createElement(_UTLabel.default, _extends({
167
171
  className: classes.separator,
172
+ dataTestId: dataTestId ? "".concat(dataTestId, ".").concat(index) : "".concat(buttonId, "}.").concat(index),
168
173
  variant: "small",
169
174
  weight: "medium"
170
175
  }, colorThemesDefinition.label), separator));
@@ -26,6 +26,7 @@ const UTCheckList = _ref => {
26
26
  error,
27
27
  horizontalSpacing = 'medium',
28
28
  isSimple = false,
29
+ itemDataTestId,
29
30
  onChange = () => {},
30
31
  options,
31
32
  required,
@@ -108,7 +109,7 @@ const UTCheckList = _ref => {
108
109
  value: areAllSelected,
109
110
  variant: variant,
110
111
  version: "V1"
111
- }), categorizedOptions.map(_ref5 => {
112
+ }), categorizedOptions.map((_ref5, catIndex) => {
112
113
  let [category, categoryOptions] = _ref5;
113
114
  return /*#__PURE__*/_react.default.createElement("div", {
114
115
  className: "".concat(_stylesModule.default.categoryContainer, " ").concat(smallVerticalSpacingClass),
@@ -118,8 +119,9 @@ const UTCheckList = _ref => {
118
119
  colorTheme: "gray",
119
120
  variant: "small",
120
121
  weight: "medium"
121
- }, category.toUpperCase()), categoryOptions.map(item => /*#__PURE__*/_react.default.createElement(_UTCheckbox.default, {
122
+ }, category.toUpperCase()), categoryOptions.map((item, index) => /*#__PURE__*/_react.default.createElement(_UTCheckbox.default, {
122
123
  classNames: classNames.item,
124
+ dataTestId: itemDataTestId ? "".concat(itemDataTestId, ".category_").concat(catIndex, ".").concat(index) : null,
123
125
  disabled: item.disabled || disabled,
124
126
  isSimple: isSimple,
125
127
  key: item.value,
@@ -140,6 +142,7 @@ UTCheckList.propTypes = {
140
142
  error: _propTypes.string,
141
143
  horizontalSpacing: _propTypes.string,
142
144
  isSimple: _propTypes.bool,
145
+ itemDataTestId: _propTypes.string,
143
146
  onChange: _propTypes.func,
144
147
  options: (0, _propTypes.arrayOf)((0, _propTypes.shape)({
145
148
  checked: _propTypes.bool,
@@ -15,19 +15,29 @@ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
15
15
  var _WithTheme = _interopRequireDefault(require("../WithTheme"));
16
16
  var _UTLabel = _interopRequireDefault(require("../UTLabel"));
17
17
  var _UTButton = _interopRequireDefault(require("../UTButton"));
18
+ var _testIds = require("../../constants/testIds");
18
19
  var _types = require("./types");
19
20
  var _theme = require("./theme");
20
21
  var _constants = require("./constants");
21
22
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
23
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
24
+ const {
25
+ acceptButtontId,
26
+ cancelButtonId,
27
+ closeButtonId,
28
+ titleId
29
+ } = _testIds.COMPONENT_IDS.dialogIds;
23
30
  const UTDialog = _ref => {
24
31
  let {
25
32
  acceptButton,
33
+ acceptButtonDataTestId = acceptButtontId,
26
34
  alertConfig,
27
35
  cancelButton,
36
+ cancelButtonDataTestId = cancelButtonId,
28
37
  children,
29
- classes,
30
38
  classNames,
39
+ classes,
40
+ closeButtonDataTestId = closeButtonId,
31
41
  contentName,
32
42
  dialogProps,
33
43
  disableEnforceFocus,
@@ -39,6 +49,7 @@ const UTDialog = _ref => {
39
49
  onRequestClose,
40
50
  roundedCloseButton,
41
51
  title,
52
+ titleDataTestId = titleId,
42
53
  TransitionProps,
43
54
  warningAlert,
44
55
  whiteTitle,
@@ -57,44 +68,48 @@ const UTDialog = _ref => {
57
68
  dialogActions
58
69
  } = classNames || {};
59
70
  return /*#__PURE__*/_react.default.createElement(_Dialog.default, _extends({
60
- open: isOpen,
61
- onClose: withClickAway ? onRequestClose : undefined,
62
- "aria-labelledby": "alert-dialog-title",
63
71
  "aria-describedby": "alert-dialog-description",
72
+ "aria-labelledby": "alert-dialog-title",
64
73
  classes: {
65
74
  paper: "".concat(classes.container, " ").concat(container),
66
75
  root: "".concat(classes.root, " ").concat(root)
67
76
  },
77
+ disableEnforceFocus: disableEnforceFocus,
78
+ disableScrollLock: disableScrollLock,
79
+ onClose: withClickAway ? onRequestClose : undefined,
80
+ open: isOpen,
68
81
  PaperProps: {
69
82
  elevation
70
83
  },
71
- disableEnforceFocus: disableEnforceFocus,
72
- disableScrollLock: disableScrollLock,
73
84
  TransitionProps: TransitionProps
74
85
  }, dialogProps), title && /*#__PURE__*/_react.default.createElement(_DialogTitle.default, {
75
- disableTypography: disableTypography,
76
86
  className: "".concat(classes.mainTitle, " ").concat(whiteTitle && classes.whiteTitle, " ").concat(mainTitle),
87
+ "data-testid": titleDataTestId,
88
+ disableTypography: disableTypography,
77
89
  id: "alert-dialog-title"
78
90
  }, title, withCloseButton && /*#__PURE__*/_react.default.createElement(_UTButton.default, {
79
91
  classNames: {
80
92
  icon: "".concat(classes.closeIcon, " ").concat(closeIcon),
81
93
  root: "".concat(classes.closeButton, " ").concat(whiteTitle && classes.whiteCloseButton, " ").concat(closeButton)
82
94
  },
95
+ dataTestId: closeButtonDataTestId,
83
96
  Icon: CloseIcon,
84
97
  onClick: onRequestClose,
85
98
  variant: "text"
86
99
  })), /*#__PURE__*/_react.default.createElement(_DialogContent.default, {
87
- name: contentName,
88
- className: "".concat(classes.content, " ").concat(content)
100
+ className: "".concat(classes.content, " ").concat(content),
101
+ name: contentName
89
102
  }, children), warningAlert && /*#__PURE__*/_react.default.createElement(_UTLabel.default, _extends({}, alertConfig, {
90
103
  className: "".concat(classes.warning, " ").concat(warning)
91
104
  }), warningAlert), (cancelButton || acceptButton) && /*#__PURE__*/_react.default.createElement(_DialogActions.default, {
92
105
  className: "".concat(classes.dialogActions, " ").concat(dialogActions)
93
106
  }, FooterComponents, cancelButton && /*#__PURE__*/_react.default.createElement(_UTButton.default, _extends({
94
107
  colorTheme: "secondary",
108
+ dataTestId: cancelButtonDataTestId,
95
109
  variant: "text"
96
110
  }, cancelButton), cancelButton.text || _constants.CANCEL_BUTTON_TEXT), acceptButton && /*#__PURE__*/_react.default.createElement(_UTButton.default, _extends({
97
111
  colorTheme: "primary",
112
+ dataTestId: acceptButtonDataTestId,
98
113
  variant: "filled"
99
114
  }, acceptButton), acceptButton.text || _constants.ACCEPT_BUTTON_TEXT)));
100
115
  };
@@ -108,10 +123,13 @@ UTDialog.defaultProps = {
108
123
  };
109
124
  UTDialog.propTypes = {
110
125
  acceptButton: _types.dialogButtonPropTypes,
126
+ acceptButtonDataTestId: _propTypes.string,
111
127
  alertConfig: _propTypes.object,
112
128
  cancelButton: _types.dialogButtonPropTypes,
113
- classes: (0, _propTypes.objectOf)(_propTypes.string),
129
+ cancelButtonDataTestId: _propTypes.string,
114
130
  classNames: (0, _propTypes.objectOf)(_propTypes.string),
131
+ classes: (0, _propTypes.objectOf)(_propTypes.string),
132
+ closeButtonDataTestId: _propTypes.string,
115
133
  contentName: _propTypes.string,
116
134
  dialogProps: _propTypes.object,
117
135
  disableEnforceFocus: _propTypes.bool,
@@ -123,6 +141,7 @@ UTDialog.propTypes = {
123
141
  onRequestClose: _propTypes.func,
124
142
  roundedCloseButton: _propTypes.bool,
125
143
  title: (0, _propTypes.oneOfType)([_propTypes.element, _propTypes.string]),
144
+ titleDataTestId: _propTypes.string,
126
145
  TransitionProps: _propTypes.object,
127
146
  warningAlert: _propTypes.string,
128
147
  whiteTitle: _propTypes.bool,
@@ -14,6 +14,7 @@ const UTFieldLabel = _ref => {
14
14
  let {
15
15
  children,
16
16
  colorTheme,
17
+ dataTestId,
17
18
  required,
18
19
  className,
19
20
  variant,
@@ -23,6 +24,7 @@ const UTFieldLabel = _ref => {
23
24
  className: "".concat(_stylesModule.default.label, " ").concat(className)
24
25
  }, /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
25
26
  colorTheme: colorTheme,
27
+ dataTestId: dataTestId,
26
28
  variant: variant,
27
29
  withMarkdown: true
28
30
  }, children), required && /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
@@ -35,6 +37,7 @@ const UTFieldLabel = _ref => {
35
37
  UTFieldLabel.propTypes = {
36
38
  className: _propTypes.string,
37
39
  colorTheme: _propTypes.string,
40
+ dataTestId: _propTypes.string,
38
41
  required: _propTypes.bool,
39
42
  variant: _propTypes.string,
40
43
  weight: _propTypes.string
@@ -48,14 +48,19 @@ const UTHeader = _ref => {
48
48
  let {
49
49
  actions,
50
50
  banner,
51
- classes: themeClasses = {},
52
51
  classNames,
52
+ classes: themeClasses = {},
53
53
  helpText,
54
+ helpTextDataTestId,
54
55
  isLastStep,
55
56
  requiredFieldInfo,
57
+ requiredFieldInfoDataTestId,
56
58
  subtitle,
59
+ subtitleDataTestId,
57
60
  tagline,
61
+ taglineDataTestId,
58
62
  title,
63
+ titleDataTestId,
59
64
  TitleIcon
60
65
  } = _ref;
61
66
  const classes = (0, _react.useMemo)(() => (0, _classesUtils.mergeClasses)(themeClasses, classNames), [classNames]);
@@ -69,31 +74,36 @@ const UTHeader = _ref => {
69
74
  const BANNER_ICON_SIZE = '20px';
70
75
  const renderComponent = (prop, standardComponent) => /*#__PURE__*/_react.default.isValidElement(prop) ? prop : standardComponent;
71
76
  const Tagline = renderComponent(tagline, /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
72
- variant: "small",
77
+ className: _stylesModule.default.stepTitle,
73
78
  colorTheme: "gray",
74
- weight: "medium",
75
- className: _stylesModule.default.stepTitle
79
+ dataTestId: taglineDataTestId,
80
+ variant: "small",
81
+ weight: "medium"
76
82
  }, tagline));
77
83
  const Title = renderComponent(title, /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
84
+ className: _stylesModule.default.title,
85
+ dataTestId: titleDataTestId,
78
86
  variant: "title2",
79
87
  weight: "medium",
80
- withMarkdown: true,
81
- className: _stylesModule.default.title
88
+ withMarkdown: true
82
89
  }, title));
83
90
  const Subtitle = renderComponent(subtitle, /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
84
- variant: "subtitle2",
91
+ className: _stylesModule.default.subtitle,
85
92
  colorTheme: "gray",
86
- withMarkdown: true,
87
- className: _stylesModule.default.subtitle
93
+ dataTestId: subtitleDataTestId,
94
+ variant: "subtitle2",
95
+ withMarkdown: true
88
96
  }, subtitle));
89
97
  const RequiredFieldInfo = renderComponent(requiredFieldInfo, /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
90
- variant: "small",
91
98
  colorTheme: "gray",
99
+ dataTestId: requiredFieldInfoDataTestId,
100
+ variant: "small",
92
101
  withMarkdown: true
93
102
  }, requiredFieldInfo));
94
103
  const HelpText = renderComponent(helpText, /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
95
- variant: "small",
96
- colorTheme: "gray"
104
+ colorTheme: "gray",
105
+ dataTestId: helpTextDataTestId,
106
+ variant: "small"
97
107
  }, helpText));
98
108
  return /*#__PURE__*/_react.default.createElement("div", {
99
109
  className: classes.outerContainer
@@ -111,9 +121,9 @@ const UTHeader = _ref => {
111
121
  className: _stylesModule.default.actionsContainer
112
122
  }, mainAction && /*#__PURE__*/_react.default.createElement(_UTButton.default, {
113
123
  colorTheme: "primary",
124
+ Icon: MainIcon,
114
125
  onClick: mainAction.onClick,
115
- variant: "text",
116
- Icon: MainIcon
126
+ variant: "text"
117
127
  }), !(0, _isEmpty.default)(moreActions) && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_UTButton.default, {
118
128
  onClick: openMenu,
119
129
  variant: "text",
@@ -134,14 +144,14 @@ const UTHeader = _ref => {
134
144
  menuPlacement: "bottom-end",
135
145
  onClose: closeMenu
136
146
  })))), subtitle && Subtitle), requiredFieldInfo && RequiredFieldInfo, helpText && HelpText), (banner === null || banner === void 0 ? void 0 : banner.text) && /*#__PURE__*/_react.default.createElement(_UTBanner.default, {
137
- Icon: banner.Icon,
147
+ classNames: {
148
+ infoContainer: _stylesModule.default.bannerContainer
149
+ },
138
150
  iconProps: {
139
151
  height: BANNER_ICON_SIZE,
140
152
  width: BANNER_ICON_SIZE
141
153
  },
142
- classNames: {
143
- infoContainer: _stylesModule.default.bannerContainer
144
- }
154
+ Icon: banner.Icon
145
155
  }, banner.text)));
146
156
  };
147
157
  UTHeader.propTypes = {
@@ -150,14 +160,19 @@ UTHeader.propTypes = {
150
160
  Icon: _propTypes.object,
151
161
  text: _propTypes.string
152
162
  }),
153
- classes: (0, _propTypes.objectOf)(_propTypes.string),
154
163
  classNames: (0, _propTypes.objectOf)(_propTypes.string),
164
+ classes: (0, _propTypes.objectOf)(_propTypes.string),
155
165
  helpText: _propTypes.string,
166
+ helpTextDataTestId: _propTypes.string,
156
167
  isLastStep: _propTypes.bool,
157
168
  requiredFieldInfo: _propTypes.string,
169
+ requiredFieldInfoDataTestId: _propTypes.string,
158
170
  subtitle: _propTypes.string,
171
+ subtitleDataTestId: _propTypes.string,
159
172
  tagline: _propTypes.string,
173
+ taglineDataTestId: _propTypes.string,
160
174
  title: _propTypes.string,
175
+ titleDataTestId: _propTypes.string,
161
176
  TitleIcon: _propTypes.element
162
177
  };
163
178
  var _default = exports.default = (0, _WithTheme.default)(_theme.retrieveStyle)(UTHeader);
@@ -4,46 +4,50 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
9
- var _ListSubheader = _interopRequireDefault(require("@material-ui/core/ListSubheader"));
10
- var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
11
- var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
7
+ var _clone = _interopRequireDefault(require("lodash/clone"));
12
8
  var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
13
- var _propTypes = require("prop-types");
9
+ var _FormHelperText = _interopRequireDefault(require("@material-ui/core/FormHelperText"));
14
10
  var _Grid = _interopRequireDefault(require("@material-ui/core/Grid"));
15
11
  var _HelpOutline = _interopRequireDefault(require("@material-ui/icons/HelpOutline"));
16
- var _form = require("@widergy/web-utils/lib/form");
17
- var _FormHelperText = _interopRequireDefault(require("@material-ui/core/FormHelperText"));
12
+ var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
13
+ var _ListSubheader = _interopRequireDefault(require("@material-ui/core/ListSubheader"));
14
+ var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
15
+ var _react = _interopRequireWildcard(require("react"));
16
+ var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
17
+ var _propTypes = require("prop-types");
18
18
  var _array = require("@widergy/web-utils/lib/array");
19
- var _clone = _interopRequireDefault(require("lodash/clone"));
20
- var _formTypes = require("../../../../types/formTypes");
19
+ var _form = require("@widergy/web-utils/lib/form");
20
+ var _UTLabel = _interopRequireDefault(require("../../../UTLabel"));
21
21
  var _UTTooltip = _interopRequireDefault(require("../../../UTTooltip"));
22
22
  var _WithTheme = _interopRequireDefault(require("../../../WithTheme"));
23
- var _UTLabel = _interopRequireDefault(require("../../../UTLabel"));
23
+ var _formTypes = require("../../../../types/formTypes");
24
24
  var _classesUtils = require("../../../../utils/classesUtils");
25
25
  var _Option = _interopRequireDefault(require("./components/Option"));
26
- var _theme = require("./theme");
27
- var _stylesJS = _interopRequireDefault(require("./stylesJS"));
28
26
  var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
27
+ var _stylesJS = _interopRequireDefault(require("./stylesJS"));
29
28
  var _constants = require("./constants");
29
+ var _theme = require("./theme");
30
30
  var _utils = require("./utils");
31
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
32
31
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
33
32
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
33
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
34
34
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
35
35
  const UTSelect = _ref => {
36
36
  let {
37
37
  captionLabel,
38
38
  classNames,
39
39
  classes: themeClasses,
40
- disabled,
40
+ dataTestId,
41
41
  disableFirstOption,
42
+ disabled,
43
+ errorDataTestId,
42
44
  field,
43
45
  iconPlaceholder: IconPlaceholder,
44
46
  input,
47
+ itemDataTestId,
45
48
  labelKey,
46
49
  labelProps,
50
+ listDataTestId,
47
51
  menuPlaceholder,
48
52
  meta,
49
53
  options,
@@ -91,29 +95,40 @@ const UTSelect = _ref => {
91
95
  }, /*#__PURE__*/_react.default.createElement(IconPlaceholder, {
92
96
  className: classes.labelIcon
93
97
  }), /*#__PURE__*/_react.default.createElement("div", null, placeholder)) : placeholder), /*#__PURE__*/_react.default.createElement(_Select.default, _extends({
94
- name: input.name,
95
- multiple: isMultiple,
96
- value: isMultiple ? (0, _array.isEmpty)(input.value) ? [] : (0, _clone.default)(input.value) : input.value,
97
- onChange: handleChange,
98
- disabled: disabled,
99
- label: variant === 'outlined' && placeholder,
100
98
  classes: {
101
99
  nativeInput: _stylesModule.default.nativeInput
102
- }
100
+ },
101
+ disabled: disabled,
102
+ inputProps: {
103
+ 'data-testid': dataTestId
104
+ },
105
+ label: variant === 'outlined' && placeholder,
106
+ MenuProps: {
107
+ MenuListProps: {
108
+ 'data-testid': listDataTestId
109
+ }
110
+ },
111
+ multiple: isMultiple,
112
+ name: input.name,
113
+ onChange: handleChange,
114
+ value: isMultiple ? (0, _array.isEmpty)(input.value) ? [] : (0, _clone.default)(input.value) : input.value
103
115
  }, isMultiple ? {
104
116
  renderValue: handleRenderValue
105
117
  } : {}, selectProps), !withoutFirstOption && /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
106
- value: "",
107
- disabled: isMultiple || disableFirstOption
108
- }, menuPlaceholder || (isMultiple ? _constants.MENU_TITLE_MULTIPLE : _constants.MENU_TITLE)), sortedOptions.map(option => (0, _array.isEmpty)(option.subOptions) ? /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
118
+ "data-testid": "".concat(itemDataTestId, ".firstOption"),
119
+ disabled: isMultiple || disableFirstOption,
120
+ value: ""
121
+ }, menuPlaceholder || (isMultiple ? _constants.MENU_TITLE_MULTIPLE : _constants.MENU_TITLE)), sortedOptions.map((option, i) => (0, _array.isEmpty)(option.subOptions) ? /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
122
+ "data-testid": "".concat(itemDataTestId, ".").concat(i),
109
123
  key: option[valueKey],
110
124
  value: option[valueKey]
111
125
  }, /*#__PURE__*/_react.default.createElement(_Option.default, _extends({
112
126
  optionProps: option
113
127
  }, optionCommonProps))) : [/*#__PURE__*/_react.default.createElement(_ListSubheader.default, {
114
128
  className: _stylesModule.default.subHeader
115
- }, option[labelKey]), option.subOptions.map(subOption => /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
129
+ }, option[labelKey]), option.subOptions.map((subOption, index) => /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
116
130
  className: classes.subOption,
131
+ "data-testid": "".concat(itemDataTestId, ".").concat(index),
117
132
  key: subOption[valueKey],
118
133
  value: subOption[valueKey]
119
134
  }, /*#__PURE__*/_react.default.createElement(_Option.default, _extends({
@@ -126,15 +141,16 @@ const UTSelect = _ref => {
126
141
  }, captionLabel), (0, _form.shouldShowErrors)(meta) && /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
127
142
  className: _stylesModule.default.errorLabel,
128
143
  colorTheme: "error",
144
+ dataTestId: errorDataTestId,
129
145
  variant: "small"
130
146
  }, meta.error)));
131
147
  return /*#__PURE__*/_react.default.createElement("div", {
132
148
  className: classes.container
133
149
  }, tooltip ? /*#__PURE__*/_react.default.createElement(_Grid.default, {
134
- style: _stylesJS.default.gridContainer,
150
+ alignItems: "flex-end",
135
151
  container: true,
136
152
  spacing: 1,
137
- alignItems: "flex-end"
153
+ style: _stylesJS.default.gridContainer
138
154
  }, /*#__PURE__*/_react.default.createElement(_Grid.default, {
139
155
  item: true,
140
156
  xs: true
@@ -177,13 +193,17 @@ UTSelect.propTypes = {
177
193
  tooltipIcon: _propTypes.string,
178
194
  upperTitle: _propTypes.string
179
195
  }),
180
- disabled: _propTypes.bool,
196
+ dataTestId: _propTypes.string,
181
197
  disableFirstOption: _propTypes.bool,
198
+ disabled: _propTypes.bool,
199
+ errorDataTestId: _propTypes.string,
182
200
  field: _formTypes.fieldType,
183
201
  iconPlaceholder: _propTypes.node,
184
202
  input: _formTypes.inputPropTypes,
203
+ itemDataTestId: _propTypes.string,
185
204
  labelKey: _propTypes.string,
186
205
  labelProps: _propTypes.object,
206
+ listDataTestId: _propTypes.string,
187
207
  menuPlaceholder: _propTypes.string,
188
208
  meta: _formTypes.metaPropTypes,
189
209
  options: (0, _propTypes.arrayOf)(_propTypes.object),