@widergy/utilitygo-smart-bill-web 3.10.0 → 3.12.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 (26) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -0
  3. package/dist/components/SmartBillSummary/constants.js +12 -1
  4. package/dist/components/SmartBillSummary/index.js +63 -8
  5. package/dist/components/SmartBillSummary/styles.module.scss +5 -0
  6. package/dist/components/SmartBillSummary/tabs/Billing/components/ActionCards/index.js +63 -0
  7. package/dist/components/SmartBillSummary/tabs/Billing/components/ActionCards/styles.module.scss +28 -0
  8. package/dist/components/SmartBillSummary/tabs/Billing/components/BillHeader/index.js +64 -0
  9. package/dist/components/SmartBillSummary/tabs/Billing/components/BillHeader/styles.module.scss +43 -0
  10. package/dist/components/SmartBillSummary/tabs/Billing/components/ColumnRenderer/constants.js +17 -0
  11. package/dist/components/SmartBillSummary/tabs/Billing/components/ColumnRenderer/index.js +35 -0
  12. package/dist/components/SmartBillSummary/tabs/Billing/components/ColumnRenderer/styles.module.scss +23 -0
  13. package/dist/components/SmartBillSummary/tabs/Billing/components/RateCard/index.js +13 -3
  14. package/dist/components/SmartBillSummary/tabs/Billing/components/RateCard/styles.module.scss +14 -2
  15. package/dist/components/SmartBillSummary/tabs/Billing/components/TitularCard/index.js +80 -0
  16. package/dist/components/SmartBillSummary/tabs/Billing/components/TitularCard/styles.module.scss +32 -0
  17. package/dist/components/SmartBillSummary/tabs/Billing/components/TotalCard/index.js +52 -0
  18. package/dist/components/SmartBillSummary/tabs/Billing/components/TotalCard/styles.module.scss +15 -0
  19. package/dist/components/SmartBillSummary/tabs/Billing/index.js +44 -138
  20. package/dist/components/SmartBillSummary/tabs/Billing/styles.module.scss +7 -137
  21. package/dist/components/SmartBillSummary/tabs/Consumptions/components/Billing/index.js +1 -1
  22. package/dist/components/SmartBillSummary/tabs/Consumptions/components/BimestralConsumption/constants.js +7 -2
  23. package/dist/components/SmartBillSummary/tabs/Consumptions/components/BimestralConsumption/index.js +29 -2
  24. package/dist/components/SmartBillSummary/tabs/Consumptions/index.js +4 -1
  25. package/dist/components/SmartBillSummary/utils.js +30 -4
  26. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ # [3.12.0](https://github.com/widergy/UtilityGO-Smart-Bill-Web/compare/v3.11.0...v3.12.0) (2025-08-27)
2
+
3
+
4
+ ### Features
5
+
6
+ * [EVEP-27] smartbill onboarding ([#62](https://github.com/widergy/UtilityGO-Smart-Bill-Web/issues/62)) ([d7bdeac](https://github.com/widergy/UtilityGO-Smart-Bill-Web/commit/d7bdeac4050d6ebf615a00a05eddae36de48fa07)), closes [#60](https://github.com/widergy/UtilityGO-Smart-Bill-Web/issues/60) [#60](https://github.com/widergy/UtilityGO-Smart-Bill-Web/issues/60) [#59](https://github.com/widergy/UtilityGO-Smart-Bill-Web/issues/59) [#59](https://github.com/widergy/UtilityGO-Smart-Bill-Web/issues/59)
7
+ * updates readme ([cc9caa2](https://github.com/widergy/UtilityGO-Smart-Bill-Web/commit/cc9caa29601d5052e9b260e057184f6f8d39d3c8))
8
+
9
+ # [3.11.0](https://github.com/widergy/UtilityGO-Smart-Bill-Web/compare/v3.10.0...v3.11.0) (2025-08-25)
10
+
11
+
12
+ ### Features
13
+
14
+ * [EVEP2-26] billing new structure ([#59](https://github.com/widergy/UtilityGO-Smart-Bill-Web/issues/59)) ([b4e199f](https://github.com/widergy/UtilityGO-Smart-Bill-Web/commit/b4e199f3cbddf697fcefe211a0b971e49d3253ce))
15
+
1
16
  # [3.10.0](https://github.com/widergy/UtilityGO-Smart-Bill-Web/compare/v3.9.2...v3.10.0) (2025-08-20)
2
17
 
3
18
 
package/README.md CHANGED
@@ -1,3 +1,4 @@
1
+
1
2
  # react-package-bootstrap ![Logo](https://funkyimg.com/i/2VY6U.png)
2
3
 
3
4
  ![WidergyWeb](https://img.shields.io/badge/WIDERGY-WEB-00d564.svg)
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.TAB_COMPONENT_MAPPER = exports.BIMESTRAL_PERIODICITY = void 0;
6
+ exports.TAB_VALUE_REGEX = exports.TAB_SELECTOR = exports.TAB_COMPONENT_MAPPER = exports.ONBOARDING_OPTIONS = exports.CAPTURED_VALUE_REGEX = exports.BIMESTRAL_PERIODICITY = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _tabs = require("../../shared/constants/tabs");
9
9
  var _Consumptions = _interopRequireDefault(require("./tabs/Consumptions"));
@@ -12,6 +12,17 @@ var _Billing = _interopRequireDefault(require("./tabs/Billing"));
12
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
13
  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); } /* eslint-disable react/prop-types */
14
14
  const BIMESTRAL_PERIODICITY = exports.BIMESTRAL_PERIODICITY = 'BIMESTRAL';
15
+ const TAB_SELECTOR = exports.TAB_SELECTOR = '[data-tab-value=';
16
+ const TAB_VALUE_REGEX = exports.TAB_VALUE_REGEX = /\[data-tab-value="([^"]+)"\]/;
17
+ const CAPTURED_VALUE_REGEX = exports.CAPTURED_VALUE_REGEX = 1;
18
+ const ONBOARDING_OPTIONS = exports.ONBOARDING_OPTIONS = {
19
+ overlayOpacity: 1,
20
+ positionPrecedence: ['top', 'left', 'bottom', 'right'],
21
+ scrollPadding: 5,
22
+ scrollTo: 'tooltip',
23
+ scrollToElement: false,
24
+ tooltipPosition: 'top'
25
+ };
15
26
  const renderComponentWithProps = (Component, tab) => props => /*#__PURE__*/_react.default.createElement(Component, _extends({}, props, {
16
27
  assets: props?.assets?.[tab] || {},
17
28
  translations: props?.translations?.[tab] || {}
@@ -13,16 +13,24 @@ var _constants = require("./constants");
13
13
  var _utils = require("./utils");
14
14
  var _AIPanel = _interopRequireDefault(require("./components/AIPanel"));
15
15
  var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
16
+ var _BillHeader = _interopRequireDefault(require("./tabs/Billing/components/BillHeader"));
17
+ var _utils2 = require("./tabs/Billing/utils");
16
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
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); }
18
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; }
19
21
  const SmartBillSummary = _ref => {
20
22
  let {
23
+ annex,
21
24
  assets,
25
+ billingLayout,
22
26
  constants,
23
27
  components,
24
28
  handlers,
25
29
  loading,
30
+ showOnboarding = false,
31
+ onCloseOnboarding,
32
+ onboardingSteps,
33
+ reverseRow,
26
34
  smartBill,
27
35
  tabOptions,
28
36
  translations,
@@ -52,10 +60,27 @@ const SmartBillSummary = _ref => {
52
60
  trackAIFloatingButtonClick,
53
61
  trackTabChange
54
62
  } = handlers;
55
- const filteredTabOptions = loading ? [] : (0, _utils.getTabOptions)(isDesktopSize, tabOptions, smartBill);
56
- const defaultCurrentTab = (0, _utils.getDefaultCurrentTab)(filteredTabOptions);
63
+ const {
64
+ tabs,
65
+ onboardingSteps: filteredOnboardingSteps
66
+ } = loading ? {
67
+ tabs: [],
68
+ onboardingSteps: []
69
+ } : (0, _utils.getTabOptions)(isDesktopSize, onboardingSteps, tabOptions, smartBill);
70
+ const defaultCurrentTab = (0, _utils.getDefaultCurrentTab)(tabs);
57
71
  const [currentTab, setCurrentTab] = (0, _react.useState)(defaultCurrentTab);
58
72
  const [aiPanelIsOpen, setAiPanelIsOpen] = (0, _react.useState)(false);
73
+ const [stableLoading, setStableLoading] = (0, _react.useState)(true);
74
+ (0, _react.useEffect)(() => {
75
+ if (loading) {
76
+ setStableLoading(true);
77
+ } else {
78
+ const timer = setTimeout(() => {
79
+ setStableLoading(false);
80
+ }, 200);
81
+ return () => clearTimeout(timer);
82
+ }
83
+ }, [loading]);
59
84
  const changeCurrentTab = newTab => setCurrentTab(newTab);
60
85
  const openAIPanel = () => {
61
86
  trackAIFloatingButtonClick();
@@ -77,26 +102,43 @@ const SmartBillSummary = _ref => {
77
102
  return /*#__PURE__*/_react.default.createElement(_energyUi.UTLoading, {
78
103
  className: _stylesModule.default.loadingContainer,
79
104
  loading: loading
105
+ }, /*#__PURE__*/_react.default.createElement("div", {
106
+ className: showOnboarding ? _stylesModule.default.tabs : ''
80
107
  }, /*#__PURE__*/_react.default.createElement(_energyUi.UTTabs, {
81
108
  classNames: {
82
109
  baseLabel: _stylesModule.default.tabLabel,
83
110
  baseSelected: _stylesModule.default.baseSelected,
84
- flexContainer: _stylesModule.default.tabsContainer
111
+ flexContainer: _stylesModule.default.tabsContainer,
112
+ tabRoot: 'smartbill-tab'
85
113
  },
86
114
  onChange: newTab => {
87
115
  trackTabChange(newTab);
88
116
  changeCurrentTab(newTab);
89
117
  },
90
- options: filteredTabOptions,
118
+ options: tabs.map(tab => ({
119
+ ...tab,
120
+ 'data-tab-value': tab.value
121
+ })),
91
122
  tabsProps: {
92
123
  orientation: 'horizontal',
93
124
  variant: 'fullWidth'
94
125
  },
95
126
  value: currentTab
96
- }), /*#__PURE__*/_react.default.createElement("div", {
127
+ })), /*#__PURE__*/_react.default.createElement("div", {
97
128
  className: _stylesModule.default.contentContainer
98
- }, _constants.TAB_COMPONENT_MAPPER?.[currentTab]?.({
129
+ }, tabs.find(tab => tab.value === currentTab)?.header && /*#__PURE__*/_react.default.createElement(_BillHeader.default, {
130
+ annex,
131
+ UtilityLogo: assets.billingTab.UtilityLogo,
132
+ billNumber: smartBill.bill_number,
133
+ billTypeHelpText: translations.billingTab.header.billTypeHelpText,
134
+ issuedOnDate: (0, _utils2.getFormattedDate)((0, _utils2.getCurrentPeriod)(smartBill)?.settlements?.current?.issued_on),
135
+ billIssueDate: translations.billingTab.header.billIssueDate,
136
+ debtStatusValidation: smartBill.debt_status_label !== null,
137
+ debtStatusLabel: smartBill.debt_status_label,
138
+ smartBill
139
+ }), _constants.TAB_COMPONENT_MAPPER?.[currentTab]?.({
99
140
  assets,
141
+ billingLayout,
100
142
  constants,
101
143
  consumptionLevels,
102
144
  components,
@@ -107,11 +149,12 @@ const SmartBillSummary = _ref => {
107
149
  handlers,
108
150
  isDesktopSize,
109
151
  loading,
152
+ reverseRow,
110
153
  smartBill,
111
154
  translations,
112
155
  utils
113
156
  })), aiQuestionsPanelEnabled && /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_energyUi.UTTouchableWithoutFeedback, {
114
- className: _stylesModule.default.AIFloatButton,
157
+ className: `${_stylesModule.default.AIFloatButton} smartbill-ai-float-button`,
115
158
  onClick: openAIPanel,
116
159
  withRipple: true
117
160
  }, /*#__PURE__*/_react.default.createElement(_energyUi.UTIcon, {
@@ -130,10 +173,18 @@ const SmartBillSummary = _ref => {
130
173
  notEnoughBillsErrorType: notEnoughBillsErrorType,
131
174
  onClose: closeAIPanel,
132
175
  translations: translations
133
- })));
176
+ })), !stableLoading && showOnboarding && /*#__PURE__*/_react.default.createElement(_energyUi.UTOnboarding, {
177
+ options: _constants.ONBOARDING_OPTIONS,
178
+ enabled: showOnboarding,
179
+ handleComplete: onCloseOnboarding,
180
+ handleOnClose: onCloseOnboarding,
181
+ steps: filteredOnboardingSteps
182
+ }));
134
183
  };
135
184
  SmartBillSummary.propTypes = {
185
+ annex: _propTypes.bool,
136
186
  assets: _propTypes.object,
187
+ billingLayout: (0, _propTypes.arrayOf)(_propTypes.object),
137
188
  constants: _propTypes.object,
138
189
  components: (0, _propTypes.shape)({
139
190
  [_propTypes.string]: _propTypes.elementType
@@ -142,6 +193,10 @@ SmartBillSummary.propTypes = {
142
193
  [_propTypes.string]: _propTypes.func
143
194
  }),
144
195
  loading: _propTypes.bool,
196
+ showOnboarding: _propTypes.bool,
197
+ onCloseOnboarding: _propTypes.func,
198
+ onboardingSteps: (0, _propTypes.arrayOf)(_propTypes.object),
199
+ reverseRow: _propTypes.object,
145
200
  smartBill: _billDataTypes.billDataTypes,
146
201
  tabOptions: (0, _propTypes.arrayOf)((0, _propTypes.shape)({
147
202
  defaultSelected: _propTypes.bool,
@@ -12,6 +12,11 @@ $tab-height: 48px;
12
12
  }
13
13
  }
14
14
 
15
+ .tabs {
16
+ width: 96%;
17
+ margin: 0 auto;
18
+ }
19
+
15
20
  .contentContainer {
16
21
  flex: 1;
17
22
  margin: 0 auto;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _energyUi = require("@widergy/energy-ui");
9
+ var _propTypes = require("prop-types");
10
+ var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ 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); }
13
+ 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; }
14
+ 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); }
15
+ const ActionCards = _ref => {
16
+ let {
17
+ actionCards,
18
+ adhered,
19
+ notAdhered,
20
+ isDesktopSize
21
+ } = _ref;
22
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, actionCards?.map(_ref2 => {
23
+ let {
24
+ isAdhered,
25
+ leftIcon,
26
+ leftIconProps = {},
27
+ onClick,
28
+ rightIcon,
29
+ showStatus,
30
+ title
31
+ } = _ref2;
32
+ return /*#__PURE__*/_react.default.createElement(_energyUi.UTTouchableWithoutFeedback, {
33
+ className: `${_stylesModule.default.cardContainer} ${!onClick && _stylesModule.default.unclickableCardContainer}`,
34
+ disabled: !onClick,
35
+ key: title,
36
+ onClick: onClick,
37
+ withRipple: true
38
+ }, isDesktopSize && /*#__PURE__*/_react.default.createElement(_energyUi.UTIcon, _extends({
39
+ colorTheme: "gray",
40
+ name: leftIcon
41
+ }, leftIconProps)), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
42
+ className: _stylesModule.default.cardTitle,
43
+ variant: "subtitle1",
44
+ weight: "medium"
45
+ }, title), showStatus && /*#__PURE__*/_react.default.createElement(_energyUi.UTStatus, {
46
+ type: "light",
47
+ variant: isAdhered ? 'success' : 'unassigned',
48
+ withoutIcon: !isAdhered
49
+ }, isAdhered ? adhered : notAdhered), onClick && /*#__PURE__*/_react.default.createElement("div", {
50
+ className: _stylesModule.default.cardIconContainer
51
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTIcon, {
52
+ colorTheme: "accent",
53
+ name: rightIcon || 'IconChevronRight'
54
+ })));
55
+ }));
56
+ };
57
+ ActionCards.propTypes = {
58
+ actionCards: _propTypes.array,
59
+ adhered: _propTypes.string,
60
+ notAdhered: _propTypes.string,
61
+ isDesktopSize: _propTypes.bool
62
+ };
63
+ var _default = exports.default = ActionCards;
@@ -0,0 +1,28 @@
1
+ @import '../../../../../../scss/variables/colorsExport.module.scss';
2
+
3
+ .cardContainer {
4
+ align-items: center;
5
+ background-color: var(--light01);
6
+ border-radius: 8px;
7
+ box-shadow: var(--shadowGrayBottom1);
8
+ display: flex;
9
+ grid-gap: 16px;
10
+ justify-content: space-between;
11
+ padding: 16px;
12
+ transition: all 0.2s;
13
+ }
14
+
15
+ .unclickableCardContainer {
16
+ cursor: default;
17
+ }
18
+
19
+ .cardTitle {
20
+ flex: 1;
21
+ }
22
+
23
+ .cardIconContainer {
24
+ align-items: center;
25
+ display: flex;
26
+ justify-content: center;
27
+ padding: 8px;
28
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _energyUi = require("@widergy/energy-ui");
9
+ var _propTypes = require("prop-types");
10
+ var _DebtStatusLabel = _interopRequireDefault(require("../DebtStatusLabel"));
11
+ var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const BillHeader = _ref => {
14
+ let {
15
+ annex,
16
+ UtilityLogo,
17
+ billNumber,
18
+ billTypeHelpText,
19
+ issuedOnDate,
20
+ billIssueDate,
21
+ debtStatusValidation,
22
+ debtStatusLabel,
23
+ smartBill
24
+ } = _ref;
25
+ return /*#__PURE__*/_react.default.createElement("div", {
26
+ className: _stylesModule.default.billHeader
27
+ }, /*#__PURE__*/_react.default.createElement("div", {
28
+ className: _stylesModule.default.billHeaderLabels
29
+ }, UtilityLogo && /*#__PURE__*/_react.default.createElement(UtilityLogo, {
30
+ className: _stylesModule.default.logo
31
+ }), /*#__PURE__*/_react.default.createElement("div", {
32
+ className: _stylesModule.default.valueAndHelpText
33
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
34
+ variant: "small"
35
+ }, billNumber), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
36
+ colorTheme: "gray",
37
+ variant: "small"
38
+ }, billTypeHelpText)), /*#__PURE__*/_react.default.createElement("div", {
39
+ className: _stylesModule.default.valueAndHelpText
40
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
41
+ variant: "small"
42
+ }, issuedOnDate), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
43
+ colorTheme: "gray",
44
+ variant: "small"
45
+ }, billIssueDate)), debtStatusValidation && /*#__PURE__*/_react.default.createElement(_DebtStatusLabel.default, {
46
+ debtStatusLabel: debtStatusLabel,
47
+ isWarning: smartBill?.warning
48
+ })), annex && /*#__PURE__*/_react.default.createElement(_energyUi.UTButton, {
49
+ variant: "text",
50
+ disabled: true
51
+ }, "Anexos"));
52
+ };
53
+ BillHeader.propTypes = {
54
+ annex: _propTypes.bool,
55
+ UtilityLogo: _propTypes.elementType,
56
+ billNumber: _propTypes.string,
57
+ billTypeHelpText: _propTypes.string,
58
+ issuedOnDate: _propTypes.string,
59
+ billIssueDate: _propTypes.string,
60
+ debtStatusValidation: _propTypes.bool,
61
+ debtStatusLabel: _propTypes.string,
62
+ smartBill: _propTypes.object
63
+ };
64
+ var _default = exports.default = BillHeader;
@@ -0,0 +1,43 @@
1
+ @import '../../../../../../scss/variables/mediaQueries.module.scss';
2
+
3
+ .billHeader {
4
+ align-items: center;
5
+ background-color: var(--light01);
6
+ border-radius: 8px;
7
+ box-shadow: var(--shadowGrayBottom1);
8
+ display: flex;
9
+ flex-wrap: wrap;
10
+ grid-gap: 16px;
11
+ justify-content: space-between;
12
+ padding: 12px 16px;
13
+ margin: 24px 32px 0 32px;
14
+ @media #{$mobile} {
15
+ margin: 24px 16px 0 16px;
16
+ }
17
+ }
18
+
19
+ .logo {
20
+ height: 30px;
21
+ object-fit: contain;
22
+ width: auto;
23
+ }
24
+
25
+ .billHeaderLabels {
26
+ align-items: center;
27
+ display: flex;
28
+ flex-wrap: wrap;
29
+ grid-gap: 32px;
30
+ justify-content: space-between;
31
+ padding: 16px 0;
32
+
33
+ @media #{$mobile} {
34
+ grid-gap: 16px;
35
+ padding: 0;
36
+ }
37
+ }
38
+
39
+ .valueAndHelpText {
40
+ display: flex;
41
+ flex-direction: column;
42
+ grid-gap: 4px;
43
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.COMPONENTS = void 0;
7
+ var _ActionCards = _interopRequireDefault(require("../ActionCards"));
8
+ var _TitularCard = _interopRequireDefault(require("../TitularCard"));
9
+ var _TotalCard = _interopRequireDefault(require("../TotalCard"));
10
+ var _RateCard = _interopRequireDefault(require("../RateCard"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const COMPONENTS = exports.COMPONENTS = {
13
+ ActionCards: _ActionCards.default,
14
+ TitularCard: _TitularCard.default,
15
+ TotalCard: _TotalCard.default,
16
+ RateCard: _RateCard.default
17
+ };
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = require("prop-types");
9
+ var _constants = require("./constants");
10
+ var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ 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); }
13
+ const ColumnRenderer = _ref => {
14
+ let {
15
+ column,
16
+ ...props
17
+ } = _ref;
18
+ return /*#__PURE__*/_react.default.createElement("div", {
19
+ className: _stylesModule.default.column
20
+ }, column.map(_ref2 => {
21
+ let {
22
+ name,
23
+ enabled
24
+ } = _ref2;
25
+ const Component = _constants.COMPONENTS[name];
26
+ return enabled && Component && /*#__PURE__*/_react.default.createElement(Component, _extends({
27
+ key: name
28
+ }, props));
29
+ }));
30
+ };
31
+ ColumnRenderer.propTypes = {
32
+ column: (0, _propTypes.arrayOf)(_propTypes.object),
33
+ props: _propTypes.object
34
+ };
35
+ var _default = exports.default = ColumnRenderer;
@@ -0,0 +1,23 @@
1
+ @import '_mediaQueries.scss';
2
+
3
+ $columns-gap: 32px;
4
+ $columns-gap-mobile: 24px;
5
+
6
+ .column {
7
+ display: flex;
8
+ flex-direction: column;
9
+ margin-right: $columns-gap;
10
+ width: calc(50% - #{$columns-gap} / 2);
11
+
12
+ @media #{$tablet-mobile} {
13
+ width: 100%;
14
+ }
15
+
16
+ > * {
17
+ margin-bottom: 24px;
18
+
19
+ @media #{$tablet-mobile} {
20
+ margin-bottom: $columns-gap-mobile;
21
+ }
22
+ }
23
+ }
@@ -11,6 +11,7 @@ var _numeral = _interopRequireDefault(require("numeral"));
11
11
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
12
12
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
13
13
  var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
14
+ var _isNaN = _interopRequireDefault(require("lodash/isNaN"));
14
15
  var _utils = require("../../../Consumptions/components/CurrentConsumption/utils");
15
16
  var _testIds = require("../../../../../../constants/testIds");
16
17
  var _utils2 = require("./utils");
@@ -56,7 +57,8 @@ const RateCard = _ref => {
56
57
  client,
57
58
  periods,
58
59
  levelValue: limitSubsidyValue = 0,
59
- levelNumber
60
+ levelNumber,
61
+ rate: rateValue
60
62
  } = smartBill;
61
63
  const purchasedRate = client?.rate?.purchased || '';
62
64
  const periodsToCompare = (0, _utils.getConsumptionPeriodsToCompare)(periods);
@@ -108,6 +110,8 @@ const RateCard = _ref => {
108
110
  };
109
111
  return /*#__PURE__*/_react.default.createElement("div", {
110
112
  className: _stylesModule.default.container
113
+ }, /*#__PURE__*/_react.default.createElement("div", {
114
+ className: _stylesModule.default.header
111
115
  }, /*#__PURE__*/_react.default.createElement("div", {
112
116
  className: _stylesModule.default.headerTitles
113
117
  }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
@@ -127,7 +131,13 @@ const RateCard = _ref => {
127
131
  className: _stylesModule.default.bannerDetailText
128
132
  }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
129
133
  dataTestId: smartBillTestIds.rateCard.bannerLabel
130
- }, banner.label?.(limitSubsidyValue, diff))))), !noLevels && /*#__PURE__*/_react.default.createElement(_ProgressBar.default, {
134
+ }, banner.label?.(limitSubsidyValue, diff))))), rateValue && /*#__PURE__*/_react.default.createElement("div", {
135
+ className: _stylesModule.default.rateValue
136
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTStatus, {
137
+ type: "light",
138
+ variant: "information",
139
+ withoutIcon: true
140
+ }, rateValue))), !noLevels && /*#__PURE__*/_react.default.createElement(_ProgressBar.default, {
131
141
  components: components,
132
142
  currentPeriod: currentPeriod,
133
143
  data: rates,
@@ -159,7 +169,7 @@ const RateCard = _ref => {
159
169
  colorTheme: "gray",
160
170
  dataTestId: smartBillTestIds.rateCard.yourConsumption,
161
171
  variant: "small"
162
- }, yourConsumption))), levelNumber && /*#__PURE__*/_react.default.createElement("div", {
172
+ }, yourConsumption))), !(0, _isNaN.default)(levelNumber) && levelNumber && /*#__PURE__*/_react.default.createElement("div", {
163
173
  className: _stylesModule.default.levelNumber,
164
174
  "data-testid": smartBillTestIds.rateCard.level
165
175
  }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
@@ -7,11 +7,23 @@
7
7
  grid-gap: 24px;
8
8
  }
9
9
 
10
+ .header {
11
+ display: flex;
12
+ padding: 24px 24px 0;
13
+ }
14
+
15
+ .rateValue {
16
+ align-self: flex-start;
17
+ display: flex;
18
+ justify-content: flex-end;
19
+ margin-left: 16px;
20
+ width: 30%;
21
+ }
22
+
10
23
  .headerTitles {
11
24
  display: flex;
12
25
  flex-direction: column;
13
26
  grid-gap: 8px;
14
- padding: 24px 24px 0;
15
27
  }
16
28
 
17
29
  .consumptionDataContainer {
@@ -85,6 +97,6 @@
85
97
  display: flex;
86
98
  grid-gap: 8px;
87
99
  justify-content: space-between;
88
- margin: 0px 16px;
100
+ margin: 0 16px;
89
101
  padding: 24px;
90
102
  }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _energyUi = require("@widergy/energy-ui");
9
+ var _propTypes = require("prop-types");
10
+ var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const TitularCard = _ref => {
13
+ let {
14
+ titularCardTitle,
15
+ accountAddress,
16
+ postalAddress,
17
+ addressHelpText,
18
+ titularName,
19
+ titularHelpText,
20
+ clientNumberFormatter,
21
+ clientNumber,
22
+ clientNumberHelpText,
23
+ ivaCondition,
24
+ ivaConditionHelpText,
25
+ renderTitularFooter
26
+ } = _ref;
27
+ return /*#__PURE__*/_react.default.createElement("div", {
28
+ className: _stylesModule.default.titularCard
29
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
30
+ variant: "title2",
31
+ weight: "medium"
32
+ }, titularCardTitle), /*#__PURE__*/_react.default.createElement("div", {
33
+ className: _stylesModule.default.titularDataContainer
34
+ }, accountAddress && /*#__PURE__*/_react.default.createElement("div", {
35
+ className: _stylesModule.default.titularData
36
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
37
+ className: _stylesModule.default.titularDataTitle,
38
+ weight: "bold"
39
+ }, accountAddress), accountAddress !== postalAddress && /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, null, postalAddress), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
40
+ colorTheme: "gray"
41
+ }, addressHelpText)), titularName && /*#__PURE__*/_react.default.createElement("div", {
42
+ className: _stylesModule.default.titularData
43
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
44
+ className: _stylesModule.default.titularDataTitle,
45
+ weight: "bold"
46
+ }, titularName), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
47
+ colorTheme: "gray"
48
+ }, titularHelpText)), renderTitularFooter && /*#__PURE__*/_react.default.createElement("div", {
49
+ className: _stylesModule.default.titularFooter
50
+ }, clientNumber && /*#__PURE__*/_react.default.createElement("div", {
51
+ className: _stylesModule.default.titularData
52
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
53
+ className: _stylesModule.default.titularDataTitle,
54
+ weight: "bold"
55
+ }, clientNumberFormatter?.(clientNumber)), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
56
+ colorTheme: "gray"
57
+ }, clientNumberHelpText)), ivaCondition && /*#__PURE__*/_react.default.createElement("div", {
58
+ className: _stylesModule.default.titularData
59
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
60
+ className: _stylesModule.default.titularDataTitle,
61
+ weight: "bold"
62
+ }, ivaCondition), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
63
+ colorTheme: "gray"
64
+ }, ivaConditionHelpText)))));
65
+ };
66
+ TitularCard.propTypes = {
67
+ titularCardTitle: _propTypes.string,
68
+ accountAddress: _propTypes.string,
69
+ postalAddress: _propTypes.string,
70
+ addressHelpText: _propTypes.string,
71
+ titularName: _propTypes.string,
72
+ titularHelpText: _propTypes.string,
73
+ clientNumberFormatter: _propTypes.func,
74
+ clientNumber: _propTypes.string,
75
+ clientNumberHelpText: _propTypes.string,
76
+ ivaCondition: _propTypes.string,
77
+ ivaConditionHelpText: _propTypes.string,
78
+ renderTitularFooter: _propTypes.bool
79
+ };
80
+ var _default = exports.default = TitularCard;