@snups/rjsf-utils
Version:
Utility functions for @snups/rjsf-core
28 lines (25 loc) • 1.19 kB
text/typescript
import { FormContextType, RJSFSchema, StrictRJSFSchema, ValidatorType, Experimental_CustomMergeAllOf } from '../types';
import isSelect from './isSelect';
/** Checks to see if the `schema` combination represents a multi-select
*
* @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
* @param schema - The schema for which check for a multi-select flag is desired
* @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
* @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
* @returns - True if schema contains a multi-select, otherwise false
*/
export default function isMultiSelect<
T = any,
S extends StrictRJSFSchema = RJSFSchema,
F extends FormContextType = any,
>(
validator: ValidatorType<T, S, F>,
schema: S,
rootSchema?: S,
experimental_customMergeAllOf?: Experimental_CustomMergeAllOf<S>,
) {
if (!schema.uniqueItems || !schema.items || typeof schema.items === 'boolean') {
return false;
}
return isSelect<T, S, F>(validator, schema.items as S, rootSchema, experimental_customMergeAllOf);
}