@feathery/react 2.6.8 → 2.8.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 (311) hide show
  1. package/dist/Form/components/{AIExtractionToast/ExtractionItem.d.ts → ActionToast/ToastItem.d.ts} +6 -6
  2. package/dist/Form/components/ActionToast/ToastItem.d.ts.map +1 -0
  3. package/dist/Form/components/{AIExtractionToast → ActionToast}/icons.d.ts +7 -7
  4. package/dist/Form/components/ActionToast/icons.d.ts.map +1 -0
  5. package/dist/Form/components/ActionToast/index.d.ts +8 -0
  6. package/dist/Form/components/ActionToast/index.d.ts.map +1 -0
  7. package/dist/Form/components/{AIExtractionToast → ActionToast}/useAIExtractionToast.d.ts +72 -64
  8. package/dist/Form/components/ActionToast/useAIExtractionToast.d.ts.map +1 -0
  9. package/dist/Form/components/ActionToast/useEnvelopeGenerationToast.d.ts +20 -0
  10. package/dist/Form/components/ActionToast/useEnvelopeGenerationToast.d.ts.map +1 -0
  11. package/dist/Form/components/DevNavBar.d.ts +1 -1
  12. package/dist/Form/components/ReactPortal.d.ts +2 -2
  13. package/dist/Form/definitions.d.ts +40 -40
  14. package/dist/Form/grid/CalendlyEmbed.d.ts +1 -1
  15. package/dist/Form/grid/Container/index.d.ts +19 -19
  16. package/dist/Form/grid/Element/index.d.ts +2 -2
  17. package/dist/Form/grid/Element/utils/address.d.ts +3 -3
  18. package/dist/Form/grid/Element/utils/utils.d.ts +13 -13
  19. package/dist/Form/grid/StyledContainer/hooks/index.d.ts +20 -20
  20. package/dist/Form/grid/StyledContainer/hooks/useFixedContainer.d.ts +1 -1
  21. package/dist/Form/grid/StyledContainer/index.d.ts +21 -21
  22. package/dist/Form/grid/StyledContainer/styles.d.ts +5 -5
  23. package/dist/Form/grid/StyledContainer/transform.d.ts +4 -4
  24. package/dist/Form/grid/StyledContainer/utils.d.ts +44 -44
  25. package/dist/Form/grid/index.d.ts +2 -2
  26. package/dist/Form/hooks/useCheckButtonAction.d.ts +6 -6
  27. package/dist/Form/hooks/useTrackUserInteraction.d.ts +2 -2
  28. package/dist/Form/index.d.ts +52 -52
  29. package/dist/Form/index.d.ts.map +1 -1
  30. package/dist/Form/logic.d.ts +10 -10
  31. package/dist/Form/tests/testMocks.d.ts +6 -6
  32. package/dist/auth/LoginError.d.ts +3 -3
  33. package/dist/auth/LoginForm.d.ts +29 -29
  34. package/dist/auth/internal/AuthIntegrationInterface.d.ts +31 -31
  35. package/dist/auth/internal/useFormAuth.d.ts +10 -10
  36. package/dist/auth/internal/utils.d.ts +13 -13
  37. package/dist/auth/useAuthClient.d.ts +2 -2
  38. package/dist/auth/utils.d.ts +1 -1
  39. package/dist/elements/basic/ButtonElement.d.ts +2 -2
  40. package/dist/elements/basic/ImageElement.d.ts +3 -3
  41. package/dist/elements/basic/ProgressBarElement/components/SegmentBar.d.ts +2 -2
  42. package/dist/elements/basic/ProgressBarElement/components/SmoothBar.d.ts +2 -2
  43. package/dist/elements/basic/ProgressBarElement/index.d.ts +2 -2
  44. package/dist/elements/basic/TextElement.d.ts +2 -2
  45. package/dist/elements/basic/VideoElement.d.ts +2 -2
  46. package/dist/elements/components/ErrorInput.d.ts +2 -2
  47. package/dist/elements/components/FormControl.d.ts +10 -10
  48. package/dist/elements/components/FormOff.d.ts +10 -10
  49. package/dist/elements/components/InlineTooltip.d.ts +11 -11
  50. package/dist/elements/components/LoaderContainer.d.ts +10 -10
  51. package/dist/elements/components/Lottie.d.ts +2 -2
  52. package/dist/elements/components/Overlay.d.ts +15 -15
  53. package/dist/elements/components/Placeholder.d.ts +1 -1
  54. package/dist/elements/components/QuikFormViewer/transforms/form.d.ts +1 -1
  55. package/dist/elements/components/QuikFormViewer/transforms/header.d.ts +1 -1
  56. package/dist/elements/components/QuikFormViewer/transforms/sidebar.d.ts +6 -6
  57. package/dist/elements/components/QuikFormViewer.d.ts +9 -9
  58. package/dist/elements/components/Spinner.d.ts +4 -4
  59. package/dist/elements/components/TextHoverTooltip.d.ts +8 -8
  60. package/dist/elements/components/TextNodes.d.ts +4 -4
  61. package/dist/elements/components/Tooltip.d.ts +7 -7
  62. package/dist/elements/components/Watermark.d.ts +1 -1
  63. package/dist/elements/components/data/countries.d.ts +14 -14
  64. package/dist/elements/components/data/states/ae.d.ts +5 -5
  65. package/dist/elements/components/data/states/au.d.ts +5 -5
  66. package/dist/elements/components/data/states/br.d.ts +5 -5
  67. package/dist/elements/components/data/states/ca.d.ts +5 -5
  68. package/dist/elements/components/data/states/cl.d.ts +5 -5
  69. package/dist/elements/components/data/states/cn.d.ts +5 -5
  70. package/dist/elements/components/data/states/co.d.ts +5 -5
  71. package/dist/elements/components/data/states/eg.d.ts +5 -5
  72. package/dist/elements/components/data/states/es.d.ts +5 -5
  73. package/dist/elements/components/data/states/gb.d.ts +5 -5
  74. package/dist/elements/components/data/states/gt.d.ts +5 -5
  75. package/dist/elements/components/data/states/hk.d.ts +5 -5
  76. package/dist/elements/components/data/states/id.d.ts +5 -5
  77. package/dist/elements/components/data/states/ie.d.ts +5 -5
  78. package/dist/elements/components/data/states/in.d.ts +5 -5
  79. package/dist/elements/components/data/states/index.d.ts +6 -6
  80. package/dist/elements/components/data/states/it.d.ts +5 -5
  81. package/dist/elements/components/data/states/jp.d.ts +5 -5
  82. package/dist/elements/components/data/states/kr.d.ts +5 -5
  83. package/dist/elements/components/data/states/mx.d.ts +5 -5
  84. package/dist/elements/components/data/states/my.d.ts +5 -5
  85. package/dist/elements/components/data/states/ng.d.ts +5 -5
  86. package/dist/elements/components/data/states/nz.d.ts +5 -5
  87. package/dist/elements/components/data/states/pa.d.ts +5 -5
  88. package/dist/elements/components/data/states/pe.d.ts +5 -5
  89. package/dist/elements/components/data/states/ph.d.ts +5 -5
  90. package/dist/elements/components/data/states/pt.d.ts +5 -5
  91. package/dist/elements/components/data/states/ro.d.ts +5 -5
  92. package/dist/elements/components/data/states/ru.d.ts +5 -5
  93. package/dist/elements/components/data/states/th.d.ts +5 -5
  94. package/dist/elements/components/data/states/us.d.ts +9 -9
  95. package/dist/elements/components/data/states/za.d.ts +5 -5
  96. package/dist/elements/components/icons/Close.d.ts +6 -6
  97. package/dist/elements/components/icons/DiagonalArrow.d.ts +5 -5
  98. package/dist/elements/components/icons/DownloadIcon.d.ts +4 -4
  99. package/dist/elements/components/icons/FileUpload.d.ts +1 -1
  100. package/dist/elements/components/icons/FormClosed.d.ts +5 -5
  101. package/dist/elements/components/icons/Heart.d.ts +1 -1
  102. package/dist/elements/components/icons/Help.d.ts +4 -4
  103. package/dist/elements/components/icons/HideEyeIcon.d.ts +5 -5
  104. package/dist/elements/components/icons/LeftChevron.d.ts +1 -1
  105. package/dist/elements/components/icons/RatingStar.d.ts +1 -1
  106. package/dist/elements/components/icons/RightChevron.d.ts +1 -1
  107. package/dist/elements/components/icons/ShowEyeIcon.d.ts +5 -5
  108. package/dist/elements/components/icons/Warning.d.ts +5 -5
  109. package/dist/elements/components/icons/index.d.ts +11 -11
  110. package/dist/elements/components/skeletons/FieldSkeleton.d.ts +7 -7
  111. package/dist/elements/components/useBorder.d.ts +21 -21
  112. package/dist/elements/components/useTextEdit.d.ts +6 -5
  113. package/dist/elements/components/useTextEdit.d.ts.map +1 -1
  114. package/dist/elements/fields/AddressLine1Field/index.d.ts +4 -4
  115. package/dist/elements/fields/AddressLine1Field/tests/test-utils.d.ts +34 -34
  116. package/dist/elements/fields/AddressLine1Field/utils.d.ts +2 -2
  117. package/dist/elements/fields/ButtonGroupField/index.d.ts +2 -2
  118. package/dist/elements/fields/ButtonGroupField/tests/test-utils.d.ts +46 -46
  119. package/dist/elements/fields/CheckboxField/index.d.ts +5 -5
  120. package/dist/elements/fields/CheckboxField/tests/test-utils.d.ts +20 -20
  121. package/dist/elements/fields/CheckboxGroupField/index.d.ts +2 -2
  122. package/dist/elements/fields/CheckboxGroupField/tests/test-utils.d.ts +60 -60
  123. package/dist/elements/fields/ColorPickerField/index.d.ts +2 -2
  124. package/dist/elements/fields/ColorPickerField/tests/test-utils.d.ts +21 -21
  125. package/dist/elements/fields/CustomField/Status.d.ts +8 -8
  126. package/dist/elements/fields/CustomField/index.d.ts +3 -3
  127. package/dist/elements/fields/CustomField/template.d.ts +1 -1
  128. package/dist/elements/fields/CustomField/useCustomComponentIframe.d.ts +15 -15
  129. package/dist/elements/fields/DateSelectorField/index.d.ts +22 -22
  130. package/dist/elements/fields/DateSelectorField/index.d.ts.map +1 -1
  131. package/dist/elements/fields/DateSelectorField/styles.d.ts +4 -4
  132. package/dist/elements/fields/DateSelectorField/tests/test-utils.d.ts +74 -74
  133. package/dist/elements/fields/DateSelectorField/useDateLocale.d.ts +7 -7
  134. package/dist/elements/fields/DateSelectorField/utils.d.ts +3 -3
  135. package/dist/elements/fields/DropdownField/index.d.ts +1 -1
  136. package/dist/elements/fields/DropdownField/tests/test-utils.d.ts +28 -28
  137. package/dist/elements/fields/DropdownMultiField/DropdownMultiFieldSelectComponents.d.ts +8 -8
  138. package/dist/elements/fields/DropdownMultiField/createDropdownSelect.d.ts +190 -190
  139. package/dist/elements/fields/DropdownMultiField/index.d.ts +1 -1
  140. package/dist/elements/fields/DropdownMultiField/optionNormalization.d.ts +9 -9
  141. package/dist/elements/fields/DropdownMultiField/selectStyles.d.ts +12 -12
  142. package/dist/elements/fields/DropdownMultiField/tests/test-utils.d.ts +47 -47
  143. package/dist/elements/fields/DropdownMultiField/types.d.ts +49 -49
  144. package/dist/elements/fields/DropdownMultiField/useCollapsedSelectionManager.d.ts +46 -46
  145. package/dist/elements/fields/DropdownMultiField/useCollapsedValuesMeasurement.d.ts +19 -19
  146. package/dist/elements/fields/DropdownMultiField/useDropdownInteractions.d.ts +46 -46
  147. package/dist/elements/fields/DropdownMultiField/useDropdownOptions.d.ts +24 -24
  148. package/dist/elements/fields/DropdownMultiField/useSelectProps.d.ts +112 -112
  149. package/dist/elements/fields/FileUploadField/index.d.ts +2 -2
  150. package/dist/elements/fields/FileUploadField/tests/test-utils.d.ts +10 -10
  151. package/dist/elements/fields/MatrixField/index.d.ts +2 -2
  152. package/dist/elements/fields/MatrixField/tests/test-utils.d.ts +67 -67
  153. package/dist/elements/fields/PasswordField/index.d.ts +4 -4
  154. package/dist/elements/fields/PasswordField/tests/test-utils.d.ts +30 -30
  155. package/dist/elements/fields/PaymentMethodField.d.ts +4 -4
  156. package/dist/elements/fields/PhoneField/CountryDropdown.d.ts +3 -3
  157. package/dist/elements/fields/PhoneField/exampleNumbers.d.ts +2 -2
  158. package/dist/elements/fields/PhoneField/index.d.ts +4 -4
  159. package/dist/elements/fields/PhoneField/tests/test-utils.d.ts +86 -86
  160. package/dist/elements/fields/PhoneField/timeZoneCountries.d.ts +4 -4
  161. package/dist/elements/fields/PhoneField/validation.d.ts +3 -3
  162. package/dist/elements/fields/PinInputField/index.d.ts +2 -2
  163. package/dist/elements/fields/PinInputField/tests/test-utils.d.ts +79 -79
  164. package/dist/elements/fields/PinInputField/useOTPListener.d.ts +1 -1
  165. package/dist/elements/fields/QRScanner/constants.d.ts +14 -14
  166. package/dist/elements/fields/QRScanner/hooks/use-device-rotation.d.ts +11 -11
  167. package/dist/elements/fields/QRScanner/index.d.ts +2 -2
  168. package/dist/elements/fields/QRScanner/qrLoader.d.ts +2 -2
  169. package/dist/elements/fields/QRScanner/utils/local-storage.d.ts +5 -5
  170. package/dist/elements/fields/QRScanner/utils/select-camera.d.ts +9 -9
  171. package/dist/elements/fields/QRScanner/utils/supports-zoom.d.ts +8 -8
  172. package/dist/elements/fields/RadioButtonGroupField/index.d.ts +2 -2
  173. package/dist/elements/fields/RadioButtonGroupField/tests/test-utils.d.ts +55 -55
  174. package/dist/elements/fields/RatingField/index.d.ts +1 -1
  175. package/dist/elements/fields/RatingField/tests/test-utils.d.ts +22 -22
  176. package/dist/elements/fields/SignatureField/components/SignatureCanvas.d.ts +22 -22
  177. package/dist/elements/fields/SignatureField/components/SignatureModal.d.ts +12 -12
  178. package/dist/elements/fields/SignatureField/components/utils.d.ts +10 -10
  179. package/dist/elements/fields/SignatureField/index.d.ts +3 -3
  180. package/dist/elements/fields/SignatureField/translation.d.ts +17 -17
  181. package/dist/elements/fields/SliderField/index.d.ts +1 -1
  182. package/dist/elements/fields/SliderField/styles.d.ts +3 -3
  183. package/dist/elements/fields/SliderField/tests/test-utils.d.ts +22 -22
  184. package/dist/elements/fields/TextArea/index.d.ts +4 -4
  185. package/dist/elements/fields/TextArea/tests/test-utils.d.ts +10 -10
  186. package/dist/elements/fields/TextField/TextAutocomplete.d.ts +15 -15
  187. package/dist/elements/fields/TextField/index.d.ts +4 -4
  188. package/dist/elements/fields/TextField/index.d.ts.map +1 -1
  189. package/dist/elements/fields/TextField/tests/test-utils.d.ts +10 -10
  190. package/dist/elements/fields/index.d.ts +27 -26
  191. package/dist/elements/fields/index.d.ts.map +1 -1
  192. package/dist/elements/fields/shared/tests/field-test-utils.d.ts +51 -51
  193. package/dist/elements/index.d.ts +36 -36
  194. package/dist/elements/styles.d.ts +64 -64
  195. package/dist/elements/utils/fieldNormalization.d.ts +12 -12
  196. package/dist/fthry_FormControl.CPHJNRoq.js +16 -0
  197. package/dist/fthry_InlineTooltip.AGcWhuhV.js +53 -0
  198. package/dist/fthry_Overlay.X0blINpo.js +228 -0
  199. package/dist/fthry_PaymentMethodField.DrAgJBPV.js +928 -0
  200. package/dist/fthry_Placeholder.DLtEoCLC.js +14 -0
  201. package/dist/fthry_ShowEyeIcon.CkEvtp1W.js +13 -0
  202. package/dist/fthry_index.BFrZ_89I.js +251 -0
  203. package/dist/fthry_index.BVM6mIvX.js +73 -0
  204. package/dist/fthry_index.B_soCJRW.js +1193 -0
  205. package/dist/fthry_index.BrWMLV_p.js +35 -0
  206. package/dist/fthry_index.CFbW8L20.js +42 -0
  207. package/dist/fthry_index.CWt9W3bv.js +95 -0
  208. package/dist/fthry_index.Cfk_0HTE.js +2000 -0
  209. package/dist/fthry_index.CjUraQwq.js +888 -0
  210. package/dist/fthry_index.D99W7p5a.js +293 -0
  211. package/dist/fthry_index.DAGDZi5r.js +97 -0
  212. package/dist/fthry_index.DV1PqB3d.js +138 -0
  213. package/dist/fthry_index.DWyfWu2d.js +216 -0
  214. package/dist/fthry_index.DaFYDmA_.js +15921 -0
  215. package/dist/fthry_index.DghPMqyH.js +8166 -0
  216. package/dist/fthry_index.DodXvrXD.js +98 -0
  217. package/dist/fthry_index.DohTu1v2.js +46 -0
  218. package/dist/fthry_index.F6BXSHA5.js +61120 -0
  219. package/dist/fthry_index.KRksei8j.js +513 -0
  220. package/dist/fthry_index.dYsdCe_k.js +1427 -0
  221. package/dist/fthry_index.lC0Xyh-d.js +1162 -0
  222. package/dist/fthry_index.mE9gZkgT.js +55 -0
  223. package/dist/fthry_index.rtVAtURz.js +1452 -0
  224. package/dist/fthry_index.uvWVc7KJ.js +131 -0
  225. package/dist/fthry_input.Bfzc5hmV.js +3779 -0
  226. package/dist/fthry_script.cAr9Z1Ke.js +157 -0
  227. package/dist/fthry_styles.yVoSvBEy.js +1654 -0
  228. package/dist/fthry_useElementSize.D3n9DgQ-.js +51 -0
  229. package/dist/fthry_useSalesforceSync.prWuB8V7.js +44 -0
  230. package/dist/fthry_webfontloader.DyMoLGZ3.js +57 -0
  231. package/dist/hooks/router.d.ts +14 -14
  232. package/dist/hooks/useElementSize.d.ts +7 -7
  233. package/dist/hooks/useLoader.d.ts +35 -35
  234. package/dist/hooks/useMounted.d.ts +2 -2
  235. package/dist/hooks/usePollFuserData.d.ts +1 -1
  236. package/dist/hooks/usePrevious.d.ts +2 -2
  237. package/dist/hooks/useSalesforceSync.d.ts +10 -10
  238. package/dist/index.d.ts +150 -149
  239. package/dist/index.d.ts.map +1 -1
  240. package/dist/index.js +9 -1
  241. package/dist/integrations/alloy.d.ts +2 -2
  242. package/dist/integrations/amplitude.d.ts +1 -1
  243. package/dist/integrations/argyle.d.ts +2 -2
  244. package/dist/integrations/calendly.d.ts +2 -2
  245. package/dist/integrations/firebase.d.ts +42 -42
  246. package/dist/integrations/flinks/index.d.ts +10 -10
  247. package/dist/integrations/flinks/utils.d.ts +12 -12
  248. package/dist/integrations/googleAnalytics.d.ts +3 -3
  249. package/dist/integrations/googleTagManager.d.ts +1 -1
  250. package/dist/integrations/heap.d.ts +2 -2
  251. package/dist/integrations/intercom.d.ts +2 -2
  252. package/dist/integrations/mixpanel.d.ts +2 -2
  253. package/dist/integrations/persona.d.ts +2 -2
  254. package/dist/integrations/plaid.d.ts +2 -2
  255. package/dist/integrations/recaptcha.d.ts +2 -2
  256. package/dist/integrations/rudderstack.d.ts +3 -3
  257. package/dist/integrations/schwab.d.ts +1 -1
  258. package/dist/integrations/segment.d.ts +1 -1
  259. package/dist/integrations/stripe/Cart.d.ts +19 -19
  260. package/dist/integrations/stripe/SimplifiedProduct.d.ts +39 -39
  261. package/dist/integrations/stripe/index.d.ts +1 -1
  262. package/dist/integrations/stripe/stripe.d.ts +97 -97
  263. package/dist/integrations/stytch.d.ts +19 -19
  264. package/dist/integrations/trustedform.d.ts +2 -2
  265. package/dist/integrations/utils.d.ts +14 -14
  266. package/dist/setupTests.d.ts +1 -1
  267. package/dist/types/Form.d.ts +80 -80
  268. package/dist/utils/DangerouslySetHTMLContent.d.ts +2 -2
  269. package/dist/utils/ShadowDomHtmlContent.d.ts +8 -8
  270. package/dist/utils/array.d.ts +11 -11
  271. package/dist/utils/browser.d.ts +23 -23
  272. package/dist/utils/callbackQueue.d.ts +10 -10
  273. package/dist/utils/document.d.ts +1 -1
  274. package/dist/utils/elementActions.d.ts +55 -55
  275. package/dist/utils/entities/Collaborator.d.ts +14 -14
  276. package/dist/utils/entities/Field.d.ts +129 -129
  277. package/dist/utils/error.d.ts +13 -13
  278. package/dist/utils/featheryClient/index.d.ts +103 -103
  279. package/dist/utils/featheryClient/integrationClient.d.ts +114 -114
  280. package/dist/utils/featheryClient/utils.d.ts +1 -1
  281. package/dist/utils/fieldHelperFunctions.d.ts +70 -70
  282. package/dist/utils/formContext.d.ts +104 -104
  283. package/dist/utils/formHelperFunctions.d.ts +44 -44
  284. package/dist/utils/hideAndRepeats.d.ts +27 -27
  285. package/dist/utils/hydration.d.ts +14 -14
  286. package/dist/utils/image.d.ts +39 -39
  287. package/dist/utils/init.d.ts +59 -59
  288. package/dist/utils/init.d.ts.map +1 -1
  289. package/dist/utils/interactionState.d.ts +4 -4
  290. package/dist/utils/internalState.d.ts +91 -91
  291. package/dist/utils/logic.d.ts +50 -50
  292. package/dist/utils/offlineRequestHandler.d.ts +94 -94
  293. package/dist/utils/polyfills.d.ts +2 -2
  294. package/dist/utils/primitives.d.ts +14 -14
  295. package/dist/utils/random.d.ts +1 -1
  296. package/dist/utils/repeat.d.ts +38 -38
  297. package/dist/utils/sensitiveActions.d.ts +7 -7
  298. package/dist/utils/stepHelperFunctions.d.ts +22 -22
  299. package/dist/utils/styles.d.ts +5 -5
  300. package/dist/utils/validation.d.ts +58 -58
  301. package/package.json +18 -5
  302. package/umd/466.e3456c8b3407ad04ba56.js +1 -0
  303. package/umd/{DateSelectorField.b98c0ecb80f56e65cc69.js → DateSelectorField.bd5646949de71f571d04.js} +1 -1
  304. package/umd/{TextField.a3d8d42f6f8236d00f83.js → TextField.5a5296fe3ea60c4459f2.js} +1 -1
  305. package/umd/index.js +1 -1
  306. package/dist/Form/components/AIExtractionToast/ExtractionItem.d.ts.map +0 -1
  307. package/dist/Form/components/AIExtractionToast/icons.d.ts.map +0 -1
  308. package/dist/Form/components/AIExtractionToast/index.d.ts +0 -9
  309. package/dist/Form/components/AIExtractionToast/index.d.ts.map +0 -1
  310. package/dist/Form/components/AIExtractionToast/useAIExtractionToast.d.ts.map +0 -1
  311. package/umd/796.e66d52ea21ef09c4eeaa.js +0 -1
@@ -0,0 +1,293 @@
1
+ import { j as jsxs, a as __assign, b as jsx, D as DROPDOWN_Z_INDEX, _ as __read, u as useBorder, ar as getFieldValue, as as stringifyWithNull, h as hoverStylesGuard, i as iosScrollOnFocus, k as FORM_Z_INDEX, r as resetStyles, at as emailPatternStr } from './fthry_index.F6BXSHA5.js';
2
+ import { memo, useRef, useState } from 'react';
3
+ import { P as Placeholder } from './fthry_Placeholder.DLtEoCLC.js';
4
+ import { I as InlineTooltip } from './fthry_InlineTooltip.AGcWhuhV.js';
5
+ import { O as Overlay } from './fthry_Overlay.X0blINpo.js';
6
+ import { u as useElementSize } from './fthry_useElementSize.D3n9DgQ-.js';
7
+ import { S as ShowEyeIcon, a as ShowEyeIcon$1 } from './fthry_ShowEyeIcon.CkEvtp1W.js';
8
+ import { a as IMaskInput } from './fthry_input.Bfzc5hmV.js';
9
+ import 'react/jsx-runtime';
10
+ import 'react-dom/client';
11
+ import 'stream';
12
+ import 'events';
13
+ import 'buffer';
14
+ import 'util';
15
+ import 'react-dom';
16
+ import './fthry_index.B_soCJRW.js';
17
+
18
+ function TextAutocomplete(_a) {
19
+ var _b = _a.allOptions, allOptions = _b === void 0 ? [] : _b, showOptions = _a.showOptions, _c = _a.onSelect, onSelect = _c === void 0 ? function () { } : _c, _d = _a.onHide, onHide = _d === void 0 ? function () { } : _d, _e = _a.onInputFocus, onInputFocus = _e === void 0 ? function () { } : _e, _f = _a.value, value = _f === void 0 ? '' : _f, containerRef = _a.containerRef, responsiveStyles = _a.responsiveStyles, listItemRef = _a.listItemRef, children = _a.children;
20
+ var options = allOptions.filter(function (opt) {
21
+ return opt.toLowerCase().includes(value.toLowerCase());
22
+ });
23
+ var triggerRef = useRef(null);
24
+ var dropdownWidth = useElementSize(triggerRef).width;
25
+ if (allOptions.length === 0)
26
+ return children;
27
+ return (jsxs("div", __assign({ ref: triggerRef, css: { height: '100%', width: '100%' } }, { children: [children, options.length > 0 && showOptions && (jsx(Overlay, __assign({ targetRef: triggerRef, containerRef: containerRef, show: true, placement: 'bottom-start', onHide: onHide }, { children: jsx("ul", __assign({ css: __assign({ zIndex: DROPDOWN_Z_INDEX, listStyleType: 'none', padding: 0, margin: 0, maxHeight: '210px', overflowY: 'scroll', overflowX: 'auto', width: dropdownWidth !== undefined ? "".concat(dropdownWidth, "px") : '100%', backgroundColor: 'white', cursor: 'pointer', boxShadow: '0 0 4px rgb(0 0 0 / 15%)' }, responsiveStyles.getTarget('dropdown')) }, { children: options.map(function (opt, index) { return (jsx("li", __assign({ css: {
28
+ padding: '8px 14px',
29
+ transition: '0.1s ease all',
30
+ '&:hover': { backgroundColor: '#e6e6e633' },
31
+ '&:focus-visible': {
32
+ outline: 'none',
33
+ backgroundColor: '#e6e6e644'
34
+ }
35
+ }, tabIndex: 0, ref: function (ref) {
36
+ listItemRef.current[index] = ref;
37
+ }, onClick: function () { return onSelect(opt); }, onKeyDown: function (e) {
38
+ var _a, _b;
39
+ var disable = function () {
40
+ e.preventDefault();
41
+ e.stopPropagation();
42
+ };
43
+ if (e.key === 'Enter') {
44
+ disable();
45
+ onSelect(opt);
46
+ }
47
+ else if (['ArrowDown', 'ArrowRight'].includes(e.key)) {
48
+ disable();
49
+ (_a = listItemRef.current[index].nextSibling) === null || _a === void 0 ? void 0 : _a.focus();
50
+ }
51
+ else if (['ArrowUp', 'ArrowLeft'].includes(e.key)) {
52
+ disable();
53
+ if (index === 0)
54
+ onInputFocus();
55
+ else
56
+ (_b = listItemRef.current[index].previousSibling) === null || _b === void 0 ? void 0 : _b.focus();
57
+ }
58
+ }, onBlur: function (e) {
59
+ if (!e.relatedTarget ||
60
+ !listItemRef.current.some(function (item) { return item === e.relatedTarget; })) {
61
+ onHide();
62
+ }
63
+ } }, { children: opt }), "".concat(opt, "-").concat(index))); }) })) })))] })));
64
+ }
65
+ var TextAutocomplete$1 = memo(TextAutocomplete);
66
+
67
+ var DEFAULT_LENGTH = 1024; // Default limit on backend
68
+ var MAX_FIELD_LENGTHS = {
69
+ text_area: 16384,
70
+ url: 256,
71
+ gmap_zip: 10
72
+ };
73
+ var maxFieldLength = function (type) { var _a; return (_a = MAX_FIELD_LENGTHS[type]) !== null && _a !== void 0 ? _a : DEFAULT_LENGTH; };
74
+ function escapeDefinitionChars(str) {
75
+ return (str !== null && str !== void 0 ? str : '')
76
+ .replaceAll('0', '\\0')
77
+ .replaceAll('a', '\\a')
78
+ .replaceAll('b', '\\b')
79
+ .replaceAll('*', '\\*');
80
+ }
81
+ function constraintChar(allowed) {
82
+ switch (allowed) {
83
+ case 'letters':
84
+ return 'a';
85
+ case 'alphanumeric':
86
+ return 'b';
87
+ case 'alphaspace':
88
+ return 'c';
89
+ case 'digits':
90
+ return '0';
91
+ default:
92
+ return '*';
93
+ }
94
+ }
95
+ function getTextFieldMask(servar) {
96
+ var data = servar.metadata;
97
+ var prefix = escapeDefinitionChars(data.prefix);
98
+ var suffix = escapeDefinitionChars(data.suffix);
99
+ var mask = '';
100
+ if (data.mask)
101
+ mask = data.mask;
102
+ else {
103
+ var allowed = data.allowed_characters;
104
+ if (servar.type === 'gmap_zip' && !allowed)
105
+ allowed = 'alphaspace';
106
+ var definitionChar = constraintChar(allowed);
107
+ var numOptional = maxFieldLength(servar.type) - prefix.length - suffix.length;
108
+ if (servar.max_length)
109
+ numOptional = Math.min(servar.max_length, numOptional);
110
+ mask = "[".concat(definitionChar.repeat(numOptional), "]");
111
+ }
112
+ // Approximate dynamic input by making each character optional
113
+ return "".concat(prefix).concat(mask).concat(suffix);
114
+ }
115
+ function getMaskProps(servar, value, showPassword) {
116
+ var _a, _b, _c;
117
+ var maskProps;
118
+ // Max length included in mask for validation of typed inputs
119
+ var maxLength = (_a = servar.max_length) !== null && _a !== void 0 ? _a : maxFieldLength(servar.type);
120
+ switch (servar.type) {
121
+ case 'integer_field':
122
+ maskProps = {
123
+ mask: 'num',
124
+ blocks: {
125
+ num: {
126
+ mask: Number,
127
+ radix: '.',
128
+ thousandsSeparator: ',',
129
+ scale: 2,
130
+ // Larger numbers get converted to scientific notation when sent to backend
131
+ max: (_b = servar.max_length) !== null && _b !== void 0 ? _b : Number.MAX_SAFE_INTEGER,
132
+ min: Math.max(0, (_c = servar.min_length) !== null && _c !== void 0 ? _c : 0)
133
+ }
134
+ },
135
+ value: value.toString()
136
+ };
137
+ if (servar.format === 'currency') {
138
+ maskProps.mask = '$num';
139
+ }
140
+ break;
141
+ case 'ssn':
142
+ maskProps = {
143
+ // mask uses ∗ character which is like * but centered in inputs
144
+ mask: servar.metadata.last_four_digits
145
+ ? '∗∗∗ - ∗∗ - 0000'
146
+ : '000 - 00 - 0000',
147
+ // displayChar allows for secure entry without using password input
148
+ // this prevents browser password manager from triggering on SSN fields
149
+ displayChar: showPassword ? undefined : '∗',
150
+ placeholderChar: servar.metadata.last_four_digits ? ' ' : undefined,
151
+ lazy: !servar.metadata.last_four_digits
152
+ };
153
+ break;
154
+ case 'email':
155
+ case 'text_area':
156
+ case 'url':
157
+ maskProps = { mask: new RegExp("^.{0,".concat(maxLength, "}$")), maxLength: maxLength };
158
+ break;
159
+ default:
160
+ if (servar.metadata.mask)
161
+ maxLength = undefined;
162
+ maskProps = {
163
+ mask: getTextFieldMask(servar),
164
+ definitions: {
165
+ b: /[a-zA-Z0-9]/,
166
+ c: /[a-zA-Z0-9 ]/
167
+ },
168
+ maxLength: maxLength
169
+ };
170
+ break;
171
+ }
172
+ return __assign({ lazy: false, unmask: !servar.metadata.save_mask }, maskProps);
173
+ }
174
+ function getInputProps(servar, options, autoComplete) {
175
+ var _a;
176
+ var constraints = {
177
+ minLength: servar.min_length
178
+ };
179
+ // Max length included here for validation of programmatically set
180
+ // inputs
181
+ var maxLength = (_a = servar.max_length) !== null && _a !== void 0 ? _a : maxFieldLength(servar.type);
182
+ if (options.length > 0)
183
+ constraints.autoComplete = 'off';
184
+ var meta = servar.metadata;
185
+ switch (servar.type) {
186
+ case 'integer_field':
187
+ return { inputMode: 'decimal' };
188
+ case 'email':
189
+ if (autoComplete && !constraints.autoComplete) {
190
+ constraints.autoComplete = 'email';
191
+ }
192
+ return __assign({ type: 'email', pattern: emailPatternStr, maxLength: maxLength }, constraints);
193
+ case 'gmap_zip':
194
+ if (autoComplete && !constraints.autoComplete) {
195
+ constraints.autoComplete = 'postal-code';
196
+ }
197
+ return __assign(__assign({}, constraints), { maxLength: maxLength, inputMode: (meta.allowed_characters === 'digits'
198
+ ? 'numeric'
199
+ : 'text') });
200
+ case 'url':
201
+ if (autoComplete && !constraints.autoComplete) {
202
+ constraints.autoComplete = 'url';
203
+ constraints.maxLength = maxLength;
204
+ }
205
+ return constraints;
206
+ case 'ssn':
207
+ return __assign({ inputMode: 'numeric' }, constraints);
208
+ default:
209
+ constraints.maxLength = maxLength;
210
+ if (meta.custom_autocomplete && !constraints.autoComplete)
211
+ constraints.autoComplete = meta.custom_autocomplete;
212
+ if (meta.number_keypad || meta.allowed_characters === 'digits') {
213
+ return __assign({ inputMode: 'numeric' }, constraints);
214
+ }
215
+ return constraints;
216
+ }
217
+ }
218
+ var EXIT_DELAY_TIME = 200;
219
+ function TextField(_a) {
220
+ var _b;
221
+ var _c;
222
+ var element = _a.element, responsiveStyles = _a.responsiveStyles, fieldLabel = _a.fieldLabel, _d = _a.elementProps, elementProps = _d === void 0 ? {} : _d, _e = _a.required, required = _e === void 0 ? false : _e, _f = _a.disabled, disabled = _f === void 0 ? false : _f, autoComplete = _a.autoComplete, editMode = _a.editMode, _g = _a.onAccept, onAccept = _g === void 0 ? function () { } : _g, _h = _a.onEnter, onEnter = _h === void 0 ? function () { } : _h, _j = _a.setRef, setRef = _j === void 0 ? function () { } : _j, inlineError = _a.inlineError, _k = _a.repeatIndex, repeatIndex = _k === void 0 ? null : _k, children = _a.children;
223
+ var _l = __read(useState(false), 2), showAutocomplete = _l[0], setShowAutocomplete = _l[1];
224
+ // Hide SSNs by default
225
+ var _m = __read(useState(false), 2), showPassword = _m[0], setShowPassword = _m[1];
226
+ var _o = useBorder({
227
+ element: element,
228
+ error: inlineError,
229
+ breakpoint: responsiveStyles.getMobileBreakpoint()
230
+ }), borderStyles = _o.borderStyles, customBorder = _o.customBorder, borderId = _o.borderId;
231
+ var containerRef = useRef(null);
232
+ var listItemRef = useRef([]);
233
+ var inputRef = useRef(null);
234
+ var fieldVal = getFieldValue(element).value;
235
+ var rawValue = stringifyWithNull(fieldVal);
236
+ var servar = element.servar;
237
+ var options = ((_c = servar.metadata.options) !== null && _c !== void 0 ? _c : []).filter(function (opt) { return opt; });
238
+ var spacing = element.properties.tooltipText ? 30 : 8;
239
+ return (jsxs("div", __assign({ ref: containerRef, css: __assign({ maxWidth: '100%', width: '100%', height: '100%', position: 'relative', pointerEvents: editMode ? 'none' : 'auto' }, responsiveStyles.getTarget('fc')) }, elementProps, { children: [children, fieldLabel, jsxs("div", __assign({ css: __assign(__assign(__assign({ position: 'relative', width: '100%', whiteSpace: 'nowrap',
240
+ // Prevent placeholder overflow
241
+ overflowX: 'clip' }, responsiveStyles.getTarget('sub-fc')), (disabled ? responsiveStyles.getTarget('disabled') : {})), { '&:focus-within': __assign(__assign({}, responsiveStyles.getTarget('active')), borderStyles.active), '&:hover': hoverStylesGuard(disabled
242
+ ? {}
243
+ : __assign(__assign({}, responsiveStyles.getTarget('hover')), borderStyles.hover)) }) }, { children: [jsx(TextAutocomplete$1, __assign({ allOptions: options, value: rawValue, showOptions: showAutocomplete, onSelect: function (option) {
244
+ var _a, _b, _c;
245
+ onAccept(option, {});
246
+ setShowAutocomplete(false);
247
+ (_c = (_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) === null || _b === void 0 ? void 0 : _b.focus) === null || _c === void 0 ? void 0 : _c.call(_b);
248
+ }, responsiveStyles: responsiveStyles, containerRef: containerRef, listItemRef: listItemRef, onHide: function () { return setShowAutocomplete(false); }, onInputFocus: function () { var _a, _b, _c; return (_c = (_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) === null || _b === void 0 ? void 0 : _b.focus) === null || _c === void 0 ? void 0 : _c.call(_b); } }, { children: jsx(IMaskInput, __assign({ id: servar.key, name: servar.key, ref: inputRef, css: __assign(__assign(__assign({ position: 'relative',
249
+ // Position input above the border div
250
+ zIndex: FORM_Z_INDEX, height: '100%', width: '100%', border: 'none', margin: 0, backgroundColor: 'transparent' }, resetStyles), responsiveStyles.getTarget('field')), (_b = { '&:focus': responsiveStyles.getTarget('field')['&:focus'] }, _b["&:focus ~ #".concat(borderId)] = Object.values(borderStyles.active)[0], _b['&:not(:focus)'] = rawValue || !element.properties.placeholder
251
+ ? {}
252
+ : { color: 'transparent !important' }, _b)), required: required, disabled: disabled, placeholder: '', value: rawValue, "aria-label": element.properties.aria_label,
253
+ // Not on focus because if error is showing, it will
254
+ // keep triggering dropdown after blur
255
+ onKeyDown: function (e) {
256
+ if (e.key === 'Enter')
257
+ onEnter(e);
258
+ else if (options.length) {
259
+ if (!rawValue && ['Backspace', 'Delete'].includes(e.key))
260
+ return;
261
+ if (['ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(e.key))
262
+ return;
263
+ setShowAutocomplete(e.key !== 'Escape');
264
+ if (e.key === 'ArrowDown') {
265
+ setTimeout(function () {
266
+ var _a;
267
+ return (_a = listItemRef.current[0]) === null || _a === void 0 ? void 0 : _a.focus({
268
+ preventScroll: true
269
+ });
270
+ }, 0);
271
+ }
272
+ }
273
+ }, onBlur: function (e) {
274
+ if (e.relatedTarget &&
275
+ listItemRef.current.some(function (item) { return item === e.relatedTarget; }))
276
+ return;
277
+ if (options.length > 0) {
278
+ // Blur may be triggered by option selection, and option
279
+ // click logic may need to be run first. So delay option removal.
280
+ setTimeout(function () { return setShowAutocomplete(false); }, EXIT_DELAY_TIME);
281
+ }
282
+ }, onFocus: iosScrollOnFocus, inputRef: setRef }, getInputProps(servar, options, autoComplete === 'on'), getMaskProps(servar, rawValue, showPassword), { onAccept: onAccept })) })), servar.type === 'ssn' && rawValue && (jsx("div", __assign({ css: {
283
+ position: 'absolute',
284
+ cursor: 'pointer',
285
+ insetInlineEnd: "".concat(spacing, "px"),
286
+ // We need to subtract half the height of the icon to center it
287
+ top: 'calc(50% - 12px)',
288
+ zIndex: FORM_Z_INDEX
289
+ }, onClick: function () { return setShowPassword(function (prev) { return !prev; }); }, "aria-label": 'Toggle SSN visibility' }, { children: showPassword ? jsx(ShowEyeIcon, {}) : jsx(ShowEyeIcon$1, {}) }))), customBorder, jsx(Placeholder, { value: rawValue, element: element, responsiveStyles: responsiveStyles, repeatIndex: repeatIndex }), jsx(InlineTooltip, { containerRef: containerRef, id: element.id, text: element.properties.tooltipText, responsiveStyles: responsiveStyles, repeat: element.repeat })] }))] })));
290
+ }
291
+ var index = memo(TextField);
292
+
293
+ export { index as default };
@@ -0,0 +1,97 @@
1
+ import { j as jsxs, a as __assign, b as jsx, i as iosScrollOnFocus, r as resetStyles } from './fthry_index.F6BXSHA5.js';
2
+ import { useRef, useMemo } from 'react';
3
+ import { F as FormControl } from './fthry_FormControl.CPHJNRoq.js';
4
+ import { applyCheckableInputStyles, composeCheckableInputStyle, applyHeightWidthMarginByFontSize } from './fthry_index.DV1PqB3d.js';
5
+ import { I as InlineTooltip } from './fthry_InlineTooltip.AGcWhuhV.js';
6
+ import { u as useSalesforceSync } from './fthry_useSalesforceSync.prWuB8V7.js';
7
+ import 'react/jsx-runtime';
8
+ import 'react-dom/client';
9
+ import 'stream';
10
+ import 'events';
11
+ import 'buffer';
12
+ import 'util';
13
+ import 'react-dom';
14
+ import './fthry_Overlay.X0blINpo.js';
15
+
16
+ var applyCheckboxGroupStyles = function (element, responsiveStyles) {
17
+ responsiveStyles.addTargets('checkboxGroup');
18
+ applyHeightWidthMarginByFontSize(responsiveStyles, 'checkboxGroup');
19
+ return responsiveStyles;
20
+ };
21
+ function CheckboxGroupField(_a) {
22
+ var _b, _c;
23
+ var element = _a.element, responsiveStyles = _a.responsiveStyles, fieldLabel = _a.fieldLabel, _d = _a.fieldVal, fieldVal = _d === void 0 ? [] : _d, _e = _a.otherVal, otherVal = _e === void 0 ? '' : _e, _f = _a.repeatIndex, repeatIndex = _f === void 0 ? null : _f, editMode = _a.editMode, _g = _a.onChange, onChange = _g === void 0 ? function () { } : _g, _h = _a.onOtherChange, onOtherChange = _h === void 0 ? function () { } : _h, _j = _a.onEnter, onEnter = _j === void 0 ? function () { } : _j, _k = _a.elementProps, elementProps = _k === void 0 ? {} : _k, _l = _a.disabled, disabled = _l === void 0 ? false : _l, children = _a.children;
24
+ var servar = element.servar;
25
+ var _m = useSalesforceSync(servar.metadata.salesforce_sync, editMode), dynamicOptions = _m.dynamicOptions, loadingDynamicOptions = _m.loadingDynamicOptions, shouldSalesforceSync = _m.shouldSalesforceSync;
26
+ var otherChecked = fieldVal.includes(otherVal);
27
+ var otherLabel = (_b = servar.metadata.other_label) !== null && _b !== void 0 ? _b : 'Other';
28
+ var containerRef = useRef(null);
29
+ var styles = useMemo(function () {
30
+ applyCheckableInputStyles(element, responsiveStyles);
31
+ applyCheckboxGroupStyles(element, responsiveStyles);
32
+ responsiveStyles.addTargets('row-container');
33
+ responsiveStyles.apply('row-container', 'row_separation', function (a) {
34
+ return { gap: "".concat(a || 5, "px") };
35
+ });
36
+ responsiveStyles.apply('row-container', 'option_direction', function (a) {
37
+ return { flexDirection: a || 'column' };
38
+ });
39
+ return responsiveStyles;
40
+ }, [responsiveStyles]);
41
+ var labels = servar.metadata.option_labels;
42
+ var tooltips = (_c = servar.metadata.option_tooltips) !== null && _c !== void 0 ? _c : [];
43
+ var isOptionDisabled = function (checked) {
44
+ return (disabled ||
45
+ loadingDynamicOptions ||
46
+ (servar.max_length && servar.max_length <= fieldVal.length && !checked));
47
+ };
48
+ var otherDisabled = isOptionDisabled(otherChecked);
49
+ var otherTextDisabled = !otherChecked || otherDisabled;
50
+ var options;
51
+ if (shouldSalesforceSync) {
52
+ options = dynamicOptions.map(function (option) { return ({
53
+ value: option.value,
54
+ label: option.label,
55
+ tooltip: ''
56
+ }); });
57
+ }
58
+ else if (repeatIndex !== null &&
59
+ servar.metadata.repeat_options !== undefined &&
60
+ servar.metadata.repeat_options[repeatIndex] !== undefined) {
61
+ options = servar.metadata.repeat_options[repeatIndex];
62
+ }
63
+ else {
64
+ options = servar.metadata.options.map(function (opt, index) { return ({
65
+ value: opt,
66
+ label: labels && labels[index] ? labels[index] : opt,
67
+ tooltip: tooltips && tooltips[index] ? tooltips[index] : ''
68
+ }); });
69
+ }
70
+ return (jsxs("div", __assign({ ref: containerRef, css: __assign({ position: 'relative', width: '100%' }, responsiveStyles.getTarget('fc')) }, elementProps, { children: [children, fieldLabel, jsxs("div", __assign({ css: __assign({ display: 'flex', flexWrap: 'wrap', width: '100%' }, styles.getTarget('row-container')) }, { children: [options.map(function (option, i) {
71
+ var _a, _b, _c;
72
+ var value = (_a = option.value) !== null && _a !== void 0 ? _a : option;
73
+ var label = (_b = option.label) !== null && _b !== void 0 ? _b : option;
74
+ var checked = fieldVal.includes(value);
75
+ var optionDisabled = isOptionDisabled(checked);
76
+ return (jsxs("div", __assign({ css: {
77
+ display: 'flex',
78
+ pointerEvents: optionDisabled ? 'none' : 'auto'
79
+ } }, { children: [jsxs("label", __assign({ style: { display: 'contents' } }, { children: [jsx("input", { type: 'checkbox', id: "".concat(servar.key, "-").concat(i), name: value, checked: checked, onChange: onChange, onFocus: iosScrollOnFocus, style: { padding: 0, lineHeight: 'normal' }, css: __assign(__assign(__assign(__assign({}, composeCheckableInputStyle(styles, optionDisabled)), styles.getTarget('checkboxGroup')), (optionDisabled
80
+ ? responsiveStyles.getTarget('disabled')
81
+ : {})), { '&:focus-visible': { border: '1px solid rgb(74, 144, 226)' } }), disabled: optionDisabled, "aria-label": element.properties.aria_label }), jsx("span", __assign({ css: __assign({ whiteSpace: 'pre-wrap', overflowWrap: 'anywhere' }, styles.getTarget('checkboxLabel')) }, { children: label }))] })), jsx(InlineTooltip, { containerRef: containerRef, id: "".concat(element.id, "-").concat(value), text: (_c = option.tooltip) !== null && _c !== void 0 ? _c : '', responsiveStyles: responsiveStyles, absolute: false, repeat: element.repeat })] }), "".concat(servar.key, "-").concat(i)));
82
+ }), servar.metadata.other && (jsxs("div", __assign({ style: { display: 'flex' } }, { children: [jsx("input", { type: 'checkbox', id: "".concat(servar.key, "-"), name: otherVal, checked: otherChecked, disabled: otherDisabled, onChange: onChange, onFocus: iosScrollOnFocus, style: {
83
+ padding: 0,
84
+ lineHeight: 'normal'
85
+ }, css: __assign(__assign(__assign(__assign({}, composeCheckableInputStyle(styles, otherDisabled)), styles.getTarget('checkboxGroup')), (otherDisabled
86
+ ? responsiveStyles.getTarget('disabled')
87
+ : {})), { '&:focus-visible': { border: '1px solid rgb(74, 144, 226)' } }) }, "".concat(servar.key, "-")), jsx("label", __assign({ htmlFor: "".concat(servar.key, "-"), css: styles.getTarget('checkboxLabel') }, { children: otherLabel })), jsx(FormControl, { type: 'text',
88
+ // Paired with flex grow, will not expand parent width
89
+ htmlSize: 1, css: __assign(__assign(__assign(__assign({ marginLeft: '5px' }, resetStyles), { paddingLeft: '0.4rem', flexGrow: 1 }), responsiveStyles.getTarget('field')), (otherTextDisabled
90
+ ? responsiveStyles.getTarget('disabled')
91
+ : {})), id: servar.key, value: otherVal || '', onChange: onOtherChange, onKeyDown: function (e) {
92
+ if (e.key === 'Enter')
93
+ onEnter(e);
94
+ }, required: otherChecked, disabled: otherTextDisabled }), jsx(InlineTooltip, { containerRef: containerRef, id: "".concat(element.id, "-"), text: servar.metadata.other_tooltip, responsiveStyles: responsiveStyles, absolute: false, repeat: element.repeat })] })))] }))] })));
95
+ }
96
+
97
+ export { CheckboxGroupField as default };
@@ -0,0 +1,138 @@
1
+ import { a as __assign, h as hoverStylesGuard, j as jsxs, b as jsx, i as iosScrollOnFocus } from './fthry_index.F6BXSHA5.js';
2
+ import { useMemo } from 'react';
3
+ import 'react/jsx-runtime';
4
+ import 'react-dom/client';
5
+ import 'stream';
6
+ import 'events';
7
+ import 'buffer';
8
+ import 'util';
9
+ import 'react-dom';
10
+
11
+ // Draws a checkmark, similar in dimensions to the default Chrome checkbox, in CSS
12
+ var checkmarkClipPath = 'polygon(40% 85%, 89% 23%, 76% 12%, 39% 59%, 23% 44%, 12% 55%)';
13
+ var MIN_CHECKBOX_PX = 13;
14
+ // Possibly extract this to its own file, however the radio type is nearly identical to checkbox
15
+ var radio = function (size, color) {
16
+ size = Math.floor(size / 1.7);
17
+ return {
18
+ height: size,
19
+ width: size,
20
+ minWidth: size,
21
+ minHeight: size,
22
+ border: 0,
23
+ boxShadow: "inset ".concat(size, "px ").concat(size, "px #").concat(color),
24
+ borderRadius: '50%'
25
+ };
26
+ };
27
+ var checkbox = function (size, color) {
28
+ return {
29
+ boxShadow: "inset ".concat(size, "px ").concat(size, "px #").concat(color),
30
+ clipPath: checkmarkClipPath
31
+ };
32
+ };
33
+ var scaleCheckboxSize = function (fontSize) {
34
+ return Math.max(fontSize, MIN_CHECKBOX_PX);
35
+ };
36
+ var applyHeightWidthMarginByFontSize = function (responsiveStyles, target, single) {
37
+ if (single === void 0) { single = false; }
38
+ responsiveStyles.apply(target, ['font_size'], function (fontSize) {
39
+ var scaled = scaleCheckboxSize(fontSize);
40
+ var scaledSize = "".concat(scaled, "px");
41
+ var styles = {
42
+ minHeight: scaledSize,
43
+ height: scaledSize,
44
+ minWidth: scaledSize,
45
+ width: scaledSize
46
+ };
47
+ var margin = Math.max(scaled / 2, 10);
48
+ if (!single)
49
+ styles.marginRight = "".concat(margin, "px");
50
+ return styles;
51
+ });
52
+ };
53
+ var applyCheckmarkByFontSize = function (responsiveStyles, target, colorProperty, isRadio) {
54
+ responsiveStyles.apply(target, ['font_size', colorProperty], function (fontSize, color) {
55
+ var scaledSize = scaleCheckboxSize(fontSize);
56
+ return isRadio ? radio(scaledSize, color) : checkbox(scaledSize, color);
57
+ });
58
+ };
59
+ var applyLabelHeightByFontSize = function (responsiveStyles, target) {
60
+ responsiveStyles.apply(target, ['font_size', 'line_height'], function (fontSize, lineHeight) {
61
+ if (!lineHeight)
62
+ lineHeight = scaleCheckboxSize(fontSize);
63
+ var topOffset = (lineHeight - fontSize) / 2;
64
+ return {
65
+ position: 'relative',
66
+ top: "-".concat(topOffset, "px"),
67
+ lineHeight: "".concat(lineHeight, "px")
68
+ };
69
+ });
70
+ };
71
+ var applyCheckmark = function (responsiveStyles, target, colorProperty) {
72
+ responsiveStyles.apply(target, ['height', 'height_unit', 'width', 'width_unit', colorProperty], function (height, heightUnit, width, widthUnit, color) {
73
+ return {
74
+ boxShadow: "inset ".concat(width).concat(widthUnit, " ").concat(height).concat(heightUnit, " #").concat(color),
75
+ clipPath: checkmarkClipPath
76
+ };
77
+ });
78
+ };
79
+ function applyCheckableInputStyles(element, responsiveStyles) {
80
+ responsiveStyles.addTargets('checkbox', 'checkboxCheckmark', 'checkboxSelected', 'checkboxHover', 'checkboxCheckmarkHover', 'checkboxLabel');
81
+ var _a = element.servar, type = _a.type, multiple = _a.metadata.multiple;
82
+ var isRadioGroup = type === 'select' || (type === 'matrix' && !multiple);
83
+ var isCheckboxGroup = type === 'multiselect' ||
84
+ type === 'checkbox_group' ||
85
+ (type === 'matrix' && multiple);
86
+ var scaleWithFontSize = isCheckboxGroup || isRadioGroup;
87
+ // width/height styles
88
+ if (scaleWithFontSize) {
89
+ applyLabelHeightByFontSize(responsiveStyles, 'checkboxLabel');
90
+ applyHeightWidthMarginByFontSize(responsiveStyles, 'checkbox', true);
91
+ applyHeightWidthMarginByFontSize(responsiveStyles, 'checkboxCheckmark', true);
92
+ applyHeightWidthMarginByFontSize(responsiveStyles, 'checkboxCheckmarkHover', true);
93
+ applyCheckmarkByFontSize(responsiveStyles, 'checkboxCheckmark', 'selected_font_color', isRadioGroup);
94
+ applyCheckmarkByFontSize(responsiveStyles, 'checkboxCheckmarkHover', 'hover_font_color', isRadioGroup);
95
+ }
96
+ else {
97
+ responsiveStyles.applyHeight('checkbox');
98
+ responsiveStyles.applyWidth('checkbox');
99
+ responsiveStyles.applyHeight('checkboxCheckmark');
100
+ responsiveStyles.applyWidth('checkboxCheckmark');
101
+ responsiveStyles.applyHeight('checkboxCheckmarkHover');
102
+ responsiveStyles.applyWidth('checkboxCheckmarkHover');
103
+ applyCheckmark(responsiveStyles, 'checkboxCheckmark', 'selected_font_color');
104
+ applyCheckmark(responsiveStyles, 'checkboxCheckmarkHover', 'hover_font_color');
105
+ }
106
+ // base styles
107
+ responsiveStyles.applyBorders({ target: 'checkbox' });
108
+ if (!isRadioGroup)
109
+ responsiveStyles.applyCorners('checkbox');
110
+ responsiveStyles.applyBoxShadow('checkbox');
111
+ responsiveStyles.applyColor('checkbox', 'background_color', 'backgroundColor', true);
112
+ responsiveStyles.applySelectorStyles('checkboxHover', {
113
+ prefix: 'hover_',
114
+ important: true
115
+ });
116
+ responsiveStyles.applySelectorStyles('checkboxSelected', {
117
+ prefix: 'selected_',
118
+ important: true
119
+ });
120
+ return responsiveStyles;
121
+ }
122
+ var composeCheckableInputStyle = function (styles, noHover, isRadio) {
123
+ if (noHover === void 0) { noHover = false; }
124
+ if (isRadio === void 0) { isRadio = false; }
125
+ return __assign(__assign({ position: 'static', marginLeft: 5, marginRight: 5, marginTop: 0, marginBottom: 0, appearance: 'none', display: 'grid', placeContent: 'center',
126
+ // On error in Safari, checkboxes can have a misshapen outline so disable
127
+ outline: 'none', borderRadius: isRadio ? '50%' : null }, styles.getTarget('checkbox')), { '&:hover': hoverStylesGuard(noHover ? {} : styles.getTarget('checkboxHover')), '&::before': __assign({ content: "''", transform: 'scale(0)' }, styles.getTarget('checkboxCheckmark')), '&:hover::before': hoverStylesGuard(__assign(__assign({}, styles.getTarget('checkboxCheckmark')), styles.getTarget('checkboxCheckmarkHover'))), '&:checked': __assign({}, styles.getTarget('checkboxSelected')), '&:checked::before': {
128
+ transform: 'scale(1)'
129
+ } });
130
+ };
131
+ function CheckboxField(_a) {
132
+ var element = _a.element, responsiveStyles = _a.responsiveStyles, fieldLabel = _a.fieldLabel, _b = _a.fieldVal, fieldVal = _b === void 0 ? true : _b, _c = _a.onChange, onChange = _c === void 0 ? function () { } : _c, _d = _a.elementProps, elementProps = _d === void 0 ? {} : _d, _e = _a.disabled, disabled = _e === void 0 ? false : _e, children = _a.children;
133
+ var styles = useMemo(function () { return applyCheckableInputStyles(element, responsiveStyles); }, [responsiveStyles]);
134
+ var servar = element.servar;
135
+ return (jsxs("div", __assign({ css: __assign(__assign({}, responsiveStyles.getTarget('fc')), { position: 'relative', display: 'flex' }) }, elementProps, { children: [children, jsx("input", { id: servar.key, name: servar.key, type: 'checkbox', checked: fieldVal, disabled: disabled, onChange: onChange, onFocus: iosScrollOnFocus, "aria-label": element.properties.aria_label, css: __assign(__assign(__assign({}, composeCheckableInputStyle(styles, disabled)), (disabled ? responsiveStyles.getTarget('disabled') : {})), { marginTop: '4px', '&:focus-visible': { border: '1px solid rgb(74, 144, 226)' } }) }), fieldLabel] })));
136
+ }
137
+
138
+ export { applyCheckableInputStyles, applyHeightWidthMarginByFontSize, composeCheckableInputStyle, CheckboxField as default };