After playing with this a bit... (I wasn't involved with the original drag and drop handling), it is the dropzone that handles the dragged files (the label in this case), not the file input. And drag/drop bypasses the file input element events.
Will have to think of a way to set the input validity based on the dropped files (required, plus files types)
@hkchakladar Since you are controlling state of the input (via the state prop). You can add the novalidate attribute to the form to disable native browser validation on submit, add an invalid-feedback message to b-form-group, and also apply the same state value to b-form-group for triggering the validation message to show/hide.