@multiplatform.one/forms 7.71.0 → 7.73.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/dist/cjs/Button/circleGlyph.cjs +28 -0
  2. package/dist/cjs/Button/circleGlyph.native.js +31 -0
  3. package/dist/cjs/Button/circleGlyph.native.js.map +1 -0
  4. package/dist/cjs/Button/index.cjs +19 -3
  5. package/dist/cjs/Button/index.native.js +19 -3
  6. package/dist/cjs/Button/index.native.js.map +1 -1
  7. package/dist/cjs/FloatingPanel/PanelHeader.cjs +49 -0
  8. package/dist/cjs/FloatingPanel/PanelHeader.native.js +53 -0
  9. package/dist/cjs/FloatingPanel/PanelHeader.native.js.map +1 -0
  10. package/dist/cjs/FloatingPanel/echoContext.cjs +67 -0
  11. package/dist/cjs/FloatingPanel/echoContext.native.js +71 -0
  12. package/dist/cjs/FloatingPanel/echoContext.native.js.map +1 -0
  13. package/dist/cjs/FloatingPanel/iconEcho.cjs +104 -0
  14. package/dist/cjs/FloatingPanel/iconEcho.native.js +114 -0
  15. package/dist/cjs/FloatingPanel/iconEcho.native.js.map +1 -0
  16. package/dist/cjs/FloatingPanel/index.cjs +371 -86
  17. package/dist/cjs/FloatingPanel/index.native.js +164 -20
  18. package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
  19. package/dist/cjs/FloatingPanel/paintedBox.cjs +80 -0
  20. package/dist/cjs/FloatingPanel/paintedBox.native.js +85 -0
  21. package/dist/cjs/FloatingPanel/paintedBox.native.js.map +1 -0
  22. package/dist/cjs/FloatingPanel/panelWidth.cjs +92 -0
  23. package/dist/cjs/FloatingPanel/panelWidth.native.js +99 -0
  24. package/dist/cjs/FloatingPanel/panelWidth.native.js.map +1 -0
  25. package/dist/cjs/FloatingPanel/pointAnchor.cjs +34 -5
  26. package/dist/cjs/FloatingPanel/pointAnchor.native.js +37 -8
  27. package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
  28. package/dist/cjs/FloatingPanel/useFloatingPanel.cjs +60 -5
  29. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js +72 -5
  30. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  31. package/dist/cjs/InputParts/index.cjs +18 -0
  32. package/dist/cjs/InputParts/index.native.js +19 -1
  33. package/dist/cjs/InputParts/index.native.js.map +1 -1
  34. package/dist/cjs/Wheel/NativeWheel.native.js +1 -1
  35. package/dist/cjs/Wheel/NativeWheel.native.js.map +1 -1
  36. package/dist/cjs/Wheel/index.cjs +2 -1
  37. package/dist/cjs/Wheel/index.native.js +4 -1
  38. package/dist/cjs/Wheel/index.native.js.map +1 -1
  39. package/dist/cjs/Wheel/wheelShared.cjs +6 -1
  40. package/dist/cjs/Wheel/wheelShared.native.js +7 -1
  41. package/dist/cjs/Wheel/wheelShared.native.js.map +1 -1
  42. package/dist/cjs/fields/Combobox/index.cjs +1 -0
  43. package/dist/cjs/fields/Combobox/index.native.js +1 -0
  44. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  45. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.cjs +6 -30
  46. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +11 -34
  47. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  48. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  49. package/dist/cjs/fields/DatePicker/catalog.cjs +2 -28
  50. package/dist/cjs/fields/DatePicker/catalog.native.js +2 -30
  51. package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
  52. package/dist/cjs/fields/DatePicker/index.native.js.map +1 -1
  53. package/dist/cjs/fields/DatePicker/parts.cjs +11 -20
  54. package/dist/cjs/fields/DatePicker/parts.native.js +13 -22
  55. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  56. package/dist/cjs/fields/Select/index.cjs +65 -44
  57. package/dist/cjs/fields/Select/index.native.js +69 -47
  58. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  59. package/dist/cjs/fields/Select/shouldInlineChoices.cjs +3 -1
  60. package/dist/cjs/fields/Select/shouldInlineChoices.native.js +3 -1
  61. package/dist/cjs/fields/Select/shouldInlineChoices.native.js.map +1 -1
  62. package/dist/cjs/fields/TimePicker/catalog.cjs +4 -25
  63. package/dist/cjs/fields/TimePicker/catalog.native.js +7 -29
  64. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
  65. package/dist/cjs/fields/TimePicker/index.native.js.map +1 -1
  66. package/dist/cjs/fields/TimePicker/parts.cjs +8 -21
  67. package/dist/cjs/fields/TimePicker/parts.native.js +8 -21
  68. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  69. package/dist/cjs/index.cjs +2 -0
  70. package/dist/cjs/index.native.js +2 -0
  71. package/dist/cjs/index.native.js.map +1 -1
  72. package/dist/cjs/shared/floatingList.cjs +13 -4
  73. package/dist/cjs/shared/floatingList.native.js +15 -4
  74. package/dist/cjs/shared/floatingList.native.js.map +1 -1
  75. package/dist/esm/Button/circleGlyph.mjs +3 -0
  76. package/dist/esm/Button/circleGlyph.mjs.map +1 -0
  77. package/dist/esm/Button/circleGlyph.native.js +3 -0
  78. package/dist/esm/Button/circleGlyph.native.js.map +1 -0
  79. package/dist/esm/Button/index.mjs +18 -2
  80. package/dist/esm/Button/index.mjs.map +1 -1
  81. package/dist/esm/Button/index.native.js +18 -2
  82. package/dist/esm/Button/index.native.js.map +1 -1
  83. package/dist/esm/FloatingPanel/PanelHeader.mjs +24 -0
  84. package/dist/esm/FloatingPanel/PanelHeader.mjs.map +1 -0
  85. package/dist/esm/FloatingPanel/PanelHeader.native.js +25 -0
  86. package/dist/esm/FloatingPanel/PanelHeader.native.js.map +1 -0
  87. package/dist/esm/FloatingPanel/echoContext.mjs +35 -0
  88. package/dist/esm/FloatingPanel/echoContext.mjs.map +1 -0
  89. package/dist/esm/FloatingPanel/echoContext.native.js +36 -0
  90. package/dist/esm/FloatingPanel/echoContext.native.js.map +1 -0
  91. package/dist/esm/FloatingPanel/iconEcho.mjs +77 -0
  92. package/dist/esm/FloatingPanel/iconEcho.mjs.map +1 -0
  93. package/dist/esm/FloatingPanel/iconEcho.native.js +84 -0
  94. package/dist/esm/FloatingPanel/iconEcho.native.js.map +1 -0
  95. package/dist/esm/FloatingPanel/index.mjs +373 -90
  96. package/dist/esm/FloatingPanel/index.mjs.map +1 -1
  97. package/dist/esm/FloatingPanel/index.native.js +165 -23
  98. package/dist/esm/FloatingPanel/index.native.js.map +1 -1
  99. package/dist/esm/FloatingPanel/paintedBox.mjs +52 -0
  100. package/dist/esm/FloatingPanel/paintedBox.mjs.map +1 -0
  101. package/dist/esm/FloatingPanel/paintedBox.native.js +54 -0
  102. package/dist/esm/FloatingPanel/paintedBox.native.js.map +1 -0
  103. package/dist/esm/FloatingPanel/panelWidth.mjs +63 -0
  104. package/dist/esm/FloatingPanel/panelWidth.mjs.map +1 -0
  105. package/dist/esm/FloatingPanel/panelWidth.native.js +67 -0
  106. package/dist/esm/FloatingPanel/panelWidth.native.js.map +1 -0
  107. package/dist/esm/FloatingPanel/pointAnchor.mjs +34 -5
  108. package/dist/esm/FloatingPanel/pointAnchor.mjs.map +1 -1
  109. package/dist/esm/FloatingPanel/pointAnchor.native.js +37 -8
  110. package/dist/esm/FloatingPanel/pointAnchor.native.js.map +1 -1
  111. package/dist/esm/FloatingPanel/useFloatingPanel.mjs +60 -6
  112. package/dist/esm/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  113. package/dist/esm/FloatingPanel/useFloatingPanel.native.js +72 -6
  114. package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  115. package/dist/esm/InputParts/index.mjs +19 -1
  116. package/dist/esm/InputParts/index.mjs.map +1 -1
  117. package/dist/esm/InputParts/index.native.js +20 -2
  118. package/dist/esm/InputParts/index.native.js.map +1 -1
  119. package/dist/esm/Wheel/NativeWheel.native.js +1 -1
  120. package/dist/esm/Wheel/NativeWheel.native.js.map +1 -1
  121. package/dist/esm/Wheel/index.mjs +2 -1
  122. package/dist/esm/Wheel/index.mjs.map +1 -1
  123. package/dist/esm/Wheel/index.native.js +4 -1
  124. package/dist/esm/Wheel/index.native.js.map +1 -1
  125. package/dist/esm/Wheel/wheelShared.mjs +6 -1
  126. package/dist/esm/Wheel/wheelShared.mjs.map +1 -1
  127. package/dist/esm/Wheel/wheelShared.native.js +7 -1
  128. package/dist/esm/Wheel/wheelShared.native.js.map +1 -1
  129. package/dist/esm/fields/Combobox/index.mjs +1 -0
  130. package/dist/esm/fields/Combobox/index.mjs.map +1 -1
  131. package/dist/esm/fields/Combobox/index.native.js +1 -0
  132. package/dist/esm/fields/Combobox/index.native.js.map +1 -1
  133. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs +6 -30
  134. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
  135. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js +11 -34
  136. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  137. package/dist/esm/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  138. package/dist/esm/fields/DatePicker/catalog.mjs +2 -28
  139. package/dist/esm/fields/DatePicker/catalog.mjs.map +1 -1
  140. package/dist/esm/fields/DatePicker/catalog.native.js +2 -30
  141. package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -1
  142. package/dist/esm/fields/DatePicker/index.native.js.map +1 -1
  143. package/dist/esm/fields/DatePicker/parts.mjs +11 -20
  144. package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
  145. package/dist/esm/fields/DatePicker/parts.native.js +13 -22
  146. package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
  147. package/dist/esm/fields/Select/index.mjs +66 -45
  148. package/dist/esm/fields/Select/index.mjs.map +1 -1
  149. package/dist/esm/fields/Select/index.native.js +70 -48
  150. package/dist/esm/fields/Select/index.native.js.map +1 -1
  151. package/dist/esm/fields/Select/shouldInlineChoices.mjs +3 -1
  152. package/dist/esm/fields/Select/shouldInlineChoices.mjs.map +1 -1
  153. package/dist/esm/fields/Select/shouldInlineChoices.native.js +3 -1
  154. package/dist/esm/fields/Select/shouldInlineChoices.native.js.map +1 -1
  155. package/dist/esm/fields/TimePicker/catalog.mjs +4 -25
  156. package/dist/esm/fields/TimePicker/catalog.mjs.map +1 -1
  157. package/dist/esm/fields/TimePicker/catalog.native.js +7 -29
  158. package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -1
  159. package/dist/esm/fields/TimePicker/index.native.js.map +1 -1
  160. package/dist/esm/fields/TimePicker/parts.mjs +8 -21
  161. package/dist/esm/fields/TimePicker/parts.mjs.map +1 -1
  162. package/dist/esm/fields/TimePicker/parts.native.js +8 -21
  163. package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
  164. package/dist/esm/index.mjs +2 -1
  165. package/dist/esm/index.mjs.map +1 -1
  166. package/dist/esm/index.native.js +2 -1
  167. package/dist/esm/index.native.js.map +1 -1
  168. package/dist/esm/shared/floatingList.mjs +14 -5
  169. package/dist/esm/shared/floatingList.mjs.map +1 -1
  170. package/dist/esm/shared/floatingList.native.js +16 -5
  171. package/dist/esm/shared/floatingList.native.js.map +1 -1
  172. package/dist/jsx/Button/circleGlyph.mjs +3 -0
  173. package/dist/jsx/Button/circleGlyph.mjs.map +1 -0
  174. package/dist/jsx/Button/circleGlyph.native.js +31 -0
  175. package/dist/jsx/Button/circleGlyph.native.js.map +1 -0
  176. package/dist/jsx/Button/index.mjs +18 -2
  177. package/dist/jsx/Button/index.mjs.map +1 -1
  178. package/dist/jsx/Button/index.native.js +19 -3
  179. package/dist/jsx/Button/index.native.js.map +1 -1
  180. package/dist/jsx/FloatingPanel/PanelHeader.mjs +24 -0
  181. package/dist/jsx/FloatingPanel/PanelHeader.mjs.map +1 -0
  182. package/dist/jsx/FloatingPanel/PanelHeader.native.js +53 -0
  183. package/dist/jsx/FloatingPanel/PanelHeader.native.js.map +1 -0
  184. package/dist/jsx/FloatingPanel/echoContext.mjs +35 -0
  185. package/dist/jsx/FloatingPanel/echoContext.mjs.map +1 -0
  186. package/dist/jsx/FloatingPanel/echoContext.native.js +71 -0
  187. package/dist/jsx/FloatingPanel/echoContext.native.js.map +1 -0
  188. package/dist/jsx/FloatingPanel/iconEcho.mjs +77 -0
  189. package/dist/jsx/FloatingPanel/iconEcho.mjs.map +1 -0
  190. package/dist/jsx/FloatingPanel/iconEcho.native.js +114 -0
  191. package/dist/jsx/FloatingPanel/iconEcho.native.js.map +1 -0
  192. package/dist/jsx/FloatingPanel/index.mjs +373 -90
  193. package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
  194. package/dist/jsx/FloatingPanel/index.native.js +164 -20
  195. package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
  196. package/dist/jsx/FloatingPanel/paintedBox.mjs +52 -0
  197. package/dist/jsx/FloatingPanel/paintedBox.mjs.map +1 -0
  198. package/dist/jsx/FloatingPanel/paintedBox.native.js +85 -0
  199. package/dist/jsx/FloatingPanel/paintedBox.native.js.map +1 -0
  200. package/dist/jsx/FloatingPanel/panelWidth.mjs +63 -0
  201. package/dist/jsx/FloatingPanel/panelWidth.mjs.map +1 -0
  202. package/dist/jsx/FloatingPanel/panelWidth.native.js +99 -0
  203. package/dist/jsx/FloatingPanel/panelWidth.native.js.map +1 -0
  204. package/dist/jsx/FloatingPanel/pointAnchor.mjs +34 -5
  205. package/dist/jsx/FloatingPanel/pointAnchor.mjs.map +1 -1
  206. package/dist/jsx/FloatingPanel/pointAnchor.native.js +37 -8
  207. package/dist/jsx/FloatingPanel/pointAnchor.native.js.map +1 -1
  208. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs +60 -6
  209. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  210. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js +72 -5
  211. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  212. package/dist/jsx/InputParts/index.mjs +19 -1
  213. package/dist/jsx/InputParts/index.mjs.map +1 -1
  214. package/dist/jsx/InputParts/index.native.js +19 -1
  215. package/dist/jsx/InputParts/index.native.js.map +1 -1
  216. package/dist/jsx/Wheel/NativeWheel.native.js +1 -1
  217. package/dist/jsx/Wheel/NativeWheel.native.js.map +1 -1
  218. package/dist/jsx/Wheel/index.mjs +2 -1
  219. package/dist/jsx/Wheel/index.mjs.map +1 -1
  220. package/dist/jsx/Wheel/index.native.js +4 -1
  221. package/dist/jsx/Wheel/index.native.js.map +1 -1
  222. package/dist/jsx/Wheel/wheelShared.mjs +6 -1
  223. package/dist/jsx/Wheel/wheelShared.mjs.map +1 -1
  224. package/dist/jsx/Wheel/wheelShared.native.js +7 -1
  225. package/dist/jsx/Wheel/wheelShared.native.js.map +1 -1
  226. package/dist/jsx/fields/Combobox/index.mjs +1 -0
  227. package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
  228. package/dist/jsx/fields/Combobox/index.native.js +1 -0
  229. package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
  230. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs +6 -30
  231. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
  232. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js +11 -34
  233. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  234. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  235. package/dist/jsx/fields/DatePicker/catalog.mjs +2 -28
  236. package/dist/jsx/fields/DatePicker/catalog.mjs.map +1 -1
  237. package/dist/jsx/fields/DatePicker/catalog.native.js +2 -30
  238. package/dist/jsx/fields/DatePicker/catalog.native.js.map +1 -1
  239. package/dist/jsx/fields/DatePicker/index.native.js.map +1 -1
  240. package/dist/jsx/fields/DatePicker/parts.mjs +11 -20
  241. package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
  242. package/dist/jsx/fields/DatePicker/parts.native.js +13 -22
  243. package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
  244. package/dist/jsx/fields/Select/index.mjs +66 -45
  245. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  246. package/dist/jsx/fields/Select/index.native.js +69 -47
  247. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  248. package/dist/jsx/fields/Select/shouldInlineChoices.mjs +3 -1
  249. package/dist/jsx/fields/Select/shouldInlineChoices.mjs.map +1 -1
  250. package/dist/jsx/fields/Select/shouldInlineChoices.native.js +3 -1
  251. package/dist/jsx/fields/Select/shouldInlineChoices.native.js.map +1 -1
  252. package/dist/jsx/fields/TimePicker/catalog.mjs +4 -25
  253. package/dist/jsx/fields/TimePicker/catalog.mjs.map +1 -1
  254. package/dist/jsx/fields/TimePicker/catalog.native.js +7 -29
  255. package/dist/jsx/fields/TimePicker/catalog.native.js.map +1 -1
  256. package/dist/jsx/fields/TimePicker/index.native.js.map +1 -1
  257. package/dist/jsx/fields/TimePicker/parts.mjs +8 -21
  258. package/dist/jsx/fields/TimePicker/parts.mjs.map +1 -1
  259. package/dist/jsx/fields/TimePicker/parts.native.js +8 -21
  260. package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
  261. package/dist/jsx/index.js +2 -1
  262. package/dist/jsx/index.js.map +1 -1
  263. package/dist/jsx/index.mjs +2 -1
  264. package/dist/jsx/index.mjs.map +1 -1
  265. package/dist/jsx/index.native.js +2 -0
  266. package/dist/jsx/index.native.js.map +1 -1
  267. package/dist/jsx/shared/floatingList.mjs +14 -5
  268. package/dist/jsx/shared/floatingList.mjs.map +1 -1
  269. package/dist/jsx/shared/floatingList.native.js +15 -4
  270. package/dist/jsx/shared/floatingList.native.js.map +1 -1
  271. package/package.json +8 -8
  272. package/src/Button/circleGlyph.ts +6 -0
  273. package/src/Button/index.tsx +25 -7
  274. package/src/FloatingPanel/FloatingPanel.echoStretch.spec.tsx +67 -0
  275. package/src/FloatingPanel/FloatingPanel.iconEcho.spec.tsx +297 -0
  276. package/src/FloatingPanel/FloatingPanel.menuFace.native.spec.tsx +280 -3
  277. package/src/FloatingPanel/FloatingPanel.seamlessCover.spec.tsx +237 -0
  278. package/src/FloatingPanel/PanelHeader.tsx +26 -0
  279. package/src/FloatingPanel/echoContext.ts +67 -0
  280. package/src/FloatingPanel/iconEcho.tsx +118 -0
  281. package/src/FloatingPanel/index.native.tsx +220 -12
  282. package/src/FloatingPanel/index.tsx +539 -109
  283. package/src/FloatingPanel/paintedBox.spec.ts +95 -0
  284. package/src/FloatingPanel/paintedBox.ts +75 -0
  285. package/src/FloatingPanel/panelWidth.spec.ts +158 -0
  286. package/src/FloatingPanel/panelWidth.ts +122 -0
  287. package/src/FloatingPanel/panelWidthContract.spec.ts +10 -10
  288. package/src/FloatingPanel/pointAnchor.spec.ts +111 -2
  289. package/src/FloatingPanel/pointAnchor.ts +56 -3
  290. package/src/FloatingPanel/useFloatingPanel.spec.tsx +124 -4
  291. package/src/FloatingPanel/useFloatingPanel.ts +112 -34
  292. package/src/InputParts/index.tsx +26 -0
  293. package/src/Wheel/NativeWheel.native.tsx +1 -1
  294. package/src/Wheel/Wheel.spec.tsx +9 -0
  295. package/src/Wheel/index.tsx +12 -3
  296. package/src/Wheel/wheelShared.ts +6 -2
  297. package/src/fields/Combobox/index.tsx +1 -0
  298. package/src/fields/DatePicker/DatePicker.stories.tsx +3 -3
  299. package/src/fields/DatePicker/DatetimePicker.catalog.tsx +17 -45
  300. package/src/fields/DatePicker/DatetimePicker.native.tsx +3 -0
  301. package/src/fields/DatePicker/catalog.tsx +8 -39
  302. package/src/fields/DatePicker/index.native.tsx +3 -0
  303. package/src/fields/DatePicker/parts.tsx +13 -23
  304. package/src/fields/DatePicker/seamlessCover.spec.tsx +180 -0
  305. package/src/fields/DatePicker/touchWeb.spec.tsx +109 -167
  306. package/src/fields/Select/Select.containingBlock.spec.tsx +191 -0
  307. package/src/fields/Select/Select.stories.tsx +43 -0
  308. package/src/fields/Select/index.tsx +109 -45
  309. package/src/fields/Select/shouldInlineChoices.spec.ts +13 -0
  310. package/src/fields/Select/shouldInlineChoices.ts +6 -0
  311. package/src/fields/TimePicker/catalog.tsx +12 -33
  312. package/src/fields/TimePicker/index.native.tsx +2 -0
  313. package/src/fields/TimePicker/parts.tsx +6 -20
  314. package/src/index.ts +3 -0
  315. package/src/shared/floatingList.tsx +21 -5
  316. package/types/Button/circleGlyph.d.ts +7 -0
  317. package/types/Button/circleGlyph.d.ts.map +1 -0
  318. package/types/Button/index.d.ts +2 -6
  319. package/types/Button/index.d.ts.map +1 -1
  320. package/types/FloatingPanel/PanelHeader.d.ts +9 -0
  321. package/types/FloatingPanel/PanelHeader.d.ts.map +1 -0
  322. package/types/FloatingPanel/echoContext.d.ts +38 -0
  323. package/types/FloatingPanel/echoContext.d.ts.map +1 -0
  324. package/types/FloatingPanel/iconEcho.d.ts +29 -0
  325. package/types/FloatingPanel/iconEcho.d.ts.map +1 -0
  326. package/types/FloatingPanel/index.d.ts +69 -0
  327. package/types/FloatingPanel/index.d.ts.map +1 -1
  328. package/types/FloatingPanel/index.native.d.ts +9 -1
  329. package/types/FloatingPanel/index.native.d.ts.map +1 -1
  330. package/types/FloatingPanel/paintedBox.d.ts +29 -0
  331. package/types/FloatingPanel/paintedBox.d.ts.map +1 -0
  332. package/types/FloatingPanel/panelWidth.d.ts +71 -0
  333. package/types/FloatingPanel/panelWidth.d.ts.map +1 -0
  334. package/types/FloatingPanel/pointAnchor.d.ts +17 -1
  335. package/types/FloatingPanel/pointAnchor.d.ts.map +1 -1
  336. package/types/FloatingPanel/useFloatingPanel.d.ts +33 -2
  337. package/types/FloatingPanel/useFloatingPanel.d.ts.map +1 -1
  338. package/types/InputParts/index.d.ts.map +1 -1
  339. package/types/Wheel/index.d.ts.map +1 -1
  340. package/types/Wheel/wheelShared.d.ts +2 -1
  341. package/types/Wheel/wheelShared.d.ts.map +1 -1
  342. package/types/fields/Combobox/index.d.ts.map +1 -1
  343. package/types/fields/DatePicker/DatetimePicker.catalog.d.ts +6 -0
  344. package/types/fields/DatePicker/DatetimePicker.catalog.d.ts.map +1 -1
  345. package/types/fields/DatePicker/DatetimePicker.native.d.ts +3 -0
  346. package/types/fields/DatePicker/DatetimePicker.native.d.ts.map +1 -1
  347. package/types/fields/DatePicker/catalog.d.ts +6 -0
  348. package/types/fields/DatePicker/catalog.d.ts.map +1 -1
  349. package/types/fields/DatePicker/index.native.d.ts +3 -0
  350. package/types/fields/DatePicker/index.native.d.ts.map +1 -1
  351. package/types/fields/DatePicker/parts.d.ts +5 -7
  352. package/types/fields/DatePicker/parts.d.ts.map +1 -1
  353. package/types/fields/Select/index.d.ts +8 -1
  354. package/types/fields/Select/index.d.ts.map +1 -1
  355. package/types/fields/Select/shouldInlineChoices.d.ts +5 -1
  356. package/types/fields/Select/shouldInlineChoices.d.ts.map +1 -1
  357. package/types/fields/TimePicker/catalog.d.ts +7 -1
  358. package/types/fields/TimePicker/catalog.d.ts.map +1 -1
  359. package/types/fields/TimePicker/index.native.d.ts +2 -0
  360. package/types/fields/TimePicker/index.native.d.ts.map +1 -1
  361. package/types/fields/TimePicker/parts.d.ts +1 -3
  362. package/types/fields/TimePicker/parts.d.ts.map +1 -1
  363. package/types/index.d.ts +3 -0
  364. package/types/index.d.ts.map +1 -1
  365. package/types/shared/floatingList.d.ts +5 -1
  366. package/types/shared/floatingList.d.ts.map +1 -1
  367. package/dist/cjs/shared/touchWebPicker.cjs +0 -136
  368. package/dist/cjs/shared/touchWebPicker.native.js +0 -154
  369. package/dist/cjs/shared/touchWebPicker.native.js.map +0 -1
  370. package/dist/esm/shared/touchWebPicker.mjs +0 -105
  371. package/dist/esm/shared/touchWebPicker.mjs.map +0 -1
  372. package/dist/esm/shared/touchWebPicker.native.js +0 -120
  373. package/dist/esm/shared/touchWebPicker.native.js.map +0 -1
  374. package/dist/jsx/shared/touchWebPicker.mjs +0 -105
  375. package/dist/jsx/shared/touchWebPicker.mjs.map +0 -1
  376. package/dist/jsx/shared/touchWebPicker.native.js +0 -154
  377. package/dist/jsx/shared/touchWebPicker.native.js.map +0 -1
  378. package/src/shared/touchWebPicker.spec.ts +0 -98
  379. package/src/shared/touchWebPicker.tsx +0 -158
  380. package/types/shared/touchWebPicker.d.ts +0 -40
  381. package/types/shared/touchWebPicker.d.ts.map +0 -1
@@ -373,7 +373,8 @@ function FloatingSelectCore({
373
373
  groupLabel,
374
374
  multiple,
375
375
  selectedOrder,
376
- dismissible
376
+ dismissible,
377
+ panelWidth
377
378
  }) {
378
379
  const overlayZIndex = (0, import_overlayStack.useOverlayZIndex)("dropdown");
379
380
  const {
@@ -447,6 +448,8 @@ function FloatingSelectCore({
447
448
  const growUpOnlyRef = (0, import_react.useRef)(false);
448
449
  const growDownOnlyRef = (0, import_react.useRef)(false);
449
450
  const lastScrollTopRef = (0, import_react.useRef)(0);
451
+ const dropUpRef = (0, import_react.useRef)(false);
452
+ const [dropUp, setDropUp] = (0, import_react.useState)(false);
450
453
  const repositionRef = (0, import_react.useRef)(null);
451
454
  const panel = (0, import_FloatingPanel.useFloatingPanel)({
452
455
  open,
@@ -464,7 +467,9 @@ function FloatingSelectCore({
464
467
  growDownOnlyRef.current = false;
465
468
  lastScrollTopRef.current = 0;
466
469
  programmaticScrollRef.current = 0;
467
- }
470
+ dropUpRef.current = false;
471
+ },
472
+ panelWidth
468
473
  });
469
474
  const {
470
475
  scrollRef: dragScrollRef,
@@ -531,32 +536,33 @@ function FloatingSelectCore({
531
536
  }
532
537
  const triggerBounds = trigger.getBoundingClientRect();
533
538
  const viewportHeight = window.innerHeight;
539
+ const originTop = (0, import_containingBlock.fixedContainingBlockOrigin)(dropdownElement).top;
534
540
  const computedStyle = getComputedStyle(dropdownElement);
535
541
  const borderTopWidth = parseFloat(computedStyle.borderTopWidth) || 0;
536
542
  const borderBottomWidth = parseFloat(computedStyle.borderBottomWidth) || 0;
537
543
  const totalBorderWidth = borderTopWidth + borderBottomWidth;
538
544
  const scrollContentHeight = dropdownElement.scrollHeight;
539
545
  const totalContentHeight = scrollContentHeight + totalBorderWidth;
540
- let idealTop;
541
- if (selectedIndex >= 0) {
542
- idealTop = triggerBounds.top - selectedItem.offsetTop;
543
- } else if (panel.placement.startsWith("top")) {
544
- idealTop = triggerBounds.bottom - totalContentHeight;
545
- } else {
546
- idealTop = triggerBounds.top - (selectedItem.offsetTop ?? 0);
546
+ const firstPlacement = pinnedTopRef.current === 0 && pinnedHeightRef.current === 0;
547
+ const roomBelow = viewportHeight - import_FloatingPanel.panelViewportPadding - triggerBounds.top;
548
+ const roomAbove = triggerBounds.bottom - import_FloatingPanel.panelViewportPadding;
549
+ if (firstPlacement) {
550
+ dropUpRef.current = totalContentHeight > roomBelow && roomAbove > roomBelow;
551
+ setDropUp(dropUpRef.current);
547
552
  }
548
- const idealBottom = idealTop + totalContentHeight;
553
+ const idealTop = dropUpRef.current ? triggerBounds.bottom - totalContentHeight : triggerBounds.top;
554
+ const idealBottom = dropUpRef.current ? triggerBounds.bottom : idealTop + totalContentHeight;
549
555
  const pinnedTop = Math.max(import_FloatingPanel.panelViewportPadding, idealTop);
550
556
  const pinnedBottom = Math.min(viewportHeight - import_FloatingPanel.panelViewportPadding, idealBottom);
551
557
  const pinnedHeight = Math.max(120, pinnedBottom - pinnedTop);
552
- if (pinnedTopRef.current === 0 && pinnedHeightRef.current === 0) {
558
+ if (firstPlacement) {
553
559
  pinnedTopRef.current = pinnedTop;
554
560
  pinnedHeightRef.current = pinnedHeight;
555
561
  }
556
562
  let top = pinnedTopRef.current;
557
563
  let height = pinnedHeightRef.current;
558
564
  if (grownRef.current) {
559
- const canGrowDown = Math.max(0, viewportHeight - import_FloatingPanel.panelViewportPadding - (top + height));
565
+ const canGrowDown = dropUpRef.current ? 0 : Math.max(0, viewportHeight - import_FloatingPanel.panelViewportPadding - (top + height));
560
566
  height += canGrowDown;
561
567
  const canGrowUp = Math.max(0, top - import_FloatingPanel.panelViewportPadding);
562
568
  top -= canGrowUp;
@@ -567,7 +573,7 @@ function FloatingSelectCore({
567
573
  top -= canGrowUp;
568
574
  height += canGrowUp;
569
575
  }
570
- if (growDownOnlyRef.current) {
576
+ if (growDownOnlyRef.current && !dropUpRef.current) {
571
577
  const canGrowDown = Math.max(0, viewportHeight - import_FloatingPanel.panelViewportPadding - (top + height));
572
578
  height += canGrowDown;
573
579
  }
@@ -583,40 +589,41 @@ function FloatingSelectCore({
583
589
  }
584
590
  }
585
591
  const cachedOverlayStyle = overlayStyle.current;
586
- if (!cachedOverlayStyle || cachedOverlayStyle.top !== top || cachedOverlayStyle.maxHeight !== height) {
587
- dropdownElement.style.top = `${top}px`;
592
+ if (!cachedOverlayStyle || cachedOverlayStyle.top !== top - originTop || cachedOverlayStyle.maxHeight !== height) {
593
+ dropdownElement.style.top = `${top - originTop}px`;
588
594
  dropdownElement.style.maxHeight = `${height}px`;
589
595
  dropdownElement.style.height = "";
590
596
  overlayStyle.current = {
591
- top,
597
+ top: top - originTop,
592
598
  maxHeight: height
593
599
  };
594
600
  void dropdownElement.offsetHeight;
595
601
  }
596
- if (!grownRef.current && !growUpOnlyRef.current && !growDownOnlyRef.current) {
597
- const maxScrollTop = dropdownElement.scrollHeight - dropdownElement.clientHeight;
598
- if (selectedIndex >= 0) {
599
- const neededScroll = top + selectedItem.offsetTop - triggerBounds.top;
600
- const clampedScrollTop = Math.max(0, Math.min(neededScroll, maxScrollTop));
601
- if (Math.abs(dropdownElement.scrollTop - clampedScrollTop) > 0.5) {
602
+ if (isInitial && selectedIndex >= 0 && !grownRef.current && !growUpOnlyRef.current && !growDownOnlyRef.current) {
603
+ const echoHeight = triggerBounds.height;
604
+ const rowBottom = selectedItem.offsetTop + selectedItem.offsetHeight;
605
+ if (dropUpRef.current) {
606
+ const maxScrollTop = dropdownElement.scrollHeight - dropdownElement.clientHeight;
607
+ const wanted = rowBottom - (dropdownElement.clientHeight - echoHeight);
608
+ if (wanted > 0) {
602
609
  programmaticScrollRef.current++;
603
- dropdownElement.scrollTop = clampedScrollTop;
604
- }
605
- if (Math.abs(neededScroll - clampedScrollTop) > 0.5) {
606
- const scrollDeficit = neededScroll - clampedScrollTop;
607
- top -= scrollDeficit;
608
- top = Math.max(import_FloatingPanel.panelViewportPadding, top);
609
- const remainingContentHeight = totalContentHeight - clampedScrollTop;
610
- const adjustedMaxHeight = Math.min(remainingContentHeight, viewportHeight - top - import_FloatingPanel.panelViewportPadding);
611
- dropdownElement.style.top = `${top}px`;
612
- dropdownElement.style.maxHeight = `${adjustedMaxHeight}px`;
613
- overlayStyle.current = {
614
- top,
615
- maxHeight: adjustedMaxHeight
616
- };
610
+ dropdownElement.scrollTop = Math.min(wanted, maxScrollTop);
617
611
  }
612
+ } else if (rowBottom > dropdownElement.clientHeight) {
613
+ const maxScrollTop = dropdownElement.scrollHeight - dropdownElement.clientHeight;
614
+ programmaticScrollRef.current++;
615
+ dropdownElement.scrollTop = Math.max(0, Math.min(selectedItem.offsetTop - echoHeight, maxScrollTop));
618
616
  }
619
617
  }
618
+ (0, import_FloatingPanel.placeEchoOverTrigger)(dropdownElement, {
619
+ triggerLeft: triggerBounds.left,
620
+ triggerRight: triggerBounds.right,
621
+ panelLeft: dropdownElement.getBoundingClientRect().left,
622
+ panelWidth: dropdownElement.offsetWidth,
623
+ rtl: getComputedStyle(trigger).direction === "rtl"
624
+ }, {
625
+ stretch: panelWidth !== void 0
626
+ });
620
627
  panel.initializingRef.current = false;
621
628
  void dropdownElement.offsetHeight;
622
629
  if (isInitial) dropdownElement.style.transition = panel.panelTransition;
@@ -633,7 +640,7 @@ function FloatingSelectCore({
633
640
  (0, import_react.useLayoutEffect)(() => {
634
641
  if (!open || !panel.mounted) return;
635
642
  repositionOverlay();
636
- }, [open, panel.mounted, selectedIndex, repositionOverlay, panel.y]);
643
+ }, [open, panel.mounted, selectedIndex, repositionOverlay, panel.x, panel.y]);
637
644
  const onMatch = (0, import_react.useCallback)(index => {
638
645
  if (open) {
639
646
  setActiveIndex(index);
@@ -914,7 +921,7 @@ function FloatingSelectCore({
914
921
  opacity: panel.visible ? 1 : 0,
915
922
  transform: panel.visible ? "scale(1)" : "scale(0.96)",
916
923
  transition: panel.panelTransition,
917
- transformOrigin: panel.placement.startsWith("top") ? "bottom left" : "top left",
924
+ transformOrigin: dropUp || panel.placement.startsWith("top") ? "bottom left" : "top left",
918
925
  ...dragProps.style
919
926
  },
920
927
  onPointerDown: dragProps.onPointerDown,
@@ -953,11 +960,19 @@ function FloatingSelectCore({
953
960
  borderRadius: panel.dropdownRadius,
954
961
  "data-testid": "select-dropdown",
955
962
  paddingVertical: 0,
956
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_floatingList.ScrollArrow, {
963
+ paddingBottom: panel.coverCornerInset || 0,
964
+ children: [!beside && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_FloatingPanel.TriggerEchoRow, {
965
+ sourceRef: panel.triggerRef,
966
+ source: selectedOption?.label ?? placeholder,
967
+ onPress: () => setOpen(false),
968
+ presentational: true,
969
+ edge: dropUp ? "bottom" : "top"
970
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_floatingList.ScrollArrow, {
957
971
  direction: "up",
958
972
  scrollRef: panel.refs.floating,
959
973
  visible: panel.arrowUp,
960
- arrowScrollDirRef: panel.arrowScrollDirRef
974
+ arrowScrollDirRef: panel.arrowScrollDirRef,
975
+ topOffset: dropUp || beside ? 0 : panel.triggerRef.current?.getBoundingClientRect().height ?? 0
961
976
  }), groupLabel && /* @__PURE__ */(0, import_jsx_runtime.jsx)(GroupHeader, {
962
977
  color: textColor,
963
978
  paddingHorizontal: knobProps.panelPadding.padding,
@@ -990,7 +1005,8 @@ function FloatingSelectCore({
990
1005
  direction: "down",
991
1006
  scrollRef: panel.refs.floating,
992
1007
  visible: panel.arrowDown,
993
- arrowScrollDirRef: panel.arrowScrollDirRef
1008
+ arrowScrollDirRef: panel.arrowScrollDirRef,
1009
+ bottomOffset: dropUp ? panel.triggerRef.current?.getBoundingClientRect().height ?? 0 : 0
994
1010
  })]
995
1011
  })
996
1012
  })
@@ -1012,7 +1028,8 @@ function NativeSelectCore({
1012
1028
  multiple,
1013
1029
  selectedOrder,
1014
1030
  dismissible,
1015
- native
1031
+ native,
1032
+ panelWidth
1016
1033
  }) {
1017
1034
  const insideOverlay = (0, import_overlayStack.useInsideOverlay)();
1018
1035
  const compactFace = (0, import_compactFace.pickerCompactFace)(options.length);
@@ -1273,6 +1290,7 @@ function NativeSelectCore({
1273
1290
  },
1274
1291
  sheet: true,
1275
1292
  compactFace,
1293
+ panelWidth,
1276
1294
  ...(asMenu && insideOverlay && (0, import_shouldInlineChoices.opensBesideTrigger)(options.length) ? {
1277
1295
  anchorMode: "attach",
1278
1296
  triggerEcho: false
@@ -1395,6 +1413,7 @@ function Select({
1395
1413
  dismissible,
1396
1414
  skeleton,
1397
1415
  native,
1416
+ panelWidth,
1398
1417
  "aria-label": ariaLabel,
1399
1418
  ...rest
1400
1419
  }) {
@@ -1431,7 +1450,8 @@ function Select({
1431
1450
  const pushed = !inline && !inTableCell && Boolean(rowLabel) && (0, import_shouldInlineChoices.shouldPushChoices)({
1432
1451
  inSheet: Boolean(sheetNavigation),
1433
1452
  multiple,
1434
- options
1453
+ options,
1454
+ panelWidth
1435
1455
  });
1436
1456
  if (!inline) {
1437
1457
  (0, import_devWarn.warnSelectTooFewOptions)({
@@ -1548,7 +1568,8 @@ function Select({
1548
1568
  multiple,
1549
1569
  selectedOrder,
1550
1570
  dismissible,
1551
- native
1571
+ native,
1572
+ panelWidth
1552
1573
  });
1553
1574
  };
1554
1575
  if (!resolvedForm || !name) {
@@ -479,10 +479,11 @@ function FloatingSelectCore(param) {
479
479
  groupLabel,
480
480
  multiple,
481
481
  selectedOrder,
482
- dismissible
482
+ dismissible,
483
+ panelWidth
483
484
  } = param;
484
- var _ref, _ref1, _ref2, _panel_x;
485
- var _overlayStyle_current;
485
+ var _ref, _ref1, _ref2, _panel_x, _ref3, _ref4, _ref5;
486
+ var _overlayStyle_current, _panel_triggerRef_current, _panel_triggerRef_current1;
486
487
  var overlayZIndex = (0, import_overlayStack.useOverlayZIndex)("dropdown");
487
488
  var {
488
489
  style: elevatedSurfaceStyle,
@@ -595,6 +596,8 @@ function FloatingSelectCore(param) {
595
596
  var growUpOnlyRef = (0, import_react.useRef)(false);
596
597
  var growDownOnlyRef = (0, import_react.useRef)(false);
597
598
  var lastScrollTopRef = (0, import_react.useRef)(0);
599
+ var dropUpRef = (0, import_react.useRef)(false);
600
+ var [dropUp, setDropUp] = (0, import_react.useState)(false);
598
601
  var repositionRef = (0, import_react.useRef)(null);
599
602
  var panel = (0, import_FloatingPanel.useFloatingPanel)({
600
603
  open,
@@ -612,7 +615,9 @@ function FloatingSelectCore(param) {
612
615
  growDownOnlyRef.current = false;
613
616
  lastScrollTopRef.current = 0;
614
617
  programmaticScrollRef.current = 0;
615
- }
618
+ dropUpRef.current = false;
619
+ },
620
+ panelWidth
616
621
  });
617
622
  var {
618
623
  scrollRef: dragScrollRef,
@@ -679,33 +684,33 @@ function FloatingSelectCore(param) {
679
684
  }
680
685
  var triggerBounds = trigger.getBoundingClientRect();
681
686
  var viewportHeight = window.innerHeight;
687
+ var originTop = (0, import_containingBlock.fixedContainingBlockOrigin)(dropdownElement).top;
682
688
  var computedStyle = getComputedStyle(dropdownElement);
683
689
  var borderTopWidth = parseFloat(computedStyle.borderTopWidth) || 0;
684
690
  var borderBottomWidth = parseFloat(computedStyle.borderBottomWidth) || 0;
685
691
  var totalBorderWidth = borderTopWidth + borderBottomWidth;
686
692
  var scrollContentHeight = dropdownElement.scrollHeight;
687
693
  var totalContentHeight = scrollContentHeight + totalBorderWidth;
688
- var idealTop;
689
- if (selectedIndex >= 0) {
690
- idealTop = triggerBounds.top - selectedItem.offsetTop;
691
- } else if (panel.placement.startsWith("top")) {
692
- idealTop = triggerBounds.bottom - totalContentHeight;
693
- } else {
694
- var _selectedItem_offsetTop;
695
- idealTop = triggerBounds.top - ((_selectedItem_offsetTop = selectedItem.offsetTop) !== null && _selectedItem_offsetTop !== void 0 ? _selectedItem_offsetTop : 0);
694
+ var firstPlacement = pinnedTopRef.current === 0 && pinnedHeightRef.current === 0;
695
+ var roomBelow = viewportHeight - import_FloatingPanel.panelViewportPadding - triggerBounds.top;
696
+ var roomAbove = triggerBounds.bottom - import_FloatingPanel.panelViewportPadding;
697
+ if (firstPlacement) {
698
+ dropUpRef.current = totalContentHeight > roomBelow && roomAbove > roomBelow;
699
+ setDropUp(dropUpRef.current);
696
700
  }
697
- var idealBottom = idealTop + totalContentHeight;
701
+ var idealTop = dropUpRef.current ? triggerBounds.bottom - totalContentHeight : triggerBounds.top;
702
+ var idealBottom = dropUpRef.current ? triggerBounds.bottom : idealTop + totalContentHeight;
698
703
  var pinnedTop = Math.max(import_FloatingPanel.panelViewportPadding, idealTop);
699
704
  var pinnedBottom = Math.min(viewportHeight - import_FloatingPanel.panelViewportPadding, idealBottom);
700
705
  var pinnedHeight = Math.max(120, pinnedBottom - pinnedTop);
701
- if (pinnedTopRef.current === 0 && pinnedHeightRef.current === 0) {
706
+ if (firstPlacement) {
702
707
  pinnedTopRef.current = pinnedTop;
703
708
  pinnedHeightRef.current = pinnedHeight;
704
709
  }
705
710
  var top1 = pinnedTopRef.current;
706
711
  var height = pinnedHeightRef.current;
707
712
  if (grownRef.current) {
708
- var canGrowDown = Math.max(0, viewportHeight - import_FloatingPanel.panelViewportPadding - (top1 + height));
713
+ var canGrowDown = dropUpRef.current ? 0 : Math.max(0, viewportHeight - import_FloatingPanel.panelViewportPadding - (top1 + height));
709
714
  height += canGrowDown;
710
715
  var canGrowUp = Math.max(0, top1 - import_FloatingPanel.panelViewportPadding);
711
716
  top1 -= canGrowUp;
@@ -716,7 +721,7 @@ function FloatingSelectCore(param) {
716
721
  top1 -= canGrowUp1;
717
722
  height += canGrowUp1;
718
723
  }
719
- if (growDownOnlyRef.current) {
724
+ if (growDownOnlyRef.current && !dropUpRef.current) {
720
725
  var canGrowDown1 = Math.max(0, viewportHeight - import_FloatingPanel.panelViewportPadding - (top1 + height));
721
726
  height += canGrowDown1;
722
727
  }
@@ -732,40 +737,41 @@ function FloatingSelectCore(param) {
732
737
  }
733
738
  }
734
739
  var cachedOverlayStyle = overlayStyle.current;
735
- if (!cachedOverlayStyle || cachedOverlayStyle.top !== top1 || cachedOverlayStyle.maxHeight !== height) {
736
- dropdownElement.style.top = `${top1}px`;
740
+ if (!cachedOverlayStyle || cachedOverlayStyle.top !== top1 - originTop || cachedOverlayStyle.maxHeight !== height) {
741
+ dropdownElement.style.top = `${top1 - originTop}px`;
737
742
  dropdownElement.style.maxHeight = `${height}px`;
738
743
  dropdownElement.style.height = "";
739
744
  overlayStyle.current = {
740
- top: top1,
745
+ top: top1 - originTop,
741
746
  maxHeight: height
742
747
  };
743
748
  void dropdownElement.offsetHeight;
744
749
  }
745
- if (!grownRef.current && !growUpOnlyRef.current && !growDownOnlyRef.current) {
746
- var maxScrollTop = dropdownElement.scrollHeight - dropdownElement.clientHeight;
747
- if (selectedIndex >= 0) {
748
- var neededScroll = top1 + selectedItem.offsetTop - triggerBounds.top;
749
- var clampedScrollTop = Math.max(0, Math.min(neededScroll, maxScrollTop));
750
- if (Math.abs(dropdownElement.scrollTop - clampedScrollTop) > 0.5) {
750
+ if (isInitial1 && selectedIndex >= 0 && !grownRef.current && !growUpOnlyRef.current && !growDownOnlyRef.current) {
751
+ var echoHeight = triggerBounds.height;
752
+ var rowBottom = selectedItem.offsetTop + selectedItem.offsetHeight;
753
+ if (dropUpRef.current) {
754
+ var maxScrollTop = dropdownElement.scrollHeight - dropdownElement.clientHeight;
755
+ var wanted = rowBottom - (dropdownElement.clientHeight - echoHeight);
756
+ if (wanted > 0) {
751
757
  programmaticScrollRef.current++;
752
- dropdownElement.scrollTop = clampedScrollTop;
753
- }
754
- if (Math.abs(neededScroll - clampedScrollTop) > 0.5) {
755
- var scrollDeficit = neededScroll - clampedScrollTop;
756
- top1 -= scrollDeficit;
757
- top1 = Math.max(import_FloatingPanel.panelViewportPadding, top1);
758
- var remainingContentHeight = totalContentHeight - clampedScrollTop;
759
- var adjustedMaxHeight = Math.min(remainingContentHeight, viewportHeight - top1 - import_FloatingPanel.panelViewportPadding);
760
- dropdownElement.style.top = `${top1}px`;
761
- dropdownElement.style.maxHeight = `${adjustedMaxHeight}px`;
762
- overlayStyle.current = {
763
- top: top1,
764
- maxHeight: adjustedMaxHeight
765
- };
758
+ dropdownElement.scrollTop = Math.min(wanted, maxScrollTop);
766
759
  }
760
+ } else if (rowBottom > dropdownElement.clientHeight) {
761
+ var maxScrollTop1 = dropdownElement.scrollHeight - dropdownElement.clientHeight;
762
+ programmaticScrollRef.current++;
763
+ dropdownElement.scrollTop = Math.max(0, Math.min(selectedItem.offsetTop - echoHeight, maxScrollTop1));
767
764
  }
768
765
  }
766
+ (0, import_FloatingPanel.placeEchoOverTrigger)(dropdownElement, {
767
+ triggerLeft: triggerBounds.left,
768
+ triggerRight: triggerBounds.right,
769
+ panelLeft: dropdownElement.getBoundingClientRect().left,
770
+ panelWidth: dropdownElement.offsetWidth,
771
+ rtl: getComputedStyle(trigger).direction === "rtl"
772
+ }, {
773
+ stretch: panelWidth !== void 0
774
+ });
769
775
  panel.initializingRef.current = false;
770
776
  void dropdownElement.offsetHeight;
771
777
  if (isInitial1) dropdownElement.style.transition = panel.panelTransition;
@@ -782,7 +788,7 @@ function FloatingSelectCore(param) {
782
788
  (0, import_react.useLayoutEffect)(function () {
783
789
  if (!open || !panel.mounted) return;
784
790
  repositionOverlay();
785
- }, [open, panel.mounted, selectedIndex, repositionOverlay, panel.y]);
791
+ }, [open, panel.mounted, selectedIndex, repositionOverlay, panel.x, panel.y]);
786
792
  var onMatch = (0, import_react.useCallback)(function (index) {
787
793
  if (open) {
788
794
  setActiveIndex(index);
@@ -1103,7 +1109,7 @@ function FloatingSelectCore(param) {
1103
1109
  opacity: panel.visible ? 1 : 0,
1104
1110
  transform: panel.visible ? "scale(1)" : "scale(0.96)",
1105
1111
  transition: panel.panelTransition,
1106
- transformOrigin: panel.placement.startsWith("top") ? "bottom left" : "top left",
1112
+ transformOrigin: dropUp || panel.placement.startsWith("top") ? "bottom left" : "top left",
1107
1113
  ...dragProps.style
1108
1114
  },
1109
1115
  onPointerDown: dragProps.onPointerDown,
@@ -1146,11 +1152,21 @@ function FloatingSelectCore(param) {
1146
1152
  borderRadius: panel.dropdownRadius,
1147
1153
  "data-testid": "select-dropdown",
1148
1154
  paddingVertical: 0,
1149
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_floatingList.ScrollArrow, {
1155
+ paddingBottom: panel.coverCornerInset || 0,
1156
+ children: [!beside && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_FloatingPanel.TriggerEchoRow, {
1157
+ sourceRef: panel.triggerRef,
1158
+ source: (_ref3 = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _ref3 !== void 0 ? _ref3 : placeholder,
1159
+ onPress: function onPress() {
1160
+ return setOpen(false);
1161
+ },
1162
+ presentational: true,
1163
+ edge: dropUp ? "bottom" : "top"
1164
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_floatingList.ScrollArrow, {
1150
1165
  direction: "up",
1151
1166
  scrollRef: panel.refs.floating,
1152
1167
  visible: panel.arrowUp,
1153
- arrowScrollDirRef: panel.arrowScrollDirRef
1168
+ arrowScrollDirRef: panel.arrowScrollDirRef,
1169
+ topOffset: dropUp || beside ? 0 : (_ref4 = (_panel_triggerRef_current = panel.triggerRef.current) === null || _panel_triggerRef_current === void 0 ? void 0 : _panel_triggerRef_current.getBoundingClientRect().height) !== null && _ref4 !== void 0 ? _ref4 : 0
1154
1170
  }), groupLabel && /* @__PURE__ */(0, import_jsx_runtime.jsx)(GroupHeader, {
1155
1171
  color: textColor,
1156
1172
  paddingHorizontal: knobProps.panelPadding.padding,
@@ -1187,7 +1203,8 @@ function FloatingSelectCore(param) {
1187
1203
  direction: "down",
1188
1204
  scrollRef: panel.refs.floating,
1189
1205
  visible: panel.arrowDown,
1190
- arrowScrollDirRef: panel.arrowScrollDirRef
1206
+ arrowScrollDirRef: panel.arrowScrollDirRef,
1207
+ bottomOffset: dropUp ? (_ref5 = (_panel_triggerRef_current1 = panel.triggerRef.current) === null || _panel_triggerRef_current1 === void 0 ? void 0 : _panel_triggerRef_current1.getBoundingClientRect().height) !== null && _ref5 !== void 0 ? _ref5 : 0 : 0
1191
1208
  })]
1192
1209
  })
1193
1210
  })
@@ -1210,7 +1227,8 @@ function NativeSelectCore(param) {
1210
1227
  multiple,
1211
1228
  selectedOrder,
1212
1229
  dismissible,
1213
- native
1230
+ native,
1231
+ panelWidth
1214
1232
  } = param;
1215
1233
  var _ref, _ref1, _ref2;
1216
1234
  var insideOverlay = (0, import_overlayStack.useInsideOverlay)();
@@ -1533,6 +1551,7 @@ function NativeSelectCore(param) {
1533
1551
  // A short list opens as a menu over its trigger; a long one keeps its
1534
1552
  // sheet at page level and opens as a menu inside another overlay (FZ-7830).
1535
1553
  compactFace,
1554
+ panelWidth,
1536
1555
  ...(asMenu && insideOverlay && (0, import_shouldInlineChoices.opensBesideTrigger)(options.length) ? {
1537
1556
  anchorMode: "attach",
1538
1557
  triggerEcho: false
@@ -1671,6 +1690,7 @@ function Select(param) {
1671
1690
  dismissible,
1672
1691
  skeleton,
1673
1692
  native,
1693
+ panelWidth,
1674
1694
  "aria-label": ariaLabel,
1675
1695
  ...rest
1676
1696
  } = param;
@@ -1708,7 +1728,8 @@ function Select(param) {
1708
1728
  var pushed = !inline && !inTableCell && Boolean(rowLabel) && (0, import_shouldInlineChoices.shouldPushChoices)({
1709
1729
  inSheet: Boolean(sheetNavigation),
1710
1730
  multiple,
1711
- options
1731
+ options,
1732
+ panelWidth
1712
1733
  });
1713
1734
  if (!inline) {
1714
1735
  var _ref1;
@@ -1836,7 +1857,8 @@ function Select(param) {
1836
1857
  multiple,
1837
1858
  selectedOrder,
1838
1859
  dismissible,
1839
- native
1860
+ native,
1861
+ panelWidth
1840
1862
  });
1841
1863
  };
1842
1864
  if (!resolvedForm || !name) {