@widergy/energy-ui 3.124.0 → 3.125.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [3.125.0](https://github.com/widergy/energy-ui/compare/v3.124.0...v3.125.0) (2025-12-09)
2
+
3
+
4
+ ### Features
5
+
6
+ * [PROMI] calendar ([#736](https://github.com/widergy/energy-ui/issues/736)) ([32cc5c2](https://github.com/widergy/energy-ui/commit/32cc5c2e7816acbbb3ba760f521695d7fb687a7b))
7
+
1
8
  # [3.124.0](https://github.com/widergy/energy-ui/compare/v3.123.1...v3.124.0) (2025-12-09)
2
9
 
3
10
 
@@ -0,0 +1,37 @@
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 _dayjs = _interopRequireDefault(require("dayjs"));
10
+ var _UTTouchableWithoutFeedback = _interopRequireDefault(require("../../../UTTouchableWithoutFeedback"));
11
+ var _constants = require("../../constants");
12
+ var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ const GenericRenderDay = _ref => {
15
+ let {
16
+ date,
17
+ bookingOptions,
18
+ selectedDayIndex,
19
+ setSelectedDayIndex,
20
+ dayInCurrentMonth
21
+ } = _ref;
22
+ const index = bookingOptions.findIndex(item => (0, _dayjs.default)(item.value).isSame((0, _dayjs.default)(date), 'day'));
23
+ const available = dayInCurrentMonth && index !== -1;
24
+ const isSelected = index === selectedDayIndex;
25
+ return /*#__PURE__*/_react.default.createElement(_UTTouchableWithoutFeedback.default, {
26
+ className: "".concat(_stylesModule.default.daysRender, " ").concat(!available && _stylesModule.default.disabledButton, " ").concat(isSelected && _stylesModule.default.selectedDay, " ").concat(!dayInCurrentMonth && _stylesModule.default.notInCurrentMonth),
27
+ onClick: available ? () => setSelectedDayIndex(index) : undefined
28
+ }, dayInCurrentMonth ? (0, _dayjs.default)(date).format(_constants.DAY_FORMAT) : '');
29
+ };
30
+ GenericRenderDay.propTypes = {
31
+ date: _propTypes.object,
32
+ bookingOptions: _propTypes.object,
33
+ selectedDayIndex: _propTypes.number,
34
+ setSelectedDayIndex: _propTypes.func,
35
+ dayInCurrentMonth: _propTypes.bool
36
+ };
37
+ var _default = exports.default = GenericRenderDay;
@@ -0,0 +1,36 @@
1
+ .dateContainer {
2
+ grid-gap: 16px;
3
+ padding: 16px;
4
+
5
+ & > * {
6
+ padding: 0;
7
+ }
8
+ }
9
+
10
+ .daysRender {
11
+ background-color: var(--light01);
12
+ color: var(--gray04);
13
+ place-content: center;
14
+ flex-grow: 1;
15
+ height: 40px;
16
+ flex-wrap: wrap;
17
+
18
+ &:hover {
19
+ cursor: default;
20
+ }
21
+ }
22
+
23
+ .disabledButton {
24
+ background-color: var(--semanticError01);
25
+ color: var(--semanticError05);
26
+ }
27
+
28
+ .selectedDay {
29
+ background-color: var(--actionAccent04);
30
+ color: var(--light01);
31
+ }
32
+
33
+ .notInCurrentMonth {
34
+ background-color: var(--light013);
35
+ }
36
+
@@ -0,0 +1,39 @@
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 _UTLabel = _interopRequireDefault(require("../../../UTLabel"));
10
+ var _UTRadioGroup = _interopRequireDefault(require("../../../UTRadioGroup"));
11
+ var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const TimeInput = _ref => {
14
+ let {
15
+ availableTimeSlots,
16
+ selectedTime,
17
+ setSelectedTime
18
+ } = _ref;
19
+ return /*#__PURE__*/_react.default.createElement("div", {
20
+ className: _stylesModule.default.timeInputContainer
21
+ }, /*#__PURE__*/_react.default.createElement("div", {
22
+ className: _stylesModule.default.timeInputHeader
23
+ }, /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
24
+ variant: "subtitle1"
25
+ }, "Seleccione el horario"), /*#__PURE__*/_react.default.createElement(_UTLabel.default, null, "Debe seleccionar un horario para continuar")), /*#__PURE__*/_react.default.createElement(_UTRadioGroup.default, {
26
+ options: availableTimeSlots,
27
+ value: selectedTime,
28
+ onChange: setSelectedTime,
29
+ version: "V1",
30
+ verticalSpacing: "small",
31
+ variant: "card"
32
+ }));
33
+ };
34
+ TimeInput.propTypes = {
35
+ availableTimeSlots: _propTypes.array,
36
+ selectedTime: _propTypes.string,
37
+ setSelectedTime: _propTypes.func
38
+ };
39
+ var _default = exports.default = TimeInput;
@@ -0,0 +1,12 @@
1
+ .timeInputContainer {
2
+ display: flex;
3
+ flex-direction: column;
4
+ grid-gap: 24px;
5
+ width: 100%;
6
+ }
7
+
8
+ .timeInputHeader {
9
+ display: flex;
10
+ flex-direction: column;
11
+ grid-gap: 4px;
12
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ONLY_ONE_WORK_SCHEDULE = exports.INPUT_VALUE_DEFAULT = exports.ICON_SIZE_DEFAULT = exports.FORMAT_DATE = exports.FIELD_KEYS = exports.DAY_FORMAT = void 0;
7
+ const INPUT_VALUE_DEFAULT = exports.INPUT_VALUE_DEFAULT = '00:00';
8
+ const ONLY_ONE_WORK_SCHEDULE = exports.ONLY_ONE_WORK_SCHEDULE = 0;
9
+ const DAY_FORMAT = exports.DAY_FORMAT = 'DD';
10
+ const FORMAT_DATE = exports.FORMAT_DATE = 'YYYY-MM-DD';
11
+ const ICON_SIZE_DEFAULT = exports.ICON_SIZE_DEFAULT = 32;
12
+ const FIELD_KEYS = exports.FIELD_KEYS = {
13
+ DATE: 'date',
14
+ TIME: 'time'
15
+ };
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _pickers = require("@material-ui/pickers");
8
+ var _propTypes = require("prop-types");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _dateFns = _interopRequireDefault(require("@date-io/date-fns"));
11
+ var _es = _interopRequireDefault(require("date-fns/locale/es"));
12
+ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
13
+ var _UTLabel = _interopRequireDefault(require("../UTLabel"));
14
+ var _UTIcon = _interopRequireDefault(require("../UTIcon"));
15
+ var _UTFieldLabel = _interopRequireDefault(require("../UTFieldLabel"));
16
+ var _utils = require("../UTValidation/utils");
17
+ var _UTValidation = _interopRequireDefault(require("../UTValidation"));
18
+ var _constants = require("./constants");
19
+ var _TimeInput = _interopRequireDefault(require("./components/TimeInput"));
20
+ var _Day = _interopRequireDefault(require("./components/Day"));
21
+ var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
22
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
24
+ const Calendar = _ref => {
25
+ var _options$selectedDayI, _options$selectedDayI2;
26
+ let {
27
+ dataTestId,
28
+ actions,
29
+ error,
30
+ onChange,
31
+ options,
32
+ required,
33
+ showLegend,
34
+ timeSelection,
35
+ title,
36
+ value
37
+ } = _ref;
38
+ const [selectedDayIndex, setSelectedDayIndex] = (0, _react.useState)(value === null || value === void 0 ? void 0 : value[_constants.FIELD_KEYS.DATE]);
39
+ const [selectedTime, setSelectedTime] = (0, _react.useState)(value === null || value === void 0 ? void 0 : value[_constants.FIELD_KEYS.TIME]);
40
+ const selectedDay = (_options$selectedDayI = options[selectedDayIndex]) === null || _options$selectedDayI === void 0 ? void 0 : _options$selectedDayI.value;
41
+ const validationData = (0, _react.useMemo)(() => error && (0, _utils.formatErrorToValidation)(error), [error]);
42
+ (0, _react.useEffect)(() => {
43
+ setSelectedTime(null);
44
+ onChange({
45
+ [_constants.FIELD_KEYS.DATE]: selectedDay
46
+ });
47
+ }, [selectedDayIndex]);
48
+ (0, _react.useEffect)(() => {
49
+ onChange(currentValue => ({
50
+ ...currentValue,
51
+ [_constants.FIELD_KEYS.TIME]: selectedTime
52
+ }));
53
+ }, [selectedTime]);
54
+ const availableTimeSlots = options === null || options === void 0 || (_options$selectedDayI2 = options[selectedDayIndex]) === null || _options$selectedDayI2 === void 0 ? void 0 : _options$selectedDayI2.configuration.times;
55
+ return /*#__PURE__*/_react.default.createElement("div", {
56
+ className: _stylesModule.default.container,
57
+ "data-testid": dataTestId
58
+ }, title && /*#__PURE__*/_react.default.createElement(_UTFieldLabel.default, {
59
+ actions: actions,
60
+ required: required
61
+ }, title), /*#__PURE__*/_react.default.createElement("div", {
62
+ className: _stylesModule.default.container
63
+ }, /*#__PURE__*/_react.default.createElement("div", {
64
+ className: _stylesModule.default.calendarContainer
65
+ }, /*#__PURE__*/_react.default.createElement(_pickers.MuiPickersUtilsProvider, {
66
+ utils: _dateFns.default,
67
+ locale: _es.default
68
+ }, /*#__PURE__*/_react.default.createElement(_pickers.DatePicker, {
69
+ disableToolbar: true,
70
+ variant: "static",
71
+ value: selectedDay,
72
+ onChange: () => null,
73
+ renderDay: (date, _, dayInCurrentMonth) => /*#__PURE__*/_react.default.createElement(_Day.default, {
74
+ date: date,
75
+ bookingOptions: options,
76
+ selectedDayIndex: selectedDayIndex,
77
+ setSelectedDayIndex: setSelectedDayIndex,
78
+ dayInCurrentMonth: dayInCurrentMonth,
79
+ setSelectedDay: setSelectedDayIndex
80
+ }),
81
+ minDate: new Date()
82
+ })), showLegend && /*#__PURE__*/_react.default.createElement("div", {
83
+ className: _stylesModule.default.bottomReference
84
+ }, /*#__PURE__*/_react.default.createElement("div", {
85
+ className: _stylesModule.default.legendReference
86
+ }), /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
87
+ colorTheme: "gray",
88
+ className: _stylesModule.default.legendLabel
89
+ }, "Sin horarios disponibles"))), timeSelection && /*#__PURE__*/_react.default.createElement("div", {
90
+ className: "".concat(_stylesModule.default.timeRankContainer, " ").concat((0, _isEmpty.default)(availableTimeSlots) && _stylesModule.default.emptyTimeRankContainer)
91
+ }, !(0, _isEmpty.default)(availableTimeSlots) ? /*#__PURE__*/_react.default.createElement(_TimeInput.default, {
92
+ availableTimeSlots: availableTimeSlots,
93
+ selectedTime: selectedTime,
94
+ setSelectedTime: setSelectedTime
95
+ }) : /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
96
+ className: _stylesModule.default.calendarIconWrapper
97
+ }, /*#__PURE__*/_react.default.createElement(_UTIcon.default, {
98
+ name: "IconCalendarEvent",
99
+ colorTheme: "gray",
100
+ size: _constants.ICON_SIZE_DEFAULT
101
+ })), /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
102
+ colorTheme: "gray"
103
+ }, selectedDay ? 'No hay horarios disponibles' : 'Debe seleccionar una fecha primero')))), validationData && /*#__PURE__*/_react.default.createElement(_UTValidation.default, {
104
+ validationData: validationData
105
+ }));
106
+ };
107
+ Calendar.propTypes = {
108
+ actions: _propTypes.array,
109
+ dataTestId: _propTypes.string,
110
+ error: _propTypes.string,
111
+ onChange: _propTypes.func,
112
+ options: _propTypes.array,
113
+ required: _propTypes.bool,
114
+ showLegend: _propTypes.bool,
115
+ timeSelection: _propTypes.bool,
116
+ title: _propTypes.string,
117
+ value: _propTypes.object
118
+ };
119
+ var _default = exports.default = Calendar;
@@ -0,0 +1,122 @@
1
+ @use '../../scss/variables/mediaQueries.module.scss' as *;
2
+
3
+
4
+ $default-shadow-gray-bottom-1: 0px 3px 6px rgba(24, 44, 73, 0.1);
5
+
6
+ .container {
7
+ display: flex;
8
+ grid-gap: 32px;
9
+ height: 100%;
10
+ max-width: 1200px;
11
+
12
+ width: 100%;
13
+
14
+ @media #{$tablet-mobile} {
15
+ flex-direction: column;
16
+ }
17
+ }
18
+
19
+ %containers {
20
+ background-color: var(--light01);
21
+ border-radius: 8px;
22
+ box-shadow: var(--shadowGrayBottom1, $default-shadow-gray-bottom-1);
23
+ display: flex;
24
+ padding:24px;
25
+ }
26
+
27
+ .calendarContainer {
28
+ @extend %containers;
29
+ padding: 16px;
30
+ flex-grow: 1;
31
+
32
+
33
+ :global(.MuiPickersStaticWrapper-staticWrapperRoot) {
34
+ flex-grow: 1;
35
+ }
36
+
37
+ :global(.MuiPickersBasePicker-pickerView) {
38
+ justify-content: unset;
39
+ max-width: inherit;
40
+ height: 336px;
41
+ }
42
+
43
+ :global(.MuiPickersSlideTransition-transitionContainer) {
44
+ text-transform: capitalize;
45
+
46
+ }
47
+
48
+ :global(.MuiPickersCalendar-week) {
49
+ background: var(--light03);
50
+ justify-content: flex-start;
51
+
52
+ > div {
53
+ border: 1px solid var(--light04);
54
+ min-width: 40px;
55
+ width: 100%;
56
+ }
57
+ }
58
+
59
+ :global(.MuiPickersCalendarHeader-daysHeader) {
60
+
61
+ > span {
62
+ color: var(--gray03);
63
+ width: 100%;
64
+ }
65
+ }
66
+
67
+ :global(.MuiPickersCalendarHeader-dayLabel) {
68
+ text-transform: uppercase;
69
+ }
70
+ }
71
+
72
+ .timeRankContainer {
73
+ @extend %containers;
74
+ flex-grow: 1;
75
+
76
+ @media #{$tablet-mobile} {
77
+ width: unset;
78
+ }
79
+ }
80
+
81
+ .emptyTimeRankContainer {
82
+ align-items: center;
83
+ background-color: var(--light03);
84
+ border: 2px solid var(--light04);
85
+ box-shadow: none;
86
+ display: flex;
87
+ flex-direction: column;
88
+ grid-gap: 16px;
89
+ justify-content: center;
90
+ }
91
+
92
+ .calendarIconWrapper {
93
+ background-color: var(--light04);
94
+ border-radius: 100px;
95
+ display: flex;
96
+ padding: 14px;
97
+ }
98
+
99
+ .legendLabel {
100
+ text-align: end;
101
+ }
102
+
103
+ .bottomReference {
104
+ align-items: center;
105
+ display: flex;
106
+ grid-gap: 12px;
107
+ justify-content: flex-end;
108
+ padding: 16px;
109
+ }
110
+
111
+ .legendReference {
112
+ background: var(--semanticError01);
113
+ border-radius: 2px;
114
+ height: 16px;
115
+ width: 16px;
116
+ }
117
+
118
+ .container {
119
+ display: flex;
120
+ flex-direction: column;
121
+ grid-gap: 16px;
122
+ }
@@ -109,11 +109,7 @@ const retrieveStyle = _ref => {
109
109
  [_constants.SPACING.SMALL]: '8px',
110
110
  [_constants.SPACING.MEDIUM]: '16px'
111
111
  }[spacing],
112
- minHeight: {
113
- [_constants2.RADIO_VARIANTS.CARD]: '48px',
114
- [_constants2.RADIO_VARIANTS.BUTTON]: '24px',
115
- [_constants2.RADIO_VARIANTS.DEFAULT]: '24px'
116
- }[variant],
112
+ minHeight: '24px',
117
113
  overflow: 'hidden',
118
114
  padding: '12px 16px',
119
115
  ...(disabled ? disabledTheme : selected ? selectedTheme : baseTheme)
package/dist/index.js CHANGED
@@ -87,6 +87,12 @@ Object.defineProperty(exports, "UTCBUInput", {
87
87
  return _UTCBUInput.default;
88
88
  }
89
89
  });
90
+ Object.defineProperty(exports, "UTCalendar", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _UTCalendar.default;
94
+ }
95
+ });
90
96
  Object.defineProperty(exports, "UTCaptcha", {
91
97
  enumerable: true,
92
98
  get: function () {
@@ -598,4 +604,5 @@ var _WithLoading = _interopRequireDefault(require("./components/WithLoading"));
598
604
  var _WithTouch = _interopRequireDefault(require("./components/WithTouch"));
599
605
  var _stylesDeduplicationUtils = _interopRequireDefault(require("./utils/stylesDeduplicationUtils"));
600
606
  var _useScrollBasedMenu = _interopRequireDefault(require("./utils/hooks/use-scroll-based-menu"));
607
+ var _UTCalendar = _interopRequireDefault(require("./components/UTCalendar"));
601
608
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@widergy/energy-ui",
3
- "version": "3.124.0",
3
+ "version": "3.125.0",
4
4
  "description": "Widergy Web Components",
5
5
  "author": "widergy",
6
6
  "license": "MIT",
@@ -31,6 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@babel/eslint-parser": "^7.23.10",
34
+ "@date-io/date-fns": "^1.3.11",
34
35
  "@date-io/dayjs": "1.x",
35
36
  "@material-ui/core": "^4.4.0",
36
37
  "@material-ui/icons": "^3.0.1",
@@ -46,6 +47,7 @@
46
47
  "babel-plugin-inline-react-svg": "^2.0.2",
47
48
  "babel-plugin-named-asset-import": "^0.3.2",
48
49
  "d3": "^7.0.1",
50
+ "date-fns": "2.30.0",
49
51
  "dayjs": "^1.10.7",
50
52
  "downloadjs": "^1.4.7",
51
53
  "emojilib": "^3.0.10",