UNPKG

@aokiapp/rjsf-mantine-corporate

Version:

Corporational variant of theme, based on @aokiapp/rjsf-mantine-theme

1 lines 10.8 kB
{"version":3,"file":"ArrayFieldTemplate.mjs","sources":["../../src/templates/ArrayFieldTemplate.tsx"],"sourcesContent":["import {\n getTemplate,\n getUiOptions,\n ArrayFieldTemplateProps,\n ArrayFieldTemplateItemType,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\nimport { Group, Box, Divider } from '@mantine/core';\nimport { DragDropContext, Droppable } from '@hello-pangea/dnd';\nimport { useState } from 'react';\nimport classes from './ArrayFieldTemplate.module.css';\nimport { IconCopy, IconTrash } from '@tabler/icons-react';\nimport ArrayFieldItemTemplate from './ArrayFieldItemTemplate'; // do not use getTemplate here\n\n/** The `ArrayFieldTemplate` component is the template used to render all items in an array.\n *\n * @param props - The `ArrayFieldTemplateItemType` props for the component\n */\nexport default function ArrayFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldTemplateProps<T, S, F>) {\n const {\n canAdd,\n className,\n disabled,\n idSchema,\n uiSchema,\n items,\n onAddClick,\n readonly,\n registry,\n required,\n schema,\n title,\n } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const ArrayFieldDescriptionTemplate = getTemplate<'ArrayFieldDescriptionTemplate', T, S, F>(\n 'ArrayFieldDescriptionTemplate',\n registry,\n uiOptions,\n );\n const ArrayFieldTitleTemplate = getTemplate<'ArrayFieldTitleTemplate', T, S, F>(\n 'ArrayFieldTitleTemplate',\n registry,\n uiOptions,\n );\n // Button templates are not overridden in the uiSchema\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n\n const _title = uiOptions.title || title;\n const legendNode = (\n <Group gap='xs'>\n {title && (\n <ArrayFieldTitleTemplate\n idSchema={idSchema}\n title={_title}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n\n <ArrayFieldDescriptionTemplate\n idSchema={idSchema}\n description={uiOptions.description || schema.description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n </Group>\n );\n\n const orderable = (uiOptions.orderable ?? false) && !readonly && !disabled;\n const removable = (uiOptions.removable ?? true) && !readonly && !disabled;\n const copyable = (uiOptions.copyable ?? false) && !readonly && !disabled;\n\n const [isDragging, setIsDragging] = useState(false);\n\n let arrItems;\n if (items && items.length > 0) {\n arrItems = (\n <>\n <Divider my='xs' label={`${_title || '配列'} の先頭`} labelPosition='center' />\n <DragDropContext\n onBeforeCapture={() => setIsDragging(true)}\n onDragEnd={({ destination, source }) => {\n setIsDragging(false);\n if (destination?.droppableId === 'array') {\n // ad hoc solution for calling onReorderClick\n items[0].onReorderClick(source.index, destination?.index || 0)();\n } else if (destination?.droppableId === 'copy') {\n items[0].onCopyIndexClick(source.index)();\n } else if (destination?.droppableId === 'remove') {\n items[0].onDropIndexClick(source.index)();\n }\n }}\n >\n <Droppable droppableId='array' direction='vertical'>\n {(provided) => (\n <div {...provided.droppableProps} ref={provided.innerRef}>\n {items.map(({ key, ...itemProps }: ArrayFieldTemplateItemType<T, S, F>) => {\n return (\n <ArrayFieldItemTemplate key={key} {...itemProps} orderable={orderable} removable={!!removable} />\n );\n })}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n {items[0].hasToolbar && isDragging && (\n <Group m='sm'>\n {copyable && (\n <DropToAction icon={<IconCopy />} label='コピー' className={classes.dropToCopy} droppableId='copy' />\n )}\n {removable && (\n <DropToAction icon={<IconTrash />} label='削除' className={classes.dropToRemove} droppableId='remove' />\n )}\n </Group>\n )}\n </DragDropContext>\n <Divider my='xs' label={`${_title || '配列'} の末尾`} labelPosition='center' />\n </>\n );\n } else {\n arrItems = <Divider my='xs' label={`${_title || '配列'} は空です`} labelPosition='center' />;\n }\n\n return (\n <Box\n id={idSchema.$id}\n style={{\n width: '100%',\n }}\n className={`armt-template-arrayfield ${className}`}\n >\n <Group gap='xs' justify='space-between'>\n {legendNode}\n {canAdd && (\n <AddButton onClick={onAddClick} disabled={disabled || readonly} uiSchema={uiSchema} registry={registry} />\n )}\n </Group>\n {arrItems}\n </Box>\n );\n}\n\nfunction DropToAction({\n icon,\n label,\n className,\n droppableId,\n}: {\n icon: React.ReactNode;\n label: string;\n className: string;\n droppableId: string;\n}) {\n return (\n <Droppable droppableId={droppableId} direction='horizontal'>\n {(provided, snapshot) => (\n <div\n className={`${classes.dropToAction} ${className} ${snapshot.isDraggingOver && classes.dtaDraggingOver}`}\n {...provided.droppableProps}\n ref={provided.innerRef}\n >\n <div className={classes.dtaIcon}>{icon}</div>\n <div className={classes.dtaLabel}>{label}</div>\n </div>\n )}\n </Droppable>\n );\n}\n"],"names":[],"mappings":"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"}