62 lines
1.8 KiB
TypeScript
62 lines
1.8 KiB
TypeScript
import { View, ViewStyle } from "react-native";
|
|
import { TouchableOpacity } 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);
|
|
}
|
|
};
|
|
|
|
const handleRightTitleClick = () => {
|
|
const { cta, actions } = widgetData?.rightTitle || {};
|
|
if (actions && handleActions) {
|
|
handleActions(null, actions);
|
|
} else if (cta && handleClick) {
|
|
handleClick(cta);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<View style={widgetStyle}>
|
|
{widgetData.title && (
|
|
<TouchableOpacity onPress={handleTitleClick} activeOpacity={1}>
|
|
<StyledText textFieldData={widgetData.title} />
|
|
</TouchableOpacity>
|
|
)}
|
|
{widgetData.subtitle && (
|
|
<StyledText textFieldData={widgetData.subtitle} />
|
|
)}
|
|
{widgetData.rightTitle && (
|
|
<TouchableOpacity onPress={handleRightTitleClick} activeOpacity={1}>
|
|
<StyledText textFieldData={widgetData.rightTitle} />
|
|
</TouchableOpacity>
|
|
)}
|
|
</View>
|
|
);
|
|
};
|
|
|
|
export default TitleWidget;
|