@fctc/sme-widget-ui 1.4.8 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -17994,22 +17994,24 @@ var ButtonSelectFiles = ({
17994
17994
  }
17995
17995
  return true;
17996
17996
  };
17997
+ const convertFileToBase64 = (file) => {
17998
+ return new Promise((resolve, reject) => {
17999
+ const reader = new FileReader();
18000
+ reader.readAsDataURL(file);
18001
+ reader.onload = () => resolve(reader.result);
18002
+ reader.onerror = (error2) => reject(error2);
18003
+ });
18004
+ };
17997
18005
  const handleOnChange = async (event) => {
17998
18006
  const files = Array.from(event.target.files ?? []);
17999
- setUploadError();
18000
18007
  event.target.value = "";
18001
- if (files.length > 0) {
18002
- const file = files[0];
18003
- if (!validateFile(file)) {
18004
- return;
18005
- }
18006
- setUploadError(false);
18007
- const formData = new FormData();
18008
- formData.append("ufile", file);
18009
- formData.append("thread_model", String(model));
18010
- formData.append("thread_id", Number(id));
18011
- formData.append("is_pending", true);
18012
- await handleUploadImage({ formData });
18008
+ if (files.length === 0) return;
18009
+ const file = files[0];
18010
+ try {
18011
+ const base64 = await convertFileToBase64(file);
18012
+ setSelectedFiles([...selectedFiles, { name: file.name, data: base64 }]);
18013
+ } catch (error2) {
18014
+ console.error("Error converting file:", error2);
18013
18015
  }
18014
18016
  };
18015
18017
  return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
@@ -32881,7 +32883,19 @@ var FeeField = (props) => {
32881
32883
  var import_react54 = require("react");
32882
32884
  var import_jsx_runtime83 = require("react/jsx-runtime");
32883
32885
  var FileUploadField = (props) => {
32884
- const { name: name2, methods, isForm, model, required, idForm, widget, useUploadImage, useUploadFile, useGetImage, isBase64File } = props;
32886
+ const {
32887
+ name: name2,
32888
+ methods,
32889
+ isForm,
32890
+ model,
32891
+ required,
32892
+ idForm,
32893
+ widget,
32894
+ useUploadImage,
32895
+ useUploadFile,
32896
+ useGetImage,
32897
+ isBase64File
32898
+ } = props;
32885
32899
  const fileInputRef = (0, import_react54.useRef)(null);
32886
32900
  const [selectedFiles, setSelectedFiles] = (0, import_react54.useState)([]);
32887
32901
  const [uploadError, setUploadError] = (0, import_react54.useState)();
@@ -32895,11 +32909,11 @@ var FileUploadField = (props) => {
32895
32909
  },
32896
32910
  render: ({ field: { onChange: onChange2 }, fieldState: { error: error2 } }) => {
32897
32911
  (0, import_react54.useEffect)(() => {
32898
- let datas = widget === "many2many_binary" ? selectedFiles : selectedFiles?.[0]?.datas;
32899
- if (widget !== "many2many_binary" && datas && isBase64File(datas)) {
32900
- datas = datas.split(",")[1];
32912
+ let data = widget === "many2many_binary" ? selectedFiles : selectedFiles?.[0]?.data;
32913
+ if (widget !== "many2many_binary" && data && isBase64File(data)) {
32914
+ data = data.split(",")[1];
32901
32915
  }
32902
- onChange2(datas || null);
32916
+ onChange2(data || null);
32903
32917
  if (model === "ir.attachment") {
32904
32918
  methods.setValue(
32905
32919
  "name",
@@ -33413,9 +33427,12 @@ var Many2ManyTagField = (props) => {
33413
33427
  clearErrors(name2);
33414
33428
  }
33415
33429
  }, [field.value]);
33416
- const filteredValue = options2 && Array.isArray(field.value) ? options2.filter(
33430
+ const filteredValue = options2 && options2?.length > 0 && Array.isArray(field.value) ? options2.filter(
33417
33431
  (option) => field.value.some((item) => item?.id === option.value)
33418
- ) : null;
33432
+ ) : options2?.length === 0 && Array.isArray(field?.value) ? field?.value?.map((value2) => ({
33433
+ value: value2?.id,
33434
+ label: value2?.display_name
33435
+ })) : null;
33419
33436
  const handleChange = (selectedOptions) => {
33420
33437
  const newValue = tranfer(selectedOptions);
33421
33438
  field.onChange(newValue);
package/dist/index.mjs CHANGED
@@ -17875,22 +17875,24 @@ var ButtonSelectFiles = ({
17875
17875
  }
17876
17876
  return true;
17877
17877
  };
17878
+ const convertFileToBase64 = (file) => {
17879
+ return new Promise((resolve, reject) => {
17880
+ const reader = new FileReader();
17881
+ reader.readAsDataURL(file);
17882
+ reader.onload = () => resolve(reader.result);
17883
+ reader.onerror = (error2) => reject(error2);
17884
+ });
17885
+ };
17878
17886
  const handleOnChange = async (event) => {
17879
17887
  const files = Array.from(event.target.files ?? []);
17880
- setUploadError();
17881
17888
  event.target.value = "";
17882
- if (files.length > 0) {
17883
- const file = files[0];
17884
- if (!validateFile(file)) {
17885
- return;
17886
- }
17887
- setUploadError(false);
17888
- const formData = new FormData();
17889
- formData.append("ufile", file);
17890
- formData.append("thread_model", String(model));
17891
- formData.append("thread_id", Number(id));
17892
- formData.append("is_pending", true);
17893
- await handleUploadImage({ formData });
17889
+ if (files.length === 0) return;
17890
+ const file = files[0];
17891
+ try {
17892
+ const base64 = await convertFileToBase64(file);
17893
+ setSelectedFiles([...selectedFiles, { name: file.name, data: base64 }]);
17894
+ } catch (error2) {
17895
+ console.error("Error converting file:", error2);
17894
17896
  }
17895
17897
  };
17896
17898
  return /* @__PURE__ */ jsxs45(Fragment13, { children: [
@@ -32762,7 +32764,19 @@ var FeeField = (props) => {
32762
32764
  import { useEffect as useEffect16, useRef as useRef14, useState as useState16 } from "react";
32763
32765
  import { jsx as jsx85, jsxs as jsxs58 } from "react/jsx-runtime";
32764
32766
  var FileUploadField = (props) => {
32765
- const { name: name2, methods, isForm, model, required, idForm, widget, useUploadImage, useUploadFile, useGetImage, isBase64File } = props;
32767
+ const {
32768
+ name: name2,
32769
+ methods,
32770
+ isForm,
32771
+ model,
32772
+ required,
32773
+ idForm,
32774
+ widget,
32775
+ useUploadImage,
32776
+ useUploadFile,
32777
+ useGetImage,
32778
+ isBase64File
32779
+ } = props;
32766
32780
  const fileInputRef = useRef14(null);
32767
32781
  const [selectedFiles, setSelectedFiles] = useState16([]);
32768
32782
  const [uploadError, setUploadError] = useState16();
@@ -32776,11 +32790,11 @@ var FileUploadField = (props) => {
32776
32790
  },
32777
32791
  render: ({ field: { onChange: onChange2 }, fieldState: { error: error2 } }) => {
32778
32792
  useEffect16(() => {
32779
- let datas = widget === "many2many_binary" ? selectedFiles : selectedFiles?.[0]?.datas;
32780
- if (widget !== "many2many_binary" && datas && isBase64File(datas)) {
32781
- datas = datas.split(",")[1];
32793
+ let data = widget === "many2many_binary" ? selectedFiles : selectedFiles?.[0]?.data;
32794
+ if (widget !== "many2many_binary" && data && isBase64File(data)) {
32795
+ data = data.split(",")[1];
32782
32796
  }
32783
- onChange2(datas || null);
32797
+ onChange2(data || null);
32784
32798
  if (model === "ir.attachment") {
32785
32799
  methods.setValue(
32786
32800
  "name",
@@ -33294,9 +33308,12 @@ var Many2ManyTagField = (props) => {
33294
33308
  clearErrors(name2);
33295
33309
  }
33296
33310
  }, [field.value]);
33297
- const filteredValue = options2 && Array.isArray(field.value) ? options2.filter(
33311
+ const filteredValue = options2 && options2?.length > 0 && Array.isArray(field.value) ? options2.filter(
33298
33312
  (option) => field.value.some((item) => item?.id === option.value)
33299
- ) : null;
33313
+ ) : options2?.length === 0 && Array.isArray(field?.value) ? field?.value?.map((value2) => ({
33314
+ value: value2?.id,
33315
+ label: value2?.display_name
33316
+ })) : null;
33300
33317
  const handleChange = (selectedOptions) => {
33301
33318
  const newValue = tranfer(selectedOptions);
33302
33319
  field.onChange(newValue);
package/dist/widgets.js CHANGED
@@ -17620,22 +17620,24 @@ var ButtonSelectFiles = ({
17620
17620
  }
17621
17621
  return true;
17622
17622
  };
17623
+ const convertFileToBase64 = (file) => {
17624
+ return new Promise((resolve, reject) => {
17625
+ const reader = new FileReader();
17626
+ reader.readAsDataURL(file);
17627
+ reader.onload = () => resolve(reader.result);
17628
+ reader.onerror = (error2) => reject(error2);
17629
+ });
17630
+ };
17623
17631
  const handleOnChange = async (event) => {
17624
17632
  const files = Array.from(event.target.files ?? []);
17625
- setUploadError();
17626
17633
  event.target.value = "";
17627
- if (files.length > 0) {
17628
- const file = files[0];
17629
- if (!validateFile(file)) {
17630
- return;
17631
- }
17632
- setUploadError(false);
17633
- const formData = new FormData();
17634
- formData.append("ufile", file);
17635
- formData.append("thread_model", String(model));
17636
- formData.append("thread_id", Number(id));
17637
- formData.append("is_pending", true);
17638
- await handleUploadImage({ formData });
17634
+ if (files.length === 0) return;
17635
+ const file = files[0];
17636
+ try {
17637
+ const base64 = await convertFileToBase64(file);
17638
+ setSelectedFiles([...selectedFiles, { name: file.name, data: base64 }]);
17639
+ } catch (error2) {
17640
+ console.error("Error converting file:", error2);
17639
17641
  }
17640
17642
  };
17641
17643
  return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
@@ -32507,7 +32509,19 @@ var FeeField = (props) => {
32507
32509
  var import_react54 = require("react");
32508
32510
  var import_jsx_runtime83 = require("react/jsx-runtime");
32509
32511
  var FileUploadField = (props) => {
32510
- const { name: name2, methods, isForm, model, required, idForm, widget, useUploadImage, useUploadFile, useGetImage, isBase64File } = props;
32512
+ const {
32513
+ name: name2,
32514
+ methods,
32515
+ isForm,
32516
+ model,
32517
+ required,
32518
+ idForm,
32519
+ widget,
32520
+ useUploadImage,
32521
+ useUploadFile,
32522
+ useGetImage,
32523
+ isBase64File
32524
+ } = props;
32511
32525
  const fileInputRef = (0, import_react54.useRef)(null);
32512
32526
  const [selectedFiles, setSelectedFiles] = (0, import_react54.useState)([]);
32513
32527
  const [uploadError, setUploadError] = (0, import_react54.useState)();
@@ -32521,11 +32535,11 @@ var FileUploadField = (props) => {
32521
32535
  },
32522
32536
  render: ({ field: { onChange: onChange2 }, fieldState: { error: error2 } }) => {
32523
32537
  (0, import_react54.useEffect)(() => {
32524
- let datas = widget === "many2many_binary" ? selectedFiles : selectedFiles?.[0]?.datas;
32525
- if (widget !== "many2many_binary" && datas && isBase64File(datas)) {
32526
- datas = datas.split(",")[1];
32538
+ let data = widget === "many2many_binary" ? selectedFiles : selectedFiles?.[0]?.data;
32539
+ if (widget !== "many2many_binary" && data && isBase64File(data)) {
32540
+ data = data.split(",")[1];
32527
32541
  }
32528
- onChange2(datas || null);
32542
+ onChange2(data || null);
32529
32543
  if (model === "ir.attachment") {
32530
32544
  methods.setValue(
32531
32545
  "name",
@@ -33039,9 +33053,12 @@ var Many2ManyTagField = (props) => {
33039
33053
  clearErrors(name2);
33040
33054
  }
33041
33055
  }, [field.value]);
33042
- const filteredValue = options2 && Array.isArray(field.value) ? options2.filter(
33056
+ const filteredValue = options2 && options2?.length > 0 && Array.isArray(field.value) ? options2.filter(
33043
33057
  (option) => field.value.some((item) => item?.id === option.value)
33044
- ) : null;
33058
+ ) : options2?.length === 0 && Array.isArray(field?.value) ? field?.value?.map((value2) => ({
33059
+ value: value2?.id,
33060
+ label: value2?.display_name
33061
+ })) : null;
33045
33062
  const handleChange = (selectedOptions) => {
33046
33063
  const newValue = tranfer(selectedOptions);
33047
33064
  field.onChange(newValue);
package/dist/widgets.mjs CHANGED
@@ -17557,22 +17557,24 @@ var ButtonSelectFiles = ({
17557
17557
  }
17558
17558
  return true;
17559
17559
  };
17560
+ const convertFileToBase64 = (file) => {
17561
+ return new Promise((resolve, reject) => {
17562
+ const reader = new FileReader();
17563
+ reader.readAsDataURL(file);
17564
+ reader.onload = () => resolve(reader.result);
17565
+ reader.onerror = (error2) => reject(error2);
17566
+ });
17567
+ };
17560
17568
  const handleOnChange = async (event) => {
17561
17569
  const files = Array.from(event.target.files ?? []);
17562
- setUploadError();
17563
17570
  event.target.value = "";
17564
- if (files.length > 0) {
17565
- const file = files[0];
17566
- if (!validateFile(file)) {
17567
- return;
17568
- }
17569
- setUploadError(false);
17570
- const formData = new FormData();
17571
- formData.append("ufile", file);
17572
- formData.append("thread_model", String(model));
17573
- formData.append("thread_id", Number(id));
17574
- formData.append("is_pending", true);
17575
- await handleUploadImage({ formData });
17571
+ if (files.length === 0) return;
17572
+ const file = files[0];
17573
+ try {
17574
+ const base64 = await convertFileToBase64(file);
17575
+ setSelectedFiles([...selectedFiles, { name: file.name, data: base64 }]);
17576
+ } catch (error2) {
17577
+ console.error("Error converting file:", error2);
17576
17578
  }
17577
17579
  };
17578
17580
  return /* @__PURE__ */ jsxs45(Fragment13, { children: [
@@ -32444,7 +32446,19 @@ var FeeField = (props) => {
32444
32446
  import { useEffect as useEffect16, useRef as useRef14, useState as useState16 } from "react";
32445
32447
  import { jsx as jsx85, jsxs as jsxs58 } from "react/jsx-runtime";
32446
32448
  var FileUploadField = (props) => {
32447
- const { name: name2, methods, isForm, model, required, idForm, widget, useUploadImage, useUploadFile, useGetImage, isBase64File } = props;
32449
+ const {
32450
+ name: name2,
32451
+ methods,
32452
+ isForm,
32453
+ model,
32454
+ required,
32455
+ idForm,
32456
+ widget,
32457
+ useUploadImage,
32458
+ useUploadFile,
32459
+ useGetImage,
32460
+ isBase64File
32461
+ } = props;
32448
32462
  const fileInputRef = useRef14(null);
32449
32463
  const [selectedFiles, setSelectedFiles] = useState16([]);
32450
32464
  const [uploadError, setUploadError] = useState16();
@@ -32458,11 +32472,11 @@ var FileUploadField = (props) => {
32458
32472
  },
32459
32473
  render: ({ field: { onChange: onChange2 }, fieldState: { error: error2 } }) => {
32460
32474
  useEffect16(() => {
32461
- let datas = widget === "many2many_binary" ? selectedFiles : selectedFiles?.[0]?.datas;
32462
- if (widget !== "many2many_binary" && datas && isBase64File(datas)) {
32463
- datas = datas.split(",")[1];
32475
+ let data = widget === "many2many_binary" ? selectedFiles : selectedFiles?.[0]?.data;
32476
+ if (widget !== "many2many_binary" && data && isBase64File(data)) {
32477
+ data = data.split(",")[1];
32464
32478
  }
32465
- onChange2(datas || null);
32479
+ onChange2(data || null);
32466
32480
  if (model === "ir.attachment") {
32467
32481
  methods.setValue(
32468
32482
  "name",
@@ -32976,9 +32990,12 @@ var Many2ManyTagField = (props) => {
32976
32990
  clearErrors(name2);
32977
32991
  }
32978
32992
  }, [field.value]);
32979
- const filteredValue = options2 && Array.isArray(field.value) ? options2.filter(
32993
+ const filteredValue = options2 && options2?.length > 0 && Array.isArray(field.value) ? options2.filter(
32980
32994
  (option) => field.value.some((item) => item?.id === option.value)
32981
- ) : null;
32995
+ ) : options2?.length === 0 && Array.isArray(field?.value) ? field?.value?.map((value2) => ({
32996
+ value: value2?.id,
32997
+ label: value2?.display_name
32998
+ })) : null;
32982
32999
  const handleChange = (selectedOptions) => {
32983
33000
  const newValue = tranfer(selectedOptions);
32984
33001
  field.onChange(newValue);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fctc/sme-widget-ui",
3
- "version": "1.4.8",
3
+ "version": "1.5.0",
4
4
  "main": "dist/index.cjs",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",