@vertigis/workflow 5.33.1 → 5.35.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 (433) hide show
  1. package/Activator.d.ts +6 -2
  2. package/Collections.d.ts +8 -5
  3. package/EnumUtils.d.ts +1 -0
  4. package/Errors.d.ts +10 -1
  5. package/Errors.js +1 -1
  6. package/Hooks.d.ts +4 -1
  7. package/IActivityHandler.d.ts +20 -6
  8. package/LanguageStringUtils.js +1 -1
  9. package/ProgramInspectorFacility.d.ts +1 -0
  10. package/Task.d.ts +1 -0
  11. package/activities/app/GetApplicationData.d.ts +2 -2
  12. package/activities/app/GetApplicationInfo.d.ts +6 -3
  13. package/activities/app/GetUserInfo.d.ts +6 -3
  14. package/activities/app/PublishEvent.d.ts +2 -2
  15. package/activities/app/RemoveApplicationData.d.ts +2 -2
  16. package/activities/app/RunCommand.d.ts +6 -3
  17. package/activities/app/RunOperation.d.ts +10 -4
  18. package/activities/app/SetApplicationData.d.ts +2 -2
  19. package/activities/arcgis/AddAttachment.d.ts +2 -2
  20. package/activities/arcgis/AddFeatureLayer.d.ts +2 -2
  21. package/activities/arcgis/AddFeatures.d.ts +2 -2
  22. package/activities/arcgis/AddFeatures.js +1 -1
  23. package/activities/arcgis/AddGraphics.d.ts +10 -4
  24. package/activities/arcgis/ArcadeScript.d.ts +2 -2
  25. package/activities/arcgis/AreaEngineTask.d.ts +2 -2
  26. package/activities/arcgis/BufferEngineTask.d.ts +2 -2
  27. package/activities/arcgis/BufferServiceTask.d.ts +2 -2
  28. package/activities/arcgis/CastGeometry.d.ts +2 -2
  29. package/activities/arcgis/ClearGraphics.d.ts +2 -2
  30. package/activities/arcgis/ClipEngineTask.d.ts +2 -2
  31. package/activities/arcgis/ClosestFacilityTask.d.ts +2 -2
  32. package/activities/arcgis/CompareGeometries.d.ts +2 -2
  33. package/activities/arcgis/CreateGraphic.d.ts +2 -2
  34. package/activities/arcgis/CreatePoint.d.ts +2 -2
  35. package/activities/arcgis/CutEngineTask.d.ts +2 -2
  36. package/activities/arcgis/DeleteAttachments.d.ts +2 -2
  37. package/activities/arcgis/DeleteFeatures.d.ts +2 -2
  38. package/activities/arcgis/DensifyEngineTask.d.ts +2 -2
  39. package/activities/arcgis/DifferenceEngineTask.d.ts +2 -2
  40. package/activities/arcgis/DistanceEngineTask.d.ts +2 -2
  41. package/activities/arcgis/DistanceServiceTask.d.ts +2 -2
  42. package/activities/arcgis/ExtendedSpatialReferenceInfoEngineTask.d.ts +2 -2
  43. package/activities/arcgis/FeatureSetFromJson.d.ts +2 -2
  44. package/activities/arcgis/FlipEngineTask.d.ts +2 -2
  45. package/activities/arcgis/FromGeoCoordinateStringServiceTask.d.ts +2 -2
  46. package/activities/arcgis/GeneralizeEngineTask.d.ts +2 -2
  47. package/activities/arcgis/GenerateArcGisToken.d.ts +2 -2
  48. package/activities/arcgis/GenerateWebmapForReport.d.ts +2 -2
  49. package/activities/arcgis/Geocode.d.ts +2 -2
  50. package/activities/arcgis/GeometryFromJson.d.ts +2 -2
  51. package/activities/arcgis/Geoprocessing.d.ts +2 -2
  52. package/activities/arcgis/GeoprocessingAsync.d.ts +2 -2
  53. package/activities/arcgis/GetAttributeValue.d.ts +2 -2
  54. package/activities/arcgis/GetAttributeValues.d.ts +2 -2
  55. package/activities/arcgis/GetCentroid.d.ts +2 -2
  56. package/activities/arcgis/GetCodedValueDomain.d.ts +2 -2
  57. package/activities/arcgis/GetCurrentPosition.d.ts +2 -2
  58. package/activities/arcgis/GetFeatureGeometries.d.ts +2 -2
  59. package/activities/arcgis/GetFeatureGeometry.d.ts +2 -2
  60. package/activities/arcgis/GetFeatureLayerInfo.d.ts +2 -2
  61. package/activities/arcgis/GetFeatureSetExtent.d.ts +2 -2
  62. package/activities/arcgis/GetFeatureSetObjectIds.d.ts +2 -2
  63. package/activities/arcgis/GetFormElementItemsFromFeatures.d.ts +2 -2
  64. package/activities/arcgis/GetGeometryExtent.d.ts +2 -2
  65. package/activities/arcgis/GetGraphics.d.ts +2 -2
  66. package/activities/arcgis/GetLayer.d.ts +2 -2
  67. package/activities/arcgis/GetLayerDefinitionExpression.d.ts +2 -2
  68. package/activities/arcgis/GetLayerProperty.d.ts +2 -2
  69. package/activities/arcgis/GetLayerVisibility.d.ts +2 -2
  70. package/activities/arcgis/GetMap.d.ts +2 -2
  71. package/activities/arcgis/GetMapScreenshot.d.ts +2 -2
  72. package/activities/arcgis/GetPortalUser.d.ts +2 -2
  73. package/activities/arcgis/GetTable.d.ts +2 -2
  74. package/activities/arcgis/GetViewExtent.d.ts +2 -2
  75. package/activities/arcgis/GetViewpoint.d.ts +2 -2
  76. package/activities/arcgis/IntersectEngineTask.d.ts +2 -2
  77. package/activities/arcgis/LabelPointsServiceTask.d.ts +2 -2
  78. package/activities/arcgis/LengthEngineTask.d.ts +2 -2
  79. package/activities/arcgis/MapProvider.d.ts +4 -1
  80. package/activities/arcgis/NearestCoordinateEngineTask.d.ts +2 -2
  81. package/activities/arcgis/NearestVertexEngineTask.d.ts +2 -2
  82. package/activities/arcgis/NearestVerticesEngineTask.d.ts +2 -2
  83. package/activities/arcgis/OffsetEngineTask.d.ts +2 -2
  84. package/activities/arcgis/ProjectServiceTask.d.ts +2 -2
  85. package/activities/arcgis/QueryAttachmentInfos.d.ts +2 -2
  86. package/activities/arcgis/QueryTask.d.ts +10 -4
  87. package/activities/arcgis/RefreshLayer.d.ts +2 -2
  88. package/activities/arcgis/RegisterCorsUrl.d.ts +2 -2
  89. package/activities/arcgis/RelateEngineTask.d.ts +2 -2
  90. package/activities/arcgis/RelationServiceTask.d.ts +2 -2
  91. package/activities/arcgis/RelationshipQueryTask.d.ts +2 -2
  92. package/activities/arcgis/RemoveFeatureSetFields.d.ts +2 -2
  93. package/activities/arcgis/RemoveGraphics.d.ts +2 -2
  94. package/activities/arcgis/RemoveLayer.d.ts +2 -2
  95. package/activities/arcgis/RendererFromJson.d.ts +2 -2
  96. package/activities/arcgis/ReshapeServiceTask.d.ts +2 -2
  97. package/activities/arcgis/ReverseGeocode.d.ts +2 -2
  98. package/activities/arcgis/RotateEngineTask.d.ts +2 -2
  99. package/activities/arcgis/RouteTask.d.ts +2 -2
  100. package/activities/arcgis/RunPrint.d.ts +2 -2
  101. package/activities/arcgis/RunReport.d.ts +2 -2
  102. package/activities/arcgis/RunWorkflow.d.ts +21 -3
  103. package/activities/arcgis/RunWorkflow.js +1 -1
  104. package/activities/arcgis/SendLayerToAttributeTable.d.ts +2 -2
  105. package/activities/arcgis/ServiceAreaTask.d.ts +2 -2
  106. package/activities/arcgis/SetFeatureAttribute.d.ts +2 -2
  107. package/activities/arcgis/SetFeatureGeometry.d.ts +2 -2
  108. package/activities/arcgis/SetFeaturePopup.d.ts +2 -2
  109. package/activities/arcgis/SetFeatureSymbol.d.ts +2 -2
  110. package/activities/arcgis/SetImageryLayerOptions.d.ts +2 -2
  111. package/activities/arcgis/SetLayerDefinitionExpression.d.ts +2 -2
  112. package/activities/arcgis/SetLayerPopup.d.ts +2 -2
  113. package/activities/arcgis/SetLayerProperty.d.ts +2 -2
  114. package/activities/arcgis/SetLayerVisibility.d.ts +2 -2
  115. package/activities/arcgis/SetMap.d.ts +6 -3
  116. package/activities/arcgis/SetViewExtent.d.ts +2 -2
  117. package/activities/arcgis/SetViewpoint.d.ts +2 -2
  118. package/activities/arcgis/ShowFeaturePopup.d.ts +2 -2
  119. package/activities/arcgis/ShowResults.d.ts +5 -2
  120. package/activities/arcgis/SimplifyEngineTask.d.ts +2 -2
  121. package/activities/arcgis/SortFeatureSet.d.ts +2 -2
  122. package/activities/arcgis/SymbolFromJson.d.ts +2 -2
  123. package/activities/arcgis/ToGeoCoordinateStringServiceTask.d.ts +2 -2
  124. package/activities/arcgis/UnionEngineTask.d.ts +2 -2
  125. package/activities/arcgis/UnionServiceTask.d.ts +2 -2
  126. package/activities/arcgis/UpdateAttachment.d.ts +2 -2
  127. package/activities/arcgis/UpdateFeatures.d.ts +2 -2
  128. package/activities/arcgis/runUtils.d.ts +6 -2
  129. package/activities/browser/GetBrowserInfo.d.ts +2 -2
  130. package/activities/browser/InjectCss.d.ts +2 -2
  131. package/activities/core/AddItem.d.ts +2 -2
  132. package/activities/core/AddItems.d.ts +2 -2
  133. package/activities/core/Annotation.d.ts +2 -2
  134. package/activities/core/Cast.d.ts +2 -2
  135. package/activities/core/ChannelProvider.d.ts +1 -0
  136. package/activities/core/ClearItems.d.ts +2 -2
  137. package/activities/core/Container.d.ts +2 -2
  138. package/activities/core/ConvertBytesToText.d.ts +2 -2
  139. package/activities/core/ConvertDataTableToFeatureSet.d.ts +2 -2
  140. package/activities/core/ConvertTextToBytes.d.ts +2 -2
  141. package/activities/core/ConvertToJson.d.ts +2 -2
  142. package/activities/core/CreateFile.d.ts +2 -2
  143. package/activities/core/CreateValue.d.ts +2 -2
  144. package/activities/core/DecodeUriComponent.d.ts +2 -2
  145. package/activities/core/Delay.d.ts +2 -2
  146. package/activities/core/EncodeUriComponent.d.ts +2 -2
  147. package/activities/core/Evaluate.d.ts +2 -2
  148. package/activities/core/EvaluateAsync.d.ts +2 -2
  149. package/activities/core/Exit.d.ts +2 -2
  150. package/activities/core/ForEach.d.ts +2 -2
  151. package/activities/core/FormatDate.d.ts +5 -5
  152. package/activities/core/FormatDate.js +1 -1
  153. package/activities/core/GetBase64StringFromBytes.d.ts +2 -2
  154. package/activities/core/GetBase64StringFromFile.d.ts +2 -2
  155. package/activities/core/GetBytesFromBase64String.d.ts +2 -2
  156. package/activities/core/GetFirstItem.d.ts +2 -2
  157. package/activities/core/GetItemAtIndex.d.ts +2 -2
  158. package/activities/core/GetLastItem.d.ts +2 -2
  159. package/activities/core/GetLogLevel.d.ts +2 -2
  160. package/activities/core/GetTextFromFile.d.ts +2 -2
  161. package/activities/core/GetWorkflowInputs.d.ts +2 -2
  162. package/activities/core/If.d.ts +2 -2
  163. package/activities/core/Log.d.ts +2 -2
  164. package/activities/core/Loop.d.ts +2 -2
  165. package/activities/core/ParseJson.d.ts +2 -2
  166. package/activities/core/ParseNumber.d.ts +2 -2
  167. package/activities/core/ParseUrl.d.ts +2 -2
  168. package/activities/core/Placeholder.d.ts +2 -2
  169. package/activities/core/RegexMatches.d.ts +2 -2
  170. package/activities/core/RegexReplace.d.ts +2 -2
  171. package/activities/core/RemoveItem.d.ts +2 -2
  172. package/activities/core/RunActivity.d.ts +2 -2
  173. package/activities/core/RunSubworkflow.d.ts +2 -2
  174. package/activities/core/SetLogLevel.d.ts +2 -2
  175. package/activities/core/SetProperty.d.ts +2 -2
  176. package/activities/core/SetWorkflowOutput.d.ts +2 -2
  177. package/activities/core/Subworkflow.d.ts +2 -2
  178. package/activities/core/Switch.d.ts +2 -2
  179. package/activities/core/TextReplace.d.ts +2 -2
  180. package/activities/core/Throw.d.ts +2 -2
  181. package/activities/core/TryCatch.d.ts +2 -2
  182. package/activities/core/WebRequest.d.ts +2 -2
  183. package/activities/core/converters.d.ts +1 -1
  184. package/activities/csv/ConvertCsvToDataTable.d.ts +2 -2
  185. package/activities/csv/ConvertDataTableToCsv.d.ts +2 -2
  186. package/activities/essentials/GetEssentialsSite.d.ts +2 -2
  187. package/activities/essentials/RunEssentialsWorkflow.d.ts +2 -2
  188. package/activities/essentials/RunEssentialsWorkflowActivity.d.ts +2 -2
  189. package/activities/forms/ActivateFormElement.d.ts +2 -2
  190. package/activities/forms/AddFormElement.d.ts +2 -2
  191. package/activities/forms/ClearFormElementError.d.ts +2 -2
  192. package/activities/forms/CompleteForm.d.ts +2 -2
  193. package/activities/forms/DisplayForm.d.ts +6 -3
  194. package/activities/forms/FilterFormElementItems.d.ts +2 -2
  195. package/activities/forms/FormRenderer.d.ts +1 -0
  196. package/activities/forms/FormRenderer.js +1 -1
  197. package/activities/forms/GetFormElementItemsFromCollection.d.ts +2 -2
  198. package/activities/forms/GetFormElementProperty.d.ts +2 -2
  199. package/activities/forms/GetFormElementValue.d.ts +2 -2
  200. package/activities/forms/GetFormEventData.d.ts +2 -2
  201. package/activities/forms/HideFormElement.d.ts +2 -2
  202. package/activities/forms/PropagateFormEvent.d.ts +2 -2
  203. package/activities/forms/SetCurrentFormElementItem.d.ts +2 -2
  204. package/activities/forms/SetFormElementError.d.ts +2 -2
  205. package/activities/forms/SetFormElementEvent.d.ts +2 -2
  206. package/activities/forms/SetFormElementItemProperty.d.ts +2 -2
  207. package/activities/forms/SetFormElementItems.d.ts +2 -2
  208. package/activities/forms/SetFormElementProperty.d.ts +3 -3
  209. package/activities/forms/ShowFormElement.d.ts +2 -2
  210. package/activities/image/GetImageMetadata.d.ts +2 -2
  211. package/activities/image/RotateImage.d.ts +2 -2
  212. package/activities/index.d.ts +1 -0
  213. package/activities/index.js +1 -1
  214. package/activities/math/Abs.d.ts +2 -2
  215. package/activities/math/Cos.d.ts +2 -2
  216. package/activities/math/Max.d.ts +2 -2
  217. package/activities/math/Min.d.ts +2 -2
  218. package/activities/math/Pow.d.ts +2 -2
  219. package/activities/math/Random.d.ts +2 -2
  220. package/activities/math/Sin.d.ts +2 -2
  221. package/activities/math/Sqrt.d.ts +2 -2
  222. package/activities/math/Tan.d.ts +2 -2
  223. package/activities/pdf/AddGeoreferenceToPdf.d.ts +19 -0
  224. package/activities/pdf/AddGeoreferenceToPdf.js +1 -0
  225. package/activities/pdf/ExtractPdfPages.d.ts +2 -2
  226. package/activities/pdf/MergePdfs.d.ts +2 -2
  227. package/activities/server/CopyFile.d.ts +2 -2
  228. package/activities/server/CreateDirectory.d.ts +2 -2
  229. package/activities/server/CreateDownload.d.ts +2 -2
  230. package/activities/server/CreateEmailAttachment.d.ts +2 -2
  231. package/activities/server/CreateZipFromDirectory.d.ts +2 -2
  232. package/activities/server/DeleteDirectory.d.ts +2 -2
  233. package/activities/server/DeleteFile.d.ts +2 -2
  234. package/activities/server/DirectoryExists.d.ts +2 -2
  235. package/activities/server/ExtractZipToDirectory.d.ts +2 -2
  236. package/activities/server/FileExists.d.ts +2 -2
  237. package/activities/server/GetDirectoriesInDirectory.d.ts +2 -2
  238. package/activities/server/GetFilesInDirectory.d.ts +2 -2
  239. package/activities/server/MoveFile.d.ts +2 -2
  240. package/activities/server/ReadFile.d.ts +2 -2
  241. package/activities/server/ReadFileBytes.d.ts +2 -2
  242. package/activities/server/RunApplication.d.ts +2 -2
  243. package/activities/server/RunPython.d.ts +2 -2
  244. package/activities/server/SendEmail.d.ts +2 -2
  245. package/activities/server/SqlNonQuery.d.ts +2 -2
  246. package/activities/server/SqlQuery.d.ts +2 -2
  247. package/activities/server/SqlQueryUnsafe.d.ts +2 -2
  248. package/activities/server/WriteFile.d.ts +2 -2
  249. package/activities/server/WriteFileBytes.d.ts +2 -2
  250. package/activities/ui/Alert.d.ts +6 -3
  251. package/activities/ui/Confirm.d.ts +10 -4
  252. package/activities/ui/Prompt.d.ts +10 -4
  253. package/activities/wab/OpenWidget.d.ts +2 -2
  254. package/activities/wab/PublishWidgetData.d.ts +2 -2
  255. package/activities/xlsx/ConvertDataTableToXlsx.d.ts +2 -2
  256. package/activities/xlsx/ConvertXlsxToDataSet.d.ts +2 -2
  257. package/definition/Program.d.ts +4 -1
  258. package/definition/ProgramInspector.d.ts +4 -1
  259. package/definition/Reference.d.ts +4 -1
  260. package/diagnostics/ConsoleDebugLogger.d.ts +4 -1
  261. package/diagnostics/logging.d.ts +4 -1
  262. package/execution/ActivityLoader.d.ts +4 -1
  263. package/execution/Engine.d.ts +16 -4
  264. package/execution/IDebugSession.d.ts +4 -1
  265. package/execution/ProgramRunner.js +1 -1
  266. package/forms/Calendar.d.ts +1 -1
  267. package/forms/FormComponent.d.ts +4 -3
  268. package/forms/FormComponent.js +1 -1
  269. package/forms/FormDefinition.d.ts +100 -19
  270. package/forms/FormElement.d.ts +3 -17
  271. package/forms/FormElement.js +1 -1
  272. package/forms/FormHost.d.ts +29 -8
  273. package/forms/FormHost.js +1 -1
  274. package/forms/FormPresenterHost.d.ts +33 -7
  275. package/forms/common.d.ts +6 -7
  276. package/forms/common.js +1 -1
  277. package/forms/components/AccordionGroup.d.ts +15 -0
  278. package/forms/components/AccordionGroup.js +1 -0
  279. package/forms/components/AutoComplete.d.ts +7 -0
  280. package/forms/components/AutoComplete.js +1 -0
  281. package/forms/components/ButtonBar.d.ts +13 -0
  282. package/forms/components/ButtonBar.js +1 -0
  283. package/forms/components/CheckBox.d.ts +7 -0
  284. package/forms/components/CheckBox.js +1 -0
  285. package/forms/components/CheckGroup.d.ts +7 -0
  286. package/forms/components/CheckGroup.js +1 -0
  287. package/forms/components/Custom.d.ts +7 -0
  288. package/forms/components/Custom.js +1 -0
  289. package/forms/components/DatePicker.d.ts +6 -16
  290. package/forms/components/DatePicker.js +1 -1
  291. package/forms/components/DateRangePicker.d.ts +10 -8
  292. package/forms/components/DateRangePicker.js +1 -1
  293. package/forms/components/DateTimePicker.d.ts +6 -8
  294. package/forms/components/DateTimePicker.js +1 -1
  295. package/forms/components/DropDownList.d.ts +7 -0
  296. package/forms/components/DropDownList.js +1 -0
  297. package/forms/components/FilePicker.d.ts +9 -0
  298. package/forms/components/FilePicker.js +1 -0
  299. package/forms/components/Form.d.ts +23 -0
  300. package/forms/components/Form.js +1 -0
  301. package/forms/components/FormLabelNumberField.d.ts +15 -0
  302. package/forms/components/FormLabelNumberField.js +1 -0
  303. package/forms/components/GeometryPicker.d.ts +4 -0
  304. package/forms/components/GeometryPicker.js +1 -0
  305. package/forms/components/GeometryPickerListItem.d.ts +23 -0
  306. package/forms/components/GeometryPickerListItem.js +1 -0
  307. package/forms/components/HorizontalRule.d.ts +7 -0
  308. package/forms/components/HorizontalRule.js +1 -0
  309. package/forms/components/Image.d.ts +7 -0
  310. package/forms/components/Image.js +1 -0
  311. package/forms/components/ItemPicker.d.ts +17 -0
  312. package/forms/components/ItemPicker.js +1 -0
  313. package/forms/components/ListBox.d.ts +7 -0
  314. package/forms/components/ListBox.js +1 -0
  315. package/forms/components/Markdown.d.ts +1 -1
  316. package/forms/components/Markdown.js +1 -1
  317. package/forms/components/Number.d.ts +7 -0
  318. package/forms/components/Number.js +1 -0
  319. package/forms/components/NumberRangeSlider.d.ts +11 -8
  320. package/forms/components/NumberRangeSlider.js +1 -1
  321. package/forms/components/NumberSlider.d.ts +9 -8
  322. package/forms/components/NumberSlider.js +1 -1
  323. package/forms/components/RadioGroup.d.ts +7 -0
  324. package/forms/components/RadioGroup.js +1 -0
  325. package/forms/components/Scanner.d.ts +9 -0
  326. package/forms/components/Scanner.js +1 -0
  327. package/forms/components/Section.d.ts +14 -0
  328. package/forms/components/Section.js +1 -0
  329. package/forms/components/Signature.d.ts +11 -0
  330. package/forms/components/Signature.js +1 -0
  331. package/forms/components/SignatureDialog.d.ts +22 -0
  332. package/forms/components/SignatureDialog.js +1 -0
  333. package/forms/components/Text.d.ts +1 -1
  334. package/forms/components/Text.js +1 -1
  335. package/forms/components/TextArea.d.ts +1 -1
  336. package/forms/components/TextArea.js +1 -1
  337. package/forms/components/TextBox.d.ts +1 -1
  338. package/forms/components/TextBox.js +1 -1
  339. package/forms/components/TimePicker.d.ts +7 -0
  340. package/forms/components/TimePicker.js +1 -0
  341. package/forms/constants.d.ts +19 -31
  342. package/forms/constants.js +1 -1
  343. package/forms/dateUtilities.d.ts +41 -9
  344. package/forms/dateUtilities.js +1 -1
  345. package/forms/elements/AutoComplete.d.ts +7 -0
  346. package/forms/elements/AutoComplete.js +1 -0
  347. package/forms/elements/Number.d.ts +5 -0
  348. package/forms/elements/Number.js +1 -0
  349. package/forms/elements/NumberRangeSlider.d.ts +5 -3
  350. package/forms/elements/NumberRangeSlider.js +1 -1
  351. package/forms/elements/NumberSlider.d.ts +0 -3
  352. package/forms/elements/NumberSlider.js +0 -1
  353. package/forms/elements/Scanner.d.ts +9 -0
  354. package/forms/elements/Scanner.js +1 -0
  355. package/forms/elements/Signature.d.ts +16 -0
  356. package/forms/elements/Signature.js +1 -0
  357. package/forms/elements/types.d.ts +4 -2
  358. package/forms/index.d.ts +6 -2
  359. package/forms/index.js +1 -1
  360. package/forms/keyboard.d.ts +1 -0
  361. package/forms/numberFormatter.d.ts +5 -6
  362. package/forms/numberFormatter.js +1 -1
  363. package/forms/numberUtilities.d.ts +113 -0
  364. package/forms/numberUtilities.js +1 -0
  365. package/forms/presenter.d.ts +1 -0
  366. package/forms/presenter.js +1 -1
  367. package/forms/renderers.d.ts +5 -43
  368. package/forms/renderers.js +1 -1
  369. package/forms/textUtilities.d.ts +6 -4
  370. package/forms/textUtilities.js +1 -1
  371. package/forms/utils.d.ts +102 -20
  372. package/forms/utils.js +1 -1
  373. package/index.d.ts +1 -1
  374. package/index.js +0 -1
  375. package/libs/version.d.ts +1 -1
  376. package/libs/version.js +1 -1
  377. package/package.json +10 -10
  378. package/app/ActivityPackUtils.d.ts +0 -10
  379. package/app/ActivityPackUtils.js +0 -1
  380. package/app/AppActivity.d.ts +0 -82
  381. package/app/AppActivity.js +0 -1
  382. package/app/RegisterCustomFormElementBase.d.ts +0 -34
  383. package/app/RegisterCustomFormElementBase.js +0 -1
  384. package/forms/LegacyStyles.d.ts +0 -498
  385. package/forms/LegacyStyles.js +0 -1
  386. package/forms/assets/arrow.d.ts +0 -4
  387. package/forms/assets/arrow.js +0 -1
  388. package/forms/assets/chevron.d.ts +0 -3
  389. package/forms/assets/chevron.js +0 -1
  390. package/forms/assets/cross.d.ts +0 -3
  391. package/forms/assets/cross.js +0 -1
  392. package/forms/assets/datetime.d.ts +0 -3
  393. package/forms/assets/datetime.js +0 -1
  394. package/forms/assets/remove.d.ts +0 -2
  395. package/forms/assets/remove.js +0 -1
  396. package/forms/assets/scan.d.ts +0 -4
  397. package/forms/assets/scan.js +0 -1
  398. package/forms/assets/stock.d.ts +0 -5
  399. package/forms/assets/stock.js +0 -1
  400. package/forms/components/DateRange.d.ts +0 -6
  401. package/forms/components/DateRange.js +0 -1
  402. package/forms/components/Navigator.d.ts +0 -1
  403. package/forms/components/Navigator.js +0 -1
  404. package/forms/components/ReactDateRangeCalendar.d.ts +0 -6
  405. package/forms/components/ReactDateRangeCalendar.js +0 -1
  406. package/forms/components/SyntheticButton.d.ts +0 -1
  407. package/forms/components/SyntheticButton.js +0 -1
  408. package/forms/components/TimePickerInput.d.ts +0 -24
  409. package/forms/components/TimePickerInput.js +0 -1
  410. package/forms/components/TimerManager.d.ts +0 -7
  411. package/forms/components/TimerManager.js +0 -1
  412. package/forms/components/utils.d.ts +0 -2
  413. package/forms/components/utils.js +0 -1
  414. package/forms/datetime.d.ts +0 -5
  415. package/forms/datetime.js +0 -1
  416. package/forms/files.d.ts +0 -4
  417. package/forms/files.js +0 -1
  418. package/forms/geometry.d.ts +0 -4
  419. package/forms/geometry.js +0 -1
  420. package/forms/number.d.ts +0 -11
  421. package/forms/number.js +0 -1
  422. package/forms/numberSliderUtilities.d.ts +0 -12
  423. package/forms/numberSliderUtilities.js +0 -1
  424. package/forms/scanner.d.ts +0 -4
  425. package/forms/scanner.js +0 -1
  426. package/forms/selectors.d.ts +0 -10
  427. package/forms/selectors.js +0 -1
  428. package/forms/styles/daterange.css +0 -1
  429. package/forms/styles/daterange.d.ts +0 -1
  430. package/forms/styles/daterange.js +0 -1
  431. package/forms/styles/stock.css +0 -1
  432. package/forms/styles/stock.d.ts +0 -1
  433. package/forms/styles/stock.js +0 -1
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ export interface ButtonBarProps extends BaseFormElementProps {
4
+ /**
5
+ * Defines the space between immediate children.
6
+ */
7
+ spacing?: number;
8
+ }
9
+ /**
10
+ * The component for the "Button Bar" Form Element.
11
+ */
12
+ declare const ButtonBar: ({ className, component, element, spacing }: ButtonBarProps) => JSX.Element;
13
+ export default ButtonBar;
@@ -0,0 +1 @@
1
+ import Button from"@vertigis/react-ui/Button";import Stack,{stackClasses}from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import FormElement from"../FormElement.js";import{Orientation}from"../constants.js";import{makeSafeClassName,sort}from"../utils.js";import Markdown from"./Markdown.js";const Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${stackClasses.root}`]:{alignItems:"flex-start",flexWrap:"wrap",marginTop:e(1),marginBottom:e(1)}})),ButtonBar=({className:e,component:c,element:t,spacing:a})=>{const{host:p,name:u}=c.props,d=sort(t.items);let f;void 0===a&&(a=1);return React.createElement(Root,{className:e,component:c,element:t},React.createElement(Stack,{direction:t.orientation===Orientation.VERTICAL?"column":"row",spacing:a},Object.keys(d).map(e=>{var t,a,o,r=d[e],n=r.styleName?makeSafeClassName(r.styleName):void 0,i=!1!==r.visible,s=c.enabled&&!1!==r.enabled&&i,m=p.renderText(r.tooltip),l=d[e]["value"];return s&&void 0===f&&(f=e),i?React.createElement(Button,{onClick:(a=e,o=l,function(e){p.post("clicked",{name:u,item:a,value:o})}),className:n,color:r.default?"primary":"inherit",disabled:!s,key:e,ref:(t=e,function(e){null!==e&&t===f&&p.renderFocus(e,u)}),title:m,variant:r.default?"contained":"outlined"},React.createElement(Markdown,{host:p,inline:!0,text:r.label||""})):null})))};export default ButtonBar;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Check Box" Form Element.
5
+ */
6
+ declare const CheckBox: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default CheckBox;
@@ -0,0 +1 @@
1
+ import Checkbox from"@vertigis/react-ui/Checkbox";import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import*as React from"react";import{useEffect,useState}from"react";import FormElement from"../FormElement.js";import Markdown from"./Markdown.js";const CheckBox=({className:e,component:t,element:o})=>{const[r,a]=useState(!1),[c,l]=useState(null),{host:n,name:m}=t.props;var s=n.renderText(o.tooltip);useEffect(()=>{a(!!o.checked)},[o.checked]),useEffect(()=>{l(React.createElement(Markdown,{host:n,text:o.label}))},[o.label]);return React.createElement(FormElement,{className:e,component:t,element:o},React.createElement(FormControlLabel,{control:React.createElement(Checkbox,{checked:r,onChange:e=>{e=e.target.checked;o.checked=e,n.post("changed",{name:m,value:e?o.value:void 0,argument:e}),a(e)},inputRef:e=>{null===e||e.disabled||n.renderFocus(e,m)}}),disabled:!t.enabled,label:c,title:s}))};export default CheckBox;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Check Group" Form Element.
5
+ */
6
+ declare const CheckGroup: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default CheckGroup;
@@ -0,0 +1 @@
1
+ import Checkbox from"@vertigis/react-ui/Checkbox";import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import FormGroup,{formGroupClasses}from"@vertigis/react-ui/FormGroup";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useEffect,useState}from"react";import FormElement from"../FormElement.js";import{Orientation}from"../constants.js";import{makeSafeClassName,sortItems}from"../utils.js";import Markdown from"./Markdown.js";const Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${formGroupClasses.root}`]:{paddingBottom:e(2)}})),CheckGroup=({className:e,component:t,element:a})=>{const[n,m]=useState([]),{host:o,name:s}=t.props,c=sortItems(a);useEffect(()=>{l()});var r=e=>{null===e||e.disabled||o.renderFocus(e,s)};function l(){const e=[],t=[];for(const o in c){var r=c[o];r.checked&&(e.push(r),t.push(o))}0===e.length?a.value=void 0:a.value={refValueType:"items",items:e},a.current=void 0,i(t,n)||m(t)}const i=(t,r)=>{if(!t&&!r)return!0;if(!t||!r)return!1;if(t.length!==r.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==r[e])return!1;return!0};const u=[];for(const v in c){var f=c[v],p=-1!==n.indexOf(v),d=t.enabled&&!1!==f.enabled,h=o.renderText(f.tooltip),k=f.styleName?makeSafeClassName(f.styleName):void 0;u.push(React.createElement(FormControlLabel,{className:k,control:React.createElement(Checkbox,{checked:p,onChange:((t,r)=>function(e){e=c[t].checked=e.currentTarget.checked;l(),o.post("changed",{name:s,item:t,value:e?r:void 0,argument:e})})(v,f.value),inputRef:r}),disabled:!d,key:v,label:React.createElement(Markdown,{host:o,text:f.label}),title:h}))}return React.createElement(Root,{className:e,component:t,element:a},React.createElement(FormGroup,{row:a.orientation===Orientation.HORIZONTAL},u))};export default CheckGroup;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Custom" Form Element.
5
+ */
6
+ declare const Custom: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default Custom;
@@ -0,0 +1 @@
1
+ import*as React from"react";import{createElement}from"react";import FormElement from"../FormElement.js";import{getElementProps}from"../utils.js";const Custom=({className:e,component:t,element:m})=>{var o=t.props.name;let r;return r=t.elementRegistration?createElement(t.elementRegistration.component,getElementProps(t,m)):(console.warn(`Unable to render custom form element '${o}' of type '${m.customType}'.`),`--- ${m.customType} ---`),React.createElement(FormElement,{className:e,component:t,element:m},r)};export default Custom;
@@ -1,17 +1,7 @@
1
- import * as React from "react";
2
- import { FormComponent } from "../FormComponent";
3
- import { Element } from "../FormDefinition";
4
- interface DatePickerProps {
5
- /** True if the popup is open, false otherwise. */
6
- isOpen: boolean;
7
- /** Callback for when the value changes. */
8
- onChange: (value: Date) => void;
9
- /** Callback for when the popup is opened or closed. */
10
- onPopupToggle: (isOpen: boolean) => void;
11
- /** Indicates the value for the date picker. */
12
- value?: Date;
13
- component: FormComponent;
14
- element: Element;
15
- }
16
- declare const DatePicker: React.FC<DatePickerProps>;
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Date Picker" Form Element.
5
+ */
6
+ declare const DatePicker: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
17
7
  export default DatePicker;
@@ -1 +1 @@
1
- import{parse}from"date-fns";import{useEffect,useState,lazy,Suspense}from"react";import*as React from"react";import{DEFAULT_LOCALE}from"../../constants.js";import{renderCalendar}from"../assets/datetime.js";import{useFocusCallback}from"../common.js";import{CssClasses}from"../constants.js";import{getDateAsLocaleFormattedString,getDateFnsLocale,getLocaleDateFormat,isValidDate,tryParseDateText}from"../dateUtilities.js";import{CSS}from"../styles/daterange.js";import{addStyleToDocument}from"../utils.js";const Calendar=lazy(()=>import("./ReactDateRangeCalendar"));addStyleToDocument(CSS);const dateFormat=getLocaleDateFormat();let currentLocale;const DatePicker=e=>{const{component:t,element:a,isOpen:o,onChange:r,onPopupToggle:n}=e,s=t.props["host"],[c,l]=useState(),[i,m]=useState("");var d=s.renderText(a.tooltip),u=!t.enabled,p=u?"inner disabled":"inner";useEffect(()=>{(async()=>{var e=s.deriveLocale();"inv"!==e&&"en"!==e&&e!==DEFAULT_LOCALE&&(currentLocale=await getDateFnsLocale(e))})()},[]),useEffect(()=>{l(e.value),m(getDateAsLocaleFormattedString(e.value))},[e.value]);var f=useFocusCallback(t);const D=e=>{var t="string"==typeof e?e:e.target.value,a=""!==t&&void 0!==t,e=a?tryParseDateText(t):void 0,t=a?e?parse(e,dateFormat,0):new Date(NaN):void 0;a?isValidDate(t)?(l(t),m(e),v(),g(t)):(v({status:"invalid"}),l(new Date(NaN)),g(void 0)):(v(),l(void 0),g(void 0))};const g=e=>{"function"==typeof r&&r(e)};const v=e=>{a.error=e,t.forceUpdate()};return React.createElement("div",{className:"SimpleDatePicker outer",title:d},React.createElement("div",{className:p},React.createElement("input",{"aria-label":"Date Picker",ref:f,disabled:u,type:"text",onChange:e=>(e=>{m(e.target.value)})(e),onBlur:e=>D(e),onKeyDown:e=>(e=>{e.stopPropagation(),"Enter"===e.key?D(i):"Escape"===e.key&&D(getDateAsLocaleFormattedString(c))})(e),placeholder:dateFormat.toUpperCase(),value:i})),React.createElement("div",{className:"buttonContainer"},React.createElement("button",{className:"calendarButton",disabled:u,onClick:()=>{"function"==typeof n&&n(!o)}},renderCalendar()),o&&React.createElement(Suspense,{fallback:null},React.createElement("div",{className:CssClasses.DROPDOWN},React.createElement(Calendar,{format:dateFormat,editableDateInputs:!1,date:c,onChange:e=>{l(e),m(getDateAsLocaleFormattedString(e)),v(),g(e)},locale:currentLocale}),React.createElement("button",{className:"done",onClick:()=>{"function"==typeof n&&n(!1)}},s.renderText("@common-done"))))))};export default DatePicker;
1
+ import BaseDatePicker from"@vertigis/react-ui/DatePicker";import FormHelperText from"@vertigis/react-ui/FormHelperText";import FormLabelTextField from"@vertigis/react-ui/FormLabelTextField";import*as React from"react";import{useEffect,useRef,useState}from"react";import{Calendar}from"../Calendar.js";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{hasErrorChanged,isInvalidDate,makeProperFormat,makeProperValue,updateElementValue}from"../dateUtilities.js";import{isDateTimeRef,makeUniqueId}from"../utils.js";const DatePicker=({className:e,component:t,element:r})=>{const[a,o]=useState(!1),[l,n]=useState(!1),[s,i]=useState(null),m=useRef(),u=useRef(!0),{host:c,name:p}=t.props;var d=useFocusCallback(t);const f=c.renderText(r.tooltip),v=makeProperFormat(r.value,r.format),F=Calendar.useNative(),k="date";useEffect(()=>{var e=makeProperValue(r.value,F);updateElementValue(r,e,k,v,F),i(e||null)},[r.value]),useEffect(()=>{if(u.current)u.current=!1;else if(!l&&!a)if(isInvalidDate(s))E({status:"invalid"});else{E();let e=s||void 0;if(e&&isDateTimeRef(r.value)){const t=new Date(r.value.value);e=new Date(e),e.setHours(t.getHours()),e.setMinutes(t.getMinutes()),e.setSeconds(t.getSeconds()),e.setMilliseconds(t.getMilliseconds())}updateElementValue(r,e,k,v,F)&&c.post("changed",{name:p,value:r.value})}},[l,a]);const E=e=>{hasErrorChanged(r,e)&&(r.error=e,t.forceUpdate())},P=`${makeUniqueId(p)}-input`,g=c.renderText(r.prompt);return React.createElement(FormElement,{className:e,component:t,element:r,inputId:P},r.error&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},m.current),React.createElement(BaseDatePicker,{disabled:!t.enabled,key:"date-picker",inputRef:d,onChange:e=>{i(e)},onOpen:()=>{n(!0)},onClose:()=>{n(!1)},renderInput:e=>(m.current=e.inputProps?.placeholder,e.error=!!r.error,e.inputProps={...e.inputProps,id:P,onBlur:()=>{o(!1)},onFocus:()=>{o(!0)},placeholder:g||e.inputProps?.placeholder,title:f},React.createElement(FormLabelTextField,{...e})),value:s}))};export default DatePicker;
@@ -1,9 +1,11 @@
1
- import * as React from "react";
2
- import { FormComponent } from "../FormComponent";
3
- import { Element } from "../FormDefinition";
4
- interface DateRangePickerProps {
5
- component: FormComponent;
6
- element: Element;
7
- }
8
- declare const DateRangePicker: React.FC<DateRangePickerProps>;
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ export declare const dateRangePickerClasses: {
4
+ root: string;
5
+ toLabel: string;
6
+ };
7
+ /**
8
+ * The component for the "Date Range Picker" Form Element.
9
+ */
10
+ declare const DateRangePicker: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
9
11
  export default DateRangePicker;
@@ -1 +1 @@
1
- import{parse,isAfter,isBefore,isEqual}from"date-fns";import{useEffect,useRef,useState,lazy,Suspense}from"react";import*as React from"react";import{DEFAULT_LOCALE}from"../../constants.js";import FormElement from"../FormElement.js";import{renderArrowRight}from"../assets/arrow.js";import{renderCalendar}from"../assets/datetime.js";import{useFocusCallback}from"../common.js";import{CssClasses}from"../constants.js";import{convertToDateRangeRef,getDateAsLocaleFormattedString,getDateFnsLocale,getLocaleDateFormat,isValidDate,tryParseDateText}from"../dateUtilities.js";import{CSS}from"../styles/daterange.js";import{addStyleToDocument}from"../utils.js";const DateRange=lazy(()=>import("./DateRange"));var DateInputType;addStyleToDocument(CSS),function(e){e.Start="start",e.End="end"}(DateInputType=DateInputType||{});const dateFormat=getLocaleDateFormat();let currentLocale;const DateRangePicker=e=>{const t=e.component,r=e.element,n=useRef(),[a,o]=useState(!1),[l,c]=useState(),[s,i]=useState(""),[d,m]=useState(),[u,D]=useState("");var p=!t.enabled;const{host:v,name:g}=t.props;var f=v.renderText(r.tooltip),y=t.enabled?"inner":"inner disabled";useEffect(()=>{(async()=>{var e=v.deriveLocale();"inv"!==e&&"en"!==e&&e!==DEFAULT_LOCALE&&(currentLocale=await getDateFnsLocale(e))})()},[]),useEffect(()=>{var e;r.value!==n.current&&((e=convertToDateRangeRef(r.value))?(c(e.startDate),m(e.endDate),i(getDateAsLocaleFormattedString(e.startDate)),D(getDateAsLocaleFormattedString(e.endDate))):void 0===r.value&&(c(void 0),m(void 0),i(""),D("")),r.error&&C(),A(e?.startDate,e?.endDate,!1))},[r.value]);var E=useFocusCallback(t);const S=(e,t)=>{var a,r="string"==typeof e?e:e.target.value,n=""!==r&&void 0!==r,o=n?tryParseDateText(r):void 0,s=n?o?parse(o,dateFormat,0):new Date(NaN):void 0,e=t===DateInputType.Start,r=e?s:l,t=e?d:s;n?isValidDate(s)?e?(c(r),i(o),(a=!isValidDate(t)||isAfter(r,t))&&(m(r),D(o)),C(),a=a?r:t,T(r,a)):(m(t),D(o),(a=!isValidDate(r)||isBefore(t,r))&&(c(t),i(o)),C(),a=a?t:r,T(a,t)):(C({status:"invalid"}),T(),(e?c:m)(new Date(NaN))):((e?void 0===t||isValidDate(t):void 0===r||isValidDate(r))&&C(),T(),(e?c:m)(void 0))};const R=(e,t)=>{(t===DateInputType.Start?i:D)(e.target.value)},F=(e,t)=>{var a;e.stopPropagation(),"Enter"===e.key?(a=t===DateInputType.Start?s:u,S(a,t)):"Escape"===e.key&&(e=t===DateInputType.Start?getDateAsLocaleFormattedString(l):getDateAsLocaleFormattedString(d),S(e,t))},T=(e,t)=>{L(e,t)&&A(e,t)},L=(e,t)=>{var a=n.current;return!(e||t||!a)||(!(!e||!t||a)||!!(e&&t&&a)&&(!isEqual(e,a.startDate)||!isEqual(t,a.endDate)))},C=e=>{r.error=e,t.forceUpdate()},A=(e,t,a=!0)=>{t=e&&t?{refValueType:"daterange",startDate:e,endDate:t}:void 0;n.current=r.value=t,a&&v.post("changed",{name:g,value:r.value})};e={startDate:n.current?.startDate||new Date,endDate:n.current?.endDate||new Date,key:"selection",showDateDisplay:!1};return React.createElement(FormElement,{component:t,element:r,legacyMode:!0},React.createElement("div",{className:"outer",title:f},React.createElement("div",{className:y},React.createElement("input",{ref:E,disabled:p,type:"text",onChange:e=>R(e,DateInputType.Start),onBlur:e=>S(e,DateInputType.Start),onKeyDown:e=>F(e,DateInputType.Start),placeholder:dateFormat.toUpperCase(),value:s}),React.createElement("span",{className:"arrow"},renderArrowRight()),React.createElement("input",{disabled:p,type:"text",onChange:e=>R(e,DateInputType.End),onBlur:e=>S(e,DateInputType.End),onKeyDown:e=>F(e,DateInputType.End),placeholder:dateFormat.toUpperCase(),value:u})),React.createElement("div",{className:"buttonContainer"},React.createElement("button",{className:"calendarButton",disabled:p,onClick:()=>{o(!a)}},renderCalendar()),a&&React.createElement(Suspense,{fallback:null},React.createElement("div",{className:CssClasses.DROPDOWN},React.createElement(DateRange,{dateDisplayFormat:dateFormat,editableDateInputs:!1,months:1,direction:"horizontal",ranges:[e],onChange:e=>{var t=e.selection.startDate,e=e.selection.endDate;c(t),i(getDateAsLocaleFormattedString(t)),m(e),D(getDateAsLocaleFormattedString(e)),C(),T(t,e)},locale:currentLocale}),React.createElement("button",{className:"done",onClick:()=>{o(!1)}},v.renderText("@common-done")))))))};export default DateRangePicker;
1
+ import Box from"@vertigis/react-ui/Box";import BaseDateRangePicker from"@vertigis/react-ui/DateRangePicker";import{formControlClasses}from"@vertigis/react-ui/FormControl";import FormHelperText from"@vertigis/react-ui/FormHelperText";import FormLabelTextField from"@vertigis/react-ui/FormLabelTextField";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import{useEffect,useRef,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{areValuesEqual,convertToDateRangeRef,hasErrorChanged,isInvalidDate}from"../dateUtilities.js";import{makeUniqueId}from"../utils.js";const PREFIX="DateRangePicker",dateRangePickerClasses={root:`${PREFIX}-root`,toLabel:`${PREFIX}-toLabel`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${formControlClasses.root}`]:{flexGrow:1},[`.${dateRangePickerClasses.toLabel}`]:{marginLeft:e(2),marginRight:e(2),paddingTop:e(2),alignSelf:"center"}})),DateRangePicker=({className:e,component:t,element:r})=>{const[a,o]=useState(-1),[n,l]=useState([!1,!1]),s=useRef(),[i,c]=useState(!1),[m,u]=useState([null,null]),p=useRef(!0);useEffect(()=>{var e=convertToDateRangeRef(r.value),e=[e?.startDate||null,e?.endDate||null];u(e),E(e)},[r.value]),useEffect(()=>{var e,t;p.current?p.current=!1:(e=0===a?n[0]:isInvalidDate(m[0]),t=1===a?n[1]:isInvalidDate(m[1]),l([e,t]),e||t?d({status:"invalid"}):d(),i||-1!==a||r.error||E(m)&&R.post("changed",{name:g,value:r.value}))},[i,a]);const d=e=>{hasErrorChanged(r,e)&&(r.error=e,t.forceUpdate())};var f=!t.enabled;const{host:R,name:g}=t.props,v=R.renderText(r.tooltip),F=useFocusCallback(t),E=e=>{if(e[0]&&e[1]){e={refValueType:"daterange",startDate:e[0],endDate:e[1]};if(!areValuesEqual(r,e))return r.value=e,!0}else if(void 0!==r.value)return!(r.value=void 0);return!1},P=`${makeUniqueId(g)}-input`;return React.createElement(Root,{className:clsx(e,dateRangePickerClasses.root),component:t,element:r,inputId:P},r.error&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},s.current),React.createElement(BaseDateRangePicker,{disabled:f,onChange:e=>{u(e)},onOpen:()=>{c(!0)},onClose:()=>{c(!1)},renderInput:(e,t)=>(s.current=e.inputProps?.placeholder,e.error=!!r.error&&n[0],e.inputProps={...e.inputProps,id:P,title:v,onBlur:()=>{o(-1)},onFocus:()=>{o(0)}},e.inputRef=F,t.error=!!r.error&&n[1],t.inputProps={...t.inputProps,title:v,onBlur:()=>{o(-1)},onFocus:()=>{o(1)}},React.createElement(React.Fragment,null,React.createElement(FormLabelTextField,{...e}),React.createElement(Box,{className:dateRangePickerClasses.toLabel}," ",R.renderText("@common-to")," "),React.createElement(FormLabelTextField,{...t}))),value:m}))};export default DateRangePicker;export{dateRangePickerClasses};
@@ -1,9 +1,7 @@
1
1
  /// <reference types="react" />
2
- import { FormComponent } from "../FormComponent";
3
- import { defs } from "../FormHost";
4
- interface DateTimePickerProps {
5
- component: FormComponent;
6
- element: defs.Element;
7
- }
8
- declare const _default: (props: DateTimePickerProps) => JSX.Element;
9
- export default _default;
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Date Time Picker" Form Element.
5
+ */
6
+ declare const DateTimePicker: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default DateTimePicker;
@@ -1 +1 @@
1
- import{useState}from"react";import*as React from"react";import{Calendar}from"../Calendar.js";import FormElement from"../FormElement.js";import{renderClock}from"../assets/datetime.js";import{useFocusCallback}from"../common.js";import DatePicker from"./DatePicker.js";import TimePickerInput from"./TimePickerInput.js";export default e=>{const[t,a]=useState(!1),[o,n]=useState(!1),{component:r,element:i}=e,{host:l,name:c}=r.props;var s=useFocusCallback(r),u=l.renderText(i.tooltip);const m=((e,t)=>{if("object"==typeof e&&null!==e)switch(e.refValueType){case"date":case"time":case"datetime":t=e.format}if("object"!=typeof t)return"app"===t?t:"device";if(null===t)return"device";var a=t.locale,o=t.timezone;return"string"==typeof a&&"string"==typeof o?{locale:a,timezone:o}:"device"})(i.value,i.format),d=Calendar.useNative(),p=((e,t)=>{if("object"==typeof e){if(null===e)return;switch(e.refValueType){case"date":case"time":case"datetime":break;default:return}e=e.value}if("number"==typeof e||"string"==typeof e){const a=t.coerceIntoValue(e);if(void 0!==a&&null!==a&&isFinite(a.valueOf()))return a}})(i.value,d);let f="datetime",v=(e=>{if("object"==typeof e&&null!==e)switch(e.refValueType){case"date":case"time":case"datetime":return e.refValueType}})(i.value);"DatePicker"===i.type&&(f="date"),"TimePicker"===i.type&&(f="time");let g=p;"datetime"===f&&"date"===v?g=void 0:v=f;e={calendar:d,disabled:!r.enabled,doneText:l.renderText("@common-done"),placeholder:l.renderText(i.prompt),title:u};function k(e,t){return void 0===(e=null!=e&&!isFinite(e.valueOf())?void 0:e)?void 0!==p:void 0===p||(v!==t||("date"===t&&((e=new Date(e)).setHours(p.getHours()),e.setMinutes(p.getMinutes()),e.setSeconds(p.getSeconds()),e.setMilliseconds(p.getMilliseconds())),"time"===t&&((e=new Date(e)).setFullYear(p.getFullYear()),e.setMonth(p.getMonth()),e.setDate(p.getDate())),p.valueOf()!==e.valueOf()))}u=()=>{var e=!o;n(e),e&&a(!1)};const y=[];function T(e,t){void 0!==e&&isFinite(e.valueOf())?i.value={refValueType:t,format:m,display:d.format(e,Calendar.fullFormat),value:e.valueOf()}:i.value=void 0}return"DatePicker"!==i.type&&"DateTimePicker"!==i.type||y.push(React.createElement(DatePicker,{component:r,element:i,isOpen:t,key:"date-picker",onChange:function(e){let t=f;if("datetime"===f&&void 0!==e&&("date"===v&&(t="date"),void 0!==p)){const a=d.coerceIntoLocal(p),o=d.coerceIntoLocal(e);o.setHours(a.getHours()),o.setMinutes(a.getMinutes()),o.setSeconds(a.getSeconds()),o.setMilliseconds(a.getMilliseconds()),e=d.coerceIntoValue(o)}k(e,t)&&(T(e,t),r.forceUpdate(),l.post("changed",{name:c,value:i.value}))},onPopupToggle:()=>{var e=!t;a(e),e&&n(!1)},value:p})),"TimePicker"!==i.type&&"DateTimePicker"!==i.type||y.push(React.createElement("div",{className:"outer",key:"time-picker"},React.createElement("div",{className:"inner"},React.createElement(TimePickerInput,{...e,isOpen:o,onChange:function(e){let t=f;if("datetime"===f&&void 0!==p)if(void 0!==e){const a=d.coerceIntoLocal(p),o=d.coerceIntoLocal(e);o.setFullYear(a.getFullYear()),o.setMonth(a.getMonth()),o.setDate(a.getDate()),e=d.coerceIntoValue(o)}else e=p,t="date";k(e,t)&&(T(e,t),r.forceUpdate(),l.post("changed",{name:c,value:i.value}))},onPopupToggle:u,ref:s,value:g})),React.createElement("button",{className:"clockButton",disabled:e.disabled,onClick:u},renderClock()))),T(p,v),React.createElement(FormElement,{component:r,element:i,legacyMode:!0},y)};
1
+ import{buttonBaseClasses}from"@vertigis/react-ui/ButtonBase";import{clockClasses}from"@vertigis/react-ui/ClockPicker";import BaseDateTimePicker from"@vertigis/react-ui/DateTimePicker";import FormHelperText from"@vertigis/react-ui/FormHelperText";import FormLabelTextField from"@vertigis/react-ui/FormLabelTextField";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect,useRef,useState}from"react";import{Calendar}from"../Calendar.js";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{hasErrorChanged,isInvalidDate,makeProperFormat,makeProperValue,updateElementValue}from"../dateUtilities.js";import{makeUniqueId}from"../utils.js";const StylableDateTimePicker=e=>{const{PopperProps:t={},className:r,...a}=e;return React.createElement(BaseDateTimePicker,{PopperProps:{...t,className:clsx(t.className,r)},...a})},StyledDateTimePicker=styled(StylableDateTimePicker)(({theme:{palette:e}})=>({[`& .${clockClasses.amButton}, .${clockClasses.pmButton}`]:{[`&.${buttonBaseClasses.focusVisible}`]:{color:e.action.active}}})),DateTimePicker=({className:e,component:t,element:r})=>{const[a,o]=useState(!1),[l,s]=useState(!1),[i,m]=useState(null),c=useRef(),n=useRef(!0),{host:u,name:p}=t.props;var d=useFocusCallback(t);const f=u.renderText(r.tooltip),k=makeProperFormat(r.value,r.format),P=Calendar.useNative(),v="datetime";useEffect(()=>{var e=makeProperValue(r.value,P);updateElementValue(r,e,v,k,P),m(e||null)},[r.value]),useEffect(()=>{n.current?n.current=!1:l||a||(isInvalidDate(i)?F({status:"invalid"}):(F(),updateElementValue(r,i,v,k,P)&&u.post("changed",{name:p,value:r.value})))},[l,a]);const F=e=>{hasErrorChanged(r,e)&&(r.error=e,t.forceUpdate())},T=`${makeUniqueId(p)}-input`,E=u.renderText(r.prompt);return React.createElement(FormElement,{className:e,component:t,element:r,inputId:T},r.error&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},c.current),React.createElement(StyledDateTimePicker,{disabled:!t.enabled,key:"date-picker",inputRef:d,onChange:e=>{m(e)},onOpen:()=>{s(!0)},onClose:()=>{s(!1)},renderInput:e=>(c.current=e.inputProps?.placeholder,e.error=!!r.error,e.inputProps={...e.inputProps,id:T,onBlur:()=>{o(!1)},onFocus:()=>{o(!0)},placeholder:E||e.inputProps?.placeholder,title:f},React.createElement(FormLabelTextField,{...e})),value:i}))};export default DateTimePicker;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Drop Down List" Form Element.
5
+ */
6
+ declare const DropDownList: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default DropDownList;
@@ -0,0 +1 @@
1
+ import NativeSelect from"@vertigis/react-ui/NativeSelect";import*as React from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{makeSafeClassName,makeUniqueId,sortItems}from"../utils.js";const DEFAULT_VALUE="__default",DropDownList=({className:e,component:a,element:r})=>{const{host:o,name:n}=a.props;var t=`${makeUniqueId(n)}-input`;const m=sortItems(r);var l=a.enabled,s=o.renderText(r.tooltip);return React.createElement(FormElement,{className:e,component:a,element:r,inputId:t},React.createElement(NativeSelect,{disabled:!l,inputProps:{id:t},inputRef:e=>renderFocus(e,n,o),onChange:e=>{var t=e.currentTarget.value,e=m[t].value;r.current=t,r.value=e,a.forceUpdate(),o.post("changed",{name:n,item:t,value:e})},title:s,value:r.current||DEFAULT_VALUE},void 0===r.current&&React.createElement("option",{key:"none",value:DEFAULT_VALUE,disabled:!0},o.renderText(r.prompt)),Object.keys(m).map(e=>{var t=m[e],a=o.renderText(t.label),r=t.styleName?makeSafeClassName(t.styleName):void 0;return React.createElement("option",{className:r,key:e,value:e,title:o.renderText(t.tooltip),disabled:!1===t.enabled},a)})))};export default DropDownList;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ export declare const filePickerClasses: {
4
+ file: string;
5
+ label: string;
6
+ list: string;
7
+ };
8
+ declare const FilePicker: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
9
+ export default FilePicker;
@@ -0,0 +1 @@
1
+ import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import IconButton from"@vertigis/react-ui/IconButton";import Stack from"@vertigis/react-ui/Stack";import Plus from"@vertigis/react-ui/icons/Plus";import Trash from"@vertigis/react-ui/icons/Trash";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{isFilesRef}from"../utils.js";import Markdown from"./Markdown.js";const PREFIX="FilePicker",filePickerClasses={file:`${PREFIX}-file`,label:`${PREFIX}-label`,list:`${PREFIX}-list`},Root=styled(FormElement)(({theme:{palette:e,spacing:t}})=>({[`.${filePickerClasses.list}`]:{marginBottom:t(1),marginTop:t(1),[`.${filePickerClasses.file}`]:{alignItems:"center",display:"flex",gap:t(1),[`.${filePickerClasses.label}`]:{border:`1px solid ${e.grey[200]}`,flexGrow:1,fontStyle:"italic",lineHeight:1,overflow:"hidden",padding:t(1),textOverflow:"ellipsis",whiteSpace:"nowrap"}}}})),FilePicker=({className:e,component:i,element:r})=>{const{host:a,name:t}=i.props;var l=r.size;let s=r.value,o=5,n;"number"==typeof l&&(o=1<l?Math.ceil(l):1),s&&(isFilesRef(s)&&Array.isArray(s.files)||(r.value=s=void 0));var c=a.renderText(r.tooltip);let m=i.enabled;const f=[];if(void 0!==s){m=i.enabled&&s.files.length<o;var p=a.renderText("@file-picker-remove-item-label");for(const d of s.files){var u=f.length;f.push(React.createElement(Box,{key:"$"+u,className:filePickerClasses.file},React.createElement("label",{className:filePickerClasses.label,title:d.name},d.name),React.createElement(IconButton,{"aria-label":p,disabled:!i.enabled,onClick:(e=>()=>{s?.files&&1<s.files.length?s.files.splice(e,1):r.value=void 0,i.forceUpdate(),a.post("changed",{name:t,value:r.value})})(u),ref:e=>renderFocus(e,t,a),title:p},React.createElement(Trash,null))))}}f.push(React.createElement(Box,{key:"footer"},React.createElement(Button,{color:"primary",disabled:!m,onClick:()=>{n&&(n.value="",n.click())},ref:e=>{renderFocus(e,t,a)},startIcon:React.createElement(Plus,null),title:c,variant:"outlined"},React.createElement(Markdown,{host:a,inline:!0,text:r.prompt||""}))));l=1!==o;return React.createElement(Root,{className:e,component:i,element:r},React.createElement(Stack,{className:filePickerClasses.list},f),React.createElement("input",{type:"file",style:{display:"none"},title:c,onChange:e=>(e=>{var t=e.files;if(t?.length){const l=s?.files||[];for(let e=0;e<t.length&&l.length!==o;e++)l.push(t[e]);e={refValueType:"files",files:l};r.value=e,i.forceUpdate(),a.post("changed",{name:i.props.name,value:e})}})(e.target),multiple:l,accept:r.fileTypes,ref:e=>{n=e}}))};export default FilePicker;export{filePickerClasses};
@@ -0,0 +1,23 @@
1
+ /// <reference types="react" />
2
+ import { FormComponent } from "../FormComponent";
3
+ interface FormProps {
4
+ /** The CSS class name of the root element. */
5
+ className?: string;
6
+ /**
7
+ * The `FormComponent` being used to render the Form Elements within this Component.
8
+ */
9
+ component: FormComponent;
10
+ }
11
+ export declare const formClasses: {
12
+ body: string;
13
+ footer: string;
14
+ formElementContent: string;
15
+ formElementTitle: string;
16
+ formElementWithTitleBeside: string;
17
+ header: string;
18
+ main: string;
19
+ root: string;
20
+ row: string;
21
+ };
22
+ declare const Form: ({ className, component }: FormProps) => JSX.Element;
23
+ export default Form;
@@ -0,0 +1 @@
1
+ import AdapterDateFns from"@vertigis/react-ui/AdapterDateFns";import Box from"@vertigis/react-ui/Box";import{LicenseInfo}from"@vertigis/react-ui/LicenseInfo";import LocalizationProvider from"@vertigis/react-ui/LocalizationProvider";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect,useState}from"react";import{FormComponent,FormElementComponent}from"../FormComponent.js";import{loadLocale}from"../dateUtilities.js";import{getKeyString}from"../keyboard.js";import{sort}from"../utils.js";const PREFIX="Form",formClasses={body:`${PREFIX}-body`,footer:`${PREFIX}-footer`,formElementContent:`${PREFIX}-element-content`,formElementTitle:`${PREFIX}-element-title`,formElementWithTitleBeside:`${PREFIX}-element-with-title-beside`,header:`${PREFIX}-header`,main:`${PREFIX}-main`,root:`${PREFIX}-root`,row:`${PREFIX}-row`},Root=styled(Box)(e=>({"h1, h2, h3":{margin:0},[`.${formClasses.formElementWithTitleBeside}`]:{alignItems:"start",display:"grid",gridTemplateColumns:"1fr 2fr",[`> .${formClasses.formElementTitle}`]:{gridColumnStart:1,margin:0,overflowWrap:"anywhere"},[`> .${formClasses.formElementContent}`]:{display:"inline-flex",flexDirection:"column",gridColumnStart:2,overflow:"auto"}},[`.${formClasses.row}`]:{display:"flex",gap:"0.5em","> *":{flexGrow:1},"> .CheckBox, > .CheckGroup, > .Image, > .Number, > .RadioGroup":{flexGrow:0},[`.${formClasses.formElementWithTitleBeside}`]:{gridTemplateColumns:"1fr 1fr"}}}));LicenseInfo.setLicenseKey("dc21e4b722db0484344d94e6f3db523fT1JERVI6NjQ4MTMsRVhQSVJZPTE3MTM2Nzk1MDEyNzQsS0VZVkVSU0lPTj0x");const Form=({className:e,component:t})=>{const[o,r]=useState();useEffect(()=>{let t=!0;return loadLocale(i).then(e=>{t?r(e):console.warn("Component was unmounted while loading the locale.")}),()=>{t=!1}},[]);const i=t.props.host,n={host:i,type:"header",children:[]},a={host:i,type:"body",children:[]},l={host:i,type:"main",children:[]},m={host:i,type:"footer",children:[]},s={host:i,type:"body",children:[]},c={},d=[];function f(e){return"Section"!==e}function p(e){e=u[e];return null==e||!f(e.type)&&(!0!==e.hoisted&&!1!==e.visible)}function h(e){return e===n||e===a||e===m?`${e.type}-section`:e.name}const u=sort(t.props.host.form.elements);for(const b in u){var y,E=u[b];if(!0!==(g=E).hoisted&&(!1!==g.visible&&f(g.type)))if(!0!==E.overlay){let e=function(e){if(void 0===e)return a;if("header"===e)return n;if("footer"===e)return m;let t;t="object"==typeof e?e.name:e;let o=(e=>{for(const t of d)if(t.name===e)return t})(t);return void 0===o&&(o={host:i,name:t,type:"section",children:[]},d.push(o)),o}(E.section);void 0!==E.rowNumber&&(y=h(e),e=function(e,t){let o=c[t];o=o||(c[t]=[]);let r=o[e];return void 0===r&&(r=o[e]={host:i,type:"row",children:[]}),r}(E.rowNumber,y)),e.children.push(React.createElement(FormElementComponent,{key:b,host:i,type:"element",name:b}))}else s.children.push(React.createElement(FormElementComponent,{key:b,host:i,type:"element",name:b}))}var g;const C=[];if(0<n.children.length&&C.push(React.createElement(FormComponent,{key:"header",...n})),0<s.children.length)C.push(React.createElement(FormComponent,{key:"main",...s}));else{R(a);let e=void 0,t=0;for(const k of d){var F=k.name;i.isAccordionSection(u[F])?p(F)&&(e?e.push(k):e=[k]):(e&&(x(e,++t),e=void 0),p(F)&&R(k))}e&&(x(e,++t),e=void 0),0<l.children.length&&C.push(React.createElement(FormComponent,{key:"main",...l}))}function v(e){if(!function(e){var t=h(e),o=c[t];if(o)for(const i of Object.keys(o).sort((e,t)=>parseInt(e)-parseInt(t))){var r,n=o[i];1<n.children.length?(r=`row-${i}`,e.children.push(React.createElement(FormComponent,{key:r,...n}))):1===n.children.length&&e.children.push(...n.children)}}(e),0<e.children.length){var t=e===a?"body":`$${e.name}`;return React.createElement(FormComponent,{key:t,...e})}}function R(e){e=v(e);e&&l.children.push(e)}function x(e,t){const o=[];for(const n of e){var r=v(n);r&&o.push(r)}e={children:o,host:i,name:`accordionGroup${t}`,type:"accordionGroup"};l.children.push(React.createElement(FormComponent,{key:`accordionGroup${t}`,...e}))}return 0<m.children.length&&C.push(React.createElement(FormComponent,{key:"footer",...m})),React.createElement(Root,{className:clsx(e,formClasses.root),onKeyDown:function(e){"enter"===getKeyString(e)&&(e.target instanceof HTMLButtonElement||i.post("clicked"))},ref:function(e){i.renderFocus(e)}},React.createElement(LocalizationProvider,{dateAdapter:AdapterDateFns,adapterLocale:o,localeText:{start:i.renderText("@date-range-picker-start-text"),end:i.renderText("@date-range-picker-end-text"),cancelButtonLabel:i.renderText("@common-cancel"),clearButtonLabel:i.renderText("@common-clear"),okButtonLabel:i.renderText("@common-ok"),todayButtonLabel:i.renderText("@common-today")}},C))};export default Form;export{formClasses};
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import { InputBaseProps } from "@vertigis/react-ui/InputBase";
3
+ interface FormLabelNumberFieldProps {
4
+ disabled: boolean;
5
+ id?: string;
6
+ inputProps: InputBaseProps["inputProps"];
7
+ onChange: (value: number | undefined) => void;
8
+ label: string;
9
+ value: number;
10
+ max: number;
11
+ maxDecimalPlaces: number;
12
+ min: number;
13
+ }
14
+ declare const FormLabelNumberField: (props: FormLabelNumberFieldProps) => JSX.Element;
15
+ export default FormLabelNumberField;
@@ -0,0 +1 @@
1
+ import FormControl from"@vertigis/react-ui/FormControl";import FormLabel from"@vertigis/react-ui/FormLabel";import NumberInput from"@vertigis/react-ui/NumberInput";import{useId}from"@vertigis/react-ui/utils/react";import*as React from"react";const FormLabelNumberField=e=>{var{disabled:r,id:t,inputProps:a,label:m,max:i,maxDecimalPlaces:o,min:l,onChange:u,value:n}=e,e=useId(t),t=`${e}-label`;return React.createElement(FormControl,{disabled:r},React.createElement(FormLabel,{htmlFor:e,id:t},m),React.createElement(NumberInput,{id:e,inputProps:a,max:i,maxDecimalPlaces:o,min:l,onChange:u,size:"small",value:n}))};export default FormLabelNumberField;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ declare const GeometryPicker: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
4
+ export default GeometryPicker;
@@ -0,0 +1 @@
1
+ import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import IconButton from"@vertigis/react-ui/IconButton";import List from"@vertigis/react-ui/List";import ListItemButton from"@vertigis/react-ui/ListItemButton";import Plus from"@vertigis/react-ui/icons/Plus";import Trash from"@vertigis/react-ui/icons/Trash";import*as React from"react";import{useState}from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{sanitizeGeometryRef,text}from"../utils.js";import GeometryPickerListItem from"./GeometryPickerListItem.js";import Markdown from"./Markdown.js";const GeometryPicker=({className:e,component:t,element:r})=>{const{host:i,name:n}=t.props;var o=r.size;let a=5;"number"==typeof o&&(a=1<o?Math.ceil(o):1),"number"==typeof o&&(a=1<o?Math.ceil(o):1);let l=[],c=[],s="",m=r.value=sanitizeGeometryRef(r.value);void 0!==m&&(l=m.geometry,B=r.itemLabel,Array.isArray(B)?c=B:(c=[],text.isMarkdown(B)?B.markdown&&(s=B):text.isStatus(B)?B.status&&(s=B.status):B&&(s=B)));let u=r.state;void 0!==u&&null!==u||(u=r.state=[]);const[d,p]=useState([]);const f=e=>{let t=u[e];return void 0!==t&&null!==t||(u.length<=e&&(u.length=e,u.push({})),t=u[e]),t},v=t=>()=>{1<l.length?(l.splice(t,1),u.splice(t,1),t<c.length&&c.splice(t,1)):(r.value=void 0,r.state=void 0);let e=[];for(const m of d)m<t?e.push(m):m>t&&e.push(m-1);p(e),i.post("changed",{name:n,value:m})};var h=e=>{t.enabled&&v(e)()},g=(e,t,r)=>{const o=f(e);o.focused=t,o.pending=r,i.renderState(n,"geometry",u)};let k=t.enabled;const y=[];if(void 0!==m){k=t.enabled&&m.geometry.length<a;var b=i.renderText("@geometry-picker-remove-item-label");for(const I of m.geometry){var x=y.length;f(x).content=I;var E=`checkbox-list-label-${x}`;y.push(React.createElement(GeometryPickerListItem,{deleteItem:h,disablePadding:!0,itemIndex:x,key:"$"+x,secondaryAction:React.createElement(IconButton,{"aria-label":b,className:"delete",disabled:!t.enabled,edge:"end",onClick:v(x),ref:e=>renderFocus(e,n,i),title:b},React.createElement(Trash,null)),updateHighlight:g},React.createElement(ListItemButton,{onClick:(o=>()=>{var e=d.indexOf(o);const t=[...d],r=f(o);-1===e?(r.checked=!0,t.push(o)):(r.checked=!1,t.splice(e,1)),p(t)})(x),ref:(t=>e=>{null!==e&&(e.disabled||i.renderFocus(e,n),e.checked=!!f(t).checked)})(x),selected:-1!==d.indexOf(x)},React.createElement(Markdown,{host:i,id:E,inline:!0,text:c[x]||s}))))}}const R=()=>{i.post("clicked",{name:n,value:m})};var B=i.renderText(r.tooltip);return t.enabled&&r.autoActivate&&(k&&setTimeout(()=>R()),delete r.autoActivate),React.createElement(FormElement,{className:e,component:t,element:r,ref:e=>{i.renderState(n,"geometry",null===e?void 0:u)}},React.createElement(List,null,y),React.createElement(Box,null,React.createElement(Button,{color:"primary",disabled:!k,onClick:R,ref:e=>renderFocus(e,n,i),startIcon:React.createElement(Plus,null),title:B,variant:"outlined"},React.createElement(Markdown,{host:i,inline:!0,text:r.prompt||""}))))};export default GeometryPicker;
@@ -0,0 +1,23 @@
1
+ /// <reference types="react" />
2
+ import { ListItemProps } from "@vertigis/react-ui/ListItem";
3
+ interface GeometryPickerListItemProps extends ListItemProps {
4
+ /**
5
+ * Numeric index referring to this item's position in the list.
6
+ */
7
+ itemIndex: number;
8
+ /**
9
+ * Callback for when the user presses "Delete" while this item is focused.
10
+ */
11
+ deleteItem: (itemIndex: number) => void;
12
+ /**
13
+ * Callback for updating the highlight style of the associated graphic on the map.
14
+ */
15
+ updateHighlight: (itemIndex: number, focused: boolean, hovered: boolean) => void;
16
+ }
17
+ declare const _default: (props: GeometryPickerListItemProps) => JSX.Element;
18
+ /**
19
+ * A GeometryPickerListItem is shown in the Geometry Picker form element.
20
+ * Its purpose is to aid with detecting changes in focus and hover state to
21
+ * aid with updating the styling of the corresponding graphics on the map.
22
+ */
23
+ export default _default;
@@ -0,0 +1 @@
1
+ import ListItem from"@vertigis/react-ui/ListItem";import*as React from"react";import{useEffect,useState}from"react";import{getKeyString}from"../keyboard.js";export default e=>{const[t,r]=useState(!1),[a,o]=useState(!1),{children:s,className:u,itemIndex:i,deleteItem:m,updateHighlight:c,...n}=e;return useEffect(()=>{c(i,t,a)},[t,a]),React.createElement(ListItem,{className:u,onBlurCapture:()=>r(!1),onFocusCapture:()=>r(!0),onKeyDownCapture:e=>{"delete"===getKeyString(e)&&m(i)},onMouseOut:()=>o(!1),onMouseOver:()=>o(!0),...n},s)};
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Horizontal Rule" Form Element.
5
+ */
6
+ declare const HorizontalRule: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default HorizontalRule;
@@ -0,0 +1 @@
1
+ import Divider from"@vertigis/react-ui/Divider";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{FormElementTypes}from"../constants.js";import{makeSafeClassName}from"../utils.js";const Root=styled(Divider)(({theme:{spacing:e}})=>({marginBottom:e(3),marginTop:e(3)})),HorizontalRule=({className:e,component:t,element:m})=>React.createElement(Root,{className:clsx(e,FormElementTypes.HORIZONTALRULE,{[makeSafeClassName(t.props.name)]:!!t.props.name,[makeSafeClassName(m.styleName)]:!!m.styleName})});export default HorizontalRule;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Image" Form Element.
5
+ */
6
+ declare const Image: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default Image;
@@ -0,0 +1 @@
1
+ import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import FormElement from"../FormElement.js";const Root=styled(FormElement)(()=>({overflow:"hidden",img:{alignSelf:"start"}})),Image=({className:e,component:t,element:o})=>{const r=t.props["host"];let m,l;var n=o.size;"number"==typeof n&&(l=n,m=n),"object"==typeof n&&("number"==typeof n.width&&(m=n.width),"number"==typeof n.height&&(l=n.height));let a;n=o.value;"string"==typeof n&&(a=n);n=r.renderText(o.tooltip);return React.createElement(Root,{className:e,component:t,element:o},React.createElement("img",{src:a,alt:n,title:n,width:m,height:l}))};export default Image;
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ export declare const itemPickerClasses: {
4
+ button: string;
5
+ clearIcon: string;
6
+ horizontal: string;
7
+ item: string;
8
+ items: string;
9
+ };
10
+ export interface ItemPickerProps extends BaseFormElementProps {
11
+ /**
12
+ * Defines the space between immediate children.
13
+ */
14
+ spacing?: number;
15
+ }
16
+ declare const ItemPicker: ({ className, component, element, spacing }: ItemPickerProps) => JSX.Element;
17
+ export default ItemPicker;
@@ -0,0 +1 @@
1
+ import Button from"@vertigis/react-ui/Button";import ButtonGroup from"@vertigis/react-ui/ButtonGroup";import Checkbox from"@vertigis/react-ui/Checkbox";import IconButton from"@vertigis/react-ui/IconButton";import Input from"@vertigis/react-ui/Input";import InputAdornment from"@vertigis/react-ui/InputAdornment";import List from"@vertigis/react-ui/List";import ListItem from"@vertigis/react-ui/ListItem";import ListItemButton from"@vertigis/react-ui/ListItemButton";import ListItemIcon from"@vertigis/react-ui/ListItemIcon";import ListItemText,{listItemTextClasses}from"@vertigis/react-ui/ListItemText";import Radio from"@vertigis/react-ui/Radio";import Stack from"@vertigis/react-ui/Stack";import Close from"@vertigis/react-ui/icons/Close";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{Orientation}from"../constants.js";import{getKeyString}from"../keyboard.js";import{isDataRef,isGeometryRef,makeSafeClassName}from"../utils.js";import Markdown from"./Markdown.js";const PREFIX="ItemPicker",itemPickerClasses={button:`${PREFIX}-list-item-button`,clearIcon:`${PREFIX}-clear-button`,horizontal:`${PREFIX}-horizontal`,item:`${PREFIX}-list-item`,items:`${PREFIX}-list-items`},Root=styled(FormElement)(({theme:{typography:e}})=>({[`.${itemPickerClasses.clearIcon}`]:{height:e.pxToRem(20),width:e.pxToRem(20)},[`.${itemPickerClasses.items}`]:{[`&.${itemPickerClasses.horizontal}`]:{display:"flex",flexWrap:"wrap",[`.${itemPickerClasses.item}`]:{width:"auto"}},[`.${itemPickerClasses.item}`]:{[`.${itemPickerClasses.button}`]:{paddingBottom:0,paddingTop:0,[`.${listItemTextClasses.primary}`]:{fontWeight:e.fontWeightRegular}}}}})),ItemPicker=({className:e,component:r,element:n,spacing:t})=>{const a=r.props["host"],i=r.props.name;void 0===t&&(t=1);const s=n.items||{};let c,m,l,d=n.state;function u(){const e=[];for(const o in s){var t=s[o];t.checked&&e.push(t)}c=0===e.length?n.value=void 0:n.value={refValueType:"items",items:e}}function p(e,t=!0){let o=d.keyToIndex[e];if(null==o||null===o){if(!t)return;d.keyToIndex[e]=d.length,d.push({}),o=d.keyToIndex[e]}return d[o]}function f(e,t){s[e].checked=t;const o=p(e);o&&(o.checked=t)}function o(t){return function(e){null!==e&&(e.disabled||a.renderFocus(e,i),e=!0===s[t].checked,p(t).checked=e)}}u(),function(){void 0!==d&&null!==d||(d=n.state=[]),d.keyToIndex||(d.keyToIndex={});const e={};for(const o in n.items){var t=p(o,!1);t&&(e[o]=t)}d=n.state=[],d.keyToIndex={};for(const i in e)d.keyToIndex[i]=d.length,d.push(e[i])}();const g=[];let k;switch(n.selectionMode){case"single":k="radio";break;case"multiple":k="checkbox"}for(const P in s){var I,v,h,R,x=s[P];p(P).content=function(e){if(e){if(isGeometryRef(e))return e.geometry;if(isDataRef(e)&&e.data)return e.data.geometry}}(x.value),!1!==x.visible&&(v=(I=r.enabled&&!1!==x.enabled)&&!!k,h=a.renderText(x.tooltip),R=clsx(itemPickerClasses.item,x.styleName?makeSafeClassName(x.styleName):void 0),x=React.createElement(Markdown,{host:a,text:x.label}),g.push(React.createElement(ListItem,{className:R,disabled:!I,disablePadding:!0,key:P},React.createElement(ListItemButton,{className:itemPickerClasses.button,onClick:v?(o=>()=>{var e=s[o].checked;if("single"===n.selectionMode){if(!e)for(const t in s)f(t,t===o)}else f(o,!e);u(),r.forceUpdate(),a.post("changed",{name:i,value:c}),a.renderState(i,"geometry",d)})(P):void 0,tabIndex:I?void 0:-1,title:h,"data-id":P,onBlur:I?e=>{delete p(e.currentTarget.dataset.id).focused,a.renderState(i,"geometry",d)}:void 0,onFocus:I?e=>{p(e.currentTarget.dataset.id).focused=!0,a.renderState(i,"geometry",d)}:void 0,onMouseOver:I?e=>{p(e.currentTarget.dataset.id).pending=!0,a.renderState(i,"geometry",d)}:void 0,onMouseOut:I?e=>{delete p(e.currentTarget.dataset.id).pending,a.renderState(i,"geometry",d)}:void 0},"checkbox"===k&&React.createElement(ListItemIcon,null,React.createElement(Checkbox,{edge:"start",checked:!0===s[P]?.checked,disableRipple:!0,inputRef:o(P),tabIndex:-1,value:P})),"radio"===k&&React.createElement(ListItemIcon,null,React.createElement(Radio,{edge:"start",checked:!0===s[P]?.checked,disableRipple:!0,inputRef:o(P),name:r.id,tabIndex:-1,value:P})),React.createElement(ListItemText,null,x)))))}var b=a.renderText(n.prompt);function y(){var e=m.value.toLowerCase();for(const t in s){const o=s[t];if(e){const i=a.renderText(o.label).toLowerCase();o.visible=-1!==i.indexOf(e)}else o.visible=!0}l.hidden=!e,r.forceUpdate()}function C(){m.value="",y()}var E="multiple"===n.selectionMode&&0<g.length,T=clsx(itemPickerClasses.items,{[itemPickerClasses.horizontal]:n.orientation===Orientation.HORIZONTAL});return React.createElement(Root,{className:e,component:r,element:n,ref:function(e){null===e?a.renderState(i,"geometry"):a.renderState(i,"geometry",d)}},React.createElement(Stack,{spacing:t},n.showFilter&&React.createElement(Input,{disabled:!r.enabled,endAdornment:React.createElement(InputAdornment,{position:"end"},React.createElement(IconButton,{disabled:!r.enabled,onClick:C,ref:e=>l=e,title:a.renderText("@common-clear")},React.createElement(Close,{className:itemPickerClasses.clearIcon}))),error:!1,fullWidth:!0,inputRef:e=>{m=e,renderFocus(e,i,a)},onChange:y,onKeyDown:e=>{"escape"===getKeyString(e)&&C()},placeholder:b,type:"text"}),E&&React.createElement(ButtonGroup,{color:"primary",variant:"outlined"},React.createElement(Button,{disabled:!r.enabled,onClick:function(){for(const e in s)f(e,!0);u(),r.forceUpdate(),a.post("changed",{name:i,value:c})}},a.renderText("@common-all")),React.createElement(Button,{disabled:!r.enabled,onClick:function(){for(const e in s)f(e,!1);u(),r.forceUpdate(),a.post("changed",{name:i,value:c})}},a.renderText("@common-none"))),React.createElement(List,{className:T,dense:!0},g)))};export default ItemPicker;export{itemPickerClasses};
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ export declare const listBoxClasses: {
4
+ select: string;
5
+ };
6
+ declare const ListBox: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default ListBox;
@@ -0,0 +1 @@
1
+ import{inputClasses}from"@vertigis/react-ui/Input";import{inputBaseClasses}from"@vertigis/react-ui/InputBase";import{nativeSelectClasses}from"@vertigis/react-ui/NativeSelect";import Select from"@vertigis/react-ui/Select";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import FormElement from"../FormElement.js";import{renderFocus}from"../common.js";import{makeSafeClassName,makeUniqueId,sortItems}from"../utils.js";const PREFIX="ListBox",listBoxClasses={select:`${PREFIX}-select`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${nativeSelectClasses.select}.${nativeSelectClasses.standard}.${nativeSelectClasses.multiple}.${inputBaseClasses.input}.${inputClasses.input}.${listBoxClasses.select}`]:{paddingRight:e(1)}})),ListBox=({className:e,component:i,element:a})=>{const{host:l,name:o}=i.props;var t=`${makeUniqueId(o)}-input`;const r=sortItems(a);!function(){const e=[];for(const s in r){var t=r[s];t.checked&&e.push(t)}0===e.length?a.value=void 0:a.value={refValueType:"items",items:e}}();const s=[],n=[];for(const v in r){const f=r[v];var c=l.renderText(f.label);const u=l.renderText(f.tooltip);f.checked=!0===f.checked;var m=clsx(f.styleName?makeSafeClassName(f.styleName):void 0);f.checked&&n.push(v);var p=!1===f.enabled?void 0:!!f.checked;s.push(React.createElement("option",{"aria-selected":p,className:m,key:v,title:u,value:v,disabled:!1===f.enabled},c))}s.length<1&&(i.enabled=!1);const u=l.renderText(a.tooltip)||void 0;let d;return"number"==typeof a.size&&(d=a.size),React.createElement(Root,{className:e,component:i,element:a,inputId:t},React.createElement(Select,{disabled:!i.enabled,inputProps:{"aria-multiselectable":!0,"aria-orientation":"vertical","aria-required":a.require,className:listBoxClasses.select,id:t,role:"listbox",size:d,title:u},inputRef:e=>renderFocus(e,o,l),multiple:!0,native:!0,onChange:e=>{const t=e.target["options"];for(let e=0;e<t.length;e++){var s=t.item(e),a=s.value;r[a].checked=s.selected}i.forceUpdate(),l.post("changed",{name:o})},value:n},s))};export default ListBox;export{listBoxClasses};
@@ -9,7 +9,7 @@ export interface MarkdownProps extends Omit<BaseMarkdownProps, "markdown" | "san
9
9
  /** The host that translatest text. */
10
10
  host: FormPresenterHost;
11
11
  /** The text to be rendered. */
12
- text: defs.Text;
12
+ text: defs.Text | undefined;
13
13
  }
14
14
  declare const Markdown: ({ host, text, escapeHtml, linkTarget, ...otherProps }: MarkdownProps) => JSX.Element;
15
15
  export default Markdown;
@@ -1 +1 @@
1
- import BaseMarkdown from"@vertigis/react-ui/Markdown";import*as React from"react";import{isMarkdown}from"../textUtilities.js";const Markdown=({host:t,text:e,escapeHtml:a=!0,linkTarget:r="_blank",...n})=>{var o,i=t.translateText(e);return("string"==typeof(o=i)?o:isMarkdown(o)&&o.markdown)?isMarkdown(i)?React.createElement(BaseMarkdown,{markdown:i.markdown,escapeHtml:a,linkTarget:r,...n}):React.createElement(React.Fragment,null,i):null};export default Markdown;
1
+ import BaseMarkdown from"@vertigis/react-ui/Markdown";import*as React from"react";import{hasContent,isMarkdown}from"../textUtilities.js";const Markdown=({host:t,text:e,escapeHtml:a=!0,linkTarget:r="_blank",...n})=>{e=t.translateText(e);return hasContent(e)?isMarkdown(e)?React.createElement(BaseMarkdown,{markdown:e.markdown,escapeHtml:a,linkTarget:r,...n}):React.createElement(React.Fragment,null,e):null};export default Markdown;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Number" Form Elements.
5
+ */
6
+ declare const NumberComponent: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default NumberComponent;
@@ -0,0 +1 @@
1
+ import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import*as React from"react";import{useEffect,useMemo,useRef,useState}from"react";import FormElement from"../FormElement.js";import{numberFormatConfiguration}from"../elements/Number.js";import{getKeyString}from"../keyboard.js";import{areValuesEqual,enforceConstraints,getNumberConstraints,sanitizePrecision}from"../numberUtilities.js";import{isNumber,isNumberRef,isString,makeUniqueId}from"../utils.js";const NumberComponent=({className:e,component:r,element:n})=>{const{host:t,name:o}=r.props;var a=!r.enabled;const[m,i]=useState(!1),[u,s]=useState(),l=useRef(!0);var c=`${makeUniqueId(o)}-input`,p=t.deriveLocale();const{decimals:f,numberConstraints:b}=useMemo(()=>{var e=n.format,r=getNumberConstraints(e,numberFormatConfiguration);return{decimals:sanitizePrecision(e?.precision,r.step,numberFormatConfiguration),numberConstraints:r}},[n.format]),{maximum:d,minimum:v,step:N}=b,g={fractionalDigits:f,locale:p},C=e=>{if("number"==typeof e)return{refValueType:"number",format:{lowerBound:v,precision:f,step:N,upperBound:d},display:t.formatNumber(e,g),numeric:e}},E=()=>{e=void 0===(e=u)?void 0:enforceConstraints(e,b),e=C(e);areValuesEqual(n,e)||(n.value=e,t.post("changed",{name:o,value:e}));var e=e?.numeric;e!==u&&s(e)};useEffect(()=>{l.current?l.current=!1:m||E()},[m,u]),useEffect(()=>{var e=F(n.value),r=void 0===e?void 0:C(e);areValuesEqual(n,r)||(n.value=r),e!==u&&s(e)},[n.value]);const F=e=>{let r=void 0;if(isNumber(e))r=e;else if(isString(e)){if(!e)return;r=t.coerceNumber(e)}else"number"==typeof e?.numeric&&(r=e.numeric);return"number"==typeof r&&0*r!=0&&(r=void 0),void 0===r?r:enforceConstraints(r,b)};var x=t.renderText(n.prompt),p=t.renderText(n.tooltip);return React.createElement(FormElement,{className:e,component:r,element:n,inputId:c},React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>t.formatNumber(e,g),parseNumber:e=>t.coerceNumber(e)}},React.createElement(NumberInput,{allowUndefined:!0,correctOnBlur:!0,disabled:a,error:!!n.error,inputProps:{id:c,onKeyDown:e=>{var r,t=getKeyString(e);return"enter"===t?(r=e,E(),r.currentTarget.select(),r.stopPropagation(),r.preventDefault(),!1):"escape"===t?(t=e,(e=isNumberRef(n.value)?n.value.numeric:void 0)!==u&&s(e),t.currentTarget.select(),t.stopPropagation(),t.preventDefault(),!1):void 0}},inputRef:e=>{null===e||e.disabled||t.renderFocus(e,o)},max:d,maxDecimalPlaces:f,min:v,onBlur:()=>{i(!1)},onChange:e=>s(e),onFocus:()=>{i(!0)},placeholder:x,required:n.require,size:"small",title:p,value:u})))};export default NumberComponent;
@@ -1,9 +1,12 @@
1
- import * as React from "react";
2
- import { FormComponent } from "../FormComponent";
3
- import { Element } from "../FormDefinition";
4
- interface NumberRangeSliderProps {
5
- component: FormComponent;
6
- element: Element;
7
- }
8
- declare const NumberRangeSlider: React.FC<NumberRangeSliderProps>;
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ export declare const numberRangeSliderClasses: {
4
+ container: string;
5
+ inputContainer: string;
6
+ toLabel: string;
7
+ };
8
+ /**
9
+ * The component for the "Number Range Slider" Form Element.
10
+ */
11
+ declare const NumberRangeSlider: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
9
12
  export default NumberRangeSlider;
@@ -1 +1 @@
1
- import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{Range,getTrackBackground}from"react-range";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{DEFAULT_DECIMALS,DEFAULT_STEP,MIN_DECIMALS}from"../elements/NumberRangeSlider.js";import{getProcessedNumberFormat,getNumberSliderValues}from"../numberSliderUtilities.js";import{throttle}from"../utils.js";const NumberRangeSlider=e=>{const a=e.component,t=e.element,r=useMemo(()=>getProcessedNumberFormat(t.format,MIN_DECIMALS,DEFAULT_DECIMALS,DEFAULT_STEP),[]),o=useRef(null),n=e=>{t.value=o.current=e},[l,c]=useState(),[s,u]=useState();useEffect(()=>{var e;null!==o.current&&t.value===o.current||(e=getNumberSliderValues(t.value,r),n(e),M(e))},[t.value]);const{host:m,name:i}=a.props,p=!a.enabled;var d=useFocusCallback(a);const{lowerBound:g,upperBound:f,precision:v}=r,{showMinMaxLabels:x,manualEntry:b}=t;let y=r.step,E=t.showTickMarks;E=0<y&&E,0===y&&(y=1/Math.pow(10,v));const h={currency:r.currency,customDisplayFormat:r.customDisplayFormat,format:r.displayFormat,fractionalDigits:v,locale:m.deriveLocale()};e=m.renderText(t.tooltip);const N=e=>{e=A(e),M(e),(Array.isArray(o.current)||e[0]===g&&e[1]===f)&&(!Array.isArray(o.current)||e[0]===o.current[0]&&e[1]===o.current[1])||(n(e),m.post("changed",{name:i,value:t.value}))};const R=e=>{a.autoInput=!0},k=e=>e.target.select(),A=e=>{let t=e[0]<g?g:e[0]>f?f:e[0],r=e[1]>f?f:e[1]<g?g:e[1];return[t,r].sort((e,t)=>e-t)},S=useMemo(()=>throttle(e=>{m.post("dragged",{name:i,value:e})}),[]),F=(e,t)=>{const r=l.slice();let a=""!==e?Number(e):NaN;isNaN(a)?M(r):(0===t?(a<g&&(a=g),a>r[1]&&(a=r[1])):(a>f&&(a=f),a<r[0]&&(a=r[0])),r[t]=a,N(r))},M=e=>{c(e),u(e)};const T=(e,t,r,a,o="#fff",n="#197dc8")=>React.createElement("div",{style:{position:"absolute",top:t,color:o,fontWeight:"bold",fontSize:"14px",fontFamily:"Arial,Helvetica Neue,Helvetica,sans-serif",padding:"4px",borderRadius:"5px",backgroundColor:n,left:r,right:a,whiteSpace:"nowrap"}},e);return l?React.createElement(FormElement,{component:a,element:t,legacyMode:!0},React.createElement("div",{className:"slider-container",title:e},React.createElement(Range,{draggableTrack:!0,step:y,min:g,max:f,values:l,onChange:e=>{e=A(e),M(e),Array.isArray(t.value)&&e[0]===t.value[0]&&e[1]===t.value[1]||S(e)},onFinalChange:N,renderMark:e=>{var{props:t,index:r}=e,e=g+r*y,r=e>f,e=e>l[0]&&e<l[1]?"#197dc8":"#ccc";return E&&!r&&React.createElement("div",{...t,style:{...t.style,height:"16px",width:"2px",backgroundColor:e}})},renderTrack:e=>{var{props:t,children:e}=e;return React.createElement("div",{...t,style:{...t.style,height:"6px",margin:"50px 0px 24px",width:"100%",background:getTrackBackground({values:l,colors:["#ccc","#197dc8","#ccc"],min:g,max:f,rtl:!1})}},!1!==x&&T(m.formatNumber(g,h),"20px","-12px",void 0,"#333","#fff"),!1!==x&&T(m.formatNumber(f,h),"20px",void 0,"-12px","#333","#fff"),e)},renderThumb:e=>{var{props:t,value:r,index:a}=e,o=f-g,e=r-g,r=e<o/10?"0":"auto",e=9*o/10<e?"0":"auto";return React.createElement("div",{...t,style:{...t.style,height:"24px",width:"24px",borderRadius:"12px",backgroundColor:"#197dc8",display:"flex",justifyContent:"center",alignItems:"center",boxShadow:"0px 2px 4px #AAA",outline:"none"}},T(m.formatNumber(l[a],h),"-32px",r,e))},disabled:p,ref:d})),b||!s?null:React.createElement("div",{className:"inputs"},s.map((e,t)=>React.createElement("span",{key:t},0===t?m.renderText("@common-start"):m.renderText("@common-end"),React.createElement("input",{key:t,type:"number",disabled:p,min:0===t?g:l[0],max:0===t?l[1]:f,step:y,title:e+"",value:e,onBlur:e=>((e,t)=>{F(e.target.value,t)})(e,t),onChange:e=>((e,t)=>{const r=s.slice();r[t]=e.target.value,u(r),a.autoInput&&F(e.target.value,t)})(e,t),onKeyDown:e=>((e,t)=>{e.stopPropagation(),a.autoInput=!1,"Enter"===e.key?F(s[t]+"",t):"Escape"===e.key&&M(l.slice())})(e,t),onMouseDown:R,onFocus:k}))))):null};export default NumberRangeSlider;
1
+ import Box from"@vertigis/react-ui/Box";import{formControlClasses}from"@vertigis/react-ui/FormControl";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import Stack from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{numberFormatConfiguration}from"../elements/NumberRangeSlider.js";import{DEFAULT_CURRENCY}from"../numberFormatter.js";import{getMarks,getNumberConstraints,getNumberSliderValues,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle}from"../utils.js";import FormLabelNumberField from"./FormLabelNumberField.js";const PREFIX="NumberRangeSlider",numberRangeSliderClasses={container:`${PREFIX}-container`,inputContainer:`${PREFIX}-input-container`,toLabel:`${PREFIX}-to-label`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberRangeSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${numberRangeSliderClasses.inputContainer}`]:{marginTop:e(1),[`.${formControlClasses.root}`]:{flexGrow:1},[`.${numberRangeSliderClasses.toLabel}`]:{marginLeft:e(2),marginRight:e(2),paddingTop:e(2),alignSelf:"center"}}}})),NumberRangeSlider=({className:e,component:r,element:a})=>{const{host:t,name:o}=r.props;var n=!r.enabled;const{currency:i,customDisplayFormat:m,decimals:s,displayFormat:l,numberConstraints:u}=useMemo(()=>{var e=a.format,r=getNumberConstraints(e,numberFormatConfiguration),t=sanitizePrecision(e?.precision,r.step,numberFormatConfiguration);return{currency:e?.currency||DEFAULT_CURRENCY,customDisplayFormat:e?.customDisplayFormat,decimals:t,displayFormat:e?.displayFormat,numberConstraints:r}},[a.format]);var c=u["step"];const d=u.maximum,p=u.minimum,[b,g]=useState(!1),[f,v]=useState(!1),[C,F]=useState([p,d]),R=useRef(!0);var N=makeUniqueId(o);const x=`${N}-slider-input`;var S=!1!==a.showMinMaxLabels,E=!!a.showTickMarks,y=!1!==a.manualEntry;const L={currency:i,customDisplayFormat:m,format:l,fractionalDigits:s,locale:t.deriveLocale()};useEffect(()=>{var e;R.current?R.current=!1:f?$(C):b||(e=getNumberSliderValues(C,u),C[0]===e[0]&&C[1]===e[1]||F(e),h(a.value,e)||(a.value=e,t.post("changed",{name:o,value:a.value})))},[b,f,C]),useEffect(()=>{var e=getNumberSliderValues(a.value,u);h(a.value,e)||(a.value=e),h(C,e)||F(e)},[a.value]);const h=(e,r)=>void 0===e&&void 0===r[0]&&void 0===r[1]||(void 0===e&&null===r[0]&&null===r[1]||!(!Array.isArray(e)||2!==e.length||e[0]!==r[0]||e[1]!==r[1])),$=useMemo(()=>throttle(e=>{t.post("dragged",{name:o,value:e})}),[]),k=useFocusCallback(r);var D=t.renderText(a.tooltip),P=n&&!f,T=y?{max:d,min:p,onBlur:()=>{g(!1)},onFocus:()=>{g(!0)},step:c,title:D}:void 0;return React.createElement(Root,{className:e,component:r,element:a,inputId:`${x}-0`},React.createElement(Box,{className:numberRangeSliderClasses.container},React.createElement(Slider,{disabled:P,getAriaLabel:()=>t.renderText(a.title),getAriaValueText:e=>t.formatNumber(e,L),marks:getMarks(d,p,c,L,S,E),max:d,min:p,onChange:(e,r)=>{v(!0),Array.isArray(r)&&F(r)},onChangeCommitted:()=>{v(!1)},slotProps:{input:()=>({ref:e=>(null===e||e.id||(e.id=`${x}-${e.attributes["data-index"].value}`),k(e))})},step:c,title:D,value:C,valueLabelDisplay:"on",valueLabelFormat:(e,r)=>t.formatNumber(e,L)}),!1!=y&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{var r={fractionalDigits:L.fractionalDigits,locale:L.locale};return t.formatNumber(e,r)},parseNumber:e=>t.coerceNumber(e)}},React.createElement(Stack,{direction:"row",className:numberRangeSliderClasses.inputContainer},React.createElement(FormLabelNumberField,{disabled:n,id:`${N}-startInput`,inputProps:T,label:t.renderText("@common-start"),max:d,maxDecimalPlaces:s,min:p,onChange:e=>{void 0===e&&(e=p),F([e,C[1]])},value:C[0]}),React.createElement(Box,{className:numberRangeSliderClasses.toLabel}," ",t.renderText("@common-to")," "),React.createElement(FormLabelNumberField,{disabled:n,id:`${N}-endInput`,inputProps:T,label:t.renderText("@common-end"),max:d,maxDecimalPlaces:s,min:p,onChange:e=>{void 0===e&&(e=d),F([C[0],e])},value:C[1]})))))};export default NumberRangeSlider;export{numberRangeSliderClasses};
@@ -1,9 +1,10 @@
1
- import * as React from "react";
2
- import { FormComponent } from "../FormComponent";
3
- import { Element } from "../FormDefinition";
4
- interface NumberRangeSliderProps {
5
- component: FormComponent;
6
- element: Element;
7
- }
8
- declare const NumberSlider: React.FC<NumberRangeSliderProps>;
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ export declare const numberSliderClasses: {
4
+ container: string;
5
+ };
6
+ /**
7
+ * The component for the "Number Slider" Form Element.
8
+ */
9
+ declare const NumberSlider: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
9
10
  export default NumberSlider;
@@ -1 +1 @@
1
- import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{Range}from"react-range";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{DEFAULT_DECIMALS,DEFAULT_STEP,MIN_DECIMALS}from"../elements/NumberSlider.js";import{getProcessedNumberFormat,getNumberSliderValues}from"../numberSliderUtilities.js";const NumberSlider=e=>{const t=e.component,{host:n,name:r}=t.props,a=e.element,o=!t.enabled,l=useMemo(()=>getProcessedNumberFormat(a.format,MIN_DECIMALS,DEFAULT_DECIMALS,DEFAULT_STEP),[]),u=useRef(null),{lowerBound:s,upperBound:m,precision:c}=l,{showMinMaxLabels:i,manualEntry:p}=a,d={format:l.displayFormat,fractionalDigits:c,locale:n.deriveLocale()},f=e=>{var t;a.value=(t=e,{refValueType:"number",format:l,display:n.formatNumber(t,d),numeric:t}),u.current=e},[b,g]=useState(s),[v,x]=useState("");useEffect(()=>{var e=a.value;null!==u.current&&e?.numeric===u.current||(e=getNumberSliderValues(e,l,!0),f(e[0]),A(e[0]))},[a.value]);var E=useFocusCallback(t);let h=l.step,N=a.showTickMarks;N=0<h&&N,0===h&&(h=1/Math.pow(10,c));e=n.renderText(a.tooltip);const y=e=>{e=k(e),A(e),e!==u.current&&(f(e),n.post("changed",{name:r,value:a.value}))},S=e=>{x(e.target.value),t.autoInput&&w(e.target.value)},R=e=>{w(e.target.value)},F=e=>{e.stopPropagation(),t.autoInput=!1,"Enter"===e.key?w(v+""):"Escape"===e.key&&A(b)},M=e=>{t.autoInput=!0},C=e=>e.target.select(),k=e=>e<s?s:e>m?m:e,w=e=>{let t=""!==e?Number(e):NaN;isNaN(t)?A(t):(t<s&&(t=s),t>m&&(t=m),y(t))},A=e=>{g(e),x(e)};const D=(e,t,r,a,o="#fff",n="#197dc8")=>React.createElement("div",{style:{position:"absolute",top:t,color:o,fontWeight:"bold",fontSize:"14px",fontFamily:"Arial,Helvetica Neue,Helvetica,sans-serif",padding:"4px",borderRadius:"5px",backgroundColor:n,left:r,right:a,whiteSpace:"nowrap"}},e);return React.createElement(FormElement,{component:t,element:a,legacyMode:!0},React.createElement("div",{className:"slider-container",title:e},React.createElement(Range,{step:h,min:s,max:m,values:[b],onChange:e=>(e=>{e=k(e),A(e)})(e[0]),onFinalChange:e=>y(e[0]),renderMark:e=>{var{props:t,index:e}=e,e=s+e*h>m;return N&&!e&&React.createElement("div",{...t,style:{...t.style,height:"16px",width:"2px",backgroundColor:"#ccc"}})},renderTrack:e=>{var{props:t,children:e}=e;return React.createElement("div",{...t,style:{...t.style,height:"6px",margin:"50px 0px 24px",width:"100%",background:"#ccc"}},!1!==i&&D(n.formatNumber(s,d),"20px","-12px",void 0,"#333","#fff"),!1!==i&&D(n.formatNumber(m,d),"20px",void 0,"-12px","#333","#fff"),e)},renderThumb:e=>{var{props:t,value:r}=e,a=m-s,o=r-s,e=o<a/10?"0":"auto",o=9*a/10<o?"0":"auto";return React.createElement("div",{...t,style:{...t.style,height:"24px",width:"24px",borderRadius:"12px",backgroundColor:"#197dc8",display:"flex",justifyContent:"center",alignItems:"center",boxShadow:"0px 2px 4px #AAA",outline:"none"}},D(n.formatNumber(r,d),"-32px",e,o))},disabled:o,ref:E})),!1===p?null:React.createElement("div",{className:"inputs"},React.createElement("span",null,React.createElement("input",{type:"number",disabled:o,min:s,max:m,step:h,title:v+"",value:v,onBlur:R,onChange:S,onKeyDown:F,onMouseDown:M,onFocus:C}))))};export default NumberSlider;
1
+ import Box from"@vertigis/react-ui/Box";import{inputBaseClasses}from"@vertigis/react-ui/InputBase";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import{styled}from"@vertigis/react-ui/styles";import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{DEFAULT_CURRENCY}from"../numberFormatter.js";import{getNumberSliderValues,areValuesEqual,getMarks,getNumberConstraints,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle}from"../utils.js";const PREFIX="NumberSlider",numberSliderClasses={container:`${PREFIX}-container`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${inputBaseClasses.root}`]:{marginTop:e(1)}}})),NumberSlider=({className:e,component:r,element:a})=>{const{host:t,name:s}=r.props;var o=!r.enabled;const{currency:m,customDisplayFormat:i,decimals:l,displayFormat:n,numberConstraints:u}=useMemo(()=>{var e=a.format,r=getNumberConstraints(e),t=sanitizePrecision(e?.precision,r.step);return{currency:e?.currency||DEFAULT_CURRENCY,customDisplayFormat:e?.customDisplayFormat,decimals:t,displayFormat:e?.displayFormat,numberConstraints:r}},[a.format]),c=u["step"],p=u.maximum,d=u.minimum,[f,b]=useState(!1),[g,v]=useState(!1),[N,y]=useState(d),C=useRef(!0);var F=`${makeUniqueId(s)}-input`,E=t.deriveLocale(),x=!1!==a.showMinMaxLabels,R=!!a.showTickMarks,S=!1!==a.manualEntry;const D={currency:m,customDisplayFormat:i,format:n,fractionalDigits:l,locale:E},h=e=>({refValueType:"number",format:{currency:m,customDisplayFormat:i,displayFormat:n,lowerBound:d,precision:l,step:c,upperBound:p},display:t.formatNumber(e,D),numeric:e});useEffect(()=>{var e;C.current?C.current=!1:g?k(N):f||((e=getNumberSliderValues(N,u,!0)[0])!==N&&y(e),e=h(e),areValuesEqual(a,e)||(a.value=e,t.post("changed",{name:s,value:a.value})))},[f,g,N]),useEffect(()=>{var e=getNumberSliderValues(a.value,u,!0)[0],r=h(e);areValuesEqual(a,r)||(a.value=r),N!==e&&y(e)},[a.value]);const k=useMemo(()=>throttle(e=>{t.post("dragged",{name:s,value:h(e)})}),[]);var B=useFocusCallback(r),I=t.renderText(a.tooltip),E=o&&!g,o=o;return React.createElement(Root,{className:e,component:r,element:a,inputId:F},React.createElement(Box,{className:numberSliderClasses.container},React.createElement(Slider,{disabled:E,getAriaLabel:()=>t.renderText(a.title),getAriaValueText:e=>t.formatNumber(e,D),marks:getMarks(p,d,c,D,x,R),max:p,min:d,onChange:(e,r)=>{v(!0);r=Array.isArray(r)?r[0]:r;y(r)},onChangeCommitted:()=>{v(!1)},slotProps:{input:{id:F,ref:B}},step:c,title:I,value:"number"==typeof N?N:0,valueLabelDisplay:"on",valueLabelFormat:(e,r)=>t.formatNumber(e,D)}),!1!=S&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{var r={fractionalDigits:D.fractionalDigits,locale:D.locale};return t.formatNumber(e,r)},parseNumber:e=>t.coerceNumber(e)}},React.createElement(NumberInput,{correctOnBlur:!0,disabled:o,error:!!a.error,inputProps:{step:c,title:I},max:p,maxDecimalPlaces:l,min:d,onChange:e=>{void 0===e?y(d):y(e)},onFocus:()=>{b(!0)},onBlur:()=>{b(!1)},size:"small",value:N}))))};export default NumberSlider;export{numberSliderClasses};
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { BaseFormElementProps } from "../FormElement";
3
+ /**
4
+ * The component for the "Radio Group" Form Element.
5
+ */
6
+ declare const RadioGroup: ({ className, component, element }: BaseFormElementProps) => JSX.Element;
7
+ export default RadioGroup;