-
Notifications
You must be signed in to change notification settings - Fork 95
Expand file tree
/
Copy pathtypes.js
More file actions
154 lines (143 loc) · 3.34 KB
/
types.js
File metadata and controls
154 lines (143 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/**
* @flow
*/
import type {ColorValue} from 'react-native/Libraries/StyleSheet/StyleSheetTypes';
import type {SyntheticEvent} from 'react-native/Libraries/Types/CoreEventTypes';
import type {ViewProps} from 'react-native/Libraries/Components/View/ViewPropTypes';
import type {ViewStyleProp} from 'react-native/Libraries/StyleSheet/StyleSheet';
export type Event = SyntheticEvent<
$ReadOnly<{|
value: string,
selectedSegmentIndex: number,
|}>,
>;
export type ViewStyle = ViewStyleProp;
export type SFSymbolWeight =
| 'ultraLight'
| 'thin'
| 'light'
| 'regular'
| 'medium'
| 'semibold'
| 'bold'
| 'heavy'
| 'black';
/**
* Represents an SF Symbol configuration (iOS 13+ only).
*/
export type SFSymbol = $ReadOnly<{|
/**
* The name of the SF Symbol (e.g., 'star.fill', 'heart', 'gear').
*/
systemImage: string,
/**
* The point size of the symbol. Default is 19.
*/
fontSize?: number,
/**
* The weight of the symbol. Default is 'regular'.
*/
weight?: SFSymbolWeight,
|}>;
export type SegmentValue = string | number | SFSymbol;
export type FontStyle = $ReadOnly<{|
/**
* Font Color of Segmented Control
*/
color?: ?ColorValue,
/**
* Font Size of Segmented Control
*/
fontSize?: number,
/**
* Font Family of the Segmented Control
*/
fontFamily?: string,
/**
* Font Weight of the Segmented Control
*/
fontWeight?:
| 'normal'
| 'bold'
| '100'
| '200'
| '300'
| '400'
| '500'
| '600'
| '700'
| '800'
| '900',
|}>;
export type SegmentedControlProps = $ReadOnly<{|
...ViewProps,
/**
* The labels for the control's segment buttons, in order.
*/
values: $ReadOnlyArray<SegmentValue>,
/**
* The index in `props.values` of the segment to be (pre)selected.
*/
selectedIndex?: ?number,
/**
* Callback that is called when the user taps a segment;
* passes the segment's value as an argument
*/
onValueChange?: ?(value: SegmentValue) => mixed,
/**
* Callback that is called when the user taps a segment;
* passes the event as an argument
*/
onChange?: ?(event: Event) => mixed,
/**
* If false the user won't be able to interact with the control.
* Default value is true.
*/
enabled?: boolean,
/**
* Accent color of the control.
*/
tintColor?: string,
/**
* (iOS 13+ only)
* Background color of the control.
*/
backgroundColor?: string,
/**
* If true, then selecting a segment won't persist visually.
* The `onValueChange` callback will still work as expected.
*/
momentary?: ?boolean,
/**
* (iOS 13+ only, Android, Web)
* Overrides the control's appearance irrespective of the OS theme
*/
appearance?: 'dark' | 'light',
/**
* (iOS 13+ only, Android, Web)
* fontStyle for segmented control.
*/
fontStyle?: FontStyle,
/**
* (iOS 13+ only)
* activeFontStyle for selected segment.
* it will override fontStyle for the selected segment
*/
activeFontStyle?: FontStyle,
/**
* Touchable style properties for Segmented Control Tab
*/
tabStyle?: ViewStyle,
/**
* array testID to each segment button
*/
testIDS: $ReadOnlyArray<string>,
/**
* Style properties for the slider component (Animated.View)
*/
sliderStyle?: ViewStyle,
/**
* Accessibility hint separator text
*/
accessibilityHintSeperator?: string,
|}>;