yup#AnyObjectSchema TypeScript Examples
The following examples show how to use
yup#AnyObjectSchema.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: useInitialRequiredErrors.tsx From SQForm with MIT License | 7 votes |
// Until Formik exposes the validationSchema (again) via useFormikContext(), the solution has to be handled at the Form declaration level
// There's a few open PR's on this issue, here's one for reference: https://github.com/formium/formik/pull/2933
export function useInitialRequiredErrors<Values>(
validationSchema: AnyObjectSchema | undefined,
initialValues: FormikValues
): FormikErrors<Values> {
const initialRequiredErrorsRef = React.useRef(
Object.entries(validationSchema || {}).reduce((acc, [key, value]) => {
if (value?._exclusive?.required && !_getHasValue(initialValues[key])) {
return {...acc, [key]: 'Required'};
}
return acc;
}, {})
);
return initialRequiredErrorsRef.current;
}
Example #2
Source File: SQFormDatePicker.stories.test.tsx From SQForm with MIT License | 6 votes |
renderDatePicker = (
props?: Partial<
Omit<SQFormDatePickerProps, 'label' | 'name'> & {
sqFormProps?: FormProps | undefined;
schema: AnyObjectSchema;
}
>
) => {
render(
<LocalizationProvider dateAdapter={MomentAdapter} locale={'en'}>
<BasicDatePicker {...props} />
</LocalizationProvider>
);
}
Example #3
Source File: SQFormDatePickerWithDateFNS.stories.test.tsx From SQForm with MIT License | 6 votes |
renderDatePicker = (
props?: Partial<
Omit<SQFormDatePickerDateFNSProps, 'label' | 'name'> & {
sqFormProps?: FormProps | undefined;
schema: AnyObjectSchema;
}
>
) => {
render(
<LocalizationProvider dateAdapter={dateFnsAdapter} locale={enLocale}>
<BasicDatePicker {...props} />
</LocalizationProvider>
);
}
Example #4
Source File: index.tsx From slice-machine with Apache License 2.0 | 4 votes |
function ListItem<F extends TabField, S extends AnyObjectSchema>({
item,
index,
deleteItem,
enterEditMode,
modelFieldName,
renderFieldAccessor,
HintElement,
CustomEditElement,
CustomEditElements,
widget,
draggableId,
children,
}: ListItemProps<F, S>): JSX.Element {
const { theme } = useThemeUI();
const {
key,
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
value: { config },
} = item;
return (
<Fragment>
<Draggable draggableId={draggableId} index={index}>
{(provided) => (
<Fragment>
<Li
ref={provided.innerRef}
{...provided.draggableProps}
Component={Box}
sx={{
p: 0,
mx: 0,
my: 3,
}}
>
<Flex sx={{ width: "100%" }}>
<SliceMachineIconButton
label="Reorder slice field (drag and drop)"
Icon={FaBars}
color={theme.colors?.icons as string}
mr={1}
mt={3}
{...provided.dragHandleProps}
/>
<Box
sx={{
bg: "headSection",
width: "100%",
borderRadius: "3px",
border: (t) => `1px solid ${String(t.colors?.borders)}`,
}}
>
<Flex
sx={{
p: 3,
alignItems: "center",
justifyContent: "space-between",
width: "100%",
}}
>
<ItemHeader
theme={theme}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
text={config?.label || key}
sliceFieldName={
renderFieldAccessor && renderFieldAccessor(key)
}
WidgetIcon={widget.Meta.icon}
/>
<Flex>
{CustomEditElements ? CustomEditElements : null}
{CustomEditElement ? (
CustomEditElement
) : (
<SliceMachineIconButton
size={22}
Icon={AiOutlineEdit}
label="Edit slice field"
sx={{ cursor: "pointer", color: theme.colors?.icons }}
onClick={() =>
enterEditMode(
[key, item.value],
modelFieldName,
index
)
}
/>
)}
<Menu>
<MenuButton
className="sliceMenuButton"
style={{
padding: "0",
cursor: "pointer",
width: "32px",
height: "32px",
border: "none",
background: "transparent",
outline: "0",
}}
>
<BsThreeDotsVertical
size={20}
color={theme.colors?.icons as string}
style={{ pointerEvents: "none" }}
/>
</MenuButton>
<MenuList
style={{
background: theme.colors?.gray as string,
border: "1px solid",
borderRadius: "3px",
borderColor: theme.colors?.borders as string,
outline: "0",
}}
>
<MenuItem
style={{ padding: "6px", cursor: "pointer" }}
onSelect={() => deleteItem(key)}
>
Delete field
</MenuItem>
</MenuList>
</Menu>
</Flex>
</Flex>
{HintElement ? HintElement : null}
</Box>
</Flex>
{children}
</Li>
</Fragment>
)}
</Draggable>
</Fragment>
);
}
Example #5
Source File: index.tsx From slice-machine with Apache License 2.0 | 4 votes |
TabZone: React.FC<TabZoneProps> = ({ tabId, fields, sliceZone }) => {
const {
deleteCustomTypeField,
addCustomTypeField,
reorderCustomTypeField,
replaceCustomTypeField,
createSliceZone,
deleteCustomTypeSharedSlice,
replaceCustomTypeSharedSlice,
updateFieldMockConfig,
deleteFieldMockConfig,
} = useSliceMachineActions();
const { currentCustomType, mockConfig, poolOfFields } = useSelector(
(store: SliceMachineStoreType) => ({
currentCustomType: selectCurrentCustomType(store),
mockConfig: selectCurrentMockConfig(store),
poolOfFields: selectCurrentPoolOfFields(store),
})
);
if (!currentCustomType || !mockConfig || !poolOfFields) {
return null;
}
const onDeleteItem = (fieldId: string) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument
deleteFieldMockConfig(mockConfig, fieldId);
deleteCustomTypeField(tabId, fieldId);
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const getFieldMockConfig = ({ apiId }: { apiId: string }): any => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument
return CustomTypeMockConfig.getFieldMockConfig(mockConfig, apiId);
};
const onSaveNewField = ({
id,
widgetTypeName,
}: {
id: string;
widgetTypeName: string;
}) => {
// @ts-expect-error We have to create a widget map or a service instead of using export name
if (ensureWidgetTypeExistence(Widgets, widgetTypeName)) {
return;
}
// @ts-expect-error We have to create a widget map or a service instead of using export name
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const widget: Widget<TabField, AnyObjectSchema> = Widgets[widgetTypeName];
const friendlyName = createFriendlyFieldNameWithId(id);
void Tracker.get().trackCustomTypeFieldAdded({
fieldId: id,
customTypeId: currentCustomType.id,
type: widget.TYPE_NAME,
zone: "static",
});
addCustomTypeField(tabId, id, widget.create(friendlyName));
};
const onDragEnd = (result: {
destination?: { droppableId: string; index: number };
source: { index: number; droppableId: string };
}) => {
if (ensureDnDDestination(result)) {
return;
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
reorderCustomTypeField(
tabId,
result.source.index,
// @ts-expect-error We have to change the typeGuard above to cast properly the "result" property
result.destination.index
);
};
const onSave = ({
apiId: previousKey,
newKey,
value,
mockValue,
}: {
apiId: string;
newKey: string;
value: TabField;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
mockValue: any;
}) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
// @ts-expect-error We have to create a widget map or a service instead of using export name
if (ensureWidgetTypeExistence(Widgets, value.type)) {
return;
}
if (mockValue) {
updateFieldMockConfig(mockConfig, previousKey, newKey, mockValue);
} else {
deleteFieldMockConfig(mockConfig, newKey);
}
replaceCustomTypeField(tabId, previousKey, newKey, value);
};
const onCreateSliceZone = () => {
createSliceZone(tabId);
};
const onSelectSharedSlices = (keys: string[], preserve: string[] = []) => {
void Tracker.get().trackCustomTypeSliceAdded({
customTypeId: currentCustomType.id,
});
replaceCustomTypeSharedSlice(tabId, keys, preserve);
};
const onRemoveSharedSlice = (sliceId: string) => {
deleteCustomTypeSharedSlice(tabId, sliceId);
};
return (
<>
<Zone
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
tabId={tabId}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
mockConfig={mockConfig}
title="Static Zone"
dataTip={""}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
fields={fields}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
// @ts-expect-error propsType and typescript are incompatible on this type, we can remove the error when migrating the Zone component
poolOfFieldsToCheck={poolOfFields}
showHints={true}
EditModal={EditModal}
widgetsArray={ctBuilderArray}
getFieldMockConfig={getFieldMockConfig}
onDeleteItem={onDeleteItem}
onSave={onSave}
onSaveNewField={onSaveNewField}
onDragEnd={onDragEnd}
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
renderHintBase={({ item }) => `data${transformKeyAccessor(item.key)}`}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-argument
renderFieldAccessor={(key) => `data${transformKeyAccessor(key)}`}
/>
<SliceZone
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
tabId={tabId}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
sliceZone={sliceZone}
onRemoveSharedSlice={onRemoveSharedSlice}
onCreateSliceZone={onCreateSliceZone}
onSelectSharedSlices={onSelectSharedSlices}
/>
</>
);
}