@jobber/components-native 0.91.0 → 0.91.2

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 (174) hide show
  1. package/dist/package.json +2 -2
  2. package/dist/src/ActionItem/ActionItemGroup.js +1 -1
  3. package/dist/src/AutoLink/components/Link/Link.js +1 -1
  4. package/dist/src/ErrorMessageWrapper/context/ErrorMessageProvider.js +1 -1
  5. package/dist/src/Form/components/FormMessageBanner/FormMessageBanner.js +1 -1
  6. package/dist/src/FormatFile/components/MediaView/MediaView.js +22 -5
  7. package/dist/src/Select/components/SelectPressable/SelectPressable.js +1 -1
  8. package/dist/tsconfig.build.tsbuildinfo +1 -1
  9. package/dist/types/src/ActionItem/ActionItem.d.ts +2 -1
  10. package/dist/types/src/ActionItem/ActionItemGroup.d.ts +2 -1
  11. package/dist/types/src/ActionItem/components/ActionItemContainer.d.ts +2 -1
  12. package/dist/types/src/ActionLabel/ActionLabel.d.ts +1 -1
  13. package/dist/types/src/ActivityIndicator/ActivityIndicator.d.ts +2 -1
  14. package/dist/types/src/AutoLink/AutoLink.d.ts +2 -1
  15. package/dist/types/src/AutoLink/components/ComposeTextWithLinks/ComposeTextWithLinks.d.ts +2 -1
  16. package/dist/types/src/AutoLink/components/Link/Link.d.ts +2 -1
  17. package/dist/types/src/Banner/Banner.d.ts +2 -1
  18. package/dist/types/src/Banner/components/BannerIcon/BannerIcon.d.ts +2 -1
  19. package/dist/types/src/BottomSheet/components/BottomSheetOption/BottomSheetOption.d.ts +2 -1
  20. package/dist/types/src/Button/Button.d.ts +2 -1
  21. package/dist/types/src/Button/components/InternalButtonLoading/InternalButtonLoading.d.ts +1 -1
  22. package/dist/types/src/ButtonGroup/ButtonGroup.d.ts +2 -1
  23. package/dist/types/src/ButtonGroup/ButtonGroupAction.d.ts +4 -3
  24. package/dist/types/src/ButtonGroup/components/SecondaryActionSheet/SecondaryActionSheet.d.ts +2 -1
  25. package/dist/types/src/Card/Card.d.ts +2 -1
  26. package/dist/types/src/Card/components/InternalCardHeader.d.ts +2 -1
  27. package/dist/types/src/Checkbox/Checkbox.d.ts +2 -1
  28. package/dist/types/src/Checkbox/CheckboxGroup.d.ts +2 -1
  29. package/dist/types/src/Chip/Chip.d.ts +2 -1
  30. package/dist/types/src/Content/Content.d.ts +2 -1
  31. package/dist/types/src/Disclosure/Disclosure.d.ts +1 -1
  32. package/dist/types/src/Divider/Divider.d.ts +2 -1
  33. package/dist/types/src/EmptyState/EmptyState.d.ts +2 -1
  34. package/dist/types/src/ErrorMessageWrapper/ErrorMessageWrapper.d.ts +2 -1
  35. package/dist/types/src/ErrorMessageWrapper/context/ErrorMessageProvider.d.ts +2 -1
  36. package/dist/types/src/Flex/Flex.d.ts +2 -1
  37. package/dist/types/src/Form/Form.d.ts +2 -1
  38. package/dist/types/src/Form/components/FormActionBar/FormActionBar.d.ts +3 -2
  39. package/dist/types/src/Form/components/FormBody/FormBody.d.ts +3 -2
  40. package/dist/types/src/Form/components/FormCache/FormCache.d.ts +2 -1
  41. package/dist/types/src/Form/components/FormErrorBanner/FormErrorBanner.d.ts +2 -1
  42. package/dist/types/src/Form/components/FormMask/FormMask.d.ts +2 -1
  43. package/dist/types/src/Form/components/FormMessage/FormMessage.d.ts +2 -1
  44. package/dist/types/src/Form/components/FormMessage/components/InternalFormMessage/InternalFormMessage.d.ts +2 -1
  45. package/dist/types/src/Form/components/FormMessageBanner/FormMessageBanner.d.ts +2 -1
  46. package/dist/types/src/Form/components/FormSaveButton/FormSaveButton.d.ts +2 -1
  47. package/dist/types/src/Form/types.d.ts +2 -2
  48. package/dist/types/src/FormField/FormField.d.ts +1 -1
  49. package/dist/types/src/FormatFile/FormatFile.d.ts +2 -1
  50. package/dist/types/src/FormatFile/components/ErrorIcon/ErrorIcon.d.ts +2 -1
  51. package/dist/types/src/FormatFile/components/FileView/FileView.d.ts +2 -1
  52. package/dist/types/src/FormatFile/components/FormatFileBottomSheet/FormatFileBottomSheet.d.ts +2 -1
  53. package/dist/types/src/FormatFile/components/MediaView/MediaView.d.ts +2 -1
  54. package/dist/types/src/FormatFile/components/ProgressBar/ProgressBar.d.ts +2 -1
  55. package/dist/types/src/Heading/Heading.d.ts +1 -1
  56. package/dist/types/src/Icon/Icon.d.ts +2 -1
  57. package/dist/types/src/IconButton/IconButton.d.ts +1 -1
  58. package/dist/types/src/InputCurrency/InputCurrency.d.ts +2 -1
  59. package/dist/types/src/InputDate/InputDate.d.ts +2 -1
  60. package/dist/types/src/InputFieldWrapper/InputFieldWrapper.d.ts +1 -1
  61. package/dist/types/src/InputFieldWrapper/components/ClearAction/ClearAction.d.ts +2 -1
  62. package/dist/types/src/InputFieldWrapper/components/Prefix/Prefix.d.ts +3 -2
  63. package/dist/types/src/InputFieldWrapper/components/Suffix/Suffix.d.ts +3 -2
  64. package/dist/types/src/InputPressable/InputPressable.d.ts +1 -1
  65. package/dist/types/src/InputSearch/components/FilterButton.d.ts +2 -1
  66. package/dist/types/src/InputText/context/InputAccessoriesProvider.d.ts +2 -1
  67. package/dist/types/src/InputTime/InputTime.d.ts +2 -1
  68. package/dist/types/src/Menu/Menu.d.ts +2 -1
  69. package/dist/types/src/Menu/components/MenuOption/MenuOption.d.ts +2 -1
  70. package/dist/types/src/Menu/components/Overlay/Overlay.d.ts +2 -1
  71. package/dist/types/src/Menu/types.d.ts +2 -1
  72. package/dist/types/src/ProgressBar/ProgressBar.d.ts +2 -1
  73. package/dist/types/src/ProgressBar/ProgressBarInner.d.ts +2 -1
  74. package/dist/types/src/Select/Select.d.ts +3 -2
  75. package/dist/types/src/Select/components/SelectDefaultPicker/SelectDefaultPicker.d.ts +2 -1
  76. package/dist/types/src/Select/components/SelectDefaultPicker/SelectDefaultPicker.ios.d.ts +2 -1
  77. package/dist/types/src/Select/components/SelectInternalPicker/SelectInternalPicker.d.ts +2 -1
  78. package/dist/types/src/Select/components/SelectPressable/SelectPressable.d.ts +2 -1
  79. package/dist/types/src/StatusLabel/StatusLabel.d.ts +2 -1
  80. package/dist/types/src/Switch/Switch.d.ts +2 -1
  81. package/dist/types/src/Switch/components/BaseSwitch/BaseSwitch.d.ts +2 -1
  82. package/dist/types/src/Text/Text.d.ts +1 -1
  83. package/dist/types/src/TextList/TextList.d.ts +2 -1
  84. package/dist/types/src/ThumbnailList/ThumbnailList.d.ts +2 -1
  85. package/dist/types/src/Toast/Toast.d.ts +2 -1
  86. package/dist/types/src/Typography/Typography.d.ts +1 -1
  87. package/dist/types/src/Typography/TypographyGestureDetector.d.ts +2 -1
  88. package/dist/types/src/utils/test/MockSafeAreaProvider.d.ts +1 -1
  89. package/package.json +2 -2
  90. package/src/ActionItem/ActionItem.tsx +1 -1
  91. package/src/ActionItem/ActionItemGroup.tsx +1 -3
  92. package/src/ActionItem/components/ActionItemContainer.tsx +1 -1
  93. package/src/ActionLabel/ActionLabel.tsx +1 -1
  94. package/src/ActivityIndicator/ActivityIndicator.tsx +1 -3
  95. package/src/AutoLink/AutoLink.tsx +1 -1
  96. package/src/AutoLink/components/ComposeTextWithLinks/ComposeTextWithLinks.tsx +1 -1
  97. package/src/AutoLink/components/Link/Link.tsx +1 -5
  98. package/src/Banner/Banner.tsx +2 -2
  99. package/src/Banner/components/BannerIcon/BannerIcon.tsx +1 -1
  100. package/src/BottomSheet/components/BottomSheetOption/BottomSheetOption.tsx +1 -1
  101. package/src/Button/Button.tsx +1 -1
  102. package/src/Button/components/InternalButtonLoading/InternalButtonLoading.tsx +1 -1
  103. package/src/ButtonGroup/ButtonGroup.tsx +1 -1
  104. package/src/ButtonGroup/ButtonGroupAction.tsx +4 -4
  105. package/src/ButtonGroup/components/SecondaryActionSheet/SecondaryActionSheet.tsx +1 -1
  106. package/src/Card/Card.tsx +1 -1
  107. package/src/Card/components/InternalCardHeader.tsx +1 -1
  108. package/src/Checkbox/Checkbox.tsx +2 -2
  109. package/src/Checkbox/CheckboxGroup.test.tsx +1 -1
  110. package/src/Checkbox/CheckboxGroup.tsx +2 -2
  111. package/src/Chip/Chip.tsx +1 -1
  112. package/src/Content/Content.tsx +1 -1
  113. package/src/ContentOverlay/ContentOverlay.tsx +1 -1
  114. package/src/Disclosure/Disclosure.tsx +1 -1
  115. package/src/Divider/Divider.tsx +1 -1
  116. package/src/EmptyState/EmptyState.tsx +1 -1
  117. package/src/ErrorMessageWrapper/ErrorMessageWrapper.tsx +1 -1
  118. package/src/ErrorMessageWrapper/context/ErrorMessageProvider.tsx +1 -3
  119. package/src/Flex/Flex.tsx +2 -2
  120. package/src/Form/Form.test.tsx +2 -2
  121. package/src/Form/Form.tsx +1 -1
  122. package/src/Form/components/FormActionBar/FormActionBar.tsx +3 -3
  123. package/src/Form/components/FormBody/FormBody.tsx +3 -3
  124. package/src/Form/components/FormCache/FormCache.tsx +1 -1
  125. package/src/Form/components/FormErrorBanner/FormErrorBanner.tsx +1 -1
  126. package/src/Form/components/FormMask/FormMask.tsx +1 -1
  127. package/src/Form/components/FormMessage/FormMessage.tsx +1 -1
  128. package/src/Form/components/FormMessage/components/InternalFormMessage/InternalFormMessage.tsx +1 -1
  129. package/src/Form/components/FormMessageBanner/FormMessageBanner.tsx +1 -3
  130. package/src/Form/components/FormSaveButton/FormSaveButton.tsx +1 -1
  131. package/src/Form/types.ts +2 -2
  132. package/src/FormField/FormField.tsx +1 -1
  133. package/src/FormatFile/FormatFile.tsx +3 -3
  134. package/src/FormatFile/components/ErrorIcon/ErrorIcon.tsx +1 -1
  135. package/src/FormatFile/components/FileView/FileView.tsx +1 -1
  136. package/src/FormatFile/components/FormatFileBottomSheet/FormatFileBottomSheet.tsx +1 -1
  137. package/src/FormatFile/components/MediaView/MediaView.test.tsx +283 -0
  138. package/src/FormatFile/components/MediaView/MediaView.tsx +28 -7
  139. package/src/FormatFile/components/ProgressBar/ProgressBar.tsx +1 -1
  140. package/src/Heading/Heading.tsx +1 -1
  141. package/src/Icon/Icon.tsx +1 -1
  142. package/src/IconButton/IconButton.tsx +1 -1
  143. package/src/InputCurrency/InputCurrency.tsx +1 -1
  144. package/src/InputDate/InputDate.tsx +2 -2
  145. package/src/InputFieldWrapper/InputFieldWrapper.tsx +1 -1
  146. package/src/InputFieldWrapper/components/ClearAction/ClearAction.tsx +1 -1
  147. package/src/InputFieldWrapper/components/Prefix/Prefix.tsx +2 -2
  148. package/src/InputFieldWrapper/components/Suffix/Suffix.tsx +2 -2
  149. package/src/InputPassword/InputPassword.tsx +1 -1
  150. package/src/InputPressable/InputPressable.tsx +1 -1
  151. package/src/InputSearch/components/FilterButton.tsx +1 -1
  152. package/src/InputText/context/InputAccessoriesProvider.tsx +1 -1
  153. package/src/InputTime/InputTime.tsx +2 -2
  154. package/src/Menu/Menu.tsx +1 -1
  155. package/src/Menu/components/MenuOption/MenuOption.tsx +1 -1
  156. package/src/Menu/components/Overlay/Overlay.tsx +1 -1
  157. package/src/Menu/types.ts +2 -1
  158. package/src/ProgressBar/ProgressBar.tsx +1 -1
  159. package/src/ProgressBar/ProgressBarInner.tsx +1 -1
  160. package/src/Select/Select.tsx +2 -2
  161. package/src/Select/components/SelectDefaultPicker/SelectDefaultPicker.ios.tsx +1 -1
  162. package/src/Select/components/SelectDefaultPicker/SelectDefaultPicker.tsx +1 -1
  163. package/src/Select/components/SelectInternalPicker/SelectInternalPicker.tsx +1 -1
  164. package/src/Select/components/SelectPressable/SelectPressable.tsx +1 -4
  165. package/src/StatusLabel/StatusLabel.tsx +1 -1
  166. package/src/Switch/Switch.tsx +1 -1
  167. package/src/Switch/components/BaseSwitch/BaseSwitch.tsx +1 -1
  168. package/src/Text/Text.tsx +1 -1
  169. package/src/TextList/TextList.tsx +1 -1
  170. package/src/ThumbnailList/ThumbnailList.tsx +1 -1
  171. package/src/Toast/Toast.tsx +2 -2
  172. package/src/Typography/Typography.tsx +1 -1
  173. package/src/Typography/TypographyGestureDetector.tsx +1 -3
  174. package/src/utils/test/MockSafeAreaProvider.tsx +1 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components-native",
3
- "version": "0.91.0",
3
+ "version": "0.91.2",
4
4
  "license": "MIT",
5
5
  "description": "React Native implementation of Atlantis",
6
6
  "repository": {
@@ -94,5 +94,5 @@
94
94
  "react-native-safe-area-context": "^5.4.0",
95
95
  "react-native-svg": ">=12.0.0"
96
96
  },
97
- "gitHead": "29381f7508578c0518fd4cecd07d021df83e08fc"
97
+ "gitHead": "89fec0b77276ec2b2fc80f4fc4ec2f6d207c1ac6"
98
98
  }
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import { View } from "react-native";
3
3
  import { useStyles } from "./ActionItem.style";
4
4
  import { Divider } from "../Divider";
5
- export function ActionItemGroup({ children, }) {
5
+ export function ActionItemGroup({ children }) {
6
6
  return React.createElement(View, null, renderChildren(children));
7
7
  }
8
8
  function renderChildren(children) {
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { Text as RNText } from "react-native";
3
3
  import { Text } from "../../../Text";
4
- export function Link({ children, onPress, onLongPress, }) {
4
+ export function Link({ children, onPress, onLongPress }) {
5
5
  return (React.createElement(RNText, { onPress: onPress, onLongPress: onLongPress },
6
6
  React.createElement(Text, { variation: "interactive" }, children)));
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from "react";
2
2
  import { AccessibilityInfo, findNodeHandle } from "react-native";
3
3
  import { ErrorMessageContext } from "./ErrorMessageContext";
4
- export function ErrorMessageProvider({ children, }) {
4
+ export function ErrorMessageProvider({ children }) {
5
5
  const [elements, setElements] = useState({});
6
6
  return (React.createElement(ErrorMessageContext.Provider, { value: {
7
7
  elements,
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { FormBannerMessageType } from "../../types";
3
3
  import { Banner } from "../../../Banner";
4
- export function FormMessageBanner({ bannerMessages, }) {
4
+ export function FormMessageBanner({ bannerMessages }) {
5
5
  return (React.createElement(React.Fragment, null, bannerMessages === null || bannerMessages === void 0 ? void 0 : bannerMessages.map((message, index) => (React.createElement(Banner, { key: index, text: message.message, type: getBannerType(message.messageType) })))));
6
6
  }
7
7
  function getBannerType(messageType) {
@@ -1,4 +1,4 @@
1
- import React, { useState } from "react";
1
+ import React, { useEffect, useRef, useState } from "react";
2
2
  import { ImageBackground, View } from "react-native";
3
3
  import { useStyles } from "./MediaView.style";
4
4
  import { StatusCode } from "../../types";
@@ -14,20 +14,37 @@ export function MediaView({ accessibilityLabel, showOverlay, showError, file, st
14
14
  const { useCreateThumbnail } = useAtlantisFormatFileContext();
15
15
  const { thumbnail, error } = useCreateThumbnail(file);
16
16
  const [isLoading, setIsLoading] = useState(false);
17
+ /**
18
+ * Tracks whether onLoadEnd has fired to prevent race conditions.
19
+ * ImageBackground can fire onLoadEnd before onLoadStart when loading cached images,
20
+ * which would cause isLoading to get stuck at true, showing an infinite spinner.
21
+ */
22
+ const hasLoadedRef = useRef(false);
17
23
  const a11yLabel = computeA11yLabel({
18
24
  accessibilityLabel,
19
25
  showOverlay,
20
26
  showError,
21
27
  t,
22
28
  });
23
- const hasError = showError || error;
24
- const uri = thumbnail || file.thumbnailUrl || file.source;
25
- const styles = useStyles();
29
+ const hasError = showError || error, uri = thumbnail || file.thumbnailUrl || file.source, styles = useStyles();
30
+ const handleLoadStart = () => {
31
+ if (!hasLoadedRef.current) {
32
+ setIsLoading(true);
33
+ }
34
+ };
35
+ const handleLoadEnd = () => {
36
+ hasLoadedRef.current = true;
37
+ setIsLoading(false);
38
+ };
39
+ useEffect(() => {
40
+ hasLoadedRef.current = false;
41
+ setIsLoading(false);
42
+ }, [uri]);
26
43
  return (React.createElement(View, { accessible: true, accessibilityLabel: a11yLabel },
27
44
  React.createElement(ImageBackground, { style: [
28
45
  styles.imageBackground,
29
46
  styleInGrid ? styles.imageBackgroundGrid : styles.imageBackgroundFlat,
30
- ], resizeMode: styleInGrid ? "cover" : "contain", source: { uri }, testID: "test-image", onLoadStart: () => setIsLoading(true), onLoadEnd: () => setIsLoading(false) },
47
+ ], resizeMode: styleInGrid ? "cover" : "contain", source: { uri }, testID: "test-image", onLoadStart: handleLoadStart, onLoadEnd: handleLoadEnd },
31
48
  React.createElement(Overlay, { isLoading: isLoading, showOverlay: showOverlay, hasError: hasError, file: file, onUploadComplete: onUploadComplete, styles: styles }))));
32
49
  }
33
50
  function Overlay({ isLoading, showOverlay, hasError, file, onUploadComplete, styles, }) {
@@ -7,7 +7,7 @@ import { useIsScreenReaderEnabled } from "../../../hooks";
7
7
  * screen-reader is being used to avoid screen-readers from ignoring the press
8
8
  * on the MenuView
9
9
  */
10
- export function SelectPressable({ children, onPress, }) {
10
+ export function SelectPressable({ children, onPress }) {
11
11
  const isScreenReaderEnabled = useIsScreenReaderEnabled();
12
12
  const styles = useStyles();
13
13
  if (isScreenReaderEnabled)