@draftbit/core 44.1.13-9a8dff.0 → 44.1.13

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.
Files changed (188) hide show
  1. package/lib/commonjs/components/DeprecatedButton.js +4 -19
  2. package/lib/commonjs/components/DeprecatedButton.js.map +1 -1
  3. package/lib/commonjs/components/DeprecatedCardWrapper.js +2 -14
  4. package/lib/commonjs/components/DeprecatedCardWrapper.js.map +1 -1
  5. package/lib/commonjs/components/Justification.js +0 -3
  6. package/lib/commonjs/components/ResizeMode.js +0 -3
  7. package/lib/commonjs/mappings/RadioButtonGroup.js.map +1 -1
  8. package/lib/commonjs/mappings/RadioButtonRow.js.map +1 -1
  9. package/lib/module/components/Carousel.js +5 -20
  10. package/lib/module/components/Carousel.js.map +1 -1
  11. package/lib/module/components/Justification.js +1 -1
  12. package/lib/module/components/ResizeMode.js +1 -1
  13. package/lib/module/mappings/CheckboxRow.js.map +1 -1
  14. package/package.json +2 -2
  15. package/src/Provider.js +0 -9
  16. package/src/components/Accordion/AccordionGroup.js +0 -44
  17. package/src/components/Accordion/AccordionItem.js +0 -32
  18. package/src/components/Accordion/index.js +0 -2
  19. package/src/components/ActionSheet/ActionSheet.js +0 -45
  20. package/src/components/ActionSheet/ActionSheetCancel.js +0 -6
  21. package/src/components/ActionSheet/ActionSheetItem.js +0 -30
  22. package/src/components/ActionSheet/index.js +0 -3
  23. package/src/components/AnimatedCircularProgress.js +0 -43
  24. package/src/components/AspectRatio.js +0 -18
  25. package/src/components/AvatarEdit.js +0 -30
  26. package/src/components/Banner.js +0 -109
  27. package/src/components/Button.js +0 -112
  28. package/src/components/Card.js +0 -57
  29. package/src/components/CardBlock.js +0 -54
  30. package/src/components/CardContainer.js +0 -69
  31. package/src/components/CardContainerRating.js +0 -79
  32. package/src/components/CardContainerShortImage.js +0 -33
  33. package/src/components/CardInline.js +0 -36
  34. package/src/components/Carousel.js +0 -66
  35. package/src/components/Checkbox/Checkbox.js +0 -63
  36. package/src/components/Checkbox/CheckboxGroup.js +0 -21
  37. package/src/components/Checkbox/CheckboxGroupRow.js +0 -77
  38. package/src/components/Checkbox/CheckboxRow.js +0 -78
  39. package/src/components/Checkbox/context.js +0 -14
  40. package/src/components/Checkbox/index.js +0 -3
  41. package/src/components/CircleImage.js +0 -8
  42. package/src/components/CircularProgress.js +0 -78
  43. package/src/components/Config.js +0 -63
  44. package/src/components/Container.js +0 -43
  45. package/src/components/DatePicker/DatePicker.js +0 -368
  46. package/src/components/DatePicker/DatePickerComponent.js +0 -13
  47. package/src/components/DatePicker/DatePickerComponent.web.js +0 -30
  48. package/src/components/DatePicker/DatePickerComponentType.js +0 -1
  49. package/src/components/DeprecatedButton.js +0 -95
  50. package/src/components/DeprecatedCardWrapper.js +0 -18
  51. package/src/components/DeprecatedFAB.js +0 -115
  52. package/src/components/Divider.js +0 -13
  53. package/src/components/Elevation.js +0 -20
  54. package/src/components/FAB.js +0 -46
  55. package/src/components/FieldSearchBarFull.js +0 -53
  56. package/src/components/FormRow.js +0 -19
  57. package/src/components/Header.js +0 -44
  58. package/src/components/HeaderLarge.js +0 -7
  59. package/src/components/HeaderMedium.js +0 -7
  60. package/src/components/HeaderOverline.js +0 -7
  61. package/src/components/IconButton.js +0 -35
  62. package/src/components/Image.js +0 -47
  63. package/src/components/Justification.js +0 -1
  64. package/src/components/Layout.js +0 -50
  65. package/src/components/NumberInput.js +0 -49
  66. package/src/components/Picker/Picker.js +0 -268
  67. package/src/components/Picker/PickerComponent.android.js +0 -18
  68. package/src/components/Picker/PickerComponent.ios.js +0 -34
  69. package/src/components/Picker/PickerComponent.web.js +0 -18
  70. package/src/components/Portal/Portal.js +0 -35
  71. package/src/components/Portal/PortalConsumer.js +0 -28
  72. package/src/components/Portal/PortalHost.js +0 -105
  73. package/src/components/Portal/PortalManager.js +0 -29
  74. package/src/components/ProgressBar.js +0 -118
  75. package/src/components/ProgressCircle.js +0 -13
  76. package/src/components/ProgressIndicator.js +0 -27
  77. package/src/components/RadioButton/RadioButton.js +0 -17
  78. package/src/components/RadioButton/RadioButtonFieldGroup.js +0 -17
  79. package/src/components/RadioButton/RadioButtonGroup.js +0 -43
  80. package/src/components/RadioButton/RadioButtonRow.js +0 -76
  81. package/src/components/RadioButton/context.js +0 -14
  82. package/src/components/RadioButton/index.js +0 -4
  83. package/src/components/ResizeMode.js +0 -1
  84. package/src/components/Row.js +0 -48
  85. package/src/components/RowBodyIcon.js +0 -8
  86. package/src/components/RowHeadlineImageCaption.js +0 -12
  87. package/src/components/RowHeadlineImageIcon.js +0 -14
  88. package/src/components/ScreenContainer.js +0 -34
  89. package/src/components/Slider.js +0 -63
  90. package/src/components/StarRating.js +0 -50
  91. package/src/components/StepIndicator.js +0 -346
  92. package/src/components/Stepper.js +0 -39
  93. package/src/components/Surface.js +0 -32
  94. package/src/components/Swiper/Swiper.js +0 -29
  95. package/src/components/Swiper/SwiperItem.js +0 -9
  96. package/src/components/Swiper/index.js +0 -2
  97. package/src/components/Switch.js +0 -56
  98. package/src/components/Text.js +0 -28
  99. package/src/components/TextField.js +0 -420
  100. package/src/components/ToggleButton.js +0 -39
  101. package/src/components/Touchable.js +0 -12
  102. package/src/components/Touchable.web.js +0 -2
  103. package/src/components/Typography.js +0 -36
  104. package/src/components/useAuthState.js +0 -31
  105. package/src/constants.js +0 -10
  106. package/src/hooks.js +0 -12
  107. package/src/index.js +0 -52
  108. package/src/interfaces/Icon.js +0 -8
  109. package/src/mappings/Accordion.js +0 -41
  110. package/src/mappings/AccordionItem.js +0 -16
  111. package/src/mappings/ActionSheet.js +0 -13
  112. package/src/mappings/ActionSheetCancel.js +0 -19
  113. package/src/mappings/ActionSheetItem.js +0 -23
  114. package/src/mappings/ActivityIndicator.js +0 -53
  115. package/src/mappings/AudioPlayer.js +0 -20
  116. package/src/mappings/AvatarEdit.js +0 -37
  117. package/src/mappings/Banner.js +0 -32
  118. package/src/mappings/BlurView.js +0 -41
  119. package/src/mappings/Button.js +0 -56
  120. package/src/mappings/Card.js +0 -52
  121. package/src/mappings/CardBlock.js +0 -122
  122. package/src/mappings/CardContainer.js +0 -102
  123. package/src/mappings/CardContainerRating.js +0 -124
  124. package/src/mappings/CardContainerShortImage.js +0 -118
  125. package/src/mappings/CardInline.js +0 -51
  126. package/src/mappings/Carousel.js +0 -18
  127. package/src/mappings/Checkbox.js +0 -45
  128. package/src/mappings/CheckboxGroup.js +0 -25
  129. package/src/mappings/CheckboxRow.js +0 -56
  130. package/src/mappings/CircleImage.js +0 -24
  131. package/src/mappings/Container.js +0 -29
  132. package/src/mappings/CustomCode.js +0 -8
  133. package/src/mappings/DatePicker.js +0 -146
  134. package/src/mappings/Divider.js +0 -26
  135. package/src/mappings/FAB.js +0 -36
  136. package/src/mappings/Fetch.js +0 -12
  137. package/src/mappings/FieldSearchBarFull.js +0 -49
  138. package/src/mappings/FlatList.js +0 -19
  139. package/src/mappings/HeaderLarge.js +0 -28
  140. package/src/mappings/HeaderMedium.js +0 -54
  141. package/src/mappings/HeaderOverline.js +0 -54
  142. package/src/mappings/Icon.js +0 -25
  143. package/src/mappings/IconButton.js +0 -30
  144. package/src/mappings/Image.js +0 -15
  145. package/src/mappings/ImageBackground.js +0 -28
  146. package/src/mappings/KeyboardAvoidingView.js +0 -40
  147. package/src/mappings/KeyboardAwareScrollView.js +0 -49
  148. package/src/mappings/Layout.js +0 -195
  149. package/src/mappings/LinearGradient.js +0 -77
  150. package/src/mappings/MapCallout.js +0 -21
  151. package/src/mappings/MapMarker.js +0 -47
  152. package/src/mappings/MapView.js +0 -138
  153. package/src/mappings/Modal.js +0 -41
  154. package/src/mappings/Picker.js +0 -139
  155. package/src/mappings/ProgressBar.js +0 -100
  156. package/src/mappings/ProgressCircle.js +0 -108
  157. package/src/mappings/ProgressIndicator.js +0 -180
  158. package/src/mappings/RadioButton.js +0 -50
  159. package/src/mappings/RadioButtonGroup.js +0 -16
  160. package/src/mappings/RadioButtonRow.js +0 -37
  161. package/src/mappings/RowBodyIcon.js +0 -75
  162. package/src/mappings/RowHeadlineImageCaption.js +0 -167
  163. package/src/mappings/RowHeadlineImageIcon.js +0 -99
  164. package/src/mappings/SafeAreaView.js +0 -33
  165. package/src/mappings/ScrollView.js +0 -30
  166. package/src/mappings/Slider.js +0 -59
  167. package/src/mappings/StarRating.js +0 -42
  168. package/src/mappings/Stepper.js +0 -28
  169. package/src/mappings/Surface.js +0 -13
  170. package/src/mappings/Swiper.js +0 -60
  171. package/src/mappings/SwiperItem.js +0 -8
  172. package/src/mappings/Switch.js +0 -75
  173. package/src/mappings/Text.js +0 -232
  174. package/src/mappings/TextArea.js +0 -52
  175. package/src/mappings/TextField.js +0 -158
  176. package/src/mappings/TextInput.js +0 -208
  177. package/src/mappings/ToggleButton.js +0 -45
  178. package/src/mappings/Touchable.js +0 -12
  179. package/src/mappings/Video.js +0 -74
  180. package/src/mappings/View.js +0 -206
  181. package/src/mappings/WebView.js +0 -18
  182. package/src/styles/DarkTheme.js +0 -26
  183. package/src/styles/DefaultTheme.js +0 -111
  184. package/src/styles/fonts.js +0 -62
  185. package/src/styles/overlay.js +0 -60
  186. package/src/styles/shadow.js +0 -51
  187. package/src/theming.js +0 -3
  188. package/src/utilities.js +0 -102
@@ -1,56 +0,0 @@
1
- import * as React from "react";
2
- import { Switch as NativeSwitch, } from "react-native";
3
- import { withTheme } from "../theming";
4
- import FormRow from "./FormRow";
5
- import { RowDirection } from "@draftbit/types";
6
- import { usePrevious } from "../hooks";
7
- function Switch({ value, defaultValue, disabled, onValueChange, activeTrackColor, inactiveTrackColor, activeThumbColor, inactiveThumbColor, theme, style, ...rest }) {
8
- const activeTrackThemeColor = activeTrackColor || theme.colors.primary;
9
- const inactiveTrackThemeColor = inactiveTrackColor || "#EEE";
10
- const activeThumbThemeColor = activeThumbColor || "#FFF";
11
- const inactiveThumbThemeColor = inactiveThumbColor || "#FFF";
12
- const [checked, setChecked] = React.useState(value || defaultValue);
13
- React.useEffect(() => {
14
- if (value != null && value !== checked) {
15
- setChecked(value);
16
- }
17
- }, [value, checked]);
18
- // This special logic is to handle weird APIs like Airtable that return
19
- // true or undefined for a boolean
20
- const previousDefaultValue = usePrevious(defaultValue);
21
- React.useEffect(() => {
22
- if (defaultValue !== previousDefaultValue) {
23
- setChecked(Boolean(defaultValue));
24
- }
25
- }, [defaultValue, previousDefaultValue]);
26
- return (React.createElement(NativeSwitch, { value: checked, disabled: disabled, trackColor: {
27
- false: inactiveTrackThemeColor,
28
- true: activeTrackThemeColor,
29
- }, thumbColor: value ? activeThumbThemeColor : inactiveThumbThemeColor,
30
- // @ts-ignore react-native-web only
31
- activeThumbColor: activeThumbThemeColor, ios_backgroundColor: inactiveTrackThemeColor, style: style, onValueChange: (bool) => {
32
- setChecked(bool);
33
- onValueChange && onValueChange(bool);
34
- }, ...rest }));
35
- }
36
- function Row({ label = "Label", direction = RowDirection.Row, style, value, defaultValue, disabled, onValueChange, activeTrackColor, inactiveTrackColor, activeThumbColor, inactiveThumbColor, theme, ...rest }) {
37
- const [checked, setChecked] = React.useState(value != null ? value : defaultValue);
38
- React.useEffect(() => {
39
- if (value != null) {
40
- setChecked(value);
41
- }
42
- }, [value]);
43
- React.useEffect(() => {
44
- if (defaultValue != null) {
45
- setChecked(defaultValue);
46
- }
47
- }, [defaultValue]);
48
- return (React.createElement(FormRow, { disabled: disabled, onPress: () => {
49
- setChecked(!checked);
50
- onValueChange && onValueChange(!checked);
51
- }, label: label, direction: direction, style: style, ...rest },
52
- React.createElement(Switch, { theme: theme, value: checked, disabled: disabled, onValueChange: onValueChange, activeTrackColor: activeTrackColor, inactiveTrackColor: inactiveTrackColor, activeThumbColor: activeThumbColor, inactiveThumbColor: inactiveThumbColor })));
53
- }
54
- const SwitchRow = withTheme(Row);
55
- export { SwitchRow };
56
- export default withTheme(Switch);
@@ -1,28 +0,0 @@
1
- import * as React from "react";
2
- import { Text as NativeText, I18nManager } from "react-native";
3
- import { withTheme } from "../theming";
4
- class Text extends React.Component {
5
- _root;
6
- setNativeProps(args) {
7
- return this._root && this._root.setNativeProps(args);
8
- }
9
- render() {
10
- const { style, ...rest } = this.props;
11
- const writingDirection = I18nManager.isRTL ? "rtl" : "ltr";
12
- return (React.createElement(NativeText, { ...rest, ref: (c) => {
13
- this._root = c;
14
- }, style: [
15
- {
16
- textAlign: "left",
17
- writingDirection,
18
- },
19
- style,
20
- ] }));
21
- }
22
- }
23
- export const BaseLink = ({ style, theme, title, ...props }) => {
24
- return (React.createElement(Text, { hitSlop: 8, style: [{ color: theme.colors.primary }, style], theme: theme, ...props }, title));
25
- };
26
- const Link = withTheme(BaseLink);
27
- export { Link };
28
- export default withTheme(Text);
@@ -1,420 +0,0 @@
1
- import * as React from "react";
2
- import { View, Animated, TextInput as NativeTextInput, StyleSheet, Text, I18nManager, } from "react-native";
3
- import { withTheme } from "../theming";
4
- import { applyStyles, extractStyles } from "../utilities";
5
- const AnimatedText = Animated.createAnimatedComponent(Text);
6
- const FOCUS_ANIMATION_DURATION = 150;
7
- const BLUR_ANIMATION_DURATION = 180;
8
- const ICON_SIZE = 24;
9
- class TextField extends React.Component {
10
- static getDerivedStateFromProps(nextProps, prevState) {
11
- return {
12
- value: typeof nextProps.value !== "undefined"
13
- ? nextProps.value
14
- : prevState.value,
15
- };
16
- }
17
- state = {
18
- labeled: new Animated.Value(this.props.value || this.props.error ? 0 : 1),
19
- focused: false,
20
- placeholder: this.props.error ? this.props.placeholder : "",
21
- labelLayout: {
22
- measured: false,
23
- width: 0,
24
- },
25
- };
26
- componentDidMount() {
27
- if (this.props.defaultValue) {
28
- this._handleChangeText(this.props.defaultValue);
29
- }
30
- if (this.props.placeholder) {
31
- this._minmizeLabel();
32
- }
33
- }
34
- componentDidUpdate(prevProps, prevState) {
35
- if (prevState.focused !== this.state.focused ||
36
- prevState.value !== this.state.value) {
37
- // The label should be minimized if the text input is focused, or has text
38
- // In minimized mode, the label moves up and becomes small
39
- if (this.state.value ||
40
- this.state.focused ||
41
- this.props.error ||
42
- this.props.placeholder) {
43
- this._minmizeLabel();
44
- }
45
- else {
46
- this._restoreLabel();
47
- }
48
- }
49
- if (prevState.focused !== this.state.focused ||
50
- prevProps.label !== this.props.label) {
51
- // Show placeholder text only if the input is focused, or has error, or there's no label
52
- // We don't show placeholder if there's a label because the label acts as placeholder
53
- // When focused, the label moves up, so we can show a placeholder
54
- if (this.state.focused || this.props.error || !this.props.label) {
55
- this._showPlaceholder();
56
- }
57
- else {
58
- this._hidePlaceholder();
59
- }
60
- }
61
- }
62
- _timer = setTimeout(() => { }, 0);
63
- componentWillUnmount() {
64
- clearTimeout(this._timer);
65
- }
66
- _showPlaceholder = () => {
67
- clearTimeout(this._timer);
68
- // Set the placeholder in a delay to offset the label animation
69
- // If we show it immediately, they'll overlap and look ugly
70
- this._timer = setTimeout(() => this.setState({
71
- placeholder: this.props.placeholder,
72
- }), 50);
73
- };
74
- _hidePlaceholder = () => this.setState({
75
- placeholder: "",
76
- });
77
- _restoreLabel = () => Animated.timing(this.state.labeled, {
78
- toValue: 1,
79
- duration: FOCUS_ANIMATION_DURATION,
80
- useNativeDriver: true,
81
- }).start();
82
- _minmizeLabel = () => Animated.timing(this.state.labeled, {
83
- toValue: 0,
84
- duration: BLUR_ANIMATION_DURATION,
85
- useNativeDriver: true,
86
- }).start();
87
- _handleFocus = () => {
88
- if (this.props.disabled) {
89
- return;
90
- }
91
- this.setState({ focused: true });
92
- };
93
- _handleBlur = () => {
94
- if (this.props.disabled) {
95
- return;
96
- }
97
- this.setState({ focused: false });
98
- };
99
- _handleChangeText = (value) => {
100
- if (this.props.disabled) {
101
- return;
102
- }
103
- if (typeof value === "string") {
104
- this.setState({ value });
105
- this.props.onChangeText && this.props.onChangeText(value);
106
- }
107
- else {
108
- this.setState({ value: value.nativeEvent.text });
109
- this.props.onChangeText &&
110
- this.props.onChangeText(value.nativeEvent.text);
111
- }
112
- };
113
- toggleFocus() {
114
- this.setState((prevState) => ({ focused: !prevState.focused }));
115
- }
116
- _root = undefined;
117
- /**
118
- * @internal
119
- */
120
- setNativeProps(args) {
121
- return this._root && this._root.setNativeProps(args);
122
- }
123
- isFocused() {
124
- return this._root && this._root.isFocused();
125
- }
126
- clear() {
127
- return this._root && this._root.clear();
128
- }
129
- focus() {
130
- return this._root && this._root.focus();
131
- }
132
- blur() {
133
- return this._root && this._root.blur();
134
- }
135
- render() {
136
- const { Icon, type = "underline", disabled = false, label, error = false, leftIconName, leftIconMode, rightIconName, assistiveText, underlineColor: underlineColorProp, multiline = false, numberOfLines = 4, style, theme: { colors, typography, roundness, disabledOpacity }, render = (props) => React.createElement(NativeTextInput, { ...props }), ...rest } = this.props;
137
- const MINIMIZED_LABEL_Y_OFFSET = -(typography.caption.lineHeight + 4);
138
- const OUTLINE_MINIMIZED_LABEL_Y_OFFSET = -(16 * 0.5 + 4);
139
- const MAXIMIZED_LABEL_FONT_SIZE = typography.subtitle1.fontSize;
140
- const MINIMIZED_LABEL_FONT_SIZE = typography.caption.fontSize;
141
- const hasActiveOutline = this.state.focused || error;
142
- let inputTextColor, activeColor, underlineColor, borderColor, placeholderColor, containerStyle, backgroundColor, inputStyle;
143
- inputTextColor = colors.strong;
144
- if (disabled) {
145
- activeColor = colors.light;
146
- placeholderColor = colors.light;
147
- borderColor = "transparent";
148
- underlineColor = "transparent";
149
- backgroundColor = colors.divider;
150
- }
151
- else {
152
- activeColor = error ? colors.error : colors.primary;
153
- placeholderColor = borderColor = colors.light;
154
- underlineColor = underlineColorProp;
155
- backgroundColor = colors.background;
156
- }
157
- if (rest.placeholderTextColor) {
158
- placeholderColor = rest.placeholderTextColor;
159
- }
160
- const { lineHeight, ...subtitle1 } = typography.subtitle1;
161
- inputStyle = {
162
- paddingVertical: 0,
163
- color: inputTextColor,
164
- paddingLeft: leftIconName && leftIconMode === "inset"
165
- ? ICON_SIZE + 12 + (type === "solid" ? 16 : 0)
166
- : 0,
167
- paddingRight: rightIconName ? ICON_SIZE + 16 + 4 : 12,
168
- ...subtitle1,
169
- };
170
- if (!multiline) {
171
- inputStyle.height = lineHeight;
172
- }
173
- let assistiveTextLeftMargin;
174
- if (type === "underline") {
175
- containerStyle = {
176
- borderTopLeftRadius: roundness,
177
- borderTopRightRadius: roundness,
178
- paddingBottom: 12,
179
- marginTop: 16,
180
- };
181
- if (leftIconName && leftIconMode === "outset") {
182
- assistiveTextLeftMargin = ICON_SIZE + 8;
183
- }
184
- else {
185
- assistiveTextLeftMargin = 0;
186
- }
187
- }
188
- else {
189
- containerStyle = {
190
- borderRadius: roundness,
191
- borderColor: hasActiveOutline ? activeColor : borderColor,
192
- borderWidth: 1,
193
- paddingTop: label ? 16 * 1.5 : 16,
194
- paddingBottom: label ? 16 * 0.5 : 16,
195
- opacity: disabled ? disabledOpacity : 1,
196
- backgroundColor,
197
- };
198
- if (leftIconName && leftIconMode === "inset") {
199
- assistiveTextLeftMargin = 16 + 4;
200
- }
201
- else if (leftIconName && leftIconMode === "outset") {
202
- assistiveTextLeftMargin = ICON_SIZE + 8 + 12;
203
- }
204
- else {
205
- assistiveTextLeftMargin = 12;
206
- }
207
- inputStyle.paddingHorizontal = 12;
208
- }
209
- if (leftIconName && leftIconMode === "outset") {
210
- containerStyle.marginLeft = ICON_SIZE + 8;
211
- }
212
- let leftIconColor;
213
- if (error) {
214
- leftIconColor = colors.error;
215
- }
216
- else if (this.state.focused) {
217
- leftIconColor = colors.primary;
218
- }
219
- else {
220
- leftIconColor = colors.light;
221
- }
222
- const leftIconProps = {
223
- size: 24,
224
- color: leftIconColor,
225
- name: leftIconName || "",
226
- };
227
- const leftIconStyle = {
228
- position: "absolute",
229
- marginTop: type === "solid"
230
- ? MINIMIZED_LABEL_FONT_SIZE + 4
231
- : leftIconMode === "outset"
232
- ? 16
233
- : 0,
234
- marginLeft: leftIconMode === "inset" && type === "solid" ? 16 : 0,
235
- };
236
- const labelStyle = {
237
- ...typography.subtitle1,
238
- top: type === "solid" ? 16 : 0,
239
- left: leftIconName && leftIconMode === "inset"
240
- ? ICON_SIZE + (type === "solid" ? 16 : 12)
241
- : 0,
242
- transform: [
243
- {
244
- // Move label to top
245
- translateY: this.state.labeled.interpolate({
246
- inputRange: [0, 1],
247
- outputRange: [
248
- type === "solid"
249
- ? OUTLINE_MINIMIZED_LABEL_Y_OFFSET
250
- : MINIMIZED_LABEL_Y_OFFSET,
251
- 0,
252
- ],
253
- }),
254
- },
255
- {
256
- // Make label smaller
257
- scale: this.state.labeled.interpolate({
258
- inputRange: [0, 1],
259
- outputRange: [
260
- MINIMIZED_LABEL_FONT_SIZE / MAXIMIZED_LABEL_FONT_SIZE,
261
- 1,
262
- ],
263
- }),
264
- },
265
- {
266
- // Offset label scale since RN doesn't support transform origin
267
- translateX: this.state.labeled.interpolate({
268
- inputRange: [0, 1],
269
- outputRange: [
270
- -(1 - MINIMIZED_LABEL_FONT_SIZE / MAXIMIZED_LABEL_FONT_SIZE) *
271
- (this.state.labelLayout.width / 2),
272
- 0,
273
- ],
274
- }),
275
- },
276
- ],
277
- };
278
- const { textStyles } = extractStyles(style);
279
- const inputStyles = applyStyles([
280
- styles.input,
281
- inputStyle,
282
- type === "solid" ? { marginHorizontal: 12 } : {},
283
- ], textStyles);
284
- const { backgroundColor: bgColor, padding, paddingTop, paddingBottom, paddingLeft, paddingRight, borderRadius, borderWidth, borderTopWidth, borderRightWidth, borderBottomWidth, borderLeftWidth, borderColor: borderCol, ...styleProp } = StyleSheet.flatten(style || {});
285
- return (React.createElement(View, { style: [styles.container, styleProp] },
286
- leftIconName && leftIconMode === "outset" ? (React.createElement(Icon, { ...leftIconProps, style: leftIconStyle })) : null,
287
- React.createElement(View, { style: applyStyles([containerStyle], {
288
- height: style?.height,
289
- backgroundColor: bgColor,
290
- padding,
291
- paddingTop,
292
- paddingBottom,
293
- paddingLeft,
294
- paddingRight,
295
- borderRadius,
296
- borderWidth,
297
- borderTopWidth,
298
- borderRightWidth,
299
- borderBottomWidth,
300
- borderLeftWidth,
301
- borderColor: borderCol,
302
- }) },
303
- type === "underline" ? (
304
- // When type === 'flat', render an underline
305
- React.createElement(Animated.View, { style: [
306
- styles.underline,
307
- {
308
- backgroundColor: bgColor ||
309
- (error
310
- ? colors.error
311
- : this.state.focused
312
- ? activeColor
313
- : underlineColor),
314
- // Underlines is thinner when input is not focused
315
- transform: [{ scaleY: this.state.focused ? 1 : 0.5 }],
316
- },
317
- ] })) : null,
318
- label ? (
319
- // Position colored placeholder and gray placeholder on top of each other and crossfade them
320
- // This gives the effect of animating the color, but allows us to use native driver
321
- React.createElement(View, { pointerEvents: "none", style: [
322
- StyleSheet.absoluteFill,
323
- {
324
- opacity:
325
- // Hide the label in minimized state until we measure its width
326
- this.state.value || this.state.focused
327
- ? this.state.labelLayout.measured
328
- ? 1
329
- : 0
330
- : 1,
331
- },
332
- ] },
333
- React.createElement(AnimatedText, { onLayout: (e) => this.setState({
334
- labelLayout: {
335
- width: e.nativeEvent.layout.width,
336
- measured: true,
337
- },
338
- }), style: [
339
- styles.placeholder,
340
- type === "solid" ? { paddingHorizontal: 12 } : {},
341
- labelStyle,
342
- {
343
- color: placeholderColor,
344
- opacity: this.state.labeled.interpolate({
345
- inputRange: [0, 1],
346
- outputRange: [hasActiveOutline ? 1 : 0, 0],
347
- }),
348
- },
349
- ], numberOfLines: 1 }, label),
350
- React.createElement(AnimatedText, { style: [
351
- styles.placeholder,
352
- type === "solid" ? { paddingHorizontal: 12 } : {},
353
- labelStyle,
354
- {
355
- color: placeholderColor,
356
- opacity: hasActiveOutline ? this.state.labeled : 1,
357
- },
358
- ], numberOfLines: 1 }, label))) : null,
359
- leftIconName && leftIconMode === "inset" ? (React.createElement(View, { style: {
360
- justifyContent: type === "solid" ? "center" : undefined,
361
- } },
362
- React.createElement(Icon, { ...leftIconProps, style: leftIconStyle }))) : null,
363
- render({
364
- ref: (c) => {
365
- this._root = c;
366
- },
367
- onChange: this._handleChangeText,
368
- placeholder: label
369
- ? this.state.placeholder
370
- : this.props.placeholder,
371
- placeholderTextColor: placeholderColor,
372
- editable: !disabled,
373
- selectionColor: activeColor,
374
- multiline,
375
- numberOfLines,
376
- onFocus: this._handleFocus,
377
- onBlur: this._handleBlur,
378
- underlineColorAndroid: "transparent",
379
- style: inputStyles,
380
- ...rest,
381
- value: this.state.value,
382
- })),
383
- rightIconName ? (React.createElement(Icon, { name: rightIconName, size: ICON_SIZE, color: colors.light, style: {
384
- position: "absolute",
385
- right: 16,
386
- marginTop: type === "solid" ? MINIMIZED_LABEL_FONT_SIZE + 4 : 16,
387
- } })) : null,
388
- assistiveText ? (React.createElement(Text, { style: [
389
- {
390
- color: error ? colors.error : colors.light,
391
- marginTop: 8,
392
- marginLeft: assistiveTextLeftMargin,
393
- },
394
- ] }, assistiveText)) : null));
395
- }
396
- }
397
- export default withTheme(TextField);
398
- const styles = StyleSheet.create({
399
- container: {
400
- alignSelf: "stretch",
401
- },
402
- placeholder: {
403
- position: "absolute",
404
- left: 0,
405
- },
406
- underline: {
407
- position: "absolute",
408
- left: 0,
409
- right: 0,
410
- bottom: 0,
411
- height: 2,
412
- },
413
- input: {
414
- flexGrow: 1,
415
- justifyContent: "center",
416
- textAlignVertical: "center",
417
- margin: 0,
418
- textAlign: I18nManager.isRTL ? "right" : "left",
419
- },
420
- });
@@ -1,39 +0,0 @@
1
- import * as React from "react";
2
- import { withTheme } from "../theming";
3
- import { StyleSheet } from "react-native";
4
- import IconButton from "./IconButton";
5
- const ToggleButton = ({ Icon, icon, toggled = false, onPress = () => { }, defaultValue, disabled = false, color = "primary", colorSecondary = "surface", borderColor = "divider", iconSize = 25, width = 50, height = 50, theme: { colors }, style, ...rest }) => {
6
- const [internalValue, setInternalValue] = React.useState(toggled || defaultValue || false);
7
- React.useEffect(() => {
8
- if (toggled != null) {
9
- setInternalValue(toggled);
10
- }
11
- }, [toggled]);
12
- React.useEffect(() => {
13
- if (defaultValue != null) {
14
- setInternalValue(defaultValue);
15
- }
16
- }, [defaultValue]);
17
- const handlePress = () => {
18
- setInternalValue(!internalValue);
19
- onPress(!internalValue);
20
- };
21
- return (React.createElement(IconButton, { Icon: Icon, icon: icon, size: iconSize, color: internalValue ? colors[color] : colors[colorSecondary], onPress: handlePress, disabled: disabled, style: [
22
- styles.mainContainer,
23
- {
24
- width,
25
- height,
26
- backgroundColor: internalValue
27
- ? colors[colorSecondary]
28
- : colors[color],
29
- borderColor: colors[borderColor],
30
- },
31
- style,
32
- ], ...rest }));
33
- };
34
- const styles = StyleSheet.create({
35
- mainContainer: {
36
- borderWidth: 1,
37
- },
38
- });
39
- export default withTheme(ToggleButton);
@@ -1,12 +0,0 @@
1
- import React from "react";
2
- import { Pressable } from "react-native";
3
- export default function Touchable({ children, disabled, onPress, style, ...props }) {
4
- return (React.createElement(Pressable, { onPress: onPress, disabled: disabled, hitSlop: 8, style: ({ pressed }) => {
5
- return [
6
- {
7
- opacity: pressed || disabled ? 0.75 : 1,
8
- },
9
- style,
10
- ];
11
- }, ...props }, children));
12
- }
@@ -1,2 +0,0 @@
1
- import { TouchableOpacity } from "react-native";
2
- export default TouchableOpacity;
@@ -1,36 +0,0 @@
1
- import React from "react";
2
- import { Text } from "react-native";
3
- import { withTheme } from "../theming";
4
- export const Title = withTheme(({ text, theme, style }) => {
5
- return (React.createElement(Text, { style: [
6
- {
7
- fontSize: 20,
8
- letterSpacing: 0,
9
- lineHeight: 26,
10
- color: theme.colors.text,
11
- },
12
- style,
13
- ] }, text));
14
- });
15
- export const Subtitle = withTheme(({ text, theme, style }) => {
16
- return (React.createElement(Text, { style: [
17
- {
18
- fontSize: 14,
19
- letterSpacing: 0,
20
- lineHeight: 16,
21
- color: theme.colors.medium,
22
- },
23
- style,
24
- ] }, text));
25
- });
26
- export const Caption = withTheme(({ text, theme, style }) => {
27
- return (React.createElement(Text, { style: [
28
- {
29
- fontSize: 12,
30
- letterSpacing: 0,
31
- lineHeight: 14,
32
- color: theme.colors.light,
33
- },
34
- style,
35
- ] }, text));
36
- });
@@ -1,31 +0,0 @@
1
- import * as React from "react";
2
- export const useAuthState = (auth) => {
3
- const [error, setError] = React.useState();
4
- const [value, setValue] = React.useState(auth.currentUser);
5
- React.useEffect(() => {
6
- const list = auth.onAuthStateChanged(setValue, setError);
7
- return () => {
8
- list();
9
- };
10
- }, [auth]);
11
- const signInWithEmailAndPassword = (user, password) => {
12
- auth
13
- .signInWithEmailAndPassword(user, password)
14
- .then(setValue)
15
- .catch(setError);
16
- };
17
- const createUserWithEmailAndPassword = (user, password) => {
18
- auth
19
- .signInWithEmailAndPassword(user, password)
20
- .then(setValue)
21
- .catch(setError);
22
- };
23
- const signOut = () => auth.signOut();
24
- return [
25
- value,
26
- error,
27
- signInWithEmailAndPassword,
28
- signOut,
29
- createUserWithEmailAndPassword,
30
- ];
31
- };
package/src/constants.js DELETED
@@ -1,10 +0,0 @@
1
- import { Platform } from "react-native";
2
- // @ts-ignore
3
- const expo = global.__expo;
4
- const DEFAULT_STATUSBAR_HEIGHT_EXPO = expo?.Constants
5
- ? expo.Constants.statusBarHeight
6
- : 0;
7
- export const APPROX_STATUSBAR_HEIGHT = Platform.select({
8
- android: DEFAULT_STATUSBAR_HEIGHT_EXPO,
9
- ios: Platform.Version < 11 ? DEFAULT_STATUSBAR_HEIGHT_EXPO : 0,
10
- });
package/src/hooks.js DELETED
@@ -1,12 +0,0 @@
1
- import React from "react";
2
- export function usePrevious(value) {
3
- // The ref object is a generic container whose current property is mutable
4
- // and can hold any value, similar to an instance property on a class
5
- const ref = React.useRef();
6
- // Store current value in ref
7
- React.useEffect(() => {
8
- ref.current = value;
9
- }, [value]);
10
- // Return previous value (happens before update in useEffect above)
11
- return ref.current;
12
- }