@quintype/native-components 2.30.1 → 2.30.2-center-align-title-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quintype/native-components",
3
- "version": "2.30.1",
3
+ "version": "2.30.2-center-align-title-beta",
4
4
  "description": "",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -152,7 +152,8 @@ export const Story = ({
152
152
  gaTrigerredTTS,
153
153
  commentData,
154
154
  commentLoader,
155
- storyLayout
155
+ storyLayout,
156
+ centerAlignStoryTitle
156
157
  }) => {
157
158
  const { theme } = useContext(AppTheme);
158
159
  const { COLORS, FONT_SIZE, locale, DARK_MODE,translate, enableComments } = theme;
@@ -376,6 +377,7 @@ export const Story = ({
376
377
  onAuthorPress={onAuthorPress}
377
378
  onSectionPress={onSectionPress}
378
379
  storyLayout={storyLayout}
380
+ centerAlignStoryTitle = {centerAlignStoryTitle}
379
381
  />
380
382
  { storyHasAccess === 'granted' && audioS3Key && (!showPlayer ?
381
383
  (<TouchableOpacity onPress={async()=>{
@@ -65,7 +65,7 @@ const getHeroComponent = (props) => {
65
65
  };
66
66
 
67
67
  export const StoryHeader = (props) => {
68
- const { story, firstVideoElement, storyLayout } = props;
68
+ const { story, firstVideoElement, storyLayout, centerAlignStoryTitle } = props;
69
69
  const sectionData = get(story, ['sections', 0], {});
70
70
  const { theme } = useContext(AppTheme);
71
71
 
@@ -138,7 +138,7 @@ export const StoryHeader = (props) => {
138
138
  return (
139
139
  <View testID={props.testID}>
140
140
  {getSectionName(storyLayout)}
141
- <StoryTitle title={story.headline} subTitle={story.subheadline} isPremiumStory={isPremiumStory} isHeadLinePriorityLayout={isHeadLinePriorityLayout}/>
141
+ <StoryTitle title={story.headline} subTitle={story.subheadline} isPremiumStory={isPremiumStory} isHeadLinePriorityLayout={isHeadLinePriorityLayout} centerAlignStoryTitle={centerAlignStoryTitle}/>
142
142
  {getHeroComponent(props)}
143
143
  {showAttribution(storyLayout)}
144
144
  <View style={styles.dateBlock}>
@@ -165,7 +165,7 @@ export const StoryHeader = (props) => {
165
165
  {getTimeInFormat(story['published-at'], DATE_FORMAT, locale)}
166
166
  </Text>
167
167
  </View>
168
- <StoryTitle title={story.headline} subTitle={story.subheadline} isPremiumStory={isPremiumStory}/>
168
+ <StoryTitle title={story.headline} subTitle={story.subheadline} isPremiumStory={isPremiumStory} centerAlignStoryTitle={centerAlignStoryTitle}/>
169
169
  {getAuthorRow()}
170
170
  {reviewTitle && <RatingLayout reviewTitle={reviewTitle} ratingValue={reviewData?.value} ratingLabel={reviewData?.label}/>}
171
171
  </View>
@@ -7,9 +7,9 @@ import { AppTheme } from '../../utils';
7
7
  import { COMP_CONTENT_CONSTANTS } from '../../constants/component-constants/content-constants/constants';
8
8
  import PremiumIcons from '../../Icons/PremiumIcons/index';
9
9
 
10
- export const StoryTitle = ({ title, subTitle, isPremiumStory, isHeadLinePriorityLayout }) => {
10
+ export const StoryTitle = ({ title, subTitle, isPremiumStory, isHeadLinePriorityLayout, centerAlignStoryTitle }) => {
11
11
  const { theme } = useContext(AppTheme);
12
- const styles = storyTitleStyles(theme);
12
+ const styles = storyTitleStyles({...theme, centerAlignStoryTitle});
13
13
  const {
14
14
  premiumIcon, COLORS, FONT_SIZE
15
15
  } = theme;
@@ -1,7 +1,7 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
 
3
3
  export const storyTitleStyles = ({
4
- COLORS, FONT_SIZE, FONT_FAMILY, lineHeightMultiplier,
4
+ COLORS, FONT_SIZE, FONT_FAMILY, lineHeightMultiplier,centerAlignStoryTitle
5
5
  }) => StyleSheet.create({
6
6
  container: {
7
7
  padding: 10,
@@ -12,6 +12,7 @@ export const storyTitleStyles = ({
12
12
  fontFamily: FONT_FAMILY.primaryBold,
13
13
  lineHeight: FONT_SIZE.title * lineHeightMultiplier,
14
14
  color: COLORS.BRAND_BLACK,
15
+ textAlign: centerAlignStoryTitle ? 'center' : 'auto',
15
16
  },
16
17
  subTitleStyle: {
17
18
  fontSize: FONT_SIZE.h3,
@@ -8,16 +8,34 @@ import { AppTheme } from '../../utils/context';
8
8
 
9
9
  export const Text = (props) => {
10
10
  const { theme } = useContext(AppTheme);
11
- const { FONT_FAMILY, COLORS, CAN_COPY_TEXT } = theme;
11
+ const {
12
+ FONT_FAMILY, COLORS, CAN_COPY_TEXT, lineHeightMultiplier,
13
+ } = theme;
14
+
15
+ // Flatten the style first
16
+ const flattenedStyle = StyleSheet.flatten([props.style]) || {};
17
+
18
+ // Use fontSize from style or fallback, and lineHeight from style or calculate
19
+ const { fontSize } = flattenedStyle;
20
+ let lineHeight;
21
+ if (flattenedStyle.lineHeight != null) {
22
+ lineHeight = flattenedStyle.lineHeight;
23
+ } else if (fontSize != null) {
24
+ lineHeight = fontSize * (lineHeightMultiplier ?? 1.5);
25
+ }
12
26
 
13
27
  const RNStyle = {
14
28
  fontFamily: props.primary ? FONT_FAMILY.primary : FONT_FAMILY.secondary,
15
29
  writingDirection: I18nManager.isRTL ? 'rtl' : 'ltr',
30
+ ...(fontSize != null ? { fontSize } : {}),
31
+ ...(lineHeight != null ? { lineHeight } : {}),
16
32
  };
17
- const flattenedStyle = StyleSheet.flatten([RNStyle, props.style]);
18
33
 
19
- const { ellipsizeMode, numberOfLines, allowFontScaling, testID } = props;
34
+ const mergedStyle = StyleSheet.flatten([RNStyle, props.style]);
20
35
 
36
+ const {
37
+ ellipsizeMode, numberOfLines, allowFontScaling, testID,
38
+ } = props;
21
39
  const textData = I18nManager.isRTL ? `\u200F${props.children}` : props.children;
22
40
 
23
41
  return (
@@ -29,7 +47,7 @@ export const Text = (props) => {
29
47
  ellipsizeMode={ellipsizeMode}
30
48
  numberOfLines={numberOfLines}
31
49
  testID={testID}
32
- style={flattenedStyle}
50
+ style={mergedStyle}
33
51
  fontFamily={RNStyle.fontFamily}
34
52
  allowFontScaling={allowFontScaling}
35
53
  >