Files
super-app/components/reusable/item-separator/ItemSeparator.tsx

69 lines
1.8 KiB
TypeScript

import React from "react";
import {
SeparatorOrientationType,
SeparatorType,
} from "../../../App/common/constants";
import { ItemSeparatorProps } from "../../../App/common/interface/components/ItemSeparatorData";
import {
GradientHorizontalDashedSeparator,
HorizontalDashedSeparator,
VerticalDashedSeparator,
} from "./dashed-separator/DashedSeparator";
import { HorizontalSolidSeparator } from "./solid-separator/SolidSeparator";
const getHorizontalSeparator = ({
separatorData: { separatorType, separatorStyle, gradientData },
}: ItemSeparatorProps) => {
switch (separatorType) {
case SeparatorType.DASHED:
return <HorizontalDashedSeparator style={separatorStyle} />;
case SeparatorType.SOLID:
return <HorizontalSolidSeparator style={separatorStyle} />;
case SeparatorType.GRADIENT: {
if (!gradientData) return null;
return (
<GradientHorizontalDashedSeparator
height={gradientData.height}
colorsArray={gradientData.colorsArray}
/>
);
}
default:
return null;
}
};
const getVerticalSeparator = ({
separatorData: { separatorType, separatorStyle },
}: ItemSeparatorProps) => {
switch (separatorType) {
case SeparatorType.DASHED:
return <VerticalDashedSeparator style={separatorStyle} />;
default:
return null;
}
};
const renderSeparator = (props: ItemSeparatorProps) => {
const { orientationType } = props.separatorData || {};
switch (orientationType) {
case SeparatorOrientationType.HORIZONTAL:
return getHorizontalSeparator(props);
case SeparatorOrientationType.VERTICAL:
return getVerticalSeparator(props);
default:
return null;
}
};
const ItemSeparator = (props: ItemSeparatorProps) => {
return renderSeparator(props);
};
export default ItemSeparator;