jb-image-input
Version:
image input web component
67 lines (62 loc) • 2.53 kB
JavaScript
;
var React = require('react');
require('jb-image-input');
var react = require('jb-core/react');
function useEvents(element, props) {
react.useEvent(element, 'load', props.onLoad, true);
react.useEvent(element, 'init', props.onInit, true);
react.useEvent(element, "change", props.onChange);
react.useEvent(element, "imageSelected", props.onImageSelected);
react.useEvent(element, "maxSizeExceed", props.onMaxSizeExceed);
}
const JBImageInput = React.forwardRef((props, ref) => {
const element = React.useRef(null);
const [refChangeCount, refChangeCountSetter] = React.useState(0);
React.useImperativeHandle(ref, () => (element ? element.current : {}), [element]);
React.useEffect(() => {
refChangeCountSetter(refChangeCount + 1);
}, [element.current]);
React.useEffect(() => {
if (props.config && element.current) {
element.current.config = props.config;
}
}, [props.config]);
React.useEffect(() => {
if (props.bridge && element.current) {
element.current.bridge = props.bridge;
}
}, [props.bridge]);
React.useEffect(() => {
if (props.multiple) {
element.current?.setAttribute('multiple', 'true');
}
else {
element.current?.removeAttribute('multiple');
}
}, [props.multiple]);
React.useEffect(() => {
if (props.value !== undefined && element.current) {
element.current.value = props.value;
}
}, [props.value]);
React.useEffect(() => {
if (props.file) {
element.current?.selectImageByFile(props.file);
}
}, [props.file]);
React.useEffect(() => {
if (props.acceptTypes && element.current) {
element.current.acceptTypes = props.acceptTypes;
}
}, [props.acceptTypes]);
React.useEffect(() => {
if (props.maxFileSize !== undefined && element.current) {
element.current.maxFileSize = props.maxFileSize;
}
}, [props.maxFileSize]);
useEvents(element, props);
return (React.createElement("jb-image-input", { ref: element, class: props.className || '', label: props.label, "upload-type": props.uploadType || 'AUTO', required: props.required, name: props.name, message: props.message || "" }, props.children));
});
JBImageInput.displayName = "JBImageInput";
exports.JBImageInput = JBImageInput;
//# sourceMappingURL=JBImageInput.cjs.js.map