mirror of
https://github.com/Redocly/redoc.git
synced 2025-04-18 15:51:58 +03:00
feat: implement configurable minimum characer length to init search (#1402)
Co-authored-by: Alex Varchuk <olexandr.varchuk@gmail.com>
This commit is contained in:
parent
7a404863f9
commit
0fa08faab1
|
@ -207,6 +207,7 @@ Redoc uses the following [specification extensions](https://swagger.io/specifica
|
||||||
You can use all of the following options with the standalone version of the <redoc> tag by kebab-casing them. For example, `scrollYOffset` becomes `scroll-y-offset`, and `expandResponses` becomes `expand-responses`.
|
You can use all of the following options with the standalone version of the <redoc> tag by kebab-casing them. For example, `scrollYOffset` becomes `scroll-y-offset`, and `expandResponses` becomes `expand-responses`.
|
||||||
|
|
||||||
* `disableSearch` - disable search indexing and search box.
|
* `disableSearch` - disable search indexing and search box.
|
||||||
|
* `minCharacterLengthToInitSearch` - set minimal characters length to init search, default `3`, minimal `1`.
|
||||||
* `expandDefaultServerVariables` - enable expanding default server variables, default `false`.
|
* `expandDefaultServerVariables` - enable expanding default server variables, default `false`.
|
||||||
* `expandResponses` - specify which responses to expand by default by response codes. Values should be passed as comma-separated list without spaces e.g. `expandResponses="200,201"`. Special value `"all"` expands all responses by default. Be careful: this option can slow-down documentation rendering time.
|
* `expandResponses` - specify which responses to expand by default by response codes. Values should be passed as comma-separated list without spaces e.g. `expandResponses="200,201"`. Special value `"all"` expands all responses by default. Be careful: this option can slow-down documentation rendering time.
|
||||||
* `generatedPayloadSamplesMaxDepth` - set the maximum render depth for JSON payload samples (responses and request body). The default value is `10`.
|
* `generatedPayloadSamplesMaxDepth` - set the maximum render depth for JSON payload samples (responses and request body). The default value is `10`.
|
||||||
|
|
|
@ -7,6 +7,7 @@ import { MenuItem } from '../SideMenu/MenuItem';
|
||||||
import { MarkerService } from '../../services/MarkerService';
|
import { MarkerService } from '../../services/MarkerService';
|
||||||
import { SearchResult } from '../../services/SearchWorker.worker';
|
import { SearchResult } from '../../services/SearchWorker.worker';
|
||||||
|
|
||||||
|
import { OptionsContext } from '../OptionsProvider';
|
||||||
import { bind, debounce } from 'decko';
|
import { bind, debounce } from 'decko';
|
||||||
import { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar';
|
import { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar';
|
||||||
import {
|
import {
|
||||||
|
@ -37,6 +38,8 @@ export interface SearchBoxState {
|
||||||
export class SearchBox extends React.PureComponent<SearchBoxProps, SearchBoxState> {
|
export class SearchBox extends React.PureComponent<SearchBoxProps, SearchBoxState> {
|
||||||
activeItemRef: MenuItem | null = null;
|
activeItemRef: MenuItem | null = null;
|
||||||
|
|
||||||
|
static contextType = OptionsContext;
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.state = {
|
this.state = {
|
||||||
|
@ -114,8 +117,9 @@ export class SearchBox extends React.PureComponent<SearchBoxProps, SearchBoxStat
|
||||||
}
|
}
|
||||||
|
|
||||||
search = (event: React.ChangeEvent<HTMLInputElement>) => {
|
search = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const { minCharacterLengthToInitSearch } = this.context;
|
||||||
const q = event.target.value;
|
const q = event.target.value;
|
||||||
if (q.length < 3) {
|
if (q.length < minCharacterLengthToInitSearch) {
|
||||||
this.clearResults(q);
|
this.clearResults(q);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,6 +89,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
@ -339,6 +340,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
@ -565,6 +567,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
@ -856,6 +859,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
@ -1106,6 +1110,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
@ -1332,6 +1337,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
@ -1581,6 +1587,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
@ -1869,6 +1876,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
@ -2119,6 +2127,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
@ -2345,6 +2354,7 @@ exports[`Components SchemaView discriminator should correctly render SchemaView
|
||||||
"jsonSampleExpandLevel": 2,
|
"jsonSampleExpandLevel": 2,
|
||||||
"maxDisplayedEnumValues": undefined,
|
"maxDisplayedEnumValues": undefined,
|
||||||
"menuToggle": true,
|
"menuToggle": true,
|
||||||
|
"minCharacterLengthToInitSearch": 3,
|
||||||
"nativeScrollbars": false,
|
"nativeScrollbars": false,
|
||||||
"noAutoAuth": false,
|
"noAutoAuth": false,
|
||||||
"nonce": undefined,
|
"nonce": undefined,
|
||||||
|
|
|
@ -56,6 +56,7 @@ export interface RedocRawOptions {
|
||||||
generatedPayloadSamplesMaxDepth?: number;
|
generatedPayloadSamplesMaxDepth?: number;
|
||||||
nonce?: string;
|
nonce?: string;
|
||||||
hideFab?: boolean;
|
hideFab?: boolean;
|
||||||
|
minCharacterLengthToInitSearch?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function argValueToBoolean(val?: string | boolean, defaultValue?: boolean): boolean {
|
export function argValueToBoolean(val?: string | boolean, defaultValue?: boolean): boolean {
|
||||||
|
@ -251,6 +252,7 @@ export class RedocNormalizedOptions {
|
||||||
hideSchemaPattern: boolean;
|
hideSchemaPattern: boolean;
|
||||||
generatedPayloadSamplesMaxDepth: number;
|
generatedPayloadSamplesMaxDepth: number;
|
||||||
hideFab: boolean;
|
hideFab: boolean;
|
||||||
|
minCharacterLengthToInitSearch: number;
|
||||||
|
|
||||||
nonce?: string;
|
nonce?: string;
|
||||||
|
|
||||||
|
@ -325,5 +327,6 @@ export class RedocNormalizedOptions {
|
||||||
);
|
);
|
||||||
this.nonce = raw.nonce;
|
this.nonce = raw.nonce;
|
||||||
this.hideFab = argValueToBoolean(raw.hideFab);
|
this.hideFab = argValueToBoolean(raw.hideFab);
|
||||||
|
this.minCharacterLengthToInitSearch = argValueToNumber(raw.minCharacterLengthToInitSearch) || 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user