@widergy/utilitygo-smart-bill-web 3.18.1 → 3.20.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 (44) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/components/SmartBillSummary/constants.js +1 -5
  3. package/dist/components/SmartBillSummary/index.js +20 -11
  4. package/dist/components/SmartBillSummary/styles.module.scss +13 -11
  5. package/dist/components/SmartBillSummary/tabs/Billing/index.js +1 -1
  6. package/dist/components/SmartBillSummary/tabs/Consumptions/components/ProgressBarCard/components/ProgressBarItem/index.js +93 -0
  7. package/dist/components/SmartBillSummary/tabs/Consumptions/components/ProgressBarCard/components/ProgressBarItem/styles.module.scss +109 -0
  8. package/dist/components/SmartBillSummary/tabs/Consumptions/components/ProgressBarCard/components/ProgressBarItem/utils.js +13 -0
  9. package/dist/components/SmartBillSummary/tabs/Consumptions/components/ProgressBarCard/components/ReiterationBanner/index.js +50 -0
  10. package/dist/components/SmartBillSummary/tabs/Consumptions/components/ProgressBarCard/components/ReiterationBanner/styles.module.scss +43 -0
  11. package/dist/components/SmartBillSummary/tabs/Consumptions/components/ProgressBarCard/components/SimpleBanner/index.js +27 -0
  12. package/dist/components/SmartBillSummary/tabs/Consumptions/components/ProgressBarCard/components/SimpleBanner/styles.module.scss +12 -0
  13. package/dist/components/SmartBillSummary/tabs/Consumptions/components/ProgressBarCard/index.js +49 -0
  14. package/dist/components/SmartBillSummary/tabs/Consumptions/components/ProgressBarCard/utils.js +58 -0
  15. package/dist/components/SmartBillSummary/tabs/Consumptions/index.js +30 -15
  16. package/dist/components/SmartBillSummary/tabs/Consumptions/styles.module.scss +19 -16
  17. package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/ActionCards/styles.module.scss +1 -1
  18. package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/BillHeader/styles.module.scss +1 -1
  19. package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/ColumnRenderer/constants.js +7 -1
  20. package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/ColumnRenderer/styles.module.scss +1 -1
  21. package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/RateCard/components/ProgressBar/styles.module.scss +2 -1
  22. package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/RateCard/index.js +2 -2
  23. package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/SecondHeader/styles.module.scss +1 -1
  24. package/dist/components/SmartBillSummary/utils.js +8 -11
  25. package/dist/index.js +1 -1
  26. package/package.json +2 -2
  27. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/AccountCard/index.js +0 -0
  28. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/AccountCard/styles.module.scss +0 -0
  29. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/ActionCards/index.js +0 -0
  30. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/BillHeader/index.js +0 -0
  31. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/ColumnRenderer/index.js +0 -0
  32. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/DebtStatusLabel/constants.js +0 -0
  33. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/DebtStatusLabel/index.js +0 -0
  34. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/DebtStatusLabel/styles.module.scss +0 -0
  35. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/RateCard/components/ProgressBar/constants.js +0 -0
  36. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/RateCard/components/ProgressBar/index.js +0 -0
  37. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/RateCard/components/ProgressBar/utils.js +0 -0
  38. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/RateCard/styles.module.scss +0 -0
  39. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/RateCard/utils.js +0 -0
  40. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/SecondHeader/index.js +0 -0
  41. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/TitularCard/index.js +0 -0
  42. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/TitularCard/styles.module.scss +0 -0
  43. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/TotalCard/index.js +0 -0
  44. /package/dist/components/SmartBillSummary/tabs/{Billing/components → components}/TotalCard/styles.module.scss +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # [3.20.0](https://github.com/widergy/UtilityGO-Smart-Bill-Web/compare/v3.19.0...v3.20.0) (2025-12-23)
2
+
3
+
4
+ ### Features
5
+
6
+ * city and district props in smartbill service ([#75](https://github.com/widergy/UtilityGO-Smart-Bill-Web/issues/75)) ([d09ddd9](https://github.com/widergy/UtilityGO-Smart-Bill-Web/commit/d09ddd9fc359c918555a88ac65f4b4c6d9d940e0))
7
+
8
+ # [3.19.0](https://github.com/widergy/UtilityGO-Smart-Bill-Web/compare/v3.18.1...v3.19.0) (2025-12-22)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * updates npm token ([3cec5b1](https://github.com/widergy/UtilityGO-Smart-Bill-Web/commit/3cec5b1b92330c19c895c2ae67dc9b391d571cf2))
14
+
15
+
16
+ ### Features
17
+
18
+ * [EVEP-46, EVEP-274] smartbill v2 ([#72](https://github.com/widergy/UtilityGO-Smart-Bill-Web/issues/72)) ([22c0382](https://github.com/widergy/UtilityGO-Smart-Bill-Web/commit/22c0382827781d284df215fdd6131da676ca6308))
19
+
1
20
  ## [3.18.1](https://github.com/widergy/UtilityGO-Smart-Bill-Web/compare/v3.18.0...v3.18.1) (2025-12-09)
2
21
 
3
22
 
@@ -17,11 +17,7 @@ const TAB_VALUE_REGEX = exports.TAB_VALUE_REGEX = /\[data-tab-value="([^"]+)"\]/
17
17
  const CAPTURED_VALUE_REGEX = exports.CAPTURED_VALUE_REGEX = 1;
18
18
  const ONBOARDING_OPTIONS = exports.ONBOARDING_OPTIONS = {
19
19
  overlayOpacity: 1,
20
- positionPrecedence: ['top', 'left', 'bottom', 'right'],
21
- scrollPadding: 5,
22
- scrollTo: 'tooltip',
23
- scrollToElement: false,
24
- tooltipPosition: 'top'
20
+ positionPrecedence: ['top', 'left', 'bottom', 'right']
25
21
  };
26
22
  const renderComponentWithProps = (Component, tab) => props => /*#__PURE__*/_react.default.createElement(Component, _extends({}, props, {
27
23
  assets: props?.assets?.[tab] || {},
@@ -13,8 +13,8 @@ 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 _SecondHeader = _interopRequireDefault(require("./tabs/Billing/components/SecondHeader"));
16
+ var _BillHeader = _interopRequireDefault(require("./tabs/components/BillHeader"));
17
+ var _SecondHeader = _interopRequireDefault(require("./tabs/components/SecondHeader"));
18
18
  var _utils2 = require("./tabs/Billing/utils");
19
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
20
  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); }
@@ -24,6 +24,7 @@ const SmartBillSummary = _ref => {
24
24
  annex,
25
25
  assets,
26
26
  billingLayout,
27
+ consumptionLayout,
27
28
  colors,
28
29
  components,
29
30
  constants,
@@ -39,7 +40,8 @@ const SmartBillSummary = _ref => {
39
40
  tabOptions,
40
41
  translations,
41
42
  utils,
42
- periodSpan
43
+ periodSpan,
44
+ progressBarConcept
43
45
  } = _ref;
44
46
  const {
45
47
  aiQuestionsList,
@@ -83,7 +85,7 @@ const SmartBillSummary = _ref => {
83
85
  } = loading ? {
84
86
  tabs: [],
85
87
  onboardingSteps: []
86
- } : (0, _utils.getTabOptions)(isDesktopSize, onboardingSteps, tabOptions, smartBill);
88
+ } : (0, _utils.getTabOptions)(isDesktopSize, onboardingSteps, tabOptions);
87
89
  const defaultCurrentTab = (0, _utils.getDefaultCurrentTab)(tabs);
88
90
  const [currentTab, setCurrentTab] = (0, _react.useState)(defaultCurrentTab);
89
91
  const [aiPanelIsOpen, setAiPanelIsOpen] = (0, _react.useState)(false);
@@ -161,13 +163,14 @@ const SmartBillSummary = _ref => {
161
163
  accountNumber: smartBill.client?.client_number,
162
164
  accountNumberHelpText: translations.billingTab.secondHeader?.accountNumberHelpText,
163
165
  supplyAddress: smartBill.client?.account_address,
164
- city: currentAccount?.city,
165
- district: currentAccount?.district,
166
+ city: smartBill.client?.city,
167
+ district: smartBill.client?.district,
166
168
  supplyAddressHelpText: translations.billingTab.secondHeader?.supplyAddressHelpText,
167
169
  clientNumberFormatter: utils?.formatters?.clientNumberFormatter
168
170
  }), _constants.TAB_COMPONENT_MAPPER?.[currentTab]?.({
169
171
  assets,
170
172
  billingLayout,
173
+ consumptionLayout,
171
174
  constants,
172
175
  consumptionLevels,
173
176
  components,
@@ -182,7 +185,8 @@ const SmartBillSummary = _ref => {
182
185
  smartBill,
183
186
  translations,
184
187
  utils,
185
- periodSpan
188
+ periodSpan,
189
+ progressBarConcept
186
190
  })), aiQuestionsPanelEnabled && /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_energyUi.UTTooltip, {
187
191
  arrow: false,
188
192
  content: isDesktopSize ? widyTooltipContent : '',
@@ -190,7 +194,9 @@ const SmartBillSummary = _ref => {
190
194
  placement: 'left'
191
195
  }
192
196
  }, /*#__PURE__*/_react.default.createElement("div", {
193
- className: `${widyEnabled ? _stylesModule.default.AIFloatButtonWidy : _stylesModule.default.AIFloatButton} smartbill-ai-float-button`
197
+ className: `${!widyEnabled && _stylesModule.default.AIFloatButtonContainer} smartbill-ai-float-button`
198
+ }, /*#__PURE__*/_react.default.createElement("div", {
199
+ className: widyEnabled ? _stylesModule.default.AIFloatButtonWidy : _stylesModule.default.AIFloatButton
194
200
  }, /*#__PURE__*/_react.default.createElement(_energyUi.UTTouchableWithoutFeedback, {
195
201
  onClick: openAIPanel
196
202
  }, widyEnabled ? /*#__PURE__*/_react.default.createElement("img", {
@@ -199,7 +205,7 @@ const SmartBillSummary = _ref => {
199
205
  }) : /*#__PURE__*/_react.default.createElement(_energyUi.UTIcon, {
200
206
  colorTheme: "negative",
201
207
  name: "EnergyIconChatSparkFilled"
202
- })))), /*#__PURE__*/_react.default.createElement(_AIPanel.default, {
208
+ }))))), /*#__PURE__*/_react.default.createElement(_AIPanel.default, {
203
209
  aiQuestionsList: aiQuestionsList,
204
210
  aiQuestionsListError: aiQuestionsListError,
205
211
  aiQuestionsListLoading: aiQuestionsListLoading,
@@ -218,13 +224,15 @@ const SmartBillSummary = _ref => {
218
224
  enabled: showOnboarding,
219
225
  handleComplete: onCloseOnboarding,
220
226
  handleOnClose: onCloseOnboarding,
221
- steps: filteredOnboardingSteps
227
+ steps: filteredOnboardingSteps,
228
+ variant: "dark"
222
229
  }));
223
230
  };
224
231
  SmartBillSummary.propTypes = {
225
232
  annex: _propTypes.bool,
226
233
  assets: _propTypes.object,
227
234
  billingLayout: (0, _propTypes.arrayOf)(_propTypes.object),
235
+ consumptionLayout: (0, _propTypes.arrayOf)(_propTypes.object),
228
236
  colors: _propTypes.object,
229
237
  components: (0, _propTypes.shape)({
230
238
  [_propTypes.string]: _propTypes.elementType
@@ -250,6 +258,7 @@ SmartBillSummary.propTypes = {
250
258
  })),
251
259
  translations: _propTypes.object,
252
260
  utils: _propTypes.object,
253
- periodSpan: _propTypes.string
261
+ periodSpan: _propTypes.string,
262
+ progressBarConcept: (0, _propTypes.arrayOf)(_propTypes.object)
254
263
  };
255
264
  var _default = exports.default = SmartBillSummary;
@@ -52,18 +52,20 @@ $tab-height: 48px;
52
52
  width: 100%;
53
53
  }
54
54
 
55
+ .AIFloatButtonContainer {
56
+ bottom: 24px;
57
+ position: fixed;
58
+ padding: 8px;
59
+ right: 24px;
60
+ }
61
+
55
62
  .AIFloatButton {
56
- div {
57
- align-items: center;
58
- background-color: var(--actionAccent04);
59
- border-radius: 100px;
60
- bottom: 32px;
61
- display: flex;
62
- justify-content: center;
63
- padding: 16px;
64
- position: fixed;
65
- right: 32px;
66
- }
63
+ align-items: center;
64
+ background-color: var(--actionAccent04);
65
+ border-radius: 100%;
66
+ display: flex;
67
+ justify-content: center;
68
+ padding: 16px;
67
69
  }
68
70
 
69
71
  .AIFloatButtonWidy {
@@ -7,9 +7,9 @@ exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = require("prop-types");
9
9
  var _billDataTypes = require("../../../../shared/types/billDataTypes");
10
+ var _ColumnRenderer = _interopRequireDefault(require("../components/ColumnRenderer"));
10
11
  var _utils = require("./utils");
11
12
  var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
12
- var _ColumnRenderer = _interopRequireDefault(require("./components/ColumnRenderer"));
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
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
15
  const Billing = _ref => {
@@ -0,0 +1,93 @@
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 _core = require("@material-ui/core");
11
+ var _utils = require("./utils");
12
+ var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ const ProgressBarItem = _ref => {
15
+ let {
16
+ item
17
+ } = _ref;
18
+ const {
19
+ id,
20
+ title,
21
+ tooltip,
22
+ splitPoint,
23
+ progressValue,
24
+ isExceeded,
25
+ isPositiveExcess,
26
+ registered,
27
+ limit,
28
+ unit,
29
+ excess,
30
+ min
31
+ } = item;
32
+ const safeSplit = Math.max(0, Math.min(100, Math.floor(splitPoint)));
33
+ const barColorClass = isExceeded ? min ? _stylesModule.default[`split-min-${safeSplit}`] : _stylesModule.default[`split-max-${safeSplit}`] : isPositiveExcess ? _stylesModule.default[`split-positive-${safeSplit}`] : _stylesModule.default.barNormal;
34
+ const labelColor = isExceeded ? 'error' : 'gray';
35
+ return /*#__PURE__*/_react.default.createElement("div", {
36
+ key: id,
37
+ className: _stylesModule.default.card
38
+ }, /*#__PURE__*/_react.default.createElement("div", {
39
+ className: _stylesModule.default.mainSection
40
+ }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
41
+ colorTheme: "gray"
42
+ }, title)), /*#__PURE__*/_react.default.createElement("div", {
43
+ className: _stylesModule.default.progressBarWrapper
44
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTProgressBar, {
45
+ classNames: {
46
+ root: _stylesModule.default.progressBar,
47
+ barColorPrimary: barColorClass,
48
+ container: _stylesModule.default.progressBarContainer
49
+ },
50
+ value: progressValue
51
+ }), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
52
+ className: _stylesModule.default.rowSpaceBetween
53
+ }, /*#__PURE__*/_react.default.createElement("div", {
54
+ className: _stylesModule.default.valueGroup
55
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
56
+ colorTheme: labelColor,
57
+ variant: "title1"
58
+ }, (0, _utils.formatNumber)(registered.value)), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
59
+ colorTheme: labelColor,
60
+ variant: "subtitle2"
61
+ }, unit)), /*#__PURE__*/_react.default.createElement("div", {
62
+ className: _stylesModule.default.valueGroup
63
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
64
+ variant: "title1"
65
+ }, (0, _utils.formatNumber)(limit.value)), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
66
+ variant: "subtitle2"
67
+ }, unit))), /*#__PURE__*/_react.default.createElement("div", {
68
+ className: _stylesModule.default.rowSpaceBetween
69
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, null, registered.label), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, null, limit.label))))), isExceeded && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_core.Divider, {
70
+ className: _stylesModule.default.divider
71
+ }), /*#__PURE__*/_react.default.createElement("div", {
72
+ className: _stylesModule.default.footerSection
73
+ }, /*#__PURE__*/_react.default.createElement("div", {
74
+ className: _stylesModule.default.rowSpaceBetween
75
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
76
+ variant: "subtitle2"
77
+ }, excess.label), /*#__PURE__*/_react.default.createElement("div", {
78
+ className: _stylesModule.default.rowGap
79
+ }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_energyUi.UTTooltip, {
80
+ content: tooltip
81
+ }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_energyUi.UTIcon, {
82
+ colorTheme: "error",
83
+ name: "IconInfoCircle",
84
+ size: 24
85
+ })))), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
86
+ variant: "subtitle2",
87
+ colorTheme: "error"
88
+ }, (0, _utils.formatNumber)(excess.value), " ", unit))))));
89
+ };
90
+ ProgressBarItem.propTypes = {
91
+ item: _propTypes.object.isRequired
92
+ };
93
+ var _default = exports.default = ProgressBarItem;
@@ -0,0 +1,109 @@
1
+ @import '../../scss/variables/sizes.module.scss';
2
+
3
+ $blue: var(--actionAccent04);
4
+ $red: var(--semanticError04);
5
+ $light-blue: var(--actionAccent03);
6
+ $gray-track: var(--light04);
7
+ $white: #fff;
8
+
9
+ $striped-red-pattern: repeating-linear-gradient(45deg, $red, $red 2px, $white 2px, $white 4px);
10
+
11
+ .card {
12
+ background-color: var(--light01);
13
+ border-radius: 8px;
14
+ box-shadow: var(--shadowGrayBottom1);
15
+ display: flex;
16
+ flex-direction: column;
17
+ margin-bottom: 16px;
18
+ overflow: hidden;
19
+ }
20
+
21
+ .mainSection {
22
+ display: flex;
23
+ flex-direction: column;
24
+ gap: 16px;
25
+ padding: 16px;
26
+ }
27
+
28
+ .progressBarWrapper {
29
+ display: flex;
30
+ flex-direction: column;
31
+ gap: 8px;
32
+ }
33
+
34
+ .progressBar {
35
+ border-radius: 100px !important;
36
+ height: 12px;
37
+ width: 100%;
38
+ }
39
+
40
+ .progressBarContainer {
41
+ background-color: $gray-track !important;
42
+ border-radius: 100px !important;
43
+ }
44
+
45
+ .barNormal {
46
+ background-color: $blue !important;
47
+ }
48
+
49
+ @for $i from 0 through 100 {
50
+ .split-max-#{$i} {
51
+ background: linear-gradient(90deg, $blue 0%, $blue ($i * 1%), $red ($i * 1%), $red 100%) !important;
52
+ }
53
+ }
54
+
55
+ @for $i from 0 through 100 {
56
+ .split-min-#{$i} {
57
+ background:
58
+ linear-gradient(90deg, $blue 0%, $blue ($i * 1%), transparent ($i * 1%), transparent 100%),
59
+ $striped-red-pattern !important;
60
+ background-size:
61
+ 100% 100%,
62
+ auto !important;
63
+ }
64
+ }
65
+
66
+ @for $i from 0 through 100 {
67
+ .split-positive-#{$i} {
68
+ background: linear-gradient(
69
+ 90deg,
70
+ $blue 0%,
71
+ $blue ($i * 1%),
72
+ $white ($i * 1%),
73
+ $white calc(($i * 1%) + 2px),
74
+ $light-blue calc(($i * 1%) + 2px),
75
+ $light-blue 100%
76
+ ) !important;
77
+ }
78
+ }
79
+
80
+ .rowSpaceBetween {
81
+ align-items: center;
82
+ display: flex;
83
+ flex-direction: row;
84
+ justify-content: space-between;
85
+ }
86
+
87
+ .valueGroup {
88
+ align-items: center;
89
+ display: flex;
90
+ gap: 4px;
91
+ }
92
+
93
+ .divider {
94
+ background-color: var(--light04);
95
+ margin: 0 !important;
96
+ }
97
+
98
+ .footerSection {
99
+ display: flex;
100
+ flex-direction: column;
101
+ padding: 16px;
102
+ }
103
+
104
+ .rowGap {
105
+ align-items: center;
106
+ display: flex;
107
+ flex-direction: row;
108
+ gap: 8px;
109
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.formatNumber = void 0;
7
+ var _numeral = _interopRequireDefault(require("numeral"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ const formatNumber = num => {
10
+ if (num === null || num === undefined) return '0';
11
+ return (0, _numeral.default)(num).format('0,0.[00]');
12
+ };
13
+ exports.formatNumber = formatNumber;
@@ -0,0 +1,50 @@
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 ReiterationBanner = _ref => {
13
+ let {
14
+ bannerText,
15
+ handleGoToReiteration,
16
+ texts
17
+ } = _ref;
18
+ const {
19
+ title,
20
+ description,
21
+ button
22
+ } = texts;
23
+ return /*#__PURE__*/_react.default.createElement("div", {
24
+ className: _stylesModule.default.reiterationContainer
25
+ }, /*#__PURE__*/_react.default.createElement("div", {
26
+ className: _stylesModule.default.reiterationContent
27
+ }, /*#__PURE__*/_react.default.createElement("div", {
28
+ className: _stylesModule.default.reiterationSubcontent
29
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTIcon, {
30
+ name: "IconReceipt2",
31
+ size: 24,
32
+ colorTheme: "error"
33
+ }), /*#__PURE__*/_react.default.createElement("div", {
34
+ className: _stylesModule.default.reiterationTexts
35
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, {
36
+ variant: "subtitle1",
37
+ weight: "medium"
38
+ }, title), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, null, description), bannerText && /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, null, bannerText)))), button && /*#__PURE__*/_react.default.createElement("div", {
39
+ className: _stylesModule.default.actionButton
40
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTButton, {
41
+ onClick: handleGoToReiteration,
42
+ variant: "text"
43
+ }, button)));
44
+ };
45
+ ReiterationBanner.propTypes = {
46
+ bannerText: _propTypes.string,
47
+ handleGoToReiteration: _propTypes.func,
48
+ texts: _propTypes.object.isRequired
49
+ };
50
+ var _default = exports.default = ReiterationBanner;
@@ -0,0 +1,43 @@
1
+ @import '../../scss/variables/sizes.module.scss';
2
+
3
+ .reiterationContainer {
4
+ background-color: var(--semanticError01);
5
+ border-radius: 8px;
6
+ display: flex;
7
+ flex-direction: column;
8
+ overflow: hidden;
9
+ position: relative;
10
+ user-select: none;
11
+ width: 100%;
12
+ margin-bottom: 16px;
13
+ }
14
+
15
+ .reiterationContent {
16
+ align-items: center;
17
+ display: flex;
18
+ flex-direction: row;
19
+ grid-gap: 16px;
20
+ padding: 16px;
21
+ }
22
+
23
+ .reiterationSubcontent {
24
+ align-items: flex-start;
25
+ display: flex;
26
+ flex-direction: row;
27
+ grid-gap: 16px;
28
+ }
29
+
30
+ .reiterationTexts {
31
+ display: flex;
32
+ flex-direction: column;
33
+ flex-shrink: 1;
34
+ grid-gap: 8px;
35
+ }
36
+
37
+ .actionButton {
38
+ border-top: 1px solid;
39
+ border-color: var(--semanticError02);
40
+ display: flex;
41
+ justify-content: flex-end;
42
+ padding: 8px;
43
+ }
@@ -0,0 +1,27 @@
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 SimpleBanner = _ref => {
13
+ let {
14
+ bannerText
15
+ } = _ref;
16
+ return /*#__PURE__*/_react.default.createElement("div", {
17
+ className: _stylesModule.default.bannerDetail
18
+ }, /*#__PURE__*/_react.default.createElement(_energyUi.UTIcon, {
19
+ name: "IconReceipt2",
20
+ colorTheme: "error",
21
+ size: 24
22
+ }), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, null, bannerText));
23
+ };
24
+ SimpleBanner.propTypes = {
25
+ bannerText: _propTypes.string.isRequired
26
+ };
27
+ var _default = exports.default = SimpleBanner;
@@ -0,0 +1,12 @@
1
+ @import '../../scss/variables/sizes.module.scss';
2
+
3
+ .bannerDetail {
4
+ align-items: flex-start;
5
+ background-color: var(--semanticError01);
6
+ border-radius: 8px;
7
+ display: flex;
8
+ flex-direction: row;
9
+ gap: 8px;
10
+ margin-bottom: 16px;
11
+ padding: 8px 16px;
12
+ }
@@ -0,0 +1,49 @@
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 _ProgressBarItem = _interopRequireDefault(require("./components/ProgressBarItem"));
10
+ var _ReiterationBanner = _interopRequireDefault(require("./components/ReiterationBanner"));
11
+ var _SimpleBanner = _interopRequireDefault(require("./components/SimpleBanner"));
12
+ var _utils = require("./utils");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ const ProgressBarCard = _ref => {
15
+ let {
16
+ handleGoToReiteration,
17
+ progressBarConcept,
18
+ smartBill,
19
+ texts
20
+ } = _ref;
21
+ const itemsWithStatus = progressBarConcept.filter(concept => concept.accountConditions.some(condition => smartBill.client.rate.purchased.includes(condition.rate))).map(concept => {
22
+ const info = (0, _utils.getInfo)(concept, smartBill);
23
+ return {
24
+ ...concept,
25
+ ...info
26
+ };
27
+ });
28
+ const renderedProgressBars = itemsWithStatus.map(item => /*#__PURE__*/_react.default.createElement(_ProgressBarItem.default, {
29
+ key: item.id,
30
+ item: item
31
+ }));
32
+ const exceededItems = itemsWithStatus.filter(item => item.isExceeded);
33
+ const reiteration = !!smartBill.reiteration;
34
+ const bannerText = exceededItems.length === 1 && !reiteration ? exceededItems[0].banner : exceededItems.length === 2 ? reiteration ? exceededItems[1]?.banner : exceededItems[1].doubleBanner : null;
35
+ return /*#__PURE__*/_react.default.createElement("div", null, reiteration && /*#__PURE__*/_react.default.createElement(_ReiterationBanner.default, {
36
+ bannerText: bannerText,
37
+ handleGoToReiteration: handleGoToReiteration,
38
+ texts: texts.reiterationBanner
39
+ }), bannerText && !reiteration && /*#__PURE__*/_react.default.createElement(_SimpleBanner.default, {
40
+ bannerText: bannerText
41
+ }), renderedProgressBars);
42
+ };
43
+ ProgressBarCard.propTypes = {
44
+ progressBarConcept: _propTypes.array,
45
+ smartBill: _propTypes.object,
46
+ texts: _propTypes.object,
47
+ handleGoToReiteration: _propTypes.func
48
+ };
49
+ var _default = exports.default = ProgressBarCard;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getInfo = void 0;
7
+ const getValue = (smartBill, magnitudeName) => {
8
+ const item = smartBill.periods[0].consumptions.find(c => c.magnitude === magnitudeName);
9
+ if (!item) return null;
10
+ return {
11
+ value: item.value,
12
+ unit: item.unit
13
+ };
14
+ };
15
+ const getInfo = (concept, smartBill) => {
16
+ const {
17
+ data,
18
+ min
19
+ } = concept;
20
+ const {
21
+ registered,
22
+ limit,
23
+ excess
24
+ } = data;
25
+ const registeredData = getValue(smartBill, registered.magnitude);
26
+ const limitData = getValue(smartBill, limit.magnitude);
27
+ const excessData = getValue(smartBill, excess.magnitude);
28
+ const registeredVal = registeredData?.value || 0;
29
+ const limitVal = limitData?.value || 0;
30
+ const unit = registeredData?.unit || registered.unit || '';
31
+ const isExceeded = excessData?.value > 0;
32
+ const isPositiveExcess = !isExceeded && min && registeredVal > limitVal;
33
+ const excessValueDisplay = isExceeded ? excessData?.value : 0;
34
+ const rawProgress = limitVal > 0 ? registeredVal / limitVal * 100 : 0;
35
+ const progressValue = isExceeded || isPositiveExcess || rawProgress > 100 ? 100 : rawProgress;
36
+ const splitPoint = isExceeded ? min ? limitVal > 0 ? registeredVal / limitVal * 100 : 0 : registeredVal > 0 ? limitVal / registeredVal * 100 : 100 : isPositiveExcess ? registeredVal > 0 ? limitVal / registeredVal * 100 : 100 : 100;
37
+ return {
38
+ ...concept,
39
+ splitPoint,
40
+ progressValue,
41
+ isExceeded,
42
+ isPositiveExcess,
43
+ unit,
44
+ registered: {
45
+ ...registered,
46
+ value: registeredVal
47
+ },
48
+ limit: {
49
+ ...limit,
50
+ value: limitVal
51
+ },
52
+ excess: {
53
+ ...excess,
54
+ value: excessValueDisplay
55
+ }
56
+ };
57
+ };
58
+ exports.getInfo = getInfo;
@@ -8,23 +8,35 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _energyUi = require("@widergy/energy-ui");
9
9
  var _propTypes = require("prop-types");
10
10
  var _billDataTypes = require("../../../../shared/types/billDataTypes");
11
+ var _ColumnRenderer = _interopRequireDefault(require("../components/ColumnRenderer"));
11
12
  var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
12
13
  var _BimestralConsumption = _interopRequireDefault(require("./components/BimestralConsumption"));
13
- var _CurrentConsumption = _interopRequireDefault(require("./components/CurrentConsumption"));
14
- var _Billing = _interopRequireDefault(require("./components/Billing"));
15
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ 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); }
16
16
  const Consumptions = _ref => {
17
17
  let {
18
18
  assets,
19
- reverseRow = {},
19
+ consumptionLayout,
20
+ exceeded = false,
20
21
  smartBill,
21
22
  translations,
22
- periodSpan
23
+ periodSpan,
24
+ handlers,
25
+ progressBarConcept
23
26
  } = _ref;
24
27
  const {
25
28
  title,
26
29
  description
27
30
  } = translations?.consumptions || {};
31
+ const props = {
32
+ smartBill,
33
+ texts: translations,
34
+ periodSpan,
35
+ assets,
36
+ progressBarConcept,
37
+ exceeded,
38
+ handleGoToReiteration: handlers.handleGoToReiteration
39
+ };
28
40
  return /*#__PURE__*/_react.default.createElement("div", {
29
41
  className: _stylesModule.default.generalContainer
30
42
  }, /*#__PURE__*/_react.default.createElement(_BimestralConsumption.default, {
@@ -39,22 +51,25 @@ const Consumptions = _ref => {
39
51
  variant: "title3",
40
52
  weight: "medium"
41
53
  }, title), /*#__PURE__*/_react.default.createElement(_energyUi.UTLabel, null, description)), /*#__PURE__*/_react.default.createElement("div", {
42
- className: `${_stylesModule.default.consumptionDetailColumns} ${reverseRow}`
43
- }, /*#__PURE__*/_react.default.createElement(_CurrentConsumption.default, {
44
- assets: assets,
45
- smartBill: smartBill,
46
- texts: translations
47
- }), /*#__PURE__*/_react.default.createElement(_Billing.default, {
48
- smartBill: smartBill,
49
- texts: translations,
50
- periodSpan: periodSpan
54
+ className: _stylesModule.default.cardsContainer
55
+ }, consumptionLayout.map(layoutArray => {
56
+ const filteredLayout = layoutArray.filter(item => item.enabled);
57
+ const layoutKey = `layout-${layoutArray.map(item => item.name).join('-')}`;
58
+ return /*#__PURE__*/_react.default.createElement(_ColumnRenderer.default, _extends({
59
+ column: filteredLayout,
60
+ key: layoutKey
61
+ }, props));
51
62
  }))));
52
63
  };
53
64
  Consumptions.propTypes = {
54
65
  assets: _propTypes.object,
66
+ concepts: _propTypes.object,
67
+ consumptionLayout: (0, _propTypes.arrayOf)(_propTypes.object),
68
+ exceeded: _propTypes.bool,
55
69
  periodSpan: _propTypes.string,
56
- reverseRow: _propTypes.object,
70
+ progressBarConcept: (0, _propTypes.arrayOf)(_propTypes.object),
57
71
  smartBill: _billDataTypes.billDataTypes,
58
- translations: _propTypes.object
72
+ translations: _propTypes.object,
73
+ handlers: _propTypes.object
59
74
  };
60
75
  var _default = exports.default = Consumptions;
@@ -1,14 +1,16 @@
1
1
  @import '../../../../scss/variables/mediaQueries.module.scss';
2
2
 
3
- .generalContainer {
3
+ .cardsContainer {
4
+ align-items: flex-start;
4
5
  display: flex;
5
- flex-direction: column;
6
- grid-gap: 32px;
7
- padding: 24px 32px;
6
+ width: 100%;
8
7
 
9
- @media #{$mobile} {
10
- grid-gap: 24px;
11
- padding: 24px 16px;
8
+ @media #{$tablet-mobile} {
9
+ flex-direction: column;
10
+ }
11
+
12
+ > :last-child {
13
+ margin-right: 0;
12
14
  }
13
15
  }
14
16
 
@@ -18,19 +20,20 @@
18
20
  grid-gap: 8px;
19
21
  }
20
22
 
21
- .consumptionDetailColumns {
23
+ .consumptionDetail {
22
24
  display: flex;
23
- flex: 1;
24
- flex-wrap: wrap;
25
+ flex-direction: column;
26
+ grid-gap: 24px;
27
+ }
28
+
29
+ .generalContainer {
30
+ display: flex;
31
+ flex-direction: column;
25
32
  grid-gap: 32px;
33
+ padding: 24px 32px;
26
34
 
27
35
  @media #{$mobile} {
28
36
  grid-gap: 24px;
37
+ padding: 24px 16px;
29
38
  }
30
39
  }
31
-
32
- .consumptionDetail {
33
- display: flex;
34
- flex-direction: column;
35
- grid-gap: 24px;
36
- }
@@ -1,4 +1,4 @@
1
- @import '../../../../../../scss/variables/colorsExport.module.scss';
1
+ @import '../../../../../scss/variables/colors.module.scss';
2
2
 
3
3
  .cardContainer {
4
4
  align-items: center;
@@ -1,4 +1,4 @@
1
- @import '../../../../../../scss/variables/mediaQueries.module.scss';
1
+ @import '../../../../../scss/variables/mediaQueries.module.scss';
2
2
 
3
3
  .billHeader {
4
4
  align-items: center;
@@ -9,11 +9,17 @@ var _TitularCard = _interopRequireDefault(require("../TitularCard"));
9
9
  var _TotalCard = _interopRequireDefault(require("../TotalCard"));
10
10
  var _RateCard = _interopRequireDefault(require("../RateCard"));
11
11
  var _AccountCard = _interopRequireDefault(require("../AccountCard"));
12
+ var _CurrentConsumption = _interopRequireDefault(require("../../Consumptions/components/CurrentConsumption"));
13
+ var _Billing = _interopRequireDefault(require("../../Consumptions/components/Billing"));
14
+ var _ProgressBarCard = _interopRequireDefault(require("../../Consumptions/components/ProgressBarCard"));
12
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
16
  const COMPONENTS = exports.COMPONENTS = {
14
17
  ActionCards: _ActionCards.default,
15
18
  TitularCard: _TitularCard.default,
16
19
  TotalCard: _TotalCard.default,
17
20
  RateCard: _RateCard.default,
18
- AccountCard: _AccountCard.default
21
+ AccountCard: _AccountCard.default,
22
+ CurrentConsumption: _CurrentConsumption.default,
23
+ Billing: _Billing.default,
24
+ ProgressBarCard: _ProgressBarCard.default
19
25
  };
@@ -1,4 +1,4 @@
1
- @import '_mediaQueries.scss';
1
+ @import '../../../../../scss/variables/mediaQueries.module.scss';
2
2
 
3
3
  $columns-gap: 32px;
4
4
  $columns-gap-mobile: 24px;
@@ -1,4 +1,5 @@
1
- @import '../../../../../../../../scss/variables/fontSizes.module.scss';
1
+ @import '../../../../../../../scss/variables/colors.module.scss';
2
+ @import '../../../../../../../scss/variables/fontSizes.module.scss';
2
3
 
3
4
  $default-border-radius: 100px;
4
5
  $default-progress-bar-background: linear-gradient(88.75deg, #30e3a2 1.07%, #efc73c 50.13%, #ec574d 98.93%);
@@ -12,8 +12,8 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
12
12
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
13
13
  var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
14
14
  var _isNaN = _interopRequireDefault(require("lodash/isNaN"));
15
- var _utils = require("../../../Consumptions/components/CurrentConsumption/utils");
16
- var _testIds = require("../../../../../../constants/testIds");
15
+ var _utils = require("../../Consumptions/components/CurrentConsumption/utils");
16
+ var _testIds = require("../../../../../constants/testIds");
17
17
  var _utils2 = require("./utils");
18
18
  var _ProgressBar = _interopRequireDefault(require("./components/ProgressBar"));
19
19
  var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
@@ -1,4 +1,4 @@
1
- @import '../../../../../../scss/variables/mediaQueries.module.scss';
1
+ @import '../../../../../scss/variables/mediaQueries.module.scss';
2
2
 
3
3
  .secondHeader {
4
4
  align-items: center;
@@ -7,23 +7,20 @@ exports.getTabOptions = exports.getDefaultCurrentTab = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _energyUi = require("@widergy/energy-ui");
9
9
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
10
- var _tabs = require("../../shared/constants/tabs");
11
10
  var _constants = require("./constants");
12
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
- const getTabOptions = (isDesktopSize, onboardingSteps, tabOptions, smartBill) => {
14
- const hasBimestralPeriodicity = smartBill?.periods?.some(period => period.settlements?.periodicity === _constants.BIMESTRAL_PERIODICITY);
15
- const filteredTabs = tabOptions.map(tab => ({
12
+ const getTabOptions = (isDesktopSize, onboardingSteps, tabOptions) => {
13
+ const filteredTabs = tabOptions.filter(_ref => {
14
+ let {
15
+ enabled
16
+ } = _ref;
17
+ return enabled;
18
+ }).map(tab => ({
16
19
  ...tab,
17
20
  icon: isDesktopSize ? /*#__PURE__*/_react.default.createElement(_energyUi.UTIcon, {
18
21
  name: tab.icon
19
22
  }) : null
20
- })).filter(_ref => {
21
- let {
22
- enabled,
23
- value
24
- } = _ref;
25
- return enabled && (value !== _tabs.SMARTBILL_TABS.CONSUMPTIONS || hasBimestralPeriodicity);
26
- });
23
+ }));
27
24
  if (!(0, _isEmpty.default)(onboardingSteps)) {
28
25
  const tabPositions = {};
29
26
  filteredTabs.forEach((tab, index) => {
package/dist/index.js CHANGED
@@ -119,7 +119,7 @@ var _billDataTypes = require("./shared/types/billDataTypes");
119
119
  var _rateStagesTypes = require("./shared/types/rateStagesTypes");
120
120
  var _tabs = require("./shared/constants/tabs");
121
121
  var _Billing = _interopRequireDefault(require("./components/SmartBillSummary/tabs/Consumptions/components/Billing"));
122
- var _RateCard = _interopRequireDefault(require("./components/SmartBillSummary/tabs/Billing/components/RateCard"));
122
+ var _RateCard = _interopRequireDefault(require("./components/SmartBillSummary/tabs/components/RateCard"));
123
123
  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); }
124
124
  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; }
125
125
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@widergy/utilitygo-smart-bill-web",
3
- "version": "3.18.1",
3
+ "version": "3.20.0",
4
4
  "description": "UtilityGO SmartBill Web",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -59,7 +59,7 @@
59
59
  "dayjs": "^1.10.7",
60
60
  "eslint-plugin-react": "^7.33.2",
61
61
  "lodash": ">=4.17.4",
62
- "node-sass": "^8.0.0",
62
+ "sass": "^1.80.4",
63
63
  "numeral": ">=2.0.6",
64
64
  "react-jss": "^8.6.1",
65
65
  "react-loading-skeleton": "^3.3.1",