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 +2 -0
- package/dist/index.js +223 -0
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +225 -3
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
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;
|