@acvl/frontend-components 0.0.16 → 0.0.18

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/cjs/index.js CHANGED
@@ -25663,82 +25663,90 @@ dayjs.locale(es);
25663
25663
  dayjs.extend(duration);
25664
25664
 
25665
25665
  // ==============================|| JSON ||============================== //
25666
- const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, data, props }) => {
25666
+ const typeSwitch = ({ base_object, base_key, response, submitData, useLabel, data, props, formType }) => {
25667
25667
  const ignore = get(props, `${base_key}.ignore`, false);
25668
- if (ignore)
25668
+ if (ignore || ['obj_permissions', 'has_history'].includes(base_key))
25669
25669
  return;
25670
25670
  const altered_key = lodash.invoke(props, `${base_key}.alter_key`, base_key);
25671
25671
  const key = altered_key || base_key;
25672
25672
  const altered_obj = lodash.invoke(props, `${base_key}.alter_value`, base_object, submitData);
25673
25673
  const object = altered_obj || base_object;
25674
+ const setValue = (form, key, value) => {
25675
+ if (formType === "json") {
25676
+ set(form, key, object);
25677
+ }
25678
+ else if (formType === "formData") {
25679
+ form.append(key, value);
25680
+ }
25681
+ };
25674
25682
  switch (typeof object) {
25675
25683
  case "string":
25676
25684
  if (lodash.invoke(props, `${base_key}.extra_validation`, object))
25677
25685
  return;
25678
- set(response, key, isEmpty(object) ? '' : object);
25686
+ setValue(response, key, isEmpty(object) ? '' : object);
25679
25687
  break;
25680
25688
  case "number":
25681
- set(response, key, object);
25689
+ setValue(response, key, object);
25682
25690
  break;
25683
25691
  case "boolean":
25684
- set(response, key, object);
25692
+ setValue(response, key, object);
25685
25693
  break;
25686
25694
  case "object":
25687
25695
  if (isNull(object) || isEmpty(object)) {
25688
25696
  if (includes(key, 'after') || includes(key, 'before'))
25689
- set(response, key, '');
25697
+ setValue(response, key, '');
25690
25698
  else
25691
- set(response, key, object);
25699
+ setValue(response, key, object);
25692
25700
  }
25693
25701
  else if (object instanceof dayjs) {
25694
- set(response, key, object.format(get(props, `${key}.format`, 'YYYY-MM-DD')));
25702
+ setValue(response, key, object.format(get(props, `${key}.format`, 'YYYY-MM-DD')));
25695
25703
  }
25696
25704
  else if ('label' in object && 'value' in object) {
25697
25705
  if (useLabel)
25698
- set(response, key, object['label']);
25706
+ setValue(response, key, object['label']);
25699
25707
  else
25700
- set(response, key, object['value']);
25708
+ setValue(response, key, object['value']);
25701
25709
  }
25702
25710
  else if (Array.isArray(object)) { // it is an array
25703
25711
  if (object.length && typeof object[0] == 'object' && !Array.isArray(object[0]) && 'value' in object[0] && object[0]['value'] == 'all') { // for data grid filters
25704
- set(response, key, '');
25712
+ setValue(response, key, '');
25705
25713
  }
25706
25714
  else {
25707
25715
  forEach(object, (arrayItem, idx) => {
25708
25716
  if (typeof arrayItem == 'object') {
25709
25717
  if ('label' in arrayItem) {
25710
- set(response, `${key}.${idx}`, function (item) {
25718
+ setValue(response, `${key}.${idx}`, function (item) {
25711
25719
  if (useLabel)
25712
25720
  return item.label;
25713
25721
  else
25714
25722
  return item.value;
25715
25723
  });
25716
25724
  }
25717
- typeSwitch({ base_object: arrayItem, base_key: `${key}.${idx}`, response: response, useLabel: useLabel, data: data, submitData: submitData });
25725
+ typeSwitch({ base_object: arrayItem, base_key: `${key}.${idx}`, response: response, useLabel: useLabel, data: data, submitData: submitData, props: props, formType: formType });
25718
25726
  }
25719
25727
  else {
25720
25728
  const keyArray = get(response, key);
25721
25729
  if (keyArray)
25722
25730
  keyArray.push(arrayItem);
25723
25731
  else
25724
- set(response, key, [arrayItem]);
25732
+ setValue(response, key, [arrayItem]);
25725
25733
  }
25726
25734
  });
25727
25735
  }
25728
25736
  }
25729
25737
  else if (object instanceof Set) {
25730
- set(response, key, Array.from(object));
25738
+ setValue(response, key, Array.from(object));
25731
25739
  }
25732
25740
  else {
25733
25741
  forEach(object, (value, key2) => {
25734
25742
  if (!includes(['id', 'transporte.tarifa.cargos_adicionales'], key) && isEqual(get(data, `${key}.${key2}`), value))
25735
25743
  return;
25736
- typeSwitch({ base_object: value, base_key: `${key}.${key2}`, response: response, useLabel: useLabel, data: data, submitData: submitData, props: props });
25744
+ typeSwitch({ base_object: value, base_key: `${key}.${key2}`, response: response, useLabel: useLabel, data: data, submitData: submitData, props: props, formType: formType });
25737
25745
  });
25738
25746
  }
25739
25747
  break;
25740
25748
  default:
25741
- set(response, key, object);
25749
+ setValue(response, key, object);
25742
25750
  break;
25743
25751
  }
25744
25752
  };
@@ -25747,69 +25755,34 @@ const jsonForm = ({ submitData, data, useLabel, props }) => {
25747
25755
  forEach(submitData, function (value, key) {
25748
25756
  if (key != 'id' && isEqual(get(data, key), value))
25749
25757
  return;
25750
- typeSwitch({ base_object: value, base_key: key, response: response, useLabel: useLabel, data: data, props: props, submitData: submitData });
25758
+ typeSwitch({
25759
+ base_object: value,
25760
+ base_key: key,
25761
+ response: response,
25762
+ useLabel: useLabel,
25763
+ data: data,
25764
+ props: props,
25765
+ submitData: submitData,
25766
+ formType: 'json',
25767
+ });
25751
25768
  });
25752
25769
  return response;
25753
25770
  };
25754
- // ==============================|| FORM DATA ||============================== //
25755
- const formConversion = (key, value, formData) => {
25756
- switch (typeof value) {
25757
- case "string":
25758
- if (!value)
25759
- return;
25760
- formData.append(key, value);
25761
- break;
25762
- case "bigint":
25763
- case "number":
25764
- if (!value)
25765
- return;
25766
- formData.append(key, value.toString());
25767
- break;
25768
- case "boolean":
25769
- if (value) {
25770
- formData.append(key, 'True');
25771
- }
25772
- else {
25773
- formData.append(key, 'False');
25774
- }
25775
- break;
25776
- case "object":
25777
- if (!value)
25778
- return;
25779
- if (Array.isArray(value) && value.length) {
25780
- for (let i = 0; i < value.length; i++) {
25781
- formConversion(`${key}[${i}]`, value[i], formData);
25782
- }
25783
- }
25784
- else {
25785
- if (value instanceof Date) {
25786
- formData.append(key, dayjs(value).format('YYYY-MM-DDTHH:mmZ'));
25787
- }
25788
- else if (dayjs.isDayjs(value)) {
25789
- // if (key == 'scheduling.end') {
25790
- // formData.append(key, value.format('YYYY-MM-DD'))
25791
- // } else {
25792
- formData.append(key, value.format('YYYY-MM-DD'));
25793
- // }
25794
- }
25795
- else if (value instanceof File) {
25796
- formData.append(key, value);
25797
- }
25798
- else {
25799
- Object.keys(value).forEach(key2 => {
25800
- if (value[key2] != undefined) {
25801
- formConversion(`${key}.${key2}`, value[key2], formData);
25802
- }
25803
- });
25804
- }
25805
- }
25806
- break;
25807
- }
25808
- };
25809
- const formDataForm = (object) => {
25771
+ const formDataForm = ({ submitData, data, useLabel, props }) => {
25810
25772
  const formData = new FormData();
25811
- Object.keys(object).forEach(key => {
25812
- formConversion(key, object[key], formData);
25773
+ forEach(submitData, function (value, key) {
25774
+ if (key != 'id' && isEqual(get(data, key), value))
25775
+ return;
25776
+ typeSwitch({
25777
+ base_object: value,
25778
+ base_key: key,
25779
+ response: formData,
25780
+ useLabel: useLabel,
25781
+ data: data,
25782
+ props: props,
25783
+ submitData: submitData,
25784
+ formType: 'formData',
25785
+ });
25813
25786
  });
25814
25787
  return formData;
25815
25788
  };
@@ -25987,7 +25960,7 @@ const FileUploadBox = (props) => {
25987
25960
  const Dropzone = ({ onChange, value }) => {
25988
25961
  const onDrop = React.useCallback((acceptedFiles) => {
25989
25962
  acceptedFiles.map(file => {
25990
- const data = formDataForm({ archivo: file });
25963
+ const data = formDataForm({ });
25991
25964
  validarCSV({ endpoint: props.csvProps.endpoint || '', data: data, custom: props.csvProps.custom }).unwrap()
25992
25965
  .then((response) => {
25993
25966
  onChange('archivo' in response ? response.archivo : acceptedFiles[0]);
@@ -26402,7 +26375,7 @@ const ControlledSelect = (props) => {
26402
26375
  };
26403
26376
 
26404
26377
  // ==============================|| DESLIZADOR CONTROLADO ||============================== //
26405
- const ControlledSlider = (props) => {
26378
+ const ControlledSlider$1 = (props) => {
26406
26379
  const [_val, setVal] = React.useState([]);
26407
26380
  return (
26408
26381
  // controlador
@@ -26517,6 +26490,19 @@ const ControlledTimePicker = (props) => {
26517
26490
  } }));
26518
26491
  };
26519
26492
 
26493
+ const ControlledPhotoField = (props) => {
26494
+ return (jsxRuntime.jsx(reactHookForm.Controller, { control: props.control, name: props.name, render: ({ field: { onChange, onBlur, ref }, fieldState: { error } }) => (jsxRuntime.jsxs(material.FormGroup, { sx: { width: 1 }, color: 'secondary', children: [jsxRuntime.jsx("input", { type: "file", accept: "image/*", ref: ref, onBlur: onBlur, onChange: (e) => onChange(e.target.files && e.target.files[0]) }), jsxRuntime.jsx(material.FormHelperText, { error: !!error, children: error ? error.message : ' ' })] })) }));
26495
+ };
26496
+
26497
+ // ==============================|| DESLIZADOR CONTROLADO ||============================== //
26498
+ const ControlledSlider = (props) => {
26499
+ return (
26500
+ // controlador
26501
+ jsxRuntime.jsx(reactHookForm.Controller, { name: props.name, control: props.control, render: ({ field: { onChange, value }, }) => {
26502
+ return (jsxRuntime.jsx(material.Slider, { value: value, onChange: onChange, valueLabelDisplay: 'auto', sx: { mx: 2, width: 0.87 }, ...props.fieldProps }));
26503
+ } }));
26504
+ };
26505
+
26520
26506
  const DeleteConfirmationDialog = (props) => {
26521
26507
  const notifications = core.useNotifications();
26522
26508
  const pathname = 'temp';
@@ -27009,7 +26995,7 @@ const generateSchema = (columns, columnsFilter, id) => {
27009
26995
  dynamicSchema[`${column.field}_max`] = zod.z.number().or(zod.z.string()).optional();
27010
26996
  dv[`${column.field}_min`] = '';
27011
26997
  dv[`${column.field}_max`] = '';
27012
- column.input = (jsxRuntime.jsx(ControlledSlider, { name: column.field, control: undefined, fieldProps: column.extra, extraProps: {
26998
+ column.input = (jsxRuntime.jsx(ControlledSlider$1, { name: column.field, control: undefined, fieldProps: column.extra, extraProps: {
27013
26999
  getValue: undefined,
27014
27000
  setValue: undefined,
27015
27001
  } }));
@@ -27942,6 +27928,10 @@ const DetailField = (props) => {
27942
27928
  return dayjs(props.fieldData).format('YYYY-MM-DD HH:mm');
27943
27929
  }
27944
27930
  }
27931
+ else if (props.type.name == 'ControlledPhotoField') {
27932
+ if (props.fieldData)
27933
+ return 'Imagen';
27934
+ }
27945
27935
  else {
27946
27936
  if (props.fieldData) {
27947
27937
  if (props.detail_name) {
@@ -27959,6 +27949,9 @@ const DetailField = (props) => {
27959
27949
  }
27960
27950
  return (jsxRuntime.jsx(LinkField, { url: props.navigation.url, value: lodash.get(props.fieldData, 'value'), text: content }));
27961
27951
  }
27952
+ else if (props.type.name == 'ControlledPhotoField') {
27953
+ return (jsxRuntime.jsx(material.Link, { href: props.fieldData, download: "filename.pdf", children: content }));
27954
+ }
27962
27955
  else {
27963
27956
  if (Array.isArray(props.fieldData)) {
27964
27957
  return (props.fieldData.map((item, index) => (jsxRuntime.jsx(material.Typography, { children: `${lodash.get(item, 'label')}${index < props.fieldData.length - 1 ? ', ' : ''}` }, `${props.name}-link-${index}`))));
@@ -28314,8 +28307,9 @@ function DetailPage(props) {
28314
28307
  // ==============================|| SUBMIT ||============================== //
28315
28308
  const onSubmitHandler = (submitedData) => {
28316
28309
  const formData = 'nativeEvent' in submitedData ? form.getValues() : submitedData;
28317
- const dataToSend = jsonForm({ submitData: formData, data: data, props: props.slotProps?.parser });
28318
- mutation({ ...dataToSend, ...props.api.mutate.args }).unwrap()
28310
+ const params = { submitData: formData, data: data, props: props.slotProps?.parser };
28311
+ const dataToSend = props.edit.useFormData ? formDataForm(params) : jsonForm(params);
28312
+ mutation(props.edit.useFormData ? dataToSend : { ...dataToSend, ...props.api.mutate.args }).unwrap()
28319
28313
  .then(() => {
28320
28314
  if (!props.slotProps?.button?.save?.disableNavBack)
28321
28315
  navigate(-1);
@@ -28700,8 +28694,10 @@ exports.ControlledDropdown = ControlledDropdown;
28700
28694
  exports.ControlledFileUploadBox = FileUploadBox;
28701
28695
  exports.ControlledNumber = ControlledNumber;
28702
28696
  exports.ControlledPhoneNumber = ControlledPhoneNumber;
28697
+ exports.ControlledPhotoField = ControlledPhotoField;
28703
28698
  exports.ControlledSelect = ControlledSelect;
28704
- exports.ControlledSlider = ControlledSlider;
28699
+ exports.ControlledSimpleSlider = ControlledSlider;
28700
+ exports.ControlledSlider = ControlledSlider$1;
28705
28701
  exports.ControlledSwitch = ControlledSwitch;
28706
28702
  exports.ControlledText = ControlledText;
28707
28703
  exports.ControlledTimePicker = ControlledTimePicker;