@rpldy/upload-button
Version:
upload button component and asUploadButton HOC
34 lines • 1.3 kB
JavaScript
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
import React, { forwardRef, useCallback, useRef } from "react";
import { markAsUploadOptionsComponent, useUploadyContext } from "@rpldy/shared-ui";
const asUploadButton = Component => {
const AsUploadButton = (props, ref) => {
const {
showFileUpload
} = useUploadyContext();
const {
id,
className,
text,
children,
extraProps,
onClick,
...uploadOptions
} = props;
const uploadOptionsRef = useRef();
uploadOptionsRef.current = uploadOptions;
const onButtonClick = useCallback(e => {
showFileUpload(uploadOptionsRef.current);
onClick?.(e);
}, [showFileUpload, uploadOptionsRef, onClick]);
return /*#__PURE__*/React.createElement(Component, _extends({
ref: ref,
onClick: onButtonClick,
id: id,
className: className
}, extraProps), children || text || "Upload");
};
markAsUploadOptionsComponent(AsUploadButton);
return /*#__PURE__*/forwardRef(AsUploadButton);
};
export default asUploadButton;