import React, { FC } from 'react'; import { Button, Field, FieldArray, Input, InlineLabel, Label, useStyles } from '@grafana/ui'; import { GrafanaTheme } from '@grafana/data'; import { css, cx } from '@emotion/css'; import { useFormContext } from 'react-hook-form'; interface Props { className?: string; } const LabelsField: FC = ({ className }) => { const styles = useStyles(getStyles); const { register, control, watch, formState: { errors }, } = useFormContext(); const labels = watch('labels'); return (
{({ fields, append, remove }) => { return ( <>
Labels
{fields.map((field, index) => { return (
=
); })}
); }}
); }; const getStyles = (theme: GrafanaTheme) => { return { wrapper: css` margin-top: ${theme.spacing.md}; `, flexColumn: css` display: flex; flex-direction: column; `, flexRow: css` display: flex; flex-direction: row; justify-content: flex-start; & + button { margin-left: ${theme.spacing.xs}; } `, deleteLabelButton: css` margin-left: ${theme.spacing.xs}; align-self: flex-start; `, addLabelButton: css` flex-grow: 0; align-self: flex-start; `, centerAlignRow: css` align-items: baseline; `, equalSign: css` align-self: flex-start; width: 28px; justify-content: center; margin-left: ${theme.spacing.xs}; `, labelInput: css` width: 183px; margin-bottom: ${theme.spacing.sm}; & + & { margin-left: ${theme.spacing.sm}; } `, }; }; export default LabelsField;