69 lines
1.8 KiB
TypeScript
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;
|