@draftbit/core 44.1.13-cd2af3.0 → 44.1.15

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 (215) 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/Picker/Picker.js +27 -264
  7. package/lib/commonjs/components/Picker/Picker.js.map +1 -1
  8. package/lib/commonjs/components/Picker/PickerComponent.android.js +110 -34
  9. package/lib/commonjs/components/Picker/PickerComponent.android.js.map +1 -1
  10. package/lib/commonjs/components/Picker/PickerComponent.ios.js +112 -38
  11. package/lib/commonjs/components/Picker/PickerComponent.ios.js.map +1 -1
  12. package/lib/commonjs/components/Picker/PickerComponent.web.js +111 -34
  13. package/lib/commonjs/components/Picker/PickerComponent.web.js.map +1 -1
  14. package/lib/commonjs/components/Picker/PickerTypes.js +6 -0
  15. package/lib/commonjs/components/Picker/PickerTypes.js.map +1 -0
  16. package/lib/commonjs/components/ResizeMode.js +0 -3
  17. package/lib/commonjs/mappings/RadioButtonGroup.js.map +1 -1
  18. package/lib/commonjs/mappings/RadioButtonRow.js.map +1 -1
  19. package/lib/module/components/Justification.js +1 -1
  20. package/lib/module/components/Picker/Picker.js +28 -258
  21. package/lib/module/components/Picker/Picker.js.map +1 -1
  22. package/lib/module/components/Picker/PickerComponent.android.js +103 -32
  23. package/lib/module/components/Picker/PickerComponent.android.js.map +1 -1
  24. package/lib/module/components/Picker/PickerComponent.ios.js +107 -36
  25. package/lib/module/components/Picker/PickerComponent.ios.js.map +1 -1
  26. package/lib/module/components/Picker/PickerComponent.web.js +104 -32
  27. package/lib/module/components/Picker/PickerComponent.web.js.map +1 -1
  28. package/lib/module/components/Picker/PickerTypes.js +2 -0
  29. package/lib/module/components/Picker/PickerTypes.js.map +1 -0
  30. package/lib/module/components/ResizeMode.js +1 -1
  31. package/lib/typescript/src/components/Picker/Picker.d.ts +4 -28
  32. package/lib/typescript/src/components/Picker/PickerComponent.android.d.ts +5 -12
  33. package/lib/typescript/src/components/Picker/PickerComponent.ios.d.ts +5 -11
  34. package/lib/typescript/src/components/Picker/PickerComponent.web.d.ts +5 -12
  35. package/lib/typescript/src/components/Picker/PickerTypes.d.ts +18 -0
  36. package/package.json +2 -2
  37. package/src/components/Picker/Picker.tsx +34 -433
  38. package/src/components/Picker/PickerComponent.android.tsx +101 -44
  39. package/src/components/Picker/PickerComponent.ios.tsx +114 -58
  40. package/src/components/Picker/PickerComponent.web.tsx +102 -44
  41. package/src/components/Picker/PickerTypes.ts +18 -0
  42. package/src/Provider.js +0 -9
  43. package/src/components/Accordion/AccordionGroup.js +0 -44
  44. package/src/components/Accordion/AccordionItem.js +0 -32
  45. package/src/components/Accordion/index.js +0 -2
  46. package/src/components/ActionSheet/ActionSheet.js +0 -45
  47. package/src/components/ActionSheet/ActionSheetCancel.js +0 -6
  48. package/src/components/ActionSheet/ActionSheetItem.js +0 -30
  49. package/src/components/ActionSheet/index.js +0 -3
  50. package/src/components/AnimatedCircularProgress.js +0 -43
  51. package/src/components/AspectRatio.js +0 -18
  52. package/src/components/AvatarEdit.js +0 -30
  53. package/src/components/Banner.js +0 -109
  54. package/src/components/Button.js +0 -112
  55. package/src/components/Card.js +0 -57
  56. package/src/components/CardBlock.js +0 -54
  57. package/src/components/CardContainer.js +0 -69
  58. package/src/components/CardContainerRating.js +0 -79
  59. package/src/components/CardContainerShortImage.js +0 -33
  60. package/src/components/CardInline.js +0 -36
  61. package/src/components/Carousel.js +0 -66
  62. package/src/components/Checkbox/Checkbox.js +0 -63
  63. package/src/components/Checkbox/CheckboxGroup.js +0 -21
  64. package/src/components/Checkbox/CheckboxGroupRow.js +0 -77
  65. package/src/components/Checkbox/CheckboxRow.js +0 -78
  66. package/src/components/Checkbox/context.js +0 -14
  67. package/src/components/Checkbox/index.js +0 -3
  68. package/src/components/CircleImage.js +0 -8
  69. package/src/components/CircularProgress.js +0 -78
  70. package/src/components/Config.js +0 -63
  71. package/src/components/Container.js +0 -43
  72. package/src/components/DatePicker/DatePicker.js +0 -368
  73. package/src/components/DatePicker/DatePickerComponent.js +0 -13
  74. package/src/components/DatePicker/DatePickerComponent.web.js +0 -30
  75. package/src/components/DatePicker/DatePickerComponentType.js +0 -1
  76. package/src/components/DeprecatedButton.js +0 -95
  77. package/src/components/DeprecatedCardWrapper.js +0 -18
  78. package/src/components/DeprecatedFAB.js +0 -115
  79. package/src/components/Divider.js +0 -13
  80. package/src/components/Elevation.js +0 -20
  81. package/src/components/FAB.js +0 -46
  82. package/src/components/FieldSearchBarFull.js +0 -53
  83. package/src/components/FormRow.js +0 -19
  84. package/src/components/Header.js +0 -44
  85. package/src/components/HeaderLarge.js +0 -7
  86. package/src/components/HeaderMedium.js +0 -7
  87. package/src/components/HeaderOverline.js +0 -7
  88. package/src/components/IconButton.js +0 -35
  89. package/src/components/Image.js +0 -47
  90. package/src/components/Justification.js +0 -1
  91. package/src/components/Layout.js +0 -50
  92. package/src/components/NumberInput.js +0 -49
  93. package/src/components/Picker/Picker.js +0 -267
  94. package/src/components/Picker/PickerComponent.android.js +0 -20
  95. package/src/components/Picker/PickerComponent.ios.js +0 -40
  96. package/src/components/Picker/PickerComponent.web.js +0 -20
  97. package/src/components/Portal/Portal.js +0 -35
  98. package/src/components/Portal/PortalConsumer.js +0 -28
  99. package/src/components/Portal/PortalHost.js +0 -105
  100. package/src/components/Portal/PortalManager.js +0 -29
  101. package/src/components/ProgressBar.js +0 -118
  102. package/src/components/ProgressCircle.js +0 -13
  103. package/src/components/ProgressIndicator.js +0 -27
  104. package/src/components/RadioButton/RadioButton.js +0 -17
  105. package/src/components/RadioButton/RadioButtonFieldGroup.js +0 -17
  106. package/src/components/RadioButton/RadioButtonGroup.js +0 -43
  107. package/src/components/RadioButton/RadioButtonRow.js +0 -76
  108. package/src/components/RadioButton/context.js +0 -14
  109. package/src/components/RadioButton/index.js +0 -4
  110. package/src/components/ResizeMode.js +0 -1
  111. package/src/components/Row.js +0 -48
  112. package/src/components/RowBodyIcon.js +0 -8
  113. package/src/components/RowHeadlineImageCaption.js +0 -12
  114. package/src/components/RowHeadlineImageIcon.js +0 -14
  115. package/src/components/ScreenContainer.js +0 -34
  116. package/src/components/Slider.js +0 -63
  117. package/src/components/StarRating.js +0 -50
  118. package/src/components/StepIndicator.js +0 -346
  119. package/src/components/Stepper.js +0 -39
  120. package/src/components/Surface.js +0 -32
  121. package/src/components/Swiper/Swiper.js +0 -29
  122. package/src/components/Swiper/SwiperItem.js +0 -9
  123. package/src/components/Swiper/index.js +0 -2
  124. package/src/components/Switch.js +0 -56
  125. package/src/components/Text.js +0 -28
  126. package/src/components/TextField.js +0 -420
  127. package/src/components/ToggleButton.js +0 -39
  128. package/src/components/Touchable.js +0 -12
  129. package/src/components/Touchable.web.js +0 -2
  130. package/src/components/Typography.js +0 -36
  131. package/src/components/useAuthState.js +0 -31
  132. package/src/constants.js +0 -10
  133. package/src/hooks.js +0 -12
  134. package/src/index.js +0 -52
  135. package/src/interfaces/Icon.js +0 -8
  136. package/src/mappings/Accordion.js +0 -41
  137. package/src/mappings/AccordionItem.js +0 -16
  138. package/src/mappings/ActionSheet.js +0 -13
  139. package/src/mappings/ActionSheetCancel.js +0 -19
  140. package/src/mappings/ActionSheetItem.js +0 -23
  141. package/src/mappings/ActivityIndicator.js +0 -53
  142. package/src/mappings/AudioPlayer.js +0 -20
  143. package/src/mappings/AvatarEdit.js +0 -37
  144. package/src/mappings/Banner.js +0 -32
  145. package/src/mappings/BlurView.js +0 -41
  146. package/src/mappings/Button.js +0 -56
  147. package/src/mappings/Card.js +0 -52
  148. package/src/mappings/CardBlock.js +0 -122
  149. package/src/mappings/CardContainer.js +0 -102
  150. package/src/mappings/CardContainerRating.js +0 -124
  151. package/src/mappings/CardContainerShortImage.js +0 -118
  152. package/src/mappings/CardInline.js +0 -51
  153. package/src/mappings/Carousel.js +0 -18
  154. package/src/mappings/Checkbox.js +0 -45
  155. package/src/mappings/CheckboxGroup.js +0 -25
  156. package/src/mappings/CheckboxRow.js +0 -56
  157. package/src/mappings/CircleImage.js +0 -24
  158. package/src/mappings/Container.js +0 -29
  159. package/src/mappings/CustomCode.js +0 -8
  160. package/src/mappings/DatePicker.js +0 -146
  161. package/src/mappings/Divider.js +0 -26
  162. package/src/mappings/FAB.js +0 -36
  163. package/src/mappings/Fetch.js +0 -12
  164. package/src/mappings/FieldSearchBarFull.js +0 -49
  165. package/src/mappings/FlatList.js +0 -19
  166. package/src/mappings/HeaderLarge.js +0 -28
  167. package/src/mappings/HeaderMedium.js +0 -54
  168. package/src/mappings/HeaderOverline.js +0 -54
  169. package/src/mappings/Icon.js +0 -25
  170. package/src/mappings/IconButton.js +0 -30
  171. package/src/mappings/Image.js +0 -15
  172. package/src/mappings/ImageBackground.js +0 -28
  173. package/src/mappings/KeyboardAvoidingView.js +0 -40
  174. package/src/mappings/KeyboardAwareScrollView.js +0 -49
  175. package/src/mappings/Layout.js +0 -195
  176. package/src/mappings/LinearGradient.js +0 -77
  177. package/src/mappings/MapCallout.js +0 -21
  178. package/src/mappings/MapMarker.js +0 -47
  179. package/src/mappings/MapView.js +0 -138
  180. package/src/mappings/Modal.js +0 -41
  181. package/src/mappings/Picker.js +0 -139
  182. package/src/mappings/ProgressBar.js +0 -100
  183. package/src/mappings/ProgressCircle.js +0 -108
  184. package/src/mappings/ProgressIndicator.js +0 -180
  185. package/src/mappings/RadioButton.js +0 -50
  186. package/src/mappings/RadioButtonGroup.js +0 -16
  187. package/src/mappings/RadioButtonRow.js +0 -37
  188. package/src/mappings/RowBodyIcon.js +0 -75
  189. package/src/mappings/RowHeadlineImageCaption.js +0 -167
  190. package/src/mappings/RowHeadlineImageIcon.js +0 -99
  191. package/src/mappings/SafeAreaView.js +0 -33
  192. package/src/mappings/ScrollView.js +0 -30
  193. package/src/mappings/Slider.js +0 -59
  194. package/src/mappings/StarRating.js +0 -42
  195. package/src/mappings/Stepper.js +0 -28
  196. package/src/mappings/Surface.js +0 -13
  197. package/src/mappings/Swiper.js +0 -60
  198. package/src/mappings/SwiperItem.js +0 -8
  199. package/src/mappings/Switch.js +0 -75
  200. package/src/mappings/Text.js +0 -232
  201. package/src/mappings/TextArea.js +0 -52
  202. package/src/mappings/TextField.js +0 -158
  203. package/src/mappings/TextInput.js +0 -208
  204. package/src/mappings/ToggleButton.js +0 -45
  205. package/src/mappings/Touchable.js +0 -12
  206. package/src/mappings/Video.js +0 -74
  207. package/src/mappings/View.js +0 -206
  208. package/src/mappings/WebView.js +0 -18
  209. package/src/styles/DarkTheme.js +0 -26
  210. package/src/styles/DefaultTheme.js +0 -111
  211. package/src/styles/fonts.js +0 -62
  212. package/src/styles/overlay.js +0 -60
  213. package/src/styles/shadow.js +0 -51
  214. package/src/theming.js +0 -3
  215. 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
- }