Files
super-app/components/widgets/title-widget/TitleWidget.tsx

79 lines
2.4 KiB
TypeScript
Raw Normal View History

import { TouchableOpacity, View, ViewStyle } from "react-native";
import { GenericActionPayload } from "../../../App/common/actions/GenericAction";
import { CtaData } from "../../../App/common/interface";
import { TitleWidgetData } from "../../../App/common/interface/widgets/widgetData/TitleWidgetData";
import { StyledText } from "../styled-text/StyledText";
const TitleWidget = ({
widgetData,
widgetStyle,
handleActions,
handleClick,
widgetIndex,
}: {
widgetData: TitleWidgetData;
widgetStyle?: ViewStyle;
handleActions?: (
value: any | undefined | null,
actionPayloadList: GenericActionPayload | undefined,
) => void;
handleClick?: (cta: CtaData) => void;
widgetIndex?: number;
}) => {
const handleTitleClick = () => {
const { cta, actions } = widgetData?.title || {};
if (actions && handleActions) {
handleActions(null, actions);
} else if (cta && handleClick) {
handleClick(cta);
} else if (widgetData?.actions && handleActions) {
handleActions(null, widgetData?.actions);
} else if (widgetData?.cta && handleClick) {
handleClick(widgetData?.cta);
}
};
const handleRightTitleClick = () => {
const { cta, actions } = widgetData?.rightTitle || {};
if (actions && handleActions) {
handleActions(null, actions);
} else if (cta && handleClick) {
handleClick(cta);
} else if (widgetData?.actions && handleActions) {
handleActions(null, widgetData?.actions);
} else if (widgetData?.cta && handleClick) {
handleClick(widgetData?.cta);
}
};
return (
<View style={widgetStyle}>
{widgetData.title && (
<TouchableOpacity
onPress={handleTitleClick}
activeOpacity={1}
disabled={!(widgetData?.title?.cta || widgetData?.title?.actions)}
>
<StyledText textFieldData={widgetData.title} />
</TouchableOpacity>
)}
{widgetData.subtitle && (
<StyledText textFieldData={widgetData.subtitle} />
)}
{widgetData.rightTitle && (
<TouchableOpacity
onPress={handleRightTitleClick}
activeOpacity={1}
disabled={
!(widgetData?.rightTitle?.cta || widgetData?.rightTitle?.actions)
}
>
<StyledText textFieldData={widgetData.rightTitle} />
</TouchableOpacity>
)}
</View>
);
};
export default TitleWidget;