@herca/rn-kit 0.1.113 → 0.1.115

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 (506) hide show
  1. package/README.md +66 -0
  2. package/lib/module/Accordion/Accordion.js +4 -1
  3. package/lib/module/Accordion/Accordion.js.map +1 -1
  4. package/lib/module/Accordion/AccordionItem.js +3 -1
  5. package/lib/module/Accordion/AccordionItem.js.map +1 -1
  6. package/lib/module/Accordion/README.md +2 -0
  7. package/lib/module/Alert/Alert.js +3 -1
  8. package/lib/module/Alert/Alert.js.map +1 -1
  9. package/lib/module/Alert/README.md +1 -0
  10. package/lib/module/Avatar/Avatar.js +3 -1
  11. package/lib/module/Avatar/Avatar.js.map +1 -1
  12. package/lib/module/Avatar/AvatarGroup.js +3 -1
  13. package/lib/module/Avatar/AvatarGroup.js.map +1 -1
  14. package/lib/module/Avatar/README_AVATAR.md +1 -0
  15. package/lib/module/Avatar/README_AVATARGROUP.md +1 -0
  16. package/lib/module/Badge/Badge.js +4 -1
  17. package/lib/module/Badge/Badge.js.map +1 -1
  18. package/lib/module/Badge/README.md +1 -0
  19. package/lib/module/BadgeIcon/BadgeIcon.js +3 -1
  20. package/lib/module/BadgeIcon/BadgeIcon.js.map +1 -1
  21. package/lib/module/BadgeIcon/README.md +1 -0
  22. package/lib/module/BottomSheet/BottomSheet.js +17 -8
  23. package/lib/module/BottomSheet/BottomSheet.js.map +1 -1
  24. package/lib/module/BottomSheet/README.md +1 -0
  25. package/lib/module/Button/Button.js +3 -1
  26. package/lib/module/Button/Button.js.map +1 -1
  27. package/lib/module/Button/README.md +1 -0
  28. package/lib/module/Button/type.js.map +1 -1
  29. package/lib/module/Calendar/Calendar.js +9 -1
  30. package/lib/module/Calendar/Calendar.js.map +1 -1
  31. package/lib/module/Calendar/README.md +2 -0
  32. package/lib/module/CheckBox/CheckBox.js +8 -3
  33. package/lib/module/CheckBox/CheckBox.js.map +1 -1
  34. package/lib/module/CheckBox/CheckBoxList.js +7 -2
  35. package/lib/module/CheckBox/CheckBoxList.js.map +1 -1
  36. package/lib/module/CheckBox/README_CHECKBOX.md +1 -0
  37. package/lib/module/CheckBox/README_CHECKBOXLIST.md +1 -0
  38. package/lib/module/Chip/Chip.js +19 -6
  39. package/lib/module/Chip/Chip.js.map +1 -1
  40. package/lib/module/Chip/ChipItem.js +3 -1
  41. package/lib/module/Chip/ChipItem.js.map +1 -1
  42. package/lib/module/Chip/README.md +26 -2
  43. package/lib/module/Chip/README_CHIP_ITEM.md +1 -0
  44. package/lib/module/CounterButton/CounterButton.js +6 -1
  45. package/lib/module/CounterButton/CounterButton.js.map +1 -1
  46. package/lib/module/CounterButton/README.md +1 -0
  47. package/lib/module/DatePicker/DatePicker.js +13 -1
  48. package/lib/module/DatePicker/DatePicker.js.map +1 -1
  49. package/lib/module/DatePicker/MonthPicker.js +35 -2
  50. package/lib/module/DatePicker/MonthPicker.js.map +1 -1
  51. package/lib/module/DatePicker/README_DATEPICKER.md +1 -0
  52. package/lib/module/DatePicker/README_MONTHPICKER.md +2 -0
  53. package/lib/module/DatePicker/README_TIMEPICKER.md +1 -0
  54. package/lib/module/DatePicker/README_YEARPICKER.md +2 -0
  55. package/lib/module/DatePicker/TimePicker.js +8 -1
  56. package/lib/module/DatePicker/TimePicker.js.map +1 -1
  57. package/lib/module/DatePicker/YearPicker.js +50 -5
  58. package/lib/module/DatePicker/YearPicker.js.map +1 -1
  59. package/lib/module/Drawing/Drawing.js +3 -1
  60. package/lib/module/Drawing/Drawing.js.map +1 -1
  61. package/lib/module/Drawing/README.md +1 -0
  62. package/lib/module/DropDown/DropDown.js +6 -1
  63. package/lib/module/DropDown/DropDown.js.map +1 -1
  64. package/lib/module/DropDown/README.md +1 -0
  65. package/lib/module/FileView/PDF_VIEW_README.md +11 -0
  66. package/lib/module/FileView/PdfView.js +5 -1
  67. package/lib/module/FileView/PdfView.js.map +1 -1
  68. package/lib/module/Icon/Icon.js +14 -2
  69. package/lib/module/Icon/Icon.js.map +1 -1
  70. package/lib/module/Icon/README.md +1 -0
  71. package/lib/module/Input/Input.js +7 -0
  72. package/lib/module/Input/Input.js.map +1 -1
  73. package/lib/module/Input/InputDate.js +35 -8
  74. package/lib/module/Input/InputDate.js.map +1 -1
  75. package/lib/module/Input/InputFile.js +28 -11
  76. package/lib/module/Input/InputFile.js.map +1 -1
  77. package/lib/module/Input/InputMonth.js +126 -1
  78. package/lib/module/Input/InputMonth.js.map +1 -1
  79. package/lib/module/Input/InputOtp.js +6 -1
  80. package/lib/module/Input/InputOtp.js.map +1 -1
  81. package/lib/module/Input/InputPassword.js +5 -1
  82. package/lib/module/Input/InputPassword.js.map +1 -1
  83. package/lib/module/Input/InputSelect.js +21 -2
  84. package/lib/module/Input/InputSelect.js.map +1 -1
  85. package/lib/module/Input/InputYear.js +103 -0
  86. package/lib/module/Input/InputYear.js.map +1 -0
  87. package/lib/module/Input/README_INPUT.md +1 -0
  88. package/lib/module/Input/README_INPUT_DATE.md +18 -0
  89. package/lib/module/Input/README_INPUT_FILE.md +1 -0
  90. package/lib/module/Input/README_INPUT_MONTH.md +132 -0
  91. package/lib/module/Input/README_INPUT_OTP.md +1 -0
  92. package/lib/module/Input/README_INPUT_SELECT.md +1 -0
  93. package/lib/module/Input/README_INPUT_YEAR.md +115 -0
  94. package/lib/module/Input/Switch.js +6 -2
  95. package/lib/module/Input/Switch.js.map +1 -1
  96. package/lib/module/Input/TextArea.js +5 -0
  97. package/lib/module/Input/TextArea.js.map +1 -1
  98. package/lib/module/Input/partials/InputFile/CardTrigger.js +3 -1
  99. package/lib/module/Input/partials/InputFile/CardTrigger.js.map +1 -1
  100. package/lib/module/Input/partials/InputFile/CardTriggerSmall.js +5 -2
  101. package/lib/module/Input/partials/InputFile/CardTriggerSmall.js.map +1 -1
  102. package/lib/module/Input/partials/InputFile/ItemPreview.js +6 -1
  103. package/lib/module/Input/partials/InputFile/ItemPreview.js.map +1 -1
  104. package/lib/module/Input/partials/PickerField.js +114 -0
  105. package/lib/module/Input/partials/PickerField.js.map +1 -0
  106. package/lib/module/Label/Label.js +3 -1
  107. package/lib/module/Label/Label.js.map +1 -1
  108. package/lib/module/Label/README.md +1 -0
  109. package/lib/module/LabelForm/LabelForm.js +3 -1
  110. package/lib/module/LabelForm/LabelForm.js.map +1 -1
  111. package/lib/module/List/List.js +3 -1
  112. package/lib/module/List/List.js.map +1 -1
  113. package/lib/module/List/ListItem.js +3 -1
  114. package/lib/module/List/ListItem.js.map +1 -1
  115. package/lib/module/List/README.md +2 -0
  116. package/lib/module/Loading/Loading.js +3 -1
  117. package/lib/module/Loading/Loading.js.map +1 -1
  118. package/lib/module/Modal/Modal.js +8 -2
  119. package/lib/module/Modal/Modal.js.map +1 -1
  120. package/lib/module/Modal/README.md +1 -0
  121. package/lib/module/Provider/RequiredUpdateAppsProvider.js +10 -1
  122. package/lib/module/Provider/RequiredUpdateAppsProvider.js.map +1 -1
  123. package/lib/module/RadioButton/README.md +1 -0
  124. package/lib/module/RadioButton/RadioButton.js +7 -2
  125. package/lib/module/RadioButton/RadioButton.js.map +1 -1
  126. package/lib/module/Select/README.md +1 -0
  127. package/lib/module/Select/README_Select.md +1 -0
  128. package/lib/module/Select/Select.js +12 -3
  129. package/lib/module/Select/Select.js.map +1 -1
  130. package/lib/module/Skeleton/README.md +1 -0
  131. package/lib/module/Skeleton/Skeleton.js +3 -1
  132. package/lib/module/Skeleton/Skeleton.js.map +1 -1
  133. package/lib/module/Spinner/Spinner.js +3 -1
  134. package/lib/module/Spinner/Spinner.js.map +1 -1
  135. package/lib/module/Step/README.md +2 -0
  136. package/lib/module/Step/Step.js +3 -1
  137. package/lib/module/Step/Step.js.map +1 -1
  138. package/lib/module/Step/StepItem.js +4 -1
  139. package/lib/module/Step/StepItem.js.map +1 -1
  140. package/lib/module/Tab/README.md +1 -0
  141. package/lib/module/Tab/Tab.js +6 -1
  142. package/lib/module/Tab/Tab.js.map +1 -1
  143. package/lib/module/TextEditor/LinkSheet.js +84 -0
  144. package/lib/module/TextEditor/LinkSheet.js.map +1 -0
  145. package/lib/module/TextEditor/README.md +52 -2
  146. package/lib/module/TextEditor/TextEditor.js +77 -458
  147. package/lib/module/TextEditor/TextEditor.js.map +1 -1
  148. package/lib/module/TextEditor/Toolbar.js +71 -0
  149. package/lib/module/TextEditor/Toolbar.js.map +1 -0
  150. package/lib/module/TextEditor/editorDocument.js +235 -0
  151. package/lib/module/TextEditor/editorDocument.js.map +1 -0
  152. package/lib/module/TextEditor/formatState.js +186 -0
  153. package/lib/module/TextEditor/formatState.js.map +1 -0
  154. package/lib/module/TextEditor/toolbarButtons.js +81 -0
  155. package/lib/module/TextEditor/toolbarButtons.js.map +1 -0
  156. package/lib/module/TextEditor/types.js +2 -0
  157. package/lib/module/Timeline/README.md +2 -0
  158. package/lib/module/Timeline/Timeline.js +3 -1
  159. package/lib/module/Timeline/Timeline.js.map +1 -1
  160. package/lib/module/Timeline/TimelineItem.js +3 -1
  161. package/lib/module/Timeline/TimelineItem.js.map +1 -1
  162. package/lib/module/Toast/README.md +16 -0
  163. package/lib/module/Toast/Toast.js +6 -1
  164. package/lib/module/Toast/Toast.js.map +1 -1
  165. package/lib/module/Typography/README.md +1 -0
  166. package/lib/module/Typography/Typography.js +3 -1
  167. package/lib/module/Typography/Typography.js.map +1 -1
  168. package/lib/module/Ui/Card.js +4 -1
  169. package/lib/module/Ui/Card.js.map +1 -1
  170. package/lib/module/Ui/Center.js +3 -1
  171. package/lib/module/Ui/Center.js.map +1 -1
  172. package/lib/module/Ui/Col.js +3 -1
  173. package/lib/module/Ui/Col.js.map +1 -1
  174. package/lib/module/Ui/Container.js +3 -1
  175. package/lib/module/Ui/Container.js.map +1 -1
  176. package/lib/module/Ui/Devider.js +4 -1
  177. package/lib/module/Ui/Devider.js.map +1 -1
  178. package/lib/module/Ui/Footer.js +4 -2
  179. package/lib/module/Ui/Footer.js.map +1 -1
  180. package/lib/module/Ui/Gap.js +3 -1
  181. package/lib/module/Ui/Gap.js.map +1 -1
  182. package/lib/module/Ui/Grid.js +3 -1
  183. package/lib/module/Ui/Grid.js.map +1 -1
  184. package/lib/module/Ui/README_CARD.md +1 -0
  185. package/lib/module/Ui/README_CONTAINER.md +1 -0
  186. package/lib/module/Ui/README_DEVIDER.md +5 -0
  187. package/lib/module/Ui/README_FOOTER.md +9 -0
  188. package/lib/module/Ui/README_VIEWINSETS.md +1 -0
  189. package/lib/module/function/README_DATE_FORMATTER.md +35 -0
  190. package/lib/module/function/dateFormatter.js +29 -0
  191. package/lib/module/function/dateFormatter.js.map +1 -1
  192. package/lib/module/helpers/getTestID.js +15 -0
  193. package/lib/module/helpers/getTestID.js.map +1 -0
  194. package/lib/module/index.js +2 -0
  195. package/lib/module/index.js.map +1 -1
  196. package/lib/typescript/src/Accordion/Accordion.d.ts +1 -1
  197. package/lib/typescript/src/Accordion/Accordion.d.ts.map +1 -1
  198. package/lib/typescript/src/Accordion/AccordionItem.d.ts +1 -1
  199. package/lib/typescript/src/Accordion/AccordionItem.d.ts.map +1 -1
  200. package/lib/typescript/src/Accordion/type.d.ts +2 -0
  201. package/lib/typescript/src/Accordion/type.d.ts.map +1 -1
  202. package/lib/typescript/src/Alert/Alert.d.ts +1 -0
  203. package/lib/typescript/src/Alert/Alert.d.ts.map +1 -1
  204. package/lib/typescript/src/Avatar/Avatar.d.ts.map +1 -1
  205. package/lib/typescript/src/Avatar/AvatarGroup.d.ts.map +1 -1
  206. package/lib/typescript/src/Avatar/type.d.ts +2 -0
  207. package/lib/typescript/src/Avatar/type.d.ts.map +1 -1
  208. package/lib/typescript/src/Badge/Badge.d.ts +1 -0
  209. package/lib/typescript/src/Badge/Badge.d.ts.map +1 -1
  210. package/lib/typescript/src/BadgeIcon/BadgeIcon.d.ts +1 -0
  211. package/lib/typescript/src/BadgeIcon/BadgeIcon.d.ts.map +1 -1
  212. package/lib/typescript/src/BottomSheet/BottomSheet.d.ts +1 -1
  213. package/lib/typescript/src/BottomSheet/BottomSheet.d.ts.map +1 -1
  214. package/lib/typescript/src/BottomSheet/type.d.ts +1 -0
  215. package/lib/typescript/src/BottomSheet/type.d.ts.map +1 -1
  216. package/lib/typescript/src/Button/Button.d.ts.map +1 -1
  217. package/lib/typescript/src/Button/type.d.ts +1 -0
  218. package/lib/typescript/src/Button/type.d.ts.map +1 -1
  219. package/lib/typescript/src/Calendar/Calendar.d.ts +1 -1
  220. package/lib/typescript/src/Calendar/Calendar.d.ts.map +1 -1
  221. package/lib/typescript/src/Calendar/CalendarPropsType.d.ts +6 -0
  222. package/lib/typescript/src/Calendar/CalendarPropsType.d.ts.map +1 -1
  223. package/lib/typescript/src/CheckBox/CheckBox.d.ts +1 -0
  224. package/lib/typescript/src/CheckBox/CheckBox.d.ts.map +1 -1
  225. package/lib/typescript/src/CheckBox/CheckBoxList.d.ts +1 -0
  226. package/lib/typescript/src/CheckBox/CheckBoxList.d.ts.map +1 -1
  227. package/lib/typescript/src/Chip/Chip.d.ts.map +1 -1
  228. package/lib/typescript/src/Chip/ChipItem.d.ts +1 -1
  229. package/lib/typescript/src/Chip/ChipItem.d.ts.map +1 -1
  230. package/lib/typescript/src/Chip/type.d.ts +2 -0
  231. package/lib/typescript/src/Chip/type.d.ts.map +1 -1
  232. package/lib/typescript/src/CounterButton/CounterButton.d.ts +1 -1
  233. package/lib/typescript/src/CounterButton/CounterButton.d.ts.map +1 -1
  234. package/lib/typescript/src/CounterButton/type.d.ts +1 -0
  235. package/lib/typescript/src/CounterButton/type.d.ts.map +1 -1
  236. package/lib/typescript/src/DatePicker/DatePicker.d.ts +2 -1
  237. package/lib/typescript/src/DatePicker/DatePicker.d.ts.map +1 -1
  238. package/lib/typescript/src/DatePicker/MonthPicker.d.ts +11 -1
  239. package/lib/typescript/src/DatePicker/MonthPicker.d.ts.map +1 -1
  240. package/lib/typescript/src/DatePicker/TimePicker.d.ts +2 -1
  241. package/lib/typescript/src/DatePicker/TimePicker.d.ts.map +1 -1
  242. package/lib/typescript/src/DatePicker/YearPicker.d.ts +14 -1
  243. package/lib/typescript/src/DatePicker/YearPicker.d.ts.map +1 -1
  244. package/lib/typescript/src/Drawing/Drawing.d.ts +2 -1
  245. package/lib/typescript/src/Drawing/Drawing.d.ts.map +1 -1
  246. package/lib/typescript/src/DropDown/DropDown.d.ts +1 -1
  247. package/lib/typescript/src/DropDown/DropDown.d.ts.map +1 -1
  248. package/lib/typescript/src/DropDown/type.d.ts +1 -0
  249. package/lib/typescript/src/DropDown/type.d.ts.map +1 -1
  250. package/lib/typescript/src/FileView/PdfView.d.ts +2 -1
  251. package/lib/typescript/src/FileView/PdfView.d.ts.map +1 -1
  252. package/lib/typescript/src/Icon/Icon.d.ts.map +1 -1
  253. package/lib/typescript/src/Icon/type.d.ts +1 -0
  254. package/lib/typescript/src/Icon/type.d.ts.map +1 -1
  255. package/lib/typescript/src/Input/Input.d.ts.map +1 -1
  256. package/lib/typescript/src/Input/InputDate.d.ts +6 -2
  257. package/lib/typescript/src/Input/InputDate.d.ts.map +1 -1
  258. package/lib/typescript/src/Input/InputFile.d.ts +1 -1
  259. package/lib/typescript/src/Input/InputFile.d.ts.map +1 -1
  260. package/lib/typescript/src/Input/InputMonth.d.ts +29 -1
  261. package/lib/typescript/src/Input/InputMonth.d.ts.map +1 -1
  262. package/lib/typescript/src/Input/InputOtp.d.ts +1 -0
  263. package/lib/typescript/src/Input/InputOtp.d.ts.map +1 -1
  264. package/lib/typescript/src/Input/InputPassword.d.ts +2 -1
  265. package/lib/typescript/src/Input/InputPassword.d.ts.map +1 -1
  266. package/lib/typescript/src/Input/InputSelect.d.ts +4 -2
  267. package/lib/typescript/src/Input/InputSelect.d.ts.map +1 -1
  268. package/lib/typescript/src/Input/InputYear.d.ts +34 -0
  269. package/lib/typescript/src/Input/InputYear.d.ts.map +1 -0
  270. package/lib/typescript/src/Input/Switch.d.ts +2 -1
  271. package/lib/typescript/src/Input/Switch.d.ts.map +1 -1
  272. package/lib/typescript/src/Input/TextArea.d.ts +1 -1
  273. package/lib/typescript/src/Input/TextArea.d.ts.map +1 -1
  274. package/lib/typescript/src/Input/partials/InputFile/CardTrigger.d.ts +2 -1
  275. package/lib/typescript/src/Input/partials/InputFile/CardTrigger.d.ts.map +1 -1
  276. package/lib/typescript/src/Input/partials/InputFile/CardTriggerSmall.d.ts +2 -1
  277. package/lib/typescript/src/Input/partials/InputFile/CardTriggerSmall.d.ts.map +1 -1
  278. package/lib/typescript/src/Input/partials/InputFile/ItemPreview.d.ts +2 -1
  279. package/lib/typescript/src/Input/partials/InputFile/ItemPreview.d.ts.map +1 -1
  280. package/lib/typescript/src/Input/partials/PickerField.d.ts +25 -0
  281. package/lib/typescript/src/Input/partials/PickerField.d.ts.map +1 -0
  282. package/lib/typescript/src/Input/type.d.ts +13 -0
  283. package/lib/typescript/src/Input/type.d.ts.map +1 -1
  284. package/lib/typescript/src/Label/Label.d.ts +2 -1
  285. package/lib/typescript/src/Label/Label.d.ts.map +1 -1
  286. package/lib/typescript/src/LabelForm/LabelForm.d.ts +2 -1
  287. package/lib/typescript/src/LabelForm/LabelForm.d.ts.map +1 -1
  288. package/lib/typescript/src/List/List.d.ts +1 -1
  289. package/lib/typescript/src/List/List.d.ts.map +1 -1
  290. package/lib/typescript/src/List/ListItem.d.ts +1 -1
  291. package/lib/typescript/src/List/ListItem.d.ts.map +1 -1
  292. package/lib/typescript/src/List/type.d.ts +2 -0
  293. package/lib/typescript/src/List/type.d.ts.map +1 -1
  294. package/lib/typescript/src/Loading/Loading.d.ts +1 -0
  295. package/lib/typescript/src/Loading/Loading.d.ts.map +1 -1
  296. package/lib/typescript/src/Modal/Modal.d.ts +1 -0
  297. package/lib/typescript/src/Modal/Modal.d.ts.map +1 -1
  298. package/lib/typescript/src/Provider/RequiredUpdateAppsProvider.d.ts.map +1 -1
  299. package/lib/typescript/src/RadioButton/RadioButton.d.ts +1 -0
  300. package/lib/typescript/src/RadioButton/RadioButton.d.ts.map +1 -1
  301. package/lib/typescript/src/Select/Select.d.ts +1 -1
  302. package/lib/typescript/src/Select/Select.d.ts.map +1 -1
  303. package/lib/typescript/src/Select/type.d.ts +1 -0
  304. package/lib/typescript/src/Select/type.d.ts.map +1 -1
  305. package/lib/typescript/src/Skeleton/Skeleton.d.ts.map +1 -1
  306. package/lib/typescript/src/Skeleton/type.d.ts +1 -0
  307. package/lib/typescript/src/Skeleton/type.d.ts.map +1 -1
  308. package/lib/typescript/src/Spinner/Spinner.d.ts +7 -4
  309. package/lib/typescript/src/Spinner/Spinner.d.ts.map +1 -1
  310. package/lib/typescript/src/Step/Step.d.ts +1 -1
  311. package/lib/typescript/src/Step/Step.d.ts.map +1 -1
  312. package/lib/typescript/src/Step/StepItem.d.ts +1 -1
  313. package/lib/typescript/src/Step/StepItem.d.ts.map +1 -1
  314. package/lib/typescript/src/Step/type.d.ts +2 -0
  315. package/lib/typescript/src/Step/type.d.ts.map +1 -1
  316. package/lib/typescript/src/Tab/Tab.d.ts.map +1 -1
  317. package/lib/typescript/src/Tab/type.d.ts +1 -0
  318. package/lib/typescript/src/Tab/type.d.ts.map +1 -1
  319. package/lib/typescript/src/TextEditor/LinkSheet.d.ts +26 -0
  320. package/lib/typescript/src/TextEditor/LinkSheet.d.ts.map +1 -0
  321. package/lib/typescript/src/TextEditor/TextEditor.d.ts +2 -19
  322. package/lib/typescript/src/TextEditor/TextEditor.d.ts.map +1 -1
  323. package/lib/typescript/src/TextEditor/Toolbar.d.ts +16 -0
  324. package/lib/typescript/src/TextEditor/Toolbar.d.ts.map +1 -0
  325. package/lib/typescript/src/TextEditor/editorDocument.d.ts +20 -0
  326. package/lib/typescript/src/TextEditor/editorDocument.d.ts.map +1 -0
  327. package/lib/typescript/src/TextEditor/formatState.d.ts +34 -0
  328. package/lib/typescript/src/TextEditor/formatState.d.ts.map +1 -0
  329. package/lib/typescript/src/TextEditor/toolbarButtons.d.ts +5 -0
  330. package/lib/typescript/src/TextEditor/toolbarButtons.d.ts.map +1 -0
  331. package/lib/typescript/src/TextEditor/types.d.ts +42 -0
  332. package/lib/typescript/src/TextEditor/types.d.ts.map +1 -1
  333. package/lib/typescript/src/Timeline/Timeline.d.ts +2 -1
  334. package/lib/typescript/src/Timeline/Timeline.d.ts.map +1 -1
  335. package/lib/typescript/src/Timeline/TimelineItem.d.ts +2 -1
  336. package/lib/typescript/src/Timeline/TimelineItem.d.ts.map +1 -1
  337. package/lib/typescript/src/Toast/Toast.d.ts +2 -1
  338. package/lib/typescript/src/Toast/Toast.d.ts.map +1 -1
  339. package/lib/typescript/src/Typography/Typography.d.ts.map +1 -1
  340. package/lib/typescript/src/Typography/type.d.ts +1 -0
  341. package/lib/typescript/src/Typography/type.d.ts.map +1 -1
  342. package/lib/typescript/src/Ui/Card.d.ts +2 -1
  343. package/lib/typescript/src/Ui/Card.d.ts.map +1 -1
  344. package/lib/typescript/src/Ui/Center.d.ts +2 -1
  345. package/lib/typescript/src/Ui/Center.d.ts.map +1 -1
  346. package/lib/typescript/src/Ui/Col.d.ts +1 -0
  347. package/lib/typescript/src/Ui/Col.d.ts.map +1 -1
  348. package/lib/typescript/src/Ui/Container.d.ts +2 -1
  349. package/lib/typescript/src/Ui/Container.d.ts.map +1 -1
  350. package/lib/typescript/src/Ui/Devider.d.ts +3 -1
  351. package/lib/typescript/src/Ui/Devider.d.ts.map +1 -1
  352. package/lib/typescript/src/Ui/Footer.d.ts +1 -0
  353. package/lib/typescript/src/Ui/Footer.d.ts.map +1 -1
  354. package/lib/typescript/src/Ui/Gap.d.ts +2 -1
  355. package/lib/typescript/src/Ui/Gap.d.ts.map +1 -1
  356. package/lib/typescript/src/Ui/Grid.d.ts +1 -0
  357. package/lib/typescript/src/Ui/Grid.d.ts.map +1 -1
  358. package/lib/typescript/src/function/dateFormatter.d.ts +11 -0
  359. package/lib/typescript/src/function/dateFormatter.d.ts.map +1 -1
  360. package/lib/typescript/src/helpers/getTestID.d.ts +10 -0
  361. package/lib/typescript/src/helpers/getTestID.d.ts.map +1 -0
  362. package/lib/typescript/src/index.d.ts +6 -0
  363. package/lib/typescript/src/index.d.ts.map +1 -1
  364. package/package.json +16 -3
  365. package/src/Accordion/Accordion.tsx +6 -1
  366. package/src/Accordion/AccordionItem.tsx +2 -1
  367. package/src/Accordion/README.md +2 -0
  368. package/src/Accordion/type.tsx +2 -0
  369. package/src/Alert/Alert.tsx +3 -0
  370. package/src/Alert/README.md +1 -0
  371. package/src/Avatar/Avatar.tsx +2 -0
  372. package/src/Avatar/AvatarGroup.tsx +2 -1
  373. package/src/Avatar/README_AVATAR.md +1 -0
  374. package/src/Avatar/README_AVATARGROUP.md +1 -0
  375. package/src/Avatar/type.tsx +2 -0
  376. package/src/Badge/Badge.tsx +4 -0
  377. package/src/Badge/README.md +1 -0
  378. package/src/BadgeIcon/BadgeIcon.tsx +3 -0
  379. package/src/BadgeIcon/README.md +1 -0
  380. package/src/BottomSheet/BottomSheet.tsx +20 -13
  381. package/src/BottomSheet/README.md +1 -0
  382. package/src/BottomSheet/type.tsx +1 -0
  383. package/src/Button/Button.tsx +2 -0
  384. package/src/Button/README.md +1 -0
  385. package/src/Button/type.tsx +1 -0
  386. package/src/Calendar/Calendar.tsx +8 -1
  387. package/src/Calendar/CalendarPropsType.tsx +6 -0
  388. package/src/Calendar/README.md +2 -0
  389. package/src/CheckBox/CheckBox.tsx +13 -2
  390. package/src/CheckBox/CheckBoxList.tsx +7 -1
  391. package/src/CheckBox/README_CHECKBOX.md +1 -0
  392. package/src/CheckBox/README_CHECKBOXLIST.md +1 -0
  393. package/src/Chip/Chip.tsx +18 -5
  394. package/src/Chip/ChipItem.tsx +2 -0
  395. package/src/Chip/README.md +26 -2
  396. package/src/Chip/README_CHIP_ITEM.md +1 -0
  397. package/src/Chip/type.tsx +2 -0
  398. package/src/CounterButton/CounterButton.tsx +5 -0
  399. package/src/CounterButton/README.md +1 -0
  400. package/src/CounterButton/type.tsx +1 -0
  401. package/src/DatePicker/DatePicker.tsx +21 -5
  402. package/src/DatePicker/MonthPicker.tsx +40 -1
  403. package/src/DatePicker/README_DATEPICKER.md +1 -0
  404. package/src/DatePicker/README_MONTHPICKER.md +2 -0
  405. package/src/DatePicker/README_TIMEPICKER.md +1 -0
  406. package/src/DatePicker/README_YEARPICKER.md +2 -0
  407. package/src/DatePicker/TimePicker.tsx +8 -0
  408. package/src/DatePicker/YearPicker.tsx +59 -4
  409. package/src/Drawing/Drawing.tsx +3 -1
  410. package/src/Drawing/README.md +1 -0
  411. package/src/DropDown/DropDown.tsx +12 -1
  412. package/src/DropDown/README.md +1 -0
  413. package/src/DropDown/type.tsx +1 -0
  414. package/src/FileView/PDF_VIEW_README.md +11 -0
  415. package/src/FileView/PdfView.tsx +4 -3
  416. package/src/Icon/Icon.tsx +10 -2
  417. package/src/Icon/README.md +1 -0
  418. package/src/Icon/type.tsx +1 -0
  419. package/src/Input/Input.tsx +17 -2
  420. package/src/Input/InputDate.tsx +40 -15
  421. package/src/Input/InputFile.tsx +27 -14
  422. package/src/Input/InputMonth.tsx +170 -1
  423. package/src/Input/InputOtp.tsx +12 -2
  424. package/src/Input/InputPassword.tsx +6 -1
  425. package/src/Input/InputSelect.tsx +30 -13
  426. package/src/Input/InputYear.tsx +134 -0
  427. package/src/Input/README_INPUT.md +1 -0
  428. package/src/Input/README_INPUT_DATE.md +18 -0
  429. package/src/Input/README_INPUT_FILE.md +1 -0
  430. package/src/Input/README_INPUT_MONTH.md +132 -0
  431. package/src/Input/README_INPUT_OTP.md +1 -0
  432. package/src/Input/README_INPUT_SELECT.md +1 -0
  433. package/src/Input/README_INPUT_YEAR.md +115 -0
  434. package/src/Input/Switch.tsx +7 -1
  435. package/src/Input/TextArea.tsx +15 -2
  436. package/src/Input/partials/InputFile/CardTrigger.tsx +3 -0
  437. package/src/Input/partials/InputFile/CardTriggerSmall.tsx +4 -1
  438. package/src/Input/partials/InputFile/ItemPreview.tsx +12 -2
  439. package/src/Input/partials/PickerField.tsx +125 -0
  440. package/src/Input/type.tsx +14 -0
  441. package/src/Label/Label.tsx +3 -0
  442. package/src/Label/README.md +1 -0
  443. package/src/LabelForm/LabelForm.tsx +3 -1
  444. package/src/List/List.tsx +2 -2
  445. package/src/List/ListItem.tsx +2 -0
  446. package/src/List/README.md +2 -0
  447. package/src/List/type.tsx +2 -0
  448. package/src/Loading/Loading.tsx +3 -1
  449. package/src/Modal/Modal.tsx +15 -3
  450. package/src/Modal/README.md +1 -0
  451. package/src/Provider/RequiredUpdateAppsProvider.tsx +10 -1
  452. package/src/RadioButton/README.md +1 -0
  453. package/src/RadioButton/RadioButton.tsx +12 -2
  454. package/src/Select/README.md +1 -0
  455. package/src/Select/README_Select.md +1 -0
  456. package/src/Select/Select.tsx +13 -3
  457. package/src/Select/type.tsx +1 -0
  458. package/src/Skeleton/README.md +1 -0
  459. package/src/Skeleton/Skeleton.tsx +2 -0
  460. package/src/Skeleton/type.ts +1 -0
  461. package/src/Spinner/Spinner.tsx +15 -2
  462. package/src/Step/README.md +2 -0
  463. package/src/Step/Step.tsx +2 -2
  464. package/src/Step/StepItem.tsx +7 -2
  465. package/src/Step/type.tsx +2 -0
  466. package/src/Tab/README.md +1 -0
  467. package/src/Tab/Tab.tsx +12 -2
  468. package/src/Tab/type.tsx +1 -0
  469. package/src/TextEditor/LinkSheet.tsx +100 -0
  470. package/src/TextEditor/README.md +52 -2
  471. package/src/TextEditor/TextEditor.tsx +92 -500
  472. package/src/TextEditor/Toolbar.tsx +104 -0
  473. package/src/TextEditor/editorDocument.ts +246 -0
  474. package/src/TextEditor/formatState.ts +186 -0
  475. package/src/TextEditor/toolbarButtons.ts +41 -0
  476. package/src/TextEditor/types.tsx +63 -0
  477. package/src/Timeline/README.md +2 -0
  478. package/src/Timeline/Timeline.tsx +7 -2
  479. package/src/Timeline/TimelineItem.tsx +3 -1
  480. package/src/Toast/README.md +16 -0
  481. package/src/Toast/Toast.tsx +13 -2
  482. package/src/Typography/README.md +1 -0
  483. package/src/Typography/Typography.tsx +6 -1
  484. package/src/Typography/type.tsx +1 -0
  485. package/src/Ui/Card.tsx +4 -0
  486. package/src/Ui/Center.tsx +7 -2
  487. package/src/Ui/Col.tsx +7 -2
  488. package/src/Ui/Container.tsx +7 -2
  489. package/src/Ui/Devider.tsx +2 -2
  490. package/src/Ui/Footer.tsx +6 -3
  491. package/src/Ui/Gap.tsx +8 -2
  492. package/src/Ui/Grid.tsx +3 -2
  493. package/src/Ui/README_CARD.md +1 -0
  494. package/src/Ui/README_CONTAINER.md +1 -0
  495. package/src/Ui/README_DEVIDER.md +5 -0
  496. package/src/Ui/README_FOOTER.md +9 -0
  497. package/src/Ui/README_VIEWINSETS.md +1 -0
  498. package/src/function/README_DATE_FORMATTER.md +35 -0
  499. package/src/function/dateFormatter.ts +40 -0
  500. package/src/helpers/getTestID.ts +15 -0
  501. package/src/index.tsx +6 -0
  502. package/lib/module/Button/tests/Button.test.js +0 -70
  503. package/lib/module/Button/tests/Button.test.js.map +0 -1
  504. package/lib/typescript/src/Button/tests/Button.test.d.ts +0 -2
  505. package/lib/typescript/src/Button/tests/Button.test.d.ts.map +0 -1
  506. package/src/Button/tests/Button.test.tsx +0 -49
@@ -0,0 +1,134 @@
1
+ import { useState } from 'react';
2
+ import { View } from 'react-native';
3
+ import YearPicker from '../DatePicker/YearPicker';
4
+ import PickerField from './partials/PickerField';
5
+ import type { PickerFieldValue } from './type';
6
+
7
+ interface BaseProps {
8
+ label?: string;
9
+ placeholder: string;
10
+ /** A full year, e.g. 2024. */
11
+ value?: number;
12
+ onSelectClick?: () => void;
13
+ onPickerClose?: () => void;
14
+ onChange?: (value: PickerFieldValue) => void;
15
+ hasClear?: boolean;
16
+ /** Static text inside the sheet, so it can follow the host app's language. */
17
+ title?: string;
18
+ cancelLabel?: string;
19
+ confirmLabel?: string;
20
+ testID?: string;
21
+ }
22
+
23
+ type SingleModeProps = BaseProps & {
24
+ mode?: 'single';
25
+ placeholderEnd?: never;
26
+ valueEnd?: never;
27
+ };
28
+
29
+ type RangeModeProps = BaseProps & {
30
+ mode: 'range';
31
+ placeholderEnd: string;
32
+ valueEnd?: number;
33
+ };
34
+
35
+ export type InputYearProps = SingleModeProps | RangeModeProps;
36
+
37
+ const EMPTY: PickerFieldValue = {
38
+ value: null,
39
+ startValue: null,
40
+ endValue: null,
41
+ };
42
+
43
+ const yearLabel = (year: number | null | undefined) =>
44
+ year === null || year === undefined ? null : String(year);
45
+
46
+ /**
47
+ * Year counterpart to InputMonth. There is no `language` prop: a year is
48
+ * digits, and nothing about it changes between locales.
49
+ */
50
+ export default function InputYear({
51
+ label,
52
+ placeholder,
53
+ placeholderEnd,
54
+ value,
55
+ valueEnd,
56
+ mode = 'single',
57
+ onSelectClick,
58
+ onPickerClose,
59
+ onChange,
60
+ hasClear,
61
+ title,
62
+ cancelLabel,
63
+ confirmLabel,
64
+ testID,
65
+ }: InputYearProps) {
66
+ const [isOpen, setIsOpen] = useState(false);
67
+ const [selected, setSelected] = useState<PickerFieldValue>(EMPTY);
68
+
69
+ const start = value ?? (mode === 'range' ? selected.startValue : selected.value); // prettier-ignore
70
+ const end = valueEnd ?? selected.endValue;
71
+
72
+ // What the sheet should open on. Without this the picker only knows about
73
+ // taps it saw itself, so a value coming from a prop -- or a clear -- would
74
+ // show in the field but leave the sheet blank.
75
+ const pickerValue =
76
+ mode === 'range'
77
+ ? { startDate: start ?? null, endDate: end ?? null }
78
+ : ([start].filter((y) => y !== null && y !== undefined) as number[]);
79
+
80
+ const handleOpen = () => {
81
+ setIsOpen(true);
82
+ onSelectClick?.();
83
+ };
84
+
85
+ const handleClose = () => {
86
+ setIsOpen(false);
87
+ onPickerClose?.();
88
+ };
89
+
90
+ const handleChange = (
91
+ picked: number[] | { startDate: number | null; endDate: number | null }
92
+ ) => {
93
+ const next: PickerFieldValue = Array.isArray(picked)
94
+ ? { value: picked[0] ?? null, startValue: null, endValue: null }
95
+ : { value: null, startValue: picked.startDate, endValue: picked.endDate };
96
+
97
+ setSelected(next);
98
+ onChange?.(next);
99
+ };
100
+
101
+ const handleClear = () => {
102
+ setSelected(EMPTY);
103
+ onChange?.(EMPTY);
104
+ };
105
+
106
+ return (
107
+ <View>
108
+ <PickerField
109
+ label={label}
110
+ placeholder={placeholder}
111
+ placeholderEnd={placeholderEnd}
112
+ mode={mode}
113
+ display={yearLabel(start)}
114
+ displayEnd={yearLabel(end)}
115
+ hasClear={hasClear}
116
+ onPress={handleOpen}
117
+ onClear={handleClear}
118
+ testID={testID}
119
+ />
120
+
121
+ <YearPicker
122
+ testID={testID}
123
+ isOpen={isOpen}
124
+ mode={mode}
125
+ value={pickerValue}
126
+ onClose={handleClose}
127
+ onChange={handleChange}
128
+ {...(title ? { title } : {})}
129
+ {...(cancelLabel ? { cancelLabel } : {})}
130
+ {...(confirmLabel ? { confirmLabel } : {})}
131
+ />
132
+ </View>
133
+ );
134
+ }
@@ -22,6 +22,7 @@ Komponen `Input` ini adalah komponen input teks yang dapat dikustomisasi dengan
22
22
  | `style` | `ViewStyle` | Style tambahan untuk input |
23
23
  | `prefix` | `React.ReactNode` | Slot `react node` yang bisa diisi oleh seluruh komponen react |
24
24
  | `required` | `boolean` | Jika `true` maka akan menampilkan bintang berwarna merah setelah label |
25
+ | `testID` | `string` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-input`, `-label`, `-error`, `-clear`, dan `-toggle` untuk elemen terkait. |
25
26
  | `...rest` | `TextInputProps` | Props lain dari React Native `TextInput` |
26
27
 
27
28
  ---
@@ -66,6 +66,7 @@ function MyForm() {
66
66
  | `mode` | `'single' \| 'range'` | `'single'` | Mode pemilihan tanggal |
67
67
  | `language` | `'en' \| 'id'` | `undefined` | Bahasa untuk format tanggal |
68
68
  | `hasClear` | `boolean` | `false` | Nilai boolean untuk menampilkan opsi hapus tanggal |
69
+ | `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-trigger`, `-trigger-end` (mode range), `-label`, `-clear`. `testID` mentah diteruskan ke `DatePicker`, yang menurunkan suffix-nya sendiri: `-sheet`, `-cancel`, `-confirm`, `-error`. |
69
70
 
70
71
  ### Single Mode Specific Props
71
72
 
@@ -264,3 +265,20 @@ Ini memastikan `placeholderDateEnd` hanya required ketika `mode="range"`.
264
265
  ## License
265
266
 
266
267
  MIT
268
+
269
+ ## Teks statis pada picker
270
+
271
+ `confirmLabel` dan `cancelLabel` mengganti teks tombol di sheet, tanpa perlu
272
+ menyusurinya lewat `datePickerProps`:
273
+
274
+ ```jsx
275
+ <InputDate
276
+ label="Date"
277
+ placeholder="Pick a date"
278
+ confirmLabel="Apply"
279
+ cancelLabel="Cancel"
280
+ />
281
+ ```
282
+
283
+ Default-nya `'Terapkan'` dan `'Batalkan'`. Kalau kunci yang sama juga diisi di
284
+ `datePickerProps`, prop eksplisit di atas yang menang.
@@ -145,6 +145,7 @@ export default function ExampleScreen() {
145
145
  | `modalDeleteText` | `ModalOption & confirmBtn` | `undefined` | Teks kustom pada modal konfirmasi hapus file. |
146
146
  | `hasError` | `boolean` | `false` | Menampilkan state error pada input. |
147
147
  | `onUploading` | `(isUploading?: boolean) => void` | `undefiend` | Expose value uploading ke parent |
148
+ | `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-trigger`, `-file-{index}` (field nama dokumen per file, field-nya sendiri `-file-{index}-input`), `-item-{index}` (preview per file), `-error` (error umum, mis. ukuran melebihi batas), `-error-{index}` (error per file), `-sheet`, dan `-modal-delete`. |
148
149
 
149
150
  ### Default Variant Props (`variant?: 'default'`)
150
151
 
@@ -0,0 +1,132 @@
1
+ # InputMonth
2
+
3
+ Field bulan yang dibuka lewat `MonthPicker`. Bentuk dan alurnya mengikuti
4
+ `InputDate`: satu trigger (dua kalau `mode="range"`), tombol clear opsional,
5
+ dan sheet yang muncul saat trigger ditekan.
6
+
7
+ Yang dipilih hanya **bulan**, tanpa tahun — sama seperti `MonthPicker` yang
8
+ dibungkusnya. Kalau butuh bulan sekaligus tahun, pasangkan dengan
9
+ [`InputYear`](./README_INPUT_YEAR.md).
10
+
11
+ ## Import
12
+
13
+ ```jsx
14
+ import { InputMonth } from '@herca/rn-kit';
15
+ ```
16
+
17
+ ## Contoh Penggunaan
18
+
19
+ ```jsx
20
+ const [month, setMonth] = useState<number>();
21
+
22
+ <InputMonth
23
+ label="Bulan lahir"
24
+ placeholder="Pilih bulan"
25
+ value={month}
26
+ hasClear
27
+ onChange={({ value }) => setMonth(value ?? undefined)}
28
+ />;
29
+ ```
30
+
31
+ ### Mode range
32
+
33
+ ```jsx
34
+ const [range, setRange] = useState({ start: undefined, end: undefined });
35
+
36
+ <InputMonth
37
+ mode="range"
38
+ label="Periode"
39
+ placeholder="Bulan mulai"
40
+ placeholderEnd="Bulan selesai"
41
+ value={range.start}
42
+ valueEnd={range.end}
43
+ onChange={({ startValue, endValue }) =>
44
+ setRange({ start: startValue ?? undefined, end: endValue ?? undefined })
45
+ }
46
+ />;
47
+ ```
48
+
49
+ ### Bahasa
50
+
51
+ ```jsx
52
+ <InputMonth label="Month" placeholder="Pick one" value={1} language="en" />
53
+ // menampilkan "January"; tanpa language menampilkan "Januari"
54
+ ```
55
+
56
+ ## Props
57
+
58
+ | Props | Tipe | Wajib | Default | Deskripsi |
59
+ | ---------------- | -------------------------- | ----- | ---------- | ------------------------------------------------------------------------------------------------- |
60
+ | `label` | `string` | ❌ | - | Teks label di atas trigger. Kalau kosong, elemen labelnya tidak dirender sama sekali. |
61
+ | `placeholder` | `string` | ✅ | - | Teks trigger saat belum ada nilai. |
62
+ | `placeholderEnd` | `string` | ✅\* | - | Placeholder trigger kedua. Wajib dan hanya berlaku saat `mode="range"`. |
63
+ | `value` | `number` | ❌ | - | Nomor bulan, `1` (Januari) sampai `12` (Desember). Kalau diisi, ia menang atas pilihan internal. Di luar 1–12 dianggap kosong. |
64
+ | `valueEnd` | `number` | ❌ | - | Nomor bulan akhir, `1`–`12`. Hanya berlaku saat `mode="range"`. |
65
+ | `mode` | `'single' \| 'range'` | ❌ | `'single'` | Satu bulan, atau rentang dua bulan. |
66
+ | `language` | `'en' \| 'id'` | ❌ | `'id'` | Bahasa nama bulan yang ditampilkan. |
67
+ | `hasClear` | `boolean` | ❌ | `false` | Menampilkan tombol clear saat ada nilai. |
68
+ | `onChange` | `(v: PickerFieldValue) => void` | ❌ | - | Dipanggil saat pilihan dikonfirmasi atau dibersihkan. |
69
+ | `onSelectClick` | `() => void` | ❌ | - | Dipanggil saat trigger ditekan. |
70
+ | `onPickerClose` | `() => void` | ❌ | - | Dipanggil saat sheet ditutup. |
71
+ | `title` | `string` | ❌ | `'Pilih Bulan'` | Judul sheet, diteruskan ke `MonthPicker`. |
72
+ | `cancelLabel` | `string` | ❌ | `'Batal'` | Label tombol batal di sheet. |
73
+ | `confirmLabel` | `string` | ❌ | `'pilih'` | Label tombol konfirmasi di sheet. |
74
+ | `testID` | `string` | ❌ | - | ID untuk automation testing. Lihat tabel di bawah. |
75
+
76
+ \* Wajib secara tipe hanya ketika `mode="range"`.
77
+
78
+ ## Bentuk nilai
79
+
80
+ `onChange` selalu menerima bentuk yang sama, apa pun mode-nya:
81
+
82
+ ```ts
83
+ interface PickerFieldValue {
84
+ value: number | null; // terisi di mode single
85
+ startValue: number | null; // terisi di mode range
86
+ endValue: number | null; // terisi di mode range
87
+ }
88
+ ```
89
+
90
+ Hanya satu sisi yang terisi, ditentukan `mode`. Saat dibersihkan, ketiganya
91
+ `null`.
92
+
93
+ **Bulan dihitung dari 1**, jadi Januari adalah `1` dan Desember `12` — baik
94
+ untuk prop `value` maupun untuk yang dilaporkan `onChange`. `MonthPicker` di
95
+ baliknya memakai indeks 0–11, tapi indeks itu tidak pernah bocor ke luar.
96
+
97
+ ## testID turunan
98
+
99
+ | Suffix | Elemen |
100
+ | ---------------- | ------------------------------------------ |
101
+ | `-label` | Label di atas trigger |
102
+ | `-trigger` | Trigger utama |
103
+ | `-trigger-end` | Trigger kedua (hanya `mode="range"`) |
104
+ | `-clear` | Tombol clear (hanya saat ada nilai) |
105
+ | `-sheet` | `BottomSheet` milik `MonthPicker` |
106
+ | `-option-{i}` | Opsi bulan di sheet, memakai indeks 0–11 milik `MonthPicker` |
107
+ | `-confirm` | Tombol konfirmasi di sheet |
108
+ | `-cancel` | Tombol batal di sheet |
109
+
110
+ `testID` diteruskan mentah ke `MonthPicker`, jadi id sheet dan opsinya
111
+ diturunkan dari basis yang sama — polanya sama seperti `InputDate` dengan
112
+ `DatePicker`.
113
+
114
+ ## Teks statis
115
+
116
+ Semua teks bawaan sheet berbahasa Indonesia dan bisa diganti dari sini, jadi
117
+ tidak perlu menyentuh `MonthPicker` langsung:
118
+
119
+ ```jsx
120
+ <InputMonth
121
+ label="Month"
122
+ placeholder="Pick a month"
123
+ language="en"
124
+ title="Choose a month"
125
+ cancelLabel="Cancel"
126
+ confirmLabel="Apply"
127
+ />
128
+ ```
129
+
130
+ `language` mengatur nama bulan; `title`, `cancelLabel` dan `confirmLabel`
131
+ mengatur teks statis sheet. Keduanya terpisah — mengubah `language` tidak ikut
132
+ menerjemahkan tombolnya.
@@ -32,6 +32,7 @@ Salin file `InputOtp.tsx` ke proyek React Native Anda dan import sesuai kebutuha
32
32
  | `hint` | `string` | - | Pesan kecil di bawah input (misal instruksi atau error) |
33
33
  | `hasError` | `boolean` | false | Jika `true`, border input berubah warna merah (indikasi error) |
34
34
  | `inputCenter` | `boolean` | false | Jika `true`, maka seluruh input field akan memposisikan diri ke tengah secara horizontal |
35
+ | `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-item-{index}` untuk tiap kotak digit, `-label`, dan `-error`. |
35
36
 
36
37
  ---
37
38
 
@@ -71,6 +71,7 @@ export default function Example() {
71
71
  | `useModal` | `boolean` | `true` | Gunakan modal untuk menampilkan opsi |
72
72
  | `required` | `boolean` | `false` | Untuk menampilkan indikator bintang di label |
73
73
  | `labelColor` | `stirng` | `true` | Untuk mengubah warna label |
74
+ | `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-trigger`, `-label`, `-clear`, `-error`. `testID` mentah diteruskan ke `Select`, yang menurunkan suffix-nya sendiri: `-sheet` (body bottom sheet), `-search-input` (field pencarian), `-submit` (mode multiple), `-option-{value}` (tiap opsi). |
74
75
 
75
76
  ### Pressable Props
76
77
 
@@ -0,0 +1,115 @@
1
+ # InputYear
2
+
3
+ Field tahun yang dibuka lewat `YearPicker`. Kembarannya
4
+ [`InputMonth`](./README_INPUT_MONTH.md) — bentuk, prop, dan bentuk nilainya
5
+ sama persis.
6
+
7
+ Tidak ada prop `language`: tahun berupa angka, dan tidak ada yang berubah
8
+ antar-locale.
9
+
10
+ ## Import
11
+
12
+ ```jsx
13
+ import { InputYear } from '@herca/rn-kit';
14
+ ```
15
+
16
+ ## Contoh Penggunaan
17
+
18
+ ```jsx
19
+ const [year, setYear] = useState<number>();
20
+
21
+ <InputYear
22
+ label="Tahun masuk"
23
+ placeholder="Pilih tahun"
24
+ value={year}
25
+ hasClear
26
+ onChange={({ value }) => setYear(value ?? undefined)}
27
+ />;
28
+ ```
29
+
30
+ ### Mode range
31
+
32
+ ```jsx
33
+ <InputYear
34
+ mode="range"
35
+ label="Periode"
36
+ placeholder="Tahun mulai"
37
+ placeholderEnd="Tahun selesai"
38
+ onChange={({ startValue, endValue }) => console.log(startValue, endValue)}
39
+ />
40
+ ```
41
+
42
+ ### Bersama InputMonth
43
+
44
+ `MonthPicker` tidak membawa tahun, jadi bulan-dan-tahun disusun dari dua field:
45
+
46
+ ```jsx
47
+ <InputMonth label="Bulan" placeholder="Pilih bulan" onChange={onMonthChange} />
48
+ <InputYear label="Tahun" placeholder="Pilih tahun" onChange={onYearChange} />
49
+ ```
50
+
51
+ ## Props
52
+
53
+ | Props | Tipe | Wajib | Default | Deskripsi |
54
+ | ---------------- | ------------------------------- | ----- | ---------- | ----------------------------------------------------------------------------- |
55
+ | `label` | `string` | ❌ | - | Teks label di atas trigger. Kalau kosong, elemen labelnya tidak dirender. |
56
+ | `placeholder` | `string` | ✅ | - | Teks trigger saat belum ada nilai. |
57
+ | `placeholderEnd` | `string` | ✅\* | - | Placeholder trigger kedua. Wajib dan hanya berlaku saat `mode="range"`. |
58
+ | `value` | `number` | ❌ | - | Tahun penuh, mis. `2024`. Kalau diisi, ia menang atas pilihan internal. |
59
+ | `valueEnd` | `number` | ❌ | - | Tahun akhir. Hanya berlaku saat `mode="range"`. |
60
+ | `mode` | `'single' \| 'range'` | ❌ | `'single'` | Satu tahun, atau rentang dua tahun. |
61
+ | `hasClear` | `boolean` | ❌ | `false` | Menampilkan tombol clear saat ada nilai. |
62
+ | `onChange` | `(v: PickerFieldValue) => void` | ❌ | - | Dipanggil saat pilihan dikonfirmasi atau dibersihkan. |
63
+ | `onSelectClick` | `() => void` | ❌ | - | Dipanggil saat trigger ditekan. |
64
+ | `onPickerClose` | `() => void` | ❌ | - | Dipanggil saat sheet ditutup. |
65
+ | `title` | `string` | ❌ | `'Pilih Tahun'` | Judul sheet, diteruskan ke `YearPicker`. |
66
+ | `cancelLabel` | `string` | ❌ | `'Batal'` | Label tombol batal di sheet. |
67
+ | `confirmLabel` | `string` | ❌ | `'Pilih'` | Label tombol konfirmasi di sheet. |
68
+ | `testID` | `string` | ❌ | - | ID untuk automation testing. Suffix-nya sama dengan `InputMonth`. |
69
+
70
+ \* Wajib secara tipe hanya ketika `mode="range"`.
71
+
72
+ ## Bentuk nilai
73
+
74
+ Sama dengan `InputMonth`:
75
+
76
+ ```ts
77
+ interface PickerFieldValue {
78
+ value: number | null; // terisi di mode single
79
+ startValue: number | null; // terisi di mode range
80
+ endValue: number | null; // terisi di mode range
81
+ }
82
+ ```
83
+
84
+ ## Rentang tahun
85
+
86
+ `YearPicker` menampilkan 121 tahun: 60 tahun sebelum sampai 60 tahun sesudah
87
+ tahun berjalan. Rentang itu belum bisa diatur lewat prop.
88
+
89
+ ## testID turunan
90
+
91
+ | Suffix | Elemen |
92
+ | -------------- | ------------------------------------ |
93
+ | `-label` | Label di atas trigger |
94
+ | `-trigger` | Trigger utama |
95
+ | `-trigger-end` | Trigger kedua (hanya `mode="range"`) |
96
+ | `-clear` | Tombol clear (hanya saat ada nilai) |
97
+ | `-sheet` | `BottomSheet` milik `YearPicker` |
98
+ | `-option-{th}` | Opsi tahun, mis. `-option-2024` |
99
+ | `-confirm` | Tombol konfirmasi di sheet |
100
+ | `-cancel` | Tombol batal di sheet |
101
+
102
+ ## Teks statis
103
+
104
+ Semua teks bawaan sheet berbahasa Indonesia dan bisa diganti dari sini, jadi
105
+ tidak perlu menyentuh `YearPicker` langsung:
106
+
107
+ ```jsx
108
+ <InputYear
109
+ label="Year"
110
+ placeholder="Pick a year"
111
+ title="Choose a year"
112
+ cancelLabel="Cancel"
113
+ confirmLabel="Apply"
114
+ />
115
+ ```
@@ -3,6 +3,7 @@ import { useEffect, useRef, useState } from 'react';
3
3
  import LabelForm from '../LabelForm/LabelForm';
4
4
  import Typography from '../Typography/Typography';
5
5
  import Color from '../Color/Color';
6
+ import { getTestID } from '../helpers/getTestID';
6
7
 
7
8
  interface SwitchProps {
8
9
  label?: string;
@@ -12,6 +13,7 @@ interface SwitchProps {
12
13
  hint?: string;
13
14
  hasError?: true;
14
15
  disabled?: boolean;
16
+ testID?: string;
15
17
  }
16
18
  export default function Switch({
17
19
  label,
@@ -21,6 +23,7 @@ export default function Switch({
21
23
  hint,
22
24
  hasError,
23
25
  disabled = false,
26
+ testID,
24
27
  }: SwitchProps) {
25
28
  const isControlled = value !== undefined;
26
29
  const [internalValue, setInternalValue] = useState<boolean>(false);
@@ -62,8 +65,11 @@ export default function Switch({
62
65
 
63
66
  return (
64
67
  <View style={{ gap: 4, opacity: disabled ? 0.5 : 1 }}>
65
- {label ? <LabelForm title={label} /> : null}
68
+ {label ? (
69
+ <LabelForm title={label} testID={getTestID(testID, 'label')} />
70
+ ) : null}
66
71
  <Pressable
72
+ testID={testID}
67
73
  style={styles.touchArea}
68
74
  onPress={handlePress}
69
75
  disabled={disabled}
@@ -2,6 +2,7 @@ import { StyleSheet, TextInput, View } from 'react-native';
2
2
  import LabelForm from '../LabelForm/LabelForm';
3
3
  import Color from '../Color/Color';
4
4
  import Typography from '../Typography/Typography';
5
+ import { getTestID } from '../helpers/getTestID';
5
6
  import type { TextAreaProps } from './type';
6
7
 
7
8
  export default function TextArea({
@@ -12,6 +13,7 @@ export default function TextArea({
12
13
  hint,
13
14
  onChangeText,
14
15
  required,
16
+ testID,
15
17
  ...props
16
18
  }: TextAreaProps) {
17
19
  const handleOnChangeText = (value: string) => {
@@ -20,7 +22,13 @@ export default function TextArea({
20
22
 
21
23
  return (
22
24
  <View style={styles.gap}>
23
- {label ? <LabelForm required={required} title={label} /> : null}
25
+ {label ? (
26
+ <LabelForm
27
+ testID={getTestID(testID, 'label')}
28
+ required={required}
29
+ title={label}
30
+ />
31
+ ) : null}
24
32
 
25
33
  <View
26
34
  style={[
@@ -32,6 +40,7 @@ export default function TextArea({
32
40
  ]}
33
41
  >
34
42
  <TextInput
43
+ testID={getTestID(testID, 'input')}
35
44
  onChangeText={handleOnChangeText}
36
45
  editable
37
46
  multiline
@@ -43,7 +52,11 @@ export default function TextArea({
43
52
  />
44
53
  </View>
45
54
  {hint ? (
46
- <Typography color={hasError ? Color.danger[500] : ''} variant="t2">
55
+ <Typography
56
+ testID={getTestID(testID, 'error')}
57
+ color={hasError ? Color.danger[500] : ''}
58
+ variant="t2"
59
+ >
47
60
  {hint}
48
61
  </Typography>
49
62
  ) : null}
@@ -13,6 +13,7 @@ interface Props {
13
13
  onPress?: () => void;
14
14
  hasError?: boolean;
15
15
  hint?: string;
16
+ testID?: string;
16
17
  }
17
18
 
18
19
  export default function CardTrigger({
@@ -22,6 +23,7 @@ export default function CardTrigger({
22
23
  onPress,
23
24
  hint,
24
25
  hasError,
26
+ testID,
25
27
  }: Props) {
26
28
  return (
27
29
  <Card
@@ -54,6 +56,7 @@ export default function CardTrigger({
54
56
  </Typography>
55
57
  </View>
56
58
  <Button
59
+ testID={testID}
57
60
  color="primary"
58
61
  title={btnSelect}
59
62
  size="small"
@@ -22,6 +22,7 @@ interface Props {
22
22
  onReplace?: (index: number) => void;
23
23
  onDelete?: (index: number) => void;
24
24
  hasError?: boolean;
25
+ testID?: string;
25
26
  }
26
27
 
27
28
  export default function CardTriggerSmall({
@@ -33,6 +34,7 @@ export default function CardTriggerSmall({
33
34
  onPreview,
34
35
  onReplace,
35
36
  hasError,
37
+ testID,
36
38
  }: Props) {
37
39
  const Component = files?.length === 0 ? View : TouchableOpacity;
38
40
  return (
@@ -48,7 +50,7 @@ export default function CardTriggerSmall({
48
50
  files.length > 0 ? layouting.flex.col : {},
49
51
  files.length > 0 ? spacing.gap[6] : {},
50
52
  ]}
51
- {...(files?.length > 0 && { onPress: onChooseFile })}
53
+ {...(files?.length > 0 && { onPress: onChooseFile, testID })}
52
54
  >
53
55
  <Image
54
56
  source={require('../../assets/input-file.png')}
@@ -65,6 +67,7 @@ export default function CardTriggerSmall({
65
67
 
66
68
  {files.length === 0 && (
67
69
  <Button
70
+ testID={testID}
68
71
  title={textButton}
69
72
  color="primary"
70
73
  size="small"
@@ -9,6 +9,7 @@ import Card from '../../../Ui/Card';
9
9
  import Color from '../../../Color/Color';
10
10
  import Typography from '../../../Typography/Typography';
11
11
  import Icon from '../../../Icon';
12
+ import { getTestID } from '../../../helpers/getTestID';
12
13
  import type { FileItem } from '../../type';
13
14
 
14
15
  interface Props {
@@ -19,6 +20,7 @@ interface Props {
19
20
  onDelete: (index: number) => void;
20
21
  variant?: 'default' | 'small';
21
22
  loading?: boolean;
23
+ testID?: string;
22
24
  }
23
25
 
24
26
  export default function ItemPreview({
@@ -29,12 +31,14 @@ export default function ItemPreview({
29
31
  onReplace,
30
32
  variant = 'default',
31
33
  loading = false,
34
+ testID,
32
35
  }: Props) {
33
36
  const Wrapper = variant === 'default' ? Card : View;
34
37
 
35
38
  return (
36
39
  <Wrapper>
37
40
  <TouchableOpacity
41
+ testID={testID}
38
42
  onPress={onPress}
39
43
  style={styles.containerPreview}
40
44
  activeOpacity={0.7}
@@ -125,11 +129,17 @@ export default function ItemPreview({
125
129
  />
126
130
  )}
127
131
 
128
- <TouchableOpacity onPress={() => onReplace(index)}>
132
+ <TouchableOpacity
133
+ testID={getTestID(testID, 'replace')}
134
+ onPress={() => onReplace(index)}
135
+ >
129
136
  <Icon name="rotate-right" size={18} color={Color.gray[700]} />
130
137
  </TouchableOpacity>
131
138
 
132
- <TouchableOpacity onPress={() => onDelete(index)}>
139
+ <TouchableOpacity
140
+ testID={getTestID(testID, 'delete')}
141
+ onPress={() => onDelete(index)}
142
+ >
133
143
  <Icon name="Times" size={12} color={Color.gray[700]} />
134
144
  </TouchableOpacity>
135
145
  </View>