@soyfri/shared-library 2.0.0-beta.9 → 2.0.0-beta8
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/Autocomplete-BA-cGASd.js +316 -0
- package/Autocomplete-BA-cGASd.js.map +1 -0
- package/Autocomplete-C2x-lBvZ.cjs +315 -0
- package/Autocomplete-C2x-lBvZ.cjs.map +1 -0
- package/Avatar-9L7YMxya.cjs +162 -0
- package/Avatar-9L7YMxya.cjs.map +1 -0
- package/Avatar-BJTr-PBd.js +163 -0
- package/Avatar-BJTr-PBd.js.map +1 -0
- package/Card-DG_crfkK.cjs +185 -0
- package/Card-DG_crfkK.cjs.map +1 -0
- package/Card-Ug-ttVSh.js +186 -0
- package/Card-Ug-ttVSh.js.map +1 -0
- package/Chip-OPYQ1uQ_.js +74 -0
- package/Chip-OPYQ1uQ_.js.map +1 -0
- package/Chip-qoJLDiva.cjs +73 -0
- package/Chip-qoJLDiva.cjs.map +1 -0
- package/DatePicker-8f_9bwhS.js +202 -0
- package/DatePicker-8f_9bwhS.js.map +1 -0
- package/DatePicker-DLSfkgGA.cjs +201 -0
- package/DatePicker-DLSfkgGA.cjs.map +1 -0
- package/DateRangePicker-BVpeJCHI.js +76 -0
- package/DateRangePicker-BVpeJCHI.js.map +1 -0
- package/DateRangePicker-B_hKQhbj.cjs +75 -0
- package/DateRangePicker-B_hKQhbj.cjs.map +1 -0
- package/DateTimePicker-CWNW09-O.cjs +220 -0
- package/DateTimePicker-CWNW09-O.cjs.map +1 -0
- package/DateTimePicker-D4L9GAod.js +221 -0
- package/DateTimePicker-D4L9GAod.js.map +1 -0
- package/Input-Cp911l23.js +174 -0
- package/Input-Cp911l23.js.map +1 -0
- package/Input-DI0jfq5X.cjs +173 -0
- package/Input-DI0jfq5X.cjs.map +1 -0
- package/Modal-Bm_HH9cv.cjs +319 -0
- package/Modal-Bm_HH9cv.cjs.map +1 -0
- package/Modal-Bnz6d9m9.js +320 -0
- package/Modal-Bnz6d9m9.js.map +1 -0
- package/RadioGroup-CxqDHap1.cjs +200 -0
- package/RadioGroup-CxqDHap1.cjs.map +1 -0
- package/RadioGroup-DMi9FvMP.js +201 -0
- package/RadioGroup-DMi9FvMP.js.map +1 -0
- package/Select-3CBOfM2H.js +447 -0
- package/Select-3CBOfM2H.js.map +1 -0
- package/Select-Bku4f4f8.cjs +446 -0
- package/Select-Bku4f4f8.cjs.map +1 -0
- package/Stat-BUcFCGrz.cjs +83 -0
- package/Stat-BUcFCGrz.cjs.map +1 -0
- package/Stat-C06A_izS.js +84 -0
- package/Stat-C06A_izS.js.map +1 -0
- package/StatusMessage-C5B6oGZ_.cjs +78 -0
- package/StatusMessage-C5B6oGZ_.cjs.map +1 -0
- package/StatusMessage-D1GlfQdz.js +79 -0
- package/StatusMessage-D1GlfQdz.js.map +1 -0
- package/Step-Dq0N72YB.js +49 -0
- package/Step-Dq0N72YB.js.map +1 -0
- package/Step-a8U8O-91.cjs +48 -0
- package/Step-a8U8O-91.cjs.map +1 -0
- package/Switch-BIeobv6i.cjs +179 -0
- package/Switch-BIeobv6i.cjs.map +1 -0
- package/Switch-DQEOxM2R.js +180 -0
- package/Switch-DQEOxM2R.js.map +1 -0
- package/Tab-Co31KY2k.cjs +95 -0
- package/Tab-Co31KY2k.cjs.map +1 -0
- package/Tab-DiK62gRz.js +96 -0
- package/Tab-DiK62gRz.js.map +1 -0
- package/Table-C2LbW0B1.js +531 -0
- package/Table-C2LbW0B1.js.map +1 -0
- package/Table-C4OM6rrC.cjs +530 -0
- package/Table-C4OM6rrC.cjs.map +1 -0
- package/components/AppBar/AppBar.cjs +1 -1
- package/components/AppBar/AppBar.js +1 -1
- package/components/Autocomplete/Autocomplete.cjs +4 -311
- package/components/Autocomplete/Autocomplete.cjs.map +1 -1
- package/components/Autocomplete/Autocomplete.js +4 -311
- package/components/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Avatar/Avatar.cjs +2 -160
- package/components/Avatar/Avatar.cjs.map +1 -1
- package/components/Avatar/Avatar.js +2 -160
- package/components/Avatar/Avatar.js.map +1 -1
- package/components/Card/Card.cjs +7 -184
- package/components/Card/Card.cjs.map +1 -1
- package/components/Card/Card.js +7 -184
- package/components/Card/Card.js.map +1 -1
- package/components/Chip/Chip.cjs +2 -71
- package/components/Chip/Chip.cjs.map +1 -1
- package/components/Chip/Chip.js +2 -71
- package/components/Chip/Chip.js.map +1 -1
- package/components/Column/Column.cjs +1 -1
- package/components/Column/Column.cjs.map +1 -1
- package/components/Column/Column.d.ts +1 -1
- package/components/Column/Column.js +1 -1
- package/components/Column/Column.js.map +1 -1
- package/components/Column/index.d.ts +1 -0
- package/components/DatePicker/DatePicker.cjs +3 -200
- package/components/DatePicker/DatePicker.cjs.map +1 -1
- package/components/DatePicker/DatePicker.js +3 -200
- package/components/DatePicker/DatePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.cjs +2 -73
- package/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
- package/components/DateRangePicker/DateRangePicker.js +2 -73
- package/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateTimePicker/DateTimePicker.cjs +3 -219
- package/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
- package/components/DateTimePicker/DateTimePicker.js +3 -219
- package/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/components/Drawer/Drawer.cjs +1 -1
- package/components/Drawer/Drawer.js +1 -1
- package/components/Input/Input.cjs +3 -172
- package/components/Input/Input.cjs.map +1 -1
- package/components/Input/Input.js +3 -172
- package/components/Input/Input.js.map +1 -1
- package/components/Modal/Modal.cjs +7 -317
- package/components/Modal/Modal.cjs.map +1 -1
- package/components/Modal/Modal.js +6 -316
- package/components/Modal/Modal.js.map +1 -1
- package/components/Modal/index.d.ts +2 -1
- package/components/Modal.d.ts +4 -0
- package/components/RadioGroup/RadioGroup.cjs +3 -199
- package/components/RadioGroup/RadioGroup.cjs.map +1 -1
- package/components/RadioGroup/RadioGroup.js +3 -199
- package/components/RadioGroup/RadioGroup.js.map +1 -1
- package/components/ScrollTopButton/ScrollTopButton.cjs +1 -1
- package/components/ScrollTopButton/ScrollTopButton.js +1 -1
- package/components/Select/Select.cjs +4 -445
- package/components/Select/Select.cjs.map +1 -1
- package/components/Select/Select.js +4 -445
- package/components/Select/Select.js.map +1 -1
- package/components/Stat/Stat.cjs +2 -81
- package/components/Stat/Stat.cjs.map +1 -1
- package/components/Stat/Stat.js +2 -81
- package/components/Stat/Stat.js.map +1 -1
- package/components/StatusMessage/StatusMessage.cjs +4 -77
- package/components/StatusMessage/StatusMessage.cjs.map +1 -1
- package/components/StatusMessage/StatusMessage.d.ts +1 -1
- package/components/StatusMessage/StatusMessage.js +3 -76
- package/components/StatusMessage/StatusMessage.js.map +1 -1
- package/components/StatusMessage/index.d.ts +2 -1
- package/components/StatusMessage.d.ts +4 -0
- package/components/Stepper/Stepper.cjs +3 -89
- package/components/Stepper/Stepper.cjs.map +1 -1
- package/components/Stepper/Stepper.d.ts +0 -12
- package/components/Stepper/Stepper.js +3 -89
- package/components/Stepper/Stepper.js.map +1 -1
- package/components/Switch/Switch.cjs +3 -178
- package/components/Switch/Switch.cjs.map +1 -1
- package/components/Switch/Switch.js +3 -178
- package/components/Switch/Switch.js.map +1 -1
- package/components/Table/Table.cjs +2 -528
- package/components/Table/Table.cjs.map +1 -1
- package/components/Table/Table.d.ts +1 -1
- package/components/Table/Table.js +2 -528
- package/components/Table/Table.js.map +1 -1
- package/components/Tabs/Tabs.cjs +3 -93
- package/components/Tabs/Tabs.cjs.map +1 -1
- package/components/Tabs/Tabs.js +3 -93
- package/components/Tabs/Tabs.js.map +1 -1
- package/hooks/Wizard/WizardContext.d.ts +2 -2
- package/index.cjs +46 -1
- package/index.cjs.map +1 -1
- package/index.d.ts +30 -0
- package/index.js +46 -1
- package/index.js.map +1 -1
- package/package.json +5 -3
- package/{resolvePreset-CT3kU-K2.cjs → resolvePreset-CxTI6_Ln.cjs} +3 -3
- package/{resolvePreset-CT3kU-K2.cjs.map → resolvePreset-CxTI6_Ln.cjs.map} +1 -1
- package/{resolvePreset-B-IB0ehH.js → resolvePreset-K6_BfWHD.js} +3 -3
- package/{resolvePreset-B-IB0ehH.js.map → resolvePreset-K6_BfWHD.js.map} +1 -1
- package/useWizard-CWdIxZzX.cjs.map +1 -1
- package/useWizard-CWq--C3o.js.map +1 -1
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
|
+
var __objRest = (source, exclude) => {
|
|
22
|
+
var target = {};
|
|
23
|
+
for (var prop in source)
|
|
24
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
25
|
+
target[prop] = source[prop];
|
|
26
|
+
if (source != null && __getOwnPropSymbols)
|
|
27
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
28
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
29
|
+
target[prop] = source[prop];
|
|
30
|
+
}
|
|
31
|
+
return target;
|
|
32
|
+
};
|
|
33
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
34
|
+
const React = require("react");
|
|
35
|
+
const styles = require("@mui/material/styles");
|
|
36
|
+
const AdapterDayjs = require("@mui/x-date-pickers/AdapterDayjs");
|
|
37
|
+
const LocalizationProvider = require("@mui/x-date-pickers/LocalizationProvider");
|
|
38
|
+
const DatePicker$1 = require("@mui/x-date-pickers/DatePicker");
|
|
39
|
+
const reactHookForm = require("react-hook-form");
|
|
40
|
+
const require$$0 = require("dayjs");
|
|
41
|
+
const formField_sx = require("./formField.sx-CQ1mbk9M.cjs");
|
|
42
|
+
const resolvePreset = require("./resolvePreset-CxTI6_Ln.cjs");
|
|
43
|
+
var enGb$1 = { exports: {} };
|
|
44
|
+
var enGb = enGb$1.exports;
|
|
45
|
+
var hasRequiredEnGb;
|
|
46
|
+
function requireEnGb() {
|
|
47
|
+
if (hasRequiredEnGb) return enGb$1.exports;
|
|
48
|
+
hasRequiredEnGb = 1;
|
|
49
|
+
(function(module2, exports2) {
|
|
50
|
+
!(function(e, a) {
|
|
51
|
+
module2.exports = a(require$$0);
|
|
52
|
+
})(enGb, (function(e) {
|
|
53
|
+
function a(e2) {
|
|
54
|
+
return e2 && "object" == typeof e2 && "default" in e2 ? e2 : { default: e2 };
|
|
55
|
+
}
|
|
56
|
+
var t = a(e), _ = { name: "en-gb", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), weekdaysShort: "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), weekdaysMin: "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), monthsShort: "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), weekStart: 1, yearStart: 4, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, formats: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm" }, ordinal: function(e2) {
|
|
57
|
+
var a2 = ["th", "st", "nd", "rd"], t2 = e2 % 100;
|
|
58
|
+
return "[" + e2 + (a2[(t2 - 20) % 10] || a2[t2] || a2[0]) + "]";
|
|
59
|
+
} };
|
|
60
|
+
return t.default.locale(_, null, true), _;
|
|
61
|
+
}));
|
|
62
|
+
})(enGb$1);
|
|
63
|
+
return enGb$1.exports;
|
|
64
|
+
}
|
|
65
|
+
requireEnGb();
|
|
66
|
+
const buildDatePickerSx = (borderRadius, labelPosition) => formField_sx.buildFormFieldSx({
|
|
67
|
+
borderRadius,
|
|
68
|
+
labelPosition,
|
|
69
|
+
includePickersApi: true,
|
|
70
|
+
extraOutsideSx: {
|
|
71
|
+
"& .MuiInputBase-input": {
|
|
72
|
+
paddingTop: formField_sx.FIELD_INPUT_PADDING_Y,
|
|
73
|
+
paddingBottom: formField_sx.FIELD_INPUT_PADDING_Y
|
|
74
|
+
},
|
|
75
|
+
// Secciones editables del PickersTextField (DD/MM/YYYY en API nueva).
|
|
76
|
+
"& .MuiPickersInputBase-sectionsContainer": {
|
|
77
|
+
paddingTop: formField_sx.FIELD_INPUT_PADDING_Y,
|
|
78
|
+
paddingBottom: formField_sx.FIELD_INPUT_PADDING_Y
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
const getDateValidationMessage = (error) => {
|
|
83
|
+
switch (error) {
|
|
84
|
+
case "minDate":
|
|
85
|
+
case "maxDate":
|
|
86
|
+
return "Fecha fuera del rango permitido";
|
|
87
|
+
case "invalidDate":
|
|
88
|
+
return "Formato de fecha inválido";
|
|
89
|
+
case "disableFuture":
|
|
90
|
+
return "No se permiten fechas futuras";
|
|
91
|
+
case "disablePast":
|
|
92
|
+
return "No se permiten fechas pasadas";
|
|
93
|
+
default:
|
|
94
|
+
return "";
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
const DatePicker = (props) => {
|
|
98
|
+
const _a = props, {
|
|
99
|
+
label,
|
|
100
|
+
minDate,
|
|
101
|
+
maxDate,
|
|
102
|
+
disabled,
|
|
103
|
+
readOnly,
|
|
104
|
+
borderRadius = 10,
|
|
105
|
+
labelPosition = "outside",
|
|
106
|
+
size = "small",
|
|
107
|
+
helperText,
|
|
108
|
+
error: errorProp,
|
|
109
|
+
sx,
|
|
110
|
+
className,
|
|
111
|
+
preset,
|
|
112
|
+
adapterLocale = "en-gb",
|
|
113
|
+
textFieldProps,
|
|
114
|
+
slotProps: slotPropsProp
|
|
115
|
+
} = _a, rest = __objRest(_a, [
|
|
116
|
+
"label",
|
|
117
|
+
"minDate",
|
|
118
|
+
"maxDate",
|
|
119
|
+
"disabled",
|
|
120
|
+
"readOnly",
|
|
121
|
+
"borderRadius",
|
|
122
|
+
"labelPosition",
|
|
123
|
+
"size",
|
|
124
|
+
"helperText",
|
|
125
|
+
"error",
|
|
126
|
+
"sx",
|
|
127
|
+
"className",
|
|
128
|
+
"preset",
|
|
129
|
+
"adapterLocale",
|
|
130
|
+
"textFieldProps",
|
|
131
|
+
"slotProps"
|
|
132
|
+
]);
|
|
133
|
+
const [validationError, setValidationError] = React.useState(null);
|
|
134
|
+
const validationErrorMessage = React.useMemo(
|
|
135
|
+
() => getDateValidationMessage(validationError),
|
|
136
|
+
[validationError]
|
|
137
|
+
);
|
|
138
|
+
const theme = styles.useTheme();
|
|
139
|
+
const presetSx = resolvePreset.resolvePreset("DatePicker", preset, theme);
|
|
140
|
+
const mergedSx = [
|
|
141
|
+
buildDatePickerSx(borderRadius, labelPosition),
|
|
142
|
+
...presetSx ? [presetSx] : [],
|
|
143
|
+
...Array.isArray(sx) ? sx : [sx]
|
|
144
|
+
];
|
|
145
|
+
const renderPicker = (value, onChange, onBlur, inputRef, rhfError, rhfHelperText) => {
|
|
146
|
+
const finalError = rhfError || !!validationErrorMessage || !!errorProp;
|
|
147
|
+
const finalHelperText = rhfHelperText || validationErrorMessage || helperText;
|
|
148
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs, adapterLocale, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
149
|
+
DatePicker$1.DatePicker,
|
|
150
|
+
__spreadValues({
|
|
151
|
+
label,
|
|
152
|
+
value,
|
|
153
|
+
onChange,
|
|
154
|
+
minDate,
|
|
155
|
+
maxDate,
|
|
156
|
+
onError: setValidationError,
|
|
157
|
+
disabled,
|
|
158
|
+
readOnly,
|
|
159
|
+
className,
|
|
160
|
+
sx: mergedSx,
|
|
161
|
+
slotProps: __spreadProps(__spreadValues({}, slotPropsProp), {
|
|
162
|
+
textField: __spreadValues(__spreadValues({
|
|
163
|
+
fullWidth: true,
|
|
164
|
+
size,
|
|
165
|
+
variant: "outlined",
|
|
166
|
+
onBlur,
|
|
167
|
+
inputRef,
|
|
168
|
+
error: !!finalError,
|
|
169
|
+
helperText: finalHelperText
|
|
170
|
+
}, slotPropsProp == null ? void 0 : slotPropsProp.textField), textFieldProps)
|
|
171
|
+
})
|
|
172
|
+
}, rest)
|
|
173
|
+
) });
|
|
174
|
+
};
|
|
175
|
+
if ("control" in props && props.control) {
|
|
176
|
+
const { name, control, validation } = props;
|
|
177
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
178
|
+
reactHookForm.Controller,
|
|
179
|
+
{
|
|
180
|
+
name,
|
|
181
|
+
control,
|
|
182
|
+
rules: validation,
|
|
183
|
+
render: ({ field, fieldState: { error: fieldError } }) => {
|
|
184
|
+
var _a2;
|
|
185
|
+
return renderPicker(
|
|
186
|
+
(_a2 = field.value) != null ? _a2 : null,
|
|
187
|
+
field.onChange,
|
|
188
|
+
field.onBlur,
|
|
189
|
+
field.ref,
|
|
190
|
+
!!fieldError,
|
|
191
|
+
fieldError == null ? void 0 : fieldError.message
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
const { selectedDate, onDateChange } = props;
|
|
198
|
+
return renderPicker(selectedDate, onDateChange);
|
|
199
|
+
};
|
|
200
|
+
exports.DatePicker = DatePicker;
|
|
201
|
+
//# sourceMappingURL=DatePicker-DLSfkgGA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker-DLSfkgGA.cjs","sources":["../node_modules/dayjs/locale/en-gb.js","../src/components/DatePicker/DatePicker.sx.ts","../src/components/DatePicker/DatePicker.helpers.ts","../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],a):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_gb=a(e.dayjs)}(this,(function(e){\"use strict\";function a(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=a(e),_={name:\"en-gb\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekStart:1,yearStart:4,relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},ordinal:function(e){var a=[\"th\",\"st\",\"nd\",\"rd\"],t=e%100;return\"[\"+e+(a[(t-20)%10]||a[t]||a[0])+\"]\"}};return t.default.locale(_,null,!0),_}));","import type { SxProps, Theme } from '@mui/material';\n\nimport { buildFormFieldSx } from '../_shared/formField.sx';\nimport { FIELD_INPUT_PADDING_Y } from '../../theme/tokens';\nimport type { LabelPosition } from './DatePicker';\n\n/**\n * Builder de sx para el DatePicker. Reutiliza `buildFormFieldSx` con\n * `includePickersApi: true` para cubrir tanto la API clásica (MuiInputBase /\n * MuiOutlinedInput) como la nueva (MuiPickersInputBase / MuiPickersOutlinedInput)\n * del DatePicker de MUI X v8.\n */\nexport const buildDatePickerSx = (\n borderRadius: number | string,\n labelPosition: LabelPosition,\n): SxProps<Theme> =>\n buildFormFieldSx({\n borderRadius,\n labelPosition,\n includePickersApi: true,\n extraOutsideSx: {\n '& .MuiInputBase-input': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n\n // Secciones editables del PickersTextField (DD/MM/YYYY en API nueva).\n '& .MuiPickersInputBase-sectionsContainer': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n },\n });\n","import type { DateValidationError } from '@mui/x-date-pickers/models';\n\n/**\n * Traduce el código de error del DatePicker de MUI X a un mensaje en español.\n * Se usa internamente para poblar `helperText` cuando hay error de validación\n * y el consumer no pasó un mensaje propio.\n */\nexport const getDateValidationMessage = (\n error: DateValidationError | null,\n): string => {\n switch (error) {\n case 'minDate':\n case 'maxDate':\n return 'Fecha fuera del rango permitido';\n case 'invalidDate':\n return 'Formato de fecha inválido';\n case 'disableFuture':\n return 'No se permiten fechas futuras';\n case 'disablePast':\n return 'No se permiten fechas pasadas';\n default:\n return '';\n }\n};\n","import React, { useMemo } from 'react';\nimport type { SxProps, Theme } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport {\n DatePicker as MuiDatePicker,\n type DatePickerProps as MuiDatePickerProps,\n} from '@mui/x-date-pickers/DatePicker';\nimport { DateValidationError } from '@mui/x-date-pickers/models';\nimport { Dayjs } from 'dayjs';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\nimport 'dayjs/locale/en-gb';\n\nimport { buildDatePickerSx } from './DatePicker.sx';\nimport { getDateValidationMessage } from './DatePicker.helpers';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport type LabelPosition = 'outside' | 'floating';\nexport type DatePickerSize = 'small' | 'medium';\n\n// ── Props base ───────────────────────────────────────────────────────────\nexport interface BaseDatePickerProps\n extends Omit<MuiDatePickerProps, 'value' | 'onChange' | 'slotProps'> {\n label?: string;\n minDate?: Dayjs;\n maxDate?: Dayjs;\n disabled?: boolean;\n readOnly?: boolean;\n /** Border radius del input. Default: 10 */\n borderRadius?: number | string;\n /** \"outside\" = label arriba del campo (default). \"floating\" = label clásico MUI dentro del borde */\n labelPosition?: LabelPosition;\n /** Tamaño del TextField renderizado. Default: 'small' */\n size?: DatePickerSize;\n /** helperText pasado al TextField (se sobrescribe por el error de validación si hay). */\n helperText?: string;\n /** Error external override. */\n error?: boolean;\n /** sx que se mergea al TextField interno del picker. */\n sx?: SxProps<Theme>;\n className?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.DatePicker`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n * - Cualquier otro string = mergea el preset encima del estilo built-in.\n */\n preset?: string;\n /** Locale para el adaptador dayjs. Default: 'en-gb'. */\n adapterLocale?: string;\n /** Passthrough a slotProps.textField. */\n textFieldProps?: Record<string, any>;\n /** Passthrough completo a slotProps del MuiDatePicker. */\n slotProps?: MuiDatePickerProps['slotProps'];\n}\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface RHFDatePickerProps extends BaseDatePickerProps {\n name: string;\n control: Control<any>;\n validation?: RegisterOptions;\n selectedDate?: never;\n onDateChange?: never;\n}\n\nexport interface ControlledDatePickerProps extends BaseDatePickerProps {\n name?: string;\n control?: never;\n validation?: never;\n selectedDate: Dayjs | null;\n onDateChange: (date: Dayjs | null) => void;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type DatePickerProps = RHFDatePickerProps | ControlledDatePickerProps;\n\nexport const DatePicker: React.FC<DatePickerProps> = (props) => {\n const {\n label,\n minDate,\n maxDate,\n disabled,\n readOnly,\n borderRadius = 10,\n labelPosition = 'outside',\n size = 'small',\n helperText,\n error: errorProp,\n sx,\n className,\n preset,\n adapterLocale = 'en-gb',\n textFieldProps,\n slotProps: slotPropsProp,\n ...rest\n } = props as ControlledDatePickerProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n };\n\n const [validationError, setValidationError] = React.useState<DateValidationError | null>(null);\n\n const validationErrorMessage = useMemo(\n () => getDateValidationMessage(validationError),\n [validationError],\n );\n\n const theme = useTheme();\n const presetSx = resolvePreset('DatePicker', preset, theme);\n\n const mergedSx = [\n buildDatePickerSx(borderRadius, labelPosition),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : [sx]),\n ];\n\n const renderPicker = (\n value: Dayjs | null,\n onChange: (date: Dayjs | null) => void,\n onBlur?: () => void,\n inputRef?: React.Ref<any>,\n rhfError?: boolean,\n rhfHelperText?: string,\n ) => {\n const finalError = rhfError || !!validationErrorMessage || !!errorProp;\n const finalHelperText = rhfHelperText || validationErrorMessage || helperText;\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={adapterLocale}>\n <MuiDatePicker\n label={label}\n value={value}\n onChange={onChange}\n minDate={minDate}\n maxDate={maxDate}\n onError={setValidationError}\n disabled={disabled}\n readOnly={readOnly}\n className={className}\n sx={mergedSx}\n slotProps={{\n ...slotPropsProp,\n textField: {\n fullWidth: true,\n size,\n variant: 'outlined',\n onBlur,\n inputRef,\n error: !!finalError,\n helperText: finalHelperText,\n ...(slotPropsProp?.textField as Record<string, any> | undefined),\n ...textFieldProps,\n } as any,\n }}\n {...(rest as any)}\n />\n </LocalizationProvider>\n );\n };\n\n // --- RHF mode ---\n if ('control' in props && props.control) {\n const { name, control, validation } = props as RHFDatePickerProps;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n render={({ field, fieldState: { error: fieldError } }) =>\n renderPicker(\n field.value ?? null,\n field.onChange,\n field.onBlur,\n field.ref,\n !!fieldError,\n fieldError?.message,\n )\n }\n />\n );\n }\n\n // --- Controlado ---\n const { selectedDate, onDateChange } = props as ControlledDatePickerProps;\n return renderPicker(selectedDate, onDateChange);\n};\n\nexport default DatePicker;\n"],"names":["module","this","e","a","t","buildFormFieldSx","FIELD_INPUT_PADDING_Y","useMemo","useTheme","resolvePreset","jsx","LocalizationProvider","AdapterDayjs","MuiDatePicker","Controller","_a"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
var __objRest = (source, exclude) => {
|
|
18
|
+
var target = {};
|
|
19
|
+
for (var prop in source)
|
|
20
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
21
|
+
target[prop] = source[prop];
|
|
22
|
+
if (source != null && __getOwnPropSymbols)
|
|
23
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
24
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
25
|
+
target[prop] = source[prop];
|
|
26
|
+
}
|
|
27
|
+
return target;
|
|
28
|
+
};
|
|
29
|
+
import { jsx } from "react/jsx-runtime";
|
|
30
|
+
import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs";
|
|
31
|
+
import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
|
|
32
|
+
import { DateRangePicker as DateRangePicker$1 } from "@mui/x-date-pickers-pro/DateRangePicker";
|
|
33
|
+
const DateRangePicker = (_a) => {
|
|
34
|
+
var _b = _a, {
|
|
35
|
+
label,
|
|
36
|
+
startDate,
|
|
37
|
+
endDate,
|
|
38
|
+
onDateRangeChange,
|
|
39
|
+
minDate,
|
|
40
|
+
maxDate,
|
|
41
|
+
disabled,
|
|
42
|
+
readOnly,
|
|
43
|
+
slotProps
|
|
44
|
+
} = _b, rest = __objRest(_b, [
|
|
45
|
+
"label",
|
|
46
|
+
"startDate",
|
|
47
|
+
"endDate",
|
|
48
|
+
"onDateRangeChange",
|
|
49
|
+
"minDate",
|
|
50
|
+
"maxDate",
|
|
51
|
+
"disabled",
|
|
52
|
+
"readOnly",
|
|
53
|
+
"slotProps"
|
|
54
|
+
]);
|
|
55
|
+
const value = [startDate, endDate];
|
|
56
|
+
const handleChange = (newValue) => {
|
|
57
|
+
onDateRangeChange(newValue[0], newValue[1]);
|
|
58
|
+
};
|
|
59
|
+
return /* @__PURE__ */ jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: /* @__PURE__ */ jsx(
|
|
60
|
+
DateRangePicker$1,
|
|
61
|
+
__spreadValues({
|
|
62
|
+
localeText: { start: "Fecha de Inicio", end: "Fecha de Fin" },
|
|
63
|
+
value,
|
|
64
|
+
onChange: handleChange,
|
|
65
|
+
minDate,
|
|
66
|
+
maxDate,
|
|
67
|
+
disabled,
|
|
68
|
+
readOnly,
|
|
69
|
+
slotProps
|
|
70
|
+
}, rest)
|
|
71
|
+
) });
|
|
72
|
+
};
|
|
73
|
+
export {
|
|
74
|
+
DateRangePicker as D
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=DateRangePicker-BVpeJCHI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateRangePicker-BVpeJCHI.js","sources":["../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import React from 'react';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { DateRangePicker as MuiDateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker';\nimport { Dayjs } from 'dayjs';\n\n// Define las props para el DateRangePicker\nexport interface DateRangePickerProps {\n label?: string;\n startDate: Dayjs | null;\n endDate: Dayjs | null;\n onDateRangeChange: (start: Dayjs | null, end: Dayjs | null) => void;\n minDate?: Dayjs;\n maxDate?: Dayjs;\n disabled?: boolean;\n readOnly?: boolean;\n slotProps?: any; // Para pasar slotProps a MuiDateRangePicker\n }\n \n export const DateRangePicker: React.FC<DateRangePickerProps> = ({\n label,\n startDate,\n endDate,\n onDateRangeChange,\n minDate,\n maxDate,\n disabled,\n readOnly,\n slotProps,\n ...rest\n }) => {\n const value: [Dayjs | null, Dayjs | null] = [startDate, endDate];\n \n const handleChange = (newValue: [Dayjs | null, Dayjs | null]) => {\n onDateRangeChange(newValue[0], newValue[1]);\n };\n \n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiDateRangePicker\n localeText={{ start: 'Fecha de Inicio', end: 'Fecha de Fin' }}\n value={value}\n onChange={handleChange}\n minDate={minDate}\n maxDate={maxDate}\n disabled={disabled}\n readOnly={readOnly}\n slotProps={slotProps} // Pasa los slotProps directamente\n {...rest}\n />\n </LocalizationProvider>\n );\n };\n\nexport default DateRangePicker"],"names":["MuiDateRangePicker"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBS,MAAM,kBAAkD,CAAC,OAW1D;AAX0D,eAC9D;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MAT8D,IAU3D,iBAV2D,IAU3D;AAAA,IATH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,QAAsC,CAAC,WAAW,OAAO;AAE/D,QAAM,eAAe,CAAC,aAA2C;AAC/D,sBAAkB,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAAA,EAC5C;AAEA,SACE,oBAAC,sBAAA,EAAqB,aAAa,cACjC,UAAA;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC,YAAY,EAAE,OAAO,mBAAmB,KAAK,eAAA;AAAA,MAC7C;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,OACI;AAAA,EAAA,GAER;AAEJ;"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __spreadValues = (a, b) => {
|
|
8
|
+
for (var prop in b || (b = {}))
|
|
9
|
+
if (__hasOwnProp.call(b, prop))
|
|
10
|
+
__defNormalProp(a, prop, b[prop]);
|
|
11
|
+
if (__getOwnPropSymbols)
|
|
12
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
13
|
+
if (__propIsEnum.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
}
|
|
16
|
+
return a;
|
|
17
|
+
};
|
|
18
|
+
var __objRest = (source, exclude) => {
|
|
19
|
+
var target = {};
|
|
20
|
+
for (var prop in source)
|
|
21
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
22
|
+
target[prop] = source[prop];
|
|
23
|
+
if (source != null && __getOwnPropSymbols)
|
|
24
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
25
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
26
|
+
target[prop] = source[prop];
|
|
27
|
+
}
|
|
28
|
+
return target;
|
|
29
|
+
};
|
|
30
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
31
|
+
const AdapterDayjs = require("@mui/x-date-pickers/AdapterDayjs");
|
|
32
|
+
const LocalizationProvider = require("@mui/x-date-pickers/LocalizationProvider");
|
|
33
|
+
const DateRangePicker$1 = require("@mui/x-date-pickers-pro/DateRangePicker");
|
|
34
|
+
const DateRangePicker = (_a) => {
|
|
35
|
+
var _b = _a, {
|
|
36
|
+
label,
|
|
37
|
+
startDate,
|
|
38
|
+
endDate,
|
|
39
|
+
onDateRangeChange,
|
|
40
|
+
minDate,
|
|
41
|
+
maxDate,
|
|
42
|
+
disabled,
|
|
43
|
+
readOnly,
|
|
44
|
+
slotProps
|
|
45
|
+
} = _b, rest = __objRest(_b, [
|
|
46
|
+
"label",
|
|
47
|
+
"startDate",
|
|
48
|
+
"endDate",
|
|
49
|
+
"onDateRangeChange",
|
|
50
|
+
"minDate",
|
|
51
|
+
"maxDate",
|
|
52
|
+
"disabled",
|
|
53
|
+
"readOnly",
|
|
54
|
+
"slotProps"
|
|
55
|
+
]);
|
|
56
|
+
const value = [startDate, endDate];
|
|
57
|
+
const handleChange = (newValue) => {
|
|
58
|
+
onDateRangeChange(newValue[0], newValue[1]);
|
|
59
|
+
};
|
|
60
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDayjs.AdapterDayjs, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
61
|
+
DateRangePicker$1.DateRangePicker,
|
|
62
|
+
__spreadValues({
|
|
63
|
+
localeText: { start: "Fecha de Inicio", end: "Fecha de Fin" },
|
|
64
|
+
value,
|
|
65
|
+
onChange: handleChange,
|
|
66
|
+
minDate,
|
|
67
|
+
maxDate,
|
|
68
|
+
disabled,
|
|
69
|
+
readOnly,
|
|
70
|
+
slotProps
|
|
71
|
+
}, rest)
|
|
72
|
+
) });
|
|
73
|
+
};
|
|
74
|
+
exports.DateRangePicker = DateRangePicker;
|
|
75
|
+
//# sourceMappingURL=DateRangePicker-B_hKQhbj.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateRangePicker-B_hKQhbj.cjs","sources":["../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import React from 'react';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { DateRangePicker as MuiDateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker';\nimport { Dayjs } from 'dayjs';\n\n// Define las props para el DateRangePicker\nexport interface DateRangePickerProps {\n label?: string;\n startDate: Dayjs | null;\n endDate: Dayjs | null;\n onDateRangeChange: (start: Dayjs | null, end: Dayjs | null) => void;\n minDate?: Dayjs;\n maxDate?: Dayjs;\n disabled?: boolean;\n readOnly?: boolean;\n slotProps?: any; // Para pasar slotProps a MuiDateRangePicker\n }\n \n export const DateRangePicker: React.FC<DateRangePickerProps> = ({\n label,\n startDate,\n endDate,\n onDateRangeChange,\n minDate,\n maxDate,\n disabled,\n readOnly,\n slotProps,\n ...rest\n }) => {\n const value: [Dayjs | null, Dayjs | null] = [startDate, endDate];\n \n const handleChange = (newValue: [Dayjs | null, Dayjs | null]) => {\n onDateRangeChange(newValue[0], newValue[1]);\n };\n \n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiDateRangePicker\n localeText={{ start: 'Fecha de Inicio', end: 'Fecha de Fin' }}\n value={value}\n onChange={handleChange}\n minDate={minDate}\n maxDate={maxDate}\n disabled={disabled}\n readOnly={readOnly}\n slotProps={slotProps} // Pasa los slotProps directamente\n {...rest}\n />\n </LocalizationProvider>\n );\n };\n\nexport default DateRangePicker"],"names":["jsx","LocalizationProvider","AdapterDayjs","MuiDateRangePicker"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBS,MAAM,kBAAkD,CAAC,OAW1D;AAX0D,eAC9D;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MAT8D,IAU3D,iBAV2D,IAU3D;AAAA,IATH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,QAAsC,CAAC,WAAW,OAAO;AAE/D,QAAM,eAAe,CAAC,aAA2C;AAC/D,sBAAkB,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAAA,EAC5C;AAEA,SACEA,2BAAAA,IAACC,qBAAAA,sBAAA,EAAqB,aAAaC,aAAAA,cACjC,UAAAF,2BAAAA;AAAAA,IAACG,kBAAAA;AAAAA,IAAA;AAAA,MACC,YAAY,EAAE,OAAO,mBAAmB,KAAK,eAAA;AAAA,MAC7C;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,OACI;AAAA,EAAA,GAER;AAEJ;;"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
|
+
var __objRest = (source, exclude) => {
|
|
22
|
+
var target = {};
|
|
23
|
+
for (var prop in source)
|
|
24
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
25
|
+
target[prop] = source[prop];
|
|
26
|
+
if (source != null && __getOwnPropSymbols)
|
|
27
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
28
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
29
|
+
target[prop] = source[prop];
|
|
30
|
+
}
|
|
31
|
+
return target;
|
|
32
|
+
};
|
|
33
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
34
|
+
const React = require("react");
|
|
35
|
+
const styles = require("@mui/material/styles");
|
|
36
|
+
const AdapterDayjs = require("@mui/x-date-pickers/AdapterDayjs");
|
|
37
|
+
const LocalizationProvider = require("@mui/x-date-pickers/LocalizationProvider");
|
|
38
|
+
const DateTimePicker$1 = require("@mui/x-date-pickers/DateTimePicker");
|
|
39
|
+
const reactHookForm = require("react-hook-form");
|
|
40
|
+
const formField_sx = require("./formField.sx-CQ1mbk9M.cjs");
|
|
41
|
+
const resolvePreset = require("./resolvePreset-CxTI6_Ln.cjs");
|
|
42
|
+
const buildDateTimePickerSx = (borderRadius, labelPosition) => formField_sx.buildFormFieldSx({
|
|
43
|
+
borderRadius,
|
|
44
|
+
labelPosition,
|
|
45
|
+
includePickersApi: true,
|
|
46
|
+
extraOutsideSx: {
|
|
47
|
+
"& .MuiInputBase-input": {
|
|
48
|
+
paddingTop: formField_sx.FIELD_INPUT_PADDING_Y,
|
|
49
|
+
paddingBottom: formField_sx.FIELD_INPUT_PADDING_Y
|
|
50
|
+
},
|
|
51
|
+
"& .MuiPickersInputBase-sectionsContainer": {
|
|
52
|
+
paddingTop: formField_sx.FIELD_INPUT_PADDING_Y,
|
|
53
|
+
paddingBottom: formField_sx.FIELD_INPUT_PADDING_Y
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const getDateTimeValidationMessage = (error) => {
|
|
58
|
+
switch (error) {
|
|
59
|
+
case "minDate":
|
|
60
|
+
case "maxDate":
|
|
61
|
+
case "invalidDate":
|
|
62
|
+
return "Formato de fecha/hora inválido";
|
|
63
|
+
case "disableFuture":
|
|
64
|
+
return "No se permiten fechas/horas futuras";
|
|
65
|
+
case "disablePast":
|
|
66
|
+
return "No se permiten fechas/horas pasadas";
|
|
67
|
+
default:
|
|
68
|
+
return "";
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const buildLocaleText = (clearButtonText, cancelButtonText, acceptButtonText) => {
|
|
72
|
+
const text = {};
|
|
73
|
+
if (clearButtonText) text.clearButtonLabel = clearButtonText;
|
|
74
|
+
if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;
|
|
75
|
+
if (acceptButtonText) text.okButtonLabel = acceptButtonText;
|
|
76
|
+
return text;
|
|
77
|
+
};
|
|
78
|
+
const DateTimePicker = (props) => {
|
|
79
|
+
const _a = props, {
|
|
80
|
+
label,
|
|
81
|
+
minDateTime,
|
|
82
|
+
maxDateTime,
|
|
83
|
+
disabled,
|
|
84
|
+
readOnly,
|
|
85
|
+
inputFormat,
|
|
86
|
+
borderRadius = 10,
|
|
87
|
+
labelPosition = "outside",
|
|
88
|
+
size = "small",
|
|
89
|
+
helperText,
|
|
90
|
+
error: errorProp,
|
|
91
|
+
sx,
|
|
92
|
+
className,
|
|
93
|
+
preset,
|
|
94
|
+
adapterLocale,
|
|
95
|
+
clearButtonText,
|
|
96
|
+
cancelButtonText,
|
|
97
|
+
acceptButtonText,
|
|
98
|
+
minutesStep,
|
|
99
|
+
minTime,
|
|
100
|
+
customClass,
|
|
101
|
+
viewRenderers,
|
|
102
|
+
timeSteps,
|
|
103
|
+
ampm = false,
|
|
104
|
+
textFieldProps,
|
|
105
|
+
slotProps: slotPropsProp
|
|
106
|
+
} = _a, rest = __objRest(_a, [
|
|
107
|
+
"label",
|
|
108
|
+
"minDateTime",
|
|
109
|
+
"maxDateTime",
|
|
110
|
+
"disabled",
|
|
111
|
+
"readOnly",
|
|
112
|
+
"inputFormat",
|
|
113
|
+
"borderRadius",
|
|
114
|
+
"labelPosition",
|
|
115
|
+
"size",
|
|
116
|
+
"helperText",
|
|
117
|
+
"error",
|
|
118
|
+
"sx",
|
|
119
|
+
"className",
|
|
120
|
+
"preset",
|
|
121
|
+
"adapterLocale",
|
|
122
|
+
"clearButtonText",
|
|
123
|
+
"cancelButtonText",
|
|
124
|
+
"acceptButtonText",
|
|
125
|
+
"minutesStep",
|
|
126
|
+
"minTime",
|
|
127
|
+
"customClass",
|
|
128
|
+
"viewRenderers",
|
|
129
|
+
"timeSteps",
|
|
130
|
+
"ampm",
|
|
131
|
+
"textFieldProps",
|
|
132
|
+
"slotProps"
|
|
133
|
+
]);
|
|
134
|
+
const [validationError, setValidationError] = React.useState(null);
|
|
135
|
+
const validationErrorMessage = React.useMemo(
|
|
136
|
+
() => getDateTimeValidationMessage(validationError),
|
|
137
|
+
[validationError]
|
|
138
|
+
);
|
|
139
|
+
const customLocaleText = React.useMemo(
|
|
140
|
+
() => buildLocaleText(clearButtonText, cancelButtonText, acceptButtonText),
|
|
141
|
+
[clearButtonText, cancelButtonText, acceptButtonText]
|
|
142
|
+
);
|
|
143
|
+
const theme = styles.useTheme();
|
|
144
|
+
const presetSx = resolvePreset.resolvePreset("DateTimePicker", preset, theme);
|
|
145
|
+
const mergedSx = [
|
|
146
|
+
buildDateTimePickerSx(borderRadius, labelPosition),
|
|
147
|
+
...presetSx ? [presetSx] : [],
|
|
148
|
+
...Array.isArray(sx) ? sx : [sx]
|
|
149
|
+
];
|
|
150
|
+
const renderPicker = (value, onChange, onBlur, inputRef, rhfError, rhfHelperText) => {
|
|
151
|
+
const finalError = rhfError || !!validationErrorMessage || !!errorProp;
|
|
152
|
+
const finalHelperText = rhfHelperText || validationErrorMessage || helperText;
|
|
153
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
154
|
+
LocalizationProvider.LocalizationProvider,
|
|
155
|
+
__spreadProps(__spreadValues({
|
|
156
|
+
dateAdapter: AdapterDayjs.AdapterDayjs
|
|
157
|
+
}, adapterLocale ? { adapterLocale } : {}), {
|
|
158
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
159
|
+
DateTimePicker$1.DateTimePicker,
|
|
160
|
+
__spreadValues({
|
|
161
|
+
className: customClass || className,
|
|
162
|
+
label,
|
|
163
|
+
value,
|
|
164
|
+
onChange,
|
|
165
|
+
onError: setValidationError,
|
|
166
|
+
minDateTime,
|
|
167
|
+
maxDateTime,
|
|
168
|
+
minutesStep,
|
|
169
|
+
disabled,
|
|
170
|
+
readOnly,
|
|
171
|
+
minTime,
|
|
172
|
+
format: inputFormat != null ? inputFormat : "DD/MM/YYYY HH:mm",
|
|
173
|
+
viewRenderers,
|
|
174
|
+
timeSteps,
|
|
175
|
+
ampm,
|
|
176
|
+
sx: mergedSx,
|
|
177
|
+
slotProps: __spreadProps(__spreadValues({}, slotPropsProp), {
|
|
178
|
+
textField: __spreadValues(__spreadValues({
|
|
179
|
+
fullWidth: true,
|
|
180
|
+
size,
|
|
181
|
+
variant: "outlined",
|
|
182
|
+
onBlur,
|
|
183
|
+
inputRef,
|
|
184
|
+
error: !!finalError,
|
|
185
|
+
helperText: finalHelperText
|
|
186
|
+
}, slotPropsProp == null ? void 0 : slotPropsProp.textField), textFieldProps)
|
|
187
|
+
}),
|
|
188
|
+
localeText: customLocaleText
|
|
189
|
+
}, rest)
|
|
190
|
+
)
|
|
191
|
+
})
|
|
192
|
+
);
|
|
193
|
+
};
|
|
194
|
+
if ("control" in props && props.control) {
|
|
195
|
+
const { name, control, validation } = props;
|
|
196
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
197
|
+
reactHookForm.Controller,
|
|
198
|
+
{
|
|
199
|
+
name,
|
|
200
|
+
control,
|
|
201
|
+
rules: validation,
|
|
202
|
+
render: ({ field, fieldState: { error: fieldError } }) => {
|
|
203
|
+
var _a2;
|
|
204
|
+
return renderPicker(
|
|
205
|
+
(_a2 = field.value) != null ? _a2 : null,
|
|
206
|
+
field.onChange,
|
|
207
|
+
field.onBlur,
|
|
208
|
+
field.ref,
|
|
209
|
+
!!fieldError,
|
|
210
|
+
fieldError == null ? void 0 : fieldError.message
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
const { selectedDateTime, onDateTimeChange } = props;
|
|
217
|
+
return renderPicker(selectedDateTime, onDateTimeChange);
|
|
218
|
+
};
|
|
219
|
+
exports.DateTimePicker = DateTimePicker;
|
|
220
|
+
//# sourceMappingURL=DateTimePicker-CWNW09-O.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateTimePicker-CWNW09-O.cjs","sources":["../src/components/DateTimePicker/DateTimePicker.sx.ts","../src/components/DateTimePicker/DateTimePicker.helpers.ts","../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material';\n\nimport { buildFormFieldSx } from '../_shared/formField.sx';\nimport { FIELD_INPUT_PADDING_Y } from '../../theme/tokens';\nimport type { LabelPosition } from './DateTimePicker';\n\n/**\n * Builder de sx para el DateTimePicker. Mismo patrón que DatePicker.\n * Usa `includePickersApi: true` para soportar la API nueva de MUI X v8.\n */\nexport const buildDateTimePickerSx = (\n borderRadius: number | string,\n labelPosition: LabelPosition,\n): SxProps<Theme> =>\n buildFormFieldSx({\n borderRadius,\n labelPosition,\n includePickersApi: true,\n extraOutsideSx: {\n '& .MuiInputBase-input': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n\n '& .MuiPickersInputBase-sectionsContainer': {\n paddingTop: FIELD_INPUT_PADDING_Y,\n paddingBottom: FIELD_INPUT_PADDING_Y,\n },\n },\n });\n","import type { DateValidationError } from '@mui/x-date-pickers/models';\n\n/**\n * Traduce el error del DateTimePicker a un mensaje en español. Se usa\n * internamente para poblar `helperText` cuando hay error de validación.\n */\nexport const getDateTimeValidationMessage = (\n error: DateValidationError | null,\n): string => {\n switch (error) {\n case 'minDate':\n case 'maxDate':\n case 'invalidDate':\n return 'Formato de fecha/hora inválido';\n case 'disableFuture':\n return 'No se permiten fechas/horas futuras';\n case 'disablePast':\n return 'No se permiten fechas/horas pasadas';\n default:\n return '';\n }\n};\n\n/**\n * Construye el `localeText` que MUI acepta para overridear los labels de los\n * botones del popover (Cancel / OK / Clear).\n */\nexport const buildLocaleText = (\n clearButtonText?: string,\n cancelButtonText?: string,\n acceptButtonText?: string,\n): Record<string, string> => {\n const text: Record<string, string> = {};\n if (clearButtonText) text.clearButtonLabel = clearButtonText;\n if (cancelButtonText) text.cancelButtonLabel = cancelButtonText;\n if (acceptButtonText) text.okButtonLabel = acceptButtonText;\n return text;\n};\n","import React, { useMemo } from 'react';\nimport type { SxProps, Theme } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport {\n DateTimePicker as MuiDateTimePicker,\n type DateTimePickerProps as MuiDateTimePickerProps,\n} from '@mui/x-date-pickers/DateTimePicker';\nimport { DateValidationError } from '@mui/x-date-pickers/models';\nimport { Dayjs } from 'dayjs';\nimport { Controller, type Control, type RegisterOptions } from 'react-hook-form';\n\nimport { buildDateTimePickerSx } from './DateTimePicker.sx';\nimport {\n buildLocaleText,\n getDateTimeValidationMessage,\n} from './DateTimePicker.helpers';\nimport { resolvePreset } from '../_shared/resolvePreset';\n\n// ── Tipos de dominio ─────────────────────────────────────────────────────\nexport type LabelPosition = 'outside' | 'floating';\nexport type DateTimePickerSize = 'small' | 'medium';\n\n// ── Props base ───────────────────────────────────────────────────────────\nexport interface BaseDateTimePickerProps\n extends Omit<MuiDateTimePickerProps, 'value' | 'onChange' | 'slotProps' | 'format'> {\n label?: string;\n minDateTime?: Dayjs;\n maxDateTime?: Dayjs;\n disabled?: boolean;\n readOnly?: boolean;\n /** Formato de la fecha/hora. Default: 'DD/MM/YYYY HH:mm'. */\n inputFormat?: string;\n /** Border radius del input. Default: 10. */\n borderRadius?: number | string;\n /** \"outside\" (default) o \"floating\". */\n labelPosition?: LabelPosition;\n /** Tamaño del TextField. Default: 'small'. */\n size?: DateTimePickerSize;\n helperText?: string;\n error?: boolean;\n sx?: SxProps<Theme>;\n className?: string;\n /**\n * Nombre del preset de estilo registrado en `theme.styles.DateTimePicker`.\n * - `\"default\"` (o ausente) = estilo built-in del paquete.\n * - Cualquier otro string = mergea el preset encima del estilo built-in.\n */\n preset?: string;\n /** Locale del adaptador dayjs. */\n adapterLocale?: string;\n /** Textos de los botones del popover. */\n clearButtonText?: string;\n cancelButtonText?: string;\n acceptButtonText?: string;\n minutesStep?: number;\n minTime?: Dayjs;\n customClass?: string;\n viewRenderers?: any;\n timeSteps?: any;\n /** Si es true usa formato 12h, false = 24h. Default: false. */\n ampm?: boolean;\n textFieldProps?: Record<string, any>;\n /** Passthrough completo a slotProps del MuiDateTimePicker. */\n slotProps?: MuiDateTimePickerProps['slotProps'];\n}\n\n// ── Variantes discriminadas (RHF vs controlado) ──────────────────────────\nexport interface RHFDateTimePickerProps extends BaseDateTimePickerProps {\n name: string;\n control: Control<any>;\n validation?: RegisterOptions;\n selectedDateTime?: never;\n onDateTimeChange?: never;\n}\n\nexport interface ControlledDateTimePickerProps extends BaseDateTimePickerProps {\n name?: string;\n control?: never;\n validation?: never;\n selectedDateTime: Dayjs | null;\n onDateTimeChange: (dateTime: Dayjs | null) => void;\n}\n\n// ── API pública final ────────────────────────────────────────────────────\nexport type DateTimePickerProps =\n | RHFDateTimePickerProps\n | ControlledDateTimePickerProps;\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = (props) => {\n const {\n label,\n minDateTime,\n maxDateTime,\n disabled,\n readOnly,\n inputFormat,\n borderRadius = 10,\n labelPosition = 'outside',\n size = 'small',\n helperText,\n error: errorProp,\n sx,\n className,\n preset,\n adapterLocale,\n clearButtonText,\n cancelButtonText,\n acceptButtonText,\n minutesStep,\n minTime,\n customClass,\n viewRenderers,\n timeSteps,\n ampm = false,\n textFieldProps,\n slotProps: slotPropsProp,\n ...rest\n } = props as ControlledDateTimePickerProps & {\n control?: Control<any>;\n validation?: RegisterOptions;\n };\n\n const [validationError, setValidationError] = React.useState<DateValidationError | null>(null);\n\n const validationErrorMessage = useMemo(\n () => getDateTimeValidationMessage(validationError),\n [validationError],\n );\n\n const customLocaleText = useMemo(\n () => buildLocaleText(clearButtonText, cancelButtonText, acceptButtonText),\n [clearButtonText, cancelButtonText, acceptButtonText],\n );\n\n const theme = useTheme();\n const presetSx = resolvePreset('DateTimePicker', preset, theme);\n\n const mergedSx = [\n buildDateTimePickerSx(borderRadius, labelPosition),\n ...(presetSx ? [presetSx] : []),\n ...(Array.isArray(sx) ? sx : [sx]),\n ];\n\n const renderPicker = (\n value: Dayjs | null,\n onChange: (date: Dayjs | null) => void,\n onBlur?: () => void,\n inputRef?: React.Ref<any>,\n rhfError?: boolean,\n rhfHelperText?: string,\n ) => {\n const finalError = rhfError || !!validationErrorMessage || !!errorProp;\n const finalHelperText = rhfHelperText || validationErrorMessage || helperText;\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterDayjs}\n {...(adapterLocale ? { adapterLocale } : {})}\n >\n <MuiDateTimePicker\n className={customClass || className}\n label={label}\n value={value}\n onChange={onChange}\n onError={setValidationError}\n minDateTime={minDateTime}\n maxDateTime={maxDateTime}\n minutesStep={minutesStep}\n disabled={disabled}\n readOnly={readOnly}\n minTime={minTime}\n format={inputFormat ?? 'DD/MM/YYYY HH:mm'}\n viewRenderers={viewRenderers}\n timeSteps={timeSteps}\n ampm={ampm}\n sx={mergedSx}\n slotProps={{\n ...slotPropsProp,\n textField: {\n fullWidth: true,\n size,\n variant: 'outlined',\n onBlur,\n inputRef,\n error: !!finalError,\n helperText: finalHelperText,\n ...(slotPropsProp?.textField as Record<string, any> | undefined),\n ...textFieldProps,\n } as any,\n }}\n localeText={customLocaleText}\n {...(rest as any)}\n />\n </LocalizationProvider>\n );\n };\n\n if ('control' in props && props.control) {\n const { name, control, validation } = props as RHFDateTimePickerProps;\n return (\n <Controller\n name={name}\n control={control}\n rules={validation}\n render={({ field, fieldState: { error: fieldError } }) =>\n renderPicker(\n field.value ?? null,\n field.onChange,\n field.onBlur,\n field.ref,\n !!fieldError,\n fieldError?.message,\n )\n }\n />\n );\n }\n\n const { selectedDateTime, onDateTimeChange } = props as ControlledDateTimePickerProps;\n return renderPicker(selectedDateTime, onDateTimeChange);\n};\n\nexport default DateTimePicker;\n"],"names":["buildFormFieldSx","FIELD_INPUT_PADDING_Y","useMemo","useTheme","resolvePreset","jsx","LocalizationProvider","AdapterDayjs","MuiDateTimePicker","Controller","_a"],"mappings":"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"}
|