import React, { JSXElementConstructor, useEffect } from "react";
import { FieldArray, WrappedFieldArrayProps } from "redux-form";
import styled from "styled-components";
import { Icon } from "@blueprintjs/core";
import { FormIcons } from "icons/FormIcons";
import BaseControl, { ControlProps, ControlData } from "./BaseControl";
import TextField from "components/editorComponents/form/fields/TextField";
import { ControlType } from "constants/PropertyControlConstants";
import FormLabel from "components/editorComponents/FormLabel";
const FormRowWithLabel = styled.div`
display: flex;
flex: 1;
flex-direction: row;
& svg {
cursor: pointer;
}
`;
const KeyValueRow = (props: Props & WrappedFieldArrayProps) => {
useEffect(() => {
// Always maintain 1 row
if (props.fields.length < 1) {
for (let i = props.fields.length; i < 1; i += 1) {
props.fields.push({ key: "", value: "" });
}
}
}, [props.fields]);
return (
{typeof props.fields.getAll() === "object" && (
{props.label} {props.isRequired && "*"}
{props.fields.map((field: any, index: number) => (
{/* */}
{/*
*/}
{index === props.fields.length - 1 ? (
props.fields.push({ key: "", value: "" })}
color={"#A3B3BF"}
style={{ alignSelf: "center" }}
/>
) : (
props.fields.remove(index)}
style={{ alignSelf: "center" }}
/>
)}
))}
)}
);
};
type Props = {
name: string;
label: string;
rightIcon?: JSXElementConstructor<{ height: number; width: number }>;
description?: string;
actionConfig?: any;
extraData?: ControlData[];
isRequired?: boolean;
};
class KeyValueFieldInput extends BaseControl {
render() {
return (
);
}
getControlType(): ControlType {
return "KEY_VAL_INPUT";
}
}
export interface KeyValueInputProps extends ControlProps {
name: string;
label: string;
rightIcon?: JSXElementConstructor<{ height: number; width: number }>;
description?: string;
actionConfig?: any;
}
export default KeyValueFieldInput;