UNPKG

@shopify/app-bridge-core

Version:

**[Join our team and work on libraries like this one.](https://www.shopify.ca/careers)**

46 lines (43 loc) 1.92 kB
import { Action, ActionVerb, ResourceType } from '../../actions/ResourcePicker/index.js'; import { validate, matchesObject, makeOptional, matchesString, oneOf, matchesBoolean, matchesEnum, matchesArray, matchesPositiveInteger } from '../type-validate.js'; import { createActionValidator } from '../utils.js'; const resourceSelectionSchema = matchesArray(matchesObject({ id: matchesString(), })); const resourcePickerOptions = matchesObject({ initialQuery: makeOptional(matchesString()), filterQuery: makeOptional(matchesString()), initialSelectionIds: makeOptional(resourceSelectionSchema), selectMultiple: makeOptional(oneOf(matchesBoolean(), matchesPositiveInteger())), showHidden: makeOptional(matchesBoolean()), showVariants: makeOptional(matchesBoolean()), showDraft: makeOptional(matchesBoolean()), showArchived: makeOptional(matchesBoolean()), showDraftBadge: makeOptional(matchesBoolean()), showArchivedBadge: makeOptional(matchesBoolean()), actionVerb: makeOptional(matchesEnum(ActionVerb)), }); const resourcePickerActionSchema = matchesObject({ resourceType: matchesEnum(ResourceType), options: makeOptional(resourcePickerOptions), }); const selectionSchema = matchesObject({ selection: resourceSelectionSchema, }); function validateProps(props) { return validate(props, resourcePickerOptions); } function validateAction(action) { switch (action.type) { case Action.UPDATE: case Action.OPEN: return validate(action, createActionValidator(Action, resourcePickerActionSchema, false, true)); case Action.SELECT: return validate(action, createActionValidator(Action, selectionSchema, true, true)); case Action.CANCEL: case Action.CLOSE: default: return validate(action, createActionValidator(Action)); } } export { Action, validateAction, validateProps };