Skip to content

Commit 56ff14e

Browse files
committed
fix(tabs): text transform fix for android and textTransform support for iOS
1 parent c3cf2af commit 56ff14e

File tree

3 files changed

+52
-24
lines changed

3 files changed

+52
-24
lines changed

src/core/tab-navigation-base/tab-navigation/index-common.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { cssProperty } from '../../';
22
// Types
3-
import { CSSType, Color, Property, booleanConverter } from '@nativescript/core';
3+
import { CSSType, Color, CoreTypes, Property, booleanConverter } from '@nativescript/core';
44
import { TabNavigationBase as TabNavigationBaseBase } from '../tab-navigation-base';
55

66
import { TabNavigation as TabsDefinition } from '.';
7+
import { TabStripItem } from '../tab-strip-item';
78

89
export const traceCategory = 'TabView';
910

@@ -23,6 +24,25 @@ export class TabNavigationBase extends TabNavigationBaseBase implements TabsDefi
2324
// public iOSTabBarItemsAlignment: IOSTabBarItemsAlignment;
2425
public animationEnabled: boolean;
2526
@cssProperty rippleColor: Color;
27+
protected mTextTransform: CoreTypes.TextTransformType = 'none';
28+
29+
protected getItemLabelTextTransform(tabStripItem: TabStripItem): CoreTypes.TextTransformType {
30+
const nestedLabel = tabStripItem.label;
31+
let textTransform: CoreTypes.TextTransformType = null;
32+
if (nestedLabel && nestedLabel.style.textTransform !== 'initial') {
33+
textTransform = nestedLabel.style.textTransform;
34+
} else if (tabStripItem.style.textTransform !== 'initial') {
35+
textTransform = tabStripItem.style.textTransform;
36+
}
37+
38+
return textTransform || this.mTextTransform;
39+
}
40+
public getTabBarTextTransform(): CoreTypes.TextTransformType {
41+
return this.mTextTransform;
42+
}
43+
public getTabBarItemTextTransform(tabStripItem: TabStripItem): CoreTypes.TextTransformType {
44+
return this.getItemLabelTextTransform(tabStripItem);
45+
}
2646
}
2747

2848
export const swipeEnabledProperty = new Property<TabNavigationBase, boolean>({

src/core/tab-navigation-base/tab-navigation/index.android.ts

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ export abstract class TabNavigation<T extends android.view.ViewGroup = any> exte
407407
protected mAndroidViewId = -1;
408408
// value from N core!!!
409409
public _originalBackground: any;
410-
protected mTextTransform: CoreTypes.TextTransformType = 'uppercase';
410+
protected mTextTransform: CoreTypes.TextTransformType = 'none';
411411
protected mSelectedItemColor: Color;
412412
protected mUnSelectedItemColor: Color;
413413
fragments: androidx.fragment.app.Fragment[] = [];
@@ -782,18 +782,6 @@ export abstract class TabNavigation<T extends android.view.ViewGroup = any> exte
782782
});
783783
}
784784

785-
private getItemLabelTextTransform(tabStripItem: TabStripItem): CoreTypes.TextTransformType {
786-
const nestedLabel = tabStripItem.label;
787-
let textTransform: CoreTypes.TextTransformType = null;
788-
if (nestedLabel && nestedLabel.style.textTransform !== 'initial') {
789-
textTransform = nestedLabel.style.textTransform;
790-
} else if (tabStripItem.style.textTransform !== 'initial') {
791-
textTransform = tabStripItem.style.textTransform;
792-
}
793-
794-
return textTransform || this.mTextTransform;
795-
}
796-
797785
protected createTabItemSpec(tabStripItem: TabStripItem): com.nativescript.material.core.TabItemSpec {
798786
const tabItemSpec = new com.nativescript.material.core.TabItemSpec();
799787

@@ -1047,20 +1035,12 @@ export abstract class TabNavigation<T extends android.view.ViewGroup = any> exte
10471035
tabStripItem.nativeViewProtected.setTypeface(value.getAndroidTypeface());
10481036
}
10491037

1050-
public getTabBarItemTextTransform(tabStripItem: TabStripItem): CoreTypes.TextTransformType {
1051-
return this.getItemLabelTextTransform(tabStripItem);
1052-
}
1053-
10541038
public setTabBarItemTextTransform(tabStripItem: TabStripItem, value: CoreTypes.TextTransformType): void {
10551039
const nestedLabel = tabStripItem.label;
10561040
const title = getTransformedText(nestedLabel.text, value);
10571041
tabStripItem.nativeViewProtected.setText(title);
10581042
}
10591043

1060-
public getTabBarTextTransform(): CoreTypes.TextTransformType {
1061-
return this.mTextTransform;
1062-
}
1063-
10641044
public setTabBarTextTransform(value: CoreTypes.TextTransformType): void {
10651045
const items = this.tabStrip && this.tabStrip.items;
10661046
if (items) {

src/core/tab-navigation-base/tab-navigation/index.ios.ts

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Color, Device, Font, Frame, IOSHelper, ImageSource, Property, Utils, View, ViewBase, booleanConverter } from '@nativescript/core';
1+
import { Color, CoreTypes, Device, Font, Frame, IOSHelper, ImageSource, Property, Utils, View, ViewBase, booleanConverter, getTransformedText } from '@nativescript/core';
22
import { TabContentItem } from '../tab-content-item';
33
import { getIconSpecSize, itemsProperty, selectedIndexProperty, tabStripProperty } from '../tab-navigation-base';
44
import { TabStrip } from '../tab-strip';
@@ -623,6 +623,9 @@ export abstract class TabNavigation<
623623
}
624624

625625
if (!this.tabStrip._hasTitle) {
626+
// TEXT-TRANSFORM
627+
const textTransform = this.getItemLabelTextTransform(item);
628+
title = getTransformedText(title, textTransform);
626629
this.tabStrip._hasTitle = !!title;
627630
}
628631
}
@@ -737,7 +740,32 @@ export abstract class TabNavigation<
737740
if (!nativeView) {
738741
return;
739742
}
740-
nativeView.title = value;
743+
const textTransform = this.getItemLabelTextTransform(tabStripItem);
744+
nativeView.title = getTransformedText(value, textTransform);
745+
}
746+
747+
public setTabBarItemTextTransform(tabStripItem: TabStripItem, value: CoreTypes.TextTransformType): void {
748+
const nativeView = tabStripItem.nativeView;
749+
if (!nativeView) {
750+
return;
751+
}
752+
const nestedLabel = tabStripItem.label;
753+
const title = getTransformedText(nestedLabel.text, value);
754+
nativeView.title = title;
755+
}
756+
757+
public setTabBarTextTransform(value: CoreTypes.TextTransformType): void {
758+
const items = this.tabStrip && this.tabStrip.items;
759+
if (items) {
760+
items.forEach((tabStripItem) => {
761+
if (tabStripItem.label && tabStripItem.nativeViewProtected) {
762+
const nestedLabel = tabStripItem.label;
763+
const title = getTransformedText(nestedLabel.text, value);
764+
tabStripItem.nativeViewProtected.title = title;
765+
}
766+
});
767+
}
768+
this.mTextTransform = value;
741769
}
742770

743771
private equalUIColor(first: UIColor, second: UIColor): boolean {

0 commit comments

Comments
 (0)