Validation

oi-options="item.name for item in shopArr track by item.id" ng-model="bundle" required
dirty: {{demoForm.select.$dirty}}
invalid: {{demoForm.select.$invalid}}
errors: {{demoForm.select.$error}}

{{bundle}}

You can validate new items if return undefined or rejected promise from newItemFn

You can use only digit characters for new item names
oi-options="item.name for item in shopArr" ng-model="bundle2" multiple oi-select-options="{ newItem: 'prompt', newItemFn: 'addItem($query)' }"
$scope.addItem = function(query) { if (/\D/.test(query)) { return; } return {name: query}; };
{{bundle2}}

Also you can set maximum number of characters allowed in the input

oi-options="item.name for item in shopArr" ng-model="bundle3" oi-select-options="{ maxlength: 3 }"
{{bundle3}}