UNPKG

@rpldy/upload-button

Version:

upload button component and asUploadButton HOC

34 lines 1.3 kB
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;