diff --git a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-control.component.ts b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-control.component.ts index 3cd9d5464c..c4c488c9ae 100644 --- a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-control.component.ts +++ b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-control.component.ts @@ -19,6 +19,7 @@ import { Control, Validators } from '@angular/common'; import { Component, Input, Output, EventEmitter, AfterViewInit } from '@angular/core'; import { AlfrescoPipeTranslate, AlfrescoTranslationService } from 'ng2-alfresco-core'; import { AlfrescoSearchAutocompleteComponent } from './alfresco-search-autocomplete.component'; +import { SearchTermValidator } from './../forms/search-term-validator'; declare let __moduleName: string; declare var componentHandler: any; @@ -66,7 +67,7 @@ export class AlfrescoSearchControlComponent implements AfterViewInit { this.searchControl = new Control( this.searchTerm, - Validators.compose([Validators.required, Validators.minLength(3)]) + Validators.compose([Validators.required, SearchTermValidator.minAlphanumericChars(3)]) ); this.searchControl.valueChanges.map(value => this.searchControl.valid ? value : '') diff --git a/ng2-components/ng2-alfresco-search/src/forms/search-term-validator.ts b/ng2-components/ng2-alfresco-search/src/forms/search-term-validator.ts new file mode 100644 index 0000000000..f353d13335 --- /dev/null +++ b/ng2-components/ng2-alfresco-search/src/forms/search-term-validator.ts @@ -0,0 +1,30 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Control } from '@angular/common'; + +export class SearchTermValidator { + + static minAlphanumericChars(minChars: number) { + return (control: Control) => { + return ('' + control.value).replace(/[^0-9a-zA-Z]+/g, '').length >= minChars ? null : { + hasMinAlphanumericChars: false + }; + }; + } + +}