@hero-design/rn 8.77.1-alpha.0 → 8.78.0-alpha.0

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 -7
  2. package/es/index.js +22 -3
  3. package/lib/index.js +22 -3
  4. package/package.json +9 -8
  5. package/src/components/BottomSheet/index.tsx +4 -1
  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,14 +1,10 @@
1
1
  # @hero-design/rn
2
2
 
3
- ## 8.77.1-alpha.0
3
+ ## 8.78.0
4
4
 
5
- ### Patch Changes
6
-
7
- - test release workflow
5
+ ### Minor Changes
8
6
 
9
- - Updated dependencies []:
10
- - @hero-design/colors@8.45.2-alpha.0
11
- - @hero-design/react-native-month-year-picker@8.42.11-alpha.0
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
12
8
 
13
9
  ## 8.77.0
14
10
 
package/es/index.js CHANGED
@@ -9737,8 +9737,10 @@ var BottomSheet = function BottomSheet(_ref) {
9737
9737
  useNativeDriver: true
9738
9738
  });
9739
9739
  animation.start(function () {
9740
- if (!open && canCallOnDismiss.current) {
9740
+ if (!open) {
9741
9741
  setVisibility(false);
9742
+ }
9743
+ if (!open && canCallOnDismiss.current) {
9742
9744
  onDismiss === null || onDismiss === void 0 || onDismiss();
9743
9745
  }
9744
9746
  onAnimationEnd === null || onAnimationEnd === void 0 || onAnimationEnd();
@@ -36999,7 +37001,7 @@ var SearchTwoLine = function SearchTwoLine(props) {
36999
37001
  })));
37000
37002
  };
37001
37003
 
37002
- var _excluded$2 = ["prefix", "suffix", "style", "allowFontScaling", "accessibilityLabelledBy", "editable", "maxLength", "value", "defaultValue", "placeholder", "disabled", "testID", "variant"];
37004
+ var _excluded$2 = ["prefix", "suffix", "style", "allowFontScaling", "accessibilityLabelledBy", "editable", "maxLength", "value", "defaultValue", "placeholder", "disabled", "testID", "variant", "clearable"];
37003
37005
  var getState = function getState(_ref) {
37004
37006
  var disabled = _ref.disabled,
37005
37007
  editable = _ref.editable,
@@ -37041,6 +37043,8 @@ var SearchOneLine = /*#__PURE__*/forwardRef(function (props, ref) {
37041
37043
  testID = props.testID,
37042
37044
  _props$variant = props.variant,
37043
37045
  variant = _props$variant === void 0 ? 'basic' : _props$variant,
37046
+ _props$clearable = props.clearable,
37047
+ clearable = _props$clearable === void 0 ? false : _props$clearable,
37044
37048
  nativeProps = _objectWithoutProperties(props, _excluded$2);
37045
37049
  var _React$useState = React__default.useState(false),
37046
37050
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -37083,6 +37087,21 @@ var SearchOneLine = /*#__PURE__*/forwardRef(function (props, ref) {
37083
37087
  }
37084
37088
  };
37085
37089
  }, [innerTextInput]);
37090
+ var renderClearButton = function renderClearButton() {
37091
+ return /*#__PURE__*/React__default.createElement(StyledAffixContainer, null, /*#__PURE__*/React__default.createElement(CompoundButton.Icon, {
37092
+ onPress: function onPress() {
37093
+ var _innerTextInput$curre6, _nativeProps$onChange;
37094
+ (_innerTextInput$curre6 = innerTextInput.current) === null || _innerTextInput$curre6 === void 0 || _innerTextInput$curre6.clear();
37095
+ (_nativeProps$onChange = nativeProps.onChangeText) === null || _nativeProps$onChange === void 0 || _nativeProps$onChange.call(nativeProps, '');
37096
+ },
37097
+ intent: "text",
37098
+ testID: "input-clear-button",
37099
+ icon: "circle-cancel",
37100
+ size: "small",
37101
+ disabled: state === 'disabled' || state === 'readonly'
37102
+ }));
37103
+ };
37104
+ var shouldShowClearButton = clearable && (state === 'filled' || isFocused) && !isEmptyValue;
37086
37105
  return /*#__PURE__*/React__default.createElement(StyledContainer, {
37087
37106
  pointerEvents: state === 'disabled' || state === 'readonly' ? 'none' : 'auto',
37088
37107
  testID: testID,
@@ -37120,7 +37139,7 @@ var SearchOneLine = /*#__PURE__*/forwardRef(function (props, ref) {
37120
37139
  ref: function ref(rnTextInputRef) {
37121
37140
  innerTextInput.current = rnTextInputRef;
37122
37141
  }
37123
- }), !!suffix && renderSuffix({
37142
+ }), shouldShowClearButton ? renderClearButton() : !!suffix && renderSuffix({
37124
37143
  suffix: suffix
37125
37144
  })));
37126
37145
  });
package/lib/index.js CHANGED
@@ -9764,8 +9764,10 @@ var BottomSheet = function BottomSheet(_ref) {
9764
9764
  useNativeDriver: true
9765
9765
  });
9766
9766
  animation.start(function () {
9767
- if (!open && canCallOnDismiss.current) {
9767
+ if (!open) {
9768
9768
  setVisibility(false);
9769
+ }
9770
+ if (!open && canCallOnDismiss.current) {
9769
9771
  onDismiss === null || onDismiss === void 0 || onDismiss();
9770
9772
  }
9771
9773
  onAnimationEnd === null || onAnimationEnd === void 0 || onAnimationEnd();
@@ -37026,7 +37028,7 @@ var SearchTwoLine = function SearchTwoLine(props) {
37026
37028
  })));
37027
37029
  };
37028
37030
 
37029
- var _excluded$2 = ["prefix", "suffix", "style", "allowFontScaling", "accessibilityLabelledBy", "editable", "maxLength", "value", "defaultValue", "placeholder", "disabled", "testID", "variant"];
37031
+ var _excluded$2 = ["prefix", "suffix", "style", "allowFontScaling", "accessibilityLabelledBy", "editable", "maxLength", "value", "defaultValue", "placeholder", "disabled", "testID", "variant", "clearable"];
37030
37032
  var getState = function getState(_ref) {
37031
37033
  var disabled = _ref.disabled,
37032
37034
  editable = _ref.editable,
@@ -37068,6 +37070,8 @@ var SearchOneLine = /*#__PURE__*/React.forwardRef(function (props, ref) {
37068
37070
  testID = props.testID,
37069
37071
  _props$variant = props.variant,
37070
37072
  variant = _props$variant === void 0 ? 'basic' : _props$variant,
37073
+ _props$clearable = props.clearable,
37074
+ clearable = _props$clearable === void 0 ? false : _props$clearable,
37071
37075
  nativeProps = _objectWithoutProperties(props, _excluded$2);
37072
37076
  var _React$useState = React__namespace.default.useState(false),
37073
37077
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -37110,6 +37114,21 @@ var SearchOneLine = /*#__PURE__*/React.forwardRef(function (props, ref) {
37110
37114
  }
37111
37115
  };
37112
37116
  }, [innerTextInput]);
37117
+ var renderClearButton = function renderClearButton() {
37118
+ return /*#__PURE__*/React__namespace.default.createElement(StyledAffixContainer, null, /*#__PURE__*/React__namespace.default.createElement(CompoundButton.Icon, {
37119
+ onPress: function onPress() {
37120
+ var _innerTextInput$curre6, _nativeProps$onChange;
37121
+ (_innerTextInput$curre6 = innerTextInput.current) === null || _innerTextInput$curre6 === void 0 || _innerTextInput$curre6.clear();
37122
+ (_nativeProps$onChange = nativeProps.onChangeText) === null || _nativeProps$onChange === void 0 || _nativeProps$onChange.call(nativeProps, '');
37123
+ },
37124
+ intent: "text",
37125
+ testID: "input-clear-button",
37126
+ icon: "circle-cancel",
37127
+ size: "small",
37128
+ disabled: state === 'disabled' || state === 'readonly'
37129
+ }));
37130
+ };
37131
+ var shouldShowClearButton = clearable && (state === 'filled' || isFocused) && !isEmptyValue;
37113
37132
  return /*#__PURE__*/React__namespace.default.createElement(StyledContainer, {
37114
37133
  pointerEvents: state === 'disabled' || state === 'readonly' ? 'none' : 'auto',
37115
37134
  testID: testID,
@@ -37147,7 +37166,7 @@ var SearchOneLine = /*#__PURE__*/React.forwardRef(function (props, ref) {
37147
37166
  ref: function ref(rnTextInputRef) {
37148
37167
  innerTextInput.current = rnTextInputRef;
37149
37168
  }
37150
- }), !!suffix && renderSuffix({
37169
+ }), shouldShowClearButton ? renderClearButton() : !!suffix && renderSuffix({
37151
37170
  suffix: suffix
37152
37171
  })));
37153
37172
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hero-design/rn",
3
- "version": "8.77.1-alpha.0",
3
+ "version": "8.78.0-alpha.0",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -22,13 +22,13 @@
22
22
  "@emotion/native": "^11.9.3",
23
23
  "@emotion/primitives-core": "11.0.0",
24
24
  "@emotion/react": "^11.9.3",
25
- "@hero-design/colors": "8.45.2-alpha.0",
25
+ "@hero-design/colors": "8.45.1",
26
26
  "date-fns": "^2.16.1",
27
27
  "hero-editor": "^1.9.21",
28
28
  "nanoid": "^4.0.2"
29
29
  },
30
30
  "peerDependencies": {
31
- "@hero-design/react-native-month-year-picker": "^8.42.11-alpha.0",
31
+ "@hero-design/react-native-month-year-picker": "^8.42.10",
32
32
  "@react-native-community/datetimepicker": "^3.5.2 || ^7.6.1",
33
33
  "@react-native-community/slider": "^4.5.1",
34
34
  "react": "18.2.0",
@@ -50,8 +50,8 @@
50
50
  "@eslint/compat": "^1.1.1",
51
51
  "@eslint/eslintrc": "^3.1.0",
52
52
  "@eslint/js": "^9.8.0",
53
- "@hero-design/eslint-plugin": "9.2.1-alpha.0",
54
- "@hero-design/react-native-month-year-picker": "^8.42.11-alpha.0",
53
+ "@hero-design/eslint-plugin": "9.2.0",
54
+ "@hero-design/react-native-month-year-picker": "^8.42.10",
55
55
  "@react-native-community/datetimepicker": "7.6.1",
56
56
  "@react-native-community/slider": "^4.5.1",
57
57
  "@rollup/plugin-babel": "^6.0.4",
@@ -70,12 +70,12 @@
70
70
  "babel-preset-expo": "^11.0.15",
71
71
  "core-js": "^3.33.0",
72
72
  "eslint": "^8.56.0",
73
- "eslint-config-hd": "8.42.5-alpha.0",
73
+ "eslint-config-hd": "8.42.4",
74
74
  "eslint-plugin-import": "^2.27.5",
75
75
  "jest": "^29.2.1",
76
76
  "jest-environment-jsdom": "^29.2.1",
77
77
  "jest-junit": "^16.0.0",
78
- "prettier-config-hd": "8.42.5-alpha.0",
78
+ "prettier-config-hd": "8.42.4",
79
79
  "react": "18.2.0",
80
80
  "react-dom": "^18.2.0",
81
81
  "react-native": "^0.74.5",
@@ -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
  }
@@ -138,8 +138,11 @@ const BottomSheet = ({
138
138
  });
139
139
 
140
140
  animation.start(() => {
141
- if (!open && canCallOnDismiss.current) {
141
+ if (!open) {
142
142
  setVisibility(false);
143
+ }
144
+
145
+ if (!open && canCallOnDismiss.current) {
143
146
  onDismiss?.();
144
147
  }
145
148
 
@@ -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', () => {