@hero-design/rn 8.77.1-alpha.10 → 8.78.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 (281) hide show
  1. package/.turbo/turbo-build.log +3 -4
  2. package/CHANGELOG.md +3 -3
  3. package/es/index.js +19 -2
  4. package/lib/index.js +19 -2
  5. package/package.json +1 -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/Icon/AnimatedIcon.d.ts +0 -0
  92. package/types/components/Icon/HeroIcon/index.d.ts +0 -0
  93. package/types/components/Icon/IconList.d.ts +0 -0
  94. package/types/components/Icon/index.d.ts +0 -0
  95. package/types/components/Icon/utils.d.ts +0 -0
  96. package/types/components/Image/index.d.ts +0 -0
  97. package/types/components/List/BasicListItem.d.ts +0 -0
  98. package/types/components/List/ListItem.d.ts +0 -0
  99. package/types/components/List/StyledBasicListItem.d.ts +0 -0
  100. package/types/components/List/StyledListItem.d.ts +0 -0
  101. package/types/components/List/index.d.ts +0 -0
  102. package/types/components/PageControl/StyledPageControl.d.ts +0 -0
  103. package/types/components/PageControl/index.d.ts +0 -0
  104. package/types/components/PinInput/PinCell.d.ts +0 -0
  105. package/types/components/PinInput/StyledPinInput.d.ts +0 -0
  106. package/types/components/PinInput/index.d.ts +0 -0
  107. package/types/components/Progress/ProgressBar.d.ts +0 -0
  108. package/types/components/Progress/ProgressCircle.d.ts +0 -0
  109. package/types/components/Progress/StyledProgressBar.d.ts +0 -0
  110. package/types/components/Progress/StyledProgressCircle.d.ts +0 -0
  111. package/types/components/Progress/__tests__/index.spec.d.ts +0 -0
  112. package/types/components/Progress/constants.d.ts +0 -0
  113. package/types/components/Progress/index.d.ts +0 -0
  114. package/types/components/Progress/types.d.ts +0 -0
  115. package/types/components/Radio/Radio.d.ts +0 -0
  116. package/types/components/Radio/RadioGroup.d.ts +0 -0
  117. package/types/components/Radio/StyledRadio.d.ts +0 -0
  118. package/types/components/Radio/index.d.ts +0 -0
  119. package/types/components/Radio/types.d.ts +0 -0
  120. package/types/components/RefreshControl/index.d.ts +0 -0
  121. package/types/components/RichTextEditor/EditorEvent.d.ts +0 -0
  122. package/types/components/RichTextEditor/EditorToolbar.d.ts +0 -0
  123. package/types/components/RichTextEditor/MentionList.d.ts +0 -0
  124. package/types/components/RichTextEditor/RichTextEditor.d.ts +0 -0
  125. package/types/components/RichTextEditor/StyledRichTextEditor.d.ts +0 -0
  126. package/types/components/RichTextEditor/StyledToolbar.d.ts +0 -0
  127. package/types/components/RichTextEditor/__mocks__/heroEditorApp.d.ts +0 -0
  128. package/types/components/RichTextEditor/constants.d.ts +0 -0
  129. package/types/components/RichTextEditor/heroEditorApp.d.ts +0 -0
  130. package/types/components/RichTextEditor/index.d.ts +0 -0
  131. package/types/components/RichTextEditor/types.d.ts +0 -0
  132. package/types/components/RichTextEditor/utils/events.d.ts +0 -0
  133. package/types/components/RichTextEditor/utils/rnWebView.d.ts +0 -0
  134. package/types/components/Search/SearchOneLine.d.ts +4 -0
  135. package/types/components/SectionHeading/StyledHeading.d.ts +0 -0
  136. package/types/components/SectionHeading/index.d.ts +0 -0
  137. package/types/components/Select/BaseOptionList.d.ts +0 -0
  138. package/types/components/Select/Footer.d.ts +0 -0
  139. package/types/components/Select/MultiSelect/Option.d.ts +0 -0
  140. package/types/components/Select/MultiSelect/OptionList.d.ts +0 -0
  141. package/types/components/Select/MultiSelect/index.d.ts +0 -0
  142. package/types/components/Select/SingleSelect/Option.d.ts +0 -0
  143. package/types/components/Select/SingleSelect/OptionList.d.ts +0 -0
  144. package/types/components/Select/SingleSelect/StyledSingleSelect.d.ts +0 -0
  145. package/types/components/Select/SingleSelect/index.d.ts +0 -0
  146. package/types/components/Select/StyledSelect.d.ts +0 -0
  147. package/types/components/Select/helpers.d.ts +0 -0
  148. package/types/components/Select/index.d.ts +0 -0
  149. package/types/components/Select/types.d.ts +0 -0
  150. package/types/components/Skeleton/StyledSkeleton.d.ts +0 -0
  151. package/types/components/Skeleton/index.d.ts +0 -0
  152. package/types/components/Slider/index.d.ts +0 -0
  153. package/types/components/Spinner/AnimatedSpinner.d.ts +0 -0
  154. package/types/components/Spinner/StyledSpinner.d.ts +0 -0
  155. package/types/components/Spinner/index.d.ts +0 -0
  156. package/types/components/Success/StyledSuccess.d.ts +0 -0
  157. package/types/components/Success/index.d.ts +0 -0
  158. package/types/components/Swipeable/StyledSwipeable.d.ts +0 -0
  159. package/types/components/Swipeable/SwipeableAction.d.ts +0 -0
  160. package/types/components/Swipeable/index.d.ts +0 -0
  161. package/types/components/Switch/SelectorSwitch/Option.d.ts +0 -0
  162. package/types/components/Switch/SelectorSwitch/StyledSelectorSwitch.d.ts +0 -0
  163. package/types/components/Switch/SelectorSwitch/index.d.ts +0 -0
  164. package/types/components/Switch/StyledSwitch.d.ts +0 -0
  165. package/types/components/Switch/index.d.ts +0 -0
  166. package/types/components/Tabs/ActiveTabIndicator.d.ts +0 -0
  167. package/types/components/Tabs/SceneView.d.ts +0 -0
  168. package/types/components/Tabs/ScrollableTabs.d.ts +0 -0
  169. package/types/components/Tabs/StyledScrollableTabs.d.ts +0 -0
  170. package/types/components/Tabs/StyledTabs.d.ts +0 -0
  171. package/types/components/Tabs/TabWithBadge.d.ts +0 -0
  172. package/types/components/Tabs/index.d.ts +0 -0
  173. package/types/components/Tabs/useIsFocused.d.ts +0 -0
  174. package/types/components/Tabs/utils.d.ts +0 -0
  175. package/types/components/Tag/StyledTag.d.ts +0 -0
  176. package/types/components/Tag/index.d.ts +0 -0
  177. package/types/components/TextInput/StyledTextInput.d.ts +0 -0
  178. package/types/components/TextInput/index.d.ts +0 -0
  179. package/types/components/TimePicker/StyledTimePicker.d.ts +0 -0
  180. package/types/components/TimePicker/TimePickerAndroid.d.ts +0 -0
  181. package/types/components/TimePicker/TimePickerIOS.d.ts +0 -0
  182. package/types/components/TimePicker/index.d.ts +0 -0
  183. package/types/components/TimePicker/types.d.ts +0 -0
  184. package/types/components/Toast/StyledToast.d.ts +0 -0
  185. package/types/components/Toast/Toast.d.ts +0 -0
  186. package/types/components/Toast/ToastContainer.d.ts +0 -0
  187. package/types/components/Toast/ToastContext.d.ts +0 -0
  188. package/types/components/Toast/ToastProvider.d.ts +0 -0
  189. package/types/components/Toast/index.d.ts +0 -0
  190. package/types/components/Toast/types.d.ts +0 -0
  191. package/types/components/Toolbar/StyledToolbar.d.ts +0 -0
  192. package/types/components/Toolbar/ToolbarGroup.d.ts +0 -0
  193. package/types/components/Toolbar/ToolbarItem.d.ts +0 -0
  194. package/types/components/Toolbar/index.d.ts +0 -0
  195. package/types/components/Typography/Text/StyledText.d.ts +0 -0
  196. package/types/components/Typography/Text/index.d.ts +0 -0
  197. package/types/components/Typography/index.d.ts +0 -0
  198. package/types/index.d.ts +0 -0
  199. package/types/testHelpers/renderWithTheme.d.ts +0 -0
  200. package/types/theme/ThemeProvider.d.ts +0 -0
  201. package/types/theme/ThemeSwitcher.d.ts +0 -0
  202. package/types/theme/components/accordion.d.ts +0 -0
  203. package/types/theme/components/alert.d.ts +0 -0
  204. package/types/theme/components/attachment.d.ts +0 -0
  205. package/types/theme/components/avatar.d.ts +0 -0
  206. package/types/theme/components/badge.d.ts +0 -0
  207. package/types/theme/components/bottomNavigation.d.ts +0 -0
  208. package/types/theme/components/bottomSheet.d.ts +0 -0
  209. package/types/theme/components/button.d.ts +0 -0
  210. package/types/theme/components/calendar.d.ts +0 -0
  211. package/types/theme/components/card.d.ts +0 -0
  212. package/types/theme/components/cardCarousel.d.ts +0 -0
  213. package/types/theme/components/carousel.d.ts +0 -0
  214. package/types/theme/components/checkbox.d.ts +0 -0
  215. package/types/theme/components/contentNavigator.d.ts +0 -0
  216. package/types/theme/components/datePicker.d.ts +0 -0
  217. package/types/theme/components/divider.d.ts +0 -0
  218. package/types/theme/components/drawer.d.ts +0 -0
  219. package/types/theme/components/empty.d.ts +0 -0
  220. package/types/theme/components/error.d.ts +0 -0
  221. package/types/theme/components/fab.d.ts +0 -0
  222. package/types/theme/components/icon.d.ts +0 -0
  223. package/types/theme/components/image.d.ts +0 -0
  224. package/types/theme/components/list.d.ts +0 -0
  225. package/types/theme/components/pageControl.d.ts +0 -0
  226. package/types/theme/components/pinInput.d.ts +0 -0
  227. package/types/theme/components/progress.d.ts +0 -0
  228. package/types/theme/components/radio.d.ts +0 -0
  229. package/types/theme/components/refreshControl.d.ts +0 -0
  230. package/types/theme/components/richTextEditor.d.ts +0 -0
  231. package/types/theme/components/sectionHeading.d.ts +0 -0
  232. package/types/theme/components/select.d.ts +0 -0
  233. package/types/theme/components/skeleton.d.ts +0 -0
  234. package/types/theme/components/slider.d.ts +0 -0
  235. package/types/theme/components/spinner.d.ts +0 -0
  236. package/types/theme/components/success.d.ts +0 -0
  237. package/types/theme/components/swipeable.d.ts +0 -0
  238. package/types/theme/components/switch.d.ts +0 -0
  239. package/types/theme/components/tabs.d.ts +0 -0
  240. package/types/theme/components/tag.d.ts +0 -0
  241. package/types/theme/components/textInput.d.ts +0 -0
  242. package/types/theme/components/timePicker.d.ts +0 -0
  243. package/types/theme/components/toast.d.ts +0 -0
  244. package/types/theme/components/toolbar.d.ts +0 -0
  245. package/types/theme/components/typography.d.ts +0 -0
  246. package/types/theme/getTheme.d.ts +0 -0
  247. package/types/theme/global/borders.d.ts +0 -0
  248. package/types/theme/global/colors/eBens.d.ts +0 -0
  249. package/types/theme/global/colors/global.d.ts +0 -0
  250. package/types/theme/global/colors/globalDark.d.ts +0 -0
  251. package/types/theme/global/colors/jobs.d.ts +0 -0
  252. package/types/theme/global/colors/swag.d.ts +0 -0
  253. package/types/theme/global/colors/swagDark.d.ts +0 -0
  254. package/types/theme/global/colors/types.d.ts +0 -0
  255. package/types/theme/global/colors/wallet.d.ts +0 -0
  256. package/types/theme/global/colors/work.d.ts +0 -0
  257. package/types/theme/global/index.d.ts +0 -0
  258. package/types/theme/global/scale.d.ts +0 -0
  259. package/types/theme/global/sizes.d.ts +0 -0
  260. package/types/theme/global/space.d.ts +0 -0
  261. package/types/theme/global/typography.d.ts +0 -0
  262. package/types/theme/index.d.ts +0 -0
  263. package/types/types.d.ts +0 -0
  264. package/types/utils/functions.d.ts +0 -0
  265. package/types/utils/helpers.d.ts +0 -0
  266. package/types/utils/hooks.d.ts +0 -0
  267. package/types/utils/scale.d.ts +0 -0
  268. package/.turbo/turbo-build$colon$types.log +0 -0
  269. package/.turbo/turbo-lint.log +0 -183
  270. package/.turbo/turbo-publish:npm.log +0 -9
  271. package/.turbo/turbo-test.log +0 -4726
  272. package/.turbo/turbo-type-check.log +0 -0
  273. package/types/components/CompoundSearch/CompoundSearchHandler.d.ts +0 -31
  274. package/types/components/CompoundSearch/CompoundSearchTextInput.d.ts +0 -60
  275. package/types/components/CompoundSearch/StyledCompoundSearch.d.ts +0 -40
  276. package/types/components/CompoundSearch/index.d.ts +0 -8
  277. package/types/components/CompoundSearch/utils.d.ts +0 -8
  278. package/types/components/Search/SearchBasic.d.ts +0 -31
  279. package/types/components/Search/SearchCompound.d.ts +0 -60
  280. package/types/components/Tabs/ScrollableTabsHeader.d.ts +0 -35
  281. package/types/theme/components/compoundSearch.d.ts +0 -36
@@ -1,8 +1,7 @@
1
- (node:11552) ExperimentalWarning: Import assertions are not a stable feature of the JavaScript language. Avoid relying on their current behavior and syntax as those might change in a future version of Node.js.
1
+ (node:2884) ExperimentalWarning: Importing JSON modules is an experimental feature and might change at any time
2
2
  (Use `node --trace-warnings ...` to show where the warning was created)
3
- (node:11552) ExperimentalWarning: Importing JSON modules is an experimental feature and might change at any time
4
3
  
5
4
  src/index.ts → lib/index.js, es/index.js...
6
5
  (!) [plugin replace] @rollup/plugin-replace: 'preventAssignment' currently defaults to false. It is recommended to set this option to `true`, as the next major version will default this option to `true`.
7
- (!) [plugin node-resolve] preferring built-in module 'events' over local alternative at '/Volumes/Data/Projects/hero-design/node_modules/events/events.js', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning.or passing a function to 'preferBuiltins' to provide more fine-grained control over which built-in modules to prefer.
8
- created lib/index.js, es/index.js in 34s
6
+ (!) [plugin node-resolve] preferring built-in module 'events' over local alternative at '/home/runner/work/hero-design/hero-design/node_modules/events/events.js', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning.or passing a function to 'preferBuiltins' to provide more fine-grained control over which built-in modules to prefer.
7
+ created lib/index.js, es/index.js in 50.6s
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
@@ -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
@@ -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",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -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', () => {