@korsolutions/ui 0.0.30 → 0.0.32

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 (257) hide show
  1. package/babel.config.js +17 -11
  2. package/bob.config.js +1 -0
  3. package/dist/module/components/avatar/avatar.js +1 -1
  4. package/dist/module/components/avatar/avatar.js.map +1 -1
  5. package/dist/module/components/avatar/variants/default.js +1 -1
  6. package/dist/module/components/avatar/variants/default.js.map +1 -1
  7. package/dist/module/components/avatar/variants/index.js.map +1 -1
  8. package/dist/module/components/badge/badge.js +1 -1
  9. package/dist/module/components/badge/badge.js.map +1 -1
  10. package/dist/module/components/badge/variants/default.js +1 -1
  11. package/dist/module/components/badge/variants/default.js.map +1 -1
  12. package/dist/module/components/badge/variants/index.js.map +1 -1
  13. package/dist/module/components/badge/variants/secondary.js +1 -1
  14. package/dist/module/components/badge/variants/secondary.js.map +1 -1
  15. package/dist/module/components/button/button.js +1 -1
  16. package/dist/module/components/button/button.js.map +1 -1
  17. package/dist/module/components/button/variants/default.js +2 -2
  18. package/dist/module/components/button/variants/default.js.map +1 -1
  19. package/dist/module/components/button/variants/index.js.map +1 -1
  20. package/dist/module/components/button/variants/secondary.js +2 -2
  21. package/dist/module/components/button/variants/secondary.js.map +1 -1
  22. package/dist/module/components/calendar/calendar.js +1 -1
  23. package/dist/module/components/calendar/calendar.js.map +1 -1
  24. package/dist/module/components/calendar/index.js.map +1 -1
  25. package/dist/module/components/calendar/variants/default.js +1 -1
  26. package/dist/module/components/calendar/variants/default.js.map +1 -1
  27. package/dist/module/components/calendar/variants/index.js.map +1 -1
  28. package/dist/module/components/card/card.js +1 -1
  29. package/dist/module/components/card/card.js.map +1 -1
  30. package/dist/module/components/card/variants/default.js +1 -1
  31. package/dist/module/components/card/variants/default.js.map +1 -1
  32. package/dist/module/components/card/variants/index.js.map +1 -1
  33. package/dist/module/components/dropdown-menu/dropdown-menu.js +1 -1
  34. package/dist/module/components/dropdown-menu/dropdown-menu.js.map +1 -1
  35. package/dist/module/components/dropdown-menu/variants/default.js +1 -1
  36. package/dist/module/components/dropdown-menu/variants/default.js.map +1 -1
  37. package/dist/module/components/dropdown-menu/variants/index.js.map +1 -1
  38. package/dist/module/components/empty/empty.js +1 -1
  39. package/dist/module/components/empty/empty.js.map +1 -1
  40. package/dist/module/components/empty/variants/default.js +1 -1
  41. package/dist/module/components/empty/variants/default.js.map +1 -1
  42. package/dist/module/components/empty/variants/index.js.map +1 -1
  43. package/dist/module/components/field/field.js +1 -1
  44. package/dist/module/components/field/field.js.map +1 -1
  45. package/dist/module/components/field/variants/default.js +1 -1
  46. package/dist/module/components/field/variants/default.js.map +1 -1
  47. package/dist/module/components/field/variants/index.js.map +1 -1
  48. package/dist/module/components/index.js.map +1 -1
  49. package/dist/module/components/input/index.js.map +1 -1
  50. package/dist/module/components/input/input.js +1 -1
  51. package/dist/module/components/input/input.js.map +1 -1
  52. package/dist/module/components/input/numeric-input.js +1 -1
  53. package/dist/module/components/input/numeric-input.js.map +1 -1
  54. package/dist/module/components/input/variants/default.js +1 -1
  55. package/dist/module/components/input/variants/default.js.map +1 -1
  56. package/dist/module/components/input/variants/index.js.map +1 -1
  57. package/dist/module/components/link/link.js.map +1 -1
  58. package/dist/module/components/link/variants/default.js +1 -1
  59. package/dist/module/components/link/variants/default.js.map +1 -1
  60. package/dist/module/components/link/variants/index.js.map +1 -1
  61. package/dist/module/components/popover/popover.js +1 -1
  62. package/dist/module/components/popover/popover.js.map +1 -1
  63. package/dist/module/components/popover/variants/default.js +1 -1
  64. package/dist/module/components/popover/variants/default.js.map +1 -1
  65. package/dist/module/components/popover/variants/index.js.map +1 -1
  66. package/dist/module/components/popover/variants/unstyled.js +1 -1
  67. package/dist/module/components/popover/variants/unstyled.js.map +1 -1
  68. package/dist/module/components/select/select.js +1 -1
  69. package/dist/module/components/select/select.js.map +1 -1
  70. package/dist/module/components/select/variants/default.js +1 -1
  71. package/dist/module/components/select/variants/default.js.map +1 -1
  72. package/dist/module/components/select/variants/index.js.map +1 -1
  73. package/dist/module/components/textarea/textarea.js +1 -1
  74. package/dist/module/components/textarea/textarea.js.map +1 -1
  75. package/dist/module/components/textarea/variants/default.js +1 -1
  76. package/dist/module/components/textarea/variants/default.js.map +1 -1
  77. package/dist/module/components/textarea/variants/index.js.map +1 -1
  78. package/dist/module/components/toast/index.js.map +1 -1
  79. package/dist/module/components/toast/toast-manager.js +1 -1
  80. package/dist/module/components/toast/toast-manager.js.map +1 -1
  81. package/dist/module/components/toast/toast.js +1 -1
  82. package/dist/module/components/toast/toast.js.map +1 -1
  83. package/dist/module/components/toast/variants/danger.js +1 -1
  84. package/dist/module/components/toast/variants/danger.js.map +1 -1
  85. package/dist/module/components/toast/variants/default.js +1 -1
  86. package/dist/module/components/toast/variants/default.js.map +1 -1
  87. package/dist/module/components/toast/variants/index.js.map +1 -1
  88. package/dist/module/components/toast/variants/success.js +1 -1
  89. package/dist/module/components/toast/variants/success.js.map +1 -1
  90. package/dist/module/components/typography/typography.js.map +1 -1
  91. package/dist/module/components/typography/variants/body-lg.js +1 -1
  92. package/dist/module/components/typography/variants/body-lg.js.map +1 -1
  93. package/dist/module/components/typography/variants/body-md.js +1 -1
  94. package/dist/module/components/typography/variants/body-md.js.map +1 -1
  95. package/dist/module/components/typography/variants/body-sm.js +1 -1
  96. package/dist/module/components/typography/variants/body-sm.js.map +1 -1
  97. package/dist/module/components/typography/variants/heading-lg.js +1 -1
  98. package/dist/module/components/typography/variants/heading-lg.js.map +1 -1
  99. package/dist/module/components/typography/variants/heading-md.js +1 -1
  100. package/dist/module/components/typography/variants/heading-md.js.map +1 -1
  101. package/dist/module/components/typography/variants/heading-sm.js +1 -1
  102. package/dist/module/components/typography/variants/heading-sm.js.map +1 -1
  103. package/dist/module/components/typography/variants/index.js.map +1 -1
  104. package/dist/module/hooks/index.js.map +1 -1
  105. package/dist/module/index.js +1 -1
  106. package/dist/module/index.js.map +1 -1
  107. package/dist/module/primitives/avatar/avatar-fallback.js.map +1 -1
  108. package/dist/module/primitives/avatar/avatar-image.js.map +1 -1
  109. package/dist/module/primitives/avatar/avatar-root.js.map +1 -1
  110. package/dist/module/primitives/avatar/index.js.map +1 -1
  111. package/dist/module/primitives/badge/badge-label.js +1 -1
  112. package/dist/module/primitives/badge/badge-label.js.map +1 -1
  113. package/dist/module/primitives/badge/badge-root.js +1 -1
  114. package/dist/module/primitives/badge/badge-root.js.map +1 -1
  115. package/dist/module/primitives/badge/index.js.map +1 -1
  116. package/dist/module/primitives/button/button-label.js +1 -1
  117. package/dist/module/primitives/button/button-label.js.map +1 -1
  118. package/dist/module/primitives/button/button-root.js.map +1 -1
  119. package/dist/module/primitives/button/button-spinner.js +1 -1
  120. package/dist/module/primitives/button/button-spinner.js.map +1 -1
  121. package/dist/module/primitives/button/index.js.map +1 -1
  122. package/dist/module/primitives/calendar/calendar-day.js +1 -1
  123. package/dist/module/primitives/calendar/calendar-day.js.map +1 -1
  124. package/dist/module/primitives/calendar/calendar-header.js.map +1 -1
  125. package/dist/module/primitives/calendar/calendar-nav-button.js.map +1 -1
  126. package/dist/module/primitives/calendar/calendar-root.js.map +1 -1
  127. package/dist/module/primitives/calendar/calendar-title.js.map +1 -1
  128. package/dist/module/primitives/calendar/calendar-week-labels.js.map +1 -1
  129. package/dist/module/primitives/calendar/calendar-weeks.js +1 -1
  130. package/dist/module/primitives/calendar/calendar-weeks.js.map +1 -1
  131. package/dist/module/primitives/calendar/index.js.map +1 -1
  132. package/dist/module/primitives/card/card-body.js +1 -1
  133. package/dist/module/primitives/card/card-body.js.map +1 -1
  134. package/dist/module/primitives/card/card-footer.js +1 -1
  135. package/dist/module/primitives/card/card-footer.js.map +1 -1
  136. package/dist/module/primitives/card/card-header.js +1 -1
  137. package/dist/module/primitives/card/card-header.js.map +1 -1
  138. package/dist/module/primitives/card/card-root.js +1 -1
  139. package/dist/module/primitives/card/card-root.js.map +1 -1
  140. package/dist/module/primitives/card/card-title.js +1 -1
  141. package/dist/module/primitives/card/card-title.js.map +1 -1
  142. package/dist/module/primitives/card/index.js.map +1 -1
  143. package/dist/module/primitives/dropdown-menu/dropdown-menu-button.js.map +1 -1
  144. package/dist/module/primitives/dropdown-menu/dropdown-menu-content.js +1 -1
  145. package/dist/module/primitives/dropdown-menu/dropdown-menu-content.js.map +1 -1
  146. package/dist/module/primitives/dropdown-menu/dropdown-menu-divider.js.map +1 -1
  147. package/dist/module/primitives/dropdown-menu/dropdown-menu-overlay.js.map +1 -1
  148. package/dist/module/primitives/dropdown-menu/dropdown-menu-portal.js.map +1 -1
  149. package/dist/module/primitives/dropdown-menu/dropdown-menu-root.js +1 -1
  150. package/dist/module/primitives/dropdown-menu/dropdown-menu-root.js.map +1 -1
  151. package/dist/module/primitives/dropdown-menu/dropdown-menu-trigger.js +23 -9
  152. package/dist/module/primitives/dropdown-menu/dropdown-menu-trigger.js.map +1 -1
  153. package/dist/module/primitives/dropdown-menu/index.js.map +1 -1
  154. package/dist/module/primitives/empty/empty-description.js.map +1 -1
  155. package/dist/module/primitives/empty/empty-media.js.map +1 -1
  156. package/dist/module/primitives/empty/empty-root.js.map +1 -1
  157. package/dist/module/primitives/empty/empty-title.js.map +1 -1
  158. package/dist/module/primitives/empty/index.js.map +1 -1
  159. package/dist/module/primitives/field/field-description.js.map +1 -1
  160. package/dist/module/primitives/field/field-error.js.map +1 -1
  161. package/dist/module/primitives/field/field-label.js.map +1 -1
  162. package/dist/module/primitives/field/field-root.js.map +1 -1
  163. package/dist/module/primitives/field/index.js.map +1 -1
  164. package/dist/module/primitives/index.js.map +1 -1
  165. package/dist/module/primitives/input/index.js.map +1 -1
  166. package/dist/module/primitives/input/input.js.map +1 -1
  167. package/dist/module/primitives/popover/index.js.map +1 -1
  168. package/dist/module/primitives/popover/popover-close.js.map +1 -1
  169. package/dist/module/primitives/popover/popover-content.js +1 -1
  170. package/dist/module/primitives/popover/popover-content.js.map +1 -1
  171. package/dist/module/primitives/popover/popover-overlay.js.map +1 -1
  172. package/dist/module/primitives/popover/popover-portal.js.map +1 -1
  173. package/dist/module/primitives/popover/popover-root.js +1 -1
  174. package/dist/module/primitives/popover/popover-root.js.map +1 -1
  175. package/dist/module/primitives/popover/popover-trigger.js +23 -9
  176. package/dist/module/primitives/popover/popover-trigger.js.map +1 -1
  177. package/dist/module/primitives/portal/index.js +1 -1
  178. package/dist/module/primitives/portal/index.js.map +1 -1
  179. package/dist/module/primitives/portal/portal.js.map +1 -1
  180. package/dist/module/primitives/portal/portal.web.js +28 -0
  181. package/dist/module/primitives/portal/portal.web.js.map +1 -0
  182. package/dist/module/primitives/select/index.js.map +1 -1
  183. package/dist/module/primitives/select/select-content.js +1 -1
  184. package/dist/module/primitives/select/select-content.js.map +1 -1
  185. package/dist/module/primitives/select/select-option.js +1 -1
  186. package/dist/module/primitives/select/select-option.js.map +1 -1
  187. package/dist/module/primitives/select/select-overlay.js +1 -1
  188. package/dist/module/primitives/select/select-overlay.js.map +1 -1
  189. package/dist/module/primitives/select/select-portal.js.map +1 -1
  190. package/dist/module/primitives/select/select-root.js +1 -1
  191. package/dist/module/primitives/select/select-root.js.map +1 -1
  192. package/dist/module/primitives/select/select-trigger.js +2 -2
  193. package/dist/module/primitives/select/select-trigger.js.map +1 -1
  194. package/dist/module/primitives/select/select-value.js +1 -1
  195. package/dist/module/primitives/select/select-value.js.map +1 -1
  196. package/dist/module/primitives/textarea/index.js.map +1 -1
  197. package/dist/module/primitives/toast/index.js.map +1 -1
  198. package/dist/module/primitives/toast/toast-description.js.map +1 -1
  199. package/dist/module/primitives/toast/toast-root.js.map +1 -1
  200. package/dist/module/primitives/toast/toast-title.js.map +1 -1
  201. package/dist/module/themes/adapters/index.js.map +1 -1
  202. package/dist/module/themes/adapters/react-navigation.js.map +1 -1
  203. package/dist/module/themes/default/index.js.map +1 -1
  204. package/dist/module/themes/index.js.map +1 -1
  205. package/dist/module/themes/provider.js.map +1 -1
  206. package/dist/module/themes/themes.js.map +1 -1
  207. package/dist/module/utils/use-themed-styles.js +1 -1
  208. package/dist/module/utils/use-themed-styles.js.map +1 -1
  209. package/dist/typescript/babel.config.d.ts +9 -8
  210. package/dist/typescript/babel.config.d.ts.map +1 -1
  211. package/dist/typescript/bob.config.d.ts +1 -0
  212. package/dist/typescript/src/components/avatar/variants/default.d.ts +1 -1
  213. package/dist/typescript/src/components/badge/variants/default.d.ts +1 -1
  214. package/dist/typescript/src/components/badge/variants/secondary.d.ts +1 -1
  215. package/dist/typescript/src/components/button/button.d.ts +1 -1
  216. package/dist/typescript/src/components/button/variants/default.d.ts +1 -1
  217. package/dist/typescript/src/components/button/variants/secondary.d.ts +1 -1
  218. package/dist/typescript/src/components/calendar/calendar.d.ts +1 -1
  219. package/dist/typescript/src/components/calendar/variants/default.d.ts +1 -1
  220. package/dist/typescript/src/components/card/variants/default.d.ts +1 -1
  221. package/dist/typescript/src/components/dropdown-menu/variants/default.d.ts +1 -1
  222. package/dist/typescript/src/components/empty/variants/default.d.ts +1 -1
  223. package/dist/typescript/src/components/field/variants/default.d.ts +1 -1
  224. package/dist/typescript/src/components/input/input.d.ts +2 -3
  225. package/dist/typescript/src/components/input/input.d.ts.map +1 -1
  226. package/dist/typescript/src/components/input/numeric-input.d.ts +2 -2
  227. package/dist/typescript/src/components/input/variants/default.d.ts +1 -1
  228. package/dist/typescript/src/components/popover/popover.d.ts +1 -1
  229. package/dist/typescript/src/components/popover/variants/default.d.ts +1 -1
  230. package/dist/typescript/src/components/popover/variants/unstyled.d.ts +1 -1
  231. package/dist/typescript/src/components/select/select.d.ts +1 -1
  232. package/dist/typescript/src/components/select/variants/default.d.ts +1 -1
  233. package/dist/typescript/src/components/textarea/textarea.d.ts +2 -3
  234. package/dist/typescript/src/components/textarea/textarea.d.ts.map +1 -1
  235. package/dist/typescript/src/components/textarea/variants/default.d.ts +1 -1
  236. package/dist/typescript/src/components/toast/variants/danger.d.ts +1 -1
  237. package/dist/typescript/src/components/toast/variants/default.d.ts +1 -1
  238. package/dist/typescript/src/components/toast/variants/success.d.ts +1 -1
  239. package/dist/typescript/src/primitives/dropdown-menu/context.d.ts +1 -1
  240. package/dist/typescript/src/primitives/dropdown-menu/dropdown-menu-trigger.d.ts +1 -1
  241. package/dist/typescript/src/primitives/dropdown-menu/dropdown-menu-trigger.d.ts.map +1 -1
  242. package/dist/typescript/src/primitives/input/input.d.ts +1 -1
  243. package/dist/typescript/src/primitives/popover/context.d.ts +1 -1
  244. package/dist/typescript/src/primitives/popover/popover-content.d.ts.map +1 -1
  245. package/dist/typescript/src/primitives/popover/popover-trigger.d.ts +1 -1
  246. package/dist/typescript/src/primitives/popover/popover-trigger.d.ts.map +1 -1
  247. package/dist/typescript/src/primitives/portal/portal.web.d.ts +4 -0
  248. package/dist/typescript/src/primitives/portal/portal.web.d.ts.map +1 -0
  249. package/dist/typescript/src/utils/use-themed-styles.d.ts +1 -1
  250. package/package.json +4 -2
  251. package/scripts/build.sh +2 -0
  252. package/src/components/input/input.tsx +1 -1
  253. package/src/components/textarea/textarea.tsx +1 -1
  254. package/src/primitives/dropdown-menu/dropdown-menu-trigger.tsx +23 -10
  255. package/src/primitives/popover/popover-content.tsx +1 -1
  256. package/src/primitives/popover/popover-trigger.tsx +23 -10
  257. package/src/primitives/portal/portal.web.tsx +22 -0
@@ -1 +1 @@
1
- {"version":3,"file":"popover-trigger.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/popover/popover-trigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,+FA+BzB,CAAC"}
1
+ {"version":3,"file":"popover-trigger.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/popover/popover-trigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,+FA4CzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type PortalProps } from "./portal.constants";
2
+ export declare function PortalHost(): import("react").JSX.Element;
3
+ export declare function Portal({ name, hostName, children }: PortalProps): import("react").JSX.Element;
4
+ //# sourceMappingURL=portal.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.web.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/portal/portal.web.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE3E,wBAAgB,UAAU,gCAEzB;AAED,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,QAA8B,EAAE,QAAQ,EAAE,EAAE,WAAW,+BAarF"}
@@ -1,4 +1,4 @@
1
- import type { Colors, FontFamily, FontSize, LetterSpacing, Radius } from "@/themes/types";
1
+ import type { Colors, FontFamily, FontSize, LetterSpacing, Radius } from "../themes/types";
2
2
  interface CallbackProps {
3
3
  colors: Colors;
4
4
  radius: Radius;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@korsolutions/ui",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -38,7 +38,9 @@
38
38
  "devDependencies": {
39
39
  "@types/react": "^19.2.3",
40
40
  "@types/react-dom": "^19.2.3",
41
- "react-native-builder-bob": "^0.40.17"
41
+ "babel-plugin-module-resolver": "^5.0.2",
42
+ "react-native-builder-bob": "^0.40.17",
43
+ "tsc-alias": "^1.8.16"
42
44
  },
43
45
  "peerDependencies": {
44
46
  "react": "*",
@@ -0,0 +1,2 @@
1
+ bob build
2
+ tsc-alias -p tsconfig.json --outDir dist/typescript
@@ -2,7 +2,7 @@ import { InputPrimitive, type InputPrimitiveBaseProps } from "@/primitives";
2
2
  import React from "react";
3
3
  import { InputVariants } from "./variants";
4
4
 
5
- interface InputProps extends InputPrimitiveBaseProps {
5
+ export interface InputProps extends InputPrimitiveBaseProps {
6
6
  variant?: keyof typeof InputVariants;
7
7
  }
8
8
 
@@ -2,7 +2,7 @@ import { TextareaPrimitive, type TextareaPrimitiveBaseProps } from "@/primitives
2
2
  import React from "react";
3
3
  import { TextareaVariants } from "./variants";
4
4
 
5
- interface TextareaProps extends TextareaPrimitiveBaseProps {
5
+ export interface TextareaProps extends TextareaPrimitiveBaseProps {
6
6
  variant?: keyof typeof TextareaVariants;
7
7
  }
8
8
 
@@ -17,20 +17,33 @@ export const DropdownMenuTrigger = forwardRef<DropdownMenuTriggerRef, DropdownMe
17
17
  const triggerRef = useRef<ViewRef>(null);
18
18
 
19
19
  const onTriggerPress = async () => {
20
- triggerRef.current?.measureInWindow((pageX, pageY, width, height) => {
21
- dropdownMenu.setTriggerPosition({
22
- height,
23
- width,
24
- pageX,
25
- pageY,
20
+ if (!dropdownMenu.isOpen) {
21
+ triggerRef.current?.measureInWindow((pageX, pageY, width, height) => {
22
+ dropdownMenu.setTriggerPosition({
23
+ height,
24
+ width,
25
+ pageX,
26
+ pageY,
27
+ });
28
+ dropdownMenu.setIsOpen(true);
26
29
  });
27
- });
28
-
29
- dropdownMenu.setIsOpen((prev) => !prev);
30
+ } else {
31
+ dropdownMenu.setIsOpen(false);
32
+ }
30
33
  };
31
34
 
32
35
  useImperativeHandle(ref, () => ({
33
- open: () => dropdownMenu.setIsOpen(true),
36
+ open: () => {
37
+ triggerRef.current?.measureInWindow((pageX, pageY, width, height) => {
38
+ dropdownMenu.setTriggerPosition({
39
+ height,
40
+ width,
41
+ pageX,
42
+ pageY,
43
+ });
44
+ dropdownMenu.setIsOpen(true);
45
+ });
46
+ },
34
47
  close: () => dropdownMenu.setIsOpen(false),
35
48
  }));
36
49
 
@@ -1,7 +1,7 @@
1
+ import { useRelativePosition } from "@/hooks/use-relative-position";
1
2
  import React from "react";
2
3
  import { type StyleProp, View, type ViewStyle } from "react-native";
3
4
  import { usePopover } from "./context";
4
- import { useRelativePosition } from "@/hooks/use-relative-position";
5
5
 
6
6
  export interface PopoverContentProps {
7
7
  children?: React.ReactNode;
@@ -17,20 +17,33 @@ export const PopoverTrigger = forwardRef<PopoverTriggerRef, PopoverTriggerProps>
17
17
  const triggerRef = useRef<ViewRef>(null);
18
18
 
19
19
  const onTriggerPress = async () => {
20
- triggerRef.current?.measureInWindow((pageX, pageY, width, height) => {
21
- popover.setTriggerPosition({
22
- height,
23
- width,
24
- pageX,
25
- pageY,
20
+ if (!popover.isOpen) {
21
+ triggerRef.current?.measureInWindow((pageX, pageY, width, height) => {
22
+ popover.setTriggerPosition({
23
+ height,
24
+ width,
25
+ pageX,
26
+ pageY,
27
+ });
28
+ popover.setIsOpen(true);
26
29
  });
27
- });
28
-
29
- popover.setIsOpen((prev) => !prev);
30
+ } else {
31
+ popover.setIsOpen(false);
32
+ }
30
33
  };
31
34
 
32
35
  useImperativeHandle(ref, () => ({
33
- open: () => popover.setIsOpen(true),
36
+ open: () => {
37
+ triggerRef.current?.measureInWindow((pageX, pageY, width, height) => {
38
+ popover.setTriggerPosition({
39
+ height,
40
+ width,
41
+ pageX,
42
+ pageY,
43
+ });
44
+ popover.setIsOpen(true);
45
+ });
46
+ },
34
47
  close: () => popover.setIsOpen(false),
35
48
  }));
36
49
 
@@ -0,0 +1,22 @@
1
+ import { useState } from "react";
2
+ import { createPortal } from "react-dom";
3
+ import { DEFAULT_PORTAL_HOST, type PortalProps } from "./portal.constants";
4
+
5
+ export function PortalHost() {
6
+ return <></>;
7
+ }
8
+
9
+ export function Portal({ name, hostName = DEFAULT_PORTAL_HOST, children }: PortalProps) {
10
+ const [container] = useState(() => {
11
+ let container = document.getElementById(hostName);
12
+
13
+ if (!container) {
14
+ container = document.createElement("div");
15
+ container.id = hostName;
16
+ document.body.appendChild(container);
17
+ }
18
+ return container;
19
+ });
20
+
21
+ return <>{createPortal(children, container, name)}</>;
22
+ }