@hero-design/rn 8.77.1-alpha.10 → 8.78.0-alpha.1

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 (279) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/es/index.js +21 -4
  3. package/lib/index.js +21 -4
  4. package/package.json +3 -2
  5. package/src/components/BottomSheet/index.tsx +2 -2
  6. package/src/components/Search/SearchOneLine.tsx +31 -1
  7. package/src/components/Search/__tests__/SearchOneLine.spec.tsx +123 -64
  8. package/src/components/Search/__tests__/__snapshots__/SearchOneLine.spec.tsx.snap +247 -67
  9. package/stats/8.78.0/rn-stats.html +4842 -0
  10. package/types/components/Accordion/AccordionItem.d.ts +0 -0
  11. package/types/components/Accordion/StyledAccordion.d.ts +0 -0
  12. package/types/components/Accordion/index.d.ts +0 -0
  13. package/types/components/Alert/StyledAlert.d.ts +0 -0
  14. package/types/components/Alert/index.d.ts +0 -0
  15. package/types/components/Attachment/StyledAttachment.d.ts +0 -0
  16. package/types/components/Attachment/index.d.ts +0 -0
  17. package/types/components/Avatar/Avatar.d.ts +0 -0
  18. package/types/components/Avatar/AvatarStack/StyledAvatarStack.d.ts +0 -0
  19. package/types/components/Avatar/AvatarStack/index.d.ts +0 -0
  20. package/types/components/Avatar/AvatarStack/utils.d.ts +0 -0
  21. package/types/components/Avatar/StyledAvatar.d.ts +0 -0
  22. package/types/components/Avatar/index.d.ts +0 -0
  23. package/types/components/Badge/Status.d.ts +0 -0
  24. package/types/components/Badge/StyledBadge.d.ts +0 -0
  25. package/types/components/Badge/index.d.ts +0 -0
  26. package/types/components/BottomNavigation/StyledBottomNavigation.d.ts +0 -0
  27. package/types/components/BottomNavigation/index.d.ts +0 -0
  28. package/types/components/BottomSheet/BottomSheetContext.d.ts +0 -0
  29. package/types/components/BottomSheet/Footer.d.ts +0 -0
  30. package/types/components/BottomSheet/Header.d.ts +0 -0
  31. package/types/components/BottomSheet/ScrollView.d.ts +0 -0
  32. package/types/components/BottomSheet/StyledBottomSheet.d.ts +0 -0
  33. package/types/components/BottomSheet/index.d.ts +0 -0
  34. package/types/components/Box/StyledBox.d.ts +0 -0
  35. package/types/components/Box/config.d.ts +0 -0
  36. package/types/components/Box/index.d.ts +0 -0
  37. package/types/components/Box/types.d.ts +0 -0
  38. package/types/components/Button/Button.d.ts +0 -0
  39. package/types/components/Button/IconButton.d.ts +0 -0
  40. package/types/components/Button/LoadingIndicator/StyledLoadingIndicator.d.ts +0 -0
  41. package/types/components/Button/LoadingIndicator/index.d.ts +0 -0
  42. package/types/components/Button/StyledButton.d.ts +0 -0
  43. package/types/components/Button/UtilityButton/StyledUtilityButton.d.ts +0 -0
  44. package/types/components/Button/UtilityButton/index.d.ts +0 -0
  45. package/types/components/Button/index.d.ts +0 -0
  46. package/types/components/Calendar/CalendarRowItem.d.ts +0 -0
  47. package/types/components/Calendar/StyledCalendar.d.ts +0 -0
  48. package/types/components/Calendar/helpers.d.ts +0 -0
  49. package/types/components/Calendar/index.d.ts +0 -0
  50. package/types/components/Card/DataCard/StyledDataCard.d.ts +0 -0
  51. package/types/components/Card/DataCard/index.d.ts +0 -0
  52. package/types/components/Card/StyledCard.d.ts +0 -0
  53. package/types/components/Card/index.d.ts +0 -0
  54. package/types/components/Carousel/CardCarousel.d.ts +0 -0
  55. package/types/components/Carousel/CarouselItem.d.ts +0 -0
  56. package/types/components/Carousel/StyledCardCarousel.d.ts +0 -0
  57. package/types/components/Carousel/StyledCarousel.d.ts +0 -0
  58. package/types/components/Carousel/contants.d.ts +0 -0
  59. package/types/components/Carousel/index.d.ts +0 -0
  60. package/types/components/Carousel/types.d.ts +0 -0
  61. package/types/components/Checkbox/StyledCheckbox.d.ts +0 -0
  62. package/types/components/Checkbox/index.d.ts +0 -0
  63. package/types/components/Collapse/StyledCollapse.d.ts +0 -0
  64. package/types/components/Collapse/index.d.ts +0 -0
  65. package/types/components/ContentNavigator/StyledContentNavigator.d.ts +0 -0
  66. package/types/components/ContentNavigator/index.d.ts +0 -0
  67. package/types/components/DatePicker/DatePickerAndroid.d.ts +0 -0
  68. package/types/components/DatePicker/DatePickerCalendar.d.ts +0 -0
  69. package/types/components/DatePicker/DatePickerIOS.d.ts +0 -0
  70. package/types/components/DatePicker/StyledDatePicker.d.ts +0 -0
  71. package/types/components/DatePicker/index.d.ts +0 -0
  72. package/types/components/DatePicker/types.d.ts +0 -0
  73. package/types/components/Divider/StyledDivider.d.ts +0 -0
  74. package/types/components/Divider/index.d.ts +0 -0
  75. package/types/components/Drawer/DragableDrawer/helpers.d.ts +0 -0
  76. package/types/components/Drawer/DragableDrawer/index.d.ts +0 -0
  77. package/types/components/Drawer/StyledDrawer.d.ts +0 -0
  78. package/types/components/Drawer/index.d.ts +0 -0
  79. package/types/components/Empty/StyledEmpty.d.ts +0 -0
  80. package/types/components/Empty/index.d.ts +0 -0
  81. package/types/components/Error/StyledError.d.ts +0 -0
  82. package/types/components/Error/index.d.ts +0 -0
  83. package/types/components/FAB/ActionGroup/ActionItem.d.ts +0 -0
  84. package/types/components/FAB/ActionGroup/StyledActionGroup.d.ts +0 -0
  85. package/types/components/FAB/ActionGroup/StyledActionItem.d.ts +0 -0
  86. package/types/components/FAB/ActionGroup/index.d.ts +0 -0
  87. package/types/components/FAB/AnimatedFABIcon.d.ts +0 -0
  88. package/types/components/FAB/FAB.d.ts +0 -0
  89. package/types/components/FAB/StyledFAB.d.ts +0 -0
  90. package/types/components/FAB/index.d.ts +0 -0
  91. package/types/components/FloatingIsland/SingleLine/StyledSingleLine.d.ts +15 -0
  92. package/types/components/FloatingIsland/SingleLine/index.d.ts +24 -0
  93. package/types/components/FloatingIsland/StyledFloatingIsland.d.ts +2 -2
  94. package/types/components/Icon/AnimatedIcon.d.ts +0 -0
  95. package/types/components/Icon/HeroIcon/index.d.ts +0 -0
  96. package/types/components/Icon/IconList.d.ts +0 -0
  97. package/types/components/Icon/index.d.ts +0 -0
  98. package/types/components/Icon/utils.d.ts +0 -0
  99. package/types/components/Image/index.d.ts +0 -0
  100. package/types/components/List/BasicListItem.d.ts +0 -0
  101. package/types/components/List/ListItem.d.ts +0 -0
  102. package/types/components/List/StyledBasicListItem.d.ts +0 -0
  103. package/types/components/List/StyledListItem.d.ts +0 -0
  104. package/types/components/List/index.d.ts +0 -0
  105. package/types/components/PageControl/StyledPageControl.d.ts +0 -0
  106. package/types/components/PageControl/index.d.ts +0 -0
  107. package/types/components/PinInput/PinCell.d.ts +0 -0
  108. package/types/components/PinInput/StyledPinInput.d.ts +0 -0
  109. package/types/components/PinInput/index.d.ts +0 -0
  110. package/types/components/Progress/ProgressBar.d.ts +0 -0
  111. package/types/components/Progress/ProgressCircle.d.ts +0 -0
  112. package/types/components/Progress/StyledProgressBar.d.ts +0 -0
  113. package/types/components/Progress/StyledProgressCircle.d.ts +0 -0
  114. package/types/components/Progress/__tests__/index.spec.d.ts +0 -0
  115. package/types/components/Progress/constants.d.ts +0 -0
  116. package/types/components/Progress/index.d.ts +0 -0
  117. package/types/components/Progress/types.d.ts +0 -0
  118. package/types/components/Radio/Radio.d.ts +0 -0
  119. package/types/components/Radio/RadioGroup.d.ts +0 -0
  120. package/types/components/Radio/StyledRadio.d.ts +0 -0
  121. package/types/components/Radio/index.d.ts +0 -0
  122. package/types/components/Radio/types.d.ts +0 -0
  123. package/types/components/RefreshControl/index.d.ts +0 -0
  124. package/types/components/RichTextEditor/EditorEvent.d.ts +0 -0
  125. package/types/components/RichTextEditor/EditorToolbar.d.ts +0 -0
  126. package/types/components/RichTextEditor/MentionList.d.ts +0 -0
  127. package/types/components/RichTextEditor/RichTextEditor.d.ts +0 -0
  128. package/types/components/RichTextEditor/StyledRichTextEditor.d.ts +0 -0
  129. package/types/components/RichTextEditor/StyledToolbar.d.ts +0 -0
  130. package/types/components/RichTextEditor/__mocks__/heroEditorApp.d.ts +0 -0
  131. package/types/components/RichTextEditor/constants.d.ts +0 -0
  132. package/types/components/RichTextEditor/heroEditorApp.d.ts +0 -0
  133. package/types/components/RichTextEditor/index.d.ts +0 -0
  134. package/types/components/RichTextEditor/types.d.ts +0 -0
  135. package/types/components/RichTextEditor/utils/events.d.ts +0 -0
  136. package/types/components/RichTextEditor/utils/rnWebView.d.ts +0 -0
  137. package/types/components/Search/SearchOneLine.d.ts +4 -0
  138. package/types/components/SectionHeading/StyledHeading.d.ts +0 -0
  139. package/types/components/SectionHeading/index.d.ts +0 -0
  140. package/types/components/Select/BaseOptionList.d.ts +0 -0
  141. package/types/components/Select/Footer.d.ts +0 -0
  142. package/types/components/Select/MultiSelect/Option.d.ts +0 -0
  143. package/types/components/Select/MultiSelect/OptionList.d.ts +0 -0
  144. package/types/components/Select/MultiSelect/index.d.ts +0 -0
  145. package/types/components/Select/SingleSelect/Option.d.ts +0 -0
  146. package/types/components/Select/SingleSelect/OptionList.d.ts +0 -0
  147. package/types/components/Select/SingleSelect/StyledSingleSelect.d.ts +0 -0
  148. package/types/components/Select/SingleSelect/index.d.ts +0 -0
  149. package/types/components/Select/StyledSelect.d.ts +0 -0
  150. package/types/components/Select/helpers.d.ts +0 -0
  151. package/types/components/Select/index.d.ts +0 -0
  152. package/types/components/Select/types.d.ts +0 -0
  153. package/types/components/Skeleton/StyledSkeleton.d.ts +0 -0
  154. package/types/components/Skeleton/index.d.ts +0 -0
  155. package/types/components/Slider/index.d.ts +0 -0
  156. package/types/components/Spinner/AnimatedSpinner.d.ts +0 -0
  157. package/types/components/Spinner/StyledSpinner.d.ts +0 -0
  158. package/types/components/Spinner/index.d.ts +0 -0
  159. package/types/components/Success/StyledSuccess.d.ts +0 -0
  160. package/types/components/Success/index.d.ts +0 -0
  161. package/types/components/Swipeable/StyledSwipeable.d.ts +0 -0
  162. package/types/components/Swipeable/SwipeableAction.d.ts +0 -0
  163. package/types/components/Swipeable/index.d.ts +0 -0
  164. package/types/components/Switch/SelectorSwitch/Option.d.ts +0 -0
  165. package/types/components/Switch/SelectorSwitch/StyledSelectorSwitch.d.ts +0 -0
  166. package/types/components/Switch/SelectorSwitch/index.d.ts +0 -0
  167. package/types/components/Switch/StyledSwitch.d.ts +0 -0
  168. package/types/components/Switch/index.d.ts +0 -0
  169. package/types/components/Tabs/ActiveTabIndicator.d.ts +0 -0
  170. package/types/components/Tabs/SceneView.d.ts +0 -0
  171. package/types/components/Tabs/ScrollableTabs.d.ts +0 -0
  172. package/types/components/Tabs/StyledScrollableTabs.d.ts +0 -0
  173. package/types/components/Tabs/StyledTabs.d.ts +0 -0
  174. package/types/components/Tabs/TabWithBadge.d.ts +0 -0
  175. package/types/components/Tabs/index.d.ts +0 -0
  176. package/types/components/Tabs/useIsFocused.d.ts +0 -0
  177. package/types/components/Tabs/utils.d.ts +0 -0
  178. package/types/components/Tag/StyledTag.d.ts +0 -0
  179. package/types/components/Tag/index.d.ts +0 -0
  180. package/types/components/TextInput/StyledTextInput.d.ts +0 -0
  181. package/types/components/TextInput/index.d.ts +0 -0
  182. package/types/components/TimePicker/StyledTimePicker.d.ts +0 -0
  183. package/types/components/TimePicker/TimePickerAndroid.d.ts +0 -0
  184. package/types/components/TimePicker/TimePickerIOS.d.ts +0 -0
  185. package/types/components/TimePicker/index.d.ts +0 -0
  186. package/types/components/TimePicker/types.d.ts +0 -0
  187. package/types/components/Toast/StyledToast.d.ts +0 -0
  188. package/types/components/Toast/Toast.d.ts +0 -0
  189. package/types/components/Toast/ToastContainer.d.ts +0 -0
  190. package/types/components/Toast/ToastContext.d.ts +0 -0
  191. package/types/components/Toast/ToastProvider.d.ts +0 -0
  192. package/types/components/Toast/index.d.ts +0 -0
  193. package/types/components/Toast/types.d.ts +0 -0
  194. package/types/components/Toolbar/StyledToolbar.d.ts +0 -0
  195. package/types/components/Toolbar/ToolbarGroup.d.ts +0 -0
  196. package/types/components/Toolbar/ToolbarItem.d.ts +0 -0
  197. package/types/components/Toolbar/index.d.ts +0 -0
  198. package/types/components/Typography/Text/StyledText.d.ts +0 -0
  199. package/types/components/Typography/Text/index.d.ts +0 -0
  200. package/types/components/Typography/index.d.ts +0 -0
  201. package/types/index.d.ts +0 -0
  202. package/types/testHelpers/renderWithTheme.d.ts +0 -0
  203. package/types/theme/ThemeProvider.d.ts +0 -0
  204. package/types/theme/ThemeSwitcher.d.ts +0 -0
  205. package/types/theme/components/accordion.d.ts +0 -0
  206. package/types/theme/components/alert.d.ts +0 -0
  207. package/types/theme/components/attachment.d.ts +0 -0
  208. package/types/theme/components/avatar.d.ts +0 -0
  209. package/types/theme/components/badge.d.ts +0 -0
  210. package/types/theme/components/bottomNavigation.d.ts +0 -0
  211. package/types/theme/components/bottomSheet.d.ts +0 -0
  212. package/types/theme/components/button.d.ts +0 -0
  213. package/types/theme/components/calendar.d.ts +0 -0
  214. package/types/theme/components/card.d.ts +0 -0
  215. package/types/theme/components/cardCarousel.d.ts +0 -0
  216. package/types/theme/components/carousel.d.ts +0 -0
  217. package/types/theme/components/checkbox.d.ts +0 -0
  218. package/types/theme/components/contentNavigator.d.ts +0 -0
  219. package/types/theme/components/datePicker.d.ts +0 -0
  220. package/types/theme/components/divider.d.ts +0 -0
  221. package/types/theme/components/drawer.d.ts +0 -0
  222. package/types/theme/components/empty.d.ts +0 -0
  223. package/types/theme/components/error.d.ts +0 -0
  224. package/types/theme/components/fab.d.ts +0 -0
  225. package/types/theme/components/icon.d.ts +0 -0
  226. package/types/theme/components/image.d.ts +0 -0
  227. package/types/theme/components/list.d.ts +0 -0
  228. package/types/theme/components/pageControl.d.ts +0 -0
  229. package/types/theme/components/pinInput.d.ts +0 -0
  230. package/types/theme/components/progress.d.ts +0 -0
  231. package/types/theme/components/radio.d.ts +0 -0
  232. package/types/theme/components/refreshControl.d.ts +0 -0
  233. package/types/theme/components/richTextEditor.d.ts +0 -0
  234. package/types/theme/components/sectionHeading.d.ts +0 -0
  235. package/types/theme/components/select.d.ts +0 -0
  236. package/types/theme/components/skeleton.d.ts +0 -0
  237. package/types/theme/components/slider.d.ts +0 -0
  238. package/types/theme/components/spinner.d.ts +0 -0
  239. package/types/theme/components/success.d.ts +0 -0
  240. package/types/theme/components/swipeable.d.ts +0 -0
  241. package/types/theme/components/switch.d.ts +0 -0
  242. package/types/theme/components/tabs.d.ts +0 -0
  243. package/types/theme/components/tag.d.ts +0 -0
  244. package/types/theme/components/textInput.d.ts +0 -0
  245. package/types/theme/components/timePicker.d.ts +0 -0
  246. package/types/theme/components/toast.d.ts +0 -0
  247. package/types/theme/components/toolbar.d.ts +0 -0
  248. package/types/theme/components/typography.d.ts +0 -0
  249. package/types/theme/getTheme.d.ts +0 -0
  250. package/types/theme/global/borders.d.ts +0 -0
  251. package/types/theme/global/colors/eBens.d.ts +0 -0
  252. package/types/theme/global/colors/global.d.ts +0 -0
  253. package/types/theme/global/colors/globalDark.d.ts +0 -0
  254. package/types/theme/global/colors/jobs.d.ts +0 -0
  255. package/types/theme/global/colors/swag.d.ts +0 -0
  256. package/types/theme/global/colors/swagDark.d.ts +0 -0
  257. package/types/theme/global/colors/types.d.ts +0 -0
  258. package/types/theme/global/colors/wallet.d.ts +0 -0
  259. package/types/theme/global/colors/work.d.ts +0 -0
  260. package/types/theme/global/index.d.ts +0 -0
  261. package/types/theme/global/scale.d.ts +0 -0
  262. package/types/theme/global/sizes.d.ts +0 -0
  263. package/types/theme/global/space.d.ts +0 -0
  264. package/types/theme/global/typography.d.ts +0 -0
  265. package/types/theme/index.d.ts +0 -0
  266. package/types/types.d.ts +0 -0
  267. package/types/utils/functions.d.ts +0 -0
  268. package/types/utils/helpers.d.ts +0 -0
  269. package/types/utils/hooks.d.ts +0 -0
  270. package/types/utils/scale.d.ts +0 -0
  271. package/.turbo/turbo-build$colon$types.log +0 -0
  272. package/.turbo/turbo-build.log +0 -8
  273. package/.turbo/turbo-lint.log +0 -183
  274. package/.turbo/turbo-publish:npm.log +0 -9
  275. package/.turbo/turbo-test.log +0 -4726
  276. package/.turbo/turbo-type-check.log +0 -0
  277. package/types/components/Search/SearchBasic.d.ts +0 -31
  278. package/types/components/Search/SearchCompound.d.ts +0 -60
  279. package/types/components/Tabs/ScrollableTabsHeader.d.ts +0 -35
package/CHANGELOG.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # @hero-design/rn
2
2
 
3
- ## 8.77.1-alpha.0
3
+ ## 8.78.0
4
4
 
5
- ### Patch Changes
5
+ ### Minor Changes
6
6
 
7
- - trigger release
7
+ - [#3480](https://github.com/Thinkei/hero-design/pull/3480) [`f27e980c7e5eec77a09a0646fad7a5c990b2ad0c`](https://github.com/Thinkei/hero-design/commit/f27e980c7e5eec77a09a0646fad7a5c990b2ad0c) Thanks [@phucdph](https://github.com/phucdph)! - [Search.OneLine] Support clearable input
8
8
 
9
9
  ## 8.77.0
10
10
 
package/es/index.js CHANGED
@@ -9728,7 +9728,7 @@ var BottomSheet = function BottomSheet(_ref) {
9728
9728
  if (open && !visible) {
9729
9729
  setVisibility(open);
9730
9730
  }
9731
- }, [open]);
9731
+ }, [open, visible]);
9732
9732
  // Animation
9733
9733
  useEffect(function () {
9734
9734
  var animation = Animated.timing(animatedValue.current, {
@@ -9746,7 +9746,7 @@ var BottomSheet = function BottomSheet(_ref) {
9746
9746
  return function () {
9747
9747
  return animation.stop();
9748
9748
  };
9749
- }, [open]);
9749
+ }, [open, onDismiss, onAnimationEnd]);
9750
9750
  var interpolateY = animatedValue.current.interpolate({
9751
9751
  inputRange: [0, 1],
9752
9752
  outputRange: [height, 0]
@@ -36999,7 +36999,7 @@ var SearchTwoLine = function SearchTwoLine(props) {
36999
36999
  })));
37000
37000
  };
37001
37001
 
37002
- var _excluded$2 = ["prefix", "suffix", "style", "allowFontScaling", "accessibilityLabelledBy", "editable", "maxLength", "value", "defaultValue", "placeholder", "disabled", "testID", "variant"];
37002
+ var _excluded$2 = ["prefix", "suffix", "style", "allowFontScaling", "accessibilityLabelledBy", "editable", "maxLength", "value", "defaultValue", "placeholder", "disabled", "testID", "variant", "clearable"];
37003
37003
  var getState = function getState(_ref) {
37004
37004
  var disabled = _ref.disabled,
37005
37005
  editable = _ref.editable,
@@ -37041,6 +37041,8 @@ var SearchOneLine = /*#__PURE__*/forwardRef(function (props, ref) {
37041
37041
  testID = props.testID,
37042
37042
  _props$variant = props.variant,
37043
37043
  variant = _props$variant === void 0 ? 'basic' : _props$variant,
37044
+ _props$clearable = props.clearable,
37045
+ clearable = _props$clearable === void 0 ? false : _props$clearable,
37044
37046
  nativeProps = _objectWithoutProperties(props, _excluded$2);
37045
37047
  var _React$useState = React__default.useState(false),
37046
37048
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -37083,6 +37085,21 @@ var SearchOneLine = /*#__PURE__*/forwardRef(function (props, ref) {
37083
37085
  }
37084
37086
  };
37085
37087
  }, [innerTextInput]);
37088
+ var renderClearButton = function renderClearButton() {
37089
+ return /*#__PURE__*/React__default.createElement(StyledAffixContainer, null, /*#__PURE__*/React__default.createElement(CompoundButton.Icon, {
37090
+ onPress: function onPress() {
37091
+ var _innerTextInput$curre6, _nativeProps$onChange;
37092
+ (_innerTextInput$curre6 = innerTextInput.current) === null || _innerTextInput$curre6 === void 0 || _innerTextInput$curre6.clear();
37093
+ (_nativeProps$onChange = nativeProps.onChangeText) === null || _nativeProps$onChange === void 0 || _nativeProps$onChange.call(nativeProps, '');
37094
+ },
37095
+ intent: "text",
37096
+ testID: "input-clear-button",
37097
+ icon: "circle-cancel",
37098
+ size: "small",
37099
+ disabled: state === 'disabled' || state === 'readonly'
37100
+ }));
37101
+ };
37102
+ var shouldShowClearButton = clearable && (state === 'filled' || isFocused) && !isEmptyValue;
37086
37103
  return /*#__PURE__*/React__default.createElement(StyledContainer, {
37087
37104
  pointerEvents: state === 'disabled' || state === 'readonly' ? 'none' : 'auto',
37088
37105
  testID: testID,
@@ -37120,7 +37137,7 @@ var SearchOneLine = /*#__PURE__*/forwardRef(function (props, ref) {
37120
37137
  ref: function ref(rnTextInputRef) {
37121
37138
  innerTextInput.current = rnTextInputRef;
37122
37139
  }
37123
- }), !!suffix && renderSuffix({
37140
+ }), shouldShowClearButton ? renderClearButton() : !!suffix && renderSuffix({
37124
37141
  suffix: suffix
37125
37142
  })));
37126
37143
  });
package/lib/index.js CHANGED
@@ -9755,7 +9755,7 @@ var BottomSheet = function BottomSheet(_ref) {
9755
9755
  if (open && !visible) {
9756
9756
  setVisibility(open);
9757
9757
  }
9758
- }, [open]);
9758
+ }, [open, visible]);
9759
9759
  // Animation
9760
9760
  React.useEffect(function () {
9761
9761
  var animation = reactNative.Animated.timing(animatedValue.current, {
@@ -9773,7 +9773,7 @@ var BottomSheet = function BottomSheet(_ref) {
9773
9773
  return function () {
9774
9774
  return animation.stop();
9775
9775
  };
9776
- }, [open]);
9776
+ }, [open, onDismiss, onAnimationEnd]);
9777
9777
  var interpolateY = animatedValue.current.interpolate({
9778
9778
  inputRange: [0, 1],
9779
9779
  outputRange: [height, 0]
@@ -37026,7 +37026,7 @@ var SearchTwoLine = function SearchTwoLine(props) {
37026
37026
  })));
37027
37027
  };
37028
37028
 
37029
- var _excluded$2 = ["prefix", "suffix", "style", "allowFontScaling", "accessibilityLabelledBy", "editable", "maxLength", "value", "defaultValue", "placeholder", "disabled", "testID", "variant"];
37029
+ var _excluded$2 = ["prefix", "suffix", "style", "allowFontScaling", "accessibilityLabelledBy", "editable", "maxLength", "value", "defaultValue", "placeholder", "disabled", "testID", "variant", "clearable"];
37030
37030
  var getState = function getState(_ref) {
37031
37031
  var disabled = _ref.disabled,
37032
37032
  editable = _ref.editable,
@@ -37068,6 +37068,8 @@ var SearchOneLine = /*#__PURE__*/React.forwardRef(function (props, ref) {
37068
37068
  testID = props.testID,
37069
37069
  _props$variant = props.variant,
37070
37070
  variant = _props$variant === void 0 ? 'basic' : _props$variant,
37071
+ _props$clearable = props.clearable,
37072
+ clearable = _props$clearable === void 0 ? false : _props$clearable,
37071
37073
  nativeProps = _objectWithoutProperties(props, _excluded$2);
37072
37074
  var _React$useState = React__namespace.default.useState(false),
37073
37075
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -37110,6 +37112,21 @@ var SearchOneLine = /*#__PURE__*/React.forwardRef(function (props, ref) {
37110
37112
  }
37111
37113
  };
37112
37114
  }, [innerTextInput]);
37115
+ var renderClearButton = function renderClearButton() {
37116
+ return /*#__PURE__*/React__namespace.default.createElement(StyledAffixContainer, null, /*#__PURE__*/React__namespace.default.createElement(CompoundButton.Icon, {
37117
+ onPress: function onPress() {
37118
+ var _innerTextInput$curre6, _nativeProps$onChange;
37119
+ (_innerTextInput$curre6 = innerTextInput.current) === null || _innerTextInput$curre6 === void 0 || _innerTextInput$curre6.clear();
37120
+ (_nativeProps$onChange = nativeProps.onChangeText) === null || _nativeProps$onChange === void 0 || _nativeProps$onChange.call(nativeProps, '');
37121
+ },
37122
+ intent: "text",
37123
+ testID: "input-clear-button",
37124
+ icon: "circle-cancel",
37125
+ size: "small",
37126
+ disabled: state === 'disabled' || state === 'readonly'
37127
+ }));
37128
+ };
37129
+ var shouldShowClearButton = clearable && (state === 'filled' || isFocused) && !isEmptyValue;
37113
37130
  return /*#__PURE__*/React__namespace.default.createElement(StyledContainer, {
37114
37131
  pointerEvents: state === 'disabled' || state === 'readonly' ? 'none' : 'auto',
37115
37132
  testID: testID,
@@ -37147,7 +37164,7 @@ var SearchOneLine = /*#__PURE__*/React.forwardRef(function (props, ref) {
37147
37164
  ref: function ref(rnTextInputRef) {
37148
37165
  innerTextInput.current = rnTextInputRef;
37149
37166
  }
37150
- }), !!suffix && renderSuffix({
37167
+ }), shouldShowClearButton ? renderClearButton() : !!suffix && renderSuffix({
37151
37168
  suffix: suffix
37152
37169
  })));
37153
37170
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hero-design/rn",
3
- "version": "8.77.1-alpha.10",
3
+ "version": "8.78.0-alpha.1",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -93,5 +93,6 @@
93
93
  "ts-jest": "^29.1.1",
94
94
  "typescript": "4.8.4"
95
95
  },
96
- "prettier": "prettier-config-hd"
96
+ "prettier": "prettier-config-hd",
97
+ "react-native": "src/index.ts"
97
98
  }
@@ -127,7 +127,7 @@ const BottomSheet = ({
127
127
  if (open && !visible) {
128
128
  setVisibility(open);
129
129
  }
130
- }, [open]);
130
+ }, [open, visible]);
131
131
 
132
132
  // Animation
133
133
  useEffect(() => {
@@ -147,7 +147,7 @@ const BottomSheet = ({
147
147
  });
148
148
 
149
149
  return () => animation.stop();
150
- }, [open]);
150
+ }, [open, onDismiss, onAnimationEnd]);
151
151
 
152
152
  const interpolateY = animatedValue.current.interpolate({
153
153
  inputRange: [0, 1],
@@ -8,12 +8,14 @@ import type {
8
8
  } from 'react-native';
9
9
  import {
10
10
  State,
11
+ StyledAffixContainer,
11
12
  StyledContainer,
12
13
  StyledInput,
13
14
  StyledInputContainer,
14
15
  } from './StyledSearch';
15
16
  import { IconName } from '../Icon';
16
17
  import { renderPrefix, renderSuffix } from './utils';
18
+ import Button from '../Button';
17
19
 
18
20
  export type SearchOneLineHandles = Pick<
19
21
  RNTextInput,
@@ -71,6 +73,10 @@ interface SearchOneLineProps extends NativeTextInputProps {
71
73
  * @default 'basic'
72
74
  */
73
75
  variant?: 'basic' | 'reversed';
76
+ /**
77
+ * Clearable input.
78
+ */
79
+ clearable?: boolean;
74
80
  }
75
81
 
76
82
  export const getState = ({
@@ -121,6 +127,7 @@ const SearchOneLine = forwardRef<SearchOneLineHandles, SearchOneLineProps>(
121
127
  disabled = false,
122
128
  testID,
123
129
  variant = 'basic',
130
+ clearable = false,
124
131
  ...nativeProps
125
132
  } = props;
126
133
 
@@ -155,6 +162,27 @@ const SearchOneLine = forwardRef<SearchOneLineHandles, SearchOneLineProps>(
155
162
  [innerTextInput]
156
163
  );
157
164
 
165
+ const renderClearButton = () => {
166
+ return (
167
+ <StyledAffixContainer>
168
+ <Button.Icon
169
+ onPress={() => {
170
+ innerTextInput.current?.clear();
171
+ nativeProps.onChangeText?.('');
172
+ }}
173
+ intent="text"
174
+ testID="input-clear-button"
175
+ icon="circle-cancel"
176
+ size="small"
177
+ disabled={state === 'disabled' || state === 'readonly'}
178
+ />
179
+ </StyledAffixContainer>
180
+ );
181
+ };
182
+
183
+ const shouldShowClearButton =
184
+ clearable && (state === 'filled' || isFocused) && !isEmptyValue;
185
+
158
186
  return (
159
187
  <StyledContainer
160
188
  pointerEvents={
@@ -192,7 +220,9 @@ const SearchOneLine = forwardRef<SearchOneLineHandles, SearchOneLineProps>(
192
220
  innerTextInput.current = rnTextInputRef;
193
221
  },
194
222
  })}
195
- {!!suffix && renderSuffix({ suffix })}
223
+ {shouldShowClearButton
224
+ ? renderClearButton()
225
+ : !!suffix && renderSuffix({ suffix })}
196
226
  </StyledInputContainer>
197
227
  </StyledContainer>
198
228
  );
@@ -54,6 +54,12 @@ describe('SearchOneLine', () => {
54
54
  'input-suffix'
55
55
  )
56
56
  ).toHaveLength(1);
57
+
58
+ expect(
59
+ within(getByTestId('idle-search-text-input')).queryAllByTestId(
60
+ 'input-clear-button'
61
+ )
62
+ ).toHaveLength(0);
57
63
  });
58
64
 
59
65
  it('renders reserved variant correctly', () => {
@@ -104,77 +110,130 @@ describe('SearchOneLine', () => {
104
110
  within(getByTestId('idle-search-input')).getByText('Suffix')
105
111
  ).toBeTruthy();
106
112
  });
113
+ });
107
114
 
108
- describe('handler', () => {
109
- it('onChangeText work correctly', () => {
110
- const onChangeText = jest.fn();
111
- const { getByTestId } = renderWithTheme(
112
- <SearchOneLine
113
- prefix="search-outlined"
114
- testID="idle-search-input"
115
- onChangeText={onChangeText}
116
- />
117
- );
118
- const input = within(getByTestId('idle-search-input')).getByTestId(
119
- 'text-input'
120
- );
121
- fireEvent.changeText(input, 'Park Chae Young');
122
- expect(onChangeText).toHaveBeenCalledWith('Park Chae Young');
123
- });
115
+ describe('handler', () => {
116
+ it('onChangeText work correctly', () => {
117
+ const onChangeText = jest.fn();
118
+ const { getByTestId } = renderWithTheme(
119
+ <SearchOneLine
120
+ prefix="search-outlined"
121
+ testID="idle-search-input"
122
+ onChangeText={onChangeText}
123
+ />
124
+ );
125
+ const input = within(getByTestId('idle-search-input')).getByTestId(
126
+ 'text-input'
127
+ );
128
+ fireEvent.changeText(input, 'Park Chae Young');
129
+ expect(onChangeText).toHaveBeenCalledWith('Park Chae Young');
130
+ });
124
131
 
125
- it('onFocus work correctly', () => {
126
- const onFocus = jest.fn();
127
- const { getByTestId } = renderWithTheme(
128
- <SearchOneLine
129
- prefix="search-outlined"
130
- testID="idle-search-input"
131
- onFocus={onFocus}
132
- />
133
- );
134
- const input = within(getByTestId('idle-search-input')).getByTestId(
135
- 'text-input'
136
- );
137
- fireEvent(input, 'focus');
138
- expect(onFocus).toHaveBeenCalled();
139
- });
132
+ it('onFocus work correctly', () => {
133
+ const onFocus = jest.fn();
134
+ const { getByTestId } = renderWithTheme(
135
+ <SearchOneLine
136
+ prefix="search-outlined"
137
+ testID="idle-search-input"
138
+ onFocus={onFocus}
139
+ />
140
+ );
141
+ const input = within(getByTestId('idle-search-input')).getByTestId(
142
+ 'text-input'
143
+ );
144
+ fireEvent(input, 'focus');
145
+ expect(onFocus).toHaveBeenCalled();
146
+ });
140
147
 
141
- it('onBlur work correctly', () => {
142
- const onBlur = jest.fn();
143
- const { getByTestId } = renderWithTheme(
144
- <SearchOneLine
145
- prefix="search-outlined"
146
- testID="idle-search-input"
147
- onBlur={onBlur}
148
- />
149
- );
150
- const input = within(getByTestId('idle-search-input')).getByTestId(
151
- 'text-input'
152
- );
153
- fireEvent(input, 'blur');
154
- expect(onBlur).toHaveBeenCalled();
155
- });
148
+ it('onBlur work correctly', () => {
149
+ const onBlur = jest.fn();
150
+ const { getByTestId } = renderWithTheme(
151
+ <SearchOneLine
152
+ prefix="search-outlined"
153
+ testID="idle-search-input"
154
+ onBlur={onBlur}
155
+ />
156
+ );
157
+ const input = within(getByTestId('idle-search-input')).getByTestId(
158
+ 'text-input'
159
+ );
160
+ fireEvent(input, 'blur');
161
+ expect(onBlur).toHaveBeenCalled();
162
+ });
163
+
164
+ it('clearable input work correctly', () => {
165
+ const onChangeText = jest.fn();
166
+ const { getByTestId } = renderWithTheme(
167
+ <SearchOneLine
168
+ prefix="search-outlined"
169
+ testID="idle-search-input"
170
+ onChangeText={onChangeText}
171
+ clearable
172
+ value="On the ground"
173
+ />
174
+ );
175
+ const clearButton = within(getByTestId('idle-search-input')).getByTestId(
176
+ 'input-clear-button'
177
+ );
178
+ fireEvent.press(clearButton);
179
+ expect(onChangeText).toHaveBeenCalledWith('');
156
180
  });
157
181
  });
182
+ });
158
183
 
159
- describe('filled', () => {
160
- it('renders correctly', () => {
161
- const { toJSON, queryAllByTestId, queryAllByDisplayValue } =
162
- renderWithTheme(
163
- <SearchOneLine
164
- prefix="search-outlined"
165
- suffix="adjustment"
166
- testID="idle-search-text-input"
167
- placeholder="Search"
168
- value="Jennie Kim"
169
- />
170
- );
184
+ describe('filled', () => {
185
+ it('renders correctly', () => {
186
+ const { toJSON, queryAllByTestId, queryAllByDisplayValue } =
187
+ renderWithTheme(
188
+ <SearchOneLine
189
+ prefix="search-outlined"
190
+ suffix="adjustment"
191
+ testID="idle-search-text-input"
192
+ placeholder="Search"
193
+ value="Jennie Kim"
194
+ />
195
+ );
171
196
 
172
- expect(toJSON()).toMatchSnapshot();
173
- expect(queryAllByDisplayValue('Jennie Kim')).toHaveLength(1);
174
- expect(queryAllByTestId('input-prefix')).toHaveLength(1);
175
- expect(queryAllByTestId('input-suffix')).toHaveLength(1);
176
- expect(queryAllByTestId('text-input')).toHaveLength(1);
177
- });
197
+ expect(toJSON()).toMatchSnapshot();
198
+ expect(queryAllByDisplayValue('Jennie Kim')).toHaveLength(1);
199
+ expect(queryAllByTestId('input-prefix')).toHaveLength(1);
200
+ expect(queryAllByTestId('input-suffix')).toHaveLength(1);
201
+ expect(queryAllByTestId('text-input')).toHaveLength(1);
202
+ });
203
+
204
+ it('renders clearable input correctly', () => {
205
+ const { getByTestId, toJSON } = renderWithTheme(
206
+ <SearchOneLine
207
+ prefix="search-outlined"
208
+ clearable
209
+ testID="idle-search-text-input"
210
+ placeholder="Search"
211
+ value="Eyes wide open"
212
+ />
213
+ );
214
+
215
+ expect(toJSON()).toMatchSnapshot();
216
+ expect(getByTestId('idle-search-text-input')).toBeTruthy();
217
+ expect(
218
+ within(getByTestId('idle-search-text-input')).queryAllByTestId(
219
+ 'text-input'
220
+ )
221
+ ).toHaveLength(1);
222
+ expect(
223
+ within(getByTestId('idle-search-text-input')).queryAllByTestId(
224
+ 'input-prefix'
225
+ )
226
+ ).toHaveLength(1);
227
+ expect(
228
+ within(getByTestId('idle-search-text-input')).queryAllByTestId(
229
+ 'input-suffix'
230
+ )
231
+ ).toHaveLength(0);
232
+ expect(
233
+ within(getByTestId('idle-search-text-input')).queryAllByTestId(
234
+ 'input-clear-button'
235
+ )
236
+ ).toHaveLength(1);
178
237
  });
179
238
 
180
239
  describe('readonly', () => {