UNPKG

@up-group-ui/react-controls

Version:
75 lines 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var jsx_runtime_1 = require("react/jsx-runtime"); var react_1 = (0, tslib_1.__importDefault)(require("react")); var styles_1 = require("./styles"); var BaseFileComponent = function (props) { var className = props.className, value = props.value; return ((0, jsx_runtime_1.jsx)("input", { className: className, type: "file", value: value, accept: props.fileExtension, onChange: props.onChange }, void 0)); }; var UpFile = (function (_super) { (0, tslib_1.__extends)(UpFile, _super); function UpFile(p, c) { var _this = _super.call(this, p, c) || this; _this.onChange = function (event) { if (!FileReader) { return null; } if (event.target.files.length == 0) { _this.props.onChange([]); return; } var size = event.target.files[0].size; if (size > _this.maxSizeb) { _this.props.onError('Plus de ' + _this.maxSizeMb + 'M'); return; } var reader = new FileReader(); reader.onloadend = function () { if (Array.isArray(reader.result)) { var array = new Uint8Array(reader.result); var a = []; for (var i = 0; i < array.length; i++) { a.push(array[i]); } _this.props.onChange(a); } }; reader.readAsArrayBuffer(event.target.files[0]); }; _this.state = { value: p.value, }; return _this; } UpFile.prototype.componentWillReceiveProps = function (nextProps) { if (nextProps.value !== this.props.value) { this.setState({ value: nextProps.value }); } }; UpFile.prototype.render = function () { if (!FileReader) { return (0, jsx_runtime_1.jsx)("span", { children: "Non support du navigateur" }, void 0); } var _a = this.props, onChange = _a.onChange, onError = _a.onError, value = _a.value, others = (0, tslib_1.__rest)(_a, ["onChange", "onError", "value"]); return ((0, jsx_runtime_1.jsx)("div", (0, tslib_1.__assign)({ className: (0, styles_1.getStyles)(this.props) }, { children: (0, jsx_runtime_1.jsx)(BaseFileComponent, (0, tslib_1.__assign)({ value: this.state.value }, others, { onChange: this.onChange }), void 0) }), void 0)); }; Object.defineProperty(UpFile.prototype, "maxSizeb", { get: function () { return 1048576 * this.maxSizeMb; }, enumerable: false, configurable: true }); Object.defineProperty(UpFile.prototype, "maxSizeMb", { get: function () { return this.props.maxSize || 5; }, enumerable: false, configurable: true }); return UpFile; }(react_1.default.Component)); exports.default = UpFile; //# sourceMappingURL=UpFile.js.map