ods-component-lib 1.18.101 → 1.18.102

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.d.ts CHANGED
@@ -49,6 +49,7 @@ import OdsBadgeRibbon from "./components/antd/badge/OdsBadgeRibbon";
49
49
  import OdsModal from "./components/antd/modal/OdsModal";
50
50
  import OdsFilter from "./components/filter/OdsFilter";
51
51
  import OdsFilterTagView from "./components/filter/OdsFilterTagView";
52
+ import OdsFileUpload from "./components/antd/fileUpload/OdsFileUpload";
52
53
  export { OdsButton };
53
54
  export { OdsInput };
54
55
  export { OdsDropdownButton };
@@ -98,6 +99,7 @@ export { OdsBadgeRibbon };
98
99
  export { OdsModal };
99
100
  export { OdsFilter };
100
101
  export { OdsFilterTagView };
102
+ export { OdsFileUpload };
101
103
  export { OdsDataGrid };
102
104
  export { OdsDisplayGrid };
103
105
  export { OdsRemoteDataGrid } from "./components/devextreme/index";
package/dist/index.js CHANGED
@@ -1718,6 +1718,228 @@ var OdsFilter = function OdsFilter(props) {
1718
1718
  }, props.buttonApplyName))))));
1719
1719
  };
1720
1720
 
1721
+ var Title$1 = antd.Typography.Title;
1722
+ function OdsFileUpload(props) {
1723
+ var image = props.image,
1724
+ removeFile = props.removeFile,
1725
+ title = props.title,
1726
+ sendDataToParent = props.sendDataToParent,
1727
+ _props$allowDocumentU = props.allowDocumentUpload,
1728
+ allowDocumentUpload = _props$allowDocumentU === void 0 ? false : _props$allowDocumentU,
1729
+ _props$multipleDoc = props.multipleDoc,
1730
+ multipleDoc = _props$multipleDoc === void 0 ? false : _props$multipleDoc;
1731
+ var _useState = React.useState(false),
1732
+ previewOpen = _useState[0],
1733
+ setPreviewOpen = _useState[1];
1734
+ var _useState2 = React.useState(null),
1735
+ previewImage = _useState2[0],
1736
+ setPreviewImage = _useState2[1];
1737
+ var _useState3 = React.useState([]),
1738
+ fileList = _useState3[0],
1739
+ setFileList = _useState3[1];
1740
+ var _useState4 = React.useState(""),
1741
+ previewFileName = _useState4[0],
1742
+ setPreviewFileName = _useState4[1];
1743
+ var getBase64 = function getBase64(img, callback) {
1744
+ var reader = new FileReader();
1745
+ reader.addEventListener('load', function () {
1746
+ return callback(reader.result);
1747
+ });
1748
+ if (img !== undefined) {
1749
+ reader.readAsDataURL(img);
1750
+ if (!multipleDoc) setPreviewFileName(img.name);
1751
+ }
1752
+ };
1753
+ var uploadProps = {
1754
+ name: 'file',
1755
+ accept: allowDocumentUpload ? "image/png,image/jpg,image/jpeg,image/svg+xml,application/pdf,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" : "image/png,image/jpg,image/jpeg,image/svg+xml",
1756
+ multiple: multipleDoc,
1757
+ maxCount: multipleDoc ? 10 : 1,
1758
+ listType: 'picture-card',
1759
+ type: "select",
1760
+ onPreview: function onPreview(file) {
1761
+ if (multipleDoc) {
1762
+ var fileExtension = file.name != "" ? file.name.split('.').pop().toLowerCase() : file.url.split('.').pop().toLowerCase();
1763
+ if (fileExtension === "docx" || fileExtension === "xlsx") {
1764
+ downloadFile(file.url, file.thumbUrl, file.name);
1765
+ setPreviewOpen(false);
1766
+ return;
1767
+ }
1768
+ setPreviewFileName(file.name);
1769
+ }
1770
+ setPreviewImage(file.url || file.thumbUrl || '');
1771
+ handlePreview();
1772
+ },
1773
+ showUploadList: {
1774
+ showPreviewIcon: true,
1775
+ showRemoveIcon: true,
1776
+ showDownloadIcon: true
1777
+ },
1778
+ beforeUpload: function (file) {
1779
+ try {
1780
+ var fileType = allowDocumentUpload ? ["image/png", "image/jpg", "image/jpeg", "image/svg+xml", "application/pdf", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"] : ["image/png", "image/jpg", "image/jpeg", "image/svg+xml"];
1781
+ var isFileSizeOk = file.size / (1024 * 1024) <= 1;
1782
+ var checkType = fileType.includes(file.type);
1783
+ if (!checkType) {
1784
+ return Promise.resolve(antd.Upload.LIST_IGNORE);
1785
+ }
1786
+ if (!isFileSizeOk) {
1787
+ return Promise.resolve(antd.Upload.LIST_IGNORE);
1788
+ }
1789
+ return Promise.resolve(false);
1790
+ } catch (e) {
1791
+ return Promise.reject(e);
1792
+ }
1793
+ },
1794
+ onChange: function onChange(info) {
1795
+ if (info.fileList) {
1796
+ var updatedFileList = info.fileList.map(function (file) {
1797
+ if (file.originFileObj) {
1798
+ getBase64(file.originFileObj, function (url) {
1799
+ sendDataToParent({
1800
+ base64: url,
1801
+ fileName: file.name,
1802
+ plainTextBase64: splitAtFirstComma(url)[1],
1803
+ id: file.uid
1804
+ });
1805
+ });
1806
+ }
1807
+ return file;
1808
+ });
1809
+ setFileList(updatedFileList);
1810
+ }
1811
+ },
1812
+ onRemove: function onRemove(file) {
1813
+ if (!multipleDoc) {
1814
+ setFileList(null);
1815
+ sendDataToParent({
1816
+ base64: null,
1817
+ fileName: null,
1818
+ plainTextBase64: null,
1819
+ id: null
1820
+ });
1821
+ return;
1822
+ }
1823
+ var updatedFileList = fileList.filter(function (item) {
1824
+ return item.uid !== file.uid;
1825
+ });
1826
+ setFileList(updatedFileList);
1827
+ removeFile(updatedFileList.map(function (file) {
1828
+ return file.uid;
1829
+ }));
1830
+ },
1831
+ onDownload: function onDownload(file) {
1832
+ downloadFile(file.url, file.thumbUrl, file.name);
1833
+ },
1834
+ fileList: fileList
1835
+ };
1836
+ function splitAtFirstComma(input) {
1837
+ var index = input.indexOf(',');
1838
+ if (index !== -1) {
1839
+ var firstPart = input.substring(0, index).trim();
1840
+ var secondPart = input.substring(index + 1).trim();
1841
+ return [firstPart, secondPart];
1842
+ } else {
1843
+ return [input, ''];
1844
+ }
1845
+ }
1846
+ var handleCancel = function handleCancel() {
1847
+ return setPreviewOpen(false);
1848
+ };
1849
+ var handlePreview = function handlePreview() {
1850
+ setPreviewOpen(true);
1851
+ };
1852
+ React.useEffect(function () {
1853
+ if (image) {
1854
+ var formattedFiles = multipleDoc ? image.map(function (file) {
1855
+ return {
1856
+ uid: file.uid,
1857
+ name: file.filename,
1858
+ status: 'done',
1859
+ url: file.url
1860
+ };
1861
+ }) : [{
1862
+ uid: "1",
1863
+ name: "file",
1864
+ status: 'done',
1865
+ url: image
1866
+ }];
1867
+ setFileList(formattedFiles);
1868
+ }
1869
+ }, [image]);
1870
+ var renderPreviewContent = function renderPreviewContent(fileName, previewSrc) {
1871
+ if (previewSrc === null) {
1872
+ return "";
1873
+ }
1874
+ if (!multipleDoc) {
1875
+ return React__default.createElement("img", {
1876
+ alt: fileName == "" ? "file" : fileName,
1877
+ style: {
1878
+ width: '100%'
1879
+ },
1880
+ src: previewSrc
1881
+ });
1882
+ } else {
1883
+ var fileExtension = fileName != "" ? fileName.split('.').pop().toLowerCase() : previewSrc.split('.').pop().toLowerCase();
1884
+ if (fileExtension === "png" || fileExtension === "jpg" || fileExtension === "jpeg" || fileExtension === "svg") {
1885
+ return React__default.createElement("img", {
1886
+ alt: fileName == "" ? "file" : fileName,
1887
+ style: {
1888
+ width: '100%'
1889
+ },
1890
+ src: previewSrc
1891
+ });
1892
+ } else if (fileExtension === "pdf") {
1893
+ return React__default.createElement("embed", {
1894
+ src: previewSrc,
1895
+ type: "application/pdf",
1896
+ width: "100%",
1897
+ height: "800px"
1898
+ });
1899
+ } else {
1900
+ setPreviewOpen(false);
1901
+ return "";
1902
+ }
1903
+ }
1904
+ };
1905
+ function downloadFile(url, thumbUrl, name) {
1906
+ var base64 = url || thumbUrl;
1907
+ var extension = name ? name.split('.').pop() : url.split('.').pop();
1908
+ var fileName = name || "download." + extension;
1909
+ fetch(base64).then(function (res) {
1910
+ return res.blob();
1911
+ }).then(function (blob) {
1912
+ var blobURL = window.URL.createObjectURL(blob);
1913
+ var link = document.createElement('a');
1914
+ link.href = blobURL;
1915
+ link.setAttribute('download', fileName);
1916
+ document.body.appendChild(link);
1917
+ link.click();
1918
+ document.body.removeChild(link);
1919
+ window.URL.revokeObjectURL(blobURL);
1920
+ })["catch"](function (err) {
1921
+ return console.error('Failed to download file:', err);
1922
+ });
1923
+ }
1924
+ return React__default.createElement("div", null, React__default.createElement(Title$1, {
1925
+ level: 5
1926
+ }, title), React__default.createElement(antd.Upload, Object.assign({}, uploadProps), (fileList === null || fileList === void 0 ? void 0 : fileList.length) < 10 && React__default.createElement("div", null, React__default.createElement(icons.PlusOutlined, null), React__default.createElement("div", {
1927
+ style: {
1928
+ marginTop: 8
1929
+ }
1930
+ }, "Upload"))), React__default.createElement(antd.Modal, {
1931
+ open: previewOpen,
1932
+ title: null,
1933
+ footer: null,
1934
+ onCancel: handleCancel,
1935
+ width: "100%"
1936
+ }, React__default.createElement("div", {
1937
+ style: {
1938
+ padding: '25px'
1939
+ }
1940
+ }, renderPreviewContent(previewFileName, previewImage))));
1941
+ }
1942
+
1721
1943
  // A type of promise-like that resolves synchronously and supports only one observer
1722
1944
 
1723
1945
  const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))) : "@@iterator";
@@ -34604,6 +34826,7 @@ exports.OdsDisplayGrid = OdsDisplayGrid;
34604
34826
  exports.OdsDivider = OdsDivider;
34605
34827
  exports.OdsDropdown = OdsDropdown;
34606
34828
  exports.OdsDropdownButton = OdsDropdownButton;
34829
+ exports.OdsFileUpload = OdsFileUpload;
34607
34830
  exports.OdsFilter = OdsFilter;
34608
34831
  exports.OdsFilterTagView = OdsFilterTagView;
34609
34832
  exports.OdsImage = OdsImage;