import { css, cx } from '@emotion/css'; import React, { FC } from 'react'; import { useFieldArray, useFormContext } from 'react-hook-form'; import { GrafanaTheme } from '@grafana/data'; import { Button, Field, Input, InlineLabel, Label, useStyles } from '@grafana/ui'; import { RuleFormValues } from '../../types/rule-form'; interface Props { className?: string; } const LabelsField: FC = ({ className }) => { const styles = useStyles(getStyles); const { register, control, watch, formState: { errors }, } = useFormContext(); const labels = watch('labels'); const { fields, append, remove } = useFieldArray({ control, name: 'labels' }); return (
<>
Labels
{fields.map((field, index) => { return (
=
); })}
); }; const getStyles = (theme: GrafanaTheme) => { return { wrapper: css` margin-bottom: ${theme.spacing.xl}; `, 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: 175px; margin-bottom: ${theme.spacing.sm}; & + & { margin-left: ${theme.spacing.sm}; } `, }; }; export default LabelsField;