diff --git a/App/common/interface/components/TooltipData.ts b/App/common/interface/components/TooltipData.ts
new file mode 100644
index 0000000000..ad889c8d7f
--- /dev/null
+++ b/App/common/interface/components/TooltipData.ts
@@ -0,0 +1,18 @@
+import { ViewStyle } from "react-native";
+import { TextFieldData } from "../widgets/widgetData/TitleWidgetData";
+
+export interface TooltipData {
+ title?: TextFieldData;
+ style?: TooltipStyle;
+}
+
+export interface TooltipStyle {
+ containerStyle?: ViewStyle;
+ contentBoxStyle?: ViewStyle;
+ tooltipSize?: number;
+}
+
+export interface TooltipProps {
+ children: React.ReactNode;
+ tooltipStyle?: TooltipStyle;
+}
diff --git a/App/common/interface/widgets/widgetData/TitleWidgetData.ts b/App/common/interface/widgets/widgetData/TitleWidgetData.ts
index 3f23281ebf..e654d46d23 100644
--- a/App/common/interface/widgets/widgetData/TitleWidgetData.ts
+++ b/App/common/interface/widgets/widgetData/TitleWidgetData.ts
@@ -1,7 +1,7 @@
import { ImageStyle, TextStyle, ViewStyle } from "react-native";
import { CtaData } from "../..";
-import { GenericWidgetData } from "../Widget";
import { GenericActionPayload } from "../../../actions/GenericAction";
+import { GenericWidgetData } from "../Widget";
export interface TitleWidgetData extends GenericWidgetData {
title?: TextFieldData;
@@ -12,12 +12,14 @@ export interface TitleWidgetData extends GenericWidgetData {
export interface TextFieldData {
text: string;
+ ellipsizeMode?: "head" | "middle" | "tail" | "clip";
+ numberOfLines?: number;
textStyle?: TextStyle;
substringStyles?: SubstringStyle[];
textDrawableData?: TextDrawableData;
cta?: CtaData;
- actions?: GenericActionPayload,
- viewStyle?: ViewStyle
+ actions?: GenericActionPayload;
+ viewStyle?: ViewStyle;
}
export interface SubstringStyle {
@@ -49,4 +51,4 @@ export interface LottieFieldData {
lottieStyle?: ImageStyle;
cta?: CtaData;
delayAnimationBy?: number;
-}
\ No newline at end of file
+}
diff --git a/App/common/interface/widgets/widgetData/TitleWithListWidgetData.ts b/App/common/interface/widgets/widgetData/TitleWithListWidgetData.ts
index d40b9412d2..873f5e28de 100644
--- a/App/common/interface/widgets/widgetData/TitleWithListWidgetData.ts
+++ b/App/common/interface/widgets/widgetData/TitleWithListWidgetData.ts
@@ -1,20 +1,22 @@
-import { TextStyle, ViewStyle } from "react-native";
+import { ViewStyle } from "react-native";
+import { AnalyticsEvent } from "../..";
+import { TooltipData } from "../../components/TooltipData";
import { GenericWidgetData } from "../Widget";
import { TextFieldData } from "./TitleWidgetData";
-import { AnalyticsEvent } from "../..";
export interface TitleWithListWidgetData extends GenericWidgetData {
title?: TextFieldData;
rightTitle?: TextFieldData;
listData?: ListItem[];
- listStyle?: ViewStyle
+ listFooter?: ListItem;
+ listStyle?: ViewStyle;
+ tooltip?: TooltipData;
}
export interface ListItem extends GenericWidgetData {
id: string;
title?: TextFieldData;
rightTitle?: TextFieldData;
- onViewEvent?: AnalyticsEvent
+ itemStyle?: ViewStyle;
+ onViewEvent?: AnalyticsEvent;
}
-
-
diff --git a/components/reusable/tooltip/Tooltip.tsx b/components/reusable/tooltip/Tooltip.tsx
new file mode 100644
index 0000000000..1ef41c7354
--- /dev/null
+++ b/components/reusable/tooltip/Tooltip.tsx
@@ -0,0 +1,53 @@
+import React from "react";
+import { View } from "react-native";
+import { TooltipProps } from "../../../App/common/interface/components/TooltipData";
+import styles from "./TooltipStyle";
+
+const Tooltip = ({ children, tooltipStyle }: TooltipProps) => {
+ const {
+ containerStyle,
+ contentBoxStyle,
+ tooltipSize = 6,
+ } = tooltipStyle || {};
+
+ const borderColor = contentBoxStyle?.borderColor || "black";
+ const backgroundColor = contentBoxStyle?.backgroundColor || "black";
+ const borderWidth = contentBoxStyle?.borderWidth || 0;
+ return (
+
+
+
+
+
+
+ {children}
+
+
+ );
+};
+
+export default Tooltip;
diff --git a/components/reusable/tooltip/TooltipStyle.ts b/components/reusable/tooltip/TooltipStyle.ts
new file mode 100644
index 0000000000..c25d5bccd9
--- /dev/null
+++ b/components/reusable/tooltip/TooltipStyle.ts
@@ -0,0 +1,25 @@
+import { StyleSheet } from "react-native";
+
+const styles = StyleSheet.create({
+ container: {
+ flexDirection: "column",
+ alignItems: "center",
+ },
+ box: {
+ position: "relative",
+ },
+ tooltipBorder: {
+ borderLeftColor: "transparent",
+ borderRightColor: "transparent",
+ borderStyle: "solid",
+ },
+ tooltipInner: {
+ position: "absolute",
+ borderLeftColor: "transparent",
+ borderRightColor: "transparent",
+ borderStyle: "solid",
+ zIndex: 2,
+ },
+});
+
+export default styles;
\ No newline at end of file
diff --git a/components/widgets/styled-text/StyledText.tsx b/components/widgets/styled-text/StyledText.tsx
index 0b9b2ea676..a56e83730e 100644
--- a/components/widgets/styled-text/StyledText.tsx
+++ b/components/widgets/styled-text/StyledText.tsx
@@ -1,5 +1,6 @@
import React from "react";
-import { View, Text, StyleSheet, Image } from "react-native";
+import { View } from "react-native";
+import Animated from "react-native-reanimated";
import {
ImageFieldData,
LottieFieldData,
@@ -7,9 +8,8 @@ import {
TextFieldData,
} from "../../../App/common/interface/widgets/widgetData/TitleWidgetData";
import { StyledImage } from "../../StyledImage";
-import styles from "./StyledTextComponentStyle";
import { StyledLottie } from "../styled-lottie/StyledLottie";
-import Animated from "react-native-reanimated";
+import styles from "./StyledTextComponentStyle";
export const StyledText = ({
textFieldData,
@@ -60,7 +60,11 @@ export const StyledText = ({
{leftImage && }
{leftLottie && }
-
+
{substringStyleMap.length !== 0
? substringStyleMap.map((substringStyle, index) => {
return (
diff --git a/components/widgets/title-with-list-widget/TitleWithListWidget.tsx b/components/widgets/title-with-list-widget/TitleWithListWidget.tsx
index dda5e32edb..09c61a20b5 100644
--- a/components/widgets/title-with-list-widget/TitleWithListWidget.tsx
+++ b/components/widgets/title-with-list-widget/TitleWithListWidget.tsx
@@ -1,16 +1,17 @@
+import throttle from "lodash/throttle";
+import { useCallback, useEffect } from "react";
import { FlatList, View, ViewStyle } from "react-native";
import { GenericActionPayload } from "../../../App/common/actions/GenericAction";
+import { sendAsAnalyticsEvent } from "../../../App/common/hooks/useAnalyticsEvent";
import { CtaData } from "../../../App/common/interface";
import {
ListItem,
TitleWithListWidgetData,
} from "../../../App/common/interface/widgets/widgetData/TitleWithListWidgetData";
+import Tooltip from "../../reusable/tooltip/Tooltip";
+import { StyledText } from "../styled-text/StyledText";
import TitleWidget from "../title-widget/TitleWidget";
import styles from "./TitleWithListWidgetStyle";
-import { useEffect } from "react";
-import { sendAsAnalyticsEvent } from "../../../App/common/hooks/useAnalyticsEvent";
-import { useCallback } from "react";
-import throttle from "lodash/throttle";
const ListItemComponent = ({
item,
@@ -32,6 +33,22 @@ const ListItemComponent = ({
);
};
+const ListFooterItemComponent = ({
+ item,
+ handleClick,
+}: {
+ item: ListItem;
+ handleClick?: (cta: CtaData) => void;
+}) => {
+ return (
+
+ );
+};
+
const TitleWithListWidget = ({
widgetData,
widgetStyle,
@@ -73,7 +90,18 @@ const TitleWithListWidget = ({
)}
keyExtractor={(item, index) => item.id || index.toString()}
/>
+ {widgetData.listFooter?.title?.text && (
+
+ )}
+ {widgetData.tooltip?.title && (
+
+
+
+ )}
);
};
diff --git a/components/widgets/title-with-list-widget/TitleWithListWidgetStyle.ts b/components/widgets/title-with-list-widget/TitleWithListWidgetStyle.ts
index a902a180c3..f740ef067a 100644
--- a/components/widgets/title-with-list-widget/TitleWithListWidgetStyle.ts
+++ b/components/widgets/title-with-list-widget/TitleWithListWidgetStyle.ts
@@ -24,6 +24,16 @@ const styles = StyleSheet.create({
justifyContent: "space-between",
paddingVertical: 10,
},
+ listFooterContainer: {
+ marginHorizontal: -16,
+ marginTop: 6,
+ marginBottom: -14,
+ borderBottomStartRadius: 3,
+ borderBottomEndRadius: 3,
+ paddingHorizontal: 16,
+ flexDirection: "row",
+ justifyContent: "space-between",
+ },
});
-export default styles;
\ No newline at end of file
+export default styles;
diff --git a/package.json b/package.json
index 45f3751d4e..6d54cf55d8 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "NaviApp",
- "version": "0.1.1",
- "versionCode": 2,
+ "version": "0.1.2",
+ "versionCode": 3,
"private": true,
"scripts": {
"start": "yarn react-native start",