Form Picker Component
A work in progress HTML File / Image picker with customizable upload backend. Currently, only image picker is implemented.
Usage
Register Component
require('image-picker-component').register("image-picker", (require('upload-controller-factory'))({
xhrUrl: 'http://localhost/upload.php?filename=$file',
xhrAsFormData: true,
xhrFormDataFileKey: 'file',
xhrMethod: 'POST',
xhrHeaders: {},
xhrCallback: function(xhr) { },
upload: function(name, blob, contentType, abort, progress) {
},
valueKey: 'id',
srcKey: 'access_url',
fields: ['id', 'access_url', 'name', 'size'],
}));
Crop Mode
User will be asked to crop the image no matter what. (Respecting Aspect Ratio)
<image-picker name="image_id" width="400" height="300" mode="crop"></image-picker>
Auto Mode
User will be asked to crop the image only if the aspect ratio does not match.
<image-picker name="image_id" width="1920" height="1080" mode="auto"></image-picker>
Keep Mode
The file will be uploaded as it is. (Ignoring Aspect Ratio)
<image-picker name="image_id" width="1920" height="1080" mode="keep"></image-picker>
Reformat Mode
The image will be uploaded as jpeg format without any other modification.
<image-picker width="1920" height="1080" mode="reformat" format="image/jpeg"></image-picker>
Note: Format attribute can be specified on all modes, except keep mode. You can specify "image/png" to upload it as PNG file.
Resize Mode
The image will be resized automatically for best-fit, respecting the aspect ratio of selected file (not the specified dimensions).
<image-picker width="1920" height="1080" mode="resize"></image-picker>
Notes
Adding value and src attribute will automatically make this input pre-picked.
<image-picker name="image_id" width="1920" height="1080" value="11" src="https://www.gstatic.com/webp/gallery/2.jpg"></image-picker>
Submitting Form
"valueKey" returned from the upload backend will be submitted in the form with "name" attribute on the element.