feat: specifies component names for arrays/collapsibles, simplifies threaded data

This commit is contained in:
Jarrod Flesch
2022-11-15 11:34:36 -05:00
parent 2878b4b1be
commit b74ea218ca
12 changed files with 124 additions and 74 deletions

View File

@@ -1,6 +1,12 @@
import joi from 'joi';
import { componentSchema } from '../../utilities/componentSchema';
export const baseAdminComponentFields = joi.object().keys({
Cell: componentSchema,
Field: componentSchema,
Filter: componentSchema,
}).default({});
export const baseAdminFields = joi.object().keys({
description: joi.alternatives().try(
joi.string(),
@@ -15,11 +21,7 @@ export const baseAdminFields = joi.object().keys({
hidden: joi.boolean().default(false),
disabled: joi.boolean().default(false),
condition: joi.func(),
components: joi.object().keys({
Cell: componentSchema,
Field: componentSchema,
Filter: componentSchema,
}).default({}),
components: baseAdminComponentFields,
});
export const baseField = joi.object().keys({
@@ -185,7 +187,7 @@ export const collapsible = baseField.keys({
type: joi.string().valid('collapsible').required(),
fields: joi.array().items(joi.link('#field')),
admin: baseAdminFields.keys({
components: joi.object().keys({
components: baseAdminComponentFields.keys({
CollapsibleLabel: componentSchema,
}).default({}),
}).default({}),
@@ -241,8 +243,8 @@ export const array = baseField.keys({
joi.func(),
),
admin: baseAdminFields.keys({
components: joi.object().keys({
CollapsibleLabel: componentSchema,
components: baseAdminComponentFields.keys({
RowLabel: componentSchema,
}).default({}),
}).default({}),
});

View File

@@ -8,7 +8,7 @@ import { ConditionalDateProps } from '../../admin/components/elements/DatePicker
import { Description } from '../../admin/components/forms/FieldDescription/types';
import { User } from '../../auth';
import { Payload } from '../..';
import { CollapsibleLabel } from '../../admin/components/forms/CollapsibleLabel/types';
import { RowLabel } from '../../admin/components/forms/RowLabel/types';
export type FieldHookArgs<T extends TypeWithID = any, P = any, S = any> = {
/** The data passed to update the document within create and update operations, and the full document itself in the afterRead hook. */
@@ -193,8 +193,8 @@ export type CollapsibleField = Omit<FieldBase, 'name'> & {
admin?: Admin & {
initCollapsed?: boolean | false;
components?: {
CollapsibleLabel?: CollapsibleLabel
}
CollapsibleLabel?: RowLabel
} & Admin['components']
}
}
@@ -342,8 +342,8 @@ export type ArrayField = FieldBase & {
admin?: Admin & {
initCollapsed?: boolean | false;
components?: {
CollapsibleLabel?: CollapsibleLabel
}
RowLabel?: RowLabel
} & Admin['components']
};
};