@bluemarble/bm-components 2.4.1 → 2.4.2
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/dist/index.cjs +237 -229
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +92 -43
- package/dist/index.d.ts +92 -43
- package/dist/index.js +271 -263
- package/dist/index.js.map +1 -1
- package/package.json +24 -27
package/dist/index.cjs
CHANGED
|
@@ -3155,7 +3155,7 @@ var Grid_default = Grid;
|
|
|
3155
3155
|
// src/components/Grid/EditableTableCell/DefaultInput.tsx
|
|
3156
3156
|
|
|
3157
3157
|
|
|
3158
|
-
var
|
|
3158
|
+
var _dayjs = require('dayjs'); var _dayjs2 = _interopRequireDefault(_dayjs);
|
|
3159
3159
|
var DefaultInput = (allProps) => {
|
|
3160
3160
|
const {
|
|
3161
3161
|
TextFieldProps: TextFieldProps3,
|
|
@@ -3174,9 +3174,9 @@ var DefaultInput = (allProps) => {
|
|
|
3174
3174
|
if (formatInputDefautvalue) return formatInputDefautvalue(value);
|
|
3175
3175
|
switch (type) {
|
|
3176
3176
|
case "date":
|
|
3177
|
-
return
|
|
3177
|
+
return _dayjs2.default.call(void 0, value).format("YYYY-MM-DD");
|
|
3178
3178
|
case "datetime-local":
|
|
3179
|
-
return
|
|
3179
|
+
return _dayjs2.default.call(void 0, value).format("YYYY-MM-DDTHH:mm:ss");
|
|
3180
3180
|
default:
|
|
3181
3181
|
return String(value);
|
|
3182
3182
|
}
|
|
@@ -3246,9 +3246,7 @@ var InputMask = (allProps) => {
|
|
|
3246
3246
|
handleCancelEditing,
|
|
3247
3247
|
setIsEditing
|
|
3248
3248
|
} = allProps;
|
|
3249
|
-
const { ref, unmaskedValue, setValue } = _reactimask.useIMask.call(void 0,
|
|
3250
|
-
mask
|
|
3251
|
-
);
|
|
3249
|
+
const { ref, unmaskedValue, setValue } = _reactimask.useIMask.call(void 0, mask);
|
|
3252
3250
|
const handleSave = (event) => {
|
|
3253
3251
|
setIsEditing(false);
|
|
3254
3252
|
setValue(String(_optionalChain([event, 'access', _34 => _34.target, 'optionalAccess', _35 => _35.value])));
|
|
@@ -3484,8 +3482,8 @@ function FormikInputMask({
|
|
|
3484
3482
|
|
|
3485
3483
|
|
|
3486
3484
|
var CustomInputLabel = _material.InputLabel;
|
|
3487
|
-
function Select({ withFormik = true, ...rest }) {
|
|
3488
|
-
if (withFormik) return /* @__PURE__ */ React2.default.createElement(FormikSelect, { ...rest });
|
|
3485
|
+
function Select({ withFormik = true, helperText, ...rest }) {
|
|
3486
|
+
if (withFormik) return /* @__PURE__ */ React2.default.createElement(FormikSelect, { helperText, ...rest });
|
|
3489
3487
|
else return /* @__PURE__ */ React2.default.createElement(BaseSelect, { ...rest });
|
|
3490
3488
|
}
|
|
3491
3489
|
function BaseSelect({
|
|
@@ -3706,6 +3704,8 @@ function FormikAutocomplete({
|
|
|
3706
3704
|
|
|
3707
3705
|
|
|
3708
3706
|
|
|
3707
|
+
|
|
3708
|
+
|
|
3709
3709
|
var Checkbox = ({
|
|
3710
3710
|
withFormik = true,
|
|
3711
3711
|
name,
|
|
@@ -3716,40 +3716,40 @@ var Checkbox = ({
|
|
|
3716
3716
|
};
|
|
3717
3717
|
var BaseCheckbox = ({
|
|
3718
3718
|
label,
|
|
3719
|
+
helperText,
|
|
3719
3720
|
FormControlLabelProps: FormControlLabelProps3,
|
|
3720
3721
|
...props
|
|
3721
3722
|
}) => {
|
|
3722
|
-
return /* @__PURE__ */ React2.default.createElement(
|
|
3723
|
+
return /* @__PURE__ */ React2.default.createElement(_material.FormControl, null, /* @__PURE__ */ React2.default.createElement(
|
|
3723
3724
|
_material.FormControlLabel,
|
|
3724
3725
|
{
|
|
3725
3726
|
label,
|
|
3726
3727
|
control: /* @__PURE__ */ React2.default.createElement(_material.Checkbox, { ...props }),
|
|
3727
3728
|
...FormControlLabelProps3
|
|
3728
3729
|
}
|
|
3729
|
-
);
|
|
3730
|
+
), helperText && /* @__PURE__ */ React2.default.createElement(_material.FormHelperText, null, helperText));
|
|
3730
3731
|
};
|
|
3731
3732
|
var FormikCheckbox = ({
|
|
3732
3733
|
label,
|
|
3733
3734
|
name,
|
|
3735
|
+
helperText,
|
|
3734
3736
|
FormControlLabelProps: FormControlLabelProps3,
|
|
3735
3737
|
...props
|
|
3736
3738
|
}) => {
|
|
3737
|
-
const [{ value, ...field }, , { setValue }] = _formik.useField.call(void 0, {
|
|
3738
|
-
name
|
|
3739
|
-
});
|
|
3739
|
+
const [{ value, ...field }, { error }, { setValue }] = _formik.useField.call(void 0, { name });
|
|
3740
3740
|
const onChange = (_, value2) => {
|
|
3741
3741
|
setValue(value2);
|
|
3742
3742
|
};
|
|
3743
|
-
return /* @__PURE__ */ React2.default.createElement(
|
|
3743
|
+
return /* @__PURE__ */ React2.default.createElement(_material.FormControl, { error: Boolean(error) }, /* @__PURE__ */ React2.default.createElement(
|
|
3744
3744
|
_material.FormControlLabel,
|
|
3745
3745
|
{
|
|
3746
3746
|
label,
|
|
3747
|
-
control: /* @__PURE__ */ React2.default.createElement(_material.Checkbox, { ...props,
|
|
3747
|
+
control: /* @__PURE__ */ React2.default.createElement(_material.Checkbox, { ...props, checked: Boolean(value) }),
|
|
3748
3748
|
...field,
|
|
3749
3749
|
onChange,
|
|
3750
3750
|
...FormControlLabelProps3
|
|
3751
3751
|
}
|
|
3752
|
-
);
|
|
3752
|
+
), (error || helperText) && /* @__PURE__ */ React2.default.createElement(_material.FormHelperText, null, _nullishCoalesce(error, () => ( helperText))));
|
|
3753
3753
|
};
|
|
3754
3754
|
|
|
3755
3755
|
// src/components/Switch/index.tsx
|
|
@@ -3759,46 +3759,48 @@ var FormikCheckbox = ({
|
|
|
3759
3759
|
|
|
3760
3760
|
|
|
3761
3761
|
|
|
3762
|
+
|
|
3763
|
+
|
|
3762
3764
|
var Switch = ({ withFormik = true, name, ...props }) => {
|
|
3763
3765
|
if (withFormik && name) return /* @__PURE__ */ React2.default.createElement(FormikSwitch, { name, ...props });
|
|
3764
3766
|
else return /* @__PURE__ */ React2.default.createElement(BaseSwitch, { ...props });
|
|
3765
3767
|
};
|
|
3766
3768
|
var BaseSwitch = ({
|
|
3767
3769
|
label,
|
|
3770
|
+
helperText,
|
|
3768
3771
|
FormControlLabelProps: FormControlLabelProps3,
|
|
3769
3772
|
...props
|
|
3770
3773
|
}) => {
|
|
3771
|
-
return /* @__PURE__ */ React2.default.createElement(
|
|
3774
|
+
return /* @__PURE__ */ React2.default.createElement(_material.FormControl, null, /* @__PURE__ */ React2.default.createElement(
|
|
3772
3775
|
_material.FormControlLabel,
|
|
3773
3776
|
{
|
|
3774
3777
|
label,
|
|
3775
3778
|
control: /* @__PURE__ */ React2.default.createElement(_material.Switch, { ...props }),
|
|
3776
3779
|
...FormControlLabelProps3
|
|
3777
3780
|
}
|
|
3778
|
-
);
|
|
3781
|
+
), helperText && /* @__PURE__ */ React2.default.createElement(_material.FormHelperText, null, helperText));
|
|
3779
3782
|
};
|
|
3780
3783
|
var FormikSwitch = ({
|
|
3781
3784
|
label,
|
|
3782
3785
|
name,
|
|
3786
|
+
helperText,
|
|
3783
3787
|
FormControlLabelProps: FormControlLabelProps3,
|
|
3784
3788
|
...props
|
|
3785
3789
|
}) => {
|
|
3786
|
-
const [{ value, onChange: unused, ...field }, , { setValue }] = _formik.useField.call(void 0, {
|
|
3787
|
-
name
|
|
3788
|
-
});
|
|
3790
|
+
const [{ value, onChange: unused, ...field }, { error }, { setValue }] = _formik.useField.call(void 0, { name });
|
|
3789
3791
|
const onChange = (_, value2) => {
|
|
3790
3792
|
setValue(value2);
|
|
3791
3793
|
};
|
|
3792
|
-
return /* @__PURE__ */ React2.default.createElement(
|
|
3794
|
+
return /* @__PURE__ */ React2.default.createElement(_material.FormControl, { error: Boolean(error) }, /* @__PURE__ */ React2.default.createElement(
|
|
3793
3795
|
_material.FormControlLabel,
|
|
3794
3796
|
{
|
|
3795
3797
|
label,
|
|
3796
3798
|
onChange,
|
|
3797
|
-
control: /* @__PURE__ */ React2.default.createElement(_material.Switch, {
|
|
3799
|
+
control: /* @__PURE__ */ React2.default.createElement(_material.Switch, { checked: value, ...props }),
|
|
3798
3800
|
...field,
|
|
3799
3801
|
...FormControlLabelProps3
|
|
3800
3802
|
}
|
|
3801
|
-
);
|
|
3803
|
+
), (error || helperText) && /* @__PURE__ */ React2.default.createElement(_material.FormHelperText, null, _nullishCoalesce(error, () => ( helperText))));
|
|
3802
3804
|
};
|
|
3803
3805
|
|
|
3804
3806
|
// src/components/Radio/index.tsx
|
|
@@ -3811,6 +3813,7 @@ var FormikSwitch = ({
|
|
|
3811
3813
|
|
|
3812
3814
|
|
|
3813
3815
|
|
|
3816
|
+
|
|
3814
3817
|
var Radio = ({
|
|
3815
3818
|
name,
|
|
3816
3819
|
withFormik = true,
|
|
@@ -3822,6 +3825,7 @@ var Radio = ({
|
|
|
3822
3825
|
var BaseRadio = ({
|
|
3823
3826
|
label,
|
|
3824
3827
|
options,
|
|
3828
|
+
helperText,
|
|
3825
3829
|
...rest
|
|
3826
3830
|
}) => {
|
|
3827
3831
|
return /* @__PURE__ */ React2.default.createElement(_material.FormControl, null, label && /* @__PURE__ */ React2.default.createElement(_material.FormLabel, null, label), /* @__PURE__ */ React2.default.createElement(_material.RadioGroup, { ...rest }, options.map((option) => /* @__PURE__ */ React2.default.createElement(
|
|
@@ -3832,22 +3836,21 @@ var BaseRadio = ({
|
|
|
3832
3836
|
label: option.label,
|
|
3833
3837
|
control: /* @__PURE__ */ React2.default.createElement(_material.Radio, null)
|
|
3834
3838
|
}
|
|
3835
|
-
))));
|
|
3839
|
+
))), helperText && /* @__PURE__ */ React2.default.createElement(_material.FormHelperText, null, helperText));
|
|
3836
3840
|
};
|
|
3837
3841
|
var FormikRadio = ({
|
|
3838
3842
|
label,
|
|
3839
3843
|
name,
|
|
3840
3844
|
options,
|
|
3845
|
+
helperText,
|
|
3841
3846
|
...rest
|
|
3842
3847
|
}) => {
|
|
3843
|
-
const
|
|
3844
|
-
|
|
3845
|
-
};
|
|
3846
|
-
return /* @__PURE__ */ React2.default.createElement(_formik.Field, null, ({ field: { value }, form: { setFieldValue } }) => /* @__PURE__ */ React2.default.createElement(_material.FormControl, null, label && /* @__PURE__ */ React2.default.createElement(_material.FormLabel, null, label), /* @__PURE__ */ React2.default.createElement(
|
|
3848
|
+
const [{ value }, meta, { setValue }] = _formik.useField.call(void 0, name);
|
|
3849
|
+
return /* @__PURE__ */ React2.default.createElement(_material.FormControl, { error: Boolean(meta.error) }, label && /* @__PURE__ */ React2.default.createElement(_material.FormLabel, null, label), /* @__PURE__ */ React2.default.createElement(
|
|
3847
3850
|
_material.RadioGroup,
|
|
3848
3851
|
{
|
|
3849
|
-
|
|
3850
|
-
onChange: (_,
|
|
3852
|
+
value: _nullishCoalesce(value, () => ( "")),
|
|
3853
|
+
onChange: (_, val) => setValue(val),
|
|
3851
3854
|
...rest
|
|
3852
3855
|
},
|
|
3853
3856
|
options.map((option) => /* @__PURE__ */ React2.default.createElement(
|
|
@@ -3859,7 +3862,7 @@ var FormikRadio = ({
|
|
|
3859
3862
|
control: /* @__PURE__ */ React2.default.createElement(_material.Radio, null)
|
|
3860
3863
|
}
|
|
3861
3864
|
))
|
|
3862
|
-
)));
|
|
3865
|
+
), /* @__PURE__ */ React2.default.createElement(_material.FormHelperText, null, helperText || meta.error));
|
|
3863
3866
|
};
|
|
3864
3867
|
|
|
3865
3868
|
// src/components/LargeButton/index.tsx
|
|
@@ -4153,6 +4156,11 @@ function BaseGridAutoRows({
|
|
|
4153
4156
|
|
|
4154
4157
|
|
|
4155
4158
|
var Modal = ({ open, onClose, BoxProps: BoxProps3, ...rest }) => {
|
|
4159
|
+
if (process.env.NODE_ENV !== "production") {
|
|
4160
|
+
console.warn(
|
|
4161
|
+
"[Modal] is deprecated. Use `BaseDialog` instead. `Modal` will be removed in a future release."
|
|
4162
|
+
);
|
|
4163
|
+
}
|
|
4156
4164
|
return /* @__PURE__ */ React2.default.createElement(_material.Modal, { open, onClose, ...rest }, /* @__PURE__ */ React2.default.createElement(
|
|
4157
4165
|
_material.Box,
|
|
4158
4166
|
{
|
|
@@ -4547,6 +4555,7 @@ var _ApiHelper = class _ApiHelper {
|
|
|
4547
4555
|
return async (req, res) => {
|
|
4548
4556
|
const methods = factory(req, res);
|
|
4549
4557
|
const handler = methods[req.method];
|
|
4558
|
+
if (!handler) throw new HttpError(405, "M\xE9todo inv\xE1lido");
|
|
4550
4559
|
const methodWithMiddlewares = this.middlewares.reduce((acc, fn) => {
|
|
4551
4560
|
return fn(acc, options);
|
|
4552
4561
|
}, handler);
|
|
@@ -4582,191 +4591,8 @@ var _ApiHelper = class _ApiHelper {
|
|
|
4582
4591
|
_ApiHelper.parserErrorWrapper = _ApiHelper.parse;
|
|
4583
4592
|
var ApiHelper = _ApiHelper;
|
|
4584
4593
|
|
|
4585
|
-
// src/hooks/useFormHelper.ts
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
// src/hooks/useAlert.ts
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
// src/contexts/AlertContext.tsx
|
|
4592
|
-
|
|
4593
|
-
|
|
4594
|
-
|
|
4595
|
-
// src/components/Toast/index.tsx
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
|
|
4599
|
-
var Toast = ({ open, onClose, severity, message }) => {
|
|
4600
|
-
return /* @__PURE__ */ React2.default.createElement(React2.default.Fragment, null, /* @__PURE__ */ React2.default.createElement(
|
|
4601
|
-
_material.Snackbar,
|
|
4602
|
-
{
|
|
4603
|
-
open,
|
|
4604
|
-
autoHideDuration: 6e3,
|
|
4605
|
-
onClose,
|
|
4606
|
-
anchorOrigin: { vertical: "top", horizontal: "right" },
|
|
4607
|
-
sx: { zIndex: 99999999 }
|
|
4608
|
-
},
|
|
4609
|
-
/* @__PURE__ */ React2.default.createElement(
|
|
4610
|
-
_material.Alert,
|
|
4611
|
-
{
|
|
4612
|
-
severity,
|
|
4613
|
-
elevation: 2,
|
|
4614
|
-
action: /* @__PURE__ */ React2.default.createElement(
|
|
4615
|
-
_material.IconButton,
|
|
4616
|
-
{
|
|
4617
|
-
"aria-label": "close",
|
|
4618
|
-
color: "inherit",
|
|
4619
|
-
size: "small",
|
|
4620
|
-
onClick: onClose
|
|
4621
|
-
},
|
|
4622
|
-
/* @__PURE__ */ React2.default.createElement(_md.MdClose, { fontSize: "inherit" })
|
|
4623
|
-
)
|
|
4624
|
-
},
|
|
4625
|
-
message
|
|
4626
|
-
)
|
|
4627
|
-
));
|
|
4628
|
-
};
|
|
4629
|
-
|
|
4630
|
-
// src/contexts/AlertContext.tsx
|
|
4631
|
-
var AlertContext = _react.createContext.call(void 0, {});
|
|
4632
|
-
var AlertProvider = ({ children }) => {
|
|
4633
|
-
const [severity, setSeverity] = _react.useState.call(void 0, "info");
|
|
4634
|
-
const [message, setMessage] = _react.useState.call(void 0, "");
|
|
4635
|
-
const [isVisible, setIsVisible] = _react.useState.call(void 0, false);
|
|
4636
|
-
const createAlert = _react.useCallback.call(void 0,
|
|
4637
|
-
(newMessage, severity2) => {
|
|
4638
|
-
setMessage(newMessage);
|
|
4639
|
-
setSeverity(severity2);
|
|
4640
|
-
setIsVisible(true);
|
|
4641
|
-
},
|
|
4642
|
-
[]
|
|
4643
|
-
);
|
|
4644
|
-
const onCloseToast = _react.useCallback.call(void 0, () => {
|
|
4645
|
-
setIsVisible(false);
|
|
4646
|
-
}, []);
|
|
4647
|
-
return /* @__PURE__ */ React2.default.createElement(AlertContext.Provider, { value: { createAlert } }, children, /* @__PURE__ */ React2.default.createElement(
|
|
4648
|
-
Toast,
|
|
4649
|
-
{
|
|
4650
|
-
open: isVisible,
|
|
4651
|
-
onClose: onCloseToast,
|
|
4652
|
-
severity,
|
|
4653
|
-
message
|
|
4654
|
-
}
|
|
4655
|
-
));
|
|
4656
|
-
};
|
|
4657
|
-
|
|
4658
|
-
// src/hooks/useAlert.ts
|
|
4659
|
-
var useAlert = () => {
|
|
4660
|
-
return _react.useContext.call(void 0, AlertContext);
|
|
4661
|
-
};
|
|
4662
|
-
|
|
4663
|
-
// src/hooks/useLoading.ts
|
|
4664
|
-
|
|
4665
|
-
function useLoading() {
|
|
4666
|
-
const [state, setState] = _react.useState.call(void 0, []);
|
|
4667
|
-
const isLoading = _react.useCallback.call(void 0, (prop) => state.includes(prop), [state]);
|
|
4668
|
-
const setLoading = _react.useCallback.call(void 0, (prop, remove) => {
|
|
4669
|
-
if (remove)
|
|
4670
|
-
setState((prevState) => prevState.filter((state2) => state2 !== prop));
|
|
4671
|
-
else setState((prevState) => [...prevState, prop]);
|
|
4672
|
-
}, []);
|
|
4673
|
-
return { isLoading, setLoading };
|
|
4674
|
-
}
|
|
4675
|
-
|
|
4676
|
-
// src/contexts/FormHelperProvider.tsx
|
|
4677
|
-
|
|
4678
|
-
|
|
4679
|
-
var FormHelperContext = _react.createContext.call(void 0, {});
|
|
4680
|
-
var FormHelperProvider = ({ formatErrorMessage, api, children }) => {
|
|
4681
|
-
return /* @__PURE__ */ React2.default.createElement(FormHelperContext.Provider, { value: { formatErrorMessage, api } }, children);
|
|
4682
|
-
};
|
|
4683
|
-
|
|
4684
|
-
// src/hooks/useFormHelper.ts
|
|
4685
|
-
function useFormHelper() {
|
|
4686
|
-
const alertProps = useAlert();
|
|
4687
|
-
const loadingProps = useLoading();
|
|
4688
|
-
const { api, formatErrorMessage } = _react.useContext.call(void 0, FormHelperContext);
|
|
4689
|
-
const { createAlert } = alertProps;
|
|
4690
|
-
const { setLoading } = loadingProps;
|
|
4691
|
-
const sourceRef = _react.useRef.call(void 0, new AbortController());
|
|
4692
|
-
const onSubmitWrapper = _react.useCallback.call(void 0,
|
|
4693
|
-
(fn, { name }) => {
|
|
4694
|
-
return async (fields, methods) => {
|
|
4695
|
-
const LOADING_NAME = name;
|
|
4696
|
-
setLoading(LOADING_NAME);
|
|
4697
|
-
try {
|
|
4698
|
-
await fn(fields, methods);
|
|
4699
|
-
} catch (error) {
|
|
4700
|
-
errorHandler(error, methods.setErrors);
|
|
4701
|
-
} finally {
|
|
4702
|
-
setLoading(LOADING_NAME, true);
|
|
4703
|
-
}
|
|
4704
|
-
};
|
|
4705
|
-
},
|
|
4706
|
-
[setLoading]
|
|
4707
|
-
);
|
|
4708
|
-
const onRequestWrapper = _react.useCallback.call(void 0,
|
|
4709
|
-
(fn, { name }) => {
|
|
4710
|
-
return async (...params) => {
|
|
4711
|
-
const LOADING_NAME = name;
|
|
4712
|
-
setLoading(LOADING_NAME);
|
|
4713
|
-
api.interceptors.request.use(
|
|
4714
|
-
(config) => {
|
|
4715
|
-
if (!config.signal && sourceRef.current && config.method === "get") {
|
|
4716
|
-
config.signal = sourceRef.current.signal;
|
|
4717
|
-
}
|
|
4718
|
-
return config;
|
|
4719
|
-
},
|
|
4720
|
-
(error) => {
|
|
4721
|
-
return Promise.reject(error);
|
|
4722
|
-
}
|
|
4723
|
-
);
|
|
4724
|
-
try {
|
|
4725
|
-
const response = await fn(...params);
|
|
4726
|
-
return response;
|
|
4727
|
-
} catch (error) {
|
|
4728
|
-
errorHandler(error);
|
|
4729
|
-
} finally {
|
|
4730
|
-
setLoading(LOADING_NAME, true);
|
|
4731
|
-
}
|
|
4732
|
-
};
|
|
4733
|
-
},
|
|
4734
|
-
[setLoading, api]
|
|
4735
|
-
);
|
|
4736
|
-
const errorHandler = _react.useCallback.call(void 0,
|
|
4737
|
-
(error, callback) => {
|
|
4738
|
-
if (_optionalChain([error, 'optionalAccess', _87 => _87.message]) === "cancel.navigation") return;
|
|
4739
|
-
if (callback) {
|
|
4740
|
-
if (error.response.data.code === "invalid.body") {
|
|
4741
|
-
const errors = error.response.data.details.issues;
|
|
4742
|
-
const currentErrors = errors.reduce((acc, item) => {
|
|
4743
|
-
acc[item.path.join(".")] = item.message;
|
|
4744
|
-
return acc;
|
|
4745
|
-
}, {});
|
|
4746
|
-
callback(currentErrors);
|
|
4747
|
-
}
|
|
4748
|
-
}
|
|
4749
|
-
createAlert(formatErrorMessage(error), "error");
|
|
4750
|
-
},
|
|
4751
|
-
[formatErrorMessage, createAlert]
|
|
4752
|
-
);
|
|
4753
|
-
_react.useEffect.call(void 0, () => {
|
|
4754
|
-
return () => {
|
|
4755
|
-
sourceRef.current.abort();
|
|
4756
|
-
sourceRef.current = new AbortController();
|
|
4757
|
-
};
|
|
4758
|
-
}, []);
|
|
4759
|
-
return {
|
|
4760
|
-
...alertProps,
|
|
4761
|
-
...loadingProps,
|
|
4762
|
-
onSubmitWrapper,
|
|
4763
|
-
onRequestWrapper
|
|
4764
|
-
};
|
|
4765
|
-
}
|
|
4766
|
-
|
|
4767
4594
|
// src/helpers/authHelper.ts
|
|
4768
4595
|
var _cookie = require('cookie'); var cookie = _interopRequireWildcard(_cookie);
|
|
4769
|
-
var _uuid = require('uuid');
|
|
4770
4596
|
var _jsonwebtoken = require('jsonwebtoken'); var _jsonwebtoken2 = _interopRequireDefault(_jsonwebtoken);
|
|
4771
4597
|
|
|
4772
4598
|
// packages/nookies/index.ts
|
|
@@ -4820,7 +4646,7 @@ function areCookiesEqual(a, b) {
|
|
|
4820
4646
|
|
|
4821
4647
|
// packages/nookies/index.ts
|
|
4822
4648
|
function parseCookies(ctx, options) {
|
|
4823
|
-
if (_optionalChain([ctx, 'optionalAccess',
|
|
4649
|
+
if (_optionalChain([ctx, 'optionalAccess', _87 => _87.req, 'optionalAccess', _88 => _88.headers, 'optionalAccess', _89 => _89.cookie])) {
|
|
4824
4650
|
return cookie.parse(ctx.req.headers.cookie, options);
|
|
4825
4651
|
}
|
|
4826
4652
|
if (isBrowser()) {
|
|
@@ -4829,8 +4655,8 @@ function parseCookies(ctx, options) {
|
|
|
4829
4655
|
return {};
|
|
4830
4656
|
}
|
|
4831
4657
|
function setCookie(ctx, name, value, options = {}) {
|
|
4832
|
-
if (_optionalChain([ctx, 'optionalAccess',
|
|
4833
|
-
if (_optionalChain([ctx, 'optionalAccess',
|
|
4658
|
+
if (_optionalChain([ctx, 'optionalAccess', _90 => _90.res, 'optionalAccess', _91 => _91.getHeader]) && ctx.res.setHeader) {
|
|
4659
|
+
if (_optionalChain([ctx, 'optionalAccess', _92 => _92.res, 'optionalAccess', _93 => _93.finished])) {
|
|
4834
4660
|
console.warn(`Not setting "${name}" cookie. Response has finished.`);
|
|
4835
4661
|
console.warn(`You should set cookie before res.send()`);
|
|
4836
4662
|
return {};
|
|
@@ -4878,13 +4704,14 @@ var nookies = {
|
|
|
4878
4704
|
};
|
|
4879
4705
|
|
|
4880
4706
|
// src/helpers/authHelper.ts
|
|
4707
|
+
var _crypto = require('crypto');
|
|
4881
4708
|
function decodeSessionToken({
|
|
4882
4709
|
req,
|
|
4883
4710
|
res,
|
|
4884
4711
|
sessionTokenName,
|
|
4885
4712
|
validate
|
|
4886
4713
|
}) {
|
|
4887
|
-
const token = _optionalChain([req, 'access',
|
|
4714
|
+
const token = _optionalChain([req, 'access', _94 => _94.headers, 'access', _95 => _95.authorization, 'optionalAccess', _96 => _96.split, 'call', _97 => _97(" "), 'access', _98 => _98[1]]) || req.cookies[sessionTokenName];
|
|
4888
4715
|
if (!token) {
|
|
4889
4716
|
res.status(401).json({ error: "Token inv\xE1lido", code: "token.invalid" });
|
|
4890
4717
|
return true;
|
|
@@ -4920,7 +4747,7 @@ var AuthHelper = class {
|
|
|
4920
4747
|
expiresIn: this.tokenExpTimeInSeconds || 60 * 15
|
|
4921
4748
|
// 15 minutos
|
|
4922
4749
|
});
|
|
4923
|
-
const uniqueToken =
|
|
4750
|
+
const uniqueToken = _crypto.randomUUID.call(void 0, );
|
|
4924
4751
|
await this.onCreateRefreshToken(userId, uniqueToken);
|
|
4925
4752
|
return {
|
|
4926
4753
|
token,
|
|
@@ -4952,7 +4779,7 @@ var AuthHelper = class {
|
|
|
4952
4779
|
if (!req.url) return res.status(400).json({ error: "url not sent" });
|
|
4953
4780
|
if (req.url.endsWith("/login")) {
|
|
4954
4781
|
const loginResult = await this.onLogin(req.body);
|
|
4955
|
-
if (loginResult.status === "
|
|
4782
|
+
if (loginResult.status === "success") {
|
|
4956
4783
|
const { refreshToken, token } = await this.generateJwtAndRefreshToken(
|
|
4957
4784
|
loginResult.userId,
|
|
4958
4785
|
{}
|
|
@@ -5079,7 +4906,7 @@ var AuthHelper = class {
|
|
|
5079
4906
|
const data = await response.json();
|
|
5080
4907
|
const decodedToken = _jsonwebtoken2.default.decode(data.access_token);
|
|
5081
4908
|
const email = decodedToken.upn;
|
|
5082
|
-
const fullName = `${_optionalChain([decodedToken, 'optionalAccess',
|
|
4909
|
+
const fullName = `${_optionalChain([decodedToken, 'optionalAccess', _99 => _99.given_name])} ${_optionalChain([decodedToken, 'optionalAccess', _100 => _100.family_name])}`;
|
|
5083
4910
|
return { decodedToken, email, fullName };
|
|
5084
4911
|
}
|
|
5085
4912
|
createOauthCallbackGetServerSideProps({
|
|
@@ -5144,7 +4971,6 @@ var AuthHelper = class {
|
|
|
5144
4971
|
// src/hooks/useFilter.ts
|
|
5145
4972
|
|
|
5146
4973
|
|
|
5147
|
-
|
|
5148
4974
|
// src/components/utils/getObjectValue.ts
|
|
5149
4975
|
function getObjectValue(obj) {
|
|
5150
4976
|
return (prop) => {
|
|
@@ -5163,7 +4989,7 @@ function useFilter(props = { defaultFilters: [] }) {
|
|
|
5163
4989
|
return defaultFilters || [];
|
|
5164
4990
|
});
|
|
5165
4991
|
const filterBy = _react.useCallback.call(void 0, (newFilter) => {
|
|
5166
|
-
const propToCompare = _optionalChain([newFilter, 'optionalAccess',
|
|
4992
|
+
const propToCompare = _optionalChain([newFilter, 'optionalAccess', _101 => _101.id]) ? "id" : "prop";
|
|
5167
4993
|
function removeRepeatedFilters(filter) {
|
|
5168
4994
|
return filter[propToCompare] !== newFilter[propToCompare];
|
|
5169
4995
|
}
|
|
@@ -5213,13 +5039,13 @@ function compareFilter(item, filter) {
|
|
|
5213
5039
|
case "valueNotIn":
|
|
5214
5040
|
return !itemValue.includes(filter.value);
|
|
5215
5041
|
case "gte":
|
|
5216
|
-
return isDate(itemValue) ?
|
|
5042
|
+
return isDate(itemValue) ? new Date(String(itemValue)) >= filter.value : itemValue >= filter.value;
|
|
5217
5043
|
case "gt":
|
|
5218
|
-
return isDate(itemValue) ?
|
|
5044
|
+
return isDate(itemValue) ? new Date(String(itemValue)) > filter.value : itemValue > filter.value;
|
|
5219
5045
|
case "lte":
|
|
5220
|
-
return isDate(itemValue) ?
|
|
5046
|
+
return isDate(itemValue) ? new Date(String(itemValue)) <= filter.value : itemValue <= filter.value;
|
|
5221
5047
|
case "lt":
|
|
5222
|
-
return isDate(itemValue) ?
|
|
5048
|
+
return isDate(itemValue) ? new Date(String(itemValue)) < filter.value : itemValue < filter.value;
|
|
5223
5049
|
}
|
|
5224
5050
|
}
|
|
5225
5051
|
function createFilter(filters) {
|
|
@@ -5516,7 +5342,7 @@ function useAsyncGrid({
|
|
|
5516
5342
|
const params = new URLSearchParams({
|
|
5517
5343
|
page: String(page),
|
|
5518
5344
|
rowsPerPage: String(rowsPerPage2),
|
|
5519
|
-
searchText: _optionalChain([search2, 'optionalAccess',
|
|
5345
|
+
searchText: _optionalChain([search2, 'optionalAccess', _102 => _102.value]) || "",
|
|
5520
5346
|
sort: sortedBy2.map(({ prop, direction }) => `${prop}:${direction}`).join(","),
|
|
5521
5347
|
filters: filters2.map(
|
|
5522
5348
|
(filter) => `${filter.prop}:${filter.compareType}:${filter.value}`
|
|
@@ -5618,6 +5444,188 @@ function useEvent(event, handler, passive = false) {
|
|
|
5618
5444
|
});
|
|
5619
5445
|
}
|
|
5620
5446
|
|
|
5447
|
+
// src/hooks/useLoading.ts
|
|
5448
|
+
|
|
5449
|
+
function useLoading() {
|
|
5450
|
+
const [state, setState] = _react.useState.call(void 0, []);
|
|
5451
|
+
const isLoading = _react.useCallback.call(void 0, (prop) => state.includes(prop), [state]);
|
|
5452
|
+
const setLoading = _react.useCallback.call(void 0, (prop, remove) => {
|
|
5453
|
+
if (remove)
|
|
5454
|
+
setState((prevState) => prevState.filter((state2) => state2 !== prop));
|
|
5455
|
+
else setState((prevState) => [...prevState, prop]);
|
|
5456
|
+
}, []);
|
|
5457
|
+
return { isLoading, setLoading };
|
|
5458
|
+
}
|
|
5459
|
+
|
|
5460
|
+
// src/hooks/useAlert.ts
|
|
5461
|
+
|
|
5462
|
+
|
|
5463
|
+
// src/contexts/AlertContext.tsx
|
|
5464
|
+
|
|
5465
|
+
|
|
5466
|
+
|
|
5467
|
+
// src/components/Toast/index.tsx
|
|
5468
|
+
|
|
5469
|
+
|
|
5470
|
+
|
|
5471
|
+
var Toast = ({ open, onClose, severity, message }) => {
|
|
5472
|
+
return /* @__PURE__ */ React2.default.createElement(React2.default.Fragment, null, /* @__PURE__ */ React2.default.createElement(
|
|
5473
|
+
_material.Snackbar,
|
|
5474
|
+
{
|
|
5475
|
+
open,
|
|
5476
|
+
autoHideDuration: 6e3,
|
|
5477
|
+
onClose,
|
|
5478
|
+
anchorOrigin: { vertical: "top", horizontal: "right" },
|
|
5479
|
+
sx: { zIndex: 99999999 }
|
|
5480
|
+
},
|
|
5481
|
+
/* @__PURE__ */ React2.default.createElement(
|
|
5482
|
+
_material.Alert,
|
|
5483
|
+
{
|
|
5484
|
+
severity,
|
|
5485
|
+
elevation: 2,
|
|
5486
|
+
action: /* @__PURE__ */ React2.default.createElement(
|
|
5487
|
+
_material.IconButton,
|
|
5488
|
+
{
|
|
5489
|
+
"aria-label": "close",
|
|
5490
|
+
color: "inherit",
|
|
5491
|
+
size: "small",
|
|
5492
|
+
onClick: onClose
|
|
5493
|
+
},
|
|
5494
|
+
/* @__PURE__ */ React2.default.createElement(_md.MdClose, { fontSize: "inherit" })
|
|
5495
|
+
)
|
|
5496
|
+
},
|
|
5497
|
+
message
|
|
5498
|
+
)
|
|
5499
|
+
));
|
|
5500
|
+
};
|
|
5501
|
+
|
|
5502
|
+
// src/contexts/AlertContext.tsx
|
|
5503
|
+
var AlertContext = _react.createContext.call(void 0, {});
|
|
5504
|
+
var AlertProvider = ({ children }) => {
|
|
5505
|
+
const [severity, setSeverity] = _react.useState.call(void 0, "info");
|
|
5506
|
+
const [message, setMessage] = _react.useState.call(void 0, "");
|
|
5507
|
+
const [isVisible, setIsVisible] = _react.useState.call(void 0, false);
|
|
5508
|
+
const createAlert = _react.useCallback.call(void 0,
|
|
5509
|
+
(newMessage, severity2) => {
|
|
5510
|
+
setMessage(newMessage);
|
|
5511
|
+
setSeverity(severity2);
|
|
5512
|
+
setIsVisible(true);
|
|
5513
|
+
},
|
|
5514
|
+
[]
|
|
5515
|
+
);
|
|
5516
|
+
const onCloseToast = _react.useCallback.call(void 0, () => {
|
|
5517
|
+
setIsVisible(false);
|
|
5518
|
+
}, []);
|
|
5519
|
+
return /* @__PURE__ */ React2.default.createElement(AlertContext.Provider, { value: { createAlert } }, children, /* @__PURE__ */ React2.default.createElement(
|
|
5520
|
+
Toast,
|
|
5521
|
+
{
|
|
5522
|
+
open: isVisible,
|
|
5523
|
+
onClose: onCloseToast,
|
|
5524
|
+
severity,
|
|
5525
|
+
message
|
|
5526
|
+
}
|
|
5527
|
+
));
|
|
5528
|
+
};
|
|
5529
|
+
|
|
5530
|
+
// src/hooks/useAlert.ts
|
|
5531
|
+
var useAlert = () => {
|
|
5532
|
+
return _react.useContext.call(void 0, AlertContext);
|
|
5533
|
+
};
|
|
5534
|
+
|
|
5535
|
+
// src/hooks/useFormHelper.ts
|
|
5536
|
+
|
|
5537
|
+
|
|
5538
|
+
// src/contexts/FormHelperProvider.tsx
|
|
5539
|
+
|
|
5540
|
+
|
|
5541
|
+
var FormHelperContext = _react.createContext.call(void 0, {});
|
|
5542
|
+
var FormHelperProvider = ({ formatErrorMessage, api, children }) => {
|
|
5543
|
+
return /* @__PURE__ */ React2.default.createElement(FormHelperContext.Provider, { value: { formatErrorMessage, api } }, children);
|
|
5544
|
+
};
|
|
5545
|
+
|
|
5546
|
+
// src/hooks/useFormHelper.ts
|
|
5547
|
+
function useFormHelper() {
|
|
5548
|
+
const alertProps = useAlert();
|
|
5549
|
+
const loadingProps = useLoading();
|
|
5550
|
+
const { api, formatErrorMessage } = _react.useContext.call(void 0, FormHelperContext);
|
|
5551
|
+
const { createAlert } = alertProps;
|
|
5552
|
+
const { setLoading } = loadingProps;
|
|
5553
|
+
const sourceRef = _react.useRef.call(void 0, new AbortController());
|
|
5554
|
+
const onSubmitWrapper = _react.useCallback.call(void 0,
|
|
5555
|
+
(fn, { name }) => {
|
|
5556
|
+
return async (fields, methods) => {
|
|
5557
|
+
const LOADING_NAME = name;
|
|
5558
|
+
setLoading(LOADING_NAME);
|
|
5559
|
+
try {
|
|
5560
|
+
await fn(fields, methods);
|
|
5561
|
+
} catch (error) {
|
|
5562
|
+
errorHandler(error, methods.setErrors);
|
|
5563
|
+
} finally {
|
|
5564
|
+
setLoading(LOADING_NAME, true);
|
|
5565
|
+
}
|
|
5566
|
+
};
|
|
5567
|
+
},
|
|
5568
|
+
[setLoading]
|
|
5569
|
+
);
|
|
5570
|
+
const onRequestWrapper = _react.useCallback.call(void 0,
|
|
5571
|
+
(fn, { name }) => {
|
|
5572
|
+
return async (...params) => {
|
|
5573
|
+
const LOADING_NAME = name;
|
|
5574
|
+
setLoading(LOADING_NAME);
|
|
5575
|
+
api.interceptors.request.use(
|
|
5576
|
+
(config) => {
|
|
5577
|
+
if (!config.signal && sourceRef.current && config.method === "get") {
|
|
5578
|
+
config.signal = sourceRef.current.signal;
|
|
5579
|
+
}
|
|
5580
|
+
return config;
|
|
5581
|
+
},
|
|
5582
|
+
(error) => {
|
|
5583
|
+
return Promise.reject(error);
|
|
5584
|
+
}
|
|
5585
|
+
);
|
|
5586
|
+
try {
|
|
5587
|
+
const response = await fn(...params);
|
|
5588
|
+
return response;
|
|
5589
|
+
} catch (error) {
|
|
5590
|
+
errorHandler(error);
|
|
5591
|
+
} finally {
|
|
5592
|
+
setLoading(LOADING_NAME, true);
|
|
5593
|
+
}
|
|
5594
|
+
};
|
|
5595
|
+
},
|
|
5596
|
+
[setLoading, api]
|
|
5597
|
+
);
|
|
5598
|
+
const errorHandler = _react.useCallback.call(void 0,
|
|
5599
|
+
(error, callback) => {
|
|
5600
|
+
if (_optionalChain([error, 'optionalAccess', _103 => _103.message]) === "cancel.navigation") return;
|
|
5601
|
+
if (callback) {
|
|
5602
|
+
if (error.response.data.code === "invalid.body") {
|
|
5603
|
+
const errors = error.response.data.details.issues;
|
|
5604
|
+
const currentErrors = errors.reduce((acc, item) => {
|
|
5605
|
+
acc[item.path.join(".")] = item.message;
|
|
5606
|
+
return acc;
|
|
5607
|
+
}, {});
|
|
5608
|
+
callback(currentErrors);
|
|
5609
|
+
}
|
|
5610
|
+
}
|
|
5611
|
+
createAlert(formatErrorMessage(error), "error");
|
|
5612
|
+
},
|
|
5613
|
+
[formatErrorMessage, createAlert]
|
|
5614
|
+
);
|
|
5615
|
+
_react.useEffect.call(void 0, () => {
|
|
5616
|
+
return () => {
|
|
5617
|
+
sourceRef.current.abort();
|
|
5618
|
+
sourceRef.current = new AbortController();
|
|
5619
|
+
};
|
|
5620
|
+
}, []);
|
|
5621
|
+
return {
|
|
5622
|
+
...alertProps,
|
|
5623
|
+
...loadingProps,
|
|
5624
|
+
onSubmitWrapper,
|
|
5625
|
+
onRequestWrapper
|
|
5626
|
+
};
|
|
5627
|
+
}
|
|
5628
|
+
|
|
5621
5629
|
// src/contexts/AuthContext.tsx
|
|
5622
5630
|
|
|
5623
5631
|
|