Is there any way to allow me to type in a new dir name that is not in the completion list generated by ivy-mode?
There are 2 cases. The name you want to create doesn't match anything in the completion list, or when it does.
When it doesn't, you can just type in the name and press enter.
If it does match, then pressing enter will get ivy to expand the name to the completion. Here you want to call
ivy-immediate-done which is bound to
C-M-j by default after you have typed the name.