/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import { Draggable } from "react-beautiful-dnd"; import { useTranslation } from "react-i18next"; import { Widget, WidgetType } from "../models"; import { WidgetTreeItemData } from "../services/OrderingService"; import WidgetTreeItemContent from "./WidgetTreeItemContent"; import WidgetTreeSectionDivider from "./WidgetTreeSectionDivider"; import styles from "./WidgetTreeItem.module.scss"; interface WidgetTreeItemProps { node: WidgetTreeItemData; isDropDisabled?: boolean; canMoveUp?: boolean; canMoveDown?: boolean; onDelete: (widget: Widget) => void; onDuplicate: (widget: Widget) => void; onMove: (sourceIndex: number, destinationIndex: number) => void; } const WidgetTreeItem = (props: WidgetTreeItemProps) => { const { t } = useTranslation(); const [isDragging, setIsDragging] = React.useState(false); const node = props.node; const widget = node.widget; const onMoveUp = props.canMoveUp ? () => props.onMove(node.dragIndex, node.dragIndex - 1) : undefined; const onMoveDown = props.canMoveDown ? () => props.onMove(node.dragIndex, node.dragIndex + 1) : undefined; return (
  • {widget && (
    {(provided, snapshot) => { if (isDragging !== snapshot.isDragging) { setIsDragging(snapshot.isDragging); } return (
    {snapshot.isDragging && widget.widgetType === WidgetType.Section && (
    {node.children.length === 1 && (
    {t("MoveInOut")}
    )} {node.children .filter((child) => !!child.widget) .map((child) => { return ( child.widget && ( ) ); })}
    )}
    ); }}
    {widget.widgetType === WidgetType.Section && (
    {node.children.length === 1 && (
    {t("MoveInOut")}
    )} {node.children.length && (
      {node.children.map((child) => { return ( ); })}
    )}
    )}
    )} {!widget && }
  • ); }; export default WidgetTreeItem;