@onehat/ui 0.3.381 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. package/package.json +37 -9
  2. package/src/Components/Accordion/Accordion.js +22 -17
  3. package/src/Components/Blank.js +1 -3
  4. package/src/Components/Buttons/BackButton.js +21 -12
  5. package/src/Components/Buttons/Button.js +65 -13
  6. package/src/Components/Buttons/CartButtonWithBadge.js +14 -6
  7. package/src/Components/Buttons/IconButton.js +31 -74
  8. package/src/Components/Buttons/PlusMinusButton.js +34 -21
  9. package/src/Components/Buttons/ReloadButton.js +7 -8
  10. package/src/Components/Buttons/SquareButton.js +41 -55
  11. package/src/Components/Container/Container.js +55 -16
  12. package/src/Components/Container/ScreenContainer.js +26 -16
  13. package/src/Components/Container/Splitter.js +38 -25
  14. package/src/Components/Editor/Editor.js +3 -2
  15. package/src/Components/Editor/InlineEditor.js +38 -32
  16. package/src/Components/Filter/DateRange.js +37 -18
  17. package/src/Components/Filter/NumberRange.js +87 -83
  18. package/src/Components/Form/Field/CKEditor/CKEditor.js +4 -4
  19. package/src/Components/Form/Field/Checkbox/CheckboxGroup.js +9 -6
  20. package/src/Components/Form/Field/Color.js +95 -86
  21. package/src/Components/Form/Field/Combo/Combo.js +347 -284
  22. package/src/Components/Form/Field/Combo/PageSizeCombo.js +4 -7
  23. package/src/Components/Form/Field/Date.js +276 -312
  24. package/src/Components/Form/Field/DisplayField.js +11 -5
  25. package/src/Components/Form/Field/File.js +26 -32
  26. package/src/Components/Form/Field/FormikForm.js +1018 -0
  27. package/src/Components/Form/Field/Input.js +91 -41
  28. package/src/Components/Form/Field/Json.js +25 -21
  29. package/src/Components/Form/Field/Number.js +70 -51
  30. package/src/Components/Form/Field/RadioGroup/RadioGroup.js +4 -6
  31. package/src/Components/Form/Field/Select/PageSizeSelect.js +33 -0
  32. package/src/Components/Form/Field/Select/Select.js +109 -0
  33. package/src/Components/Form/Field/Slider.js +38 -30
  34. package/src/Components/Form/Field/Tag/Tag.js +88 -72
  35. package/src/Components/Form/Field/Tag/ValueBox.js +25 -20
  36. package/src/Components/Form/Field/Text.js +21 -12
  37. package/src/Components/Form/Field/TextArea.js +32 -15
  38. package/src/Components/Form/Field/Toggle.js +41 -23
  39. package/src/Components/Form/FieldSet.js +77 -54
  40. package/src/Components/Form/Form.js +491 -268
  41. package/src/Components/Form/Label.js +28 -17
  42. package/src/Components/Gluestack/accordion/index.tsx +394 -0
  43. package/src/Components/Gluestack/actionsheet/index.tsx +619 -0
  44. package/src/Components/Gluestack/alert/index.tsx +310 -0
  45. package/src/Components/Gluestack/alert-dialog/index.tsx +295 -0
  46. package/src/Components/Gluestack/avatar/index.tsx +190 -0
  47. package/src/Components/Gluestack/badge/index.tsx +272 -0
  48. package/src/Components/Gluestack/bottomsheet/index.tsx +294 -0
  49. package/src/Components/Gluestack/box/index.tsx +19 -0
  50. package/src/Components/Gluestack/box/index.web.tsx +18 -0
  51. package/src/Components/Gluestack/box/styles.tsx +10 -0
  52. package/src/Components/Gluestack/button/index.tsx +494 -0
  53. package/src/Components/Gluestack/card/index.tsx +23 -0
  54. package/src/Components/Gluestack/card/index.web.tsx +22 -0
  55. package/src/Components/Gluestack/card/styles.tsx +20 -0
  56. package/src/Components/Gluestack/center/index.tsx +22 -0
  57. package/src/Components/Gluestack/center/index.web.tsx +19 -0
  58. package/src/Components/Gluestack/center/styles.tsx +8 -0
  59. package/src/Components/Gluestack/checkbox/index.tsx +305 -0
  60. package/src/Components/Gluestack/divider/index.tsx +44 -0
  61. package/src/Components/Gluestack/drawer/index.tsx +354 -0
  62. package/src/Components/Gluestack/fab/index.tsx +286 -0
  63. package/src/Components/Gluestack/flat-list/index.tsx +2 -0
  64. package/src/Components/Gluestack/form-control/index.tsx +527 -0
  65. package/src/Components/Gluestack/gluestack-ui-provider/config.ts +332 -0
  66. package/src/Components/Gluestack/gluestack-ui-provider/index.tsx +47 -0
  67. package/src/Components/Gluestack/gluestack-ui-provider/index.web.tsx +94 -0
  68. package/src/Components/Gluestack/gluestack-ui-provider/script.ts +19 -0
  69. package/src/Components/Gluestack/grid/index.tsx +341 -0
  70. package/src/Components/Gluestack/grid/index.web.tsx +65 -0
  71. package/src/Components/Gluestack/grid/styles.tsx +15 -0
  72. package/src/Components/Gluestack/heading/index.tsx +212 -0
  73. package/src/Components/Gluestack/heading/index.web.tsx +203 -0
  74. package/src/Components/Gluestack/heading/styles.tsx +43 -0
  75. package/src/Components/Gluestack/hstack/index.tsx +23 -0
  76. package/src/Components/Gluestack/hstack/index.web.tsx +22 -0
  77. package/src/Components/Gluestack/hstack/styles.tsx +25 -0
  78. package/src/Components/Gluestack/image/index.tsx +52 -0
  79. package/src/Components/Gluestack/image-background/index.tsx +21 -0
  80. package/src/Components/Gluestack/index.js +116 -0
  81. package/src/Components/Gluestack/input/index.tsx +287 -0
  82. package/src/Components/Gluestack/input-accessory-view/index.tsx +2 -0
  83. package/src/Components/Gluestack/keyboard-avoiding-view/index.tsx +2 -0
  84. package/src/Components/Gluestack/link/index.tsx +107 -0
  85. package/src/Components/Gluestack/menu/index.tsx +210 -0
  86. package/src/Components/Gluestack/modal/index.tsx +279 -0
  87. package/src/Components/Gluestack/popover/index.tsx +352 -0
  88. package/src/Components/Gluestack/portal/index.tsx +13 -0
  89. package/src/Components/Gluestack/pressable/index.tsx +46 -0
  90. package/src/Components/Gluestack/progress/index.tsx +164 -0
  91. package/src/Components/Gluestack/radio/index.tsx +304 -0
  92. package/src/Components/Gluestack/refresh-control/index.tsx +2 -0
  93. package/src/Components/Gluestack/safe-area-view/index.tsx +2 -0
  94. package/src/Components/Gluestack/scroll-view/index.tsx +2 -0
  95. package/src/Components/Gluestack/section-list/index.tsx +2 -0
  96. package/src/Components/Gluestack/select/index.tsx +335 -0
  97. package/src/Components/Gluestack/select/select-actionsheet.tsx +584 -0
  98. package/src/Components/Gluestack/skeleton/index.tsx +138 -0
  99. package/src/Components/Gluestack/skeleton/index.web.tsx +103 -0
  100. package/src/Components/Gluestack/skeleton/styles.tsx +35 -0
  101. package/src/Components/Gluestack/slider/index.tsx +283 -0
  102. package/src/Components/Gluestack/spinner/index.tsx +34 -0
  103. package/src/Components/Gluestack/status-bar/index.tsx +2 -0
  104. package/src/Components/Gluestack/switch/index.tsx +55 -0
  105. package/src/Components/Gluestack/table/index.tsx +200 -0
  106. package/src/Components/Gluestack/table/index.web.tsx +142 -0
  107. package/src/Components/Gluestack/table/styles.tsx +44 -0
  108. package/src/Components/Gluestack/text/index.tsx +48 -0
  109. package/src/Components/Gluestack/text/index.web.tsx +45 -0
  110. package/src/Components/Gluestack/text/styles.tsx +47 -0
  111. package/src/Components/Gluestack/textarea/index.tsx +108 -0
  112. package/src/Components/Gluestack/toast/index.tsx +225 -0
  113. package/src/Components/Gluestack/tooltip/index.tsx +125 -0
  114. package/src/Components/Gluestack/utils/use-break-point-value.ts +101 -0
  115. package/src/Components/Gluestack/view/index.tsx +2 -0
  116. package/src/Components/Gluestack/virtualized-list/index.tsx +2 -0
  117. package/src/Components/Gluestack/vstack/index.tsx +24 -0
  118. package/src/Components/Gluestack/vstack/index.web.tsx +23 -0
  119. package/src/Components/Gluestack/vstack/styles.tsx +25 -0
  120. package/src/Components/Grid/Grid.js +192 -135
  121. package/src/Components/Grid/GridHeaderRow.js +51 -59
  122. package/src/Components/Grid/GridRow.js +151 -57
  123. package/src/Components/Grid/HeaderColumnSelectorHandle.js +16 -10
  124. package/src/Components/Grid/HeaderReorderHandle.js +17 -13
  125. package/src/Components/Grid/HeaderResizeHandle.js +17 -13
  126. package/src/Components/Grid/NoRecordsFound.js +15 -18
  127. package/src/Components/Grid/RowDragHandle.js +9 -13
  128. package/src/Components/Hoc/Secondary/withSecondaryEditor.js +14 -9
  129. package/src/Components/Hoc/Secondary/withSecondaryWindowedEditor.js +14 -11
  130. package/src/Components/Hoc/withAlert.js +150 -200
  131. package/src/Components/Hoc/withBlank.js +4 -6
  132. package/src/Components/Hoc/withCollapsible.js +4 -3
  133. package/src/Components/Hoc/withComponent.js +33 -6
  134. package/src/Components/Hoc/withContextMenu.js +133 -141
  135. package/src/Components/Hoc/withData.js +5 -4
  136. package/src/Components/Hoc/withDnd.js +11 -9
  137. package/src/Components/Hoc/withDraggable.js +10 -10
  138. package/src/Components/Hoc/withEditor.js +18 -13
  139. package/src/Components/Hoc/withEvents.js +4 -6
  140. package/src/Components/Hoc/withFilters.js +524 -498
  141. package/src/Components/Hoc/withInlineEditor.js +7 -5
  142. package/src/Components/Hoc/withModal.js +79 -137
  143. package/src/Components/Hoc/withMultiSelection.js +4 -2
  144. package/src/Components/Hoc/withPdfButtons.js +109 -111
  145. package/src/Components/Hoc/withPresetButtons.js +49 -53
  146. package/src/Components/Hoc/withSelection.js +6 -5
  147. package/src/Components/Hoc/withSideEditor.js +12 -6
  148. package/src/Components/Hoc/withTooltip.js +18 -12
  149. package/src/Components/Hoc/withValue.js +6 -5
  150. package/src/Components/Hoc/withWindowedEditor.js +13 -11
  151. package/src/Components/Icons/AddressBook.js +7 -10
  152. package/src/Components/Icons/Alt.js +8 -15
  153. package/src/Components/Icons/AngleLeft.js +7 -14
  154. package/src/Components/Icons/AngleRight.js +7 -14
  155. package/src/Components/Icons/AnglesLeft.js +7 -14
  156. package/src/Components/Icons/AnglesRight.js +7 -14
  157. package/src/Components/Icons/Asterisk.js +7 -10
  158. package/src/Components/Icons/Ban.js +9 -14
  159. package/src/Components/Icons/Bars.js +7 -10
  160. package/src/Components/Icons/BarsStaggered.js +7 -10
  161. package/src/Components/Icons/Bell.js +7 -19
  162. package/src/Components/Icons/BigCircle.js +7 -14
  163. package/src/Components/Icons/Book.js +7 -10
  164. package/src/Components/Icons/BookOpen.js +7 -10
  165. package/src/Components/Icons/Bookmark.js +8 -17
  166. package/src/Components/Icons/Bug.js +7 -10
  167. package/src/Components/Icons/Building.js +7 -10
  168. package/src/Components/Icons/Calendar.js +7 -14
  169. package/src/Components/Icons/Calendar2.js +7 -14
  170. package/src/Components/Icons/CalendarDays.js +7 -14
  171. package/src/Components/Icons/Camera.js +7 -14
  172. package/src/Components/Icons/CaretDown.js +7 -14
  173. package/src/Components/Icons/CaretUp.js +7 -14
  174. package/src/Components/Icons/CartPlus.js +7 -10
  175. package/src/Components/Icons/CartShopping.js +7 -10
  176. package/src/Components/Icons/CashRegister.js +7 -10
  177. package/src/Components/Icons/Certificate.js +7 -10
  178. package/src/Components/Icons/ChartLine.js +7 -10
  179. package/src/Components/Icons/ChartPie.js +7 -10
  180. package/src/Components/Icons/Check.js +7 -10
  181. package/src/Components/Icons/CheckDouble.js +7 -10
  182. package/src/Components/Icons/ChevronDown.js +7 -10
  183. package/src/Components/Icons/ChevronLeft.js +7 -10
  184. package/src/Components/Icons/ChevronRight.js +7 -10
  185. package/src/Components/Icons/ChevronUp.js +7 -10
  186. package/src/Components/Icons/Circle.js +7 -10
  187. package/src/Components/Icons/CircleArrowRight.js +7 -10
  188. package/src/Components/Icons/CircleExclamation.js +7 -14
  189. package/src/Components/Icons/CircleInfo.js +7 -10
  190. package/src/Components/Icons/CircleQuestion.js +7 -10
  191. package/src/Components/Icons/CircleXmark.js +7 -10
  192. package/src/Components/Icons/CircleXmarkRegular.js +7 -10
  193. package/src/Components/Icons/Clipboard.js +7 -14
  194. package/src/Components/Icons/ClipboardCheck.js +7 -17
  195. package/src/Components/Icons/ClipboardList.js +7 -16
  196. package/src/Components/Icons/Clock.js +7 -10
  197. package/src/Components/Icons/ClockRegular.js +7 -10
  198. package/src/Components/Icons/ClockRotateLeft.js +7 -10
  199. package/src/Components/Icons/Clone.js +7 -10
  200. package/src/Components/Icons/Collapse.js +7 -14
  201. package/src/Components/Icons/Comment.js +7 -10
  202. package/src/Components/Icons/CommentDots.js +7 -10
  203. package/src/Components/Icons/CommentRegular.js +7 -10
  204. package/src/Components/Icons/Comments.js +7 -10
  205. package/src/Components/Icons/CommentsRegular.js +7 -10
  206. package/src/Components/Icons/Copyright.js +7 -10
  207. package/src/Components/Icons/Dot.js +10 -15
  208. package/src/Components/Icons/Download.js +11 -0
  209. package/src/Components/Icons/Duplicate.js +7 -14
  210. package/src/Components/Icons/Edit.js +7 -14
  211. package/src/Components/Icons/EllipsisHorizontal.js +7 -16
  212. package/src/Components/Icons/EllipsisVertical.js +7 -14
  213. package/src/Components/Icons/Envelope.js +7 -10
  214. package/src/Components/Icons/EnvelopeRegular.js +7 -10
  215. package/src/Components/Icons/Excel.js +7 -10
  216. package/src/Components/Icons/Exclamation.js +7 -10
  217. package/src/Components/Icons/Expand.js +7 -10
  218. package/src/Components/Icons/Eye.js +7 -14
  219. package/src/Components/Icons/EyeSlash.js +7 -10
  220. package/src/Components/Icons/File.js +7 -14
  221. package/src/Components/Icons/FloppyDiskRegular.js +7 -10
  222. package/src/Components/Icons/Folder.js +7 -10
  223. package/src/Components/Icons/FolderClosed.js +7 -10
  224. package/src/Components/Icons/FolderOpen.js +7 -10
  225. package/src/Components/Icons/FolderTree.js +7 -10
  226. package/src/Components/Icons/FullWidth.js +10 -25
  227. package/src/Components/Icons/Gauge.js +7 -17
  228. package/src/Components/Icons/Gear.js +7 -14
  229. package/src/Components/Icons/Gears.js +7 -10
  230. package/src/Components/Icons/Gift.js +7 -10
  231. package/src/Components/Icons/Grip.js +7 -14
  232. package/src/Components/Icons/GripLines.js +7 -14
  233. package/src/Components/Icons/GripLinesVertical.js +7 -14
  234. package/src/Components/Icons/GripVertical.js +7 -14
  235. package/src/Components/Icons/Hammer.js +7 -10
  236. package/src/Components/Icons/Hand.js +7 -10
  237. package/src/Components/Icons/HighPriority.js +7 -17
  238. package/src/Components/Icons/House.js +7 -10
  239. package/src/Components/Icons/Images.js +7 -10
  240. package/src/Components/Icons/Info.js +7 -10
  241. package/src/Components/Icons/ItunesNote.js +7 -10
  242. package/src/Components/Icons/Js.js +7 -16
  243. package/src/Components/Icons/Leaf.js +7 -10
  244. package/src/Components/Icons/Link.js +7 -9
  245. package/src/Components/Icons/List.js +7 -10
  246. package/src/Components/Icons/ListCheck.js +7 -10
  247. package/src/Components/Icons/LocationDot.js +7 -10
  248. package/src/Components/Icons/Loop.js +7 -14
  249. package/src/Components/Icons/Loop1.js +8 -13
  250. package/src/Components/Icons/LoopAll.js +8 -13
  251. package/src/Components/Icons/LowPriority.js +7 -17
  252. package/src/Components/Icons/MagnifyingGlass.js +7 -10
  253. package/src/Components/Icons/Maximize.js +7 -10
  254. package/src/Components/Icons/MedPriority.js +7 -17
  255. package/src/Components/Icons/Microphone.js +7 -10
  256. package/src/Components/Icons/Minimize.js +7 -10
  257. package/src/Components/Icons/Minus.js +7 -14
  258. package/src/Components/Icons/MobileScreenButton.js +7 -10
  259. package/src/Components/Icons/MoneyBill.js +7 -10
  260. package/src/Components/Icons/MoneyBillWave.js +7 -10
  261. package/src/Components/Icons/Mouth.js +10 -21
  262. package/src/Components/Icons/Music.js +7 -10
  263. package/src/Components/Icons/Na.js +7 -14
  264. package/src/Components/Icons/NoLoop.js +11 -13
  265. package/src/Components/Icons/NoReorderRows.js +17 -22
  266. package/src/Components/Icons/ObjectGroupRegular.js +7 -10
  267. package/src/Components/Icons/Pause.js +7 -10
  268. package/src/Components/Icons/Pdf.js +7 -10
  269. package/src/Components/Icons/Pencil.js +7 -14
  270. package/src/Components/Icons/Phone.js +7 -10
  271. package/src/Components/Icons/Play.js +7 -10
  272. package/src/Components/Icons/Plus.js +7 -14
  273. package/src/Components/Icons/Presentation.js +7 -16
  274. package/src/Components/Icons/Print.js +7 -14
  275. package/src/Components/Icons/Question.js +7 -10
  276. package/src/Components/Icons/Rate-.25x.js +12 -17
  277. package/src/Components/Icons/Rate-.5x.js +11 -16
  278. package/src/Components/Icons/Rate-.75x.js +8 -13
  279. package/src/Components/Icons/Rate-1.25x.js +8 -13
  280. package/src/Components/Icons/Rate-1.5x.js +8 -13
  281. package/src/Components/Icons/Rate-1.75x.js +8 -13
  282. package/src/Components/Icons/Rate-1x.js +11 -16
  283. package/src/Components/Icons/Rate-2x.js +8 -13
  284. package/src/Components/Icons/RateIcon-.25x.js +8 -13
  285. package/src/Components/Icons/RateIcon-.5x.js +11 -16
  286. package/src/Components/Icons/RateIcon-.75x.js +8 -13
  287. package/src/Components/Icons/RateIcon-1.25x.js +8 -13
  288. package/src/Components/Icons/RateIcon-1.5x.js +8 -13
  289. package/src/Components/Icons/RateIcon-1.75x.js +8 -13
  290. package/src/Components/Icons/RateIcon-1x.js +8 -13
  291. package/src/Components/Icons/RateIcon-2x.js +8 -13
  292. package/src/Components/Icons/RectangleXmark.js +7 -10
  293. package/src/Components/Icons/RectangleXmarkRegular.js +7 -10
  294. package/src/Components/Icons/ReorderRows.js +8 -13
  295. package/src/Components/Icons/RightFromBracket.js +7 -10
  296. package/src/Components/Icons/RightLeft.js +7 -10
  297. package/src/Components/Icons/RightToBracket.js +7 -10
  298. package/src/Components/Icons/Rotate.js +7 -14
  299. package/src/Components/Icons/RotateLeft.js +7 -10
  300. package/src/Components/Icons/RotateRight.js +7 -14
  301. package/src/Components/Icons/ScrewdriverWrench.js +7 -10
  302. package/src/Components/Icons/Scroll.js +7 -10
  303. package/src/Components/Icons/Share.js +7 -10
  304. package/src/Components/Icons/Shop.js +7 -10
  305. package/src/Components/Icons/SideBySide.js +7 -20
  306. package/src/Components/Icons/SortDown.js +7 -10
  307. package/src/Components/Icons/SortDownAlt.js +7 -10
  308. package/src/Components/Icons/SortUp.js +7 -10
  309. package/src/Components/Icons/SortUpAlt.js +7 -14
  310. package/src/Components/Icons/Square.js +7 -10
  311. package/src/Components/Icons/SquareCheck.js +7 -10
  312. package/src/Components/Icons/SquareCheckRegular.js +7 -10
  313. package/src/Components/Icons/SquareMinus.js +7 -14
  314. package/src/Components/Icons/SquareRegular.js +7 -10
  315. package/src/Components/Icons/Store.js +7 -10
  316. package/src/Components/Icons/Table.js +7 -16
  317. package/src/Components/Icons/ThumbsDown.js +7 -10
  318. package/src/Components/Icons/ThumbsDownRegular.js +7 -10
  319. package/src/Components/Icons/ThumbsUp.js +7 -10
  320. package/src/Components/Icons/ThumbsUpRegular.js +7 -10
  321. package/src/Components/Icons/Trash.js +7 -14
  322. package/src/Components/Icons/TrashCan.js +7 -14
  323. package/src/Components/Icons/TriangleExclamation.js +7 -14
  324. package/src/Components/Icons/Truck.js +7 -10
  325. package/src/Components/Icons/TruckFast.js +7 -10
  326. package/src/Components/Icons/Upload.js +11 -0
  327. package/src/Components/Icons/UploadDownload.js +11 -11
  328. package/src/Components/Icons/User.js +7 -10
  329. package/src/Components/Icons/UserGroup.js +7 -10
  330. package/src/Components/Icons/UserPlus.js +7 -10
  331. package/src/Components/Icons/UserSecret.js +7 -10
  332. package/src/Components/Icons/Video.js +7 -16
  333. package/src/Components/Icons/X.js +7 -10
  334. package/src/Components/Icons/Xmark.js +7 -10
  335. package/src/Components/Layout/CenterBox.js +13 -9
  336. package/src/Components/Layout/Footer.js +20 -13
  337. package/src/Components/Messages/ConfirmationMessage.js +30 -13
  338. package/src/Components/Messages/ErrorMessage.js +29 -23
  339. package/src/Components/Messages/Loading.js +10 -8
  340. package/src/Components/Messages/OkMessage.js +30 -13
  341. package/src/Components/Messages/Unauthorized.js +5 -8
  342. package/src/Components/Messages/WaitMessage.js +37 -73
  343. package/src/Components/Panel/AccordionGridPanel.js +6 -6
  344. package/src/Components/Panel/FormPanel.js +7 -3
  345. package/src/Components/Panel/Header.js +132 -94
  346. package/src/Components/Panel/Mask.js +4 -4
  347. package/src/Components/Panel/Panel.js +55 -72
  348. package/src/Components/Panel/TabPanel.js +1 -1
  349. package/src/Components/Picker/Picker.js +10 -9
  350. package/src/Components/Report/Report.js +17 -14
  351. package/src/Components/Screens/Manager.js +22 -22
  352. package/src/Components/Tab/TabBar.js +293 -225
  353. package/src/Components/Toolbar/FilterToolbar.js +15 -11
  354. package/src/Components/Toolbar/Pagination.js +51 -46
  355. package/src/Components/Toolbar/PaginationToolbar.js +25 -19
  356. package/src/Components/Toolbar/Toolbar.js +26 -13
  357. package/src/Components/Tooltip/Tooltip.js +35 -0
  358. package/src/Components/Tree/Tree.js +134 -140
  359. package/src/Components/Tree/TreeNode.js +75 -36
  360. package/src/Components/Viewer/Viewer.js +203 -80
  361. package/src/Components/Window/Editor.js +0 -5
  362. package/src/Components/Window/UploadsDownloadsWindow.js +40 -22
  363. package/src/Components/index.js +11 -8
  364. package/src/Constants/Alert.js +0 -0
  365. package/src/Constants/AppStates.js +0 -0
  366. package/src/Constants/Colors.js +13 -0
  367. package/src/Constants/Commands.js +0 -0
  368. package/src/Constants/Date.js +0 -0
  369. package/src/Constants/Dates.js +16 -0
  370. package/src/Constants/Directions.js +0 -0
  371. package/src/Constants/Editor.js +0 -0
  372. package/src/Constants/EditorModes.js +2 -0
  373. package/src/Constants/File.js +0 -0
  374. package/src/Constants/Filters.js +0 -0
  375. package/src/Constants/Grid.js +0 -0
  376. package/src/Constants/Input.js +1 -0
  377. package/src/Constants/MimeTypes.js +0 -0
  378. package/src/Constants/Selection.js +0 -0
  379. package/src/Constants/Styles.js +119 -108
  380. package/src/Constants/Tasks.js +3 -0
  381. package/src/Constants/Tree.js +0 -0
  382. package/src/Constants/UiModes.js +3 -2
  383. package/src/Functions/BankersRound.js +0 -0
  384. package/src/Functions/Cypress/button_functions.js +0 -0
  385. package/src/Functions/Cypress/crud_functions.js +0 -0
  386. package/src/Functions/Cypress/dom_functions.js +0 -0
  387. package/src/Functions/Cypress/grid_functions.js +0 -0
  388. package/src/Functions/Cypress/navigation_functions.js +0 -0
  389. package/src/Functions/Cypress/tree_functions.js +0 -0
  390. package/src/Functions/Cypress/utilities.js +0 -0
  391. package/src/Functions/PlatformDetector.js +0 -0
  392. package/src/Functions/Timer.js +0 -0
  393. package/src/Functions/buildAdditionalButtons.js +5 -5
  394. package/src/Functions/chunkArray.js +0 -0
  395. package/src/Functions/colorConversions.js +74 -0
  396. package/src/Functions/delay.js +0 -0
  397. package/src/Functions/delayUntil.js +0 -0
  398. package/src/Functions/deleteSaved.js +0 -0
  399. package/src/Functions/deleteSecure.js +0 -0
  400. package/src/Functions/downloadInBackground.js +0 -0
  401. package/src/Functions/downloadWithFetch.js +0 -0
  402. package/src/Functions/emptyFn.js +0 -0
  403. package/src/Functions/getComponentFromType.js +0 -0
  404. package/src/Functions/getIconButtonFromConfig.js +5 -9
  405. package/src/Functions/getIsMobile.js +0 -0
  406. package/src/Functions/getNodeIcon.js +28 -0
  407. package/src/Functions/getPref.js +0 -0
  408. package/src/Functions/getSaved.js +0 -0
  409. package/src/Functions/getSecure.js +0 -0
  410. package/src/Functions/getTokenHeaders.js +0 -0
  411. package/src/Functions/gsToHex.js +205 -0
  412. package/src/Functions/ignoreWanings.js +46 -0
  413. package/src/Functions/inArray.js +0 -0
  414. package/src/Functions/isJson.js +0 -0
  415. package/src/Functions/isSerializable.js +0 -0
  416. package/src/Functions/isVideo.js +0 -0
  417. package/src/Functions/jsonValidator.js +0 -0
  418. package/src/Functions/nbToRgb.js +1 -1
  419. package/src/Functions/objectToClassName.js +72 -0
  420. package/src/Functions/parseNotification.js +0 -0
  421. package/src/Functions/processImage.js +0 -0
  422. package/src/Functions/registerReactNativeComponents.js +0 -0
  423. package/src/Functions/registerWebComponents.js +0 -0
  424. package/src/Functions/setCustomInflector.js +0 -0
  425. package/src/Functions/setPref.js +0 -0
  426. package/src/Functions/setProgress.js +0 -0
  427. package/src/Functions/setSaved.js +0 -0
  428. package/src/Functions/setSecure.js +0 -0
  429. package/src/Functions/setThemeOverrides.js +0 -0
  430. package/src/Functions/setUiSavesRepo.js +0 -0
  431. package/src/Functions/sleep.js +0 -0
  432. package/src/Functions/tailwindFunctions.js +384 -0
  433. package/src/Functions/testProps.js +0 -0
  434. package/src/Functions/trackEngagementHit.js +0 -0
  435. package/src/Functions/verifyCompleted.js +0 -0
  436. package/src/Functions/waitFor.js +2 -2
  437. package/src/PlatformImports/Web/Attachments.js +32 -38
  438. package/src/PlatformImports/Web/File.js +38 -31
  439. package/src/UiGlobals.js +8 -1
  440. package/src/Components/Grid/ColumnSelectorWindow.js +0 -125
@@ -1,29 +1,33 @@
1
1
  import React, { useState, useEffect, useRef, } from 'react';
2
2
  import {
3
+ Box,
4
+ HStack,
5
+ HStackNative,
3
6
  Icon,
4
- Modal,
5
- Popover,
7
+ Modal, ModalBackdrop, ModalHeader, ModalContent, ModalCloseButton, ModalBody, ModalFooter,
8
+ Popover, PopoverBackdrop, PopoverContent, PopoverBody,
6
9
  Pressable,
7
- Row,
8
10
  Text,
11
+ TextNative,
9
12
  Tooltip,
10
- } from 'native-base';
13
+ VStack,
14
+ } from '../../../Gluestack';
11
15
  import {
12
- UI_MODE_REACT_NATIVE,
16
+ UI_MODE_NATIVE,
13
17
  UI_MODE_WEB,
14
18
  } from '../../../../Constants/UiModes.js';
15
19
  import {
16
20
  EDITOR_TYPE__WINDOWED,
17
21
  } from '../../../../Constants/Editor.js';
22
+ import testProps from '../../../../Functions/testProps.js';
18
23
  import UiGlobals from '../../../../UiGlobals.js';
19
24
  import Input from '../Input.js';
25
+ import { Grid, WindowedGridEditor } from '../../../Grid/Grid.js';
20
26
  import withAlert from '../../../Hoc/withAlert.js';
21
27
  import withComponent from '../../../Hoc/withComponent.js';
22
28
  import withData from '../../../Hoc/withData.js';
23
29
  import withValue from '../../../Hoc/withValue.js';
24
30
  import emptyFn from '../../../../Functions/emptyFn.js';
25
- import testProps from '../../../../Functions/testProps.js';
26
- import { Grid, WindowedGridEditor } from '../../../Grid/Grid.js';
27
31
  import IconButton from '../../../Buttons/IconButton.js';
28
32
  import CaretDown from '../../../Icons/CaretDown.js';
29
33
  import Check from '../../../Icons/Check.js';
@@ -34,6 +38,7 @@ import _ from 'lodash';
34
38
  const FILTER_NAME = 'q';
35
39
 
36
40
  export function ComboComponent(props) {
41
+
37
42
  const {
38
43
  additionalButtons,
39
44
  autoFocus = false,
@@ -80,6 +85,7 @@ export function ComboComponent(props) {
80
85
  } = props,
81
86
  styles = UiGlobals.styles,
82
87
  inputRef = useRef(),
88
+ inputCloneRef = useRef(),
83
89
  triggerRef = useRef(),
84
90
  menuRef = useRef(),
85
91
  displayValueRef = useRef(),
@@ -96,6 +102,7 @@ export function ComboComponent(props) {
96
102
  [textInputValue, setTextInputValue] = useState(''),
97
103
  [newEntityDisplayValue, setNewEntityDisplayValue] = useState(null),
98
104
  [filteredData, setFilteredData] = useState(data),
105
+ [inputHeight, setInputHeight] = useState(0),
99
106
  [width, setWidth] = useState(0),
100
107
  [top, setTop] = useState(0),
101
108
  [left, setLeft] = useState(0),
@@ -107,25 +114,14 @@ export function ComboComponent(props) {
107
114
  if (isMenuShown) {
108
115
  return;
109
116
  }
110
- if (UiGlobals.mode === UI_MODE_WEB && inputRef.current.getBoundingClientRect) {
117
+ if (UiGlobals.mode === UI_MODE_WEB && inputRef.current?.getBoundingClientRect) {
111
118
  // For web, ensure it's in the proper place
112
119
  const
113
120
  rect = inputRef.current.getBoundingClientRect(),
114
- bodyRect = document.body.getBoundingClientRect(),
115
- isUpper = rect.top < bodyRect.height / 2;
116
-
117
- if (isUpper) {
118
- // Menu is below the combo
119
- const rectTop = rect.top + rect.height;
120
- if (rectTop !== top) {
121
- setTop(rectTop);
122
- }
123
- } else {
124
- // Menu is above the combo
125
- const rectTop = rect.top - styles.FORM_COMBO_MENU_HEIGHT;
126
- if (rectTop !== top) {
127
- setTop(rectTop);
128
- }
121
+ inputRect = inputRef.current.getBoundingClientRect();
122
+
123
+ if (rect.top !== top) {
124
+ setTop(rect.top);
129
125
  }
130
126
  if (rect.left !== left) {
131
127
  setLeft(rect.left);
@@ -139,6 +135,8 @@ export function ComboComponent(props) {
139
135
  if (widthToSet !== width) {
140
136
  setWidth(widthToSet);
141
137
  }
138
+
139
+ setInputHeight(inputRect.height);
142
140
  }
143
141
  if (Repository && !Repository.isLoaded) {
144
142
  // await Repository.load(); // this breaks when the menu (Grid) has selectorSelected
@@ -495,186 +493,177 @@ export function ComboComponent(props) {
495
493
  return null;
496
494
  }
497
495
 
498
- const inputIconElement = icon ? <Icon as={icon} color="trueGray.300" size="md" ml={2} mr={3} /> : null;
496
+ const inputIconElement = icon ? <Icon as={icon} size="md" className="text-grey-300 ml-1 mr-2" /> : null;
499
497
  let xButton = null,
500
498
  eyeButton = null,
501
- inputAndTrigger = null,
499
+ trigger = null,
500
+ input = null,
501
+ inputClone = null,
502
502
  checkButton = null,
503
503
  grid = null,
504
504
  dropdownMenu = null,
505
505
  assembledComponents = null;
506
506
 
507
- if (showXButton && !_.isNil(value)) {
507
+ if (showXButton) {
508
508
  xButton = <IconButton
509
509
  {...testProps('xBtn')}
510
+ icon={Xmark}
510
511
  _icon={{
511
- as: Xmark,
512
- color: 'trueGray.600',
513
512
  size: 'sm',
513
+ className: 'text-grey-600',
514
514
  }}
515
- isDisabled={isDisabled}
515
+ isDisabled={isDisabled || _.isNil(value)}
516
516
  onPress={onXButtonPress}
517
- h="100%"
518
- bg={styles.FORM_COMBO_TRIGGER_BG}
519
- _hover={{
520
- bg: styles.FORM_COMBO_TRIGGER_HOVER_BG,
521
- }}
522
- mr={1}
517
+ tooltip="Clear selection"
518
+ className={`
519
+ h-full
520
+ mr-1
521
+ ${styles.FORM_COMBO_TRIGGER_BG}
522
+ ${styles.FORM_COMBO_TRIGGER_BG_HOVER}
523
+ `}
523
524
  />;
524
525
  }
525
- if (showEyeButton && Editor && !_.isNil(value)) {
526
+ if (showEyeButton && Editor) {
526
527
  eyeButton = <IconButton
527
528
  {...testProps('eyeBtn')}
529
+ icon={Eye}
528
530
  _icon={{
529
- as: Eye,
530
- color: 'trueGray.600',
531
531
  size: 'sm',
532
+ className: 'text-grey-600',
532
533
  }}
533
- isDisabled={isDisabled}
534
+ isDisabled={isDisabled || _.isNil(value)}
534
535
  onPress={onEyeButtonPress}
535
- h="100%"
536
- bg={styles.FORM_COMBO_TRIGGER_BG}
537
- _hover={{
538
- bg: styles.FORM_COMBO_TRIGGER_HOVER_BG,
539
- }}
540
- mr={1}
536
+ tooltip="View selected record"
537
+ className={`
538
+ h-full
539
+ mr-1
540
+ ${styles.FORM_COMBO_TRIGGER_BG}
541
+ ${styles.FORM_COMBO_TRIGGER_BG_HOVER}
542
+ `}
541
543
  />;
542
544
  }
545
+ trigger = <IconButton
546
+ {...testProps('trigger')}
547
+ ref={triggerRef}
548
+ icon={CaretDown}
549
+ _icon={{
550
+ size: 'sm',
551
+ className: 'text-grey-500',
552
+ }}
553
+ isDisabled={isDisabled}
554
+ onPress={onTriggerPress}
555
+ onBlur={onTriggerBlur}
556
+ className={`
557
+ trigger
558
+ h-full
559
+ border
560
+ border-l-0
561
+ border-gray-400
562
+ rounded-l-none
563
+ rounded-r-md
564
+ ${styles.FORM_COMBO_TRIGGER_BG}
565
+ ${styles.FORM_COMBO_TRIGGER_BG_HOVER}
566
+ `}
567
+ />;
543
568
 
544
569
  if (UiGlobals.mode === UI_MODE_WEB) {
545
- inputAndTrigger = <>
546
- {disableDirectEntry ?
547
- <Pressable
548
- {...testProps('toggleMenuBtn')}
549
- onPress={toggleMenu}
550
- flex={1}
551
- h="100%"
552
- flexDirection="row"
553
- justifyContent="center"
554
- alignItems="center"
555
- borderWidth={1}
556
- borderColor="trueGray.400"
557
- borderTopRightRadius={0}
558
- borderBottomRightRadius={0}
559
- bg={styles.FORM_COMBO_INPUT_BG}
560
- m={0}
561
- p={2}
562
- >
563
- {inputIconElement}
564
- <Text
565
- ref={inputRef}
566
- flex={1}
567
- h="100%"
568
- numberOfLines={1}
569
- ellipsizeMode="head"
570
- fontSize={styles.FORM_COMBO_INPUT_FONTSIZE}
571
- color={_.isEmpty(textInputValue) ? 'trueGray.400' : '#000'}
572
- >{_.isEmpty(textInputValue) ? placeholder : textInputValue}</Text>
573
- </Pressable> :
574
- <Input
575
- {...testProps('input')}
576
- ref={inputRef}
577
- reference="ComboInput"
578
- value={textInputValue}
579
- autoSubmit={true}
580
- isDisabled={isDisabled}
581
- onChangeValue={onInputChangeText}
582
- onKeyPress={onInputKeyPress}
583
- onFocus={onInputFocus}
584
- onBlur={onInputBlur}
585
- flex={1}
586
- h="100%"
587
- m={0}
588
- InputLeftElement={inputIconElement}
589
- autoSubmitDelay={500}
590
- borderTopRightRadius={0}
591
- borderBottomRightRadius={0}
592
- fontSize={styles.FORM_COMBO_INPUT_FONTSIZE}
593
- bg={styles.FORM_COMBO_INPUT_BG}
594
- _focus={{
595
- bg: styles.FORM_COMBO_INPUT_FOCUS_BG,
596
- }}
597
- placeholder={placeholder}
598
- {..._input}
599
- />}
600
- <IconButton
601
- {...testProps('trigger')}
602
- ref={triggerRef}
603
- _icon={{
604
- as: CaretDown,
605
- color: 'primary.800',
606
- size: 'sm',
607
- }}
608
- isDisabled={isDisabled}
609
- onPress={onTriggerPress}
610
- onBlur={onTriggerBlur}
611
- h="100%"
612
- borderWidth={1}
613
- borderColor="#bbb"
614
- borderLeftWidth={0}
615
- borderLeftRadius={0}
616
- borderRightRadius="md"
617
- bg={styles.FORM_COMBO_TRIGGER_BG}
618
- _hover={{
619
- bg: styles.FORM_COMBO_TRIGGER_HOVER_BG,
620
- }}
621
- />
622
- </>;
570
+ input = disableDirectEntry ?
571
+ <Pressable
572
+ {...testProps('toggleMenuBtn')}
573
+ onPress={toggleMenu}
574
+ className={`
575
+ toggleMenuBtn
576
+ h-full
577
+ flex-1
578
+ flex-row
579
+ justify-center
580
+ items-center
581
+ m-0
582
+ p-1
583
+ border
584
+ border-grey-400
585
+ rounded-r-none
586
+ ${styles.FORM_COMBO_INPUT_BG}
587
+ `}
588
+ >
589
+ {inputIconElement}
590
+ <TextNative
591
+ ref={inputRef}
592
+ numberOfLines={1}
593
+ ellipsizeMode="head"
594
+ className={`
595
+ Text
596
+ h-full
597
+ flex-1
598
+ ${_.isEmpty(textInputValue) ? "text-grey-400" : "text-black"}
599
+ ${styles.FORM_COMBO_INPUT_FONTSIZE}
600
+ `}
601
+ >{_.isEmpty(textInputValue) ? placeholder : textInputValue}</TextNative>
602
+ </Pressable> :
603
+ <Input
604
+ {...testProps('input')}
605
+ ref={inputRef}
606
+ reference="ComboInput"
607
+ value={textInputValue}
608
+ autoSubmit={true}
609
+ isDisabled={isDisabled}
610
+ onChangeValue={onInputChangeText}
611
+ onKeyPress={onInputKeyPress}
612
+ onFocus={onInputFocus}
613
+ onBlur={onInputBlur}
614
+ InputLeftElement={inputIconElement}
615
+ autoSubmitDelay={500}
616
+ placeholder={placeholder}
617
+ className={`
618
+ ComboInput
619
+ grow
620
+ h-full
621
+ min-h-0
622
+ flex-1
623
+ m-0
624
+ rounded-tr-none
625
+ rounded-br-none
626
+ ${styles.FORM_COMBO_INPUT_FONTSIZE}
627
+ ${styles.FORM_COMBO_INPUT_BG}
628
+ ${styles.FORM_COMBO_INPUT_BG_FOCUS}
629
+ `}
630
+ {..._input}
631
+ />;
623
632
  }
624
-
625
- if (UiGlobals.mode === UI_MODE_REACT_NATIVE) {
633
+ if (UiGlobals.mode === UI_MODE_NATIVE) {
634
+ throw new Error('Migration to Gluestack not yet implemented on Native');
626
635
  // This input and trigger are for show
627
636
  // They just show the current getDisplayValue and open the menu
628
637
  const displayValue = getDisplayValue();
629
- inputAndTrigger = <>
630
- <Pressable
631
- {...testProps('showMenuBtn')}
632
- onPress={showMenu}
633
- flex={1}
634
- flexDirection="row"
635
- justifyContent="center"
636
- alignItems="center"
637
- borderWidth={1}
638
- borderColor="trueGray.400"
639
- borderTopRightRadius={0}
640
- borderBottomRightRadius={0}
641
- bg={styles.FORM_COMBO_INPUT_BG}
642
- h="100%"
643
- >
644
- {inputIconElement}
645
- <Text
646
- flex={1}
647
- h="100%"
648
- numberOfLines={1}
649
- ellipsizeMode="head"
650
- m={0}
651
- p={2}
652
- color={_.isEmpty(displayValue) ? 'trueGray.400' : '#000'}
653
- fontSize={styles.FORM_COMBO_INPUT_FONTSIZE}
654
- >{_.isEmpty(displayValue) ? placeholder : displayValue}</Text>
655
- </Pressable>
656
- <IconButton
657
- {...testProps('trigger')}
658
- ref={triggerRef}
659
- _icon={{
660
- as: CaretDown,
661
- color: 'primary.800',
662
- size: 'sm',
663
- }}
664
- isDisabled={isDisabled}
665
- onPress={onTriggerPress}
666
- h="100%"
667
- borderWidth={1}
668
- borderColor="#bbb"
669
- borderLeftWidth={0}
670
- borderLeftRadius={0}
671
- borderRightRadius="md"
672
- bg={styles.FORM_COMBO_TRIGGER_BG}
673
- _hover={{
674
- bg: styles.FORM_COMBO_TRIGGER_HOVER_BG,
675
- }}
676
- />
677
- </>;
638
+ input = <Pressable
639
+ {...testProps('showMenuBtn')}
640
+ onPress={showMenu}
641
+ className={`
642
+ h-full
643
+ flex-1
644
+ flex-row
645
+ justify-center
646
+ items-center
647
+ border
648
+ border-grey-400
649
+ rounded-r-none
650
+ ${styles.FORM_COMBO_INPUT_BG}
651
+ `}
652
+ >
653
+ {inputIconElement}
654
+ <TextNative
655
+ numberOfLines={1}
656
+ ellipsizeMode="head"
657
+ className={`
658
+ h-full
659
+ flex-1
660
+ m-0
661
+ p-1
662
+ ${_.isEmpty(displayValue) ? "text-grey-400" : "text-black"}
663
+ ${styles.FORM_COMBO_INPUT_FONTSIZE}
664
+ `}
665
+ >{_.isEmpty(displayValue) ? placeholder : displayValue}</TextNative>
666
+ </Pressable>;
678
667
  }
679
668
 
680
669
  if (isMenuShown) {
@@ -698,25 +687,26 @@ export function ComboComponent(props) {
698
687
  gridProps.data = filteredData;
699
688
  }
700
689
  const WhichGrid = isEditor ? WindowedGridEditor : Grid;
690
+ const gridStyle = {};
691
+ if (UiGlobals.mode === UI_MODE_WEB) {
692
+ gridStyle.height = styles.FORM_COMBO_MENU_HEIGHT;
693
+ }
701
694
  grid = <WhichGrid
702
695
  showHeaders={false}
703
696
  showHovers={true}
704
- shadow={1}
705
697
  getRowProps={() => {
706
698
  return {
707
- borderBottomWidth: 1,
708
- borderBottomColor: 'trueGray.300',
709
- py: 1,
710
- pl: 4,
711
- pr: 2,
712
- w: '100%',
699
+ className: `
700
+ w-full
701
+ pl-4
702
+ pr-2
703
+ py-1
704
+ border-b-1
705
+ border-grey-300
706
+ `,
713
707
  };
714
708
  }}
715
709
  autoAdjustPageSizeToHeight={false}
716
- {...gridProps}
717
- reference="grid"
718
- parent={self}
719
- h={UiGlobals.mode === UI_MODE_WEB ? styles.FORM_COMBO_MENU_HEIGHT + 'px' : null}
720
710
  newEntityDisplayValue={newEntityDisplayValue}
721
711
  newEntityDisplayProperty={newEntityDisplayProperty}
722
712
  disablePresetButtons={!isEditor}
@@ -819,87 +809,133 @@ export function ComboComponent(props) {
819
809
  onInputFocus();
820
810
  }
821
811
  }}
812
+ reference="grid"
813
+ parent={self}
814
+ className={`
815
+ h-full
816
+ `}
817
+ style={gridStyle}
818
+ {...gridProps}
822
819
  {..._editor}
823
820
  />;
824
821
  if (UiGlobals.mode === UI_MODE_WEB) {
822
+ if (!disableDirectEntry) {
823
+ inputClone = <Box
824
+ className="Combo-inputClone-Box"
825
+ style={{
826
+ height: inputHeight,
827
+ }}
828
+ >
829
+ <Input
830
+ {...testProps('input')}
831
+ ref={inputCloneRef}
832
+ reference="ComboInputClone"
833
+ value={textInputValue}
834
+ autoSubmit={true}
835
+ isDisabled={isDisabled}
836
+ onChangeValue={onInputChangeText}
837
+ onKeyPress={onInputKeyPress}
838
+ onFocus={onInputFocus}
839
+ onBlur={onInputBlur}
840
+ InputLeftElement={inputIconElement}
841
+ autoSubmitDelay={500}
842
+ placeholder={placeholder}
843
+ className={`
844
+ Combo-inputClone-Input
845
+ grow
846
+ h-full
847
+ flex-1
848
+ m-0
849
+ rounded-tr-none
850
+ rounded-br-none
851
+ ${styles.FORM_COMBO_INPUT_FONTSIZE}
852
+ ${styles.FORM_COMBO_INPUT_BG}
853
+ ${styles.FORM_COMBO_INPUT_BG_FOCUS}
854
+ `}
855
+ {..._input}
856
+ />
857
+ </Box>;
858
+ }
825
859
  dropdownMenu = <Popover
826
860
  isOpen={isMenuShown}
827
861
  onClose={() => {
828
862
  hideMenu();
829
863
  }}
830
864
  trigger={emptyFn}
831
- trapFocus={false}
832
- placement={'auto'}
833
- // _fade={{
834
- // entryDuration: 0, // Doesn't work, as Popover doesn't have animation controls like Modal does. See node_modules/native-base/src/components/composites/Popover/Popover.tsx line 99 (vs .../composites/Modal/Modal.tsx line 113 which has ..._fade) I added a feature request to NativeBase https://github.com/GeekyAnts/NativeBase/issues/5651
835
- // }}
836
- {...props}
865
+ className="dropdownMenu-Popover block"
866
+ initialFocusRef={inputCloneRef}
837
867
  >
838
- <Popover.Content
839
- position="absolute"
840
- top={top + 'px'}
841
- left={left + 'px'}
842
- w={width + 'px'}
843
- overflow="auto"
844
- bg="#fff"
868
+ <PopoverBackdrop className="PopoverBackdrop bg-[#000]" />
869
+ <Box
870
+ ref={menuRef}
871
+ className={`
872
+ dropdownMenu-Box
873
+ flex-1
874
+ overflow-auto
875
+ p-0
876
+ rounded-none
877
+ border
878
+ border-grey-400
879
+ shadow-md
880
+ max-w-full
881
+ `}
882
+ style={{
883
+ top,
884
+ left,
885
+ width,
886
+ height: styles.FORM_COMBO_MENU_HEIGHT + inputHeight,
887
+ minWidth: 100,
888
+ }}
845
889
  >
846
- <Popover.Body
847
- ref={menuRef}
848
- borderWidth={1}
849
- borderColor='trueGray.400'
850
- borderTopWidth={0}
851
- p={0}
852
- >
853
- {grid}
854
- </Popover.Body>
855
- </Popover.Content>
890
+ {inputClone}
891
+ {grid}
892
+ </Box>
856
893
  </Popover>;
857
894
  }
858
- if (UiGlobals.mode === UI_MODE_REACT_NATIVE) {
895
+ if (UiGlobals.mode === UI_MODE_NATIVE) {
859
896
  if (isEditor) {
860
897
  // in RN, an editor has no way to accept the selection of the grid, so we need to add a check button to do this
861
898
  checkButton = <IconButton
862
899
  {...testProps('checkBtn')}
900
+ icon={Check}
863
901
  _icon={{
864
- as: Check,
865
- color: 'trueGray.600',
866
902
  size: 'sm',
903
+ className: 'text-grey-600',
867
904
  }}
868
905
  onPress={onCheckButtonPress}
869
906
  isDisabled={!value}
870
- h="100%"
871
- borderWidth={1}
872
- borderColor="#bbb"
873
- borderRadius="md"
874
- bg={styles.FORM_COMBO_TRIGGER_BG}
875
- _hover={{
876
- bg: styles.FORM_COMBO_TRIGGER_HOVER_BG,
877
- }}
907
+ className={`
908
+ h-full
909
+ border
910
+ border-grey-400
911
+ rounded-md
912
+ ${styles.FORM_COMBO_TRIGGER_BG}
913
+ ${styles.FORM_COMBO_TRIGGER_BG_HOVER}
914
+ `}
878
915
  />;
879
916
  }
880
917
  const inputAndTriggerClone = // for RN, this is the actual input and trigger, as we need them to appear up above in the modal
881
- <Row h={10}>
918
+ <HStack className="h-[10px]">
882
919
  {xButton}
883
920
  {eyeButton}
884
921
  {disableDirectEntry ?
885
- <Text
922
+ <TextNative
886
923
  ref={inputRef}
887
- flex={1}
888
- h="100%"
889
924
  numberOfLines={1}
890
925
  ellipsizeMode="head"
891
- m={0}
892
- p={2}
893
- borderWidth={1}
894
- borderColor="trueGray.400"
895
- borderTopRightRadius={0}
896
- borderBottomRightRadius={0}
897
- fontSize={styles.FORM_COMBO_INPUT_FONTSIZE}
898
- bg={styles.FORM_COMBO_INPUT_BG}
899
- _focus={{
900
- bg: styles.FORM_COMBO_INPUT_FOCUS_BG,
901
- }}
902
- >{textInputValue}</Text> :
926
+ className={`
927
+ h-full
928
+ flex-1
929
+ m-0
930
+ p-1
931
+ border
932
+ border-grey-400
933
+ rounded-r-none
934
+ ${styles.FORM_COMBO_INPUT_BG}
935
+ ${styles.FORM_COMBO_INPUT_BG_FOCUS}
936
+ ${styles.FORM_COMBO_INPUT_FONTSIZE}
937
+ `}
938
+ >{textInputValue}</TextNative> :
903
939
  <Input
904
940
  {...testProps('input')}
905
941
  ref={inputRef}
@@ -911,87 +947,112 @@ export function ComboComponent(props) {
911
947
  onKeyPress={onInputKeyPress}
912
948
  onFocus={onInputFocus}
913
949
  onBlur={onInputBlur}
914
- flex={1}
915
- h="100%"
916
- m={0}
917
950
  InputLeftElement={inputIconElement}
918
951
  autoSubmitDelay={500}
919
- borderTopRightRadius={0}
920
- borderBottomRightRadius={0}
921
- fontSize={styles.FORM_COMBO_INPUT_FONTSIZE}
922
- bg={styles.FORM_COMBO_INPUT_BG}
923
- _focus={{
924
- bg: styles.FORM_COMBO_INPUT_FOCUS_BG,
925
- }}
926
952
  placeholder={placeholder}
953
+ className={`
954
+ h-full
955
+ flex-1
956
+ m-0
957
+ rounded-r-none
958
+ ${styles.FORM_COMBO_INPUT_FONTSIZE}
959
+ ${styles.FORM_COMBO_INPUT_BG}
960
+ ${styles.FORM_COMBO_INPUT_BG_FOCUS}
961
+ `}
927
962
  {..._input}
928
963
  />}
929
964
  <IconButton
930
965
  {...testProps('hideMenuBtn')}
966
+ icon={CaretDown}
931
967
  _icon={{
932
- as: CaretDown,
933
- color: 'primary.800',
934
968
  size: 'sm',
969
+ className: 'text-primary-800',
935
970
  }}
936
971
  isDisabled={isDisabled}
937
972
  onPress={() => hideMenu()}
938
- h="100%"
939
- borderWidth={1}
940
- borderColor="#bbb"
941
- borderLeftWidth={0}
942
- borderLeftRadius={0}
943
- borderRightRadius="md"
944
- bg={styles.FORM_COMBO_TRIGGER_BG}
945
- _hover={{
946
- bg: styles.FORM_COMBO_TRIGGER_HOVER_BG,
947
- }}
973
+ className={`
974
+ h-full
975
+ border
976
+ border-grey-400
977
+ rounded-l-none
978
+ rounded-r-md
979
+ ${styles.FORM_COMBO_TRIGGER_BG}
980
+ ${styles.FORM_COMBO_TRIGGER_BG_HOVER}
981
+ `}
948
982
  />
949
983
  {checkButton}
950
- </Row>;
984
+ </HStack>;
951
985
  dropdownMenu = <Modal
952
986
  isOpen={true}
953
987
  safeAreaTop={true}
954
988
  onClose={() => setIsMenuShown(false)}
955
- mt="auto"
956
- mb="auto"
957
- w="100%"
958
- h={400}
959
- p={5}
989
+ className={`
990
+ h-[400px]
991
+ w-full
992
+ my-auto
993
+ p-[5px]
994
+ `}
960
995
  >
961
- {inputAndTriggerClone}
962
- {grid}
996
+ <ModalBackdrop />
997
+ <ModalContent>
998
+ <ModalBody>
999
+ {inputAndTriggerClone}
1000
+ {grid}
1001
+ </ModalBody>
1002
+ </ModalContent>
963
1003
  </Modal>;
964
1004
  }
965
1005
  }
966
-
967
1006
  const refProps = {};
968
1007
  if (tooltipRef) {
969
1008
  refProps.ref = tooltipRef;
970
1009
  }
971
1010
 
1011
+ const className = `
1012
+ Combo-HStack
1013
+ flex-1
1014
+ justify-center
1015
+ items-center
1016
+ `;
1017
+ if (props.className) {
1018
+ props.className += ' ' + className;
1019
+ }
1020
+
972
1021
  if (isRendered && additionalButtons?.length && containerWidth < 500) {
973
1022
  // be responsive for small screen sizes and bump additionalButtons to the next line
974
1023
  assembledComponents =
975
- <Column testID={testID}>
976
- <Row {...refProps} justifyContent="center" alignItems="center" flex={1} h="100%">
1024
+ <VStack
1025
+ testID={testID}
1026
+ className="Combo-VStack"
1027
+ >
1028
+ <HStack
1029
+ {...refProps}
1030
+ className={className}
1031
+ >
977
1032
  {xButton}
978
1033
  {eyeButton}
979
- {inputAndTrigger}
1034
+ {input}
1035
+ {trigger}
980
1036
  {dropdownMenu}
981
- </Row>
982
- <Row mt={2}>
1037
+ </HStack>
1038
+ <HStack className="mt-1">
983
1039
  {additionalButtons}
984
- </Row>
985
- </Column>;
1040
+ </HStack>
1041
+ </VStack>;
986
1042
  } else {
987
1043
  assembledComponents =
988
- <Row testID={testID} {...refProps} justifyContent="center" alignItems="center" flex={1} h="100%" onLayout={onLayout}>
1044
+ <HStackNative
1045
+ {...refProps}
1046
+ onLayout={onLayout}
1047
+ className={className}
1048
+ >
989
1049
  {xButton}
990
1050
  {eyeButton}
991
- {inputAndTrigger}
1051
+ {input}
1052
+ {trigger}
992
1053
  {additionalButtons}
993
1054
  {dropdownMenu}
994
- </Row>;
1055
+ </HStackNative>;
995
1056
  }
996
1057
 
997
1058
  if (isViewerShown && Editor) {
@@ -1019,26 +1080,28 @@ export function ComboComponent(props) {
1019
1080
  onClose={onViewerClose}
1020
1081
  >
1021
1082
  <Editor
1022
- {...propsForViewer}
1023
1083
  editorType={EDITOR_TYPE__WINDOWED}
1024
1084
  isEditorViewOnly={true}
1025
- {...viewerProps}
1026
- px={0}
1027
- py={0}
1028
- w="100%"
1029
1085
  parent={self}
1030
1086
  reference="viewer"
1031
1087
  selection={viewerSelection}
1032
1088
  onEditorClose={onViewerClose}
1089
+ className={`
1090
+ w-full
1091
+ p-0
1092
+ `}
1093
+ {...propsForViewer}
1094
+ {...viewerProps}
1033
1095
  />
1034
1096
  </Modal>
1035
1097
  </>;
1036
1098
  }
1037
1099
 
1038
1100
  if (tooltip) {
1039
- assembledComponents = <Tooltip label={tooltip} placement={tooltipPlacement} h="100%">
1040
- {assembledComponents}
1041
- </Tooltip>;
1101
+ // TODO: implement withTooltip for Combo
1102
+ // assembledComponents = <Tooltip label={tooltip} placement={tooltipPlacement} className="h-full">
1103
+ // {assembledComponents}
1104
+ // </Tooltip>;
1042
1105
  }
1043
1106
 
1044
1107
  return assembledComponents;