@vertigis/workflow 5.46.1 → 5.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Activator.js +1 -1
- package/Collections.js +1 -1
- package/EnumUtils.js +1 -1
- package/Errors.js +1 -1
- package/Hooks.js +1 -1
- package/IActivityHandler.d.ts +2 -1
- package/IActivityHandler.js +1 -0
- package/LanguageStringUtils.js +1 -1
- package/ProgramInspectorFacility.js +1 -1
- package/Task.js +1 -1
- package/TemplateUtils.js +1 -1
- package/Validation.js +1 -1
- package/activities/app/GetApplicationData.js +1 -1
- package/activities/app/GetApplicationInfo.js +1 -1
- package/activities/app/GetUserInfo.js +1 -1
- package/activities/app/PublishEvent.js +1 -1
- package/activities/app/RemoveApplicationData.d.ts +2 -1
- package/activities/app/RemoveApplicationData.js +1 -1
- package/activities/app/RunCommand.js +1 -1
- package/activities/app/RunOperation.js +1 -1
- package/activities/app/SetApplicationData.js +1 -1
- package/activities/app/applicationData.js +1 -1
- package/activities/arcgis/AddAttachment.js +1 -1
- package/activities/arcgis/AddFeatureLayer.js +1 -1
- package/activities/arcgis/AddFeatures.js +1 -1
- package/activities/arcgis/AddGraphics.js +1 -1
- package/activities/arcgis/ArcadeScript.js +1 -1
- package/activities/arcgis/AreaEngineTask.js +1 -1
- package/activities/arcgis/BufferEngineTask.d.ts +2 -2
- package/activities/arcgis/BufferEngineTask.js +1 -1
- package/activities/arcgis/BufferServiceTask.js +1 -1
- package/activities/arcgis/CastGeometry.d.ts +1 -1
- package/activities/arcgis/CastGeometry.js +1 -1
- package/activities/arcgis/ClearGraphics.js +1 -1
- package/activities/arcgis/ClipEngineTask.d.ts +4 -4
- package/activities/arcgis/ClipEngineTask.js +1 -1
- package/activities/arcgis/ClosestFacilityTask.js +1 -1
- package/activities/arcgis/CompareGeometries.d.ts +3 -3
- package/activities/arcgis/CompareGeometries.js +1 -1
- package/activities/arcgis/ConvertValueToArcGisFieldType.js +1 -1
- package/activities/arcgis/CreateFeatureSet.js +1 -1
- package/activities/arcgis/CreateGraphic.d.ts +1 -1
- package/activities/arcgis/CreateGraphic.js +1 -1
- package/activities/arcgis/CreatePoint.js +1 -1
- package/activities/arcgis/CutEngineTask.d.ts +2 -2
- package/activities/arcgis/CutEngineTask.js +1 -1
- package/activities/arcgis/DeleteAttachments.js +1 -1
- package/activities/arcgis/DeleteFeatures.js +1 -1
- package/activities/arcgis/DensifyEngineTask.d.ts +3 -3
- package/activities/arcgis/DensifyEngineTask.js +1 -1
- package/activities/arcgis/DifferenceEngineTask.d.ts +5 -5
- package/activities/arcgis/DifferenceEngineTask.js +1 -1
- package/activities/arcgis/DistanceEngineTask.d.ts +4 -4
- package/activities/arcgis/DistanceEngineTask.js +1 -1
- package/activities/arcgis/DistanceServiceTask.js +1 -1
- package/activities/arcgis/ExtendedSpatialReferenceInfoEngineTask.js +1 -1
- package/activities/arcgis/FeatureSetFromJson.js +1 -1
- package/activities/arcgis/FlipEngineTask.d.ts +3 -3
- package/activities/arcgis/FlipEngineTask.js +1 -1
- package/activities/arcgis/FromGeoCoordinateStringServiceTask.js +1 -1
- package/activities/arcgis/GeneralizeEngineTask.d.ts +4 -4
- package/activities/arcgis/GeneralizeEngineTask.js +1 -1
- package/activities/arcgis/GenerateArcGisToken.js +1 -1
- package/activities/arcgis/GenerateWebmapForReport.js +1 -1
- package/activities/arcgis/Geocode.js +1 -1
- package/activities/arcgis/GeometryFromJson.js +1 -1
- package/activities/arcgis/Geoprocessing.js +1 -1
- package/activities/arcgis/GeoprocessingAsync.js +1 -1
- package/activities/arcgis/GetAttributeValue.js +1 -1
- package/activities/arcgis/GetAttributeValues.js +1 -1
- package/activities/arcgis/GetCentroid.js +1 -1
- package/activities/arcgis/GetCodedValueDomain.js +1 -1
- package/activities/arcgis/GetCurrentPosition.js +1 -1
- package/activities/arcgis/GetFeatureGeometries.d.ts +2 -2
- package/activities/arcgis/GetFeatureGeometries.js +1 -1
- package/activities/arcgis/GetFeatureGeometry.d.ts +1 -1
- package/activities/arcgis/GetFeatureGeometry.js +1 -1
- package/activities/arcgis/GetFeatureLayerInfo.js +1 -1
- package/activities/arcgis/GetFeatureSetExtent.js +1 -1
- package/activities/arcgis/GetFeatureSetObjectIds.js +1 -1
- package/activities/arcgis/GetFormElementItemsFromFeatures.js +1 -1
- package/activities/arcgis/GetGeometryExtent.js +1 -1
- package/activities/arcgis/GetGraphics.js +1 -1
- package/activities/arcgis/GetLayer.js +1 -1
- package/activities/arcgis/GetLayerDefinitionExpression.js +1 -1
- package/activities/arcgis/GetLayerProperty.js +1 -1
- package/activities/arcgis/GetLayerVisibility.js +1 -1
- package/activities/arcgis/GetMapScreenshot.js +1 -1
- package/activities/arcgis/GetPortalUser.js +1 -1
- package/activities/arcgis/GetTable.js +1 -1
- package/activities/arcgis/IntersectEngineTask.d.ts +5 -5
- package/activities/arcgis/IntersectEngineTask.js +1 -1
- package/activities/arcgis/LabelPointsServiceTask.js +1 -1
- package/activities/arcgis/LengthEngineTask.d.ts +2 -2
- package/activities/arcgis/LengthEngineTask.js +1 -1
- package/activities/arcgis/MapProvider.d.ts +10 -10
- package/activities/arcgis/MapProvider.js +1 -1
- package/activities/arcgis/NearestCoordinateEngineTask.d.ts +2 -2
- package/activities/arcgis/NearestCoordinateEngineTask.js +1 -1
- package/activities/arcgis/NearestVertexEngineTask.d.ts +2 -2
- package/activities/arcgis/NearestVertexEngineTask.js +1 -1
- package/activities/arcgis/NearestVerticesEngineTask.d.ts +2 -2
- package/activities/arcgis/NearestVerticesEngineTask.js +1 -1
- package/activities/arcgis/OffsetEngineTask.d.ts +4 -4
- package/activities/arcgis/OffsetEngineTask.js +1 -1
- package/activities/arcgis/ProjectServiceTask.d.ts +3 -3
- package/activities/arcgis/ProjectServiceTask.js +1 -1
- package/activities/arcgis/QueryAttachmentInfos.js +1 -1
- package/activities/arcgis/QueryTask.d.ts +1 -1
- package/activities/arcgis/QueryTask.js +1 -1
- package/activities/arcgis/RefreshLayer.js +1 -1
- package/activities/arcgis/RegisterCorsUrl.js +1 -1
- package/activities/arcgis/RelateEngineTask.d.ts +2 -2
- package/activities/arcgis/RelateEngineTask.js +1 -1
- package/activities/arcgis/RelationServiceTask.d.ts +2 -2
- package/activities/arcgis/RelationServiceTask.js +1 -1
- package/activities/arcgis/RelationshipQueryTask.js +1 -1
- package/activities/arcgis/RemoveFeatureSetFields.js +1 -1
- package/activities/arcgis/RemoveGraphics.js +1 -1
- package/activities/arcgis/RemoveLayer.js +1 -1
- package/activities/arcgis/RendererFromJson.js +1 -1
- package/activities/arcgis/ResetAllLayerDefinitionExpressions.js +1 -1
- package/activities/arcgis/ResetLayerDefinitionExpression.js +1 -1
- package/activities/arcgis/ReshapeServiceTask.d.ts +1 -1
- package/activities/arcgis/ReshapeServiceTask.js +1 -1
- package/activities/arcgis/ReverseGeocode.js +1 -1
- package/activities/arcgis/RotateEngineTask.d.ts +2 -2
- package/activities/arcgis/RotateEngineTask.js +1 -1
- package/activities/arcgis/RouteTask.js +1 -1
- package/activities/arcgis/RunPrint.js +1 -1
- package/activities/arcgis/RunReport.d.ts +8 -2
- package/activities/arcgis/RunReport.js +1 -1
- package/activities/arcgis/RunWorkflow.js +1 -1
- package/activities/arcgis/SendLayerToAttributeTable.js +1 -1
- package/activities/arcgis/ServiceAreaTask.js +1 -1
- package/activities/arcgis/SetFeatureAttribute.js +1 -1
- package/activities/arcgis/SetFeatureGeometry.d.ts +1 -1
- package/activities/arcgis/SetFeatureGeometry.js +1 -1
- package/activities/arcgis/SetFeaturePopup.js +1 -1
- package/activities/arcgis/SetFeatureSymbol.d.ts +1 -1
- package/activities/arcgis/SetFeatureSymbol.js +1 -1
- package/activities/arcgis/SetImageryLayerOptions.js +1 -1
- package/activities/arcgis/SetLayerDefinitionExpression.js +1 -1
- package/activities/arcgis/SetLayerPopup.js +1 -1
- package/activities/arcgis/SetLayerProperty.js +1 -1
- package/activities/arcgis/SetLayerVisibility.js +1 -1
- package/activities/arcgis/SetMap.js +1 -1
- package/activities/arcgis/SetViewExtent.js +1 -1
- package/activities/arcgis/SetViewpoint.js +1 -1
- package/activities/arcgis/ShowFeaturePopup.js +1 -1
- package/activities/arcgis/ShowResults.js +1 -1
- package/activities/arcgis/SimplifyEngineTask.d.ts +3 -3
- package/activities/arcgis/SimplifyEngineTask.js +1 -1
- package/activities/arcgis/SortFeatureSet.js +1 -1
- package/activities/arcgis/SymbolFromJson.js +1 -1
- package/activities/arcgis/ToGeoCoordinateStringServiceTask.js +1 -1
- package/activities/arcgis/TypeChecking.js +1 -1
- package/activities/arcgis/UnionEngineTask.d.ts +4 -4
- package/activities/arcgis/UnionEngineTask.js +1 -1
- package/activities/arcgis/UnionServiceTask.d.ts +3 -3
- package/activities/arcgis/UnionServiceTask.js +1 -1
- package/activities/arcgis/UpdateAttachment.js +1 -1
- package/activities/arcgis/UpdateFeatures.js +1 -1
- package/activities/arcgis/libs/arcGisRestApi.js +1 -0
- package/activities/arcgis/printing.d.ts +13 -12
- package/activities/arcgis/printing.js +1 -1
- package/activities/arcgis/printingFields.d.ts +2 -63
- package/activities/arcgis/printingFields.js +1 -1
- package/activities/arcgis/runUtils.d.ts +0 -18
- package/activities/arcgis/runUtils.js +1 -1
- package/activities/arcgis/shared.d.ts +1 -0
- package/activities/arcgis/shared.js +1 -1
- package/activities/arcgis/tools.d.ts +2 -22
- package/activities/arcgis/tools.js +1 -1
- package/activities/browser/GetBrowserInfo.js +1 -1
- package/activities/browser/InjectCss.js +1 -1
- package/activities/constants.js +1 -1
- package/activities/core/AddItem.js +1 -1
- package/activities/core/AddItems.js +1 -1
- package/activities/core/Annotation.js +1 -1
- package/activities/core/AwaitAsyncActivity.d.ts +9 -0
- package/activities/core/AwaitAsyncActivity.js +1 -0
- package/activities/core/CalculateDate.js +1 -1
- package/activities/core/Cast.js +1 -1
- package/activities/core/ChannelProvider.d.ts +3 -2
- package/activities/core/ChannelProvider.js +1 -1
- package/activities/core/ClearItems.js +1 -1
- package/activities/core/Container.js +1 -1
- package/activities/core/ConvertBytesToText.js +1 -1
- package/activities/core/ConvertDataTableToFeatureSet.js +1 -1
- package/activities/core/ConvertTextToBytes.js +1 -1
- package/activities/core/ConvertToJson.js +1 -1
- package/activities/core/CreateFile.js +1 -1
- package/activities/core/CreateValue.js +1 -1
- package/activities/core/DecodeUriComponent.js +1 -1
- package/activities/core/Delay.js +1 -1
- package/activities/core/EncodeUriComponent.js +1 -1
- package/activities/core/Evaluate.js +1 -1
- package/activities/core/EvaluateAsync.js +1 -1
- package/activities/core/ExecuteFunction.js +1 -1
- package/activities/core/Exit.js +1 -1
- package/activities/core/ForEach.js +1 -1
- package/activities/core/FormatDate.js +1 -1
- package/activities/core/Function.js +1 -1
- package/activities/core/GetBase64StringFromBytes.js +1 -1
- package/activities/core/GetBase64StringFromFile.js +1 -1
- package/activities/core/GetBytesFromBase64String.js +1 -1
- package/activities/core/GetFirstItem.js +1 -1
- package/activities/core/GetItemAtIndex.js +1 -1
- package/activities/core/GetLastItem.js +1 -1
- package/activities/core/GetLogLevel.js +1 -1
- package/activities/core/GetTextFromFile.js +1 -1
- package/activities/core/GetWorkflowInputs.js +1 -1
- package/activities/core/If.js +1 -1
- package/activities/core/Log.js +1 -1
- package/activities/core/Loop.js +1 -1
- package/activities/core/ParseJson.js +1 -1
- package/activities/core/ParseNumber.js +1 -1
- package/activities/core/ParseUrl.js +1 -1
- package/activities/core/Placeholder.js +1 -1
- package/activities/core/RegexMatches.js +1 -1
- package/activities/core/RegexReplace.js +1 -1
- package/activities/core/RemoveItem.js +1 -1
- package/activities/core/RunActivity.js +1 -1
- package/activities/core/SetLogLevel.js +1 -1
- package/activities/core/SetProperty.js +1 -1
- package/activities/core/SetWorkflowOutput.js +1 -1
- package/activities/core/Switch.js +1 -1
- package/activities/core/TextReplace.js +1 -1
- package/activities/core/Throw.js +1 -1
- package/activities/core/TryCatch.js +1 -1
- package/activities/core/WebRequest.js +1 -1
- package/activities/core/converters.js +1 -1
- package/activities/csv/ConvertCsvToDataTable.js +1 -1
- package/activities/csv/ConvertDataTableToCsv.js +1 -1
- package/activities/csv/ParseCsv.js +1 -1
- package/activities/essentials/GetEssentialsSite.d.ts +15 -14
- package/activities/essentials/GetEssentialsSite.js +1 -1
- package/activities/essentials/RunEssentialsWorkflow.js +1 -1
- package/activities/essentials/RunEssentialsWorkflowActivity.js +1 -1
- package/activities/forms/ActivateFormElement.js +1 -1
- package/activities/forms/AddFormElement.js +1 -1
- package/activities/forms/ClearFormElementError.js +1 -1
- package/activities/forms/CompleteForm.js +1 -1
- package/activities/forms/DisplayForm.js +1 -1
- package/activities/forms/Errors.js +1 -1
- package/activities/forms/FilterFormElementItems.js +1 -1
- package/activities/forms/FormActor.d.ts +1 -2
- package/activities/forms/FormActor.js +1 -1
- package/activities/forms/FormElementMap.js +1 -1
- package/activities/forms/FormRenderer.js +1 -1
- package/activities/forms/GetFormElementItemsFromCollection.js +1 -1
- package/activities/forms/GetFormElementProperty.js +1 -1
- package/activities/forms/GetFormElementValue.js +1 -1
- package/activities/forms/GetFormEventData.js +1 -1
- package/activities/forms/HideFormElement.js +1 -1
- package/activities/forms/PropagateFormEvent.js +1 -1
- package/activities/forms/SetCurrentFormElementItem.js +1 -1
- package/activities/forms/SetFormElementError.js +1 -1
- package/activities/forms/SetFormElementEvent.js +1 -1
- package/activities/forms/SetFormElementItemProperty.js +1 -1
- package/activities/forms/SetFormElementItems.js +1 -1
- package/activities/forms/SetFormElementLimits.js +1 -1
- package/activities/forms/SetFormElementProperty.js +1 -1
- package/activities/forms/ShowFormElement.js +1 -1
- package/activities/image/GetImageMetadata.js +1 -1
- package/activities/image/RotateImage.js +1 -1
- package/activities/index.js +1 -1
- package/activities/main.js +1 -1
- package/activities/math/Abs.js +1 -1
- package/activities/math/Cos.js +1 -1
- package/activities/math/Max.js +1 -1
- package/activities/math/Min.js +1 -1
- package/activities/math/Pow.js +1 -1
- package/activities/math/Random.js +1 -1
- package/activities/math/Sin.js +1 -1
- package/activities/math/Sqrt.js +1 -1
- package/activities/math/Tan.js +1 -1
- package/activities/pdf/AddGeoreferenceToPdf.js +1 -1
- package/activities/pdf/AddImageToPdf.js +1 -1
- package/activities/pdf/AddTextToPdf.js +1 -1
- package/activities/pdf/CreatePdf.js +1 -1
- package/activities/pdf/ExtractPdfPages.js +1 -1
- package/activities/pdf/MergePdfs.js +1 -1
- package/activities/server/CopyFile.js +1 -1
- package/activities/server/CreateDirectory.js +1 -1
- package/activities/server/CreateDownload.js +1 -1
- package/activities/server/CreateEmailAttachment.js +1 -1
- package/activities/server/CreateZipFromDirectory.js +1 -1
- package/activities/server/DeleteDirectory.js +1 -1
- package/activities/server/DeleteFile.js +1 -1
- package/activities/server/DirectoryExists.js +1 -1
- package/activities/server/ExtractZipToDirectory.js +1 -1
- package/activities/server/FileExists.js +1 -1
- package/activities/server/GetDirectoriesInDirectory.js +1 -1
- package/activities/server/GetFilesInDirectory.js +1 -1
- package/activities/server/MoveFile.js +1 -1
- package/activities/server/ReadFile.js +1 -1
- package/activities/server/ReadFileBytes.js +1 -1
- package/activities/server/RunApplication.js +1 -1
- package/activities/server/RunPython.js +1 -1
- package/activities/server/SendEmail.js +1 -1
- package/activities/server/SqlNonQuery.js +1 -1
- package/activities/server/SqlQuery.js +1 -1
- package/activities/server/SqlQueryUnsafe.js +1 -1
- package/activities/server/WriteFile.js +1 -1
- package/activities/server/WriteFileBytes.js +1 -1
- package/activities/ui/Alert.js +1 -1
- package/activities/ui/Confirm.js +1 -1
- package/activities/ui/DialogContent.js +1 -1
- package/activities/ui/DialogProvider.js +1 -1
- package/activities/ui/Prompt.js +1 -1
- package/activities/wab/OpenWidget.js +1 -1
- package/activities/wab/PublishWidgetData.js +1 -1
- package/activities/xlsx/ConvertDataTableToXlsx.js +1 -1
- package/activities/xlsx/ConvertXlsxToDataSet.js +1 -1
- package/constants.js +1 -1
- package/definition/Activity.js +1 -0
- package/definition/ActivityInput.js +1 -1
- package/definition/Component.js +1 -0
- package/definition/DeploymentConfig.js +1 -0
- package/definition/Form.js +1 -0
- package/definition/Program.js +1 -0
- package/definition/ProgramInspector.js +1 -1
- package/definition/Reference.js +1 -0
- package/definition/Resource.js +1 -0
- package/definition/Step.d.ts +1 -1
- package/definition/Step.js +1 -0
- package/definition/Transition.js +1 -0
- package/diagnostics/ConsoleDebugLogger.js +1 -1
- package/diagnostics/logging.js +1 -0
- package/execution/ActivityContext.js +1 -1
- package/execution/ActivityLoader.js +1 -1
- package/execution/AmbientState.d.ts +2 -0
- package/execution/AmbientState.js +1 -1
- package/execution/AsyncContext.d.ts +4 -0
- package/execution/AsyncContext.js +1 -1
- package/execution/Engine.js +1 -1
- package/execution/ExternalEvent.js +1 -0
- package/execution/IDebugSession.js +1 -0
- package/execution/ModuleLoader.js +1 -1
- package/execution/ProgramRunner.js +1 -1
- package/execution/Proxy.js +1 -1
- package/execution/StepContext.js +1 -1
- package/execution/TransitionContext.js +1 -1
- package/execution/util.js +1 -1
- package/forms/ExclusiveTimer.js +1 -1
- package/forms/FormComponent.d.ts +1 -1
- package/forms/FormComponent.js +1 -1
- package/forms/FormDefinition.d.ts +30 -2
- package/forms/FormDefinition.js +1 -1
- package/forms/FormHost.d.ts +55 -9
- package/forms/FormHost.js +1 -1
- package/forms/FormPresenterHost.js +1 -0
- package/forms/MutuallyExclusiveSectionGroup.js +1 -1
- package/forms/NumberParser.js +1 -1
- package/forms/branding/WorkflowColor.d.ts +17 -0
- package/forms/branding/WorkflowColor.js +1 -0
- package/forms/branding/colors.d.ts +15 -0
- package/forms/branding/colors.js +1 -0
- package/forms/branding/createPalette.d.ts +21 -0
- package/forms/branding/createPalette.js +1 -0
- package/forms/components/AccordionGroup.js +1 -1
- package/forms/components/AutoComplete.d.ts +1 -1
- package/forms/components/AutoComplete.js +1 -1
- package/forms/components/Button.d.ts +15 -0
- package/forms/components/Button.js +1 -0
- package/forms/components/ButtonBar.d.ts +1 -1
- package/forms/components/ButtonBar.js +1 -1
- package/forms/components/CheckBox.d.ts +1 -1
- package/forms/components/CheckBox.js +1 -1
- package/forms/components/CheckGroup.d.ts +1 -1
- package/forms/components/CheckGroup.js +1 -1
- package/forms/components/Custom.d.ts +1 -1
- package/forms/components/Custom.js +1 -1
- package/forms/components/DatePicker.d.ts +1 -1
- package/forms/components/DatePicker.js +1 -1
- package/forms/components/DateRangePicker.d.ts +1 -1
- package/forms/components/DateRangePicker.js +1 -1
- package/forms/components/DateTimePicker.d.ts +1 -1
- package/forms/components/DateTimePicker.js +1 -1
- package/forms/components/DateTimeTextField.js +1 -1
- package/forms/components/DropDownList.d.ts +1 -1
- package/forms/components/DropDownList.js +1 -1
- package/forms/components/FilePicker.d.ts +1 -1
- package/forms/components/FilePicker.js +1 -1
- package/forms/components/Form.js +1 -1
- package/forms/components/FormElement.js +1 -1
- package/forms/components/FormLabelNumberField.d.ts +2 -0
- package/forms/components/FormLabelNumberField.js +1 -1
- package/forms/components/GeometryPicker.d.ts +1 -1
- package/forms/components/GeometryPicker.js +1 -1
- package/forms/components/HorizontalRule.d.ts +1 -1
- package/forms/components/HorizontalRule.js +1 -1
- package/forms/components/Image.d.ts +1 -1
- package/forms/components/Image.js +1 -1
- package/forms/components/ItemPicker.d.ts +3 -3
- package/forms/components/ItemPicker.js +1 -1
- package/forms/components/ListBox.d.ts +1 -1
- package/forms/components/ListBox.js +1 -1
- package/forms/components/Markdown.js +1 -1
- package/forms/components/Number.d.ts +1 -1
- package/forms/components/Number.js +1 -1
- package/forms/components/NumberRangeSlider.d.ts +1 -1
- package/forms/components/NumberRangeSlider.js +1 -1
- package/forms/components/NumberSlider.d.ts +1 -1
- package/forms/components/NumberSlider.js +1 -1
- package/forms/components/RadioGroup.d.ts +1 -1
- package/forms/components/RadioGroup.js +1 -1
- package/forms/components/Scanner.d.ts +1 -2
- package/forms/components/Scanner.js +1 -1
- package/forms/components/Section.d.ts +1 -1
- package/forms/components/Section.js +1 -1
- package/forms/components/Signature.d.ts +1 -1
- package/forms/components/Signature.js +1 -1
- package/forms/components/SignatureDialog.js +1 -1
- package/forms/components/Sketch.d.ts +1 -1
- package/forms/components/Sketch.js +1 -1
- package/forms/components/SketchDialog.js +1 -1
- package/forms/components/TabGroup.js +1 -1
- package/forms/components/Text.d.ts +1 -1
- package/forms/components/Text.js +1 -1
- package/forms/components/TextArea.d.ts +1 -1
- package/forms/components/TextArea.js +1 -1
- package/forms/components/TextBox.d.ts +1 -1
- package/forms/components/TextBox.js +1 -1
- package/forms/components/TimePicker.d.ts +1 -1
- package/forms/components/TimePicker.js +1 -1
- package/forms/components/common.js +1 -1
- package/forms/constants.js +1 -1
- package/forms/customNumberFormat.js +1 -1
- package/forms/dateUtilities.d.ts +4 -6
- package/forms/dateUtilities.js +1 -1
- package/forms/elements/AutoComplete.js +1 -1
- package/forms/elements/ButtonBar.d.ts +3 -0
- package/forms/elements/ButtonBar.js +1 -0
- package/forms/elements/CheckBox.js +1 -0
- package/forms/elements/CheckGroup.js +1 -0
- package/forms/elements/Custom.js +1 -0
- package/forms/elements/DatePicker.js +1 -0
- package/forms/elements/DateRangePicker.js +1 -0
- package/forms/elements/DateTimePicker.js +1 -0
- package/forms/elements/DropDownList.js +1 -0
- package/forms/elements/FilePicker.js +1 -0
- package/forms/elements/GeometryPicker.js +1 -0
- package/forms/elements/Header.js +1 -0
- package/forms/elements/HorizontalRule.js +1 -0
- package/forms/elements/Image.js +1 -0
- package/forms/elements/ItemPicker.js +1 -0
- package/forms/elements/ListBox.js +1 -0
- package/forms/elements/Number.js +1 -1
- package/forms/elements/NumberRangeSlider.js +1 -1
- package/forms/elements/NumberSlider.js +1 -0
- package/forms/elements/PasswordBox.js +1 -0
- package/forms/elements/RadioGroup.js +1 -0
- package/forms/elements/Scanner.js +1 -1
- package/forms/elements/Section.js +1 -0
- package/forms/elements/Signature.js +1 -1
- package/forms/elements/Sketch.js +1 -0
- package/forms/elements/Text.js +1 -0
- package/forms/elements/TextArea.js +1 -0
- package/forms/elements/TextBox.js +1 -0
- package/forms/elements/TimePicker.js +1 -0
- package/forms/elements/types.js +1 -0
- package/forms/hostContext.d.ts +0 -1
- package/forms/hostContext.js +1 -1
- package/forms/index.d.ts +0 -1
- package/forms/keyboard.d.ts +0 -1
- package/forms/keyboard.js +1 -1
- package/forms/listUtilities.js +1 -1
- package/forms/manifest.js +1 -1
- package/forms/numberFormatter.js +1 -1
- package/forms/numberUtilities.js +1 -1
- package/forms/presenter.d.ts +1 -1
- package/forms/presenter.js +1 -1
- package/forms/renderers.js +1 -1
- package/forms/textUtilities.js +1 -1
- package/forms/utils.d.ts +28 -7
- package/forms/utils.js +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -0
- package/libs/version.d.ts +1 -1
- package/libs/version.js +1 -1
- package/licensing/LicenseChecker.js +1 -1
- package/licensing/Watermark.js +1 -1
- package/package.json +23 -13
- package/ui/UIService.js +1 -1
- package/activities/arcgis/FeatureTableMap.d.ts +0 -12
- package/activities/arcgis/FeatureTableMap.js +0 -1
- package/forms/Calendar.d.ts +0 -89
- package/forms/Calendar.js +0 -1
|
@@ -4,5 +4,5 @@ import type { defs } from "../../activities/forms/FormRenderer";
|
|
|
4
4
|
/**
|
|
5
5
|
* The component for the "Drop Down List" Form Element.
|
|
6
6
|
*/
|
|
7
|
-
declare const DropDownList:
|
|
7
|
+
declare const DropDownList: React.ForwardRefExoticComponent<FormElementProps<defs.Value | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
8
8
|
export default DropDownList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import NativeSelect from"@vertigis/react-ui/NativeSelect";import*as React from"react";import{useContext,useEffect,useState}from"react";import HostContext from"../hostContext.js";import{getInputId,inspectItems,makeSafeClassName,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const DEFAULT_VALUE="__default",DropDownList=({className:e,current:
|
|
1
|
+
import NativeSelect from"@vertigis/react-ui/NativeSelect";import*as React from"react";import{forwardRef,useContext,useEffect,useState}from"react";import HostContext from"../hostContext.js";import{getInputId,inspectItems,makeSafeClassName,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const DEFAULT_VALUE="__default",DropDownList=forwardRef(({className:e,current:t,element:a,enabled:r,items:o,name:l,prompt:n,raiseEvent:s,setProperty:m,setValue:c,tooltip:i,value:u},d)=>{const p=useContext(HostContext),f=makeUniqueId(l),v=getInputId(f),[b,E]=useState({});useEffect(()=>{const{current:e,items:a,label:r,value:l}=inspectItems(t,o,u);m("current",e),m("label",r),m("value",l,!1),E(a)},[o]);const x=p.renderText(i),C=e=>{const t=e.currentTarget.value,a=b[t].value;m("current",t),m("label",b[t].label),a!==u?c(a,{item:t}):s("changed",a,void 0,t)},N=useFocusCallback(r,l,p);return React.createElement(FormElement,{className:e,element:a,inputId:v,name:l,ref:d},e=>React.createElement(NativeSelect,{disabled:!r,inputProps:{...e,id:v},inputRef:N,onChange:C,title:x,value:t||"__default"},void 0===t&&React.createElement("option",{key:"none",value:"__default",disabled:!0},p.renderText(n)),Object.keys(b).map(e=>{const t=b[e],a=p.renderText(t.label),r=t.styleName?makeSafeClassName(t.styleName):void 0;return React.createElement("option",{className:r,key:e,value:e,title:p.renderText(t.tooltip),disabled:!1===t.enabled},a)})))});export default DropDownList;
|
|
@@ -9,5 +9,5 @@ export declare const filePickerClasses: {
|
|
|
9
9
|
/**
|
|
10
10
|
* The component for the "File Picker" Form Element.
|
|
11
11
|
*/
|
|
12
|
-
declare const FilePicker:
|
|
12
|
+
declare const FilePicker: React.ForwardRefExoticComponent<FormElementProps<defs.FilesRef | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
13
13
|
export default FilePicker;
|
|
@@ -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{useContext,useEffect}from"react";import HostContext from"../hostContext.js";import{isFilesRef}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const PREFIX="FilePicker"
|
|
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{forwardRef,useContext,useEffect}from"react";import HostContext from"../hostContext.js";import{isFilesRef}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const PREFIX="FilePicker";export const filePickerClasses={file:`${PREFIX}-file`,label:`${PREFIX}-label`,list:`${PREFIX}-list`};const StyledFormElement=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=forwardRef(({className:e,element:t,enabled:l,fileTypes:i,name:s,setValue:r,size:o,value:a},n)=>{const c=useContext(HostContext);let m,f=5;"number"==typeof o&&(f=o>1?Math.ceil(o):1),useEffect(()=>{a&&(isFilesRef(a)&&Array.isArray(a.files)||r(void 0,!1))},[a]);const p=c.renderText(t.tooltip);let u=l;const d=[],k=useFocusCallback(l,s,c);if(void 0!==a){const e=e=>()=>{let t;if(a?.files&&a.files.length>1){const l=[...a.files];l.splice(e,1),t={...a,files:l}}r(t)};u=l&&a.files.length<f;const t=c.renderText("@file-picker-remove-item-label");for(const i of a.files){const s=d.length;d.push(React.createElement(Box,{key:"$"+s,className:filePickerClasses.file},React.createElement("label",{className:filePickerClasses.label,title:i.name},i.name),React.createElement(IconButton,{"aria-label":t,disabled:!l,onClick:e(s),ref:k,title:t},React.createElement(Trash,null))))}}d.push(React.createElement(Box,{key:"footer"},React.createElement(Button,{disabled:!u,onClick:()=>{m&&(m.value="",m.click())},ref:k,startIcon:React.createElement(Plus,null),title:p,variant:"outlined"},React.createElement(Markdown,{inline:!0,text:t.prompt||""}))));const g=1!==f;return React.createElement(StyledFormElement,{className:e,component:"fieldset",element:t,name:s,ref:n},React.createElement(Stack,{className:filePickerClasses.list},d),React.createElement("input",{type:"file",style:{display:"none"},title:p,onChange:e=>(e=>{const t=e.files;if(t?.length){const e=a?.files||[];for(let l=0;l<t.length&&e.length!==f;l++)e.push(t[l]);r({refValueType:"files",files:e})}})(e.target),multiple:g,accept:i,ref:e=>{m=e}}))});export default FilePicker;
|
package/forms/components/Form.js
CHANGED
|
@@ -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{
|
|
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{getDateFnsLocale,getMuiLocaleText}from"../dateUtilities.js";import{getKeyString}from"../keyboard.js";import{isMutuallyExclusiveSection}from"../utils.js";const PREFIX="Form";export const formClasses={body:"Form-body",footer:"Form-footer",formElementContent:"Form-element-content",formElementTitle:"Form-element-title",formElementWithTitleBeside:"Form-element-with-title-beside",header:"Form-header",main:"Form-main",root:"Form-root",row:"Form-row"};const StyledBox=styled(Box)(()=>({"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("c14d2671e294e1c22b64a93ed8f2f0f9Tz04ODQ4NixFPTE3NDQ4MzUzNDMwMDAsUz1wcm8sTE09cGVycGV0dWFsLEtWPTI=");const Form=({className:e,component:t})=>{const[o,r]=useState(),[n,i]=useState(),{host:c}=t.props,{form:s}=c;if(useEffect(()=>{let e=!0;const t=c.deriveLocale();return getDateFnsLocale(t).then(t=>{e?r(t):console.warn("Component was unmounted while loading the locale.")}),getMuiLocaleText(t).then(t=>{e?i(t):console.warn("Component was unmounted while loading the locale.")}),()=>{e=!1}},[]),!o)return null;const m={host:c,type:"header",children:[]},l={host:c,type:"body",children:[]},a={host:c,type:"main",children:[]},d={host:c,type:"footer",children:[]},f={host:c,type:"body",children:[]},u={},p=[];function h(e,t){let o=u[t];o||(o=u[t]=[]);let r=o[e];return void 0===r&&(r=o[e]={host:c,type:"row",children:[]}),r}function y(e){if(void 0===e)return l;if("header"===e)return m;if("footer"===e)return d;let t;t="object"==typeof e?e.name:e;let o=(e=>{for(const t of p)if(t.name===e)return t})(t);return void 0===o&&(o={host:c,name:t,type:"section",children:[]},p.push(o)),o}function E(e){return e!==FormElementTypes.SECTION}function F(e){return!0!==e.hoisted&&(!1!==e.visible&&E(e.type))}function g(e){const t=C[e];return null==t||!E(t.type)&&(!0!==t.hoisted&&!1!==t.visible)}function x(e){return e===m||e===l||e===d?`${e.type}-section`:e.name}const C=s.elements,b=Object.keys(C).map(e=>[e,C[e]]).sort((e,t)=>{const o=e[1].section,r=t[1].section;return"header"===o||"footer"===r?Number.MIN_SAFE_INTEGER:"footer"===o||"header"===r?Number.MAX_SAFE_INTEGER:e[1].rowNumber===t[1].rowNumber?e[1].rowIndex-t[1].rowIndex:e[1].rowNumber-t[1].rowNumber});for(const e of b){const[t,o]=e;if(F(o))if(!0!==o.overlay){let e=y(o.section);if(void 0!==o.rowNumber){const t=x(e);e=h(o.rowNumber,t)}e.children.push(React.createElement(FormElementComponent,{key:t,host:c,type:"element",name:t,children:[]}))}else f.children.push(React.createElement(FormElementComponent,{key:t,host:c,type:"element",name:t,children:[]}))}const w=[];if(m.children.length>0&&w.push(React.createElement(FormComponent,{key:"header",...m})),f.children.length>0)w.push(React.createElement(FormComponent,{key:"main",...f}));else{let e,t;v(l);let o=0;const r=()=>{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 o of p){const n=o.name,i=C[n],c=i.format;t&&c!==t&&r(),g(n)&&(isMutuallyExclusiveSection(i)?e?e.push(o):(e=[o],t=c):v(o))}r(),a.children.length>0&&w.push(React.createElement(FormComponent,{key:"main",...a}))}function T(e){if(function(e){const t=x(e),o=u[t];if(o){const t=Object.keys(o).map(e=>parseInt(e)).sort((e,t)=>e-t);for(const r of t){const t=o[r];if(t.children.length>1){const o=`row-${r}`;e.children.push(React.createElement(FormComponent,{key:o,...t}))}else 1===t.children.length&&e.children.push(...t.children)}}}(e),e.children.length>0){const t=e===l?"body":`$${e.name}`;return React.createElement(FormComponent,{key:t,...e})}}function v(e){const t=T(e);t&&a.children.push(t)}function k(e,t,o){const r=[];for(const t of e){const e=T(t);e&&r.push(e)}const n=`${o}${t}`,i={children:r,host:c,name:n,type:o};a.children.push(React.createElement(FormComponent,{key:n,...i}))}return d.children.length>0&&w.push(React.createElement(FormComponent,{key:"footer",...d})),React.createElement(StyledBox,{className:clsx(e,formClasses.root),onKeyDown:function(e){"enter"===getKeyString(e)&&(e.target instanceof HTMLButtonElement||c.post("clicked"))},ref:function(e){c.renderFocus(e)}},React.createElement(LocalizationProvider,{dateAdapter:AdapterDateFns,adapterLocale:o,localeText:{...n,start:c.renderText("@date-range-picker-start-text"),end:c.renderText("@date-range-picker-end-text"),cancelButtonLabel:c.renderText("@common-cancel"),clearButtonLabel:c.renderText("@common-clear"),okButtonLabel:c.renderText("@common-ok"),todayButtonLabel:c.renderText("@common-today")}},w))};export default Form;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import FormControl from"@vertigis/react-ui/FormControl";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import{forwardRef,useContext}from"react";import*as React from"react";import{TitleLocation}from"../constants.js";import HostContext from"../hostContext.js";import{makeSafeClassName,makeUniqueId}from"../utils.js";import{formClasses}from"./Form.js";import{renderAccessibleDescription,renderDescription,renderError,renderTitle}from"./common.js";const StyledFormControl=styled(FormControl)(({theme:{palette:e,spacing:r}})=>({code:{backgroundColor:"rgba(0, 0, 0, .06)",fontFamily:'"Consolas", monospace'},table:{borderCollapse:"collapse","td, th":{border:`1px solid ${e.grey[400]}`,padding:r(.5)},th:{backgroundColor:e.grey[100]}}}));export default forwardRef((e,r)=>{
|
|
1
|
+
import FormControl from"@vertigis/react-ui/FormControl";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import{forwardRef,useContext}from"react";import*as React from"react";import{TitleLocation}from"../constants.js";import HostContext from"../hostContext.js";import{makeSafeClassName,makeUniqueId}from"../utils.js";import{formClasses}from"./Form.js";import{renderAccessibleDescription,renderDescription,renderError,renderTitle}from"./common.js";const StyledFormControl=styled(FormControl)(({theme:{palette:e,spacing:r}})=>({code:{backgroundColor:"rgba(0, 0, 0, .06)",fontFamily:'"Consolas", monospace'},table:{borderCollapse:"collapse","td, th":{border:`1px solid ${e.grey[400]}`,padding:r(.5)},th:{backgroundColor:e.grey[100]}}}));export default forwardRef((e,r)=>{const{children:o,className:t,component:s,element:i,inputId:a,name:n}=e,l=useContext(HostContext),m=makeUniqueId(n),c=renderTitle(m,i.require,i.title,a,"fieldset"===s?"legend":void 0),d=renderDescription(i.description,m,i.enabled),p=renderAccessibleDescription(i.accessibleDescription,i.description,m,l),f=renderError(i.error),u={className:clsx(t,i.type,{[formClasses.formElementWithTitleBeside]:i.titleLocation===TitleLocation.BESIDE,[makeSafeClassName(n)]:!!n,[makeSafeClassName(i.styleName)]:!!i.styleName}),component:s,error:!!f,id:m,ref:r,required:i.require},C=c?.props?.id,b=p?.props?.id,y=o instanceof Function?o:void 0;let h=o instanceof Function?void 0:o;y?h=y({"aria-labelledby":C,"aria-describedby":b}):(u["aria-labelledby"]=C,u["aria-describedby"]=b);const g=[c];return i.titleLocation===TitleLocation.BESIDE?g.push(React.createElement("div",{className:formClasses.formElementContent},d,p,f,h)):(g.push(d),g.push(p),g.push(f),g.push(h)),React.createElement(StyledFormControl,{fullWidth:!0,...u},...g)});
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { InputBaseProps } from "@vertigis/react-ui/InputBase";
|
|
3
|
+
import type { KeyboardEvent } from "react";
|
|
3
4
|
interface FormLabelNumberFieldProps {
|
|
4
5
|
disabled: boolean;
|
|
5
6
|
endAdornment?: React.ReactNode;
|
|
6
7
|
id?: string;
|
|
7
8
|
inputProps: InputBaseProps["inputProps"];
|
|
8
9
|
onChange: (value: number | undefined) => void;
|
|
10
|
+
onKeyDown: (event: KeyboardEvent<HTMLInputElement>) => void;
|
|
9
11
|
startAdornment?: React.ReactNode;
|
|
10
12
|
label: string;
|
|
11
13
|
value: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import FormControl from"@vertigis/react-ui/FormControl";import FormLabel from"@vertigis/react-ui/FormLabel";import NumberInput from"@vertigis/react-ui/NumberInput";import{useId}from"@vertigis/react-ui/utils/react";import*as React from"react";const FormLabelNumberField=e=>{
|
|
1
|
+
import FormControl from"@vertigis/react-ui/FormControl";import FormLabel from"@vertigis/react-ui/FormLabel";import NumberInput from"@vertigis/react-ui/NumberInput";import{useId}from"@vertigis/react-ui/utils/react";import*as React from"react";const FormLabelNumberField=e=>{const{disabled:r,endAdornment:t,id:m,inputProps:o,label:a,max:n,maxDecimalPlaces:i,min:l,onChange:u,onKeyDown:s,startAdornment:c,value:d}=e,b=useId(m),p=`${b}-label`;return React.createElement(FormControl,{disabled:r},React.createElement(FormLabel,{htmlFor:b,id:p},a),React.createElement(NumberInput,{id:b,inputProps:o,endAdornment:t,max:n,maxDecimalPlaces:i,min:l,onChange:u,onKeyDown:s,size:"small",startAdornment:c,value:d}))};export default FormLabelNumberField;
|
|
@@ -4,5 +4,5 @@ import type * as defs from "../FormDefinition";
|
|
|
4
4
|
/**
|
|
5
5
|
* The component for the "Geometry Picker" Form Element.
|
|
6
6
|
*/
|
|
7
|
-
declare const GeometryPicker:
|
|
7
|
+
declare const GeometryPicker: React.ForwardRefExoticComponent<FormElementProps<defs.GeometryRef | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
8
8
|
export default GeometryPicker;
|
|
@@ -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 List from"@vertigis/react-ui/List";import ListItemButton from"@vertigis/react-ui/ListItemButton";import Plus from"@vertigis/react-ui/icons/Plus";import Trash from"@vertigis/react-ui/icons/Trash";import*as React from"react";import{useContext,useEffect,useRef,useState}from"react";import HostContext from"../hostContext.js";import{sanitizeGeometryRef,text}from"../utils.js";import FormElement from"./FormElement.js";import GeometryPickerListItem from"./GeometryPickerListItem.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const GeometryPicker=({autoActivate:e,className:t,element:r,enabled:o,itemLabel:
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import IconButton from"@vertigis/react-ui/IconButton";import List from"@vertigis/react-ui/List";import ListItemButton from"@vertigis/react-ui/ListItemButton";import Plus from"@vertigis/react-ui/icons/Plus";import Trash from"@vertigis/react-ui/icons/Trash";import*as React from"react";import{forwardRef,useContext,useEffect,useRef,useState}from"react";import HostContext from"../hostContext.js";import{sanitizeGeometryRef,text}from"../utils.js";import FormElement from"./FormElement.js";import GeometryPickerListItem from"./GeometryPickerListItem.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const GeometryPicker=forwardRef(({autoActivate:e,className:t,element:r,enabled:o,itemLabel:n,name:i,prompt:s,raiseEvent:c,setProperty:a,setValue:l,size:m,state:u,tooltip:d,value:f},p)=>{const g=useContext(HostContext),[h,k]=useState([]),[y,v]=useState(""),x=u,E=useRef(!1);let R=5;"number"==typeof m&&(R=m>1?Math.ceil(m):1),useEffect(()=>{F(p.current)},[p]),useEffect(()=>{const e=sanitizeGeometryRef(f);f!==e&&l(e,!1),void 0!==f&&(Array.isArray(n)?k(n):(k([]),text.isMarkdown(n)?n.markdown&&v(n):text.isStatus(n)?n.status&&v(n.status):n&&v(n))),null==x&&a("state",[])},[f]);const[b,B]=useState([]),I=useFocusCallback(o,i,g),C=e=>()=>{const t=b.indexOf(e),r=[...b],o=L(e);-1===t?(o.checked=!0,r.push(e)):(o.checked=!1,r.splice(t,1)),B(r)},L=e=>{let t=x[e];return null==t&&(x.length<=e&&(x.length=e,x.push({})),t=x[e]),t},P=e=>()=>{let t;if(f.geometry.length>1){const r=[...f.geometry];if(r.splice(e,1),t={...f,geometry:r},x.splice(e,1),e<h.length){const t=[...h];t.splice(e,1),k(t)}}else x.length=0;const r=[];for(const t of b)t<e?r.push(t):t>e&&r.push(t-1);B(r),l(t,{argument:"remove"})},w=e=>t=>{I(t),null!==t&&(t.checked=!!L(e).checked)},G=e=>{o&&P(e)()},S=(e,t,r)=>{const o=L(e);o.focused=t,o.pending=r,g.renderState(i,"geometry",x)};let j=o;const M=[];if(void 0!==f&&void 0!==x){j=o&&f.geometry.length<R;const e=g.renderText("@geometry-picker-remove-item-label");for(const t of f.geometry){const r=M.length;L(r).content=t;const n=`checkbox-list-label-${r}`;M.push(React.createElement(GeometryPickerListItem,{deleteItem:G,disablePadding:!0,itemIndex:r,key:"$"+r,secondaryAction:React.createElement(IconButton,{"aria-label":e,className:"delete",disabled:!o,edge:"end",onClick:P(r),ref:I,title:e},React.createElement(Trash,null)),updateHighlight:S},React.createElement(ListItemButton,{onClick:C(r),ref:w(r),selected:-1!==b.indexOf(r)},React.createElement(Markdown,{id:n,inline:!0,text:h[r]||y}))))}}const T=()=>{c("clicked",f)},A=g.renderText(d),F=e=>{let t=x;null===e&&(r.visible||null==x&&a("state",[]),t=void 0),g.renderState(i,"geometry",t)};return o&&e&&!E.current&&(setTimeout(()=>{a("autoActivate",void 0),E.current=!1,j&&T()}),E.current=!0),React.createElement(FormElement,{className:t,component:"fieldset",element:r,name:i,ref:p},React.createElement(List,null,M),React.createElement(Box,null,React.createElement(Button,{disabled:!j,onClick:T,ref:I,startIcon:React.createElement(Plus,null),title:A,variant:"outlined"},React.createElement(Markdown,{inline:!0,text:s||""}))))});export default GeometryPicker;
|
|
@@ -3,5 +3,5 @@ import type { FormElementProps } from "../..";
|
|
|
3
3
|
/**
|
|
4
4
|
* The component for the "Horizontal Rule" Form Element.
|
|
5
5
|
*/
|
|
6
|
-
declare const HorizontalRule:
|
|
6
|
+
declare const HorizontalRule: React.ForwardRefExoticComponent<FormElementProps<undefined> & React.RefAttributes<HTMLHRElement>>;
|
|
7
7
|
export default HorizontalRule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Divider from"@vertigis/react-ui/Divider";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{FormElementTypes}from"../constants.js";import{makeSafeClassName}from"../utils.js";const StyledDivider=styled(Divider)(({theme:{spacing:e}})=>({marginBottom:e(3),marginTop:e(3)})),HorizontalRule=({className:e,element:t,name:a
|
|
1
|
+
import Divider from"@vertigis/react-ui/Divider";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{forwardRef}from"react";import{FormElementTypes}from"../constants.js";import{makeSafeClassName}from"../utils.js";const StyledDivider=styled(Divider)(({theme:{spacing:e}})=>({marginBottom:e(3),marginTop:e(3)})),HorizontalRule=forwardRef(({className:e,element:t,name:r},a)=>React.createElement(StyledDivider,{className:clsx(e,FormElementTypes.HORIZONTALRULE,{[makeSafeClassName(r)]:!!r,[makeSafeClassName(t.styleName)]:!!t.styleName})}));export default HorizontalRule;
|
|
@@ -3,5 +3,5 @@ import type { FormElementProps } from "../..";
|
|
|
3
3
|
/**
|
|
4
4
|
* The component for the "Image" Form Element.
|
|
5
5
|
*/
|
|
6
|
-
declare const Image:
|
|
6
|
+
declare const Image: React.ForwardRefExoticComponent<FormElementProps<string> & React.RefAttributes<HTMLHRElement>>;
|
|
7
7
|
export default Image;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useContext}from"react";import HostContext from"../hostContext.js";import FormElement from"./FormElement.js";const StyledFormElement=styled(FormElement)(()=>({overflow:"hidden",img:{alignSelf:"start"}})),Image=({className:e,element:t,name:o,size:
|
|
1
|
+
import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{forwardRef,useContext}from"react";import HostContext from"../hostContext.js";import FormElement from"./FormElement.js";const StyledFormElement=styled(FormElement)(()=>({overflow:"hidden",img:{alignSelf:"start"}})),Image=forwardRef(({className:e,element:t,name:o,size:r,tooltip:m,value:n},l)=>{const a=useContext(HostContext);let s,i,f;"number"==typeof r&&(i=r,s=r),"object"==typeof r&&("number"==typeof r.width&&(s=r.width),"number"==typeof r.height&&(i=r.height)),"string"==typeof n&&(f=n);const c=a.renderText(m);return React.createElement(StyledFormElement,{className:e,element:t,name:o},React.createElement("img",{src:f,alt:c,title:c,width:s,height:i}))});export default Image;
|
|
@@ -9,7 +9,7 @@ export declare const itemPickerClasses: {
|
|
|
9
9
|
item: string;
|
|
10
10
|
items: string;
|
|
11
11
|
};
|
|
12
|
-
declare const ItemPicker:
|
|
13
|
-
spacing?: number
|
|
14
|
-
}
|
|
12
|
+
declare const ItemPicker: React.ForwardRefExoticComponent<FormElementProps<defs.ItemsRef | undefined> & {
|
|
13
|
+
spacing?: number;
|
|
14
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
15
15
|
export default ItemPicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Checkbox from"@vertigis/react-ui/Checkbox";import FormControl from"@vertigis/react-ui/FormControl";import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import FormLabel from"@vertigis/react-ui/FormLabel";import IconButton from"@vertigis/react-ui/IconButton";import Input from"@vertigis/react-ui/Input";import InputAdornment from"@vertigis/react-ui/InputAdornment";import List from"@vertigis/react-ui/List";import ListItem from"@vertigis/react-ui/ListItem";import ListItemButton from"@vertigis/react-ui/ListItemButton";import ListItemIcon from"@vertigis/react-ui/ListItemIcon";import ListItemText,{listItemTextClasses}from"@vertigis/react-ui/ListItemText";import Radio from"@vertigis/react-ui/Radio";import RadioGroup from"@vertigis/react-ui/RadioGroup";import Stack from"@vertigis/react-ui/Stack";import Typography from"@vertigis/react-ui/Typography";import Close from"@vertigis/react-ui/icons/Close";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useContext,useEffect,useMemo,useState}from"react";import{Orientation}from"../constants.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{areValuesEqual}from"../listUtilities.js";import{debounce,isDataRef,isGeometryRef,makeSafeClassName,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const PREFIX="ItemPicker"
|
|
1
|
+
import Checkbox from"@vertigis/react-ui/Checkbox";import FormControl from"@vertigis/react-ui/FormControl";import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import FormLabel from"@vertigis/react-ui/FormLabel";import IconButton from"@vertigis/react-ui/IconButton";import Input from"@vertigis/react-ui/Input";import InputAdornment from"@vertigis/react-ui/InputAdornment";import List from"@vertigis/react-ui/List";import ListItem from"@vertigis/react-ui/ListItem";import ListItemButton from"@vertigis/react-ui/ListItemButton";import ListItemIcon from"@vertigis/react-ui/ListItemIcon";import ListItemText,{listItemTextClasses}from"@vertigis/react-ui/ListItemText";import Radio from"@vertigis/react-ui/Radio";import RadioGroup from"@vertigis/react-ui/RadioGroup";import Stack from"@vertigis/react-ui/Stack";import Typography from"@vertigis/react-ui/Typography";import Close from"@vertigis/react-ui/icons/Close";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{forwardRef,useContext,useEffect,useMemo,useState}from"react";import{Orientation}from"../constants.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{areValuesEqual}from"../listUtilities.js";import{debounce,isDataRef,isGeometryRef,makeSafeClassName,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const PREFIX="ItemPicker";export const itemPickerClasses={allNone:`${PREFIX}-all-none`,button:`${PREFIX}-list-item-button`,clearIcon:`${PREFIX}-clear-button`,horizontal:`${PREFIX}-horizontal`,item:`${PREFIX}-list-item`,items:`${PREFIX}-list-items`};const StyledFormElement=styled(FormElement)(({theme:{typography:e,spacing:t}})=>({[`.${itemPickerClasses.allNone}`]:{marginLeft:t(2)},[`.${itemPickerClasses.clearIcon}`]:{height:e.pxToRem(20),width:e.pxToRem(20)},[`.${itemPickerClasses.items}`]:{[`&.${itemPickerClasses.horizontal}`]:{display:"flex",flexWrap:"wrap",[`.${itemPickerClasses.item}`]:{width:"auto"}},[`.${itemPickerClasses.item}`]:{[`.${itemPickerClasses.button}`]:{paddingBottom:0,paddingTop:0,[`.${listItemTextClasses.primary}`]:{fontWeight:e.fontWeightRegular}}}}})),ItemPicker=forwardRef(({className:e,component:t,element:i,enabled:r,items:o,name:s,orientation:a,prompt:n,selectionMode:c,setProperty:l,setValue:m,showFilter:d,spacing:u,state:p,value:f},k)=>{const g=useContext(HostContext);void 0===u&&(u=1);const I=e=>()=>{const t=b[e].checked;if("single"===c){if(!t)for(const t in b)y(t,t===e)}else y(e,!t);v(!0),g.renderState(s,"item-picker",x)},[R,h]=useState(""),b=o||{};let x=p;const C=useFocusCallback(r,s,g),v=e=>{const t=[];for(const e in b){const i=b[e];i.checked&&t.push(i)}let i;t.length>0&&(i={refValueType:"items",items:t}),areValuesEqual(f,i)||m(i,e)};useEffect(()=>{B(k.current)},[k]),useEffect(()=>{null==x&&(x={items:[],keyToIndex:{}});const e={};for(const t in o){const i=E(t,!1);i&&(e[t]=i)}x.items.length=0,x.keyToIndex={};for(const t in e)x.keyToIndex[t]=x.items.length,x.items.push(e[t]);p!==x&&l("state",x),v(!1)});const E=(e,t=!0)=>{let i=x.keyToIndex[e];if(null==i||null===i){if(!t)return;x.keyToIndex[e]=x.items.length,x.items.push({}),i=x.keyToIndex[e]}return x.items[i]},y=(e,t)=>{b[e].checked=t;const i=E(e);i&&(i.checked=t)},T=e=>t=>{if(C(t),null!==t){const t=!0===b[e].checked;E(e).checked=t}},P=e=>{if(e){if(isGeometryRef(e))return e.geometry;if(isDataRef(e)&&e.data)return e.data.geometry}},L=[];let F;switch(c){case"single":F="radio";break;case"multiple":F="checkbox"}const S={},$={};if(x)for(const e in b){const t=b[e];if(t.checked&&(S[e]=t),E(e).content=P(t.value),!1!==t.visible){$[e]=t;const i=r&&!1!==t.enabled,o=i&&!!F,a=g.renderText(t.tooltip),n=clsx(itemPickerClasses.item,t.styleName?makeSafeClassName(t.styleName):void 0),c=React.createElement(Markdown,{text:t.label});L.push(React.createElement(ListItem,{className:n,disablePadding:!0,key:e},React.createElement(ListItemButton,{className:itemPickerClasses.button,disabled:!i,onClick:o?I(e):void 0,tabIndex:i?void 0:-1,title:a,"data-id":e,onBlur:i?e=>{delete E(e.currentTarget.dataset.id).focused,g.renderState(s,"item-picker",x)}:void 0,onFocus:i?e=>{E(e.currentTarget.dataset.id).focused=!0,g.renderState(s,"item-picker",x)}:void 0,onMouseOver:i?e=>{E(e.currentTarget.dataset.id).pending=!0,g.renderState(s,"item-picker",x)}:void 0,onMouseOut:i?e=>{delete E(e.currentTarget.dataset.id).pending,g.renderState(s,"item-picker",x)}:void 0},"checkbox"===F&&React.createElement(ListItemIcon,null,React.createElement(Checkbox,{edge:"start",checked:!0===b[e]?.checked,disabled:!i,disableRipple:!0,slotProps:{input:{ref:T(e)}},tabIndex:-1,value:e})),"radio"===F&&React.createElement(ListItemIcon,null,React.createElement(Radio,{edge:"start",checked:!0===b[e]?.checked,disabled:!i,disableRipple:!0,name:s,slotProps:{input:{ref:T(e)}},tabIndex:-1,value:e})),React.createElement(ListItemText,null,c))))}}const N=g.renderText(n),w=useMemo(()=>e=>{for(const t in b){const i=b[t];if(e){const t=g.renderText(i.label).toLowerCase();i.visible=t.indexOf(e)>=0}else i.visible=!0}t.forceUpdate()},[b]),M=useMemo(()=>debounce(w),[b]),j=()=>{h(""),w("")},B=e=>{null===e?g.renderState(s,"item-picker"):g.renderState(s,"item-picker",x)},O="multiple"===c&&L.length>0,X=clsx(itemPickerClasses.items,{[itemPickerClasses.horizontal]:a===Orientation.HORIZONTAL});let z,A=0,G=0,q=0,U=0;for(const e in b){const t=$[e];t?(q++,t.checked&&A++):(U++,b[e].checked&&G++)}0===A?z="none":A===q&&(z="all");const V=R?React.createElement(InputAdornment,{position:"end"},React.createElement(IconButton,{disabled:!r,onClick:j,title:g.renderText("@common-clear")},React.createElement(Close,{className:itemPickerClasses.clearIcon}))):null,W=d?`${makeUniqueId(s)}-filter`:void 0;let D,H=g.renderText("@item-picker-select");return O&&U>0&&(H=g.renderText("@item-picker-select-visible"),G>0&&(D=1===G?g.renderText("@item-picker-hidden-selected-item"):`${G} ${g.renderText("@item-picker-hidden-selected-items")}`)),React.createElement(StyledFormElement,{className:e,component:"fieldset",element:i,inputId:W,name:s,ref:k},React.createElement(Stack,{spacing:u},d&&React.createElement(Input,{disabled:!r,endAdornment:V,error:!1,fullWidth:!0,id:W,inputRef:C,onChange:e=>{const t=e.target.value;h(t),M(t.toLowerCase())},onKeyDown:e=>{"escape"===getKeyString(e)&&j()},placeholder:N,type:"text",value:R}),O&&React.createElement(FormControl,{className:itemPickerClasses.allNone},React.createElement(FormLabel,null,H),React.createElement(RadioGroup,{color:"primary",row:!0},React.createElement(FormControlLabel,{value:"all",checked:"all"===z,control:React.createElement(Radio,{size:"small"}),disabled:!r,inputRef:C,onClick:()=>{for(const e in $)y(e,!0);v(!0)},label:g.renderText("@common-all")}),React.createElement(FormControlLabel,{value:"none",checked:"none"===z,control:React.createElement(Radio,{size:"small"}),disabled:!r,onClick:()=>{for(const e in $)y(e,!1);v(!0)},label:g.renderText("@common-none")})),D&&React.createElement(Typography,{variant:"subtitle2"},D)),React.createElement(List,{className:X,dense:!0},L)))});export default ItemPicker;
|
|
@@ -7,5 +7,5 @@ export declare const listBoxClasses: {
|
|
|
7
7
|
/**
|
|
8
8
|
* The component for the "List Box" Form Element.
|
|
9
9
|
*/
|
|
10
|
-
declare const ListBox:
|
|
10
|
+
declare const ListBox: React.ForwardRefExoticComponent<FormElementProps<defs.ItemsRef | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
11
11
|
export default ListBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Select from"@vertigis/react-ui/Select";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useContext
|
|
1
|
+
import Select from"@vertigis/react-ui/Select";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{forwardRef,useContext}from"react";import HostContext from"../hostContext.js";import{areValuesEqual}from"../listUtilities.js";import{inspectItems,makeSafeClassName,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="ListBox";export const listBoxClasses={select:`${PREFIX}-select`};const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({"&&&":{[`.${listBoxClasses.select}`]:{paddingRight:e(1)}}})),ListBox=forwardRef(({className:e,current:t,element:s,enabled:o,items:l,name:a,require:i,setValue:r,size:c,tooltip:m,value:n},d)=>{const u=useContext(HostContext),p=`${makeUniqueId(a)}-input`,{items:f}=inspectItems(t,l,n),x=useFocusCallback(o,a,u),b=Object.entries(f).filter(([,e])=>e.checked).map(([e])=>e),h=e=>{const{options:t}=e.target,s=[];for(const e of t){const{selected:t,value:o}=e;t&&s.push(o)}((e,t)=>{const s=0===e.length?void 0:{refValueType:"items",items:e.map(e=>f[e])};areValuesEqual(n,s)||r(s,t)})(s,!0);for(const[e,t]of Object.entries(l??{}))t.checked=s.includes(e)},C=[];for(const e in f){const t=f[e],s=u.renderText(t.label),o=u.renderText(t.tooltip);t.checked=!0===t.checked;const l=clsx(t.styleName?makeSafeClassName(t.styleName):void 0),a=!1===t.enabled?void 0:!!t.checked;C.push(React.createElement("option",{"aria-selected":a,className:l,key:e,title:o,value:e,disabled:!1===t.enabled},s))}const k=u.renderText(m)||void 0;let v;return"number"==typeof c&&(v=c),React.createElement(StyledFormElement,{className:e,element:s,inputId:p,name:a,ref:d},e=>React.createElement(Select,{disabled:!o||0===C.length,inputProps:{...e,"aria-multiselectable":!0,"aria-orientation":"vertical","aria-required":i,className:listBoxClasses.select,id:p,role:"listbox",size:v,title:k},inputRef:x,multiple:!0,native:!0,onChange:h,value:b},C))});export default ListBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import BaseMarkdown from"@vertigis/react-ui/Markdown";import*as React from"react";import{useContext}from"react";import HostContext from"../hostContext.js";import{hasContent,isMarkdown}from"../textUtilities.js";const Markdown=({text:t,escapeHtml:e=!0,linkTarget:a="_blank",...o})=>{const r=useContext(HostContext)
|
|
1
|
+
import BaseMarkdown from"@vertigis/react-ui/Markdown";import*as React from"react";import{useContext}from"react";import HostContext from"../hostContext.js";import{hasContent,isMarkdown}from"../textUtilities.js";const Markdown=({text:t,escapeHtml:e=!0,linkTarget:a="_blank",...o})=>{const r=useContext(HostContext).translateText(t);return hasContent(r)?isMarkdown(r)?React.createElement(BaseMarkdown,{markdown:r.markdown,escapeHtml:e,linkTarget:a,...o}):React.createElement("div",{className:o.className,role:o.role},React.createElement("p",null,r)):null};export default Markdown;
|
|
@@ -9,5 +9,5 @@ export declare const numberClasses: {
|
|
|
9
9
|
/**
|
|
10
10
|
* The component for the "Number" Form Elements.
|
|
11
11
|
*/
|
|
12
|
-
declare const NumberComponent:
|
|
12
|
+
declare const NumberComponent: React.ForwardRefExoticComponent<FormElementProps<defs.NumberRef | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
13
13
|
export default NumberComponent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{inputClasses}from"@vertigis/react-ui/Input";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{useContext,useEffect,useMemo,useRef,useState}from"react";import{FormElementSize}from"../constants.js";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import{numberFormatConfiguration}from"../elements/Number.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{NumberDisplayFormat,DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT}from"../numberFormatter.js";import{areValuesEqual,enforceConstraints,getCurrencySymbolInfo,getNumberConstraints,getPercentSymbolInfo,preciseRound,sanitizePrecision}from"../numberUtilities.js";import{isNumber,isNumberRef,isString,makeUniqueId
|
|
1
|
+
import{inputClasses}from"@vertigis/react-ui/Input";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import*as React from"react";import{forwardRef,useContext,useEffect,useMemo,useRef,useState}from"react";import{FormElementSize}from"../constants.js";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import{numberFormatConfiguration}from"../elements/Number.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{NumberDisplayFormat,DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT}from"../numberFormatter.js";import{areValuesEqual,enforceConstraints,getCurrencySymbolInfo,getNumberConstraints,getPercentSymbolInfo,preciseRound,sanitizePrecision}from"../numberUtilities.js";import{isNumber,isNumberRef,isString,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="Number";export const numberClasses={large:`${PREFIX}-large`,medium:`${PREFIX}-medium`,small:`${PREFIX}-small`};const StyledFormElement=styled(FormElement)(()=>({[`.${inputClasses.root}`]:{[`&.${numberClasses.large}`]:{width:"50%"},[`&.${numberClasses.medium}`]:{width:"33%"},[`&.${numberClasses.small}`]:{width:"25%"}}})),NumberComponent=forwardRef(({className:e,element:t,enabled:r,error:o,format:m,name:n,prompt:s,require:i,setValue:a,tooltip:u,value:l},c)=>{const p=useContext(HostContext),[f,d]=useState(!1),[b,F]=useState(),C=useRef(!0),N=`${makeUniqueId(n)}-input`,y=p.deriveLocale(),E=p.renderText(s),g=p.renderText(u),{currency:R,customDisplayFormat:D,decimals:I,displayFormat:S,endAdornment:x,isCustom:v,isFixedPoint:P,isPercent:T,numberConstraints:A,startAdornment:U}=useMemo(()=>{const e=m,t=e?.currency||DEFAULT_CURRENCY,r=e?.displayFormat,o=r===NumberDisplayFormat.CUSTOM,n=r===NumberDisplayFormat.FIXED_POINT,s=r===NumberDisplayFormat.PERCENT,i=getNumberConstraints(e,numberFormatConfiguration),a=e?.customDisplayFormat||DEFAULT_CUSTOM_FORMAT,u=r===NumberDisplayFormat.CUSTOM?-1:sanitizePrecision(e?.precision,i.step,numberFormatConfiguration);let l=null,c=null;if(r===NumberDisplayFormat.CURRENCY||r===NumberDisplayFormat.ACCOUNTING){const e=getCurrencySymbolInfo(y,t);if(e){const t=React.createElement(InputAdornment,{position:e.position},e.symbol);"start"===e.position?l=t:c=t}}else if(s){const e=getPercentSymbolInfo(y);if(e){const t=React.createElement(InputAdornment,{position:e.position},e.symbol);"start"===e.position?l=t:c=t}}return{currency:t,customDisplayFormat:a,decimals:u,displayFormat:r,endAdornment:c,isCustom:o,isFixedPoint:n,isPercent:s,numberConstraints:i,startAdornment:l}},[m]),M=useMemo(()=>S===NumberDisplayFormat.CUSTOM?countDecimalsInCustomFormat(D,b):-1,[b]),{maximum:j,minimum:z,step:O}=A;let w=T?I-2:I;w=Math.max(0,w);const $={currency:R,customDisplayFormat:D,format:S,fractionalDigits:w,locale:y},h=e=>{if("number"==typeof e)return{refValueType:"number",format:{lowerBound:z,precision:I,step:O,upperBound:j},display:p.formatNumber(e,$),numeric:e}},q=()=>{const e=(e=>void 0===e?void 0:enforceConstraints(e,A))(b),t=h(e);areValuesEqual(l,t)||a(t);const r=t?.numeric;r!==b&&F(r)};useEffect(()=>{C.current?C.current=!1:f||q()},[f,b]),useEffect(()=>{const e=_(l),t=void 0===e?void 0:h(e);areValuesEqual(l,t)||a(t,!1),e!==b&&F(e)},[l]);const _=e=>{let t;if(isNumber(e))t=e;else if(isString(e)){if(!e)return;t=p.coerceNumber(e,y)}else"number"==typeof e?.numeric&&(t=e.numeric);return"number"==typeof t&&0*t!=0&&(t=void 0),void 0===t?t:enforceConstraints(t,A)},L=e=>{const t=getKeyString(e);if("enter"!==t)return"escape"===t?(e=>{const t=isNumberRef(l)?l.numeric:void 0;return t!==b&&F(t),e.currentTarget.select(),e.stopPropagation(),e.preventDefault(),!1})(e):void 0;q()},k=useFocusCallback(r,n,p),V="string"==typeof t.size?t.size:FormElementSize.Full,X=v?M:I,B=clsx({[numberClasses.large]:V===FormElementSize.Large,[numberClasses.medium]:V===FormElementSize.Medium,[numberClasses.small]:V===FormElementSize.Small});return React.createElement(StyledFormElement,{className:e,element:t,inputId:N,name:n,ref:c},e=>React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{if(v)return customFormatNumber(e,D,$.locale);T&&(e*=100);const t={format:P?$.format:void 0,fractionalDigits:$.fractionalDigits,locale:$.locale};return p.formatNumber(e,t)},parseNumber:e=>{if(v)return parseCustomFormattedNumber(e,D,$.locale);let t=p.coerceNumber(e,y);return T&&(t=preciseRound(t/100,I)),t}}},React.createElement(NumberInput,{allowUndefined:!0,className:B,correctOnBlur:!0,disabled:!r,endAdornment:x,error:!!o,inputProps:{...e,id:N,onKeyDown:L,title:g},inputRef:k,max:j,maxDecimalPlaces:X,min:z,onBlur:()=>{d(!1)},onChange:e=>F(e),onFocus:()=>{d(!0)},placeholder:E,required:i,size:"small",startAdornment:U,value:b})))});export default NumberComponent;
|
|
@@ -8,5 +8,5 @@ export declare const numberRangeSliderClasses: {
|
|
|
8
8
|
/**
|
|
9
9
|
* The component for the "Number Range Slider" Form Element.
|
|
10
10
|
*/
|
|
11
|
-
declare const NumberRangeSlider:
|
|
11
|
+
declare const NumberRangeSlider: React.ForwardRefExoticComponent<FormElementProps<number[] | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
12
12
|
export default NumberRangeSlider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Box from"@vertigis/react-ui/Box";import{formControlClasses}from"@vertigis/react-ui/FormControl";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import Stack from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import{useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import{numberFormatConfiguration}from"../elements/NumberRangeSlider.js";import HostContext from"../hostContext.js";import{DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,NumberDisplayFormat}from"../numberFormatter.js";import{getCurrencySymbolInfo,getPercentSymbolInfo,preciseRound}from"../numberUtilities.js";import{getMarks,getNumberConstraints,getNumberSliderValues,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import{formControlClasses}from"@vertigis/react-ui/FormControl";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import Stack from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import{forwardRef,useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import{numberFormatConfiguration}from"../elements/NumberRangeSlider.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,NumberDisplayFormat}from"../numberFormatter.js";import{getCurrencySymbolInfo,getPercentSymbolInfo,preciseRound}from"../numberUtilities.js";import{getMarks,getNumberConstraints,getNumberSliderValues,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle}from"../utils.js";import FormElement from"./FormElement.js";import FormLabelNumberField from"./FormLabelNumberField.js";import{useFocusCallback}from"./common.js";const PREFIX="NumberRangeSlider";export const numberRangeSliderClasses={container:`${PREFIX}-container`,inputContainer:`${PREFIX}-input-container`,toLabel:`${PREFIX}-to-label`};const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberRangeSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${numberRangeSliderClasses.inputContainer}`]:{marginTop:e(1),[`.${formControlClasses.root}`]:{flexGrow:1},[`.${numberRangeSliderClasses.toLabel}`]:{marginLeft:e(2),marginRight:e(2),paddingTop:e(2),alignSelf:"center"}}}})),NumberRangeSlider=forwardRef(({className:e,element:t,enabled:r,format:o,manualEntry:a,showMinMaxLabels:n,showTickMarks:m,name:i,raiseEvent:s,title:l,tooltip:u,value:c,setValue:d},p)=>{const b=useContext(HostContext),f=b.deriveLocale(),{currency:C,customDisplayFormat:F,decimals:g,displayFormat:N,endAdornment:y,isCustom:R,isFixedPoint:S,isPercent:x,numberConstraints:E,startAdornment:D}=useMemo(()=>{const e=o,t=e?.currency||DEFAULT_CURRENCY,r=e?.displayFormat,a=r===NumberDisplayFormat.CUSTOM,n=r===NumberDisplayFormat.FIXED_POINT,m=r===NumberDisplayFormat.PERCENT,i=getNumberConstraints(e,numberFormatConfiguration),s=e?.customDisplayFormat||DEFAULT_CUSTOM_FORMAT,l=r===NumberDisplayFormat.CUSTOM?-1:sanitizePrecision(e?.precision,i.step,numberFormatConfiguration);let u=null,c=null;if(r===NumberDisplayFormat.CURRENCY||r===NumberDisplayFormat.ACCOUNTING){const e=getCurrencySymbolInfo(f,t);if(e){const t=React.createElement(InputAdornment,{position:e.position},e.symbol);"start"===e.position?u=t:c=t}}else if(m){const e=getPercentSymbolInfo(f);if(e){const t=React.createElement(InputAdornment,{position:e.position},e.symbol);"start"===e.position?u=t:c=t}}return{currency:t,customDisplayFormat:s,decimals:l,displayFormat:r,endAdornment:c,isCustom:a,isFixedPoint:n,isPercent:m,numberConstraints:i,startAdornment:u}},[o]),{step:A}=E,v=E.maximum,T=E.minimum,[I,P]=useState(!1),[L,M]=useState(!1),[U,h]=useState([T,v]),k=useMemo(()=>N===NumberDisplayFormat.CUSTOM?[countDecimalsInCustomFormat(F,U[0]),countDecimalsInCustomFormat(F,U[1])]:[-1,-1],[U]),$=useRef(!0),[j,w]=useMemo(()=>{const e=makeUniqueId(i);return[e,`${e}-slider-input`]},[i]),O=!1!==n,_=!!m,X=!1!==a;let B=x?g-2:g;B=Math.max(0,B);const V={currency:C,customDisplayFormat:F,format:N,fractionalDigits:B,locale:f},K=()=>{const e=getNumberSliderValues(U,E);U[0]===e[0]&&U[1]===e[1]||h(e),Y(c,e)||d(e)};useEffect(()=>{$.current?$.current=!1:L?q(U):I||K()},[I,L,U]),useEffect(()=>{const e=getNumberSliderValues(c,E);Y(c,e)||d(e,!1),Y(U,e)||h(e)},[c]);const Y=(e,t)=>void 0===e&&void 0===t[0]&&void 0===t[1]||(void 0===e&&null===t[0]&&null===t[1]||!(!Array.isArray(e)||2!==e.length||e[0]!==t[0]||e[1]!==t[1])),q=useMemo(()=>throttle(e=>{s("dragged",e)}),[]),z=useFocusCallback(r,i,b),G=b.renderText(u),H=!r&&!L,J=X?{max:v,min:T,onBlur:()=>{P(!1)},onFocus:()=>{P(!0)},step:A,title:G}:void 0,Q=R?k:[g,g],W=e=>{"enter"===getKeyString(e)&&K()};return React.createElement(StyledFormElement,{className:e,element:t,inputId:`${w}-0`,name:i,ref:p},React.createElement(Box,{className:numberRangeSliderClasses.container},React.createElement(Slider,{disabled:H,getAriaLabel:()=>b.renderText(l),getAriaValueText:e=>b.formatNumber(e,V),marks:getMarks(v,T,A,V,O,_),max:v,min:T,onChange:(e,t)=>{M(!0),Array.isArray(t)&&h(t)},onChangeCommitted:()=>{M(!1)},slotProps:{input:()=>({ref:e=>{null===e||e.id||(e.id=`${w}-${e.getAttribute("data-index")}`),z(e)}})},step:A,title:G,value:U,valueLabelDisplay:"on",valueLabelFormat:e=>b.formatNumber(e,V)}),!1!==X&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{if(R)return customFormatNumber(e,F,V.locale);x&&(e*=100);const t={format:S?V.format:void 0,fractionalDigits:V.fractionalDigits,locale:V.locale};return b.formatNumber(e,t)},parseNumber:e=>{if(R)return parseCustomFormattedNumber(e,F,V.locale);let t=b.coerceNumber(e,f);return x&&(t=preciseRound(t/100,g)),t}}},React.createElement(Stack,{direction:"row",className:numberRangeSliderClasses.inputContainer},React.createElement(FormLabelNumberField,{disabled:!r,id:`${j}-startInput`,inputProps:J,endAdornment:y,label:b.renderText("@common-start"),max:v,maxDecimalPlaces:Q[0],min:T,onChange:e=>{void 0===e&&(e=T),h([e,U[1]])},onKeyDown:W,startAdornment:D,value:U[0]}),React.createElement(Box,{className:numberRangeSliderClasses.toLabel}," ",b.renderText("@common-to")," "),React.createElement(FormLabelNumberField,{disabled:!r,endAdornment:y,id:`${j}-endInput`,inputProps:J,label:b.renderText("@common-end"),max:v,maxDecimalPlaces:Q[1],min:T,onChange:e=>{void 0===e&&(e=v),h([U[0],e])},onKeyDown:W,startAdornment:D,value:U[1]})))))});export default NumberRangeSlider;
|
|
@@ -7,5 +7,5 @@ export declare const numberSliderClasses: {
|
|
|
7
7
|
/**
|
|
8
8
|
* The component for the "Number Slider" Form Element.
|
|
9
9
|
*/
|
|
10
|
-
declare const NumberSlider:
|
|
10
|
+
declare const NumberSlider: React.ForwardRefExoticComponent<FormElementProps<NumberRef | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
11
11
|
export default NumberSlider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Box from"@vertigis/react-ui/Box";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{inputBaseClasses}from"@vertigis/react-ui/InputBase";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import{styled}from"@vertigis/react-ui/styles";import{useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import HostContext from"../hostContext.js";import{DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,NumberDisplayFormat}from"../numberFormatter.js";import{areValuesEqual,getCurrencySymbolInfo,getMarks,getNumberConstraints,getNumberSliderValues,getPercentSymbolInfo,preciseRound,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle
|
|
1
|
+
import Box from"@vertigis/react-ui/Box";import InputAdornment from"@vertigis/react-ui/InputAdornment";import{inputBaseClasses}from"@vertigis/react-ui/InputBase";import{NumberFormatContext}from"@vertigis/react-ui/NumberFormatContext";import NumberInput from"@vertigis/react-ui/NumberInput";import Slider,{sliderClasses}from"@vertigis/react-ui/Slider";import{styled}from"@vertigis/react-ui/styles";import{forwardRef,useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{countDecimalsInCustomFormat,customFormatNumber,parseCustomFormattedNumber}from"../customNumberFormat.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{DEFAULT_CURRENCY,DEFAULT_CUSTOM_FORMAT,NumberDisplayFormat}from"../numberFormatter.js";import{areValuesEqual,getCurrencySymbolInfo,getMarks,getNumberConstraints,getNumberSliderValues,getPercentSymbolInfo,preciseRound,sanitizePrecision}from"../numberUtilities.js";import{makeUniqueId,throttle}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="NumberSlider";export const numberSliderClasses={container:`${PREFIX}-container`};const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${numberSliderClasses.container}`]:{display:"inline-flex",flexDirection:"column",paddingLeft:e(2),paddingRight:e(2),paddingTop:e(4),width:"100%",[`.${sliderClasses.markLabel}`]:{transform:"translateX(-100%)",'&[data-index="0"]':{transform:"none"}},[`.${inputBaseClasses.root}`]:{marginTop:e(1)}}})),NumberSlider=forwardRef(({className:e,element:t,enabled:r,error:o,format:a,manualEntry:m,showMinMaxLabels:s,showTickMarks:n,name:i,raiseEvent:u,title:l,tooltip:c,value:p,setValue:d},f)=>{const b=useContext(HostContext),F=b.deriveLocale(),{currency:y,customDisplayFormat:C,decimals:N,displayFormat:g,endAdornment:E,isCustom:S,isFixedPoint:x,isPercent:D,numberConstraints:R,startAdornment:I}=useMemo(()=>{const e=a,t=e?.currency||DEFAULT_CURRENCY,r=e?.displayFormat,o=r===NumberDisplayFormat.CUSTOM,m=r===NumberDisplayFormat.FIXED_POINT,s=r===NumberDisplayFormat.PERCENT,n=getNumberConstraints(e),i=e?.customDisplayFormat||DEFAULT_CUSTOM_FORMAT,u=r===NumberDisplayFormat.CUSTOM?-1:sanitizePrecision(e?.precision,n.step);let l=null,c=null;if(r===NumberDisplayFormat.CURRENCY||r===NumberDisplayFormat.ACCOUNTING){const e=getCurrencySymbolInfo(F,t);if(e){const t=React.createElement(InputAdornment,{position:e.position},e.symbol);"start"===e.position?l=t:c=t}}else if(s){const e=getPercentSymbolInfo(F);if(e){const t=React.createElement(InputAdornment,{position:e.position},e.symbol);"start"===e.position?l=t:c=t}}return{currency:t,customDisplayFormat:i,decimals:u,displayFormat:r,endAdornment:c,isCustom:o,isFixedPoint:m,isPercent:s,numberConstraints:n,startAdornment:l}},[a]),{step:A}=R,T=R.maximum,v=R.minimum,[M,P]=useState(!1),[U,h]=useState(!1),[k,L]=useState(v),B=useMemo(()=>g===NumberDisplayFormat.CUSTOM?countDecimalsInCustomFormat(C,k):-1,[k]),O=useRef(!0),V=`${makeUniqueId(i)}-input`,j=!1!==s,w=!!n,_=!1!==m;let q=D?N-2:N;q=Math.max(0,q);const $={currency:y,customDisplayFormat:C,format:g,fractionalDigits:q,locale:F},X=e=>({refValueType:"number",format:{currency:y,customDisplayFormat:C,displayFormat:g,lowerBound:v,precision:N,step:A,upperBound:T},display:b.formatNumber(e,$),numeric:e}),z=()=>{const e=getNumberSliderValues(k,R,!0)[0];e!==k&&L(e);const t=X(e);areValuesEqual(p,t)||d(t)};useEffect(()=>{O.current?O.current=!1:U?K(k):M||z()},[M,U,k]),useEffect(()=>{const e=getNumberSliderValues(p,R,!0)[0],t=X(e);areValuesEqual(p,t)||d(t,!1),k!==e&&L(e)},[p]);const K=useMemo(()=>throttle(e=>{u("dragged",X(e))}),[]),Y=useFocusCallback(r,i,b),H=b.renderText(c),G=!r&&!U,J=!r,Q=S?B:N;return React.createElement(StyledFormElement,{className:e,element:t,inputId:V,name:i,ref:f},React.createElement(Box,{className:numberSliderClasses.container},React.createElement(Slider,{disabled:G,getAriaLabel:()=>b.renderText(l),getAriaValueText:e=>b.formatNumber(e,$),marks:getMarks(T,v,A,$,j,w),max:T,min:v,onChange:(e,t)=>{h(!0);const r=Array.isArray(t)?t[0]:t;L(r)},onChangeCommitted:()=>{h(!1)},slotProps:{input:{id:V,ref:Y}},step:A,title:H,value:"number"==typeof k?k:0,valueLabelDisplay:"on",valueLabelFormat:e=>b.formatNumber(e,$)}),!1!==_&&React.createElement(NumberFormatContext.Provider,{value:{formatNumber:e=>{if(S)return customFormatNumber(e,C,$.locale);D&&(e*=100);const t={format:x?$.format:void 0,fractionalDigits:$.fractionalDigits,locale:$.locale};return b.formatNumber(e,t)},parseNumber:e=>{if(S)return parseCustomFormattedNumber(e,C,$.locale);let t=b.coerceNumber(e,F);return D&&(t=preciseRound(t/100,N)),t}}},React.createElement(NumberInput,{correctOnBlur:!0,disabled:J,endAdornment:E,error:!!o,inputProps:{step:A,title:H},max:T,maxDecimalPlaces:Q,min:v,onBlur:()=>{P(!1)},onChange:e=>{L(void 0===e?v:e)},onFocus:()=>{P(!0)},onKeyDown:e=>{"enter"===getKeyString(e)&&z()},size:"small",startAdornment:I,value:k}))))});export default NumberSlider;
|
|
@@ -4,5 +4,5 @@ import type { defs } from "../FormHost";
|
|
|
4
4
|
/**
|
|
5
5
|
* The component for the "Radio Group" Form Element.
|
|
6
6
|
*/
|
|
7
|
-
declare const RadioGroup:
|
|
7
|
+
declare const RadioGroup: React.ForwardRefExoticComponent<FormElementProps<defs.Value | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
8
8
|
export default RadioGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import Radio from"@vertigis/react-ui/Radio";import BaseRadioGroup from"@vertigis/react-ui/RadioGroup";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useContext,useEffect}from"react";import{Orientation}from"../constants.js";import HostContext from"../hostContext.js";import{makeSafeClassName,inspectItems}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({marginBottom:e(1.5)})),RadioGroup=({className:e,current:t,element:o,enabled:r,id:a,items:m,label:l,name:s,orientation:n,raiseEvent:i,setProperty:c,setValue:u,value:
|
|
1
|
+
import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import Radio from"@vertigis/react-ui/Radio";import BaseRadioGroup from"@vertigis/react-ui/RadioGroup";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{forwardRef,useContext,useEffect}from"react";import{Orientation}from"../constants.js";import HostContext from"../hostContext.js";import{makeSafeClassName,inspectItems}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({marginBottom:e(1.5)})),RadioGroup=forwardRef(({className:e,current:t,element:o,enabled:r,id:a,items:m,label:l,name:s,orientation:n,raiseEvent:i,setProperty:c,setValue:u,value:d},f)=>{const p=useContext(HostContext),R=inspectItems(t,m,d),v=R.items,b=[],C=useFocusCallback(r,s,p);useEffect(()=>{t!==R.current&&c("current",R.current),l!==R.label&&c("label",R.label),d!==R.value&&u(R.value,!1)});for(const e in v){const o=v[e],a=r&&!1!==o.enabled,m=p.renderText(o.tooltip),l=o.styleName?makeSafeClassName(o.styleName):void 0;b.push(React.createElement(FormControlLabel,{className:l,control:React.createElement(Radio,{onClick:()=>{t!==e&&(c("current",e),o.value!==d?u(o.value,{item:e}):i("changed",o.value,void 0,e))},slotProps:{input:{ref:C}}}),disabled:!a,key:e,label:React.createElement(Markdown,{text:o.label}),title:m,value:e}))}return React.createElement(StyledFormElement,{className:e,component:"fieldset",element:o,name:s,ref:f},React.createElement(BaseRadioGroup,{name:a,row:n===Orientation.HORIZONTAL,value:t||""},b))});export default RadioGroup;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { FormElementProps } from "../..";
|
|
3
3
|
import type { ScanRef } from "../FormDefinition";
|
|
4
|
-
import type * as defs from "../FormDefinition";
|
|
5
4
|
export declare const scannerClasses: {
|
|
6
5
|
container: string;
|
|
7
6
|
button: string;
|
|
8
7
|
inputContainer: string;
|
|
9
8
|
};
|
|
10
|
-
declare const Scanner:
|
|
9
|
+
declare const Scanner: React.ForwardRefExoticComponent<FormElementProps<ScanRef | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
11
10
|
export default Scanner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import Button from"@vertigis/react-ui/Button";import Input from"@vertigis/react-ui/Input";import Stack from"@vertigis/react-ui/Stack";import{Close as CloseIcon,ScanBarcode,ScanMulti,ScanQr}from"@vertigis/react-ui/icons";import{styled}from"@vertigis/react-ui/styles";import{useState,useEffect,useRef,useContext}from"react";import*as React from"react";import{ScanType}from"../constants.js";import{scannerConfiguration}from"../elements/Scanner.js";import HostContext from"../hostContext.js";import{isScanRef,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="Scanner"
|
|
1
|
+
import Button from"@vertigis/react-ui/Button";import Input from"@vertigis/react-ui/Input";import Stack from"@vertigis/react-ui/Stack";import{Close as CloseIcon,ScanBarcode,ScanMulti,ScanQr}from"@vertigis/react-ui/icons";import{styled}from"@vertigis/react-ui/styles";import{useState,useEffect,useRef,useContext,forwardRef}from"react";import*as React from"react";import{ScanType}from"../constants.js";import{scannerConfiguration}from"../elements/Scanner.js";import HostContext from"../hostContext.js";import{isScanRef,makeUniqueId}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const PREFIX="Scanner";export const scannerClasses={container:`${PREFIX}-container`,button:`${PREFIX}-button`,inputContainer:`${PREFIX}-inner`};const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${scannerClasses.container}`]:{gap:e(.5),video:{width:"100%"},[`.${scannerClasses.inputContainer}`]:{alignItems:"flex-start",gap:e(.5),[`.${scannerClasses.button}`]:{minWidth:0,padding:e(.5)}}}})),CAMERA_READY_TIMEOUT_MS=1500;var EntryMethod;!function(e){e.Camera="camera",e.Manual="manual"}(EntryMethod||(EntryMethod={}));const convertToScanRef=(e,t,n)=>{const a=typeof e,r="number"===a||"string"===a?e.toString():e?.value?.toString();if(r)return t=t||e?.entryMethod||EntryMethod.Manual,{refValueType:"scan",value:r,scanType:n=n||e?.scanType,entryMethod:t}},Scanner=forwardRef(({autoActivate:e,className:t,element:n,enabled:a,manualEntry:r,name:o,raiseEvent:c,require:s,scanType:i,setProperty:l,setValue:u,size:m,tooltip:d,value:f},p)=>{const E=useContext(HostContext),[C,S]=useState(!0),[y,R]=useState(null),[v,g]=useState(""),[T,w]=useState(!1),[M,h]=useState(scannerConfiguration.rows.default),I=useRef(null),A=`${makeUniqueId(o)}-input`,F="barcode"!==i;useEffect(()=>{let e=scannerConfiguration.rows.default;"number"==typeof m&&(e=Math.max(scannerConfiguration.rows.minimum,m)),h(e)},[m]),useEffect(()=>(w(!0),()=>w(!1)),[]),useEffect(()=>{T&&a&&e&&(l("autoActivate",!1),P())},[T]),useEffect(()=>{y&&(S(!1),setTimeout(()=>{T&&S(!0)},1500))},[y]);const _=useFocusCallback(a,o,E);useEffect(()=>{let e=f;!isScanRef(e)&&e&&(e=convertToScanRef(e),u(e,!1));const t=e?.value||"";v!==t&&g(t)},[f]);const D=E.renderText(d),x=!a,b=x||!r,B=(e,t,n)=>{if(e){if(f?.value===e)return;const a=convertToScanRef(e,t,n);u(a),g(e)}},O=async e=>{const{BarcodeFormat:t}=await import("@zxing/browser");let n;return e===ScanType.QrCode?n=[t.AZTEC,t.DATA_MATRIX,t.MAXICODE,t.PDF_417,t.QR_CODE]:e===ScanType.BarCode&&(n=[t.CODABAR,t.CODE_39,t.CODE_93,t.CODE_128,t.EAN_8,t.EAN_13,t.ITF,t.RSS_14,t.RSS_EXPANDED,t.UPC_A,t.UPC_E,t.UPC_EAN_EXTENSION]),n},P=async()=>{if(y)return R(null),void c("cancel",void 0);const{BrowserCodeReader:e,BrowserMultiFormatReader:t}=await import("@zxing/browser");if(!T)return;const n=await(async e=>{const{DecodeHintType:t}=await import("@zxing/library"),n=await O(e),a=new Map;return a.set(t.POSSIBLE_FORMATS,n),a})(i),a=new t(n);R(a),await(async t=>{try{const n=await e.listVideoInputDevices();if(!n||0==n.length)throw new DOMException("No video input devices detected.");const a=await t.decodeOnceFromVideoDevice(void 0,I.current||void 0),r=(await O(ScanType.QrCode)).indexOf(a.getBarcodeFormat())<0?ScanType.BarCode:ScanType.QrCode;B(a.toString(),EntryMethod.Camera,r),R(null)}catch(e){e instanceof DOMException&&(l("error",e.message),R(null))}})(a)};return React.createElement(StyledFormElement,{className:t,element:n,inputId:A,name:o,ref:p},React.createElement(Stack,{className:scannerClasses.container},React.createElement("video",{hidden:!y,ref:I}),React.createElement(Stack,{className:scannerClasses.inputContainer,direction:"row"},React.createElement(Input,{disabled:b,fullWidth:!0,id:A,inputProps:{onKeyDown:e=>{if(F)e.stopPropagation();else{const t=e.currentTarget;R(null),B(t.value,EntryMethod.Manual)}},title:D},inputRef:_,multiline:F,onBlur:e=>{e.currentTarget.value.length>0&&(R(null),B(e.currentTarget.value,EntryMethod.Manual))},onChange:e=>{g(e.currentTarget.value)},required:s,rows:F?M:void 0,spellCheck:!1,value:v}),React.createElement(Button,{className:scannerClasses.button,color:"primary",disabled:x||!C,onClick:P,ref:_,title:D},y?React.createElement(CloseIcon,null):i===ScanType.BarCode?React.createElement(ScanBarcode,null):i===ScanType.QrCode?React.createElement(ScanQr,null):React.createElement(ScanMulti,null)))))});export default Scanner;
|
|
@@ -12,5 +12,5 @@ export declare const sectionClasses: {
|
|
|
12
12
|
/**
|
|
13
13
|
* The component for the "Section" Form Element.
|
|
14
14
|
*/
|
|
15
|
-
declare const Section:
|
|
15
|
+
declare const Section: React.ForwardRefExoticComponent<FormElementProps<undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
16
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{useContext,useEffect}from"react";import{defs}from"../FormHost.js";import HostContext from"../hostContext.js";import{getLabelId,isAccordionSection,isCollapsibleSection,isFieldsetSection,isTabSection,makeSafeClassName,makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";import{renderAccessibleDescription,renderDescription,renderError,useFocusCallback}from"./common.js";const PREFIX="WorkflowSection"
|
|
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{forwardRef,useContext,useEffect}from"react";import{defs}from"../FormHost.js";import HostContext from"../hostContext.js";import{getLabelId,isAccordionSection,isCollapsibleSection,isFieldsetSection,isTabSection,makeSafeClassName,makeUniqueId}from"../utils.js";import Markdown from"./Markdown.js";import{renderAccessibleDescription,renderDescription,renderError,useFocusCallback}from"./common.js";const PREFIX="WorkflowSection";export const sectionClasses={root:`${PREFIX}-root`,basicSection:`${PREFIX}-basicSection`,fieldSetSection:`${PREFIX}-fieldSetSection`,tabSection:`${PREFIX}-tabSetSection`,title:`${PREFIX}-title`,unstyledSection:`${PREFIX}-unstyledSection`,description:`${PREFIX}-description`};const 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("div")(({theme:{palette:e,spacing:t,typography:{pxToRem:o}}})=>({margin:`${t(4)} 0 ${t(4)} 0`,[`.${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",padding:`${t(3)} 0 ${t(2)} 0`,[`.${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=forwardRef(({accessibleDescription:e,className:t,collapsed:o,component:i,description:s,element:n,enabled:r,error:a,name:c,setProperty:l},d)=>{const m=useContext(HostContext);let p;null!=n&&n.format&&(p=n.format),p=null!=p?p:defs.DEFAULT_SECTION_FORMAT;const f=isAccordionSection(n),S=isFieldsetSection(n),b=isTabSection(n),u=f||b||isCollapsibleSection(n),g=`${makeUniqueId(c)}-input`,C=useFocusCallback(r,c,m);useEffect(()=>(m.refs[c]=i,()=>{m.refs[c]=void 0}),[]);const y=((e,t,o)=>React.createElement(FormLabel,{className:sectionClasses.title,error:u&&(m.hasInvalidChild(e)||!!a),id:getLabelId(t),component:o||"h6"},React.createElement(Markdown,{inline:!0,text:e.title})))(n,g,S?"legend":void 0),R=renderDescription(s,g,r,sectionClasses.description),E=renderAccessibleDescription(e,s,g,m),$=renderError(a),x=y?.props?.id,F=R?.props?.id,h=E?.props?.id,v={"aria-labelledby":x,"aria-details":F,"aria-describedby":h},I=[R,E,$,i.props.children],A=clsx(t,n.type,sectionClasses.root,{[sectionClasses.basicSection]:"basic-section"===p,[sectionClasses.fieldSetSection]:"fieldset-section"===p,[sectionClasses.tabSection]:"tab-section"===p,[sectionClasses.unstyledSection]:"unstyled-section"===p,[makeSafeClassName(c)]:!!c,[makeSafeClassName(n.styleName)]:!!n.styleName});if(b)return React.createElement(StyledTabPage,{"aria-labelledby":`simple-tab-${c}`,className:A,hidden:o,id:`simple-tabpanel-${c}`,ref:d,role:"tabpanel"},...I);if(u)return React.createElement(StyledAccordion,{className:A,expanded:!0!==o,onChange:(e,t)=>{f&&t?m.updateMutuallyExclusiveSections(c):l("collapsed",!t)},ref:d,...v},React.createElement(AccordionSummary,{expandIcon:React.createElement(ChevronDown,null),ref:C},y),...I);{const e=S?"fieldset":"section";return React.createElement(StyledSection,{className:A,component:e,...v,ref:d},y,React.createElement(Box,null,...I))}});export default Section;
|
|
@@ -8,5 +8,5 @@ export declare const signatureClasses: {
|
|
|
8
8
|
/**
|
|
9
9
|
* The component for the "Signature" Form Element.
|
|
10
10
|
*/
|
|
11
|
-
declare const Signature:
|
|
11
|
+
declare const Signature: React.ForwardRefExoticComponent<FormElementProps<defs.SignatureRef | undefined> & React.RefAttributes<HTMLDivElement>>;
|
|
12
12
|
export default Signature;
|