Skip to content

Commit 9b28382

Browse files
committed
Merge branch 'master' into release
2 parents e455eb4 + c95d43f commit 9b28382

37 files changed

+391
-175
lines changed

demo/src/screens/MenuStructure.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ export const navigationData = {
114114
{title: 'Modal', tags: 'modal topbar screen', screen: 'unicorn.screens.ModalScreen'},
115115
{title: 'StateScreen', tags: 'empty state screen', screen: 'unicorn.screens.EmptyStateScreen'},
116116
{title: 'TabController', tags: 'tabbar controller native', screen: 'unicorn.components.TabControllerScreen'},
117+
{title: 'TabControllerWithStickyHeader', tags: 'tabbar controller native sticky header', screen: 'unicorn.components.TabControllerWithStickyHeaderScreen'},
117118
{title: 'Timeline', tags: 'timeline', screen: 'unicorn.components.TimelineScreen'},
118119
{
119120
title: 'withScrollEnabler',

demo/src/screens/__tests__/__snapshots__/TextFieldScreen.spec.js.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3521,8 +3521,8 @@ exports[`TextField Screen renders screen 1`] = `
35213521
"marginLeft": 20,
35223522
"minWidth": 66,
35233523
"opacity": 1,
3524-
"paddingHorizontal": 10,
3525-
"paddingVertical": 2,
3524+
"paddingHorizontal": 11,
3525+
"paddingVertical": 3,
35263526
}
35273527
}
35283528
>

demo/src/screens/componentScreens/GridViewScreen.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class GridViewScreen extends Component {
1212
_.map(contacts, contact => ({
1313
imageProps: {source: {uri: contact.thumbnail}, borderRadius: 999, style: {backgroundColor: Colors.grey60}},
1414
title: _.split(contact.name, ' ')[0],
15+
titleLines: 1,
1516
onPress: () => Alert.alert('My name is ' + contact.name)
1617
})))(conversations),
1718
products: _.flow(products => _.take(products, 8),
@@ -174,7 +175,7 @@ class GridViewScreen extends Component {
174175
<GridView items={pairs} numColumns={2}/>
175176
<Text marginV-s5 text60BO>
176177
Dynamic itemSize
177-
<Text text90> (Using maxItemWidth)</Text>
178+
<Text text90> (Using maxItemWidth)</Text>
178179
</Text>
179180
<GridView items={dynamicLayout} maxItemWidth={120}/>
180181
<Text marginV-s5 text60BO>

demo/src/screens/componentScreens/NumberInputScreen.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ const NumberInputScreen = () => {
111111
if (currentData.current?.type === 'valid') {
112112
return currentData.current.number > MINIMUM_PRICE;
113113
}
114+
return false;
114115
}, []);
115116

116117
const isWithinDiscountPercentage = useCallback(() => {
@@ -119,6 +120,7 @@ const NumberInputScreen = () => {
119120
currentData.current.number >= DISCOUNT_PERCENTAGE.min && currentData.current.number <= DISCOUNT_PERCENTAGE.max
120121
);
121122
}
123+
return false;
122124
}, []);
123125

124126
const validate = useMemo((): Incubator.TextFieldProps['validate'] => {
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import React, {Component} from 'react';
2+
import {ScrollView} from 'react-native';
3+
import {View, Text, Card, Image, TabController} from 'react-native-ui-lib';
4+
import _ from 'lodash';
5+
6+
const IMAGE_URL =
7+
'https://images.pexels.com/photos/1598505/pexels-photo-1598505.jpeg?auto=compress&cs=tinysrgb&w=500&dpr=1';
8+
const items = [
9+
{key: 'tab1', label: 'Tab 1'},
10+
{key: 'tab2', label: 'Tab 2'}
11+
];
12+
13+
export default class TabControllerWithStickyHeaderScreen extends Component {
14+
renderHeader = () => {
15+
return (
16+
<View bg-red30 height={280} bottom>
17+
<Image source={{uri: IMAGE_URL}} style={{flex: 1}}/>
18+
</View>
19+
);
20+
};
21+
22+
renderTab1 = () => {
23+
return (
24+
<View bg-green80 paddingT-s5>
25+
{_.times(7, i => {
26+
return (
27+
<Card key={i} height={100} marginB-s5 marginH-s5 center>
28+
<Text text40>item {i}</Text>
29+
</Card>
30+
);
31+
})}
32+
</View>
33+
);
34+
};
35+
36+
renderTab2 = () => {
37+
return (
38+
<View bg-orange40 paddingT-s5>
39+
{_.times(15, i => {
40+
return (
41+
<View key={i} height={100} marginB-s5 marginH-s5 center bg-orange60>
42+
<Text text40> item {i}</Text>
43+
</View>
44+
);
45+
})}
46+
</View>
47+
);
48+
};
49+
50+
render() {
51+
return (
52+
<TabController items={items} nestedInScrollView>
53+
<ScrollView
54+
// stickyHeaderHiddenOnScroll
55+
stickyHeaderIndices={[1]}
56+
>
57+
{this.renderHeader()}
58+
<TabController.TabBar/>
59+
60+
<View flex>
61+
<TabController.TabPage index={0}>{this.renderTab1()}</TabController.TabPage>
62+
<TabController.TabPage index={1}>{this.renderTab2()}</TabController.TabPage>
63+
</View>
64+
</ScrollView>
65+
</TabController>
66+
);
67+
}
68+
}

demo/src/screens/componentScreens/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export function registerScreens(registrar) {
1515
registrar('unicorn.components.CheckboxScreen', () => require('./CheckboxScreen').default);
1616
registrar('unicorn.components.ChipScreen', () => require('./ChipScreen').default);
1717
registrar('unicorn.components.ChipsInputScreen', () => require('./ChipsInputScreen').default);
18-
registrar('unicorn.components.ColorPickerScreen', () => require('./ColorPickerScreen').default);
18+
registrar('unicorn.components.ColorPickerScreen', () => gestureHandlerRootHOC(require('./ColorPickerScreen').default));
1919
registrar('unicorn.components.ColorSwatchScreen', () => require('./ColorSwatchScreen').default);
2020
registrar('unicorn.components.ConnectionStatusBar', () => require('./ConnectionStatusBarScreen').default);
2121
registrar('unicorn.components.DateTimePickerScreen', () => require('./DateTimePickerScreen').default);
@@ -28,7 +28,7 @@ export function registerScreens(registrar) {
2828
registrar('unicorn.components.IconScreen', () => require('./IconScreen').default);
2929
registrar('unicorn.components.ImageScreen', () => require('./ImageScreen').default);
3030
registrar('unicorn.components.GridListScreen', () => require('./GridListScreen').default);
31-
registrar('unicorn.components.GridViewScreen', () => require('./GridViewScreen').default);
31+
registrar('unicorn.components.GridViewScreen', () => gestureHandlerRootHOC(require('./GridViewScreen').default));
3232
registrar('unicorn.components.KeyboardAwareScrollViewScreen', () => require('./KeyboardAwareScrollViewScreen').default);
3333
registrar('unicorn.components.MaskedInputScreen', () => require('./MaskedInputScreen').default);
3434
registrar('unicorn.components.MarqueeScreen', () => require('./MarqueeScreen').default);
@@ -38,12 +38,12 @@ export function registerScreens(registrar) {
3838
registrar('unicorn.components.PanDismissibleScreen', () => require('./PanDismissibleScreen').default);
3939
registrar('unicorn.components.PanListenerScreen', () => require('./PanListenerScreen').default);
4040
registrar('unicorn.components.PanResponderScreen', () => require('./PanResponderScreen').default);
41-
registrar('unicorn.components.PickerScreen', () => require('./PickerScreen').default);
41+
registrar('unicorn.components.PickerScreen', () => gestureHandlerRootHOC(require('./PickerScreen').default));
4242
registrar('unicorn.animations.ProgressBarScreen', () => require('../componentScreens/ProgressBarScreen').default);
4343
registrar('unicorn.components.ProgressiveImageScreen', () => require('./ProgressiveImageScreen').default);
4444
registrar('unicorn.components.RadioButtonScreen', () => require('./RadioButtonScreen').default);
4545
registrar('unicorn.components.ScrollBarScreen', () => require('./ScrollBarScreen').default);
46-
registrar('unicorn.components.SectionsWheelPickerScreen', () => require('./SectionsWheelPickerScreen').default);
46+
registrar('unicorn.components.SectionsWheelPickerScreen', () => gestureHandlerRootHOC(require('./SectionsWheelPickerScreen').default));
4747
registrar('unicorn.components.SegmentedControlScreen', () => require('./SegmentedControlScreen').default);
4848
registrar('unicorn.components.SharedTransitionScreen', () => require('./SharedTransitionScreen').default);
4949
registrar('unicorn.components.SkeletonViewScreen', () => require('./SkeletonViewScreen').default);
@@ -55,6 +55,7 @@ export function registerScreens(registrar) {
5555
registrar('unicorn.components.StepperScreen', () => require('./StepperScreen').default);
5656
registrar('unicorn.components.SwitchScreen', () => require('./SwitchScreen').default);
5757
registrar('unicorn.components.TabControllerScreen', () => require('./TabControllerScreen').default);
58+
registrar('unicorn.components.TabControllerWithStickyHeaderScreen', () => gestureHandlerRootHOC(require('./TabControllerWithStickyHeaderScreen').default));
5859
registrar('unicorn.components.TextFieldScreen', () => require('./TextFieldScreen').default);
5960
registrar('unicorn.components.TextScreen', () => require('./TextScreen').default);
6061
registrar('unicorn.components.ToastsScreen', () => require('./ToastsScreen').default);

demo/src/screens/incubatorScreens/PanViewScreen.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,8 @@ class PanViewScreen extends Component {
146146

147147
render() {
148148
const {showToast, showDialog} = this.state;
149-
const Container = showDialog ? View : GestureHandlerRootView;
150149
return (
151-
<Container style={styles.root}>
150+
<GestureHandlerRootView style={styles.root}>
152151
<View marginL-page height={50} centerV>
153152
<Text text50>New Pan View</Text>
154153
</View>
@@ -164,7 +163,7 @@ class PanViewScreen extends Component {
164163
</ScrollView>
165164
{showToast && this.renderToast()}
166165
{showDialog && this.renderDialog()}
167-
</Container>
166+
</GestureHandlerRootView>
168167
);
169168
}
170169
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,12 @@
106106
"react-dom": "^18.2.0",
107107
"react-native": "0.71.12",
108108
"react-native-fs": "^2.20.0",
109-
"react-native-gesture-handler": "2.9.0",
109+
"react-native-gesture-handler": "2.14.1",
110110
"react-native-haptic-feedback": "^1.11.0",
111111
"react-native-linear-gradient": "2.6.2",
112112
"react-native-mmkv": "2.11.0",
113113
"react-native-navigation": "7.32.1",
114-
"react-native-reanimated": "3.4.0",
114+
"react-native-reanimated": "3.8.1",
115115
"react-native-shimmer-placeholder": "^2.0.6",
116116
"react-native-svg": "^13.7.0",
117117
"react-native-svg-transformer": "1.1.0",

src/components/WheelPicker/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,7 @@ const WheelPicker = <T extends WheelPickerItemValue>(props: WheelPickerProps<T>)
349349

350350
return (
351351
<View testID={testID} bg-$backgroundDefault style={style}>
352+
{separators}
352353
<View row centerH>
353354
<View flexG>
354355
<AnimatedFlatList
@@ -383,7 +384,6 @@ const WheelPicker = <T extends WheelPickerItemValue>(props: WheelPickerProps<T>)
383384
{label && labelContainer}
384385
{fader(FaderPosition.BOTTOM)}
385386
{fader(FaderPosition.TOP)}
386-
{separators}
387387
</View>
388388
);
389389
};

src/components/button/Button.driver.new.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {StyleSheet} from 'react-native';
12
import {useComponentDriver, ComponentProps, usePressableDriver, TextDriver, ImageDriver} from '../../testkit';
23

34
export const ButtonDriver = (props: ComponentProps) => {
@@ -17,9 +18,17 @@ export const ButtonDriver = (props: ComponentProps) => {
1718
return labelDriver;
1819
};
1920

21+
const getLabelStyle = () => {
22+
return labelDriver?.getStyle();
23+
};
24+
2025
const getIcon = () => {
2126
return iconDriver;
2227
};
2328

24-
return {getLabel, getIcon, ...driver};
29+
const getIconStyle = () => {
30+
return StyleSheet.flatten(iconDriver?.getElement().props.style);
31+
};
32+
33+
return {getLabel, getLabelStyle, getIconStyle, getIcon, ...driver};
2534
};

0 commit comments

Comments
 (0)