@vertigis/workflow 5.37.1 → 5.38.1

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 (382) hide show
  1. package/Collections.js +1 -1
  2. package/Hooks.d.ts +2 -2
  3. package/Hooks.js +1 -1
  4. package/IActivityHandler.d.ts +4 -4
  5. package/TemplateUtils.d.ts +1 -1
  6. package/activities/app/GetApplicationData.d.ts +1 -1
  7. package/activities/app/GetApplicationInfo.d.ts +1 -1
  8. package/activities/app/GetUserInfo.d.ts +1 -1
  9. package/activities/app/PublishEvent.d.ts +1 -1
  10. package/activities/app/RunCommand.d.ts +1 -1
  11. package/activities/app/RunOperation.d.ts +1 -1
  12. package/activities/app/SetApplicationData.d.ts +1 -1
  13. package/activities/arcgis/AddAttachment.d.ts +1 -1
  14. package/activities/arcgis/AddFeatureLayer.d.ts +1 -1
  15. package/activities/arcgis/AddFeatures.d.ts +2 -2
  16. package/activities/arcgis/AddGraphics.d.ts +1 -1
  17. package/activities/arcgis/ArcadeScript.d.ts +1 -1
  18. package/activities/arcgis/AreaEngineTask.d.ts +1 -1
  19. package/activities/arcgis/BufferEngineTask.d.ts +1 -1
  20. package/activities/arcgis/BufferServiceTask.d.ts +1 -1
  21. package/activities/arcgis/CastGeometry.d.ts +1 -1
  22. package/activities/arcgis/ClearGraphics.d.ts +1 -1
  23. package/activities/arcgis/ClipEngineTask.d.ts +1 -1
  24. package/activities/arcgis/ClosestFacilityTask.d.ts +1 -1
  25. package/activities/arcgis/CompareGeometries.d.ts +1 -1
  26. package/activities/arcgis/ConvertValueToArcGisFieldType.d.ts +1 -1
  27. package/activities/arcgis/CreateFeatureSet.d.ts +1 -1
  28. package/activities/arcgis/CreateGraphic.d.ts +1 -1
  29. package/activities/arcgis/CreatePoint.d.ts +1 -1
  30. package/activities/arcgis/CutEngineTask.d.ts +1 -1
  31. package/activities/arcgis/DeleteAttachments.d.ts +1 -1
  32. package/activities/arcgis/DeleteFeatures.d.ts +2 -2
  33. package/activities/arcgis/DensifyEngineTask.d.ts +1 -1
  34. package/activities/arcgis/DifferenceEngineTask.d.ts +1 -1
  35. package/activities/arcgis/DistanceEngineTask.d.ts +1 -1
  36. package/activities/arcgis/DistanceServiceTask.d.ts +1 -1
  37. package/activities/arcgis/ExtendedSpatialReferenceInfoEngineTask.d.ts +1 -1
  38. package/activities/arcgis/FeatureSetFromJson.d.ts +1 -1
  39. package/activities/arcgis/FlipEngineTask.d.ts +1 -1
  40. package/activities/arcgis/FromGeoCoordinateStringServiceTask.d.ts +1 -1
  41. package/activities/arcgis/GeneralizeEngineTask.d.ts +1 -1
  42. package/activities/arcgis/GenerateArcGisToken.d.ts +1 -1
  43. package/activities/arcgis/GenerateWebmapForReport.d.ts +2 -2
  44. package/activities/arcgis/Geocode.d.ts +1 -1
  45. package/activities/arcgis/GeometryFromJson.d.ts +1 -1
  46. package/activities/arcgis/Geoprocessing.d.ts +1 -1
  47. package/activities/arcgis/Geoprocessing.js +1 -1
  48. package/activities/arcgis/GeoprocessingAsync.d.ts +1 -1
  49. package/activities/arcgis/GetAttributeValue.d.ts +1 -1
  50. package/activities/arcgis/GetAttributeValues.d.ts +1 -1
  51. package/activities/arcgis/GetCentroid.d.ts +1 -1
  52. package/activities/arcgis/GetCodedValueDomain.d.ts +2 -2
  53. package/activities/arcgis/GetCurrentPosition.d.ts +1 -1
  54. package/activities/arcgis/GetFeatureGeometries.d.ts +1 -1
  55. package/activities/arcgis/GetFeatureGeometry.d.ts +1 -1
  56. package/activities/arcgis/GetFeatureLayerInfo.d.ts +2 -2
  57. package/activities/arcgis/GetFeatureSetExtent.d.ts +1 -1
  58. package/activities/arcgis/GetFeatureSetObjectIds.d.ts +1 -1
  59. package/activities/arcgis/GetFormElementItemsFromFeatures.d.ts +2 -2
  60. package/activities/arcgis/GetGeometryExtent.d.ts +1 -1
  61. package/activities/arcgis/GetGraphics.d.ts +1 -1
  62. package/activities/arcgis/GetLayer.d.ts +1 -1
  63. package/activities/arcgis/GetLayerDefinitionExpression.d.ts +1 -1
  64. package/activities/arcgis/GetLayerProperty.d.ts +1 -1
  65. package/activities/arcgis/GetLayerVisibility.d.ts +1 -1
  66. package/activities/arcgis/GetMap.d.ts +3 -2
  67. package/activities/arcgis/GetMapScreenshot.d.ts +1 -1
  68. package/activities/arcgis/GetPortalUser.d.ts +1 -1
  69. package/activities/arcgis/GetTable.d.ts +1 -1
  70. package/activities/arcgis/GetViewExtent.d.ts +1 -1
  71. package/activities/arcgis/GetViewpoint.d.ts +1 -1
  72. package/activities/arcgis/IntersectEngineTask.d.ts +1 -1
  73. package/activities/arcgis/LabelPointsServiceTask.d.ts +1 -1
  74. package/activities/arcgis/LengthEngineTask.d.ts +1 -1
  75. package/activities/arcgis/MapProvider.d.ts +1 -1
  76. package/activities/arcgis/NearestCoordinateEngineTask.d.ts +1 -1
  77. package/activities/arcgis/NearestVertexEngineTask.d.ts +1 -1
  78. package/activities/arcgis/NearestVerticesEngineTask.d.ts +1 -1
  79. package/activities/arcgis/OffsetEngineTask.d.ts +1 -1
  80. package/activities/arcgis/ProjectServiceTask.d.ts +1 -1
  81. package/activities/arcgis/QueryAttachmentInfos.d.ts +1 -1
  82. package/activities/arcgis/QueryTask.d.ts +1 -1
  83. package/activities/arcgis/RefreshLayer.d.ts +1 -1
  84. package/activities/arcgis/RegisterCorsUrl.d.ts +1 -1
  85. package/activities/arcgis/RelateEngineTask.d.ts +1 -1
  86. package/activities/arcgis/RelationServiceTask.d.ts +1 -1
  87. package/activities/arcgis/RelationshipQueryTask.d.ts +1 -1
  88. package/activities/arcgis/RemoveFeatureSetFields.d.ts +1 -1
  89. package/activities/arcgis/RemoveGraphics.d.ts +1 -1
  90. package/activities/arcgis/RemoveLayer.d.ts +1 -1
  91. package/activities/arcgis/RendererFromJson.d.ts +1 -1
  92. package/activities/arcgis/ReshapeServiceTask.d.ts +1 -1
  93. package/activities/arcgis/ReverseGeocode.d.ts +1 -1
  94. package/activities/arcgis/RotateEngineTask.d.ts +1 -1
  95. package/activities/arcgis/RouteTask.d.ts +1 -1
  96. package/activities/arcgis/RunPrint.d.ts +2 -2
  97. package/activities/arcgis/RunReport.d.ts +2 -2
  98. package/activities/arcgis/RunWorkflow.d.ts +1 -1
  99. package/activities/arcgis/SendLayerToAttributeTable.d.ts +1 -1
  100. package/activities/arcgis/ServiceAreaTask.d.ts +1 -1
  101. package/activities/arcgis/SetFeatureAttribute.d.ts +1 -1
  102. package/activities/arcgis/SetFeatureGeometry.d.ts +1 -1
  103. package/activities/arcgis/SetFeaturePopup.d.ts +1 -1
  104. package/activities/arcgis/SetFeatureSymbol.d.ts +1 -1
  105. package/activities/arcgis/SetImageryLayerOptions.d.ts +1 -1
  106. package/activities/arcgis/SetLayerDefinitionExpression.d.ts +1 -1
  107. package/activities/arcgis/SetLayerPopup.d.ts +1 -1
  108. package/activities/arcgis/SetLayerProperty.d.ts +1 -1
  109. package/activities/arcgis/SetLayerVisibility.d.ts +1 -1
  110. package/activities/arcgis/SetMap.d.ts +1 -1
  111. package/activities/arcgis/SetViewExtent.d.ts +1 -1
  112. package/activities/arcgis/SetViewpoint.d.ts +1 -1
  113. package/activities/arcgis/ShowFeaturePopup.d.ts +1 -1
  114. package/activities/arcgis/ShowResults.d.ts +1 -1
  115. package/activities/arcgis/SimplifyEngineTask.d.ts +1 -1
  116. package/activities/arcgis/SortFeatureSet.d.ts +1 -1
  117. package/activities/arcgis/SortFeatureSet.js +1 -1
  118. package/activities/arcgis/SymbolFromJson.d.ts +1 -1
  119. package/activities/arcgis/ToGeoCoordinateStringServiceTask.d.ts +1 -1
  120. package/activities/arcgis/UnionEngineTask.d.ts +1 -1
  121. package/activities/arcgis/UnionServiceTask.d.ts +1 -1
  122. package/activities/arcgis/UpdateAttachment.d.ts +1 -1
  123. package/activities/arcgis/UpdateFeatures.d.ts +2 -2
  124. package/activities/arcgis/runUtils.d.ts +3 -3
  125. package/activities/arcgis/shared.d.ts +2 -2
  126. package/activities/arcgis/tools.d.ts +2 -2
  127. package/activities/browser/GetBrowserInfo.d.ts +1 -1
  128. package/activities/browser/InjectCss.d.ts +1 -1
  129. package/activities/core/AddItem.d.ts +1 -1
  130. package/activities/core/AddItems.d.ts +1 -1
  131. package/activities/core/Annotation.d.ts +2 -2
  132. package/activities/core/Cast.d.ts +1 -1
  133. package/activities/core/ChannelProvider.d.ts +1 -1
  134. package/activities/core/ClearItems.d.ts +1 -1
  135. package/activities/core/Container.d.ts +1 -1
  136. package/activities/core/ConvertBytesToText.d.ts +1 -1
  137. package/activities/core/ConvertDataTableToFeatureSet.d.ts +1 -1
  138. package/activities/core/ConvertTextToBytes.d.ts +1 -1
  139. package/activities/core/ConvertToJson.d.ts +1 -1
  140. package/activities/core/CreateFile.d.ts +1 -1
  141. package/activities/core/CreateValue.d.ts +1 -1
  142. package/activities/core/DecodeUriComponent.d.ts +1 -1
  143. package/activities/core/Delay.d.ts +1 -1
  144. package/activities/core/EncodeUriComponent.d.ts +1 -1
  145. package/activities/core/Evaluate.d.ts +1 -1
  146. package/activities/core/EvaluateAsync.d.ts +1 -1
  147. package/activities/core/Exit.d.ts +1 -1
  148. package/activities/core/ForEach.d.ts +1 -1
  149. package/activities/core/FormatDate.d.ts +1 -1
  150. package/activities/core/GetBase64StringFromBytes.d.ts +1 -1
  151. package/activities/core/GetBase64StringFromFile.d.ts +1 -1
  152. package/activities/core/GetBytesFromBase64String.d.ts +1 -1
  153. package/activities/core/GetFirstItem.d.ts +1 -1
  154. package/activities/core/GetItemAtIndex.d.ts +1 -1
  155. package/activities/core/GetLastItem.d.ts +1 -1
  156. package/activities/core/GetLogLevel.d.ts +1 -1
  157. package/activities/core/GetTextFromFile.d.ts +1 -1
  158. package/activities/core/GetWorkflowInputs.d.ts +1 -1
  159. package/activities/core/If.d.ts +1 -2
  160. package/activities/core/Log.d.ts +1 -1
  161. package/activities/core/Loop.d.ts +1 -2
  162. package/activities/core/ParseJson.d.ts +1 -1
  163. package/activities/core/ParseNumber.d.ts +1 -1
  164. package/activities/core/ParseUrl.d.ts +1 -1
  165. package/activities/core/Placeholder.d.ts +1 -1
  166. package/activities/core/RegexMatches.d.ts +1 -1
  167. package/activities/core/RegexReplace.d.ts +1 -1
  168. package/activities/core/RemoveItem.d.ts +1 -1
  169. package/activities/core/RunActivity.d.ts +1 -1
  170. package/activities/core/RunSubworkflow.d.ts +1 -1
  171. package/activities/core/SetLogLevel.d.ts +1 -1
  172. package/activities/core/SetProperty.d.ts +1 -1
  173. package/activities/core/SetWorkflowOutput.d.ts +1 -2
  174. package/activities/core/Subworkflow.d.ts +2 -2
  175. package/activities/core/Switch.d.ts +1 -1
  176. package/activities/core/TextReplace.d.ts +1 -1
  177. package/activities/core/Throw.d.ts +1 -1
  178. package/activities/core/TryCatch.d.ts +1 -1
  179. package/activities/core/WebRequest.d.ts +3 -2
  180. package/activities/csv/ConvertCsvToDataTable.d.ts +1 -1
  181. package/activities/csv/ConvertDataTableToCsv.d.ts +1 -1
  182. package/activities/essentials/GetEssentialsSite.d.ts +1 -1
  183. package/activities/essentials/RunEssentialsWorkflow.d.ts +1 -1
  184. package/activities/essentials/RunEssentialsWorkflowActivity.d.ts +1 -1
  185. package/activities/forms/ActivateFormElement.d.ts +3 -3
  186. package/activities/forms/AddFormElement.d.ts +3 -3
  187. package/activities/forms/ClearFormElementError.d.ts +3 -3
  188. package/activities/forms/CompleteForm.d.ts +2 -2
  189. package/activities/forms/DisplayForm.d.ts +3 -2
  190. package/activities/forms/DisplayForm.js +1 -1
  191. package/activities/forms/Errors.d.ts +1 -1
  192. package/activities/forms/FilterFormElementItems.d.ts +3 -3
  193. package/activities/forms/FormElementMap.d.ts +2 -2
  194. package/activities/forms/FormRenderer.d.ts +2 -2
  195. package/activities/forms/FormRenderer.js +1 -1
  196. package/activities/forms/GetFormElementItemsFromCollection.d.ts +2 -2
  197. package/activities/forms/GetFormElementProperty.d.ts +3 -3
  198. package/activities/forms/GetFormElementValue.d.ts +3 -3
  199. package/activities/forms/GetFormEventData.d.ts +2 -2
  200. package/activities/forms/HideFormElement.d.ts +3 -3
  201. package/activities/forms/PropagateFormEvent.d.ts +2 -2
  202. package/activities/forms/SetCurrentFormElementItem.d.ts +3 -3
  203. package/activities/forms/SetFormElementError.d.ts +3 -3
  204. package/activities/forms/SetFormElementEvent.d.ts +2 -2
  205. package/activities/forms/SetFormElementItemProperty.d.ts +3 -3
  206. package/activities/forms/SetFormElementItems.d.ts +4 -4
  207. package/activities/forms/SetFormElementProperty.d.ts +3 -3
  208. package/activities/forms/ShowFormElement.d.ts +3 -3
  209. package/activities/image/GetImageMetadata.d.ts +1 -1
  210. package/activities/image/RotateImage.d.ts +1 -1
  211. package/activities/math/Abs.d.ts +1 -1
  212. package/activities/math/Cos.d.ts +1 -1
  213. package/activities/math/Max.d.ts +1 -1
  214. package/activities/math/Min.d.ts +1 -1
  215. package/activities/math/Pow.d.ts +1 -1
  216. package/activities/math/Random.d.ts +1 -1
  217. package/activities/math/Sin.d.ts +1 -1
  218. package/activities/math/Sqrt.d.ts +1 -1
  219. package/activities/math/Tan.d.ts +1 -1
  220. package/activities/pdf/AddGeoreferenceToPdf.d.ts +1 -1
  221. package/activities/pdf/AddImageToPdf.d.ts +1 -1
  222. package/activities/pdf/AddTextToPdf.d.ts +1 -1
  223. package/activities/pdf/CreatePdf.d.ts +1 -1
  224. package/activities/pdf/ExtractPdfPages.d.ts +1 -1
  225. package/activities/pdf/MergePdfs.d.ts +1 -1
  226. package/activities/server/CopyFile.d.ts +1 -1
  227. package/activities/server/CreateDirectory.d.ts +1 -1
  228. package/activities/server/CreateDownload.d.ts +1 -1
  229. package/activities/server/CreateEmailAttachment.d.ts +1 -1
  230. package/activities/server/CreateZipFromDirectory.d.ts +1 -1
  231. package/activities/server/DeleteDirectory.d.ts +1 -1
  232. package/activities/server/DeleteFile.d.ts +1 -1
  233. package/activities/server/DirectoryExists.d.ts +1 -1
  234. package/activities/server/ExtractZipToDirectory.d.ts +1 -1
  235. package/activities/server/FileExists.d.ts +1 -1
  236. package/activities/server/GetDirectoriesInDirectory.d.ts +1 -1
  237. package/activities/server/GetFilesInDirectory.d.ts +1 -1
  238. package/activities/server/MoveFile.d.ts +1 -1
  239. package/activities/server/ReadFile.d.ts +1 -1
  240. package/activities/server/ReadFileBytes.d.ts +1 -1
  241. package/activities/server/RunApplication.d.ts +1 -1
  242. package/activities/server/RunPython.d.ts +1 -1
  243. package/activities/server/SendEmail.d.ts +1 -1
  244. package/activities/server/SqlNonQuery.d.ts +1 -1
  245. package/activities/server/SqlQuery.d.ts +1 -1
  246. package/activities/server/SqlQueryUnsafe.d.ts +1 -1
  247. package/activities/server/WriteFile.d.ts +1 -1
  248. package/activities/server/WriteFileBytes.d.ts +1 -1
  249. package/activities/ui/Alert.d.ts +1 -1
  250. package/activities/ui/Confirm.d.ts +1 -1
  251. package/activities/ui/Prompt.d.ts +1 -1
  252. package/activities/wab/OpenWidget.d.ts +1 -1
  253. package/activities/wab/PublishWidgetData.d.ts +1 -1
  254. package/activities/xlsx/ConvertDataTableToXlsx.d.ts +1 -1
  255. package/activities/xlsx/ConvertXlsxToDataSet.d.ts +1 -1
  256. package/definition/Activity.d.ts +3 -3
  257. package/definition/ActivityInput.d.ts +1 -1
  258. package/definition/Component.d.ts +3 -3
  259. package/definition/Form.d.ts +2 -2
  260. package/definition/Program.d.ts +7 -7
  261. package/definition/ProgramInspector.d.ts +11 -10
  262. package/definition/ProgramInspector.js +1 -1
  263. package/definition/Reference.d.ts +1 -1
  264. package/definition/Step.d.ts +4 -2
  265. package/definition/Transition.d.ts +2 -2
  266. package/diagnostics/ConsoleDebugLogger.d.ts +1 -1
  267. package/execution/ActivityContext.d.ts +92 -0
  268. package/execution/ActivityContext.js +1 -0
  269. package/execution/ActivityContextProxy.d.ts +24 -0
  270. package/execution/ActivityContextProxy.js +1 -0
  271. package/execution/ActivityLoader.d.ts +5 -5
  272. package/execution/AmbientState.d.ts +71 -0
  273. package/execution/AmbientState.js +1 -0
  274. package/execution/AmbientStateProxy.d.ts +28 -0
  275. package/execution/AmbientStateProxy.js +1 -0
  276. package/execution/AsyncContext.d.ts +7 -0
  277. package/execution/AsyncContext.js +1 -0
  278. package/execution/Engine.d.ts +25 -6
  279. package/execution/Engine.js +1 -1
  280. package/execution/ExternalEvent.d.ts +14 -0
  281. package/execution/ExternalEvent.js +0 -0
  282. package/execution/IDebugSession.d.ts +3 -3
  283. package/execution/MonikerFrame.d.ts +11 -0
  284. package/execution/MonikerFrame.js +1 -0
  285. package/execution/ProgramRunner.js +1 -1
  286. package/execution/Proxy.d.ts +5 -0
  287. package/execution/Proxy.js +1 -0
  288. package/execution/StepContext.d.ts +6 -0
  289. package/execution/StepContext.js +1 -0
  290. package/execution/TransitionContext.d.ts +8 -0
  291. package/execution/TransitionContext.js +1 -0
  292. package/execution/util.d.ts +1 -0
  293. package/execution/util.js +1 -0
  294. package/forms/FormComponent.d.ts +4 -4
  295. package/forms/FormDefinition.d.ts +5 -4
  296. package/forms/FormElement.d.ts +3 -4
  297. package/forms/FormHost.d.ts +15 -8
  298. package/forms/FormHost.js +1 -1
  299. package/forms/FormPresenterHost.d.ts +12 -6
  300. package/forms/MutuallyExclusiveSectionGroup.d.ts +1 -1
  301. package/forms/common.d.ts +3 -3
  302. package/forms/components/AccordionGroup.d.ts +1 -1
  303. package/forms/components/AutoComplete.d.ts +2 -2
  304. package/forms/components/ButtonBar.d.ts +2 -2
  305. package/forms/components/CheckBox.d.ts +1 -1
  306. package/forms/components/CheckGroup.d.ts +2 -2
  307. package/forms/components/CheckGroup.js +1 -1
  308. package/forms/components/Custom.d.ts +1 -1
  309. package/forms/components/DatePicker.d.ts +2 -2
  310. package/forms/components/DateRangePicker.d.ts +2 -2
  311. package/forms/components/DateTimePicker.d.ts +2 -2
  312. package/forms/components/DropDownList.d.ts +2 -2
  313. package/forms/components/FilePicker.d.ts +2 -2
  314. package/forms/components/FilePicker.js +1 -1
  315. package/forms/components/Form.js +1 -1
  316. package/forms/components/FormLabelNumberField.d.ts +1 -1
  317. package/forms/components/GeometryPicker.d.ts +2 -2
  318. package/forms/components/GeometryPickerListItem.d.ts +1 -1
  319. package/forms/components/HorizontalRule.d.ts +1 -1
  320. package/forms/components/Image.d.ts +1 -1
  321. package/forms/components/ItemPicker.d.ts +2 -2
  322. package/forms/components/ListBox.d.ts +2 -2
  323. package/forms/components/Markdown.d.ts +2 -2
  324. package/forms/components/Number.d.ts +2 -2
  325. package/forms/components/NumberRangeSlider.d.ts +1 -1
  326. package/forms/components/NumberSlider.d.ts +2 -2
  327. package/forms/components/RadioGroup.d.ts +2 -2
  328. package/forms/components/Scanner.d.ts +3 -3
  329. package/forms/components/Section.d.ts +4 -2
  330. package/forms/components/Section.js +1 -1
  331. package/forms/components/Signature.d.ts +2 -2
  332. package/forms/components/TabGroup.d.ts +15 -0
  333. package/forms/components/TabGroup.js +1 -0
  334. package/forms/components/Text.d.ts +1 -1
  335. package/forms/components/TextArea.d.ts +1 -1
  336. package/forms/components/TextBox.d.ts +1 -1
  337. package/forms/components/TimePicker.d.ts +2 -2
  338. package/forms/constants.d.ts +1 -0
  339. package/forms/constants.js +1 -1
  340. package/forms/dateUtilities.d.ts +3 -3
  341. package/forms/elements/AutoComplete.d.ts +2 -2
  342. package/forms/elements/ButtonBar.d.ts +1 -1
  343. package/forms/elements/CheckBox.d.ts +1 -1
  344. package/forms/elements/CheckGroup.d.ts +1 -1
  345. package/forms/elements/Custom.d.ts +1 -1
  346. package/forms/elements/DatePicker.d.ts +2 -2
  347. package/forms/elements/DateRangePicker.d.ts +2 -2
  348. package/forms/elements/DateTimePicker.d.ts +2 -2
  349. package/forms/elements/DropDownList.d.ts +1 -1
  350. package/forms/elements/FilePicker.d.ts +2 -2
  351. package/forms/elements/GeometryPicker.d.ts +2 -2
  352. package/forms/elements/HorizontalRule.d.ts +1 -1
  353. package/forms/elements/Image.d.ts +1 -1
  354. package/forms/elements/ItemPicker.d.ts +1 -1
  355. package/forms/elements/ListBox.d.ts +1 -1
  356. package/forms/elements/Number.d.ts +3 -3
  357. package/forms/elements/NumberRangeSlider.d.ts +2 -2
  358. package/forms/elements/NumberSlider.d.ts +2 -2
  359. package/forms/elements/PasswordBox.d.ts +1 -1
  360. package/forms/elements/RadioGroup.d.ts +1 -1
  361. package/forms/elements/Scanner.d.ts +3 -3
  362. package/forms/elements/Section.d.ts +1 -1
  363. package/forms/elements/Signature.d.ts +3 -3
  364. package/forms/elements/Text.d.ts +1 -1
  365. package/forms/elements/TextArea.d.ts +1 -1
  366. package/forms/elements/TextBox.d.ts +1 -1
  367. package/forms/elements/TimePicker.d.ts +2 -2
  368. package/forms/elements/types.d.ts +1 -1
  369. package/forms/index.d.ts +3 -3
  370. package/forms/listUtilities.d.ts +1 -1
  371. package/forms/manifest.d.ts +1 -1
  372. package/forms/numberUtilities.d.ts +3 -3
  373. package/forms/numberUtilities.js +1 -1
  374. package/forms/presenter.d.ts +1 -1
  375. package/forms/renderers.d.ts +1 -1
  376. package/forms/renderers.js +1 -1
  377. package/forms/textUtilities.d.ts +1 -1
  378. package/forms/utils.d.ts +9 -3
  379. package/forms/utils.js +1 -1
  380. package/libs/version.d.ts +1 -1
  381. package/libs/version.js +1 -1
  382. package/package.json +10 -8
package/forms/FormHost.js CHANGED
@@ -1 +1 @@
1
- import Bluebird from"bluebird";import{Task}from"../Task.js";import{DEFAULT_LOCALE}from"../constants.js";import*as defs from"./FormDefinition.js";import MutuallyExclusiveSectionGroup from"./MutuallyExclusiveSectionGroup.js";import NumberParser from"./NumberParser.js";import{FormElementTypes}from"./constants.js";import{format}from"./numberFormatter.js";import*as presenter from"./presenter.js";import{isAccordionSection,isCollapsibleSection,isSection,sortAndFilter,text}from"./utils.js";const guid="C0166F74-982A-464E-9FB6-9605CB7649C1:",eventName=guid+"FormEvent";function createEvent(e,t){return new CustomEvent(e,{bubbles:!1,cancelable:!1,detail:t})}function overlay(i,s){switch(typeof i){case"boolean":case"number":case"string":return i;case"object":break;default:return s}if(null===i)return s;if(i instanceof Array){let e=s;void 0!==e&&null!==e||(e=[]);let t=0;for(const r of i){var n=overlay(r,e[t]);void 0!==n&&(t<i.length?e[t]=n:e.push(n),++t)}return e}let e=s;void 0===e&&(e={});for(const t in i)e[t]=overlay(i[t],e[t]);return e}function createSubscription(e){function t(){return void 0!==e&&(t.active=!1,e(),!0)}return t.active=!0,t}class FormHost{constructor(){this.form={defaults:{},elements:{}},this.errors={},this.refs={},this.enabled=!1,this.visible=!1,this.dismiss=!1,this.custom=!1,this.container=document.createElement("div"),this.eventIndex=0,this.eventQueue=[],this.mutuallyExclusiveSections={},this.nextFocus=!1,this.nextRefresh=!1}deriveLocale(){return DEFAULT_LOCALE}mount(){var e=this.container,t=e.parentNode;null==t&&document.body.appendChild(e),this.update()}unmount(){var e=this.container;const t=e.parentNode;void 0!==t&&null!==t&&t.removeChild(e)}observeFocus(e){this.enabled&&e instanceof HTMLElement&&(this.lastFocus&&this.lastFocus.target===e||this.setLastFocus(e))}focus(e){!0===(e=null==e?!1:e)&&(this.lastFocus=void 0),!1===e&&!1===(e=this.nextFocus)&&(e=!0),this.nextFocus=e,this.invalidate(!0!==e?e:void 0)}show(){const e=this.container;if(void 0===e)return!1;this.custom||void 0!==this.focusObserver||e.addEventListener("focus",this.focusObserver=e=>this.observeFocus(e.target),!0),this.enabled||(this.nextRefresh=!0,this.focus()),this.enforceAccordionConstraints();var t=this.errors;for(const i in t){const s=this.form.elements[i];void 0!==s&&null!==s&&(s.error=t[i],this.invalidate(i))}return this.idle(),!1!==this.nextRefresh&&(this.enabled=!0,this.visible=!0,this.mount()),this.enabled}isInvalid(e){return!!e.error&&!1!==e.visible}getInvalidElements(){return Object.keys(this.form.elements).map(e=>this.form.elements[e]).filter(this.isInvalid)}hasInvalidChild(e){for(const i in this.form.elements){var t=this.form.elements[i];if(this.isInvalid(t)&&this.getParentSection(t)===e)return!0}return!1}spin(){return void 0!==this.container&&(this.idle(),this.visible&&!this.enabled||(this.nextRefresh=!0,this.enabled=!1,this.visible=!0,this.mount()),this.visible)}hide(){return void 0!==this.container&&(this.idle(),this.visible&&(this.enabled=!1,this.visible=!1,this.unmount()),!0)}dispose(){if(this.dismiss)return!1;{this.dismiss=!0;const t=this.container;t.dispatchEvent(createEvent(eventName));var e=this.focusObserver;return void 0!==e&&t.removeEventListener("focus",e,!0),this.idle(),this.unmount(),this.refs={},presenter.releaseForm(this.container),this.container=void 0,this.lastFocus=void 0,!(this.eventTask=void 0)}}renderFocus(e,t){var i=this.nextFocus;if(this.enabled&&e instanceof HTMLElement)if(!1!==i)if(void 0!==t){if(t===i||!0===i&&void 0===this.lastFocus)return this.nextFocus=!1,this.setLastFocus(e,t),e.focus(),!0}else{const s=this.lastFocus?.target;if(!0===i&&s instanceof HTMLElement&&e.contains(s))return this.nextFocus=!1,s.focus(),!0}else if(!1===i&&t&&t!==this.lastFocus?.name&&this.isElementPositionBeforeLastFocused(t))return this.setLastFocus(e,t),e.focus(),!0;return!1}renderHtml(e,t){return"string"==typeof e?text.textToHtml(e):text.isMarkdown(e)?text.markdownToSafeHtml(e.markdown,{inline:t===defs.HTMLContentCategory.Phrasing}):""}renderText(e){return"string"==typeof e?e:text.isMarkdown(e)?text.markdownToText(e.markdown):""}translateText(e){return"string"==typeof e||text.isMarkdown(e)?e:text.isStatus(e)?e.status:void 0}renderVisual(e){return presenter.render(e)||presenter.renderNone(e)}qualifyDefault(e){var t=sortAndFilter(this.form.elements);for(const r in t){var i=t[r];if(null!=i&&!1!==i.visible&&i.enabled){if(i.default)return e.value=i.value,r;var s=sortAndFilter(i.items);if(null!=s)for(const o in s){var n=s[o];if(null!=n&&n.visible&&n.enabled&&n.default)return e.item=o,e.value=n.value,r}}}}qualify(e,t){var i;return null==t&&(t={}),"clicked"===e&&void 0===t.name&&(t.name=this.qualifyDefault(t)),t.type=e,void 0===t.routingKey&&(i=t.name,t.routingKey=void 0!==i?e+"$"+i:e),t}post(e,t){t=this.publish(e,t);const i=this.container;void 0!==i&&i.dispatchEvent(createEvent(eventName,t))}subscribe(e){let i=e;const t=this.container;if(void 0===t)return createSubscription();const s=function(){i=void 0,t.removeEventListener(eventName,n)},n=function(e){const t=e.detail;void 0!==t?Bluebird.resolve().then(function(){"function"==typeof i&&i(t)}):s()};return t.addEventListener(eventName,n),createSubscription(s)}refresh(e){this.custom||("string"==typeof e?(e=this.refs[e],presenter.refresh(e)):(this.refs={},presenter.refreshForm(this,this.container)))}invalidate(e){const t=this.nextRefresh;"string"==typeof e&&!0!==t&&(!1===t?this.nextRefresh={[e]:!0}:t[e]=!0),void 0!==e&&!0!==e||(this.nextRefresh=!0),!1===e&&!1===t&&(this.nextRefresh={})}update(){var e=this.nextRefresh;if(!0===e&&(this.nextRefresh=!1,this.refresh()),"object"==typeof e){this.nextRefresh=!1;for(const t in e)!0===e[t]&&this.refresh(t)}}idle(){const e=this.timerHandle;void 0!==e&&(this.timerHandle=void 0,e())}busy(){if(void 0===this.timerHandle&&void 0!==this.container){let e=setTimeout(()=>this.spin());this.timerHandle=function(){void 0!==e&&(clearTimeout(e),e=void 0)}}}publish(e,t){return this.enabled?(t=this.enqueue(e,t),0<this.eventQueue.length&&this.spin(),t):this.qualify(e,t)}enqueue(e,t){return t=this.qualify(e,t),void 0!==this.eventTask?(this.resolveEvent(t),this.eventTask=void 0):this.eventQueue.push(t),t}dequeue(){const e=this.eventQueue;if(0<e.length){var t=this.eventIndex,i=e[t++];return t>=e.length?e.length=this.eventIndex=0:this.eventIndex=t,i}}observe(){const t=this;return Bluebird.attempt(function(){if(void 0!==t.eventTask)return t.eventTask;var e=t.dequeue();return void 0!==e?e:t.show()?(t.eventTask=new Task(e=>{t.resolveEvent=e}),t.eventTask):void 0})}load(e,t){if(void 0===this.container)return!1;if(this.eventQueue.length=this.eventIndex=0,this.eventTask=void 0,this.errors={},this.lastFocus=void 0,this.nextFocus=!0,this.nextRefresh=!0,this.enqueue("load"),this.enqueue("prepare"),null!=e){e=overlay(e,e={defaults:{},elements:{}});this.form=overlay(t,e);for(const i in this.form.elements){let e=this.form.elements[i];if(e=overlay(e,{showFilter:!1,checked:!1,enabled:!0,hoisted:!1,visible:!0,overlay:!1,default:!1,validates:!1,readOnly:!1,require:!1,autoActivate:!1}),e.items)for(const s in e.items)e.items[s]=overlay(e.items[s],{enabled:!0,checked:!1,visible:!0,default:!1,validates:!1});this.form.elements[i]=e}}return!0}route(e){switch(e.type){case"changed":return this.cascade(e.name);case"prepare":return this.hydrate(e);case"suggest":return this.suggest(e);case"clicked":return this.click(e);case"validate":return this.verify(e);case"verify":return this.submit(e);case"checked":return this.changed(e)}return!1}changed(e){return this.enqueue("changed",{name:e.name,item:e.item,value:e.value}),!0}isElementValid(e,t=!0,i={status:void 0}){return null!=e&&(i.status=void 0,text.isInvalidError(e.error)?!(i.status="invalid"):!0!==e.require||(this.isElementEffectivelyVisible(e)?!!this.isElementValueDefined(e)||!(i.status="missing"):t))}isElementEffectivelyVisible(e){return null!=e&&(!1!==this.getParentSection(e)?.visible&&!1!==e.visible)}isElementValueDefined(e){if(null==e)return!1;if(e.type===FormElementTypes.CHECKBOX)return!0;var t=e.current;if(null!=t)return!0;t=e.value;if(null!=t&&""!==t)return!0;if(e.type!==FormElementTypes.SIGNATURE){t=e.label;if(null!=t&&""!==t)return!0}var i=e.items;if(null!=i)for(const n in i){var s=i[n];if(null!=s&&!0===s.checked)return!0}return!1}trap(e){switch(e.type){case"populate":case"load":case"suggest":break;default:return!1}var t=e.name;const i=this.find(t);if(void 0===i||null===i)return!1;e=i.dependsOn;if("string"!=typeof e)return!1;e=this.find(e);return i.enabled=this.isElementEffectivelyVisible(e)&&this.isElementValueDefined(e),this.invalidate(t),!i.enabled}cascade(e){var t=this.find(e);if(null==t||!1===t.dependsOn)return!1;const i={[e]:!0};var s=sortAndFilter(this.form.elements);for(const r in s){const o=s[r];var n=o.dependsOn;if("string"==typeof n){const l=this.find(n);void 0!==l&&"string"!=typeof l.dependsOn&&(l.dependsOn=!0),!0===i[n]&&(i[r]=!0,o.checked=!1,o.current=void 0,o.label=void 0,o.items=void 0,o.value=void 0,this.invalidate(r),o.dependsOn===e&&this.enqueue("populate",{name:r}))}else o.dependsOn=!1}return!0}click(e){var t=this.form.elements[e.name];return null!=t&&t.type==FormElementTypes.BUTTONBAR&&this.validate(e)}hasInitialSelectionToDependOn(e){e=this.form.elements[e];return e.type===FormElementTypes.DROPDOWNLIST&&(void 0!==e.current&&null!==e.current)}hydrate(e){for(const i in sortAndFilter(this.form.elements)){var t=this.form.elements[i].dependsOn;"string"==typeof t&&!this.hasInitialSelectionToDependOn(t)||this.enqueue("populate",{name:i}),this.enqueue("load",{name:i})}return!0}shouldTriggerValidation(e){var t=this.find(e.name);if(null!=t&&"string"==typeof e.value){e=e.item;if("string"!=typeof e)return!0===t.validates;t=t.items;if(null!=t){e=t[e];if(null!=e)return!0===e.validates}}}validate(e){var t=this.shouldTriggerValidation(e);if(!0!==t)return!1===t&&(this.enqueue("end",{name:e.name,item:e.item,value:e.value,routingKey:"end"}),!0);{const n=this.errors={};var i=sortAndFilter(this.form.elements);for(const r in i){var s=i[r];null!=s&&(n[r]=void 0,this.enqueue("validate",{name:r}))}return this.enqueue("verify",{name:e.name,item:e.item,value:e.value,routingKey:"verify"}),!0}}verify(e){var t=e.name,i=this.form.elements[t],e={status:void 0};return!this.isElementValid(i,!0,e)&&(e.status&&(this.errors[t]={status:e.status}),!1===this.nextFocus&&this.focus(t),!0)}suggest(e){const t=this.form.elements[e.name];return void 0!==t&&null!==t&&(t.items={message:{label:{status:"trivial"},enabled:!1}},this.invalidate(e.name),!0)}submit(e){if(!this.hasErrors()){for(const r in this.form.elements)this.form.elements[r].error=void 0;return this.enqueue("submit",{name:e.name,item:e.item,value:e.value}),!0}var t=this.errors;for(const o in t){const l=this.form.elements[o];void 0!==l&&null!==l&&(l.error=t[o],this.invalidate(o))}const i=[];let s=!1;for(const a of this.getInvalidElements()){const u=this.getParentSection(a);if(isAccordionSection(u)){var n=this.findName(u);const h=this.getMutuallyExclusiveSectionGroup(n);if(h){const c=i.find(e=>e.group===h);c?c.element.rowNumber>u.rowNumber&&(c.element=u):(i.push({group:h,element:u}),s=!0)}}else this.isSectionCollapsed(u)&&(u.collapsed=!1,s=!0)}for(const d of i)d.group.expandedSection=d.element;return s&&this.invalidate(),!(this.errors={})}hasErrors(){var e=this.errors;for(const i in e){var t=e[i];if(null!=t)return!0}return!1}find(e){if(null!=e)return"string"==typeof(e="object"==typeof e?e.name:e)?this.form.elements[e]:void 0}findName(e){for(const t in this.form.elements)if(this.form.elements[t]===e)return t}coerceNumber(e){var t=this.deriveLocale();return new NumberParser(t).parse(e)}formatNumber(e,t){return t=t||{locale:this.deriveLocale()},format(t,e)}renderState(e,t,i){return!1}getParentSection(e){e=e.section;if(e){e="string"==typeof e?e:e.name;return this.form.elements[e]}}isSectionCollapsed(e){return!(!e||e.type!==FormElementTypes.SECTION||!isCollapsibleSection(e)&&!isAccordionSection(e))&&!0===e.collapsed}isElementPositionBeforeLastFocused(e){var t=this.lastFocus;if(!t)return!0;if("footer"===e)return!1;if("footer"===t.name)return!0;if(e&&void 0!==t?.rowNumber&&void 0!==t.rowIndex){e=this.form.elements?.[e];if(e)return void 0!==e.rowNumber&&void 0!==e.rowIndex?e.rowNumber<t.rowNumber||e.rowNumber===t.rowNumber&&e.rowIndex<t.rowIndex:e.index<t.rowNumber||e.index===t.rowNumber&&0<t.rowIndex}return!1}setLastFocus(e,t){this.lastFocus={target:e},t&&(this.lastFocus.name=t,(t=this.form.elements?.[t])&&(void 0!==t.rowNumber&&void 0!==t.rowIndex?(this.lastFocus.rowNumber=t.rowNumber,this.lastFocus.rowIndex=t.rowIndex):(this.lastFocus.rowNumber=t.index,this.lastFocus.rowIndex=0)))}getAllSectionElements(){const e={};for(const i in this.form.elements){var t=this.form.elements[i];isSection(t)&&(e[i]=t)}return e}getMutuallyExclusiveSectionGroup(t){let i=this.mutuallyExclusiveSections[t];if(!i){var e=this.find(t);if(!isAccordionSection(e))return;i=new MutuallyExclusiveSectionGroup({elementName:t,element:e});e=this.getAllSectionElements();const r=Object.keys(sortAndFilter(e,e=>e.rowNumber));t=r.indexOf(t);for(let e=t-1;0<=e;e--){const o=r[e];var s=this.find(o);if(!isAccordionSection(s))break;i.unshift({elementName:o,element:s})}for(let e=t+1;e<r.length;e++){const o=r[e];var n=this.find(o);if(!isAccordionSection(n))break;i.push({elementName:o,element:n})}i.forEach(e=>{this.mutuallyExclusiveSections[e.elementName]=i})}return i}updateAccordionSections(t){const e=this.getMutuallyExclusiveSectionGroup(t);e.forEach(e=>{e.element.collapsed=e.elementName!==t}),this.refresh()}enforceAccordionConstraints(){const e=[];for(const i of Object.keys(this.form.elements).map(e=>({elementName:e,element:this.form.elements[e]})).filter(e=>isAccordionSection(e.element)&&!1!==e.element.visible&&!0!==e.element.collapsed).sort((e,t)=>e.element.rowNumber-t.element.rowNumber)){var t=this.getMutuallyExclusiveSectionGroup(i.elementName);-1===e.indexOf(t)?e.push(t):i.element.collapsed=!0}}async displayDialog(e,t){await Promise.resolve()}}export{defs,FormHost};
1
+ import Bluebird from"bluebird";import{Task}from"../Task.js";import{DEFAULT_LOCALE}from"../constants.js";import*as defs from"./FormDefinition.js";import MutuallyExclusiveSectionGroup from"./MutuallyExclusiveSectionGroup.js";import NumberParser from"./NumberParser.js";import{FormElementTypes}from"./constants.js";import{format}from"./numberFormatter.js";import*as presenter from"./presenter.js";import{isCollapsibleSection,isMutuallyExclusiveSection,isSection,sortAndFilter,text}from"./utils.js";const guid="C0166F74-982A-464E-9FB6-9605CB7649C1:",eventName=guid+"FormEvent";function createEvent(e,t){return new CustomEvent(e,{bubbles:!1,cancelable:!1,detail:t})}function overlay(i,s){switch(typeof i){case"boolean":case"number":case"string":return i;case"object":break;default:return s}if(null===i)return s;if(i instanceof Array){let e=s;void 0!==e&&null!==e||(e=[]);let t=0;for(const r of i){var n=overlay(r,e[t]);void 0!==n&&(t<i.length?e[t]=n:e.push(n),++t)}return e}let e=s;void 0===e&&(e={});for(const t in i)e[t]=overlay(i[t],e[t]);return e}function createSubscription(e){function t(){return void 0!==e&&(t.active=!1,e(),!0)}return t.active=!0,t}class FormHost{constructor(){this.form={defaults:{},elements:{}},this.errors={},this.refs={},this.enabled=!1,this.visible=!1,this.dismiss=!1,this.custom=!1,this.container=document.createElement("div"),this.eventIndex=0,this.eventQueue=[],this.mutuallyExclusiveSections={},this.nextFocus=!1,this.nextRefresh=!1,this.enqueueExternalEvent=e=>{e={type:`external$${e.name}`,name:"header",argument:e};this.enqueue(e.type,e)}}deriveLocale(){return DEFAULT_LOCALE}mount(){var e=this.container,t=e.parentNode;null==t&&document.body.appendChild(e),this.update()}unmount(){var e=this.container;const t=e.parentNode;void 0!==t&&null!==t&&t.removeChild(e)}observeFocus(e){this.enabled&&e instanceof HTMLElement&&(this.lastFocus&&this.lastFocus.target===e||this.setLastFocus(e))}focus(e){!0===(e=null==e?!1:e)&&(this.lastFocus=void 0),!1===e&&!1===(e=this.nextFocus)&&(e=!0),this.nextFocus=e,this.invalidate(!0!==e?e:void 0)}show(){const e=this.container;if(void 0===e)return!1;this.custom||void 0!==this.focusObserver||e.addEventListener("focus",this.focusObserver=e=>this.observeFocus(e.target),!0),this.enabled||(this.nextRefresh=!0,this.focus()),this.enforceMutuallyExclusiveConstraints();var t=this.errors;for(const i in t){const s=this.form.elements[i];void 0!==s&&null!==s&&(s.error=t[i],this.invalidate(i))}return this.idle(),!1!==this.nextRefresh&&(this.enabled=!0,this.visible=!0,this.mount()),this.enabled}isInvalid(e){return!!e.error&&!1!==e.visible}getInvalidElements(){return Object.keys(this.form.elements).map(e=>this.form.elements[e]).filter(this.isInvalid)}hasInvalidChild(e){for(const i in this.form.elements){var t=this.form.elements[i];if(this.isInvalid(t)&&this.getParentSection(t)===e)return!0}return!1}spin(){return void 0!==this.container&&(this.idle(),this.visible&&!this.enabled||(this.nextRefresh=!0,this.enabled=!1,this.visible=!0,this.mount()),this.visible)}hide(){return void 0!==this.container&&(this.idle(),this.visible&&(this.enabled=!1,this.visible=!1,this.unmount()),!0)}dispose(){if(this.dismiss)return!1;{this.dismiss=!0;const t=this.container;t.dispatchEvent(createEvent(eventName));var e=this.focusObserver;return void 0!==e&&t.removeEventListener("focus",e,!0),this.idle(),this.unmount(),this.refs={},presenter.releaseForm(this.container),this.container=void 0,this.lastFocus=void 0,!(this.eventTask=void 0)}}renderFocus(e,t){var i=this.nextFocus;if(this.enabled&&e instanceof HTMLElement)if(!1!==i)if(void 0!==t){if(t===i||!0===i&&void 0===this.lastFocus)return this.nextFocus=!1,this.setLastFocus(e,t),e.focus(),!0}else{const s=this.lastFocus?.target;if(!0===i&&s instanceof HTMLElement&&e.contains(s))return this.nextFocus=!1,s.focus(),!0}else if(!1===i&&t&&t!==this.lastFocus?.name&&this.isElementPositionBeforeLastFocused(t))return this.setLastFocus(e,t),e.focus(),!0;return!1}renderHtml(e,t){return"string"==typeof e?text.textToHtml(e):text.isMarkdown(e)?text.markdownToSafeHtml(e.markdown,{inline:t===defs.HTMLContentCategory.Phrasing}):""}renderText(e){return"string"==typeof e?e:text.isMarkdown(e)?text.markdownToText(e.markdown):""}translateText(e){return"string"==typeof e||text.isMarkdown(e)?e:text.isStatus(e)?e.status:void 0}renderVisual(e){return presenter.render(e)||presenter.renderNone(e)}qualifyDefault(e){var t=sortAndFilter(this.form.elements);for(const r in t){var i=t[r];if(null!=i&&!1!==i.visible&&i.enabled){if(i.default)return e.value=i.value,r;var s=sortAndFilter(i.items);if(null!=s)for(const o in s){var n=s[o];if(null!=n&&n.visible&&n.enabled&&n.default)return e.item=o,e.value=n.value,r}}}}qualify(e,t){var i;return null==t&&(t={}),"clicked"===e&&void 0===t.name&&(t.name=this.qualifyDefault(t)),t.type=e,void 0===t.routingKey&&(i=t.name,t.routingKey=void 0!==i?e+"$"+i:e),t}post(e,t){t=this.publish(e,t);const i=this.container;void 0!==i&&i.dispatchEvent(createEvent(eventName,t))}subscribe(e){let i=e;const t=this.container;if(void 0===t)return createSubscription();const s=function(){i=void 0,t.removeEventListener(eventName,n)},n=function(e){const t=e.detail;void 0!==t?Bluebird.resolve().then(function(){"function"==typeof i&&i(t)}):s()};return t.addEventListener(eventName,n),createSubscription(s)}refresh(e){this.custom||("string"==typeof e?(e=this.refs[e],presenter.refresh(e)):(this.refs={},presenter.refreshForm(this,this.container)))}invalidate(e){const t=this.nextRefresh;"string"==typeof e&&!0!==t&&(!1===t?this.nextRefresh={[e]:!0}:t[e]=!0),void 0!==e&&!0!==e||(this.nextRefresh=!0),!1===e&&!1===t&&(this.nextRefresh={})}update(){var e=this.nextRefresh;if(!0===e&&(this.nextRefresh=!1,this.refresh()),"object"==typeof e){this.nextRefresh=!1;for(const t in e)!0===e[t]&&this.refresh(t)}}idle(){const e=this.timerHandle;void 0!==e&&(this.timerHandle=void 0,e())}busy(){if(void 0===this.timerHandle&&void 0!==this.container){let e=setTimeout(()=>this.spin());this.timerHandle=function(){void 0!==e&&(clearTimeout(e),e=void 0)}}}publish(e,t){return this.enabled?(t=this.enqueue(e,t),0<this.eventQueue.length&&this.spin(),t):this.qualify(e,t)}enqueue(e,t){return t=this.qualify(e,t),void 0!==this.eventTask?(this.resolveEvent(t),this.eventTask=void 0):this.eventQueue.push(t),t}dequeue(){const e=this.eventQueue;if(0<e.length){var t=this.eventIndex,i=e[t++];return t>=e.length?e.length=this.eventIndex=0:this.eventIndex=t,i}}observe(){return Bluebird.attempt(()=>{if(void 0!==this.eventTask)return this.eventTask;var e=this.dequeue();return void 0!==e?e:this.show()?(this.eventTask=new Task(e=>{this.resolveEvent=e}),this.eventTask):void 0})}load(e,t){if(void 0===this.container)return!1;if(this.eventQueue.length=this.eventIndex=0,this.eventTask=void 0,this.errors={},this.lastFocus=void 0,this.nextFocus=!0,this.nextRefresh=!0,this.enqueue("load"),this.enqueue("prepare"),null!=e){e=overlay(e,e={defaults:{},elements:{}});this.form=overlay(t,e);for(const i in this.form.elements){let e=this.form.elements[i];if(e=overlay(e,{showFilter:!1,checked:!1,enabled:!0,hoisted:!1,visible:!0,overlay:!1,default:!1,validates:!1,readOnly:!1,require:!1,autoActivate:!1}),e.items)for(const s in e.items)e.items[s]=overlay(e.items[s],{enabled:!0,checked:!1,visible:!0,default:!1,validates:!1});this.form.elements[i]=e}}return!0}route(e){switch(e.type){case"changed":return this.cascade(e.name);case"checked":return this.changed(e);case"clicked":return this.click(e);case"prepare":return this.hydrate(e);case"suggest":return this.suggest(e);case"validate":return this.verify(e);case"verify":return this.submit(e)}return!1}changed(e){return this.enqueue("changed",{name:e.name,item:e.item,value:e.value}),!0}isElementValid(e,t=!0,i={status:void 0}){return null!=e&&(i.status=void 0,text.isInvalidError(e.error)?!(i.status="invalid"):!0!==e.require||(this.isElementEffectivelyVisible(e)?!!this.isElementValueDefined(e)||!(i.status="missing"):t))}isElementEffectivelyVisible(e){return null!=e&&(!1!==this.getParentSection(e)?.visible&&!1!==e.visible)}isElementValueDefined(e){if(null==e)return!1;if(e.type===FormElementTypes.CHECKBOX)return!0;var t=e.current;if(null!=t)return!0;t=e.value;if(null!=t&&""!==t)return!0;if(e.type!==FormElementTypes.SIGNATURE){t=e.label;if(null!=t&&""!==t)return!0}var i=e.items;if(null!=i)for(const n in i){var s=i[n];if(null!=s&&!0===s.checked)return!0}return!1}trap(e){switch(e.type){case"populate":case"load":case"suggest":break;default:return!1}var t=e.name;const i=this.find(t);if(void 0===i||null===i)return!1;e=i.dependsOn;if("string"!=typeof e)return!1;e=this.find(e);return i.enabled=this.isElementEffectivelyVisible(e)&&this.isElementValueDefined(e),this.invalidate(t),!i.enabled}cascade(e){var t=this.find(e);if(null==t||!1===t.dependsOn)return!1;const i={[e]:!0};var s=sortAndFilter(this.form.elements);for(const r in s){const o=s[r];var n=o.dependsOn;if("string"==typeof n){const l=this.find(n);void 0!==l&&"string"!=typeof l.dependsOn&&(l.dependsOn=!0),!0===i[n]&&(i[r]=!0,o.checked=!1,o.current=void 0,o.label=void 0,o.items=void 0,o.value=void 0,this.invalidate(r),o.dependsOn===e&&this.enqueue("populate",{name:r}))}else o.dependsOn=!1}return!0}click(e){var t=this.form.elements[e.name];return null!=t&&t.type==FormElementTypes.BUTTONBAR&&this.validate(e)}hasInitialSelectionToDependOn(e){e=this.form.elements[e];return e.type===FormElementTypes.DROPDOWNLIST&&(void 0!==e.current&&null!==e.current)}hydrate(e){for(const i in sortAndFilter(this.form.elements)){var t=this.form.elements[i].dependsOn;"string"==typeof t&&!this.hasInitialSelectionToDependOn(t)||this.enqueue("populate",{name:i}),this.enqueue("load",{name:i})}return!0}shouldTriggerValidation(e){var t=this.find(e.name);if(null!=t&&"string"==typeof e.value){e=e.item;if("string"!=typeof e)return!0===t.validates;t=t.items;if(null!=t){e=t[e];if(null!=e)return!0===e.validates}}}validate(e){var t=this.shouldTriggerValidation(e);if(!0!==t)return!1===t&&(this.enqueue("end",{name:e.name,item:e.item,value:e.value,routingKey:"end"}),!0);{const n=this.errors={};var i=sortAndFilter(this.form.elements);for(const r in i){var s=i[r];null!=s&&(n[r]=void 0,this.enqueue("validate",{name:r}))}return this.enqueue("verify",{name:e.name,item:e.item,value:e.value,routingKey:"verify"}),!0}}verify(e){var t=e.name,i=this.form.elements[t],e={status:void 0};return!this.isElementValid(i,!0,e)&&(e.status&&(this.errors[t]={status:e.status}),!1===this.nextFocus&&this.focus(t),!0)}suggest(e){const t=this.form.elements[e.name];return void 0!==t&&null!==t&&(t.items={message:{label:{status:"trivial"},enabled:!1}},this.invalidate(e.name),!0)}submit(e){if(!this.hasErrors()){for(const r in this.form.elements)this.form.elements[r].error=void 0;return this.enqueue("submit",{name:e.name,item:e.item,value:e.value}),!0}var t=this.errors;for(const o in t){const l=this.form.elements[o];void 0!==l&&null!==l&&(l.error=t[o],this.invalidate(o))}const i=[];let s=!1;for(const a of this.getInvalidElements()){const u=this.getParentSection(a);if(isMutuallyExclusiveSection(u)){var n=this.findName(u);const h=this.getMutuallyExclusiveSectionGroup(n);if(h){const m=i.find(e=>e.group===h);m?m.element.rowNumber>u.rowNumber&&(m.element=u):(i.push({group:h,element:u}),s=!0)}}else this.isSectionCollapsed(u)&&(u.collapsed=!1,s=!0)}for(const d of i)d.group.expandedSection=d.element;return s&&this.invalidate(),!(this.errors={})}hasErrors(){var e=this.errors;for(const i in e){var t=e[i];if(null!=t)return!0}return!1}find(e){if(null!=e)return"string"==typeof(e="object"==typeof e?e.name:e)?this.form.elements[e]:void 0}findName(e){for(const t in this.form.elements)if(this.form.elements[t]===e)return t}coerceNumber(e){var t=this.deriveLocale();return new NumberParser(t).parse(e)}formatNumber(e,t){return t=t||{locale:this.deriveLocale()},format(t,e)}renderState(e,t,i){return!1}getParentSection(e){e=e.section;if(e){e="string"==typeof e?e:e.name;return this.form.elements[e]}}isSectionCollapsed(e){return!(!e||e.type!==FormElementTypes.SECTION||!isCollapsibleSection(e)&&!isMutuallyExclusiveSection(e))&&!0===e.collapsed}isElementPositionBeforeLastFocused(e){var t=this.lastFocus;if(!t)return!0;if("footer"===e)return!1;if("footer"===t.name)return!0;if(e&&void 0!==t?.rowNumber&&void 0!==t.rowIndex){e=this.form.elements?.[e];if(e)return void 0!==e.rowNumber&&void 0!==e.rowIndex?e.rowNumber<t.rowNumber||e.rowNumber===t.rowNumber&&e.rowIndex<t.rowIndex:e.index<t.rowNumber||e.index===t.rowNumber&&0<t.rowIndex}return!1}setLastFocus(e,t){this.lastFocus={target:e},t&&(this.lastFocus.name=t,(t=this.form.elements?.[t])&&(void 0!==t.rowNumber&&void 0!==t.rowIndex?(this.lastFocus.rowNumber=t.rowNumber,this.lastFocus.rowIndex=t.rowIndex):(this.lastFocus.rowNumber=t.index,this.lastFocus.rowIndex=0)))}getAllSectionElements(){const e={};for(const i in this.form.elements){var t=this.form.elements[i];isSection(t)&&(e[i]=t)}return e}getMutuallyExclusiveSectionGroup(t){let i=this.mutuallyExclusiveSections[t];if(!i){var e=this.find(t);if(!e||!isMutuallyExclusiveSection(e))return;i=new MutuallyExclusiveSectionGroup({elementName:t,element:e});var s=e.format,e=this.getAllSectionElements();const o=Object.keys(sortAndFilter(e,e=>e.rowNumber));t=o.indexOf(t);for(let e=t-1;0<=e;e--){const l=o[e];var n=this.find(l);if(n.format!==s)break;i.unshift({elementName:l,element:n})}for(let e=t+1;e<o.length;e++){const l=o[e];var r=this.find(l);if(r.format!==s)break;i.push({elementName:l,element:r})}i.forEach(e=>{this.mutuallyExclusiveSections[e.elementName]=i})}return i}updateMutuallyExclusiveSections(t){const e=this.getMutuallyExclusiveSectionGroup(t);e.forEach(e=>{e.element.collapsed=e.elementName!==t}),this.refresh()}enforceMutuallyExclusiveConstraints(){const e=[];for(const i of Object.keys(this.form.elements).map(e=>({elementName:e,element:this.form.elements[e]})).filter(e=>isMutuallyExclusiveSection(e.element)&&!1!==e.element.visible&&!0!==e.element.collapsed).sort((e,t)=>e.element.rowNumber-t.element.rowNumber)){var t=this.getMutuallyExclusiveSectionGroup(i.elementName);-1===e.indexOf(t)?e.push(t):i.element.collapsed=!0}}async displayDialog(e,t){await Promise.resolve()}}export{defs,FormHost};
@@ -1,6 +1,7 @@
1
- import { FormComponent } from "./FormComponent";
2
- import * as defs from "./FormDefinition";
3
- import { FormatOptions } from "./numberFormatter";
1
+ import type { FormComponent } from "./FormComponent";
2
+ import type * as defs from "./FormDefinition";
3
+ import type { FormatOptions } from "./numberFormatter";
4
+ import type { ExternalEvent } from "../execution/ExternalEvent";
4
5
  import type { ComponentType, ReactNode } from "react";
5
6
  /**
6
7
  * Exposes various features to components that require features of the environment.
@@ -44,10 +45,15 @@ export interface FormPresenterHost {
44
45
  */
45
46
  deriveLocale(): string;
46
47
  /**
47
- * Collapses all neighbouring accordion sections except the one specified.
48
- * @param expandedAccordionSection The name of the accordion section to be expanded. All others in the group will be collapsed.
48
+ * Passes on an external event (from the host application) to the form's event queue.
49
+ * @param event An event received from the host application.
49
50
  */
50
- updateAccordionSections(expandedAccordionSection: string): void;
51
+ enqueueExternalEvent(event: ExternalEvent): void;
52
+ /**
53
+ * Collapses all neighbouring mutually exclusive sections except the one specified.
54
+ * @param expandedSection The name of the section to be expanded. All others in the group will be collapsed.
55
+ */
56
+ updateMutuallyExclusiveSections(expandedSection: string): void;
51
57
  /**
52
58
  * Shows a dialog in the context of the running application.
53
59
  * @param children A function that produces the children for the dialog.
@@ -1,4 +1,4 @@
1
- import * as defs from "./FormDefinition";
1
+ import type * as defs from "./FormDefinition";
2
2
  /**
3
3
  * The definition of a Form Element along with its name.
4
4
  */
package/forms/common.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { ReactNode } from "react";
2
- import { FormPresenterHost } from "./FormComponent";
3
- import { defs } from "./FormHost";
1
+ import type { FormPresenterHost } from "./FormComponent";
2
+ import type { defs } from "./FormHost";
3
+ import type { ReactNode } from "react";
4
4
  export declare function getTitleId(elementId: string): string;
5
5
  export declare function getDescriptionId(elementId: string): string;
6
6
  export declare function getErrorId(elementId: string): string;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormComponent } from "../FormComponent";
2
+ import type { FormComponent } from "../FormComponent";
3
3
  interface AccordionGroupProps {
4
4
  /** The CSS class name of the root element. */
5
5
  className?: string;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { defs } from "../FormHost";
2
+ import type { FormElementProps } from "../..";
3
+ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Auto Complete" Form Element.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { defs } from "../FormHost";
2
+ import type { FormElementProps } from "../..";
3
+ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Button Bar" Form Element.
6
6
  */
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
2
+ import type { FormElementProps } from "../..";
3
3
  /**
4
4
  * The component for the "Check Box" Form Element.
5
5
  */
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { defs } from "../FormHost";
2
+ import type { FormElementProps } from "../..";
3
+ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Check Group" Form Element.
6
6
  */
@@ -1 +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{arrayEqual}from"../listUtilities.js";import{makeSafeClassName,inspectItems}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,current:o,element:r,enabled:a,items:s,name:n,orientation:m,raiseEvent:c,renderFocus:i,renderText:l,setProperty:u,setValue:p,translateText:d,value:f})=>{const[h,v]=useState([]),[k,C]=useState();useEffect(()=>{var e=inspectItems(o,s,f)["items"];C(e);const t=[];for(const r in e)e[r].checked&&t.push(r);v(t)},[s]);var E=e=>{null===e||e.disabled||i(e,n)};var b=(r,o)=>function(e){const t=k?k[r]:void 0;t&&(e=t.checked=e.currentTarget.checked,function(){const e=[],t=[];for(const a in k){var r=k[a];r.checked&&(e.push(r),t.push(a))}var o=0===e.length?void 0:{refValueType:"items",items:e};p(o,!1),u("current",void 0),arrayEqual(t,h)||v(t)}(),c("changed",e?o:void 0,e,r))};const g=[];for(const G in k){var y=k[G],F=-1!==h.indexOf(G),R=a&&!1!==y.enabled,x=l(y.tooltip),N=y.styleName?makeSafeClassName(y.styleName):void 0;g.push(React.createElement(FormControlLabel,{className:N,control:React.createElement(Checkbox,{checked:F,onChange:b(G,y.value),inputRef:E}),disabled:!R,key:G,label:React.createElement(Markdown,{text:y.label,translateText:d}),title:x}))}return React.createElement(Root,{className:e,component:t,element:r},React.createElement(FormGroup,{row:m===Orientation.HORIZONTAL},g))};export default CheckGroup;
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{arrayEqual}from"../listUtilities.js";import{makeSafeClassName,inspectItems}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,current:o,element:r,enabled:a,items:s,name:n,orientation:c,raiseEvent:m,renderFocus:i,renderText:l,setProperty:u,setValue:p,translateText:f,value:d})=>{const[h,v]=useState([]),[k,E]=useState();useEffect(()=>{var e=inspectItems(o,s,d)["items"];E(e);const t=[];for(const r in e)e[r].checked&&t.push(r);arrayEqual(h,t)||v(t)},[s]),useEffect(()=>{const e=[];if(d)for(const t in s)d.items.includes(s[t])&&e.push(t);arrayEqual(h,e)||v(e)},[d]);var C=e=>{null===e||e.disabled||i(e,n)};var b=(r,o)=>function(e){const t=k?k[r]:void 0;t&&(e=t.checked=e.currentTarget.checked,function(){const e=[],t=[];for(const a in k){var r=k[a];r.checked&&(e.push(r),t.push(a))}var o=0===e.length?void 0:{refValueType:"items",items:e};p(o,!1),u("current",void 0),arrayEqual(t,h)||v(t)}(),m("changed",e?o:void 0,e,r))};const y=[];for(const G in k){var g=k[G],F=-1!==h.indexOf(G),R=a&&!1!==g.enabled,x=l(g.tooltip),N=g.styleName?makeSafeClassName(g.styleName):void 0;y.push(React.createElement(FormControlLabel,{className:N,control:React.createElement(Checkbox,{checked:F,onChange:b(G,g.value),inputRef:C}),disabled:!R,key:G,label:React.createElement(Markdown,{text:g.label,translateText:f}),title:x}))}return React.createElement(Root,{className:e,component:t,element:r},React.createElement(FormGroup,{row:c===Orientation.HORIZONTAL},y))};export default CheckGroup;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
2
+ import type { FormElementProps } from "../..";
3
3
  /**
4
4
  * The component for the "Custom" Form Element.
5
5
  */
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { defs } from "../FormHost";
2
+ import type { FormElementProps } from "../..";
3
+ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Date Picker" Form Element.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { DateRangeRef } from "../FormDefinition";
2
+ import type { FormElementProps } from "../..";
3
+ import type { DateRangeRef } from "../FormDefinition";
4
4
  export declare const dateRangePickerClasses: {
5
5
  root: string;
6
6
  toLabel: string;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { defs } from "../FormHost";
2
+ import type { FormElementProps } from "../..";
3
+ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Date Time Picker" Form Element.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { defs } from "../../activities/forms/FormRenderer";
2
+ import type { FormElementProps } from "../..";
3
+ import type { defs } from "../../activities/forms/FormRenderer";
4
4
  /**
5
5
  * The component for the "Drop Down List" Form Element.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import * as defs from "../FormDefinition";
2
+ import type { FormElementProps } from "../..";
3
+ import type * as defs from "../FormDefinition";
4
4
  export declare const filePickerClasses: {
5
5
  file: string;
6
6
  label: string;
@@ -1 +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{useEffect}from"react";import FormElement from"../FormElement.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:t,element:l,fileTypes:i,name:r,renderFocus:a,renderText:s,setValue:o,size:n,translateText:c,value:m})=>{let f=5,p;"number"==typeof n&&(f=1<n?Math.ceil(n):1),useEffect(()=>{m&&(isFilesRef(m)&&Array.isArray(m.files)||o(void 0,!1))},[m]);n=s(l.tooltip);let u=t.enabled;const d=[];if(void 0!==m){u=t.enabled&&m.files.length<f;var g=s("@file-picker-remove-item-label");for(const E of m.files){var k=d.length;d.push(React.createElement(Box,{key:"$"+k,className:filePickerClasses.file},React.createElement("label",{className:filePickerClasses.label,title:E.name},E.name),React.createElement(IconButton,{"aria-label":g,disabled:!t.enabled,onClick:(t=>()=>{let e;m?.files&&1<m.files.length&&(e={...m,files:[...m.files].splice(t,1)}),o(e)})(k),ref:e=>{null===e||e.disabled||a(e,r)},title:g},React.createElement(Trash,null))))}}d.push(React.createElement(Box,{key:"footer"},React.createElement(Button,{disabled:!u,onClick:()=>{p&&(p.value="",p.click())},ref:e=>{a(e,r)},startIcon:React.createElement(Plus,null),title:n,variant:"outlined"},React.createElement(Markdown,{inline:!0,text:l.prompt||"",translateText:c}))));c=1!==f;return React.createElement(Root,{className:e,component:t,element:l},React.createElement(Stack,{className:filePickerClasses.list},d),React.createElement("input",{type:"file",style:{display:"none"},title:n,onChange:e=>(e=>{var t=e.files;if(t?.length){const l=m?.files||[];for(let e=0;e<t.length&&l.length!==f;e++)l.push(t[e]);e={refValueType:"files",files:l};o(e)}})(e.target),multiple:c,accept:i,ref:e=>{p=e}}))};export default FilePicker;export{filePickerClasses};
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{useEffect}from"react";import FormElement from"../FormElement.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:t,element:l,fileTypes:i,name:r,renderFocus:a,renderText:s,setValue:o,size:n,translateText:c,value:m})=>{let f=5,p;"number"==typeof n&&(f=1<n?Math.ceil(n):1),useEffect(()=>{m&&(isFilesRef(m)&&Array.isArray(m.files)||o(void 0,!1))},[m]);n=s(l.tooltip);let u=t.enabled;const d=[];if(void 0!==m){u=t.enabled&&m.files.length<f;var g=s("@file-picker-remove-item-label");for(const E of m.files){var k=d.length;d.push(React.createElement(Box,{key:"$"+k,className:filePickerClasses.file},React.createElement("label",{className:filePickerClasses.label,title:E.name},E.name),React.createElement(IconButton,{"aria-label":g,disabled:!t.enabled,onClick:(l=>()=>{let e;if(m?.files&&1<m.files.length){const t=[...m.files];t.splice(l,1),e={...m,files:t}}o(e)})(k),ref:e=>{null===e||e.disabled||a(e,r)},title:g},React.createElement(Trash,null))))}}d.push(React.createElement(Box,{key:"footer"},React.createElement(Button,{disabled:!u,onClick:()=>{p&&(p.value="",p.click())},ref:e=>{a(e,r)},startIcon:React.createElement(Plus,null),title:n,variant:"outlined"},React.createElement(Markdown,{inline:!0,text:l.prompt||"",translateText:c}))));c=1!==f;return React.createElement(Root,{className:e,component:t,element:l},React.createElement(Stack,{className:filePickerClasses.list},d),React.createElement("input",{type:"file",style:{display:"none"},title:n,onChange:e=>(e=>{var t=e.files;if(t?.length){const l=m?.files||[];for(let e=0;e<t.length&&l.length!==f;e++)l.push(t[e]);e={refValueType:"files",files:l};o(e)}})(e.target),multiple:c,accept:i,ref:e=>{p=e}}))};export default FilePicker;export{filePickerClasses};
@@ -1 +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{FormElementTypes}from"../constants.js";import{loadLocale}from"../dateUtilities.js";import{getKeyString}from"../keyboard.js";import{isAccordionSection,sortAndFilter}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:[]},l={host:i,type:"body",children:[]},m={host:i,type:"main",children:[]},a={host:i,type:"footer",children:[]},s={host:i,type:"body",children:[]},c={},d=[];function f(e){return e!==FormElementTypes.SECTION}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===l||e===a?`${e.type}-section`:e.name}const u=sortAndFilter(t.props.host.form.elements);for(const T in u){var y,E=u[T];if(!0!==(F=E).hoisted&&(!1!==F.visible&&f(F.type)))if(!0!==E.overlay){let e=function(e){if(void 0===e)return l;if("header"===e)return n;if("footer"===e)return a;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:T,host:i,type:"element",name:T,children:[]}))}else s.children.push(React.createElement(FormElementComponent,{key:T,host:i,type:"element",name:T,children:[]}))}var F;const g=[];if(0<n.children.length&&g.push(React.createElement(FormComponent,{key:"header",...n})),0<s.children.length)g.push(React.createElement(FormComponent,{key:"main",...s}));else{v(l);let e,t=0;for(const b of d){var C=b.name;isAccordionSection(u[C])?p(C)&&(e?e.push(b):e=[b]):(e&&(x(e,++t),e=void 0),p(C)&&v(b))}e&&(x(e,++t),e=void 0),0<m.children.length&&g.push(React.createElement(FormComponent,{key:"main",...m}))}function R(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===l?"body":`$${e.name}`;return React.createElement(FormComponent,{key:t,...e})}}function v(e){e=R(e);e&&m.children.push(e)}function x(e,t){const o=[];for(const n of e){var r=R(n);r&&o.push(r)}e={children:o,host:i,name:`accordionGroup${t}`,type:"accordionGroup"};m.children.push(React.createElement(FormComponent,{key:`accordionGroup${t}`,...e}))}return 0<a.children.length&&g.push(React.createElement(FormComponent,{key:"footer",...a})),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")}},g))};export default Form;export{formClasses};
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{FormElementTypes}from"../constants.js";import{loadLocale}from"../dateUtilities.js";import{getKeyString}from"../keyboard.js";import{isMutuallyExclusiveSection,sortAndFilter}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(l).then(e=>{t?r(e):console.warn("Component was unmounted while loading the locale.")}),()=>{t=!1}},[]);const l=t.props.host,n={host:l,type:"header",children:[]},i={host:l,type:"body",children:[]},a={host:l,type:"main",children:[]},s={host:l,type:"footer",children:[]},m={host:l,type:"body",children:[]},c={},d=[];function f(e){return e!==FormElementTypes.SECTION}function p(e){return e===n||e===i||e===s?`${e.type}-section`:e.name}const h=sortAndFilter(t.props.host.form.elements);for(const $ in h){var u,y=h[$];if(!0!==(E=y).hoisted&&(!1!==E.visible&&f(E.type)))if(!0!==y.overlay){let e=function(e){if(void 0===e)return i;if("header"===e)return n;if("footer"===e)return s;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:l,name:t,type:"section",children:[]},d.push(o)),o}(y.section);void 0!==y.rowNumber&&(u=p(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:l,type:"row",children:[]}),r}(y.rowNumber,u)),e.children.push(React.createElement(FormElementComponent,{key:$,host:l,type:"element",name:$,children:[]}))}else m.children.push(React.createElement(FormElementComponent,{key:$,host:l,type:"element",name:$,children:[]}))}var E,F;const g=[];if(0<n.children.length&&g.push(React.createElement(FormComponent,{key:"header",...n})),0<m.children.length)g.push(React.createElement(FormComponent,{key:"main",...m}));else{T(i);let e,t,o=0;var C=()=>{if(e){switch(t){case"accordion-section":k(e,++o,"accordionGroup");break;case"tab-section":k(e,++o,"tabGroup")}e=void 0,t=void 0}};for(const I of d){var v=I.name,R=h[v],x=R.format;t&&x!==t&&C(),null!=(F=h[F=v])&&(f(F.type)||!0===F.hoisted||!1===F.visible)||(isMutuallyExclusiveSection(R)?e?e.push(I):(e=[I],t=x):T(I))}C(),0<a.children.length&&g.push(React.createElement(FormComponent,{key:"main",...a}))}function b(e){if(!function(e){var t=p(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===i?"body":`$${e.name}`;return React.createElement(FormComponent,{key:t,...e})}}function T(e){e=b(e);e&&a.children.push(e)}function k(e,t,o){const r=[];for(const i of e){var n=b(i);n&&r.push(n)}t=`${o}${t}`,o={children:r,host:l,name:t,type:o};a.children.push(React.createElement(FormComponent,{key:t,...o}))}return 0<s.children.length&&g.push(React.createElement(FormComponent,{key:"footer",...s})),React.createElement(Root,{className:clsx(e,formClasses.root),onKeyDown:function(e){"enter"===getKeyString(e)&&(e.target instanceof HTMLButtonElement||l.post("clicked"))},ref:function(e){l.renderFocus(e)}},React.createElement(LocalizationProvider,{dateAdapter:AdapterDateFns,adapterLocale:o,localeText:{start:l.renderText("@date-range-picker-start-text"),end:l.renderText("@date-range-picker-end-text"),cancelButtonLabel:l.renderText("@common-cancel"),clearButtonLabel:l.renderText("@common-clear"),okButtonLabel:l.renderText("@common-ok"),todayButtonLabel:l.renderText("@common-today")}},g))};export default Form;export{formClasses};
@@ -1,5 +1,5 @@
1
- import { InputBaseProps } from "@vertigis/react-ui/InputBase";
2
1
  import * as React from "react";
2
+ import type { InputBaseProps } from "@vertigis/react-ui/InputBase";
3
3
  interface FormLabelNumberFieldProps {
4
4
  disabled: boolean;
5
5
  endAdornment?: React.ReactNode;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import * as defs from "../FormDefinition";
2
+ import type { FormElementProps } from "../..";
3
+ import type * as defs from "../FormDefinition";
4
4
  declare const GeometryPicker: ({ autoActivate, className, component, element, enabled, itemLabel: elementItemLabel, name, prompt, raiseEvent, renderFocus, renderState, renderText, setProperty, setValue, size, state: elementState, tooltip: elementTooltip, translateText, value, }: FormElementProps<defs.GeometryRef | undefined>) => JSX.Element;
5
5
  export default GeometryPicker;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { ListItemProps } from "@vertigis/react-ui/ListItem";
2
+ import type { ListItemProps } from "@vertigis/react-ui/ListItem";
3
3
  interface GeometryPickerListItemProps extends ListItemProps {
4
4
  /**
5
5
  * Numeric index referring to this item's position in the list.
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
2
+ import type { FormElementProps } from "../..";
3
3
  /**
4
4
  * The component for the "Horizontal Rule" Form Element.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
2
+ import type { FormElementProps } from "../..";
3
3
  /**
4
4
  * The component for the "Image" Form Element.
5
5
  */
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import * as defs from "../FormDefinition";
2
+ import type { FormElementProps } from "../..";
3
+ import type * as defs from "../FormDefinition";
4
4
  export declare const itemPickerClasses: {
5
5
  allNone: string;
6
6
  button: string;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import * as defs from "../FormDefinition";
2
+ import type { FormElementProps } from "../..";
3
+ import type * as defs from "../FormDefinition";
4
4
  export declare const listBoxClasses: {
5
5
  select: string;
6
6
  };
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { MarkdownProps as BaseMarkdownProps } from "@vertigis/react-ui/Markdown";
3
- import { defs } from "../FormHost";
2
+ import type { defs } from "../FormHost";
3
+ import type { MarkdownProps as BaseMarkdownProps } from "@vertigis/react-ui/Markdown";
4
4
  /**
5
5
  * Properties for the `Markdown` component.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import * as defs from "../FormDefinition";
2
+ import type { FormElementProps } from "../..";
3
+ import type * as defs from "../FormDefinition";
4
4
  /**
5
5
  * The component for the "Number" Form Elements.
6
6
  */
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
2
+ import type { FormElementProps } from "../..";
3
3
  export declare const numberRangeSliderClasses: {
4
4
  container: string;
5
5
  inputContainer: string;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { NumberRef } from "../FormDefinition";
2
+ import type { FormElementProps } from "../..";
3
+ import type { NumberRef } from "../FormDefinition";
4
4
  export declare const numberSliderClasses: {
5
5
  container: string;
6
6
  };
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { defs } from "../FormHost";
2
+ import type { FormElementProps } from "../..";
3
+ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Radio Group" Form Element.
6
6
  */
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import * as defs from "../FormDefinition";
4
- import { ScanRef } from "../FormDefinition";
2
+ import type { FormElementProps } from "../..";
3
+ import type { ScanRef } from "../FormDefinition";
4
+ import type * as defs from "../FormDefinition";
5
5
  export declare const scannerClasses: {
6
6
  container: string;
7
7
  button: string;
@@ -1,14 +1,16 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
2
+ import type { FormElementProps } from "../..";
3
3
  export declare const sectionClasses: {
4
4
  root: string;
5
5
  basicSection: string;
6
6
  fieldSetSection: string;
7
+ tabSection: string;
7
8
  title: string;
9
+ unstyledSection: string;
8
10
  description: string;
9
11
  };
10
12
  /**
11
13
  * The component for the "Section" Form Element.
12
14
  */
13
- declare const Section: ({ accessibleDescription: elementAccessibleDescription, className, collapsed, component, description: elementDescription, element, enabled, error: elementError, hasInvalidChild, name, refs, renderFocus, setProperty, translateText, updateAccordionSections, }: FormElementProps) => JSX.Element;
15
+ declare const Section: ({ accessibleDescription: elementAccessibleDescription, className, collapsed, component, description: elementDescription, element, enabled, error: elementError, hasInvalidChild, name, refs, renderFocus, setProperty, translateText, updateMutuallyExclusiveSections, }: FormElementProps) => JSX.Element;
14
16
  export default Section;
@@ -1 +1 @@
1
- import Accordion,{accordionClasses}from"@vertigis/react-ui/Accordion";import AccordionSummary from"@vertigis/react-ui/AccordionSummary";import Box from"@vertigis/react-ui/Box";import FormLabel from"@vertigis/react-ui/FormLabel";import ChevronDown from"@vertigis/react-ui/icons/ChevronDown";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect}from"react";import{defs}from"../FormHost.js";import{renderAccessibleDescription,renderDescription,renderError}from"../common.js";import{isAccordionSection,isCollapsibleSection,makeSafeClassName,makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";const PREFIX="WorkflowSection",sectionClasses={root:`${PREFIX}-root`,basicSection:`${PREFIX}-basicSection`,fieldSetSection:`${PREFIX}-fieldSetSection`,title:`${PREFIX}-title`,description:`${PREFIX}-description`},AccordionRoot=styled(Accordion)(({theme:{spacing:e}})=>({[`.${accordionClasses.region}`]:{padding:e(1),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:e(.5)}}})),BoxRoot=styled(Box)(({theme:{palette:e,spacing:o,typography:{pxToRem:t}}})=>({marginBottom:o(4),marginTop:o(4),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:o(.5)},[`&.${sectionClasses.basicSection}`]:{borderLeft:`6px solid ${e.primary[500]}`,paddingLeft:o(1),paddingRight:o(1)},[`&.${sectionClasses.fieldSetSection}`]:{position:"relative",border:`3px solid ${e.primary[500]}`,borderLeft:"none",borderRight:"none",paddingTop:o(3),paddingBottom:o(2),[`.${sectionClasses.title}`]:{backgroundColor:e.background.default,position:"absolute",top:t(-22),left:0,padding:0,"& span":{paddingRight:o(1)}}}})),Section=({accessibleDescription:e,className:o,collapsed:t,component:i,description:r,element:s,enabled:n,error:a,hasInvalidChild:c,name:l,refs:d,renderFocus:m,setProperty:p,translateText:f,updateAccordionSections:g})=>{let u;null!=s&&s.format&&(u=s.format),u=void 0!==u&&null!==u?u:defs.DEFAULT_SECTION_FORMAT;const S=isAccordionSection(s),b=S||isCollapsibleSection(s);var C=`${makeUniqueId(l)}-input`;useEffect(()=>(d[l]=i,()=>{d[l]=void 0}),[]);var R,x,E=(R=s,x=C,React.createElement(FormLabel,{className:sectionClasses.title,error:b&&(c(R)||!!a),id:`${x}-label`,component:"h6"},React.createElement(Markdown,{inline:!0,text:R.title,translateText:f}))),n=renderDescription(r,C,n,f,sectionClasses.description),e=renderAccessibleDescription(e,r,C,f),r=renderError(a,f),C={"aria-labelledby":E?.props?.id,"aria-details":n?.props?.id,"aria-describedby":e?.props?.id},r=[n,e,r,i.props.children],s=clsx(o,s.type,sectionClasses.root,{[sectionClasses.basicSection]:"basic-section"===u,[sectionClasses.fieldSetSection]:"fieldset-section"===u,[makeSafeClassName(l)]:!!l,[makeSafeClassName(s.styleName)]:!!s.styleName});return b?React.createElement(AccordionRoot,{className:s,expanded:!0!==t,onChange:(e,o)=>{S&&o?g(l):p("collapsed",!o)},...C},React.createElement(AccordionSummary,{expandIcon:React.createElement(ChevronDown,null),ref:e=>{null!==e&&t&&m(e,l)}},E),...r):React.createElement(BoxRoot,{className:s,component:"section",...C},E,React.createElement(Box,null,...r))};export default Section;export{sectionClasses};
1
+ import Accordion,{accordionClasses}from"@vertigis/react-ui/Accordion";import AccordionSummary from"@vertigis/react-ui/AccordionSummary";import Box from"@vertigis/react-ui/Box";import FormLabel from"@vertigis/react-ui/FormLabel";import ChevronDown from"@vertigis/react-ui/icons/ChevronDown";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useEffect}from"react";import{defs}from"../FormHost.js";import{renderAccessibleDescription,renderDescription,renderError}from"../common.js";import{isAccordionSection,isCollapsibleSection,isTabSection,makeSafeClassName,makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";const PREFIX="WorkflowSection",sectionClasses={root:`${PREFIX}-root`,basicSection:`${PREFIX}-basicSection`,fieldSetSection:`${PREFIX}-fieldSetSection`,tabSection:`${PREFIX}-tabSetSection`,title:`${PREFIX}-title`,unstyledSection:`${PREFIX}-unstyledSection`,description:`${PREFIX}-description`},StyledAccordion=styled(Accordion)(({theme:{spacing:e}})=>({[`.${accordionClasses.region}`]:{padding:e(1),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:e(.5)}}})),StyledTabPage=styled(Box)(({theme:{spacing:e}})=>({padding:e(1)})),StyledSection=styled(Box)(({theme:{palette:e,spacing:t,typography:{pxToRem:o}}})=>({marginBottom:t(4),marginTop:t(4),[`.${sectionClasses.description} p`]:{marginBottom:0,marginTop:0,padding:t(.5)},[`&.${sectionClasses.basicSection}`]:{borderLeft:`6px solid ${e.primary[500]}`,paddingLeft:t(1),paddingRight:t(1)},[`&.${sectionClasses.fieldSetSection}`]:{position:"relative",border:`3px solid ${e.primary[500]}`,borderLeft:"none",borderRight:"none",paddingTop:t(3),paddingBottom:t(2),[`.${sectionClasses.title}`]:{backgroundColor:e.background.default,position:"absolute",top:o(-22),left:0,padding:0,"& span":{paddingRight:t(1)}}},[`&.${sectionClasses.unstyledSection}`]:{marginBottom:0,marginTop:0}})),Section=({accessibleDescription:e,className:t,collapsed:o,component:i,description:s,element:a,enabled:n,error:r,hasInvalidChild:c,name:l,refs:d,renderFocus:m,setProperty:p,translateText:S,updateMutuallyExclusiveSections:b})=>{let f;null!=a&&a.format&&(f=a.format),f=void 0!==f&&null!==f?f:defs.DEFAULT_SECTION_FORMAT;const g=isAccordionSection(a);var u=isTabSection(a);const y=g||u||isCollapsibleSection(a);var C=`${makeUniqueId(l)}-input`;useEffect(()=>(d[l]=i,()=>{d[l]=void 0}),[]);var E,R,$=(E=a,R=C,React.createElement(FormLabel,{className:sectionClasses.title,error:y&&(c(E)||!!r),id:`${R}-label`,component:"h6"},React.createElement(Markdown,{inline:!0,text:E.title,translateText:S}))),n=renderDescription(s,C,n,S,sectionClasses.description),e=renderAccessibleDescription(e,s,C,S),s=renderError(r,S),C={"aria-labelledby":$?.props?.id,"aria-details":n?.props?.id,"aria-describedby":e?.props?.id},s=[n,e,s,i.props.children],a=clsx(t,a.type,sectionClasses.root,{[sectionClasses.basicSection]:"basic-section"===f,[sectionClasses.fieldSetSection]:"fieldset-section"===f,[sectionClasses.tabSection]:"tab-section"===f,[sectionClasses.unstyledSection]:"unstyled-section"===f,[makeSafeClassName(l)]:!!l,[makeSafeClassName(a.styleName)]:!!a.styleName});return u?React.createElement(StyledTabPage,{"aria-labelledby":`simple-tab-${l}`,className:a,hidden:o,id:`simple-tabpanel-${l}`,role:"tabpanel"},...s):y?React.createElement(StyledAccordion,{className:a,expanded:!0!==o,onChange:(e,t)=>{g&&t?b(l):p("collapsed",!t)},...C},React.createElement(AccordionSummary,{expandIcon:React.createElement(ChevronDown,null),ref:e=>{null!==e&&o&&m(e,l)}},$),...s):React.createElement(StyledSection,{className:a,component:"section",...C},$,React.createElement(Box,null,...s))};export default Section;export{sectionClasses};
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import * as defs from "../FormDefinition";
2
+ import type { FormElementProps } from "../..";
3
+ import type * as defs from "../FormDefinition";
4
4
  export declare const signatureClasses: {
5
5
  button: string;
6
6
  image: string;
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import type { FormComponent } from "../FormComponent";
3
+ interface TabGroupProps {
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
+ /**
12
+ * This component contains a set of "Section" Form Elements with a `format` of `"tab-section"`.
13
+ */
14
+ declare const TabGroup: ({ className, component }: TabGroupProps) => JSX.Element;
15
+ export default TabGroup;
@@ -0,0 +1 @@
1
+ import Box from"@vertigis/react-ui/Box";import{formLabelClasses}from"@vertigis/react-ui/FormLabel";import FormLabel from"@vertigis/react-ui/FormLabel";import Tab from"@vertigis/react-ui/Tab";import Tabs from"@vertigis/react-ui/Tabs";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useEffect,useState}from"react";import Markdown from"./Markdown.js";const Root=styled(Box)(({theme:{spacing:e}})=>({marginBottom:e(4),marginTop:e(4)})),StyledFormLabel=styled(FormLabel)(()=>({[`&.${formLabelClasses.error}`]:{backgroundColor:"transparent"}})),TabGroup=({className:e,component:t})=>{const[r,a]=useState(!1),{children:o,host:l}=t.props;useEffect(()=>{let e=o.filter(e=>!0!==l.form.elements[e.props.name].collapsed)[0]?.props?.name;e?a(e):(e=o[0]?.props?.name,e?l.updateMutuallyExclusiveSections(e):a(!1))},[o]);return React.createElement(Root,{className:e},React.createElement(Tabs,{onChange:(e,t)=>{l.updateMutuallyExclusiveSections(t)},scrollButtons:"auto",value:r,variant:"scrollable"},o.map(e=>{var t,r=e.props["name"];return React.createElement(Tab,{"aria-controls":`simple-tabpanel-${r}`,id:`simple-tab-${r}`,key:r,label:(t=l.form.elements[r],e=r,React.createElement(StyledFormLabel,{error:l.hasInvalidChild(t)||!!t.error,id:`${e}-label`},React.createElement(Markdown,{inline:!0,text:t.title,translateText:l.translateText.bind(l)}))),value:r})})),o)};export default TabGroup;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
2
+ import type { FormElementProps } from "../..";
3
3
  /**
4
4
  * The component for the "Text" Form Element.
5
5
  * It just exposes the Title and Description which are common to all.
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
2
+ import type { FormElementProps } from "../..";
3
3
  /**
4
4
  * The component for the "Text Area" Form Element.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
2
+ import type { FormElementProps } from "../..";
3
3
  /**
4
4
  * The component for the "Text Box" and "Password Box" Form Elements.
5
5
  */
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { FormElementProps } from "../..";
3
- import { defs } from "../FormHost";
2
+ import type { FormElementProps } from "../..";
3
+ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Time Picker" Form Element.
6
6
  */
@@ -13,6 +13,7 @@ export declare const FormComponentTypes: {
13
13
  MAIN: string;
14
14
  ROW: string;
15
15
  SECTION: string;
16
+ TABGROUP: string;
16
17
  };
17
18
  /**
18
19
  * All of the types of Form Element that are included in VertiGIS Studio Workflow.
@@ -1 +1 @@
1
- const FormComponentTypes={ACCORDIONGROUP:"accordionGroup",BODY:"body",ELEMENT:"element",FOOTER:"footer",FORM:"form",HEADER:"header",MAIN:"main",ROW:"row",SECTION:"section"},FormElementTypes={AUTOCOMPLETE:"AutoComplete",BUTTONBAR:"ButtonBar",CHECKBOX:"CheckBox",CHECKGROUP:"CheckGroup",CUSTOM:"Custom",DATEPICKER:"DatePicker",DATERANGEPICKER:"DateRangePicker",DATETIMEPICKER:"DateTimePicker",DROPDOWNLIST:"DropDownList",FILEPICKER:"FilePicker",GEOMETRYPICKER:"GeometryPicker",HEADER:"Header",HORIZONTALRULE:"HorizontalRule",IMAGE:"Image",ITEMPICKER:"ItemPicker",LISTBOX:"ListBox",NUMBER:"Number",NUMBERRANGESLIDER:"NumberRangeSlider",NUMBERSLIDER:"NumberSlider",PASSWORDBOX:"PasswordBox",RADIOGROUP:"RadioGroup",SCANNER:"Scanner",SECTION:"Section",SIGNATURE:"Signature",TEXT:"Text",TEXTAREA:"TextArea",TEXTBOX:"TextBox",TIMEPICKER:"TimePicker"},Orientation={HORIZONTAL:"horizontal",VERTICAL:"vertical"};var ScanType;!function(e){e.BarCode="barcode",e.QrCode="qrcode"}(ScanType=ScanType||{});const TitleLocation={ABOVE:"above",BESIDE:"beside"};export{FormComponentTypes,FormElementTypes,Orientation,ScanType,TitleLocation};
1
+ const FormComponentTypes={ACCORDIONGROUP:"accordionGroup",BODY:"body",ELEMENT:"element",FOOTER:"footer",FORM:"form",HEADER:"header",MAIN:"main",ROW:"row",SECTION:"section",TABGROUP:"tabGroup"},FormElementTypes={AUTOCOMPLETE:"AutoComplete",BUTTONBAR:"ButtonBar",CHECKBOX:"CheckBox",CHECKGROUP:"CheckGroup",CUSTOM:"Custom",DATEPICKER:"DatePicker",DATERANGEPICKER:"DateRangePicker",DATETIMEPICKER:"DateTimePicker",DROPDOWNLIST:"DropDownList",FILEPICKER:"FilePicker",GEOMETRYPICKER:"GeometryPicker",HEADER:"Header",HORIZONTALRULE:"HorizontalRule",IMAGE:"Image",ITEMPICKER:"ItemPicker",LISTBOX:"ListBox",NUMBER:"Number",NUMBERRANGESLIDER:"NumberRangeSlider",NUMBERSLIDER:"NumberSlider",PASSWORDBOX:"PasswordBox",RADIOGROUP:"RadioGroup",SCANNER:"Scanner",SECTION:"Section",SIGNATURE:"Signature",TEXT:"Text",TEXTAREA:"TextArea",TEXTBOX:"TextBox",TIMEPICKER:"TimePicker"},Orientation={HORIZONTAL:"horizontal",VERTICAL:"vertical"};var ScanType;!function(e){e.BarCode="barcode",e.QrCode="qrcode"}(ScanType=ScanType||{});const TitleLocation={ABOVE:"above",BESIDE:"beside"};export{FormComponentTypes,FormElementTypes,Orientation,ScanType,TitleLocation};
@@ -1,7 +1,7 @@
1
1
  import { Calendar } from "./Calendar";
2
- import { DateRangeRef, DateTimeFormat, DateTimeRef, DateTimeType } from "./FormDefinition";
3
- import { defs } from "./FormHost";
4
- import { FormPresenterHost } from "./FormPresenterHost";
2
+ import type { DateRangeRef, DateTimeFormat, DateTimeRef, DateTimeType } from "./FormDefinition";
3
+ import type { defs } from "./FormHost";
4
+ import type { FormPresenterHost } from "./FormPresenterHost";
5
5
  /**
6
6
  * Checks if a form element's value is equal to the supplied value.
7
7
  * @param elementValue The current value of a Form Element.
@@ -1,5 +1,5 @@
1
- import { FormElementPropertyConstraints, PropertyConstraintsWithDefault, PropertyConstraintsWithMinimum } from "../utils";
2
- import * as types from "./types";
1
+ import type * as types from "./types";
2
+ import type { FormElementPropertyConstraints, PropertyConstraintsWithDefault, PropertyConstraintsWithMinimum } from "../utils";
3
3
  export interface AutoComplete extends types.ElementBase, types.EditableElement, types.ElementWithItems<Item>, types.ElementWithStringLabel, types.ElementWithRequire {
4
4
  /** Indicates the current value. */
5
5
  readonly value?: any;
@@ -1,4 +1,4 @@
1
- import * as types from "./types";
1
+ import type * as types from "./types";
2
2
  export interface ButtonBar extends types.ElementBase, types.EditableElement, types.ElementWithItems<Item> {
3
3
  }
4
4
  export interface Item extends types.ElementItemBase<any> {
@@ -1,4 +1,4 @@
1
- import * as types from "./types";
1
+ import type * as types from "./types";
2
2
  export interface CheckBox extends types.ElementBase, types.EditableElement, types.ElementWithTextLabel {
3
3
  /** Indicates that the element is checked or not. */
4
4
  readonly checked?: boolean;
@@ -1,4 +1,4 @@
1
- import * as types from "./types";
1
+ import type * as types from "./types";
2
2
  export interface CheckGroup extends types.ElementBase, types.EditableElement, types.ElementWithItems<Item>, types.ElementWithRequire {
3
3
  /** Indicates the current value. */
4
4
  readonly value: ItemsRef;