diff --git a/lib/components/Search/redoc-search.html b/lib/components/Search/redoc-search.html
index ec09ddac..8adb85aa 100644
--- a/lib/components/Search/redoc-search.html
+++ b/lib/components/Search/redoc-search.html
@@ -2,7 +2,7 @@
-
+
- {
+ this.updateSearch();
+ cdr.markForCheck();
+ cdr.detectChanges();
+ }, 300, this);
}
init() {
this.search.indexAll();
}
- update(val) {
- let searchRes = this.search.search(val);
+ update(event:KeyboardEvent, val) {
+ if (event && event.keyCode === 27) { // escape
+ this.searchTerm = '';
+ } else {
+ this.searchTerm = val;
+ }
+
+ this.throttledSearch();
+ }
+
+ updateSearch() {
+ if (!this.searchTerm || this.searchTerm.length < 2) {
+ this.items = [];
+ this.marker.unmark();
+ return;
+ }
+
+ let searchRes = this.search.search(this.searchTerm);
this.items = Object.keys(searchRes).map(id => ({
menuItem: this.menu.getItemById(id),
pointers: searchRes[id].map(el => el.pointer)
@@ -41,7 +66,7 @@ export class RedocSearch implements OnInit {
else if (a.menuItem.depth < b.menuItem.depth) return -1;
else return 0;
});
- this.marker.mark(val);
+ this.marker.mark(this.searchTerm);
}
clickSearch(item) {
diff --git a/lib/services/schema-normalizer.service.ts b/lib/services/schema-normalizer.service.ts
index a4a9ea11..61cd728b 100644
--- a/lib/services/schema-normalizer.service.ts
+++ b/lib/services/schema-normalizer.service.ts
@@ -199,7 +199,6 @@ class SchemaDereferencer {
dereference(schema: Reference, pointer:string):any {
if (!schema || !schema.$ref) return schema;
- window['derefCount'] = window['derefCount'] ? window['derefCount'] + 1 : 1;
let $ref = schema.$ref;
let resolved = this._spec.byPointer($ref);
if (!this._refCouner.visited($ref)) {
diff --git a/lib/services/search.service.ts b/lib/services/search.service.ts
index 4bc72c52..2f027c25 100644
--- a/lib/services/search.service.ts
+++ b/lib/services/search.service.ts
@@ -200,12 +200,19 @@ export class SearchService {
}
}
- this.index({
- pointer: absolutePointer,
- menuId: menuPointer,
- title,
- body
- });
+ if (schema.type === 'string' && schema.enum) {
+ body += ' ' + schema.enum.join(' ');
+ }
+
+ if (!parent) {
+ // redoc doesn't display top level descriptions and titles
+ this.index({
+ pointer: absolutePointer,
+ menuId: menuPointer,
+ title,
+ body
+ });
+ }
if (schema.properties) {
Object.keys(schema.properties).forEach(propName => {