0.0.13 • Published 3 years ago
@mtbjorn/reagent v0.0.13
Reagent
A collection of UI components
Getting Started
Get an image gallery component along with event handlers for the consumer to execute when, or if, those events shall occur within their application
import { getImageGalleryWithChangeHandlers } from '@mtbjorn/reagent`; import { renderElementAsAppend } from '@mtbjorn/hypotenuse`; const initialFolderData = []; // an array of objects -> { folder, images }, with images being an array of objects -> { fileId, fileName, url } const [galleryComponent, onComponentRender, onDataChange] = getImageGalleryWithChangeHandlers(initialFolderData, 'initialSelectedFolder'); const domElement = renderElementAsAppend(galleryComponent, document.getElementById('app-container')); onComponentRender(domElement); const newImages = []; onDataChange(newImages);initialFolderDatais an optional argument, an array of objects ({folder, images}), where images is an array of objects ({fileId, fileName, url}) for each image to display within the galleryfileIdis a string identifier, currently only used as theidattribute of each generated<ImageFrame />componentfileNameis a string, currently used as thealt&titleattributes of each generated<ImageFrame />componenturlis any data url valid for an<img>element'ssrcattribute
galleryComponentis a pre-built component, a pure function which can be rendered as the consumer wishes- It is expected the consumer will call
onComponentRenderafter the associated<ImageGallery>component is rendered- A reference to the rendered dom element should be provided as the sole argument
- This
asyncfunction initializes the<ImageGallery>, mainly preparing the associated<ImageGalleryModal>
- The consumer may refresh the
<ImageGallery>with a new array of image data by providing said data to theonDataChangefunction - Switching between folders is handled within the gallery component itself
Get an image uploading component
import { ImageUploader } from '@mtbjorn/reagent`; import { renderElementAsAppend } from '@mtbjorn/hypotenuse`; renderElementAsAppend(<ImageUploader title={'Input Title'}, disabled={trueOrFalse}, handleFileUpload={(fileObjectArray) => {}}, onUploadFailure = {(errorMessageArray) => {}}, maxFileSizeMb={10} maxFileSizeToleranceKb={50} />, document.getElementById('app-container') );titleis thetitlefor the underlyinginputelement- If
disabled, the uderlyinginputelement will be disabled handleFileUploadshould be a function which will operate on eachFileobject uploaded through the underlyinginputelementonUploadFailureis a function to handle any errors thrown while uploading files- The function should accomodate an array of error messages, one for each file that failed during a batch upload
- The default error handler, if none is provided, will print to
console
maxFileSizeMbis the max size (in MB) to allow being uploaded- image files, except for
gif, will be resized to less than the specified max, within a specified tolerance - If unspecified a default of
10MBis used
- image files, except for
maxFileSizeToleranceKbis the tolerance (in Kb) to permit a resized image to fall within (below the max)- If unspecified a default of
50Kbis used
- If unspecified a default of
icofiles are ignored by the uploader