@multiplatform.one/forms 7.79.0 → 7.81.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 (604) hide show
  1. package/dist/cjs/AdaptivePopup/index.cjs +1 -1
  2. package/dist/cjs/AdaptivePopup/index.native.js +3 -3
  3. package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
  4. package/dist/cjs/Button/IconButtonGroup.native.js.map +1 -1
  5. package/dist/cjs/Button/circleGlyph.native.js.map +1 -1
  6. package/dist/cjs/Button/glass.cjs +1 -2
  7. package/dist/cjs/Button/iconButtonGroupContext.native.js.map +1 -1
  8. package/dist/cjs/Button/index.cjs +12 -5
  9. package/dist/cjs/Button/index.native.js +16 -8
  10. package/dist/cjs/Button/index.native.js.map +1 -1
  11. package/dist/cjs/Button/webGlass.native.js.map +1 -1
  12. package/dist/cjs/Chip/index.native.js.map +1 -1
  13. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
  14. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  15. package/dist/cjs/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  16. package/dist/cjs/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  17. package/dist/cjs/ContextualSaveBar/index.native.js +3 -3
  18. package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
  19. package/dist/cjs/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  20. package/dist/cjs/ControlGroup/index.native.js +1 -1
  21. package/dist/cjs/ControlGroup/index.native.js.map +1 -1
  22. package/dist/cjs/DescriptionList/index.native.js +2 -2
  23. package/dist/cjs/DescriptionList/index.native.js.map +1 -1
  24. package/dist/cjs/ErrorSummary.native.js.map +1 -1
  25. package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -1
  26. package/dist/cjs/FieldDisplay/formatters.native.js.map +1 -1
  27. package/dist/cjs/FieldDisplay/index.native.js +1 -1
  28. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  29. package/dist/cjs/FieldGroup.native.js.map +1 -1
  30. package/dist/cjs/FloatingPanel/PanelHeader.cjs +3 -8
  31. package/dist/cjs/FloatingPanel/PanelHeader.native.js +3 -8
  32. package/dist/cjs/FloatingPanel/PanelHeader.native.js.map +1 -1
  33. package/dist/cjs/FloatingPanel/RegularPanel.native.js.map +1 -1
  34. package/dist/cjs/FloatingPanel/compactFace.native.js.map +1 -1
  35. package/dist/cjs/FloatingPanel/containingBlock.native.js.map +1 -1
  36. package/dist/cjs/FloatingPanel/coverRect.cjs +0 -8
  37. package/dist/cjs/FloatingPanel/coverRect.native.js +0 -8
  38. package/dist/cjs/FloatingPanel/coverRect.native.js.map +1 -1
  39. package/dist/cjs/FloatingPanel/echoContext.cjs +5 -27
  40. package/dist/cjs/FloatingPanel/echoContext.native.js +5 -28
  41. package/dist/cjs/FloatingPanel/echoContext.native.js.map +1 -1
  42. package/dist/cjs/FloatingPanel/index.cjs +49 -131
  43. package/dist/cjs/FloatingPanel/index.native.js +26 -91
  44. package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
  45. package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -1
  46. package/dist/cjs/FloatingPanel/paintedBox.native.js.map +1 -1
  47. package/dist/cjs/FloatingPanel/panelWidth.native.js.map +1 -1
  48. package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
  49. package/dist/cjs/FloatingPanel/regularPlacement.native.js.map +1 -1
  50. package/dist/cjs/FloatingPanel/trailingAction.native.js +1 -1
  51. package/dist/cjs/FloatingPanel/trailingAction.native.js.map +1 -1
  52. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  53. package/dist/cjs/Form/index.native.js +1 -1
  54. package/dist/cjs/Form/index.native.js.map +1 -1
  55. package/dist/cjs/Form/submissionController.native.js.map +1 -1
  56. package/dist/cjs/Form/validateOn.native.js.map +1 -1
  57. package/dist/cjs/FormGrid.native.js.map +1 -1
  58. package/dist/cjs/FormSection.native.js.map +1 -1
  59. package/dist/cjs/InputParts/PasswordReveal.native.js.map +1 -1
  60. package/dist/cjs/InputParts/index.native.js.map +1 -1
  61. package/dist/cjs/InputParts/keyboardAppearance.native.js.map +1 -1
  62. package/dist/cjs/Label/index.native.js.map +1 -1
  63. package/dist/cjs/MediaPicker/base64.native.js.map +1 -1
  64. package/dist/cjs/MediaPicker/payload.native.js.map +1 -1
  65. package/dist/cjs/MediaPicker/types.native.js.map +1 -1
  66. package/dist/cjs/MediaPicker/useMediaPicker.native.js.map +1 -1
  67. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  68. package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -1
  69. package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -1
  70. package/dist/cjs/Table/index.native.js.map +1 -1
  71. package/dist/cjs/Wheel/haptic.native.js.map +1 -1
  72. package/dist/cjs/Wheel/index.native.js.map +1 -1
  73. package/dist/cjs/Wheel/wheelShared.native.js.map +1 -1
  74. package/dist/cjs/actionLabel.native.js.map +1 -1
  75. package/dist/cjs/fieldDefaults.native.js.map +1 -1
  76. package/dist/cjs/fieldLayout.native.js +1 -1
  77. package/dist/cjs/fieldLayout.native.js.map +1 -1
  78. package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
  79. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +1 -1
  80. package/dist/cjs/fields/Barcode/code128.native.js.map +1 -1
  81. package/dist/cjs/fields/Barcode/index.native.js +2 -2
  82. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  83. package/dist/cjs/fields/Barcode/qr.native.js.map +1 -1
  84. package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
  85. package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -1
  86. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  87. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  88. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  89. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  90. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +1 -1
  91. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  92. package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  93. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
  94. package/dist/cjs/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  95. package/dist/cjs/fields/ColorPicker/index.native.js +2 -2
  96. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  97. package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
  98. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  99. package/dist/cjs/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  100. package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
  101. package/dist/cjs/fields/Combobox/index.cjs +3 -10
  102. package/dist/cjs/fields/Combobox/index.native.js +8 -15
  103. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  104. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
  105. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
  106. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  107. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +3 -3
  108. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  109. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +2 -2
  110. package/dist/cjs/fields/DatePicker/MonthPicker.native.js +2 -2
  111. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
  112. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
  113. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  114. package/dist/cjs/fields/DatePicker/catalog.native.js +2 -2
  115. package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
  116. package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  117. package/dist/cjs/fields/DatePicker/index.native.js +2 -2
  118. package/dist/cjs/fields/DatePicker/parts.native.js +2 -2
  119. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  120. package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -1
  121. package/dist/cjs/fields/Duration/DurationWheel.native.js +1 -1
  122. package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
  123. package/dist/cjs/fields/Duration/durationWheelTypes.native.js.map +1 -1
  124. package/dist/cjs/fields/Duration/index.native.js +3 -3
  125. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  126. package/dist/cjs/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  127. package/dist/cjs/fields/FileUpload/index.native.js +2 -2
  128. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
  129. package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  130. package/dist/cjs/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  131. package/dist/cjs/fields/Geolocation/geoValue.native.js.map +1 -1
  132. package/dist/cjs/fields/Geolocation/geocoder.native.js.map +1 -1
  133. package/dist/cjs/fields/Geolocation/geocoderContext.native.js.map +1 -1
  134. package/dist/cjs/fields/Geolocation/index.native.js +5 -5
  135. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  136. package/dist/cjs/fields/Geolocation/mapMath.native.js.map +1 -1
  137. package/dist/cjs/fields/Geolocation/mapTypes.native.js.map +1 -1
  138. package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  139. package/dist/cjs/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  140. package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
  141. package/dist/cjs/fields/Icon/index.native.js +3 -3
  142. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  143. package/dist/cjs/fields/ImageField/index.native.js +2 -2
  144. package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
  145. package/dist/cjs/fields/Input/index.native.js +3 -3
  146. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  147. package/dist/cjs/fields/MentionInput/index.native.js +3 -3
  148. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  149. package/dist/cjs/fields/OTPInput/index.native.js +3 -3
  150. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  151. package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -1
  152. package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -1
  153. package/dist/cjs/fields/PhoneInput/index.native.js +3 -3
  154. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  155. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
  156. package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -1
  157. package/dist/cjs/fields/Progress/index.native.js +1 -1
  158. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  159. package/dist/cjs/fields/RadioGroup/index.native.js +1 -1
  160. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  161. package/dist/cjs/fields/Rating/index.native.js +1 -1
  162. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  163. package/dist/cjs/fields/Rating/ratingMath.native.js.map +1 -1
  164. package/dist/cjs/fields/Rating/types.native.js.map +1 -1
  165. package/dist/cjs/fields/SearchInput/index.native.js +2 -2
  166. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  167. package/dist/cjs/fields/Select/InlineChoices.cjs +4 -8
  168. package/dist/cjs/fields/Select/InlineChoices.native.js +4 -8
  169. package/dist/cjs/fields/Select/InlineChoices.native.js.map +1 -1
  170. package/dist/cjs/fields/Select/SheetPickerRow.native.js.map +1 -1
  171. package/dist/cjs/fields/Select/index.cjs +46 -199
  172. package/dist/cjs/fields/Select/index.native.js +56 -211
  173. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  174. package/dist/cjs/fields/Select/shouldInlineChoices.native.js.map +1 -1
  175. package/dist/cjs/fields/Signature/index.native.js +2 -2
  176. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  177. package/dist/cjs/fields/Slider/index.native.js +1 -1
  178. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  179. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  180. package/dist/cjs/fields/Stepper/index.native.js +2 -2
  181. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  182. package/dist/cjs/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  183. package/dist/cjs/fields/Switch/footprint.native.js.map +1 -1
  184. package/dist/cjs/fields/Switch/index.native.js +2 -2
  185. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  186. package/dist/cjs/fields/TextArea/index.native.js +2 -2
  187. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  188. package/dist/cjs/fields/TimePicker/catalog.native.js +3 -3
  189. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
  190. package/dist/cjs/fields/TimePicker/index.native.js +2 -2
  191. package/dist/cjs/fields/TimePicker/parts.native.js +1 -1
  192. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  193. package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  194. package/dist/cjs/fields/TimeRangeScrubber/index.native.js +2 -2
  195. package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
  196. package/dist/cjs/fields/ToggleGroup/index.native.js +1 -1
  197. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  198. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.cjs +2 -2
  199. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +3 -3
  200. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  201. package/dist/cjs/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  202. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  203. package/dist/cjs/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  204. package/dist/cjs/fields/nativeSelect.native.js.map +1 -1
  205. package/dist/cjs/fields/selectedOrder.native.js.map +1 -1
  206. package/dist/cjs/formSpacing.native.js.map +1 -1
  207. package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -1
  208. package/dist/cjs/index.cjs +4 -0
  209. package/dist/cjs/index.native.js +49 -45
  210. package/dist/cjs/index.native.js.map +1 -1
  211. package/dist/cjs/keyboard/KeyboardDoneBar.native.js +1 -1
  212. package/dist/cjs/keyboard/chain.native.js.map +1 -1
  213. package/dist/cjs/keyboard/index.native.js.map +1 -1
  214. package/dist/cjs/keyboard/types.native.js.map +1 -1
  215. package/dist/cjs/requiredMarking.native.js.map +1 -1
  216. package/dist/cjs/shared/CheckGlyph.cjs +40 -0
  217. package/dist/cjs/shared/CheckGlyph.native.js +44 -0
  218. package/dist/cjs/shared/CheckGlyph.native.js.map +1 -0
  219. package/dist/cjs/shared/TimeColumn.native.js +1 -1
  220. package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
  221. package/dist/cjs/shared/capabilityPreflight.native.js.map +1 -1
  222. package/dist/cjs/shared/choiceRowPress.native.js.map +1 -1
  223. package/dist/cjs/shared/colorRamps.native.js.map +1 -1
  224. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  225. package/dist/cjs/shared/fieldRowContext.native.js.map +1 -1
  226. package/dist/cjs/shared/floatingList.cjs +82 -3
  227. package/dist/cjs/shared/floatingList.native.js +96 -6
  228. package/dist/cjs/shared/floatingList.native.js.map +1 -1
  229. package/dist/cjs/shared/focusManagement.native.js.map +1 -1
  230. package/dist/cjs/shared/groupContext.native.js.map +1 -1
  231. package/dist/cjs/shared/i18n.native.js.map +1 -1
  232. package/dist/cjs/shared/instantMotion.native.js.map +1 -1
  233. package/dist/cjs/shared/nativeA11y.native.js.map +1 -1
  234. package/dist/cjs/shared/nativeAutoFocus.native.js.map +1 -1
  235. package/dist/cjs/shared/overlaySizeClass.native.js.map +1 -1
  236. package/dist/cjs/shared/overlayStack.native.js.map +1 -1
  237. package/dist/cjs/shared/panelPortal.native.js.map +1 -1
  238. package/dist/cjs/shared/pickerTriggerContract.native.js.map +1 -1
  239. package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
  240. package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
  241. package/dist/cjs/shared/sheetNavigation.native.js.map +1 -1
  242. package/dist/cjs/shared/systemControlModules.gnome.native.js.map +1 -1
  243. package/dist/cjs/shared/systemControls.native.js.map +1 -1
  244. package/dist/cjs/shared/t.native.js.map +1 -1
  245. package/dist/cjs/shared/tableCellContext.native.js.map +1 -1
  246. package/dist/cjs/shared/useDragScroll.native.js.map +1 -1
  247. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  248. package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
  249. package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -1
  250. package/dist/cjs/shared/utils.native.js +1 -1
  251. package/dist/cjs/shared/utils.native.js.map +1 -1
  252. package/dist/cjs/shared/zIndex.native.js.map +1 -1
  253. package/dist/cjs/standardActions.native.js.map +1 -1
  254. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  255. package/dist/cjs/types.native.js.map +1 -1
  256. package/dist/cjs/utils/LinkCell.native.js.map +1 -1
  257. package/dist/esm/AdaptivePopup/index.mjs +2 -2
  258. package/dist/esm/AdaptivePopup/index.mjs.map +1 -1
  259. package/dist/esm/AdaptivePopup/index.native.js +2 -2
  260. package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
  261. package/dist/esm/Button/IconButtonGroup.native.js.map +1 -1
  262. package/dist/esm/Button/circleGlyph.native.js.map +1 -1
  263. package/dist/esm/Button/glass.mjs +1 -2
  264. package/dist/esm/Button/glass.mjs.map +1 -1
  265. package/dist/esm/Button/iconButtonGroupContext.native.js.map +1 -1
  266. package/dist/esm/Button/index.mjs +12 -5
  267. package/dist/esm/Button/index.mjs.map +1 -1
  268. package/dist/esm/Button/index.native.js +14 -6
  269. package/dist/esm/Button/index.native.js.map +1 -1
  270. package/dist/esm/Button/webGlass.mjs.map +1 -1
  271. package/dist/esm/Button/webGlass.native.js.map +1 -1
  272. package/dist/esm/Chip/index.native.js.map +1 -1
  273. package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  274. package/dist/esm/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  275. package/dist/esm/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  276. package/dist/esm/ContextualSaveBar/index.native.js.map +1 -1
  277. package/dist/esm/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  278. package/dist/esm/ControlGroup/index.native.js.map +1 -1
  279. package/dist/esm/DescriptionList/index.native.js.map +1 -1
  280. package/dist/esm/ErrorSummary.native.js.map +1 -1
  281. package/dist/esm/FieldDisplay/editMode.native.js.map +1 -1
  282. package/dist/esm/FieldDisplay/formatters.native.js.map +1 -1
  283. package/dist/esm/FieldDisplay/index.native.js.map +1 -1
  284. package/dist/esm/FieldGroup.native.js.map +1 -1
  285. package/dist/esm/FloatingPanel/PanelHeader.mjs +3 -8
  286. package/dist/esm/FloatingPanel/PanelHeader.mjs.map +1 -1
  287. package/dist/esm/FloatingPanel/PanelHeader.native.js +3 -8
  288. package/dist/esm/FloatingPanel/PanelHeader.native.js.map +1 -1
  289. package/dist/esm/FloatingPanel/RegularPanel.native.js.map +1 -1
  290. package/dist/esm/FloatingPanel/compactFace.native.js.map +1 -1
  291. package/dist/esm/FloatingPanel/containingBlock.native.js.map +1 -1
  292. package/dist/esm/FloatingPanel/coverRect.mjs +1 -8
  293. package/dist/esm/FloatingPanel/coverRect.mjs.map +1 -1
  294. package/dist/esm/FloatingPanel/coverRect.native.js +1 -8
  295. package/dist/esm/FloatingPanel/coverRect.native.js.map +1 -1
  296. package/dist/esm/FloatingPanel/echoContext.mjs +4 -24
  297. package/dist/esm/FloatingPanel/echoContext.mjs.map +1 -1
  298. package/dist/esm/FloatingPanel/echoContext.native.js +4 -25
  299. package/dist/esm/FloatingPanel/echoContext.native.js.map +1 -1
  300. package/dist/esm/FloatingPanel/index.mjs +53 -135
  301. package/dist/esm/FloatingPanel/index.mjs.map +1 -1
  302. package/dist/esm/FloatingPanel/index.native.js +30 -95
  303. package/dist/esm/FloatingPanel/index.native.js.map +1 -1
  304. package/dist/esm/FloatingPanel/nestedAction.native.js.map +1 -1
  305. package/dist/esm/FloatingPanel/paintedBox.native.js.map +1 -1
  306. package/dist/esm/FloatingPanel/panelWidth.native.js.map +1 -1
  307. package/dist/esm/FloatingPanel/pointAnchor.native.js.map +1 -1
  308. package/dist/esm/FloatingPanel/regularPlacement.native.js.map +1 -1
  309. package/dist/esm/FloatingPanel/trailingAction.native.js.map +1 -1
  310. package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  311. package/dist/esm/Form/index.native.js.map +1 -1
  312. package/dist/esm/Form/submissionController.native.js.map +1 -1
  313. package/dist/esm/Form/validateOn.native.js.map +1 -1
  314. package/dist/esm/FormGrid.native.js.map +1 -1
  315. package/dist/esm/FormSection.native.js.map +1 -1
  316. package/dist/esm/InputParts/PasswordReveal.native.js.map +1 -1
  317. package/dist/esm/InputParts/index.native.js.map +1 -1
  318. package/dist/esm/InputParts/keyboardAppearance.native.js.map +1 -1
  319. package/dist/esm/Label/index.native.js.map +1 -1
  320. package/dist/esm/MediaPicker/base64.native.js.map +1 -1
  321. package/dist/esm/MediaPicker/payload.native.js.map +1 -1
  322. package/dist/esm/MediaPicker/types.native.js.map +1 -1
  323. package/dist/esm/MediaPicker/useMediaPicker.native.js.map +1 -1
  324. package/dist/esm/Skeleton/index.native.js.map +1 -1
  325. package/dist/esm/Spinner/SpinnerGlyph.native.js.map +1 -1
  326. package/dist/esm/Spinner/spinnerSize.native.js.map +1 -1
  327. package/dist/esm/Table/index.native.js.map +1 -1
  328. package/dist/esm/Wheel/haptic.native.js.map +1 -1
  329. package/dist/esm/Wheel/index.native.js.map +1 -1
  330. package/dist/esm/Wheel/wheelShared.native.js.map +1 -1
  331. package/dist/esm/actionLabel.native.js.map +1 -1
  332. package/dist/esm/fieldDefaults.native.js.map +1 -1
  333. package/dist/esm/fieldLayout.native.js.map +1 -1
  334. package/dist/esm/fields/Barcode/BarcodePreview.native.js.map +1 -1
  335. package/dist/esm/fields/Barcode/code128.native.js.map +1 -1
  336. package/dist/esm/fields/Barcode/index.native.js.map +1 -1
  337. package/dist/esm/fields/Barcode/qr.native.js.map +1 -1
  338. package/dist/esm/fields/Barcode/scannerTypes.native.js.map +1 -1
  339. package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
  340. package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  341. package/dist/esm/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  342. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  343. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  344. package/dist/esm/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  345. package/dist/esm/fields/Checkbox/index.native.js.map +1 -1
  346. package/dist/esm/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  347. package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
  348. package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
  349. package/dist/esm/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  350. package/dist/esm/fields/Combobox/authorOptions.native.js.map +1 -1
  351. package/dist/esm/fields/Combobox/index.mjs +4 -11
  352. package/dist/esm/fields/Combobox/index.mjs.map +1 -1
  353. package/dist/esm/fields/Combobox/index.native.js +4 -11
  354. package/dist/esm/fields/Combobox/index.native.js.map +1 -1
  355. package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -1
  356. package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  357. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  358. package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -1
  359. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  360. package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -1
  361. package/dist/esm/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  362. package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
  363. package/dist/esm/fields/DatePicker/utils.native.js.map +1 -1
  364. package/dist/esm/fields/Duration/durationMath.native.js.map +1 -1
  365. package/dist/esm/fields/Duration/durationWheelTypes.native.js.map +1 -1
  366. package/dist/esm/fields/Duration/index.native.js.map +1 -1
  367. package/dist/esm/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  368. package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
  369. package/dist/esm/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  370. package/dist/esm/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  371. package/dist/esm/fields/Geolocation/geoValue.native.js.map +1 -1
  372. package/dist/esm/fields/Geolocation/geocoder.native.js.map +1 -1
  373. package/dist/esm/fields/Geolocation/geocoderContext.native.js.map +1 -1
  374. package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
  375. package/dist/esm/fields/Geolocation/mapMath.native.js.map +1 -1
  376. package/dist/esm/fields/Geolocation/mapTypes.native.js.map +1 -1
  377. package/dist/esm/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  378. package/dist/esm/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  379. package/dist/esm/fields/Icon/drawnSet.native.js.map +1 -1
  380. package/dist/esm/fields/Icon/index.native.js.map +1 -1
  381. package/dist/esm/fields/ImageField/index.native.js.map +1 -1
  382. package/dist/esm/fields/Input/index.native.js.map +1 -1
  383. package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
  384. package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
  385. package/dist/esm/fields/OTPInput/otpCellCss.native.js.map +1 -1
  386. package/dist/esm/fields/PhoneInput/dialCodes.native.js.map +1 -1
  387. package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
  388. package/dist/esm/fields/PhoneInput/phone.native.js.map +1 -1
  389. package/dist/esm/fields/PhoneInput/regionNames.native.js.map +1 -1
  390. package/dist/esm/fields/Progress/index.native.js.map +1 -1
  391. package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
  392. package/dist/esm/fields/Rating/index.native.js.map +1 -1
  393. package/dist/esm/fields/Rating/ratingMath.native.js.map +1 -1
  394. package/dist/esm/fields/Rating/types.native.js.map +1 -1
  395. package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
  396. package/dist/esm/fields/Select/InlineChoices.mjs +2 -6
  397. package/dist/esm/fields/Select/InlineChoices.mjs.map +1 -1
  398. package/dist/esm/fields/Select/InlineChoices.native.js +2 -6
  399. package/dist/esm/fields/Select/InlineChoices.native.js.map +1 -1
  400. package/dist/esm/fields/Select/SheetPickerRow.native.js.map +1 -1
  401. package/dist/esm/fields/Select/index.mjs +49 -202
  402. package/dist/esm/fields/Select/index.mjs.map +1 -1
  403. package/dist/esm/fields/Select/index.native.js +55 -210
  404. package/dist/esm/fields/Select/index.native.js.map +1 -1
  405. package/dist/esm/fields/Select/shouldInlineChoices.native.js.map +1 -1
  406. package/dist/esm/fields/Signature/index.native.js.map +1 -1
  407. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  408. package/dist/esm/fields/Slider/jumpMotion.native.js.map +1 -1
  409. package/dist/esm/fields/Stepper/index.native.js.map +1 -1
  410. package/dist/esm/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  411. package/dist/esm/fields/Switch/footprint.native.js.map +1 -1
  412. package/dist/esm/fields/Switch/index.native.js.map +1 -1
  413. package/dist/esm/fields/TextArea/index.native.js.map +1 -1
  414. package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -1
  415. package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
  416. package/dist/esm/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  417. package/dist/esm/fields/TimeRangeScrubber/index.native.js.map +1 -1
  418. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
  419. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs +3 -3
  420. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
  421. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js +3 -3
  422. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  423. package/dist/esm/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  424. package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  425. package/dist/esm/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  426. package/dist/esm/fields/nativeSelect.native.js.map +1 -1
  427. package/dist/esm/fields/selectedOrder.native.js.map +1 -1
  428. package/dist/esm/formSpacing.native.js.map +1 -1
  429. package/dist/esm/hooks/useFocusManagement.native.js.map +1 -1
  430. package/dist/esm/index.mjs +3 -1
  431. package/dist/esm/index.mjs.map +1 -1
  432. package/dist/esm/index.native.js +3 -1
  433. package/dist/esm/index.native.js.map +1 -1
  434. package/dist/esm/keyboard/chain.native.js.map +1 -1
  435. package/dist/esm/keyboard/index.native.js.map +1 -1
  436. package/dist/esm/keyboard/types.native.js.map +1 -1
  437. package/dist/esm/requiredMarking.native.js.map +1 -1
  438. package/dist/esm/shared/CheckGlyph.mjs +15 -0
  439. package/dist/esm/shared/CheckGlyph.mjs.map +1 -0
  440. package/dist/esm/shared/CheckGlyph.native.js +16 -0
  441. package/dist/esm/shared/CheckGlyph.native.js.map +1 -0
  442. package/dist/esm/shared/TimeColumn.native.js.map +1 -1
  443. package/dist/esm/shared/capabilityPreflight.native.js.map +1 -1
  444. package/dist/esm/shared/choiceRowPress.native.js.map +1 -1
  445. package/dist/esm/shared/colorRamps.native.js.map +1 -1
  446. package/dist/esm/shared/devWarn.native.js.map +1 -1
  447. package/dist/esm/shared/fieldRowContext.native.js.map +1 -1
  448. package/dist/esm/shared/floatingList.mjs +80 -4
  449. package/dist/esm/shared/floatingList.mjs.map +1 -1
  450. package/dist/esm/shared/floatingList.native.js +93 -6
  451. package/dist/esm/shared/floatingList.native.js.map +1 -1
  452. package/dist/esm/shared/focusManagement.native.js.map +1 -1
  453. package/dist/esm/shared/groupContext.native.js.map +1 -1
  454. package/dist/esm/shared/i18n.native.js.map +1 -1
  455. package/dist/esm/shared/instantMotion.native.js.map +1 -1
  456. package/dist/esm/shared/nativeA11y.native.js.map +1 -1
  457. package/dist/esm/shared/nativeAutoFocus.native.js.map +1 -1
  458. package/dist/esm/shared/overlaySizeClass.native.js.map +1 -1
  459. package/dist/esm/shared/overlayStack.native.js.map +1 -1
  460. package/dist/esm/shared/panelPortal.native.js.map +1 -1
  461. package/dist/esm/shared/pickerTriggerContract.native.js.map +1 -1
  462. package/dist/esm/shared/pressSlopProps.native.js.map +1 -1
  463. package/dist/esm/shared/restoreRetries.native.js.map +1 -1
  464. package/dist/esm/shared/sheetNavigation.native.js.map +1 -1
  465. package/dist/esm/shared/systemControlModules.gnome.native.js.map +1 -1
  466. package/dist/esm/shared/systemControls.native.js.map +1 -1
  467. package/dist/esm/shared/t.native.js.map +1 -1
  468. package/dist/esm/shared/tableCellContext.native.js.map +1 -1
  469. package/dist/esm/shared/useDragScroll.native.js.map +1 -1
  470. package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
  471. package/dist/esm/shared/useSheetEscapeDismiss.native.js.map +1 -1
  472. package/dist/esm/shared/useWheelIncrement.native.js.map +1 -1
  473. package/dist/esm/shared/utils.native.js.map +1 -1
  474. package/dist/esm/shared/zIndex.native.js.map +1 -1
  475. package/dist/esm/standardActions.native.js.map +1 -1
  476. package/dist/esm/themedPrimitives.native.js.map +1 -1
  477. package/dist/esm/types.native.js.map +1 -1
  478. package/dist/esm/utils/LinkCell.native.js.map +1 -1
  479. package/dist/jsx/AdaptivePopup/index.mjs +2 -2
  480. package/dist/jsx/AdaptivePopup/index.mjs.map +1 -1
  481. package/dist/jsx/AdaptivePopup/index.native.js +1 -1
  482. package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
  483. package/dist/jsx/Button/glass.mjs +1 -2
  484. package/dist/jsx/Button/glass.mjs.map +1 -1
  485. package/dist/jsx/Button/index.mjs +12 -5
  486. package/dist/jsx/Button/index.mjs.map +1 -1
  487. package/dist/jsx/Button/index.native.js +14 -6
  488. package/dist/jsx/Button/index.native.js.map +1 -1
  489. package/dist/jsx/Button/webGlass.mjs.map +1 -1
  490. package/dist/jsx/Button/webGlass.native.js.map +1 -1
  491. package/dist/jsx/FloatingPanel/PanelHeader.mjs +3 -8
  492. package/dist/jsx/FloatingPanel/PanelHeader.mjs.map +1 -1
  493. package/dist/jsx/FloatingPanel/PanelHeader.native.js +3 -8
  494. package/dist/jsx/FloatingPanel/PanelHeader.native.js.map +1 -1
  495. package/dist/jsx/FloatingPanel/coverRect.mjs +1 -8
  496. package/dist/jsx/FloatingPanel/coverRect.mjs.map +1 -1
  497. package/dist/jsx/FloatingPanel/coverRect.native.js +0 -8
  498. package/dist/jsx/FloatingPanel/coverRect.native.js.map +1 -1
  499. package/dist/jsx/FloatingPanel/echoContext.mjs +4 -24
  500. package/dist/jsx/FloatingPanel/echoContext.mjs.map +1 -1
  501. package/dist/jsx/FloatingPanel/echoContext.native.js +5 -28
  502. package/dist/jsx/FloatingPanel/echoContext.native.js.map +1 -1
  503. package/dist/jsx/FloatingPanel/index.mjs +53 -135
  504. package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
  505. package/dist/jsx/FloatingPanel/index.native.js +26 -91
  506. package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
  507. package/dist/jsx/fields/Combobox/index.mjs +4 -11
  508. package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
  509. package/dist/jsx/fields/Combobox/index.native.js +3 -10
  510. package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
  511. package/dist/jsx/fields/Select/InlineChoices.mjs +2 -6
  512. package/dist/jsx/fields/Select/InlineChoices.mjs.map +1 -1
  513. package/dist/jsx/fields/Select/InlineChoices.native.js +4 -8
  514. package/dist/jsx/fields/Select/InlineChoices.native.js.map +1 -1
  515. package/dist/jsx/fields/Select/index.mjs +49 -202
  516. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  517. package/dist/jsx/fields/Select/index.native.js +52 -207
  518. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  519. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs +3 -3
  520. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
  521. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +2 -2
  522. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  523. package/dist/jsx/index.js +3 -1
  524. package/dist/jsx/index.js.map +1 -1
  525. package/dist/jsx/index.mjs +3 -1
  526. package/dist/jsx/index.mjs.map +1 -1
  527. package/dist/jsx/index.native.js +4 -0
  528. package/dist/jsx/index.native.js.map +1 -1
  529. package/dist/jsx/shared/CheckGlyph.mjs +15 -0
  530. package/dist/jsx/shared/CheckGlyph.mjs.map +1 -0
  531. package/dist/jsx/shared/CheckGlyph.native.js +44 -0
  532. package/dist/jsx/shared/CheckGlyph.native.js.map +1 -0
  533. package/dist/jsx/shared/floatingList.mjs +80 -4
  534. package/dist/jsx/shared/floatingList.mjs.map +1 -1
  535. package/dist/jsx/shared/floatingList.native.js +95 -5
  536. package/dist/jsx/shared/floatingList.native.js.map +1 -1
  537. package/package.json +8 -8
  538. package/src/AdaptivePopup/index.tsx +2 -2
  539. package/src/Button/Button.glassPress.spec.tsx +117 -0
  540. package/src/Button/Button.iconButton.spec.tsx +39 -0
  541. package/src/Button/IconButtonGroup.spec.tsx +1 -1
  542. package/src/Button/glass.spec.ts +48 -18
  543. package/src/Button/glass.ts +5 -12
  544. package/src/Button/index.tsx +22 -10
  545. package/src/Button/webGlass.ts +5 -4
  546. package/src/FloatingPanel/FloatingPanel.iconCover.spec.tsx +279 -0
  547. package/src/FloatingPanel/FloatingPanel.menuFace.native.spec.tsx +78 -69
  548. package/src/FloatingPanel/FloatingPanel.seamlessCover.spec.tsx +12 -0
  549. package/src/FloatingPanel/PanelHeader.tsx +4 -12
  550. package/src/FloatingPanel/coverRect.ts +2 -15
  551. package/src/FloatingPanel/echoContext.ts +6 -40
  552. package/src/FloatingPanel/index.native.tsx +36 -145
  553. package/src/FloatingPanel/index.tsx +61 -187
  554. package/src/FloatingPanel/pointAnchor.spec.ts +1 -1
  555. package/src/FloatingPanel/pointAnchor.ts +4 -4
  556. package/src/fields/Combobox/index.tsx +4 -9
  557. package/src/fields/Select/InlineChoices.tsx +2 -2
  558. package/src/fields/Select/Select.containingBlock.spec.tsx +131 -130
  559. package/src/fields/Select/Select.stories.tsx +10 -0
  560. package/src/fields/Select/index.tsx +66 -253
  561. package/src/fields/nativeDateTime/OsDateTimeSheet.tsx +3 -3
  562. package/src/index.ts +2 -1
  563. package/src/shared/CheckGlyph.tsx +12 -0
  564. package/src/shared/floatingList.spec.tsx +154 -1
  565. package/src/shared/floatingList.tsx +125 -8
  566. package/types/Button/glass.d.ts +4 -3
  567. package/types/Button/glass.d.ts.map +1 -1
  568. package/types/Button/index.d.ts.map +1 -1
  569. package/types/Button/webGlass.d.ts +5 -4
  570. package/types/Button/webGlass.d.ts.map +1 -1
  571. package/types/FloatingPanel/PanelHeader.d.ts +1 -6
  572. package/types/FloatingPanel/PanelHeader.d.ts.map +1 -1
  573. package/types/FloatingPanel/coverRect.d.ts +2 -11
  574. package/types/FloatingPanel/coverRect.d.ts.map +1 -1
  575. package/types/FloatingPanel/echoContext.d.ts +5 -22
  576. package/types/FloatingPanel/echoContext.d.ts.map +1 -1
  577. package/types/FloatingPanel/index.d.ts +6 -8
  578. package/types/FloatingPanel/index.d.ts.map +1 -1
  579. package/types/FloatingPanel/index.native.d.ts +1 -1
  580. package/types/FloatingPanel/index.native.d.ts.map +1 -1
  581. package/types/FloatingPanel/pointAnchor.d.ts +4 -4
  582. package/types/fields/Combobox/index.d.ts.map +1 -1
  583. package/types/fields/Select/index.d.ts.map +1 -1
  584. package/types/index.d.ts +2 -1
  585. package/types/index.d.ts.map +1 -1
  586. package/types/shared/CheckGlyph.d.ts +10 -0
  587. package/types/shared/CheckGlyph.d.ts.map +1 -0
  588. package/types/shared/floatingList.d.ts +55 -1
  589. package/types/shared/floatingList.d.ts.map +1 -1
  590. package/dist/cjs/FloatingPanel/iconEcho.cjs +0 -106
  591. package/dist/cjs/FloatingPanel/iconEcho.native.js +0 -116
  592. package/dist/cjs/FloatingPanel/iconEcho.native.js.map +0 -1
  593. package/dist/esm/FloatingPanel/iconEcho.mjs +0 -79
  594. package/dist/esm/FloatingPanel/iconEcho.mjs.map +0 -1
  595. package/dist/esm/FloatingPanel/iconEcho.native.js +0 -86
  596. package/dist/esm/FloatingPanel/iconEcho.native.js.map +0 -1
  597. package/dist/jsx/FloatingPanel/iconEcho.mjs +0 -79
  598. package/dist/jsx/FloatingPanel/iconEcho.mjs.map +0 -1
  599. package/dist/jsx/FloatingPanel/iconEcho.native.js +0 -116
  600. package/dist/jsx/FloatingPanel/iconEcho.native.js.map +0 -1
  601. package/src/FloatingPanel/FloatingPanel.iconEcho.spec.tsx +0 -357
  602. package/src/FloatingPanel/iconEcho.tsx +0 -124
  603. package/types/FloatingPanel/iconEcho.d.ts +0 -29
  604. package/types/FloatingPanel/iconEcho.d.ts.map +0 -1
@@ -54,51 +54,7 @@ describe("Select inside a transformed sheet (FZ-8438)", () => {
54
54
  });
55
55
  });
56
56
 
57
- describe("Select seamless cover (LC-112, FZ-8438)", () => {
58
- beforeEach(() => {
59
- Object.defineProperty(window, "innerWidth", {
60
- configurable: true,
61
- writable: true,
62
- value: 1200,
63
- });
64
- });
65
- afterEach(() => {
66
- vi.restoreAllMocks();
67
- });
68
-
69
- it("opens on the field's top edge with the field echoed as a hidden first row", async () => {
70
- const original = HTMLElement.prototype.getBoundingClientRect;
71
- vi.spyOn(HTMLElement.prototype, "getBoundingClientRect").mockImplementation(
72
- function (this: HTMLElement) {
73
- const field = this.querySelector('[data-testid="select-trigger"]');
74
- if (this.dataset.testid === "select-trigger" || field) {
75
- return {
76
- x: 16,
77
- y: 200,
78
- top: 200,
79
- left: 16,
80
- right: 416,
81
- bottom: 240,
82
- width: 400,
83
- height: 40,
84
- toJSON: () => ({}),
85
- } as DOMRect;
86
- }
87
- return original.call(this);
88
- },
89
- );
90
- const result = renderWithProviders(<Select options={options} value="nbg" />);
91
- const { dropdown, top } = await openTop(result);
92
- expect(top).toBe(200);
93
- const echo = dropdown.querySelector<HTMLElement>("[data-fp-trigger-row]");
94
- expect(echo).not.toBeNull();
95
- expect(dropdown.firstElementChild).toBe(echo);
96
- expect(echo?.getAttribute("aria-hidden")).toBe("true");
97
- expect(echo?.getAttribute("role")).toBeNull();
98
- });
99
- });
100
-
101
- describe("Select cover and scroll (LC-112, FZ-8463)", () => {
57
+ describe("Select opens with its checked row on the field (LC-112, FZ-8557)", () => {
102
58
  const field = (top: number) => ({
103
59
  x: 16,
104
60
  y: top,
@@ -110,8 +66,11 @@ describe("Select cover and scroll (LC-112, FZ-8463)", () => {
110
66
  height: 40,
111
67
  toJSON: () => ({}),
112
68
  });
69
+ const rowTop = 4;
70
+ const rowHeight = 36;
113
71
  let fieldTop = 700;
114
- let contentHeight = 300;
72
+ let viewportHeight = 768;
73
+ const contentOf = (count: number) => rowTop * 2 + count * rowHeight;
115
74
  beforeEach(() => {
116
75
  Object.defineProperty(window, "innerWidth", {
117
76
  configurable: true,
@@ -120,8 +79,7 @@ describe("Select cover and scroll (LC-112, FZ-8463)", () => {
120
79
  });
121
80
  Object.defineProperty(window, "innerHeight", {
122
81
  configurable: true,
123
- writable: true,
124
- value: 768,
82
+ get: () => viewportHeight,
125
83
  });
126
84
  const original = HTMLElement.prototype.getBoundingClientRect;
127
85
  vi.spyOn(HTMLElement.prototype, "getBoundingClientRect").mockImplementation(
@@ -135,113 +93,156 @@ describe("Select cover and scroll (LC-112, FZ-8463)", () => {
135
93
  return original.call(this);
136
94
  },
137
95
  );
96
+ const rowsOf = (el: HTMLElement) =>
97
+ Array.from(
98
+ el.closest('[data-testid="select-dropdown"]')?.querySelectorAll('[role="option"]') ?? [],
99
+ );
138
100
  vi.spyOn(HTMLElement.prototype, "scrollHeight", "get").mockImplementation(
139
101
  function (this: HTMLElement) {
140
- return this.dataset.testid === "select-dropdown" ? contentHeight : 0;
102
+ return this.dataset.testid === "select-dropdown" ? contentOf(rowsOf(this).length) : 0;
103
+ },
104
+ );
105
+ vi.spyOn(HTMLElement.prototype, "offsetHeight", "get").mockImplementation(
106
+ function (this: HTMLElement) {
107
+ return this.getAttribute("role") === "option" ? rowHeight : 0;
108
+ },
109
+ );
110
+ vi.spyOn(HTMLElement.prototype, "offsetTop", "get").mockImplementation(
111
+ function (this: HTMLElement) {
112
+ return this.getAttribute("role") === "option"
113
+ ? rowTop + rowsOf(this).indexOf(this) * rowHeight
114
+ : 0;
115
+ },
116
+ );
117
+ vi.spyOn(HTMLElement.prototype, "clientHeight", "get").mockImplementation(
118
+ function (this: HTMLElement) {
119
+ return this.dataset.testid === "select-dropdown" ? innerOf(this) : 0;
141
120
  },
142
121
  );
143
122
  });
144
123
  afterEach(() => {
124
+ viewportHeight = 768;
145
125
  vi.restoreAllMocks();
146
126
  });
147
127
 
148
- it("a low field's list covers the field with no echo and grows up from its bottom edge", async () => {
149
- fieldTop = 700;
150
- contentHeight = 300;
151
- const result = renderWithProviders(<Select options={options} value="hel" />);
128
+ const borders = (dropdown: HTMLElement) => {
129
+ const style = getComputedStyle(dropdown);
130
+ return {
131
+ top: parseFloat(style.borderTopWidth) || 0,
132
+ bottom: parseFloat(style.borderBottomWidth) || 0,
133
+ };
134
+ };
135
+ /** The panel's padding box, in viewport pixels. */
136
+ function innerOf(dropdown: HTMLElement) {
137
+ const border = borders(dropdown);
138
+ return (parseFloat(dropdown.style.maxHeight) || 0) - border.top - border.bottom;
139
+ }
140
+ const paddingTop = (dropdown: HTMLElement) =>
141
+ parseFloat(dropdown.style.top) + borders(dropdown).top;
142
+ /** The panel's outer edges: these meet the safe edges (`panelViewportPadding`). */
143
+ const outerTop = (dropdown: HTMLElement) => parseFloat(dropdown.style.top);
144
+ const outerBottom = (dropdown: HTMLElement) =>
145
+ outerTop(dropdown) + parseFloat(dropdown.style.maxHeight);
146
+ /**
147
+ * The checked row's value against the closed field's: both draw one line
148
+ * of text centred in their row, so the delta of the two centres is how far
149
+ * the value moves on open.
150
+ */
151
+ const valueDelta = (dropdown: HTMLElement, row: number) =>
152
+ paddingTop(dropdown) +
153
+ rowTop +
154
+ row * rowHeight -
155
+ dropdown.scrollTop +
156
+ rowHeight / 2 -
157
+ (fieldTop + 20);
158
+ const many: SelectOption[] = Array.from({ length: 40 }, (_, i) => ({
159
+ value: `c${i}`,
160
+ label: `City ${i}`,
161
+ }));
162
+
163
+ it("never echoes the field: the checked row is the value, shown once", async () => {
164
+ fieldTop = 120;
165
+ const result = renderWithProviders(<Select options={options} value="nbg" />);
152
166
  const { dropdown } = await openTop(result);
153
- await waitFor(() => expect(dropdown.querySelector("[data-fp-trigger-row]")).toBeNull());
154
- // The panel's bottom edge is the field's (740), the whole list above it.
155
- await waitFor(() =>
156
- expect(parseFloat(dropdown.style.top) + parseFloat(dropdown.style.maxHeight)).toBe(740),
157
- );
158
- expect(parseFloat(dropdown.style.top)).toBeLessThan(700);
159
- expect(parseFloat(dropdown.style.maxHeight)).toBeGreaterThanOrEqual(300);
160
- expect(dropdown.textContent?.match(/Helsinki/g)?.length ?? 0).toBe(1);
167
+ await waitFor(() => expect(Math.abs(valueDelta(dropdown, 2))).toBeLessThanOrEqual(1));
168
+ expect(dropdown.querySelector("[data-fp-trigger-row]")).toBeNull();
169
+ expect(dropdown.textContent?.match(/Nuremberg/g)?.length ?? 0).toBe(1);
170
+ expect(dropdown.scrollTop).toBe(0);
161
171
  });
162
172
 
163
- it("a low field's long list stops at the safe top edge and scrolls", async () => {
173
+ it("with no value, the first row sits on the field", async () => {
174
+ fieldTop = 120;
175
+ const result = renderWithProviders(<Select options={options} />);
176
+ const { dropdown } = await openTop(result);
177
+ await waitFor(() => expect(Math.abs(valueDelta(dropdown, 0))).toBeLessThanOrEqual(1));
178
+ expect(dropdown.querySelector("[data-fp-trigger-row]")).toBeNull();
179
+ });
180
+
181
+ it("a short list by the bottom edge shows whole, slid up the least distance", async () => {
164
182
  fieldTop = 700;
165
- contentHeight = 2000;
166
183
  const result = renderWithProviders(<Select options={options} value="hel" />);
167
184
  const { dropdown } = await openTop(result);
168
- await waitFor(() => expect(dropdown.querySelector("[data-fp-trigger-row]")).toBeNull());
169
- await waitFor(() => expect(parseFloat(dropdown.style.top)).toBe(10));
170
- expect(parseFloat(dropdown.style.maxHeight)).toBe(730);
185
+ await waitFor(() => expect(outerBottom(dropdown)).toBe(768 - 10));
186
+ expect(innerOf(dropdown)).toBe(contentOf(3));
187
+ expect(dropdown.scrollTop).toBe(0);
188
+ // Helsinki would sit on the field; the list stops at the safe edge instead.
189
+ expect(valueDelta(dropdown, 0)).toBeLessThan(0);
171
190
  });
172
191
 
173
- it("a high field's long list covers the field and grows down to the safe bottom edge", async () => {
174
- fieldTop = 120;
175
- contentHeight = 2000;
176
- const result = renderWithProviders(<Select options={options} value="hel" />);
192
+ it("a long list that fits the screen shows every row with no scrolling", async () => {
193
+ viewportHeight = 1366;
194
+ fieldTop = 700;
195
+ const result = renderWithProviders(<Select options={many.slice(0, 36)} value="c20" />);
177
196
  const { dropdown } = await openTop(result);
178
- await waitFor(() => expect(dropdown.querySelector("[data-fp-trigger-row]")).toBeNull());
179
- expect(parseFloat(dropdown.style.top)).toBe(120);
180
- await waitFor(() => expect(parseFloat(dropdown.style.maxHeight)).toBe(768 - 10 - 120));
197
+ await waitFor(() => expect(innerOf(dropdown)).toBe(contentOf(36)));
198
+ expect(dropdown.scrollTop).toBe(0);
199
+ // Cairo's 20 rows above it don't fit over the field: the list slides down
200
+ // the least distance, its top on the safe edge, and the value sits just below.
201
+ expect(outerTop(dropdown)).toBe(10);
202
+ expect(outerBottom(dropdown)).toBeLessThanOrEqual(1366 - 10);
203
+ expect(valueDelta(dropdown, 20)).toBeGreaterThan(0);
181
204
  });
182
205
 
183
- describe("with 36px rows", () => {
184
- const rowTop = 4;
185
- const rowHeight = 36;
186
- beforeEach(() => {
187
- const rowIndex = (el: HTMLElement) =>
188
- Array.from(
189
- el.closest('[data-testid="select-dropdown"]')?.querySelectorAll('[role="option"]') ?? [],
190
- ).indexOf(el);
191
- vi.spyOn(HTMLElement.prototype, "offsetHeight", "get").mockImplementation(
192
- function (this: HTMLElement) {
193
- return this.getAttribute("role") === "option" ? rowHeight : 0;
194
- },
195
- );
196
- vi.spyOn(HTMLElement.prototype, "offsetTop", "get").mockImplementation(
197
- function (this: HTMLElement) {
198
- return this.getAttribute("role") === "option" ? rowTop + rowIndex(this) * rowHeight : 0;
199
- },
200
- );
201
- vi.spyOn(HTMLElement.prototype, "clientHeight", "get").mockImplementation(
202
- function (this: HTMLElement) {
203
- return this.dataset.testid === "select-dropdown"
204
- ? parseFloat(this.style.maxHeight) || 0
205
- : 0;
206
- },
207
- );
208
- });
206
+ it("a list taller than the screen keeps its value on the field and reaches both safe edges", async () => {
207
+ fieldTop = 700;
208
+ const result = renderWithProviders(<Select options={many} value="c20" />);
209
+ const { dropdown } = await openTop(result);
210
+ await waitFor(() => expect(Math.abs(valueDelta(dropdown, 20))).toBeLessThanOrEqual(1));
211
+ expect(dropdown.scrollTop).toBeGreaterThan(0);
212
+ // No whole-row trim: the clipped edges sit on the safe edges, a cut row under each band.
213
+ expect(outerTop(dropdown)).toBe(10);
214
+ expect(outerBottom(dropdown)).toBe(768 - 10);
215
+ });
209
216
 
210
- it("growing up, the row on the field is whole: the panel's bottom stays on the field", async () => {
211
- fieldTop = 700;
212
- contentHeight = 2000;
213
- const result = renderWithProviders(<Select options={options} value="hel" />);
214
- const { dropdown } = await openTop(result);
215
- // 730 of room above holds 20 whole rows and 6px of a 21st: that sliver goes.
216
- await waitFor(() => expect(parseFloat(dropdown.style.maxHeight)).toBe(724));
217
- expect(parseFloat(dropdown.style.top)).toBe(16);
218
- const visibleBottom = dropdown.scrollTop + parseFloat(dropdown.style.maxHeight);
219
- expect((visibleBottom - rowTop) % rowHeight).toBe(0);
220
- });
217
+ it("a high field's first row stays on the field and the list runs to the safe bottom edge", async () => {
218
+ fieldTop = 120;
219
+ const result = renderWithProviders(<Select options={many} value="c0" />);
220
+ const { dropdown } = await openTop(result);
221
+ await waitFor(() => expect(Math.abs(valueDelta(dropdown, 0))).toBeLessThanOrEqual(1));
222
+ expect(dropdown.scrollTop).toBe(0);
223
+ expect(outerBottom(dropdown)).toBe(768 - 10);
224
+ });
221
225
 
222
- it("growing down, no sliver of a row sits at the screen edge", async () => {
223
- fieldTop = 120;
224
- contentHeight = 2000;
225
- const result = renderWithProviders(<Select options={options} value="hel" />);
226
- const { dropdown } = await openTop(result);
227
- expect(parseFloat(dropdown.style.top)).toBe(120);
228
- await waitFor(() =>
229
- expect(parseFloat(dropdown.style.maxHeight)).toBeLessThan(768 - 10 - 120),
230
- );
231
- const visibleBottom = dropdown.scrollTop + parseFloat(dropdown.style.maxHeight);
232
- expect((visibleBottom - rowTop) % rowHeight).toBe(0);
233
- });
226
+ it("the last row checked on a low field ends the panel at the list's end", async () => {
227
+ fieldTop = 700;
228
+ const result = renderWithProviders(<Select options={many} value="c39" />);
229
+ const { dropdown } = await openTop(result);
230
+ await waitFor(() => expect(Math.abs(valueDelta(dropdown, 39))).toBeLessThanOrEqual(1));
231
+ expect(outerTop(dropdown)).toBe(10);
232
+ expect(dropdown.scrollTop + innerOf(dropdown)).toBe(contentOf(40));
234
233
  });
235
234
 
236
- it("a field with room below keeps the echo on top, opening down", async () => {
235
+ it("scrolling grows a panel that stops short of the safe top edge, the rows staying put", async () => {
237
236
  fieldTop = 120;
238
- contentHeight = 300;
239
- const result = renderWithProviders(<Select options={options} value="hel" />);
240
- const { dropdown, top } = await openTop(result);
241
- expect(top).toBe(120);
242
- const echo = dropdown.querySelector<HTMLElement>("[data-fp-trigger-row]");
243
- expect(echo).not.toBeNull();
244
- expect(dropdown.firstElementChild).toBe(echo);
237
+ const result = renderWithProviders(<Select options={many} value="c0" />);
238
+ const { dropdown } = await openTop(result);
239
+ await waitFor(() => expect(Math.abs(valueDelta(dropdown, 0))).toBeLessThanOrEqual(1));
240
+ const before = paddingTop(dropdown);
241
+ dropdown.scrollTop = 50;
242
+ fireEvent.scroll(dropdown);
243
+ await waitFor(() => expect(paddingTop(dropdown)).toBe(before - 50));
244
+ expect(dropdown.scrollTop).toBe(0);
245
+ expect(outerBottom(dropdown)).toBe(768 - 10);
245
246
  });
246
247
  });
247
248
 
@@ -10,6 +10,7 @@ import { Select as TamaguiSelect, Sheet, useMedia, XStack, YStack } from "tamagu
10
10
  import { Button } from "../../Button";
11
11
  import { useViewportGtSm } from "../../FloatingPanel";
12
12
  import { Form } from "../../Form";
13
+ import { formReadableMaxWidth } from "../../formSpacing";
13
14
  import { Select, type SelectOption } from "./index";
14
15
 
15
16
  // tamagui v2 types Select.Content as children + scope + FocusScopeProps only,
@@ -21,6 +22,15 @@ const raiseAbovePortal: Record<string, unknown> = { zIndex: 200000 };
21
22
  const meta: Meta<typeof Select> = {
22
23
  title: "Forms/Select",
23
24
  component: Select,
25
+ // LC-115 READABLE-FORMS: a field sits in a readable form column, so an open
26
+ // list on an iPad or a desktop is the column's width, not the screen's.
27
+ decorators: [
28
+ (Story) => (
29
+ <YStack width="100%" maxWidth={formReadableMaxWidth}>
30
+ <Story />
31
+ </YStack>
32
+ ),
33
+ ],
24
34
  parameters: {
25
35
  docs: {
26
36
  description: {