@up-group-ui/react-controls
Version:
Up shared react controls
75 lines • 3.08 kB
JavaScript
;
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