{"version":3,"file":"ObjectFieldTemplate.mjs","sources":["../../src/templates/ObjectFieldTemplate.tsx"],"sourcesContent":["import { Group, Box, Collapse, Stack } from '@mantine/core';\nimport { useDisclosure } from '@mantine/hooks';\nimport {\n  FormContextType,\n  ObjectFieldTemplatePropertyType,\n  ObjectFieldTemplateProps,\n  RJSFSchema,\n  StrictRJSFSchema,\n  canExpand,\n  descriptionId,\n  titleId,\n  getUiOptions,\n  getTemplate,\n} from '@rjsf/utils';\nimport classes from './ObjectFieldTemplate.module.css';\nimport { IconChevronUp } from '@tabler/icons-react';\n\n/** The `ObjectFieldTemplate` is the template to use to render all the inner properties of an object along with the\n * title and description if available. If the object is expandable, then an `AddButton` is also rendered after all\n * the properties.\n *\n * @param props - The `ObjectFieldTemplateProps` for this component\n */\nexport default function ObjectFieldTemplate<\n  T = any,\n  S extends StrictRJSFSchema = RJSFSchema,\n  F extends FormContextType = any,\n>(props: ObjectFieldTemplateProps<T, S, F>) {\n  const {\n    description,\n    disabled,\n    formData,\n    idSchema,\n    onAddClick,\n    properties,\n    readonly,\n    registry,\n    required,\n    schema,\n    title,\n    uiSchema,\n    errorSchema,\n  } = props;\n  const options = getUiOptions<T, S, F>(uiSchema);\n  const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>('TitleFieldTemplate', registry, options);\n  const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n    'DescriptionFieldTemplate',\n    registry,\n    options,\n  );\n  // Button templates are not overridden in the uiSchema\n  const {\n    ButtonTemplates: { AddButton },\n  } = registry.templates;\n\n  const [opened, { toggle }] = useDisclosure(true);\n\n  const showLegend = (title || description) && options?.hideLegend !== true;\n\n  const classNames = options.classNames;\n  const containError = errorSchema && Object.keys(errorSchema).length > 0;\n\n  const legendInner = (\n    <Group gap='xs'>\n      {title && (\n        <TitleFieldTemplate\n          id={titleId<T>(idSchema)}\n          title={title}\n          required={required}\n          schema={schema}\n          uiSchema={uiSchema}\n          registry={registry}\n        />\n      )}\n      {description && (\n        <DescriptionFieldTemplate\n          id={descriptionId<T>(idSchema)}\n          description={description}\n          schema={schema}\n          uiSchema={uiSchema}\n          registry={registry}\n        />\n      )}\n    </Group>\n  );\n\n  const contentInner = (\n    <>\n      <Box className='armt-template-objectfield-item'>\n        {properties.map((prop: ObjectFieldTemplatePropertyType) => prop.content)}\n      </Box>\n      {canExpand<T, S, F>(schema, uiSchema, formData) && (\n        <AddButton\n          className='object-property-expand'\n          onClick={onAddClick(schema)}\n          disabled={disabled || readonly}\n          uiSchema={uiSchema}\n          registry={registry}\n        />\n      )}\n    </>\n  );\n\n  // default setting is uncollapsable\n  if (options.collapsable) {\n    const legendNode = showLegend ? (\n      <Group onClick={toggle} justify='space-between' wrap='nowrap'>\n        {legendInner}\n        <IconChevronUp size='1rem' />\n      </Group>\n    ) : null;\n    return (\n      <Stack\n        id={idSchema.$id}\n        role='group'\n        gap={'xs'}\n        className={`armt-template-objectfield ${classNames ?? ''} ${classes.root} ${containError && classes.error}`}\n      >\n        {legendNode}\n        <Collapse in={opened} className={classes.collapse}>\n          {contentInner}\n        </Collapse>\n      </Stack>\n    );\n  } else {\n    const legendNode = showLegend ? legendInner : null;\n    return (\n      <Stack\n        id={idSchema.$id}\n        role='group'\n        gap={'xs'}\n        className={`armt-template-objectfield ${classNames ?? ''} ${classes.root} ${containError && classes.error}`}\n      >\n        {legendNode}\n        {contentInner}\n      </Stack>\n    );\n  }\n}\n"],"names":[],"mappings":"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"}