/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import { EuiAccordion, EuiText, EuiPanel, EuiFlexGroup, EuiFlexItem, EuiButtonIcon, EuiToolTip } from "@elastic/eui"; import "brace/theme/github"; import "brace/mode/json"; import { State as StateData } from "../../../../../models/interfaces"; import { ModalConsumer } from "../../../../components/Modal"; import ConfirmationModal from "../../../../components/ConfirmationModal"; import Badge from "../Badge"; import TransitionContent from "../Transition/TransitionContent"; import { makeId } from "../../../../utils/helpers"; import { actionRepoSingleton } from "../../utils/helpers"; interface StateProps { state: StateData; isInitialState: boolean; idx: number; onClickEditState: (state: StateData) => void; onClickDeleteState: (idx: number) => void; isReadOnly: boolean; } const State = ({ state, isInitialState, idx, onClickEditState, onClickDeleteState, isReadOnly = false }: StateProps) => ( {state.name} {isInitialState && ( Initial state )} {!!state.actions?.length && ( )} {!!state.transitions?.length && ( )} } extraAction={ !isReadOnly && ( {({ onShow, onClose }) => ( Delete state

}> onShow(ConfirmationModal, { title: "Delete state", bodyMessage: ( Delete "{state.name}" permanently? Deleting the state will result in deleting all transitions. ), actionMessage: "Delete state", actionProps: { color: "danger" }, modalProps: { maxWidth: 600 }, onAction: () => onClickDeleteState(idx), onClose, }) } data-test-subj="state-delete-button" />
)}
Edit state

}> onClickEditState(state)} />
) } paddingSize="l" >

Actions

{!state.actions?.length ? ( No actions. Edit state to add actions. ) : ( {state.actions.map((action, index) => ( {actionRepoSingleton.getUIActionFromData(action).content()} ))} )}

Transitions

{!state.transitions?.length ? ( No transitions. Edit state to add transitions. ) : ( {state.transitions.map((transition, index) => ( ))} )}
); export default State;