diff --git a/ui/src/app/form/component/templates/ArrayFieldTemplate.js b/ui/src/app/form/component/templates/ArrayFieldTemplate.js
index 3afcda8f0..598986589 100644
--- a/ui/src/app/form/component/templates/ArrayFieldTemplate.js
+++ b/ui/src/app/form/component/templates/ArrayFieldTemplate.js
@@ -5,21 +5,22 @@ import Col from "react-bootstrap/Col";
import Container from "react-bootstrap/Container";
import Accordion from 'react-bootstrap/Accordion';
import Button from 'react-bootstrap/Button';
+import { useAccordionButton } from "react-bootstrap/AccordionButton";
+import AccordionContext from "react-bootstrap/AccordionContext";
import AddButton from "../AddButton";
import IconButton from "../IconButton";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faCaretDown } from "@fortawesome/free-solid-svg-icons";
+import { faCaretDown, faCaretRight } from "@fortawesome/free-solid-svg-icons";
import Translate from "../../../i18n/components/translate";
+
const { isMultiSelect, getDefaultRegistry } = utils;
const ArrayFieldTemplate = (props) => {
const { schema, registry = getDefaultRegistry() } = props;
-
// TODO: update types so we don't have to cast registry as any
if (isMultiSelect(schema, (registry).rootSchema)) {
-
return ;
} else {
return ;
@@ -57,6 +58,21 @@ const ArrayFieldDescription = ({
// Used in the two templates
+const CustomToggle = ({children, eventKey, type, callback}) => {
+ const { activeEventKey } = React.useContext(AccordionContext);
+
+ const decoratedOnClick = useAccordionButton(eventKey, () => callback && callback(eventKey));
+ const isCurrentEventKey = activeEventKey === eventKey;
+
+ return (
+
+ );
+}
+
+
const ObjectArrayItem = ({type, ...props}) => {
const btnStyle = {
flex: 1,
@@ -65,14 +81,13 @@ const ObjectArrayItem = ({type, ...props}) => {
fontWeight: "bold",
};
return (
-
+
-
-
+
-
+
{props.hasToolbar && (
{(props.hasMoveUp || props.hasMoveDown) && (
@@ -140,7 +155,7 @@ const DefaultArrayItem = (props) => {
const uiSchemaOptions = props.uiSchema ? props.uiSchema['ui:options'] || {} : {};
return (
-
+
{props.children}
{props.hasToolbar && (
@@ -239,7 +254,7 @@ const DefaultNormalArrayFieldTemplate = (props) => {
const showTitle = props.uiSchema.hasOwnProperty("ui:title") ? props.uiSchema["ui:title"] === false && !props.canAdd ? false : true : true;
return (
-
+
{showTitle &&
{option.label}
|