@researchdatabox/redbox-core 0.0.0-bootstrap.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/dist/Attachment.d.ts +17 -0
- package/dist/Attachment.d.ts.map +1 -0
- package/dist/Attachment.js +40 -0
- package/dist/CoreController.d.ts +202 -0
- package/dist/CoreController.d.ts.map +1 -0
- package/dist/CoreController.js +688 -0
- package/dist/CoreService.d.ts +95 -0
- package/dist/CoreService.d.ts.map +1 -0
- package/dist/CoreService.js +295 -0
- package/dist/Datastream.d.ts +11 -0
- package/dist/Datastream.d.ts.map +1 -0
- package/dist/Datastream.js +38 -0
- package/dist/DatastreamService.d.ts +19 -0
- package/dist/DatastreamService.d.ts.map +1 -0
- package/dist/DatastreamService.js +3 -0
- package/dist/DatastreamServiceResponse.d.ts +12 -0
- package/dist/DatastreamServiceResponse.d.ts.map +1 -0
- package/dist/DatastreamServiceResponse.js +37 -0
- package/dist/IntegrationAuditParams.d.ts.map +1 -0
- package/dist/Logger.d.ts +16 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +3 -0
- package/dist/QueueService.d.ts +9 -0
- package/dist/QueueService.d.ts.map +1 -0
- package/dist/QueueService.js +21 -0
- package/dist/RecordAuditParams.d.ts +6 -0
- package/dist/RecordAuditParams.d.ts.map +1 -0
- package/dist/RecordAuditParams.js +10 -0
- package/dist/RecordsService.d.ts +39 -0
- package/dist/RecordsService.d.ts.map +1 -0
- package/dist/RecordsService.js +3 -0
- package/dist/SearchService.d.ts +8 -0
- package/dist/SearchService.d.ts.map +1 -0
- package/dist/SearchService.js +3 -0
- package/dist/StorageService.d.ts +27 -0
- package/dist/StorageService.d.ts.map +1 -0
- package/dist/StorageService.js +3 -0
- package/dist/StorageServiceResponse.d.ts +16 -0
- package/dist/StorageServiceResponse.d.ts.map +1 -0
- package/dist/StorageServiceResponse.js +41 -0
- package/dist/bootstrap.d.ts +32 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +172 -0
- package/dist/config/action.config.d.ts +13 -0
- package/dist/config/action.config.d.ts.map +1 -0
- package/dist/config/action.config.js +9 -0
- package/dist/config/agendaQueue.config.d.ts +49 -0
- package/dist/config/agendaQueue.config.d.ts.map +1 -0
- package/dist/config/agendaQueue.config.js +71 -0
- package/dist/config/api.config.d.ts +9 -0
- package/dist/config/api.config.d.ts.map +1 -0
- package/dist/config/api.config.js +11 -0
- package/dist/config/appmode.config.d.ts +12 -0
- package/dist/config/appmode.config.d.ts.map +1 -0
- package/dist/config/appmode.config.js +12 -0
- package/dist/config/auth.config.d.ts +15 -0
- package/dist/config/auth.config.d.ts.map +1 -0
- package/dist/config/auth.config.js +81 -0
- package/dist/config/autoreload.config.d.ts +18 -0
- package/dist/config/autoreload.config.d.ts.map +1 -0
- package/dist/config/autoreload.config.js +21 -0
- package/dist/config/blueprints.config.d.ts +28 -0
- package/dist/config/blueprints.config.d.ts.map +1 -0
- package/dist/config/blueprints.config.js +15 -0
- package/dist/config/bootstrap.config.d.ts +15 -0
- package/dist/config/bootstrap.config.d.ts.map +1 -0
- package/dist/config/bootstrap.config.js +12 -0
- package/dist/config/branding.config.d.ts +19 -0
- package/dist/config/branding.config.d.ts.map +1 -0
- package/dist/config/branding.config.js +109 -0
- package/dist/config/brandingConfigurationDefaults.config.d.ts +134 -0
- package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -0
- package/dist/config/brandingConfigurationDefaults.config.js +283 -0
- package/dist/config/companion.config.d.ts +41 -0
- package/dist/config/companion.config.d.ts.map +1 -0
- package/dist/config/companion.config.js +61 -0
- package/dist/config/cors.config.d.ts +22 -0
- package/dist/config/cors.config.d.ts.map +1 -0
- package/dist/config/cors.config.js +11 -0
- package/dist/config/crontab.config.d.ts +22 -0
- package/dist/config/crontab.config.d.ts.map +1 -0
- package/dist/config/crontab.config.js +18 -0
- package/dist/config/csp.config.d.ts +53 -0
- package/dist/config/csp.config.d.ts.map +1 -0
- package/dist/config/csp.config.js +32 -0
- package/dist/config/custom.config.d.ts +16 -0
- package/dist/config/custom.config.d.ts.map +1 -0
- package/dist/config/custom.config.js +22 -0
- package/dist/config/custom_cache.config.d.ts +14 -0
- package/dist/config/custom_cache.config.d.ts.map +1 -0
- package/dist/config/custom_cache.config.js +13 -0
- package/dist/config/dashboardtype.config.d.ts +45 -0
- package/dist/config/dashboardtype.config.d.ts.map +1 -0
- package/dist/config/dashboardtype.config.js +98 -0
- package/dist/config/datacite.config.d.ts +51 -0
- package/dist/config/datacite.config.d.ts.map +1 -0
- package/dist/config/datacite.config.js +44 -0
- package/dist/config/datapubs.config.d.ts +72 -0
- package/dist/config/datapubs.config.d.ts.map +1 -0
- package/dist/config/datapubs.config.js +74 -0
- package/dist/config/datastores.config.d.ts +20 -0
- package/dist/config/datastores.config.d.ts.map +1 -0
- package/dist/config/datastores.config.js +21 -0
- package/dist/config/dompurify.config.d.ts +65 -0
- package/dist/config/dompurify.config.d.ts.map +1 -0
- package/dist/config/dompurify.config.js +181 -0
- package/dist/config/dynamicasset.config.d.ts +13 -0
- package/dist/config/dynamicasset.config.d.ts.map +1 -0
- package/dist/config/dynamicasset.config.js +18 -0
- package/dist/config/dynamicconfig.config.d.ts +12 -0
- package/dist/config/dynamicconfig.config.d.ts.map +1 -0
- package/dist/config/dynamicconfig.config.js +13 -0
- package/dist/config/emailnotification.config.d.ts +49 -0
- package/dist/config/emailnotification.config.d.ts.map +1 -0
- package/dist/config/emailnotification.config.js +37 -0
- package/dist/config/figshareAPI.config.d.ts +116 -0
- package/dist/config/figshareAPI.config.d.ts.map +1 -0
- package/dist/config/figshareAPI.config.js +857 -0
- package/dist/config/figshareAPIEnv.config.d.ts +11 -0
- package/dist/config/figshareAPIEnv.config.d.ts.map +1 -0
- package/dist/config/figshareAPIEnv.config.js +13 -0
- package/dist/config/figshareDev.config.d.ts.map +1 -0
- package/dist/config/figshareRedboxFORMapping.config.d.ts +15 -0
- package/dist/config/figshareRedboxFORMapping.config.d.ts.map +1 -0
- package/dist/config/figshareRedboxFORMapping.config.js +7458 -0
- package/dist/config/form.config.d.ts +20 -0
- package/dist/config/form.config.d.ts.map +1 -0
- package/dist/config/form.config.js +11 -0
- package/dist/config/globals.config.d.ts +20 -0
- package/dist/config/globals.config.d.ts.map +1 -0
- package/dist/config/globals.config.js +52 -0
- package/dist/config/http.config.d.ts +57 -0
- package/dist/config/http.config.d.ts.map +1 -0
- package/dist/config/http.config.js +462 -0
- package/dist/config/i18n.config.d.ts +38 -0
- package/dist/config/i18n.config.d.ts.map +1 -0
- package/dist/config/i18n.config.js +30 -0
- package/dist/config/index.d.ts +306 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +240 -0
- package/dist/config/jsonld.config.d.ts +19 -0
- package/dist/config/jsonld.config.d.ts.map +1 -0
- package/dist/config/jsonld.config.js +33 -0
- package/dist/config/log.config.d.ts +20 -0
- package/dist/config/log.config.d.ts.map +1 -0
- package/dist/config/log.config.js +157 -0
- package/dist/config/lognamespace.config.d.ts +13 -0
- package/dist/config/lognamespace.config.d.ts.map +1 -0
- package/dist/config/lognamespace.config.js +17 -0
- package/dist/config/mint.config.d.ts +23 -0
- package/dist/config/mint.config.d.ts.map +1 -0
- package/dist/config/mint.config.js +20 -0
- package/dist/config/models.config.d.ts +37 -0
- package/dist/config/models.config.d.ts.map +1 -0
- package/dist/config/models.config.js +23 -0
- package/dist/config/namedQuery.config.d.ts +26 -0
- package/dist/config/namedQuery.config.d.ts.map +1 -0
- package/dist/config/namedQuery.config.js +358 -0
- package/dist/config/ng2.config.d.ts +11 -0
- package/dist/config/ng2.config.d.ts.map +1 -0
- package/dist/config/ng2.config.js +12 -0
- package/dist/config/orcid.config.d.ts +12 -0
- package/dist/config/orcid.config.d.ts.map +1 -0
- package/dist/config/orcid.config.js +13 -0
- package/dist/config/orm.config.d.ts +12 -0
- package/dist/config/orm.config.d.ts.map +1 -0
- package/dist/config/orm.config.js +13 -0
- package/dist/config/peopleSearch.config.d.ts +14 -0
- package/dist/config/peopleSearch.config.d.ts.map +1 -0
- package/dist/config/peopleSearch.config.js +15 -0
- package/dist/config/policies.config.d.ts +18 -0
- package/dist/config/policies.config.d.ts.map +1 -0
- package/dist/config/policies.config.js +65 -0
- package/dist/config/queue.config.d.ts +12 -0
- package/dist/config/queue.config.d.ts.map +1 -0
- package/dist/config/queue.config.js +13 -0
- package/dist/config/raid.config.d.ts +66 -0
- package/dist/config/raid.config.d.ts.map +1 -0
- package/dist/config/raid.config.js +272 -0
- package/dist/config/record.config.d.ts +74 -0
- package/dist/config/record.config.d.ts.map +1 -0
- package/dist/config/record.config.js +104 -0
- package/dist/config/recordtype.config.d.ts +66 -0
- package/dist/config/recordtype.config.d.ts.map +1 -0
- package/dist/config/recordtype.config.js +660 -0
- package/dist/config/redboxSession.config.d.ts +29 -0
- package/dist/config/redboxSession.config.d.ts.map +1 -0
- package/dist/config/redboxSession.config.js +14 -0
- package/dist/config/redboxToCkan.config.d.ts +17 -0
- package/dist/config/redboxToCkan.config.d.ts.map +1 -0
- package/dist/config/redboxToCkan.config.js +18 -0
- package/dist/config/relatedObjectsFormDefinition.config.d.ts.map +1 -0
- package/dist/config/report.config.d.ts +46 -0
- package/dist/config/report.config.d.ts.map +1 -0
- package/dist/config/report.config.js +54 -0
- package/dist/config/reusableContributorFormDefinitions.config.d.ts +3 -0
- package/dist/config/reusableContributorFormDefinitions.config.d.ts.map +1 -0
- package/dist/config/reusableContributorFormDefinitions.config.js +408 -0
- package/dist/config/reusableFormDefinitions.config.d.ts +16 -0
- package/dist/config/reusableFormDefinitions.config.d.ts.map +1 -0
- package/dist/config/reusableFormDefinitions.config.js +41 -0
- package/dist/config/reusableRelatedObjectsFormDefinitions.config.d.ts +22 -0
- package/dist/config/reusableRelatedObjectsFormDefinitions.config.d.ts.map +1 -0
- package/dist/config/reusableRelatedObjectsFormDefinitions.config.js +291 -0
- package/dist/config/reusableViewFormDefinitions.config.d.ts +3 -0
- package/dist/config/reusableViewFormDefinitions.config.d.ts.map +1 -0
- package/dist/config/reusableViewFormDefinitions.config.js +140 -0
- package/dist/config/routes.config.d.ts +21 -0
- package/dist/config/routes.config.d.ts.map +1 -0
- package/dist/config/routes.config.js +389 -0
- package/dist/config/search.config.d.ts +9 -0
- package/dist/config/search.config.d.ts.map +1 -0
- package/dist/config/search.config.js +11 -0
- package/dist/config/security.config.d.ts +22 -0
- package/dist/config/security.config.d.ts.map +1 -0
- package/dist/config/security.config.js +14 -0
- package/dist/config/session.config.d.ts +37 -0
- package/dist/config/session.config.d.ts.map +1 -0
- package/dist/config/session.config.js +11 -0
- package/dist/config/sockets.config.d.ts +17 -0
- package/dist/config/sockets.config.d.ts.map +1 -0
- package/dist/config/sockets.config.js +12 -0
- package/dist/config/solr.config.d.ts +73 -0
- package/dist/config/solr.config.d.ts.map +1 -0
- package/dist/config/solr.config.js +79 -0
- package/dist/config/static_assets.config.d.ts +10 -0
- package/dist/config/static_assets.config.d.ts.map +1 -0
- package/dist/config/static_assets.config.js +12 -0
- package/dist/config/storage.config.d.ts +42 -0
- package/dist/config/storage.config.d.ts.map +1 -0
- package/dist/config/storage.config.js +30 -0
- package/dist/config/typescript.config.d.ts +12 -0
- package/dist/config/typescript.config.d.ts.map +1 -0
- package/dist/config/typescript.config.js +13 -0
- package/dist/config/validators.config.d.ts +13 -0
- package/dist/config/validators.config.d.ts.map +1 -0
- package/dist/config/validators.config.js +15 -0
- package/dist/config/views.config.d.ts +20 -0
- package/dist/config/views.config.d.ts.map +1 -0
- package/dist/config/views.config.js +20 -0
- package/dist/config/vocab.config.d.ts +58 -0
- package/dist/config/vocab.config.d.ts.map +1 -0
- package/dist/config/vocab.config.js +58 -0
- package/dist/config/webpack.config.d.ts +16 -0
- package/dist/config/webpack.config.d.ts.map +1 -0
- package/dist/config/webpack.config.js +153 -0
- package/dist/config/workflow.config.d.ts +76 -0
- package/dist/config/workflow.config.d.ts.map +1 -0
- package/dist/config/workflow.config.js +339 -0
- package/dist/config/workspacetype.config.d.ts +23 -0
- package/dist/config/workspacetype.config.d.ts.map +1 -0
- package/dist/config/workspacetype.config.js +19 -0
- package/dist/configmodels/AdminSidebarConfig.d.ts +352 -0
- package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -0
- package/dist/configmodels/AdminSidebarConfig.js +163 -0
- package/dist/configmodels/AppConfig.interface.d.ts +4 -0
- package/dist/configmodels/AppConfig.interface.d.ts.map +1 -0
- package/dist/configmodels/AppConfig.interface.js +10 -0
- package/dist/configmodels/AuthorizedDomainsEmails.d.ts +43 -0
- package/dist/configmodels/AuthorizedDomainsEmails.d.ts.map +1 -0
- package/dist/configmodels/AuthorizedDomainsEmails.js +49 -0
- package/dist/configmodels/ConfigModels.d.ts +22 -0
- package/dist/configmodels/ConfigModels.d.ts.map +1 -0
- package/dist/configmodels/ConfigModels.js +98 -0
- package/dist/configmodels/DoiPublishing.d.ts.map +1 -0
- package/dist/configmodels/FigsharePublishing.d.ts.map +1 -0
- package/dist/configmodels/HomePanelConfig.d.ts +244 -0
- package/dist/configmodels/HomePanelConfig.d.ts.map +1 -0
- package/dist/configmodels/HomePanelConfig.js +132 -0
- package/dist/configmodels/MenuConfig.d.ts +203 -0
- package/dist/configmodels/MenuConfig.d.ts.map +1 -0
- package/dist/configmodels/MenuConfig.js +158 -0
- package/dist/configmodels/SystemMessage.d.ts +24 -0
- package/dist/configmodels/SystemMessage.d.ts.map +1 -0
- package/dist/configmodels/SystemMessage.js +30 -0
- package/dist/controllers/ActionController.d.ts +21 -0
- package/dist/controllers/ActionController.d.ts.map +1 -0
- package/dist/controllers/ActionController.js +41 -0
- package/dist/controllers/AdminController.d.ts +45 -0
- package/dist/controllers/AdminController.d.ts.map +1 -0
- package/dist/controllers/AdminController.js +498 -0
- package/dist/controllers/AppConfigController.d.ts +25 -0
- package/dist/controllers/AppConfigController.d.ts.map +1 -0
- package/dist/controllers/AppConfigController.js +90 -0
- package/dist/controllers/AsynchController.d.ts +30 -0
- package/dist/controllers/AsynchController.d.ts.map +1 -0
- package/dist/controllers/AsynchController.js +146 -0
- package/dist/controllers/BrandingAppController.d.ts +21 -0
- package/dist/controllers/BrandingAppController.d.ts.map +1 -0
- package/dist/controllers/BrandingAppController.js +144 -0
- package/dist/controllers/BrandingController.d.ts +64 -0
- package/dist/controllers/BrandingController.d.ts.map +1 -0
- package/dist/controllers/BrandingController.js +256 -0
- package/dist/controllers/DynamicAssetController.d.ts +67 -0
- package/dist/controllers/DynamicAssetController.d.ts.map +1 -0
- package/dist/controllers/DynamicAssetController.js +225 -0
- package/dist/controllers/EmailController.d.ts +35 -0
- package/dist/controllers/EmailController.d.ts.map +1 -0
- package/dist/controllers/EmailController.js +138 -0
- package/dist/controllers/ExportController.d.ts +22 -0
- package/dist/controllers/ExportController.d.ts.map +1 -0
- package/dist/controllers/ExportController.js +73 -0
- package/dist/controllers/FormVocabularyController.d.ts +12 -0
- package/dist/controllers/FormVocabularyController.d.ts.map +1 -0
- package/dist/controllers/FormVocabularyController.js +218 -0
- package/dist/controllers/RecordAuditController.d.ts +25 -0
- package/dist/controllers/RecordAuditController.d.ts.map +1 -0
- package/dist/controllers/RecordAuditController.js +74 -0
- package/dist/controllers/RecordController.d.ts +114 -0
- package/dist/controllers/RecordController.d.ts.map +1 -0
- package/dist/controllers/RecordController.js +1614 -0
- package/dist/controllers/RenderViewController.d.ts +14 -0
- package/dist/controllers/RenderViewController.d.ts.map +1 -0
- package/dist/controllers/RenderViewController.js +30 -0
- package/dist/controllers/ReportController.d.ts +25 -0
- package/dist/controllers/ReportController.d.ts.map +1 -0
- package/dist/controllers/ReportController.js +80 -0
- package/dist/controllers/ReportsController.d.ts +22 -0
- package/dist/controllers/ReportsController.d.ts.map +1 -0
- package/dist/controllers/ReportsController.js +37 -0
- package/dist/controllers/TranslationController.d.ts +27 -0
- package/dist/controllers/TranslationController.d.ts.map +1 -0
- package/dist/controllers/TranslationController.js +245 -0
- package/dist/controllers/UserController.d.ts +50 -0
- package/dist/controllers/UserController.d.ts.map +1 -0
- package/dist/controllers/UserController.js +518 -0
- package/dist/controllers/VocabController.d.ts +43 -0
- package/dist/controllers/VocabController.d.ts.map +1 -0
- package/dist/controllers/VocabController.js +190 -0
- package/dist/controllers/VocabularyController.d.ts +23 -0
- package/dist/controllers/VocabularyController.d.ts.map +1 -0
- package/dist/controllers/VocabularyController.js +344 -0
- package/dist/controllers/WorkspaceAsyncController.d.ts +18 -0
- package/dist/controllers/WorkspaceAsyncController.d.ts.map +1 -0
- package/dist/controllers/WorkspaceAsyncController.js +63 -0
- package/dist/controllers/WorkspaceTypesController.d.ts +19 -0
- package/dist/controllers/WorkspaceTypesController.d.ts.map +1 -0
- package/dist/controllers/WorkspaceTypesController.js +96 -0
- package/dist/controllers/index.d.ts +8 -0
- package/dist/controllers/index.d.ts.map +1 -0
- package/dist/controllers/index.js +159 -0
- package/dist/controllers/webservice/AdminController.d.ts +20 -0
- package/dist/controllers/webservice/AdminController.d.ts.map +1 -0
- package/dist/controllers/webservice/AdminController.js +83 -0
- package/dist/controllers/webservice/AppConfigController.d.ts +25 -0
- package/dist/controllers/webservice/AppConfigController.d.ts.map +1 -0
- package/dist/controllers/webservice/AppConfigController.js +72 -0
- package/dist/controllers/webservice/BrandingController.d.ts +13 -0
- package/dist/controllers/webservice/BrandingController.d.ts.map +1 -0
- package/dist/controllers/webservice/BrandingController.js +147 -0
- package/dist/controllers/webservice/ExportController.d.ts +22 -0
- package/dist/controllers/webservice/ExportController.d.ts.map +1 -0
- package/dist/controllers/webservice/ExportController.js +67 -0
- package/dist/controllers/webservice/FormManagementController.d.ts +24 -0
- package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -0
- package/dist/controllers/webservice/FormManagementController.js +79 -0
- package/dist/controllers/webservice/IntegrationAuditController.d.ts.map +1 -0
- package/dist/controllers/webservice/RecordController.d.ts +65 -0
- package/dist/controllers/webservice/RecordController.d.ts.map +1 -0
- package/dist/controllers/webservice/RecordController.js +1348 -0
- package/dist/controllers/webservice/RecordTypeController.d.ts +24 -0
- package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -0
- package/dist/controllers/webservice/RecordTypeController.js +70 -0
- package/dist/controllers/webservice/ReportController.d.ts +22 -0
- package/dist/controllers/webservice/ReportController.d.ts.map +1 -0
- package/dist/controllers/webservice/ReportController.js +74 -0
- package/dist/controllers/webservice/SearchController.d.ts +28 -0
- package/dist/controllers/webservice/SearchController.d.ts.map +1 -0
- package/dist/controllers/webservice/SearchController.js +123 -0
- package/dist/controllers/webservice/TranslationController.d.ts +18 -0
- package/dist/controllers/webservice/TranslationController.d.ts.map +1 -0
- package/dist/controllers/webservice/TranslationController.js +226 -0
- package/dist/controllers/webservice/UserManagementController.d.ts +38 -0
- package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -0
- package/dist/controllers/webservice/UserManagementController.js +608 -0
- package/dist/controllers/webservice/VocabularyController.d.ts +18 -0
- package/dist/controllers/webservice/VocabularyController.d.ts.map +1 -0
- package/dist/controllers/webservice/VocabularyController.js +172 -0
- package/dist/decorator/PopulateExportedMethods.decorator.d.ts +4 -0
- package/dist/decorator/PopulateExportedMethods.decorator.d.ts.map +1 -0
- package/dist/decorator/PopulateExportedMethods.decorator.js +22 -0
- package/dist/decorator/index.d.ts +2 -0
- package/dist/decorator/index.d.ts.map +1 -0
- package/dist/decorator/index.js +6 -0
- package/dist/decorators/Associations.d.ts +4 -0
- package/dist/decorators/Associations.d.ts.map +1 -0
- package/dist/decorators/Associations.js +12 -0
- package/dist/decorators/Attr.d.ts +4 -0
- package/dist/decorators/Attr.d.ts.map +1 -0
- package/dist/decorators/Attr.js +34 -0
- package/dist/decorators/Entity.d.ts +3 -0
- package/dist/decorators/Entity.d.ts.map +1 -0
- package/dist/decorators/Entity.js +29 -0
- package/dist/decorators/Lifecycle.d.ts +10 -0
- package/dist/decorators/Lifecycle.d.ts.map +1 -0
- package/dist/decorators/Lifecycle.js +26 -0
- package/dist/decorators/index.d.ts +8 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +35 -0
- package/dist/decorators/registry.d.ts +8 -0
- package/dist/decorators/registry.d.ts.map +1 -0
- package/dist/decorators/registry.js +68 -0
- package/dist/decorators/types.d.ts +81 -0
- package/dist/decorators/types.d.ts.map +1 -0
- package/dist/decorators/types.js +4 -0
- package/dist/decorators/utils.d.ts +5 -0
- package/dist/decorators/utils.d.ts.map +1 -0
- package/dist/decorators/utils.js +68 -0
- package/dist/form-config/dataPublication-1.0-draft.d.ts.map +1 -0
- package/dist/form-config/dataPublication-1.0-embargoed.d.ts.map +1 -0
- package/dist/form-config/dataPublication-1.0-published.d.ts.map +1 -0
- package/dist/form-config/dataPublication-1.0-queued.d.ts.map +1 -0
- package/dist/form-config/dataPublication-1.0-retired.d.ts.map +1 -0
- package/dist/form-config/dataRecord-1.0-draft.d.ts +4 -0
- package/dist/form-config/dataRecord-1.0-draft.d.ts.map +1 -0
- package/dist/form-config/dataRecord-1.0-draft.js +1042 -0
- package/dist/form-config/default-1.0-draft.d.ts +4 -0
- package/dist/form-config/default-1.0-draft.d.ts.map +1 -0
- package/dist/form-config/default-1.0-draft.js +1132 -0
- package/dist/form-config/generated-view-only.d.ts +12 -0
- package/dist/form-config/generated-view-only.d.ts.map +1 -0
- package/dist/form-config/generated-view-only.js +169 -0
- package/dist/form-config/index.d.ts +3 -0
- package/dist/form-config/index.d.ts.map +1 -0
- package/dist/form-config/index.js +15 -0
- package/dist/hooks/defineRedboxHook.d.ts +31 -0
- package/dist/hooks/defineRedboxHook.d.ts.map +1 -0
- package/dist/hooks/defineRedboxHook.js +47 -0
- package/dist/hooks/index.d.ts +9 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/webpack.d.ts +27 -0
- package/dist/hooks/webpack.d.ts.map +1 -0
- package/dist/hooks/webpack.js +82 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +116 -0
- package/dist/loader/bootstrapShimRuntime.d.ts +8 -0
- package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -0
- package/dist/loader/bootstrapShimRuntime.js +83 -0
- package/dist/loader/index.d.ts +93 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +767 -0
- package/dist/middleware/redboxSession.d.ts +6 -0
- package/dist/middleware/redboxSession.d.ts.map +1 -0
- package/dist/middleware/redboxSession.js +60 -0
- package/dist/model/APIActionResponse.d.ts +6 -0
- package/dist/model/APIActionResponse.d.ts.map +1 -0
- package/dist/model/APIActionResponse.js +13 -0
- package/dist/model/APIErrorResponse.d.ts +6 -0
- package/dist/model/APIErrorResponse.d.ts.map +1 -0
- package/dist/model/APIErrorResponse.js +13 -0
- package/dist/model/APIHarvestResponse.d.ts +9 -0
- package/dist/model/APIHarvestResponse.d.ts.map +1 -0
- package/dist/model/APIHarvestResponse.js +19 -0
- package/dist/model/APIObjectActionResponse.d.ts +7 -0
- package/dist/model/APIObjectActionResponse.d.ts.map +1 -0
- package/dist/model/APIObjectActionResponse.js +15 -0
- package/dist/model/BuildResponse.d.ts +47 -0
- package/dist/model/BuildResponse.d.ts.map +1 -0
- package/dist/model/BuildResponse.js +5 -0
- package/dist/model/DashboardTypeResponseModel.d.ts +6 -0
- package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -0
- package/dist/model/DashboardTypeResponseModel.js +13 -0
- package/dist/model/ListAPIResponse.d.ts +7 -0
- package/dist/model/ListAPIResponse.d.ts.map +1 -0
- package/dist/model/ListAPIResponse.js +12 -0
- package/dist/model/ListAPISummary.d.ts +7 -0
- package/dist/model/ListAPISummary.d.ts.map +1 -0
- package/dist/model/ListAPISummary.js +12 -0
- package/dist/model/RBValidationError.d.ts +62 -0
- package/dist/model/RBValidationError.d.ts.map +1 -0
- package/dist/model/RBValidationError.js +98 -0
- package/dist/model/RecordTypeResponseModel.d.ts +10 -0
- package/dist/model/RecordTypeResponseModel.d.ts.map +1 -0
- package/dist/model/RecordTypeResponseModel.js +19 -0
- package/dist/model/RequestDetails.d.ts +27 -0
- package/dist/model/RequestDetails.d.ts.map +1 -0
- package/dist/model/RequestDetails.js +53 -0
- package/dist/model/SolrDocument.d.ts +17 -0
- package/dist/model/SolrDocument.d.ts.map +1 -0
- package/dist/model/SolrDocument.js +30 -0
- package/dist/model/api/APIResponseVersion2.d.ts +107 -0
- package/dist/model/api/APIResponseVersion2.d.ts.map +1 -0
- package/dist/model/api/APIResponseVersion2.js +3 -0
- package/dist/model/api/APIVersions.d.ts +9 -0
- package/dist/model/api/APIVersions.d.ts.map +1 -0
- package/dist/model/api/APIVersions.js +11 -0
- package/dist/model/api/CreateUserAPIResponse.d.ts +9 -0
- package/dist/model/api/CreateUserAPIResponse.d.ts.map +1 -0
- package/dist/model/api/CreateUserAPIResponse.js +13 -0
- package/dist/model/api/FigshareArticleCreate.d.ts +11 -0
- package/dist/model/api/FigshareArticleCreate.d.ts.map +1 -0
- package/dist/model/api/FigshareArticleCreate.js +16 -0
- package/dist/model/api/FigshareArticleEmbargo.d.ts +11 -0
- package/dist/model/api/FigshareArticleEmbargo.d.ts.map +1 -0
- package/dist/model/api/FigshareArticleEmbargo.js +23 -0
- package/dist/model/api/FigshareArticleUpdate.d.ts +13 -0
- package/dist/model/api/FigshareArticleUpdate.d.ts.map +1 -0
- package/dist/model/api/FigshareArticleUpdate.js +20 -0
- package/dist/model/api/UserAPITokenAPIResponse.d.ts +6 -0
- package/dist/model/api/UserAPITokenAPIResponse.d.ts.map +1 -0
- package/dist/model/api/UserAPITokenAPIResponse.js +10 -0
- package/dist/model/api/index.d.ts +8 -0
- package/dist/model/api/index.d.ts.map +1 -0
- package/dist/model/api/index.js +16 -0
- package/dist/model/config/ReportConfig.d.ts +50 -0
- package/dist/model/config/ReportConfig.d.ts.map +1 -0
- package/dist/model/config/ReportConfig.js +58 -0
- package/dist/model/config/SolrConfig.d.ts +72 -0
- package/dist/model/config/SolrConfig.d.ts.map +1 -0
- package/dist/model/config/SolrConfig.js +41 -0
- package/dist/model/config/VocabQueryConfig.d.ts +30 -0
- package/dist/model/config/VocabQueryConfig.d.ts.map +1 -0
- package/dist/model/config/VocabQueryConfig.js +32 -0
- package/dist/model/config/index.d.ts +4 -0
- package/dist/model/config/index.d.ts.map +1 -0
- package/dist/model/config/index.js +20 -0
- package/dist/model/index.d.ts +16 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +45 -0
- package/dist/model/storage/AppConfigModel.d.ts +9 -0
- package/dist/model/storage/AppConfigModel.d.ts.map +1 -0
- package/dist/model/storage/AppConfigModel.js +3 -0
- package/dist/model/storage/AsynchProgressModel.d.ts +18 -0
- package/dist/model/storage/AsynchProgressModel.d.ts.map +1 -0
- package/dist/model/storage/AsynchProgressModel.js +3 -0
- package/dist/model/storage/BrandingModel.d.ts +24 -0
- package/dist/model/storage/BrandingModel.d.ts.map +1 -0
- package/dist/model/storage/BrandingModel.js +60 -0
- package/dist/model/storage/CacheEntryModel.d.ts +6 -0
- package/dist/model/storage/CacheEntryModel.d.ts.map +1 -0
- package/dist/model/storage/CacheEntryModel.js +3 -0
- package/dist/model/storage/CounterModel.d.ts +7 -0
- package/dist/model/storage/CounterModel.d.ts.map +1 -0
- package/dist/model/storage/CounterModel.js +3 -0
- package/dist/model/storage/DashboardTypeModel.d.ts +9 -0
- package/dist/model/storage/DashboardTypeModel.d.ts.map +1 -0
- package/dist/model/storage/DashboardTypeModel.js +3 -0
- package/dist/model/storage/DeletedRecordModel.d.ts +7 -0
- package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -0
- package/dist/model/storage/DeletedRecordModel.js +3 -0
- package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -0
- package/dist/model/storage/NamedQueryModel.d.ts +13 -0
- package/dist/model/storage/NamedQueryModel.d.ts.map +1 -0
- package/dist/model/storage/NamedQueryModel.js +17 -0
- package/dist/model/storage/RecordAuditModel.d.ts +15 -0
- package/dist/model/storage/RecordAuditModel.d.ts.map +1 -0
- package/dist/model/storage/RecordAuditModel.js +28 -0
- package/dist/model/storage/RecordModel.d.ts +42 -0
- package/dist/model/storage/RecordModel.d.ts.map +1 -0
- package/dist/model/storage/RecordModel.js +3 -0
- package/dist/model/storage/RecordTypeModel.d.ts +36 -0
- package/dist/model/storage/RecordTypeModel.d.ts.map +1 -0
- package/dist/model/storage/RecordTypeModel.js +43 -0
- package/dist/model/storage/ReportModel.d.ts +5 -0
- package/dist/model/storage/ReportModel.d.ts.map +1 -0
- package/dist/model/storage/ReportModel.js +3 -0
- package/dist/model/storage/RoleModel.d.ts +9 -0
- package/dist/model/storage/RoleModel.d.ts.map +1 -0
- package/dist/model/storage/RoleModel.js +12 -0
- package/dist/model/storage/UserAuditModel.d.ts +9 -0
- package/dist/model/storage/UserAuditModel.d.ts.map +1 -0
- package/dist/model/storage/UserAuditModel.js +3 -0
- package/dist/model/storage/UserLinkModel.d.ts +14 -0
- package/dist/model/storage/UserLinkModel.d.ts.map +1 -0
- package/dist/model/storage/UserLinkModel.js +18 -0
- package/dist/model/storage/UserModel.d.ts +25 -0
- package/dist/model/storage/UserModel.d.ts.map +1 -0
- package/dist/model/storage/UserModel.js +26 -0
- package/dist/model/storage/WorkflowStepModel.d.ts +11 -0
- package/dist/model/storage/WorkflowStepModel.d.ts.map +1 -0
- package/dist/model/storage/WorkflowStepModel.js +3 -0
- package/dist/model/storage/WorkspaceAppModel.d.ts +8 -0
- package/dist/model/storage/WorkspaceAppModel.d.ts.map +1 -0
- package/dist/model/storage/WorkspaceAppModel.js +3 -0
- package/dist/model/storage/index.d.ts +18 -0
- package/dist/model/storage/index.d.ts.map +1 -0
- package/dist/model/storage/index.js +19 -0
- package/dist/policies/brandingAndPortal.d.ts +9 -0
- package/dist/policies/brandingAndPortal.d.ts.map +1 -0
- package/dist/policies/brandingAndPortal.js +34 -0
- package/dist/policies/checkAuth.d.ts +9 -0
- package/dist/policies/checkAuth.d.ts.map +1 -0
- package/dist/policies/checkAuth.js +64 -0
- package/dist/policies/checkBrandingValid.d.ts +9 -0
- package/dist/policies/checkBrandingValid.d.ts.map +1 -0
- package/dist/policies/checkBrandingValid.js +40 -0
- package/dist/policies/companionAttachmentUploadAuth.d.ts +9 -0
- package/dist/policies/companionAttachmentUploadAuth.d.ts.map +1 -0
- package/dist/policies/companionAttachmentUploadAuth.js +221 -0
- package/dist/policies/contentSecurityPolicy.d.ts +23 -0
- package/dist/policies/contentSecurityPolicy.d.ts.map +1 -0
- package/dist/policies/contentSecurityPolicy.js +135 -0
- package/dist/policies/disallowedHeadRequestHandler.d.ts +8 -0
- package/dist/policies/disallowedHeadRequestHandler.d.ts.map +1 -0
- package/dist/policies/disallowedHeadRequestHandler.js +17 -0
- package/dist/policies/i18nLanguages.d.ts +8 -0
- package/dist/policies/i18nLanguages.d.ts.map +1 -0
- package/dist/policies/i18nLanguages.js +56 -0
- package/dist/policies/index.d.ts +52 -0
- package/dist/policies/index.d.ts.map +1 -0
- package/dist/policies/index.js +70 -0
- package/dist/policies/isAuthenticated.d.ts +9 -0
- package/dist/policies/isAuthenticated.d.ts.map +1 -0
- package/dist/policies/isAuthenticated.js +19 -0
- package/dist/policies/isWebServiceAuthenticated.d.ts +9 -0
- package/dist/policies/isWebServiceAuthenticated.d.ts.map +1 -0
- package/dist/policies/isWebServiceAuthenticated.js +25 -0
- package/dist/policies/menuResolver.d.ts +11 -0
- package/dist/policies/menuResolver.d.ts.map +1 -0
- package/dist/policies/menuResolver.js +58 -0
- package/dist/policies/noCache.d.ts +9 -0
- package/dist/policies/noCache.d.ts.map +1 -0
- package/dist/policies/noCache.js +34 -0
- package/dist/policies/prepWs.d.ts +9 -0
- package/dist/policies/prepWs.d.ts.map +1 -0
- package/dist/policies/prepWs.js +23 -0
- package/dist/policies/sessionAuth.d.ts +11 -0
- package/dist/policies/sessionAuth.d.ts.map +1 -0
- package/dist/policies/sessionAuth.js +23 -0
- package/dist/policies/setLang.d.ts +8 -0
- package/dist/policies/setLang.d.ts.map +1 -0
- package/dist/policies/setLang.js +13 -0
- package/dist/responses/badRequest.d.ts +22 -0
- package/dist/responses/badRequest.d.ts.map +1 -0
- package/dist/responses/badRequest.js +66 -0
- package/dist/responses/created.d.ts +22 -0
- package/dist/responses/created.d.ts.map +1 -0
- package/dist/responses/created.js +55 -0
- package/dist/responses/forbidden.d.ts +22 -0
- package/dist/responses/forbidden.d.ts.map +1 -0
- package/dist/responses/forbidden.js +66 -0
- package/dist/responses/index.d.ts +6 -0
- package/dist/responses/index.d.ts.map +1 -0
- package/dist/responses/index.js +22 -0
- package/dist/responses/ok.d.ts +26 -0
- package/dist/responses/ok.d.ts.map +1 -0
- package/dist/responses/ok.js +59 -0
- package/dist/responses/serverError.d.ts +22 -0
- package/dist/responses/serverError.d.ts.map +1 -0
- package/dist/responses/serverError.js +66 -0
- package/dist/sails.d.ts +238 -0
- package/dist/sails.d.ts.map +1 -0
- package/dist/sails.js +3 -0
- package/dist/services/AgendaQueueService.d.ts +58 -0
- package/dist/services/AgendaQueueService.d.ts.map +1 -0
- package/dist/services/AgendaQueueService.js +225 -0
- package/dist/services/AppConfigService.d.ts +59 -0
- package/dist/services/AppConfigService.d.ts.map +1 -0
- package/dist/services/AppConfigService.js +273 -0
- package/dist/services/AsynchsService.d.ts +20 -0
- package/dist/services/AsynchsService.d.ts.map +1 -0
- package/dist/services/AsynchsService.js +64 -0
- package/dist/services/BrandingLogoService.d.ts +47 -0
- package/dist/services/BrandingLogoService.d.ts.map +1 -0
- package/dist/services/BrandingLogoService.js +212 -0
- package/dist/services/BrandingService.d.ts +70 -0
- package/dist/services/BrandingService.d.ts.map +1 -0
- package/dist/services/BrandingService.js +332 -0
- package/dist/services/CacheService.d.ts +25 -0
- package/dist/services/CacheService.d.ts.map +1 -0
- package/dist/services/CacheService.js +153 -0
- package/dist/services/ConfigService.d.ts +23 -0
- package/dist/services/ConfigService.d.ts.map +1 -0
- package/dist/services/ConfigService.js +379 -0
- package/dist/services/ContrastService.d.ts +77 -0
- package/dist/services/ContrastService.d.ts.map +1 -0
- package/dist/services/ContrastService.js +218 -0
- package/dist/services/DashboardTypesService.d.ts +98 -0
- package/dist/services/DashboardTypesService.d.ts.map +1 -0
- package/dist/services/DashboardTypesService.js +291 -0
- package/dist/services/DoiService.d.ts +36 -0
- package/dist/services/DoiService.d.ts.map +1 -0
- package/dist/services/DoiService.js +494 -0
- package/dist/services/DomSanitizerService.d.ts +105 -0
- package/dist/services/DomSanitizerService.d.ts.map +1 -0
- package/dist/services/DomSanitizerService.js +506 -0
- package/dist/services/EmailService.d.ts +185 -0
- package/dist/services/EmailService.d.ts.map +1 -0
- package/dist/services/EmailService.js +527 -0
- package/dist/services/FigshareService.d.ts +75 -0
- package/dist/services/FigshareService.d.ts.map +1 -0
- package/dist/services/FigshareService.js +2193 -0
- package/dist/services/FormRecordConsistencyService.d.ts +156 -0
- package/dist/services/FormRecordConsistencyService.d.ts.map +1 -0
- package/dist/services/FormRecordConsistencyService.js +516 -0
- package/dist/services/FormsService.d.ts +65 -0
- package/dist/services/FormsService.d.ts.map +1 -0
- package/dist/services/FormsService.js +580 -0
- package/dist/services/I18nEntriesService.d.ts +80 -0
- package/dist/services/I18nEntriesService.d.ts.map +1 -0
- package/dist/services/I18nEntriesService.js +469 -0
- package/dist/services/IntegrationAuditService.d.ts.map +1 -0
- package/dist/services/NamedQueryService.d.ts +87 -0
- package/dist/services/NamedQueryService.d.ts.map +1 -0
- package/dist/services/NamedQueryService.js +396 -0
- package/dist/services/NavigationService.d.ts +115 -0
- package/dist/services/NavigationService.d.ts.map +1 -0
- package/dist/services/NavigationService.js +553 -0
- package/dist/services/OniService.d.ts +77 -0
- package/dist/services/OniService.d.ts.map +1 -0
- package/dist/services/OniService.js +753 -0
- package/dist/services/OrcidService.d.ts +30 -0
- package/dist/services/OrcidService.d.ts.map +1 -0
- package/dist/services/OrcidService.js +126 -0
- package/dist/services/PathRulesService.d.ts +57 -0
- package/dist/services/PathRulesService.d.ts.map +1 -0
- package/dist/services/PathRulesService.js +129 -0
- package/dist/services/RDMPService.d.ts +102 -0
- package/dist/services/RDMPService.d.ts.map +1 -0
- package/dist/services/RDMPService.js +767 -0
- package/dist/services/RaidService.d.ts +83 -0
- package/dist/services/RaidService.d.ts.map +1 -0
- package/dist/services/RaidService.js +556 -0
- package/dist/services/RecordTypesService.d.ts +27 -0
- package/dist/services/RecordTypesService.d.ts.map +1 -0
- package/dist/services/RecordTypesService.js +106 -0
- package/dist/services/RecordsService.d.ts +129 -0
- package/dist/services/RecordsService.d.ts.map +1 -0
- package/dist/services/RecordsService.js +1477 -0
- package/dist/services/ReportsService.d.ts +99 -0
- package/dist/services/ReportsService.d.ts.map +1 -0
- package/dist/services/ReportsService.js +475 -0
- package/dist/services/RolesService.d.ts +41 -0
- package/dist/services/RolesService.d.ts.map +1 -0
- package/dist/services/RolesService.js +171 -0
- package/dist/services/RvaImportService.d.ts +56 -0
- package/dist/services/RvaImportService.d.ts.map +1 -0
- package/dist/services/RvaImportService.js +410 -0
- package/dist/services/SassCompilerService.d.ts +26 -0
- package/dist/services/SassCompilerService.d.ts.map +1 -0
- package/dist/services/SassCompilerService.js +201 -0
- package/dist/services/SolrSearchService.d.ts +52 -0
- package/dist/services/SolrSearchService.d.ts.map +1 -0
- package/dist/services/SolrSearchService.js +463 -0
- package/dist/services/StandardDatastreamService.d.ts +66 -0
- package/dist/services/StandardDatastreamService.d.ts.map +1 -0
- package/dist/services/StandardDatastreamService.js +297 -0
- package/dist/services/StorageManagerService.d.ts +90 -0
- package/dist/services/StorageManagerService.d.ts.map +1 -0
- package/dist/services/StorageManagerService.js +234 -0
- package/dist/services/TemplateService.d.ts +65 -0
- package/dist/services/TemplateService.d.ts.map +1 -0
- package/dist/services/TemplateService.js +208 -0
- package/dist/services/TranslationService.d.ts +38 -0
- package/dist/services/TranslationService.d.ts.map +1 -0
- package/dist/services/TranslationService.js +358 -0
- package/dist/services/TriggerService.d.ts +72 -0
- package/dist/services/TriggerService.d.ts.map +1 -0
- package/dist/services/TriggerService.js +554 -0
- package/dist/services/UsersService.d.ts +174 -0
- package/dist/services/UsersService.d.ts.map +1 -0
- package/dist/services/UsersService.js +2108 -0
- package/dist/services/ViewUtilsService.d.ts +36 -0
- package/dist/services/ViewUtilsService.d.ts.map +1 -0
- package/dist/services/ViewUtilsService.js +120 -0
- package/dist/services/VocabService.d.ts +81 -0
- package/dist/services/VocabService.d.ts.map +1 -0
- package/dist/services/VocabService.js +424 -0
- package/dist/services/VocabularyService.d.ts +115 -0
- package/dist/services/VocabularyService.d.ts.map +1 -0
- package/dist/services/VocabularyService.js +752 -0
- package/dist/services/WorkflowStepsService.d.ts +29 -0
- package/dist/services/WorkflowStepsService.d.ts.map +1 -0
- package/dist/services/WorkflowStepsService.js +110 -0
- package/dist/services/WorkspaceAsyncService.d.ts +34 -0
- package/dist/services/WorkspaceAsyncService.d.ts.map +1 -0
- package/dist/services/WorkspaceAsyncService.js +68 -0
- package/dist/services/WorkspaceService.d.ts +67 -0
- package/dist/services/WorkspaceService.d.ts.map +1 -0
- package/dist/services/WorkspaceService.js +148 -0
- package/dist/services/WorkspaceTypesService.d.ts +33 -0
- package/dist/services/WorkspaceTypesService.d.ts.map +1 -0
- package/dist/services/WorkspaceTypesService.js +89 -0
- package/dist/services/doi-v2/audit.d.ts.map +1 -0
- package/dist/services/doi-v2/bindings.d.ts.map +1 -0
- package/dist/services/doi-v2/config.d.ts.map +1 -0
- package/dist/services/doi-v2/context.d.ts.map +1 -0
- package/dist/services/doi-v2/http.d.ts.map +1 -0
- package/dist/services/doi-v2/payload.d.ts.map +1 -0
- package/dist/services/doi-v2/profiles.d.ts.map +1 -0
- package/dist/services/doi-v2/runtime.d.ts.map +1 -0
- package/dist/services/doi-v2/types.d.ts.map +1 -0
- package/dist/services/figshare-v2/assets.d.ts.map +1 -0
- package/dist/services/figshare-v2/bindings.d.ts.map +1 -0
- package/dist/services/figshare-v2/config.d.ts.map +1 -0
- package/dist/services/figshare-v2/context.d.ts.map +1 -0
- package/dist/services/figshare-v2/embargo.d.ts.map +1 -0
- package/dist/services/figshare-v2/http.d.ts.map +1 -0
- package/dist/services/figshare-v2/metadata.d.ts.map +1 -0
- package/dist/services/figshare-v2/observability.d.ts.map +1 -0
- package/dist/services/figshare-v2/plan.d.ts.map +1 -0
- package/dist/services/figshare-v2/publish.d.ts.map +1 -0
- package/dist/services/figshare-v2/queue.d.ts.map +1 -0
- package/dist/services/figshare-v2/runtime.d.ts.map +1 -0
- package/dist/services/figshare-v2/types.d.ts.map +1 -0
- package/dist/services/figshare-v2/workflow.d.ts.map +1 -0
- package/dist/services/figshare-v2/writeback.d.ts.map +1 -0
- package/dist/services/index.d.ts +136 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +276 -0
- package/dist/shims/index.d.ts +9 -0
- package/dist/shims/index.d.ts.map +1 -0
- package/dist/shims/index.js +15 -0
- package/dist/shims/momentShim.d.ts +7 -0
- package/dist/shims/momentShim.d.ts.map +1 -0
- package/dist/shims/momentShim.js +69 -0
- package/dist/transformers/ExportJSONTransformer.d.ts +16 -0
- package/dist/transformers/ExportJSONTransformer.d.ts.map +1 -0
- package/dist/transformers/ExportJSONTransformer.js +90 -0
- package/dist/utilities/ContextVariableUtils.d.ts +8 -0
- package/dist/utilities/ContextVariableUtils.d.ts.map +1 -0
- package/dist/utilities/ContextVariableUtils.js +91 -0
- package/dist/utilities/TransactionUtils.d.ts +7 -0
- package/dist/utilities/TransactionUtils.d.ts.map +1 -0
- package/dist/utilities/TransactionUtils.js +25 -0
- package/dist/visitor/attachment-fields.visitor.d.ts +37 -0
- package/dist/visitor/attachment-fields.visitor.d.ts.map +1 -0
- package/dist/visitor/attachment-fields.visitor.js +93 -0
- package/dist/visitor/client.visitor.d.ts +211 -0
- package/dist/visitor/client.visitor.d.ts.map +1 -0
- package/dist/visitor/client.visitor.js +865 -0
- package/dist/visitor/construct.visitor.d.ts +219 -0
- package/dist/visitor/construct.visitor.d.ts.map +1 -0
- package/dist/visitor/construct.visitor.js +1499 -0
- package/dist/visitor/context-variables.visitor.d.ts +51 -0
- package/dist/visitor/context-variables.visitor.d.ts.map +1 -0
- package/dist/visitor/context-variables.visitor.js +192 -0
- package/dist/visitor/data-value.visitor.d.ts +159 -0
- package/dist/visitor/data-value.visitor.d.ts.map +1 -0
- package/dist/visitor/data-value.visitor.js +310 -0
- package/dist/visitor/json-type-def.visitor.d.ts +155 -0
- package/dist/visitor/json-type-def.visitor.d.ts.map +1 -0
- package/dist/visitor/json-type-def.visitor.js +384 -0
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +244 -0
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -0
- package/dist/visitor/migrate-config-v4-v5.visitor.js +2941 -0
- package/dist/visitor/template.visitor.d.ts +163 -0
- package/dist/visitor/template.visitor.d.ts.map +1 -0
- package/dist/visitor/template.visitor.js +397 -0
- package/dist/visitor/validator.visitor.d.ts +123 -0
- package/dist/visitor/validator.visitor.d.ts.map +1 -0
- package/dist/visitor/validator.visitor.js +480 -0
- package/dist/visitor/visitor-helpers.d.ts +15 -0
- package/dist/visitor/visitor-helpers.d.ts.map +1 -0
- package/dist/visitor/visitor-helpers.js +191 -0
- package/dist/visitor/vocab-inline.visitor.d.ts +33 -0
- package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -0
- package/dist/visitor/vocab-inline.visitor.js +173 -0
- package/dist/waterline-models/AppConfig.d.ts +19 -0
- package/dist/waterline-models/AppConfig.d.ts.map +1 -0
- package/dist/waterline-models/AppConfig.js +38 -0
- package/dist/waterline-models/AsynchProgress.d.ts +37 -0
- package/dist/waterline-models/AsynchProgress.d.ts.map +1 -0
- package/dist/waterline-models/AsynchProgress.js +83 -0
- package/dist/waterline-models/BrandingConfig.d.ts +28 -0
- package/dist/waterline-models/BrandingConfig.d.ts.map +1 -0
- package/dist/waterline-models/BrandingConfig.js +132 -0
- package/dist/waterline-models/BrandingConfigHistory.d.ts +25 -0
- package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -0
- package/dist/waterline-models/BrandingConfigHistory.js +66 -0
- package/dist/waterline-models/CacheEntry.d.ts +18 -0
- package/dist/waterline-models/CacheEntry.d.ts.map +1 -0
- package/dist/waterline-models/CacheEntry.js +38 -0
- package/dist/waterline-models/Counter.d.ts +19 -0
- package/dist/waterline-models/Counter.d.ts.map +1 -0
- package/dist/waterline-models/Counter.js +38 -0
- package/dist/waterline-models/DashboardType.d.ts +23 -0
- package/dist/waterline-models/DashboardType.d.ts.map +1 -0
- package/dist/waterline-models/DashboardType.js +53 -0
- package/dist/waterline-models/Form.d.ts +21 -0
- package/dist/waterline-models/Form.d.ts.map +1 -0
- package/dist/waterline-models/Form.js +38 -0
- package/dist/waterline-models/I18nBundle.d.ts +29 -0
- package/dist/waterline-models/I18nBundle.d.ts.map +1 -0
- package/dist/waterline-models/I18nBundle.js +85 -0
- package/dist/waterline-models/I18nTranslation.d.ts +32 -0
- package/dist/waterline-models/I18nTranslation.d.ts.map +1 -0
- package/dist/waterline-models/I18nTranslation.js +110 -0
- package/dist/waterline-models/NamedQuery.d.ts +29 -0
- package/dist/waterline-models/NamedQuery.d.ts.map +1 -0
- package/dist/waterline-models/NamedQuery.js +68 -0
- package/dist/waterline-models/PathRule.d.ts +26 -0
- package/dist/waterline-models/PathRule.d.ts.map +1 -0
- package/dist/waterline-models/PathRule.js +53 -0
- package/dist/waterline-models/RBReport.d.ts +38 -0
- package/dist/waterline-models/RBReport.d.ts.map +1 -0
- package/dist/waterline-models/RBReport.js +73 -0
- package/dist/waterline-models/RecordType.d.ts +37 -0
- package/dist/waterline-models/RecordType.d.ts.map +1 -0
- package/dist/waterline-models/RecordType.js +88 -0
- package/dist/waterline-models/Role.d.ts +19 -0
- package/dist/waterline-models/Role.d.ts.map +1 -0
- package/dist/waterline-models/Role.js +38 -0
- package/dist/waterline-models/ThemeConfig.d.ts +16 -0
- package/dist/waterline-models/ThemeConfig.d.ts.map +1 -0
- package/dist/waterline-models/ThemeConfig.js +33 -0
- package/dist/waterline-models/User.d.ts +50 -0
- package/dist/waterline-models/User.d.ts.map +1 -0
- package/dist/waterline-models/User.js +151 -0
- package/dist/waterline-models/UserAudit.d.ts +18 -0
- package/dist/waterline-models/UserAudit.d.ts.map +1 -0
- package/dist/waterline-models/UserAudit.js +38 -0
- package/dist/waterline-models/UserLink.d.ts +30 -0
- package/dist/waterline-models/UserLink.d.ts.map +1 -0
- package/dist/waterline-models/UserLink.js +62 -0
- package/dist/waterline-models/Vocabulary.d.ts +38 -0
- package/dist/waterline-models/Vocabulary.d.ts.map +1 -0
- package/dist/waterline-models/Vocabulary.js +183 -0
- package/dist/waterline-models/VocabularyEntry.d.ts +33 -0
- package/dist/waterline-models/VocabularyEntry.d.ts.map +1 -0
- package/dist/waterline-models/VocabularyEntry.js +210 -0
- package/dist/waterline-models/WorkflowStep.d.ts +25 -0
- package/dist/waterline-models/WorkflowStep.d.ts.map +1 -0
- package/dist/waterline-models/WorkflowStep.js +53 -0
- package/dist/waterline-models/WorkspaceApp.d.ts +19 -0
- package/dist/waterline-models/WorkspaceApp.d.ts.map +1 -0
- package/dist/waterline-models/WorkspaceApp.js +50 -0
- package/dist/waterline-models/WorkspaceAsync.d.ts +32 -0
- package/dist/waterline-models/WorkspaceAsync.d.ts.map +1 -0
- package/dist/waterline-models/WorkspaceAsync.js +73 -0
- package/dist/waterline-models/WorkspaceType.d.ts +25 -0
- package/dist/waterline-models/WorkspaceType.d.ts.map +1 -0
- package/dist/waterline-models/WorkspaceType.js +53 -0
- package/dist/waterline-models/index.d.ts +53 -0
- package/dist/waterline-models/index.d.ts.map +1 -0
- package/dist/waterline-models/index.js +99 -0
- package/dist/waterline-models/types.d.ts +8 -0
- package/dist/waterline-models/types.d.ts.map +1 -0
- package/dist/waterline-models/types.js +3 -0
- package/package.json +150 -0
- package/redbox-loader-templates/bootstrap-shim.js.hbs +17 -0
- package/redbox-loader-templates/form-config-index.js.hbs +11 -0
|
@@ -0,0 +1,1499 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConstructFormConfigVisitor = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
|
|
6
|
+
const sails_ng_common_2 = require("@researchdatabox/sails-ng-common");
|
|
7
|
+
const sails_ng_common_3 = require("@researchdatabox/sails-ng-common");
|
|
8
|
+
const sails_ng_common_4 = require("@researchdatabox/sails-ng-common");
|
|
9
|
+
const sails_ng_common_5 = require("@researchdatabox/sails-ng-common");
|
|
10
|
+
const sails_ng_common_6 = require("@researchdatabox/sails-ng-common");
|
|
11
|
+
const sails_ng_common_7 = require("@researchdatabox/sails-ng-common");
|
|
12
|
+
const sails_ng_common_8 = require("@researchdatabox/sails-ng-common");
|
|
13
|
+
const sails_ng_common_9 = require("@researchdatabox/sails-ng-common");
|
|
14
|
+
const sails_ng_common_10 = require("@researchdatabox/sails-ng-common");
|
|
15
|
+
const sails_ng_common_11 = require("@researchdatabox/sails-ng-common");
|
|
16
|
+
const sails_ng_common_12 = require("@researchdatabox/sails-ng-common");
|
|
17
|
+
const sails_ng_common_13 = require("@researchdatabox/sails-ng-common");
|
|
18
|
+
const sails_ng_common_14 = require("@researchdatabox/sails-ng-common");
|
|
19
|
+
const sails_ng_common_15 = require("@researchdatabox/sails-ng-common");
|
|
20
|
+
const sails_ng_common_16 = require("@researchdatabox/sails-ng-common");
|
|
21
|
+
const sails_ng_common_17 = require("@researchdatabox/sails-ng-common");
|
|
22
|
+
const sails_ng_common_18 = require("@researchdatabox/sails-ng-common");
|
|
23
|
+
const sails_ng_common_19 = require("@researchdatabox/sails-ng-common");
|
|
24
|
+
const sails_ng_common_20 = require("@researchdatabox/sails-ng-common");
|
|
25
|
+
const sails_ng_common_21 = require("@researchdatabox/sails-ng-common");
|
|
26
|
+
const sails_ng_common_22 = require("@researchdatabox/sails-ng-common");
|
|
27
|
+
const sails_ng_common_23 = require("@researchdatabox/sails-ng-common");
|
|
28
|
+
const sails_ng_common_24 = require("@researchdatabox/sails-ng-common");
|
|
29
|
+
const sails_ng_common_25 = require("@researchdatabox/sails-ng-common");
|
|
30
|
+
const sails_ng_common_26 = require("@researchdatabox/sails-ng-common");
|
|
31
|
+
const sails_ng_common_27 = require("@researchdatabox/sails-ng-common");
|
|
32
|
+
const sails_ng_common_28 = require("@researchdatabox/sails-ng-common");
|
|
33
|
+
const sails_ng_common_29 = require("@researchdatabox/sails-ng-common");
|
|
34
|
+
const sails_ng_common_30 = require("@researchdatabox/sails-ng-common");
|
|
35
|
+
const sails_ng_common_31 = require("@researchdatabox/sails-ng-common");
|
|
36
|
+
const sails_ng_common_32 = require("@researchdatabox/sails-ng-common");
|
|
37
|
+
const sails_ng_common_33 = require("@researchdatabox/sails-ng-common");
|
|
38
|
+
const sails_ng_common_34 = require("@researchdatabox/sails-ng-common");
|
|
39
|
+
const sails_ng_common_35 = require("@researchdatabox/sails-ng-common");
|
|
40
|
+
const sails_ng_common_36 = require("@researchdatabox/sails-ng-common");
|
|
41
|
+
const sails_ng_common_37 = require("@researchdatabox/sails-ng-common");
|
|
42
|
+
const sails_ng_common_38 = require("@researchdatabox/sails-ng-common");
|
|
43
|
+
const sails_ng_common_39 = require("@researchdatabox/sails-ng-common");
|
|
44
|
+
const sails_ng_common_40 = require("@researchdatabox/sails-ng-common");
|
|
45
|
+
const sails_ng_common_41 = require("@researchdatabox/sails-ng-common");
|
|
46
|
+
const sails_ng_common_42 = require("@researchdatabox/sails-ng-common");
|
|
47
|
+
const sails_ng_common_43 = require("@researchdatabox/sails-ng-common");
|
|
48
|
+
const sails_ng_common_44 = require("@researchdatabox/sails-ng-common");
|
|
49
|
+
const sails_ng_common_45 = require("@researchdatabox/sails-ng-common");
|
|
50
|
+
const sails_ng_common_46 = require("@researchdatabox/sails-ng-common");
|
|
51
|
+
const sails_ng_common_47 = require("@researchdatabox/sails-ng-common");
|
|
52
|
+
const sails_ng_common_48 = require("@researchdatabox/sails-ng-common");
|
|
53
|
+
const sails_ng_common_49 = require("@researchdatabox/sails-ng-common");
|
|
54
|
+
const sails_ng_common_50 = require("@researchdatabox/sails-ng-common");
|
|
55
|
+
const sails_ng_common_51 = require("@researchdatabox/sails-ng-common");
|
|
56
|
+
const sails_ng_common_52 = require("@researchdatabox/sails-ng-common");
|
|
57
|
+
const sails_ng_common_53 = require("@researchdatabox/sails-ng-common");
|
|
58
|
+
const sails_ng_common_54 = require("@researchdatabox/sails-ng-common");
|
|
59
|
+
const sails_ng_common_55 = require("@researchdatabox/sails-ng-common");
|
|
60
|
+
const sails_ng_common_56 = require("@researchdatabox/sails-ng-common");
|
|
61
|
+
const sails_ng_common_57 = require("@researchdatabox/sails-ng-common");
|
|
62
|
+
const sails_ng_common_58 = require("@researchdatabox/sails-ng-common");
|
|
63
|
+
const sails_ng_common_59 = require("@researchdatabox/sails-ng-common");
|
|
64
|
+
const sails_ng_common_60 = require("@researchdatabox/sails-ng-common");
|
|
65
|
+
const sails_ng_common_61 = require("@researchdatabox/sails-ng-common");
|
|
66
|
+
const sails_ng_common_62 = require("@researchdatabox/sails-ng-common");
|
|
67
|
+
const sails_ng_common_63 = require("@researchdatabox/sails-ng-common");
|
|
68
|
+
const sails_ng_common_64 = require("@researchdatabox/sails-ng-common");
|
|
69
|
+
const sails_ng_common_65 = require("@researchdatabox/sails-ng-common");
|
|
70
|
+
const sails_ng_common_66 = require("@researchdatabox/sails-ng-common");
|
|
71
|
+
const sails_ng_common_67 = require("@researchdatabox/sails-ng-common");
|
|
72
|
+
const sails_ng_common_68 = require("@researchdatabox/sails-ng-common");
|
|
73
|
+
const sails_ng_common_69 = require("@researchdatabox/sails-ng-common");
|
|
74
|
+
const sails_ng_common_70 = require("@researchdatabox/sails-ng-common");
|
|
75
|
+
const sails_ng_common_71 = require("@researchdatabox/sails-ng-common");
|
|
76
|
+
const sails_ng_common_72 = require("@researchdatabox/sails-ng-common");
|
|
77
|
+
/**
|
|
78
|
+
* Visit each form config frame and create an instance of the associated class.
|
|
79
|
+
*
|
|
80
|
+
* This visitor performs the tasks needed to create form component class instances:
|
|
81
|
+
* - populate the instance properties from the form config data
|
|
82
|
+
* - assign the created classes to the expected property to build the component hierarchy
|
|
83
|
+
* - populate the model.config.value and/or the properties specific to a component from either a record or the form defaults
|
|
84
|
+
* - when using form defaults, provide default values from ancestors to descendants, so the descendants can either use their default or an ancestors default
|
|
85
|
+
* - expand reusable form config to the actual form config
|
|
86
|
+
* - transform component definitions to be a different component(s)
|
|
87
|
+
*/
|
|
88
|
+
class ConstructFormConfigVisitor extends sails_ng_common_2.FormConfigVisitor {
|
|
89
|
+
logName = 'ConstructFormConfigVisitor';
|
|
90
|
+
formMode;
|
|
91
|
+
recordValues;
|
|
92
|
+
extractedDefaultValues;
|
|
93
|
+
mostRecentRepeatableElementTemplatePath;
|
|
94
|
+
data;
|
|
95
|
+
reusableFormDefs;
|
|
96
|
+
formConfig;
|
|
97
|
+
formOverride;
|
|
98
|
+
formPathHelper;
|
|
99
|
+
sharedProps;
|
|
100
|
+
validatorsSupport;
|
|
101
|
+
constructor(logger) {
|
|
102
|
+
super(logger);
|
|
103
|
+
this.formMode = 'view';
|
|
104
|
+
this.recordValues = null;
|
|
105
|
+
this.extractedDefaultValues = {};
|
|
106
|
+
this.mostRecentRepeatableElementTemplatePath = null;
|
|
107
|
+
this.data = { name: '', componentDefinitions: [] };
|
|
108
|
+
this.reusableFormDefs = {};
|
|
109
|
+
this.formConfig = new sails_ng_common_1.FormConfig();
|
|
110
|
+
this.formOverride = new sails_ng_common_71.FormOverride(logger);
|
|
111
|
+
this.formPathHelper = new sails_ng_common_72.FormPathHelper(logger, this);
|
|
112
|
+
this.sharedProps = new sails_ng_common_72.PropertiesHelper();
|
|
113
|
+
this.validatorsSupport = new sails_ng_common_1.ValidatorsSupport();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Start the visitor.
|
|
117
|
+
* @param options Configure the visitor.
|
|
118
|
+
* @param options.data The form config to construct into class instances.
|
|
119
|
+
* @param options.reusableFormDefs The reusable form definitions. Default empty.
|
|
120
|
+
* @param options.formMode The currently active form mode. Defaults to 'view'.
|
|
121
|
+
* @param options.record The record metadata values. Set to undefined or null to use the form default values.
|
|
122
|
+
*/
|
|
123
|
+
start(options) {
|
|
124
|
+
this.data = (0, lodash_1.cloneDeep)(options.data);
|
|
125
|
+
this.reusableFormDefs = options.reusableFormDefs ?? {};
|
|
126
|
+
this.formMode = options.formMode ?? 'view';
|
|
127
|
+
// When options.record is null or undefined, use the form defaults. Otherwise, use recordValues only.
|
|
128
|
+
// This allows for specifying an empty record '{}' and using that instead of the defaults.
|
|
129
|
+
this.recordValues = options.record === null || options.record === undefined ? null : options.record;
|
|
130
|
+
// Collect the form config defaults.
|
|
131
|
+
// The defaults always need to be extract so they are available to any repeatable components.
|
|
132
|
+
this.extractedDefaultValues = {};
|
|
133
|
+
this.mostRecentRepeatableElementTemplatePath = null;
|
|
134
|
+
this.formPathHelper.reset();
|
|
135
|
+
this.formConfig = new sails_ng_common_1.FormConfig();
|
|
136
|
+
this.formConfig.accept(this);
|
|
137
|
+
return this.formConfig;
|
|
138
|
+
}
|
|
139
|
+
/* Form Config */
|
|
140
|
+
visitFormConfig(item) {
|
|
141
|
+
const currentData = this.getData();
|
|
142
|
+
if (!(0, sails_ng_common_70.isTypeFormConfig)(currentData)) {
|
|
143
|
+
throw new Error(`Invalid FormConfigFrame at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
144
|
+
}
|
|
145
|
+
// Set the simple properties, using the class instance property values as the defaults.
|
|
146
|
+
this.sharedProps.setPropOverride('name', item, currentData);
|
|
147
|
+
this.sharedProps.setPropOverride('type', item, currentData);
|
|
148
|
+
this.sharedProps.setPropOverride('domElementType', item, currentData);
|
|
149
|
+
this.sharedProps.setPropOverride('domId', item, currentData);
|
|
150
|
+
this.sharedProps.setPropOverride('viewCssClasses', item, currentData);
|
|
151
|
+
this.sharedProps.setPropOverride('editCssClasses', item, currentData);
|
|
152
|
+
this.sharedProps.setPropOverride('defaultComponentConfig', item, currentData);
|
|
153
|
+
this.sharedProps.setPropOverride('enabledValidationGroups', item, currentData);
|
|
154
|
+
this.sharedProps.setPropOverride('validators', item, currentData);
|
|
155
|
+
this.sharedProps.setPropOverride('validationGroups', item, currentData);
|
|
156
|
+
this.sharedProps.setPropOverride('defaultLayoutComponent', item, currentData);
|
|
157
|
+
this.sharedProps.setPropOverride('debugValue', item, currentData);
|
|
158
|
+
this.sharedProps.setPropOverride('expressions', item, currentData);
|
|
159
|
+
// Behaviours are a form-level concern. Unlike component expressions they do
|
|
160
|
+
// not belong to a specific field subtree, so they are copied here at the top
|
|
161
|
+
// of the construct phase and later handled by the template/client visitors.
|
|
162
|
+
// v1 keeps the data as plain config instead of constructing dedicated model
|
|
163
|
+
// classes because the runtime consumes the config directly.
|
|
164
|
+
this.sharedProps.setPropOverride('behaviours', item, currentData);
|
|
165
|
+
this.sharedProps.setPropOverride('attachmentFields', item, currentData);
|
|
166
|
+
// Ensure the default validation groups are present.
|
|
167
|
+
if (!item.validationGroups) {
|
|
168
|
+
item.validationGroups = {};
|
|
169
|
+
}
|
|
170
|
+
if (!Object.hasOwn(item.validationGroups, 'all')) {
|
|
171
|
+
item.validationGroups['all'] = {
|
|
172
|
+
description: 'Validate all fields with validators.',
|
|
173
|
+
initialMembership: 'all',
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
if (!Object.hasOwn(item.validationGroups, 'none')) {
|
|
177
|
+
item.validationGroups['none'] = {
|
|
178
|
+
description: 'Validate none of the fields.',
|
|
179
|
+
initialMembership: 'none',
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
this.validatorsSupport.checkValidationGroups(item.validationGroups, item.enabledValidationGroups ?? []);
|
|
183
|
+
currentData.componentDefinitions = this.formOverride.applyOverridesReusable(currentData?.componentDefinitions ?? [], this.reusableFormDefs);
|
|
184
|
+
// Visit the components
|
|
185
|
+
currentData.componentDefinitions.forEach((componentDefinition, index) => {
|
|
186
|
+
const formComponent = this.constructFormComponent(componentDefinition);
|
|
187
|
+
// Visit children
|
|
188
|
+
const testing = this.formPathHelper.lineagePathsForFormConfigComponentDefinition(formComponent, index);
|
|
189
|
+
this.formPathHelper.acceptFormPath(formComponent, testing);
|
|
190
|
+
// After the construction is done, apply any transforms
|
|
191
|
+
const itemTransformed = this.applyConstructPhaseTransform(formComponent);
|
|
192
|
+
// Store the instance on the item
|
|
193
|
+
item.componentDefinitions.push(itemTransformed);
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
/* SimpleInput */
|
|
197
|
+
visitSimpleInputFieldComponentDefinition(item) {
|
|
198
|
+
// Get the current raw data for constructing the class instance.
|
|
199
|
+
const currentData = this.getData();
|
|
200
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_7.SimpleInputComponentName)) {
|
|
201
|
+
throw new Error(`Invalid ${sails_ng_common_7.SimpleInputComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
202
|
+
}
|
|
203
|
+
const config = currentData?.config;
|
|
204
|
+
// Create the class instance for the config
|
|
205
|
+
item.config = new sails_ng_common_8.SimpleInputFieldComponentConfig();
|
|
206
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
207
|
+
this.sharedProps.setPropOverride('type', item.config, config);
|
|
208
|
+
this.sharedProps.setPropOverride('placeholder', item.config, config);
|
|
209
|
+
}
|
|
210
|
+
visitSimpleInputFieldModelDefinition(item) {
|
|
211
|
+
// Get the current raw data for constructing the class instance.
|
|
212
|
+
const currentData = this.getData();
|
|
213
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_7.SimpleInputModelName)) {
|
|
214
|
+
throw new Error(`Invalid ${sails_ng_common_7.SimpleInputModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
215
|
+
}
|
|
216
|
+
// Create the class instance for the config
|
|
217
|
+
item.config = new sails_ng_common_8.SimpleInputFieldModelConfig();
|
|
218
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
219
|
+
this.setModelValue(item, currentData?.config);
|
|
220
|
+
}
|
|
221
|
+
visitSimpleInputFormComponentDefinition(item) {
|
|
222
|
+
this.populateFormComponent(item);
|
|
223
|
+
}
|
|
224
|
+
/* Content */
|
|
225
|
+
visitContentFieldComponentDefinition(item) {
|
|
226
|
+
// Get the current raw data for constructing the class instance.
|
|
227
|
+
const currentData = this.getData();
|
|
228
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_16.ContentComponentName)) {
|
|
229
|
+
throw new Error(`Invalid ${sails_ng_common_16.ContentComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
230
|
+
}
|
|
231
|
+
const config = currentData?.config;
|
|
232
|
+
// Create the class instance for the config
|
|
233
|
+
item.config = new sails_ng_common_41.ContentFieldComponentConfig();
|
|
234
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
235
|
+
this.sharedProps.setPropOverride('template', item.config, config);
|
|
236
|
+
this.sharedProps.setPropOverride('content', item.config, config);
|
|
237
|
+
this.sharedProps.setPropOverride('contentIsTranslationCode', item.config, config);
|
|
238
|
+
}
|
|
239
|
+
visitContentFormComponentDefinition(item) {
|
|
240
|
+
// TODO: does the content component require the data model?
|
|
241
|
+
this.populateFormComponent(item);
|
|
242
|
+
}
|
|
243
|
+
/* Repeatable */
|
|
244
|
+
visitRepeatableFieldComponentDefinition(item) {
|
|
245
|
+
// Get the current raw data for constructing the class instance.
|
|
246
|
+
const currentData = this.getData();
|
|
247
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_4.RepeatableComponentName)) {
|
|
248
|
+
throw new Error(`Invalid ${sails_ng_common_4.RepeatableComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
249
|
+
}
|
|
250
|
+
const frame = currentData?.config;
|
|
251
|
+
// Create the class instance for the config
|
|
252
|
+
item.config = new sails_ng_common_5.RepeatableFieldComponentConfig();
|
|
253
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, frame);
|
|
254
|
+
this.sharedProps.setPropOverride('addButtonShow', item.config, frame);
|
|
255
|
+
this.sharedProps.setPropOverride('allowZeroRows', item.config, frame);
|
|
256
|
+
this.sharedProps.setPropOverride('hideWhenZeroRows', item.config, frame);
|
|
257
|
+
const currentFormConfigPath = this.formPathHelper.formPath.formConfig;
|
|
258
|
+
if (!(0, sails_ng_common_70.isTypeFormComponentDefinition)(frame?.elementTemplate)) {
|
|
259
|
+
throw new Error(`Invalid elementTemplate for repeatable at '${currentFormConfigPath}'.`);
|
|
260
|
+
}
|
|
261
|
+
const compDefs = this.formOverride.applyOverridesReusable([frame?.elementTemplate], this.reusableFormDefs);
|
|
262
|
+
const compDefLength = compDefs?.length ?? 0;
|
|
263
|
+
if (compDefLength !== 1) {
|
|
264
|
+
throw new Error(`Repeatable element template overrides must result in exactly one item, got ${compDefLength} at '${currentFormConfigPath}'.`);
|
|
265
|
+
}
|
|
266
|
+
frame.elementTemplate = compDefs[0];
|
|
267
|
+
// The element template name must be falsy.
|
|
268
|
+
// It is also allowed for a ReusableComponent to have a replaceName that is falsy.
|
|
269
|
+
const elementTemplateName = frame.elementTemplate?.name;
|
|
270
|
+
const elementTemplateClass = frame.elementTemplate?.component?.class;
|
|
271
|
+
const elementTemplateReplaceName = frame.elementTemplate?.overrides?.replaceName;
|
|
272
|
+
const nameIsFalsy = !elementTemplateName;
|
|
273
|
+
const nameWillBeTransformedToFalsy = elementTemplateReplaceName === null || elementTemplateReplaceName === '';
|
|
274
|
+
if (!nameIsFalsy && !nameWillBeTransformedToFalsy) {
|
|
275
|
+
this.logger.error(`Repeatable element template must have a 'falsy' name: elementTemplateName '${JSON.stringify(elementTemplateName)}' ` +
|
|
276
|
+
`elementTemplateClass ${JSON.stringify(elementTemplateClass)} elementTemplateReplaceName ${JSON.stringify(elementTemplateReplaceName)}`);
|
|
277
|
+
throw new Error(`Repeatable element template must have a 'falsy' name, got ${JSON.stringify(frame.elementTemplate?.name)} at ${JSON.stringify(currentFormConfigPath)}.`);
|
|
278
|
+
}
|
|
279
|
+
// Track the most recent element template.
|
|
280
|
+
// - Ensure newEntryValue is used only in elementTemplate definitions.
|
|
281
|
+
// - Ensure defaultValue is not defined in elementTemplate or any nested components.
|
|
282
|
+
const previousMostRecentRepeatableElementTemplatePath = this.mostRecentRepeatableElementTemplatePath === null ? null : [...this.mostRecentRepeatableElementTemplatePath];
|
|
283
|
+
this.mostRecentRepeatableElementTemplatePath = [...currentFormConfigPath, 'config', 'elementTemplate'];
|
|
284
|
+
const formComponent = this.constructFormComponent(frame.elementTemplate);
|
|
285
|
+
// Continue the construction
|
|
286
|
+
this.formPathHelper.acceptFormPath(formComponent, this.formPathHelper.lineagePathsForRepeatableFieldComponentDefinition(formComponent));
|
|
287
|
+
// Repeatable elements must use RepeatableElementLayout so item rows render remove controls.
|
|
288
|
+
if (formComponent.layout) {
|
|
289
|
+
formComponent.layout.class = sails_ng_common_4.RepeatableElementLayoutName;
|
|
290
|
+
}
|
|
291
|
+
// After the construction is done, apply any transforms
|
|
292
|
+
const itemTransformed = this.applyConstructPhaseTransform(formComponent);
|
|
293
|
+
// Store the instance on the item
|
|
294
|
+
item.config.elementTemplate = itemTransformed;
|
|
295
|
+
this.mostRecentRepeatableElementTemplatePath = previousMostRecentRepeatableElementTemplatePath;
|
|
296
|
+
}
|
|
297
|
+
visitRepeatableFieldModelDefinition(item) {
|
|
298
|
+
// Get the current raw data for constructing the class instance.
|
|
299
|
+
const currentData = this.getData();
|
|
300
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_4.RepeatableModelName)) {
|
|
301
|
+
throw new Error(`Invalid ${sails_ng_common_4.RepeatableModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
302
|
+
}
|
|
303
|
+
// Create the class instance for the config
|
|
304
|
+
item.config = new sails_ng_common_5.RepeatableFieldModelConfig();
|
|
305
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
306
|
+
this.setModelValue(item, currentData?.config);
|
|
307
|
+
}
|
|
308
|
+
visitRepeatableElementFieldLayoutDefinition(item) {
|
|
309
|
+
// Get the current raw data for constructing the class instance.
|
|
310
|
+
const currentData = this.getData();
|
|
311
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_4.RepeatableElementLayoutName)) {
|
|
312
|
+
throw new Error(`Invalid ${sails_ng_common_4.RepeatableElementLayoutName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
313
|
+
}
|
|
314
|
+
// Create the class instance for the config
|
|
315
|
+
item.config = new sails_ng_common_5.RepeatableElementFieldLayoutConfig();
|
|
316
|
+
this.sharedProps.sharedPopulateFieldLayoutConfig(item.config, currentData?.config);
|
|
317
|
+
}
|
|
318
|
+
visitRepeatableFormComponentDefinition(item) {
|
|
319
|
+
this.populateFormComponent(item);
|
|
320
|
+
}
|
|
321
|
+
/* Validation Summary */
|
|
322
|
+
visitValidationSummaryFieldComponentDefinition(item) {
|
|
323
|
+
// Get the current raw data for constructing the class instance.
|
|
324
|
+
const currentData = this.getData();
|
|
325
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_66.ValidationSummaryComponentName)) {
|
|
326
|
+
throw new Error(`Invalid ${sails_ng_common_66.ValidationSummaryComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
327
|
+
}
|
|
328
|
+
const config = currentData?.config;
|
|
329
|
+
// Create the class instance for the config
|
|
330
|
+
item.config = new sails_ng_common_67.ValidationSummaryFieldComponentConfig();
|
|
331
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
332
|
+
}
|
|
333
|
+
visitValidationSummaryFormComponentDefinition(item) {
|
|
334
|
+
this.populateFormComponent(item);
|
|
335
|
+
}
|
|
336
|
+
/* Save Status */
|
|
337
|
+
visitSaveStatusFieldComponentDefinition(item) {
|
|
338
|
+
const currentData = this.getData();
|
|
339
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_68.SaveStatusComponentName)) {
|
|
340
|
+
throw new Error(`Invalid ${sails_ng_common_68.SaveStatusComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
341
|
+
}
|
|
342
|
+
const config = currentData?.config;
|
|
343
|
+
item.config = new sails_ng_common_69.SaveStatusFieldComponentConfig();
|
|
344
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
345
|
+
}
|
|
346
|
+
visitSaveStatusFormComponentDefinition(item) {
|
|
347
|
+
this.populateFormComponent(item);
|
|
348
|
+
}
|
|
349
|
+
/* Group */
|
|
350
|
+
visitGroupFieldComponentDefinition(item) {
|
|
351
|
+
// Get the current raw data for constructing the class instance.
|
|
352
|
+
const currentData = this.getData();
|
|
353
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_3.GroupFieldComponentName)) {
|
|
354
|
+
throw new Error(`Invalid ${sails_ng_common_3.GroupFieldComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
355
|
+
}
|
|
356
|
+
const frame = currentData?.config ?? { componentDefinitions: [] };
|
|
357
|
+
// Create the class instance for the config
|
|
358
|
+
item.config = new sails_ng_common_6.GroupFieldComponentConfig();
|
|
359
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, frame);
|
|
360
|
+
frame.componentDefinitions = this.formOverride.applyOverridesReusable(frame?.componentDefinitions ?? [], this.reusableFormDefs);
|
|
361
|
+
// Visit the components
|
|
362
|
+
frame.componentDefinitions.forEach((componentDefinition, index) => {
|
|
363
|
+
const formComponent = this.constructFormComponent(componentDefinition);
|
|
364
|
+
// Continue the construction
|
|
365
|
+
this.formPathHelper.acceptFormPath(formComponent, this.formPathHelper.lineagePathsForGroupFieldComponentDefinition(formComponent, index));
|
|
366
|
+
// After the construction is done, apply any transforms
|
|
367
|
+
const itemTransformed = this.applyConstructPhaseTransform(formComponent);
|
|
368
|
+
// Store the instance on the item
|
|
369
|
+
item.config?.componentDefinitions.push(itemTransformed);
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
visitGroupFieldModelDefinition(item) {
|
|
373
|
+
// Get the current raw data for constructing the class instance.
|
|
374
|
+
const currentData = this.getData();
|
|
375
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_3.GroupFieldModelName)) {
|
|
376
|
+
throw new Error(`Invalid ${sails_ng_common_3.GroupFieldModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
377
|
+
}
|
|
378
|
+
// Create the class instance for the config
|
|
379
|
+
item.config = new sails_ng_common_6.GroupFieldModelConfig();
|
|
380
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
381
|
+
this.setModelValue(item, currentData?.config);
|
|
382
|
+
}
|
|
383
|
+
visitGroupFormComponentDefinition(item) {
|
|
384
|
+
this.populateFormComponent(item);
|
|
385
|
+
}
|
|
386
|
+
/* Tab */
|
|
387
|
+
visitTabFieldComponentDefinition(item) {
|
|
388
|
+
// Get the current raw data for constructing the class instance.
|
|
389
|
+
const currentData = this.getData();
|
|
390
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_17.TabComponentName)) {
|
|
391
|
+
throw new Error(`Invalid ${sails_ng_common_17.TabComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
392
|
+
}
|
|
393
|
+
const frame = currentData?.config ?? { tabs: [] };
|
|
394
|
+
// Create the class instance for the config
|
|
395
|
+
item.config = new sails_ng_common_18.TabFieldComponentConfig();
|
|
396
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, frame);
|
|
397
|
+
const compDefs = this.formOverride.applyOverridesReusable(frame?.tabs ?? [], this.reusableFormDefs);
|
|
398
|
+
const tabs = [];
|
|
399
|
+
for (const compDef of compDefs) {
|
|
400
|
+
if ((0, sails_ng_common_70.isTypeFormComponentDefinitionName)(compDef, sails_ng_common_21.TabContentComponentName)) {
|
|
401
|
+
tabs.push(compDef);
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
this.logger.warn(`Invalid ${sails_ng_common_21.TabContentComponentName} entry skipped at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(compDef)}`);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
frame.tabs = tabs;
|
|
408
|
+
// Visit the components
|
|
409
|
+
frame?.tabs.forEach((componentDefinition, index) => {
|
|
410
|
+
if ((0, sails_ng_common_70.isTypeFormComponentDefinitionName)(componentDefinition, sails_ng_common_21.TabContentComponentName)) {
|
|
411
|
+
const formComponent = this.constructFormComponent(componentDefinition);
|
|
412
|
+
// Continue the construction
|
|
413
|
+
this.formPathHelper.acceptFormPath(formComponent, this.formPathHelper.lineagePathsForTabFieldComponentDefinition(formComponent, index));
|
|
414
|
+
// After the construction is done, apply any transforms
|
|
415
|
+
// TODO: Use type assert for now.
|
|
416
|
+
// The Map<string,T> type in dictionary.model.ts should map specific string -> specific type.
|
|
417
|
+
// It currently maps string -> type union, which is too loose, as it doesn't imply that a particular string key maps to one type.
|
|
418
|
+
const itemTransformed = this.applyConstructPhaseTransform(formComponent);
|
|
419
|
+
// Store the instance on the item
|
|
420
|
+
item.config?.tabs.push(itemTransformed);
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
visitTabFieldLayoutDefinition(item) {
|
|
425
|
+
// Get the current raw data for constructing the class instance.
|
|
426
|
+
const currentData = this.getData();
|
|
427
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_17.TabLayoutName)) {
|
|
428
|
+
throw new Error(`Invalid ${sails_ng_common_17.TabLayoutName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
429
|
+
}
|
|
430
|
+
const config = currentData?.config;
|
|
431
|
+
// Create the class instance for the config
|
|
432
|
+
item.config = new sails_ng_common_18.TabFieldLayoutConfig();
|
|
433
|
+
this.sharedProps.sharedPopulateFieldLayoutConfig(item.config, config);
|
|
434
|
+
this.sharedProps.setPropOverride('buttonSectionCssClass', item.config, config);
|
|
435
|
+
this.sharedProps.setPropOverride('tabShellCssClass', item.config, config);
|
|
436
|
+
this.sharedProps.setPropOverride('tabNavWrapperCssClass', item.config, config);
|
|
437
|
+
this.sharedProps.setPropOverride('tabPanelWrapperCssClass', item.config, config);
|
|
438
|
+
this.sharedProps.setPropOverride('tabPaneCssClass', item.config, config);
|
|
439
|
+
this.sharedProps.setPropOverride('tabPaneActiveCssClass', item.config, config);
|
|
440
|
+
this.sharedProps.setPropOverride('buttonSectionAriaOrientation', item.config, config);
|
|
441
|
+
}
|
|
442
|
+
visitTabFormComponentDefinition(item) {
|
|
443
|
+
this.populateFormComponent(item);
|
|
444
|
+
}
|
|
445
|
+
/* Accordion */
|
|
446
|
+
visitAccordionFieldComponentDefinition(item) {
|
|
447
|
+
const currentData = this.getData();
|
|
448
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_19.AccordionComponentName)) {
|
|
449
|
+
throw new Error(`Invalid ${sails_ng_common_19.AccordionComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
450
|
+
}
|
|
451
|
+
const frame = currentData?.config ?? { panels: [] };
|
|
452
|
+
item.config = new sails_ng_common_20.AccordionFieldComponentConfig();
|
|
453
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, frame);
|
|
454
|
+
this.sharedProps.setPropOverride('startingOpenMode', item.config, frame);
|
|
455
|
+
const compDefs = this.formOverride.applyOverridesReusable(frame?.panels ?? [], this.reusableFormDefs);
|
|
456
|
+
const panels = [];
|
|
457
|
+
for (const compDef of compDefs) {
|
|
458
|
+
if ((0, sails_ng_common_70.isTypeFormComponentDefinitionName)(compDef, sails_ng_common_19.AccordionPanelComponentName)) {
|
|
459
|
+
panels.push(compDef);
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
this.logger.warn(`Invalid ${sails_ng_common_19.AccordionPanelComponentName} entry skipped at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(compDef)}`);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
frame.panels = panels;
|
|
466
|
+
frame.panels.forEach((componentDefinition, index) => {
|
|
467
|
+
if ((0, sails_ng_common_70.isTypeFormComponentDefinitionName)(componentDefinition, sails_ng_common_19.AccordionPanelComponentName)) {
|
|
468
|
+
const formComponent = this.constructFormComponent(componentDefinition);
|
|
469
|
+
this.formPathHelper.acceptFormPath(formComponent, this.formPathHelper.lineagePathsForAccordionFieldComponentDefinition(formComponent, index));
|
|
470
|
+
const itemTransformed = this.applyConstructPhaseTransform(formComponent);
|
|
471
|
+
item.config?.panels.push(itemTransformed);
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
visitAccordionFieldLayoutDefinition(item) {
|
|
476
|
+
const currentData = this.getData();
|
|
477
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_19.AccordionLayoutName)) {
|
|
478
|
+
throw new Error(`Invalid ${sails_ng_common_19.AccordionLayoutName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
479
|
+
}
|
|
480
|
+
const config = currentData?.config;
|
|
481
|
+
item.config = new sails_ng_common_20.AccordionFieldLayoutConfig();
|
|
482
|
+
this.sharedProps.sharedPopulateFieldLayoutConfig(item.config, config);
|
|
483
|
+
}
|
|
484
|
+
visitAccordionFormComponentDefinition(item) {
|
|
485
|
+
this.populateFormComponent(item);
|
|
486
|
+
}
|
|
487
|
+
visitAccordionPanelFieldComponentDefinition(item) {
|
|
488
|
+
const currentData = this.getData();
|
|
489
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_19.AccordionPanelComponentName)) {
|
|
490
|
+
throw new Error(`Invalid ${sails_ng_common_19.AccordionPanelComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
491
|
+
}
|
|
492
|
+
const config = currentData?.config ?? { componentDefinitions: [] };
|
|
493
|
+
item.config = new sails_ng_common_20.AccordionPanelFieldComponentConfig();
|
|
494
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
495
|
+
config.componentDefinitions = this.formOverride.applyOverridesReusable(config?.componentDefinitions ?? [], this.reusableFormDefs);
|
|
496
|
+
config.componentDefinitions.forEach((componentDefinition, index) => {
|
|
497
|
+
const formComponent = this.constructFormComponent(componentDefinition);
|
|
498
|
+
this.formPathHelper.acceptFormPath(formComponent, this.formPathHelper.lineagePathsForAccordionPanelFieldComponentDefinition(formComponent, index));
|
|
499
|
+
const itemTransformed = this.applyConstructPhaseTransform(formComponent);
|
|
500
|
+
item.config?.componentDefinitions.push(itemTransformed);
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
visitAccordionPanelFieldLayoutDefinition(item) {
|
|
504
|
+
const currentData = this.getData();
|
|
505
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_19.AccordionPanelLayoutName)) {
|
|
506
|
+
throw new Error(`Invalid ${sails_ng_common_19.AccordionPanelLayoutName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
507
|
+
}
|
|
508
|
+
const config = currentData?.config;
|
|
509
|
+
item.config = new sails_ng_common_20.AccordionPanelFieldLayoutConfig();
|
|
510
|
+
this.sharedProps.sharedPopulateFieldLayoutConfig(item.config, config);
|
|
511
|
+
this.sharedProps.setPropOverride('buttonLabel', item.config, config);
|
|
512
|
+
}
|
|
513
|
+
visitAccordionPanelFormComponentDefinition(item) {
|
|
514
|
+
this.populateFormComponent(item);
|
|
515
|
+
}
|
|
516
|
+
/* Tab Content */
|
|
517
|
+
visitTabContentFieldComponentDefinition(item) {
|
|
518
|
+
// Get the current raw data for constructing the class instance.
|
|
519
|
+
const currentData = this.getData();
|
|
520
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_21.TabContentComponentName)) {
|
|
521
|
+
throw new Error(`Invalid ${sails_ng_common_21.TabContentComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
522
|
+
}
|
|
523
|
+
const config = currentData?.config ?? { componentDefinitions: [] };
|
|
524
|
+
// Create the class instance for the config
|
|
525
|
+
item.config = new sails_ng_common_22.TabContentFieldComponentConfig();
|
|
526
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
527
|
+
this.sharedProps.setPropOverride('selected', item.config, config);
|
|
528
|
+
config.componentDefinitions = this.formOverride.applyOverridesReusable(config?.componentDefinitions ?? [], this.reusableFormDefs);
|
|
529
|
+
// Visit the components
|
|
530
|
+
config?.componentDefinitions.forEach((componentDefinition, index) => {
|
|
531
|
+
let formComponent;
|
|
532
|
+
try {
|
|
533
|
+
formComponent = this.constructFormComponent(componentDefinition);
|
|
534
|
+
}
|
|
535
|
+
catch (error) {
|
|
536
|
+
const errorMessage = error instanceof Error ? error.message : `${error}`;
|
|
537
|
+
throw new Error(`Invalid tab-content component definition at '${this.formPathHelper.formPath.formConfig}' index ${index}: ${errorMessage}`);
|
|
538
|
+
}
|
|
539
|
+
// Continue the construction
|
|
540
|
+
this.formPathHelper.acceptFormPath(formComponent, this.formPathHelper.lineagePathsForTabContentFieldComponentDefinition(formComponent, index));
|
|
541
|
+
// After the construction is done, apply any transforms
|
|
542
|
+
const itemTransformed = this.applyConstructPhaseTransform(formComponent);
|
|
543
|
+
// Store the instance on the item
|
|
544
|
+
item.config?.componentDefinitions.push(itemTransformed);
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
visitTabContentFieldLayoutDefinition(item) {
|
|
548
|
+
// Get the current raw data for constructing the class instance.
|
|
549
|
+
const currentData = this.getData();
|
|
550
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_21.TabContentLayoutName)) {
|
|
551
|
+
throw new Error(`Invalid ${sails_ng_common_21.TabContentLayoutName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
552
|
+
}
|
|
553
|
+
const config = currentData?.config;
|
|
554
|
+
// Create the class instance for the config
|
|
555
|
+
item.config = new sails_ng_common_22.TabContentFieldLayoutConfig();
|
|
556
|
+
this.sharedProps.sharedPopulateFieldLayoutConfig(item.config, config);
|
|
557
|
+
this.sharedProps.setPropOverride('buttonLabel', item.config, config);
|
|
558
|
+
}
|
|
559
|
+
visitTabContentFormComponentDefinition(item) {
|
|
560
|
+
this.populateFormComponent(item);
|
|
561
|
+
}
|
|
562
|
+
/* Save Button */
|
|
563
|
+
visitSaveButtonFieldComponentDefinition(item) {
|
|
564
|
+
// Get the current raw data for constructing the class instance.
|
|
565
|
+
const currentData = this.getData();
|
|
566
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_58.SaveButtonComponentName)) {
|
|
567
|
+
throw new Error(`Invalid ${sails_ng_common_58.SaveButtonComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
568
|
+
}
|
|
569
|
+
const config = currentData?.config;
|
|
570
|
+
// Create the class instance for the config
|
|
571
|
+
item.config = new sails_ng_common_59.SaveButtonFieldComponentConfig();
|
|
572
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
573
|
+
this.sharedProps.setPropOverride('targetStep', item.config, config);
|
|
574
|
+
this.sharedProps.setPropOverride('forceSave', item.config, config);
|
|
575
|
+
this.sharedProps.setPropOverride('labelSaving', item.config, config);
|
|
576
|
+
this.sharedProps.setPropOverride('buttonCssClasses', item.config, config);
|
|
577
|
+
}
|
|
578
|
+
visitSaveButtonFormComponentDefinition(item) {
|
|
579
|
+
this.populateFormComponent(item);
|
|
580
|
+
}
|
|
581
|
+
/* Cancel Button */
|
|
582
|
+
visitCancelButtonFieldComponentDefinition(item) {
|
|
583
|
+
// Get the current raw data for constructing the class instance.
|
|
584
|
+
const currentData = this.getData();
|
|
585
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_60.CancelButtonComponentName)) {
|
|
586
|
+
throw new Error(`Invalid ${sails_ng_common_60.CancelButtonComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
587
|
+
}
|
|
588
|
+
const config = currentData?.config;
|
|
589
|
+
// Create the class instance for the config
|
|
590
|
+
item.config = new sails_ng_common_61.CancelButtonFieldComponentConfig();
|
|
591
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
592
|
+
this.sharedProps.setPropOverride('confirmationMessage', item.config, config);
|
|
593
|
+
this.sharedProps.setPropOverride('confirmationTitle', item.config, config);
|
|
594
|
+
this.sharedProps.setPropOverride('cancelButtonMessage', item.config, config);
|
|
595
|
+
this.sharedProps.setPropOverride('confirmButtonMessage', item.config, config);
|
|
596
|
+
this.sharedProps.setPropOverride('buttonCssClasses', item.config, config);
|
|
597
|
+
}
|
|
598
|
+
visitCancelButtonFormComponentDefinition(item) {
|
|
599
|
+
this.populateFormComponent(item);
|
|
600
|
+
}
|
|
601
|
+
/* Delete Button */
|
|
602
|
+
visitDeleteButtonFieldComponentDefinition(item) {
|
|
603
|
+
const currentData = this.getData();
|
|
604
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_62.DeleteButtonComponentName)) {
|
|
605
|
+
throw new Error(`Invalid ${sails_ng_common_62.DeleteButtonComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
606
|
+
}
|
|
607
|
+
const config = currentData?.config;
|
|
608
|
+
item.config = new sails_ng_common_63.DeleteButtonFieldComponentConfig();
|
|
609
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
610
|
+
this.sharedProps.setPropOverride('buttonCssClasses', item.config, config);
|
|
611
|
+
this.sharedProps.setPropOverride('closeOnDelete', item.config, config);
|
|
612
|
+
this.sharedProps.setPropOverride('redirectLocation', item.config, config);
|
|
613
|
+
this.sharedProps.setPropOverride('redirectDelaySeconds', item.config, config);
|
|
614
|
+
this.sharedProps.setPropOverride('confirmationMessage', item.config, config);
|
|
615
|
+
this.sharedProps.setPropOverride('confirmationTitle', item.config, config);
|
|
616
|
+
this.sharedProps.setPropOverride('cancelButtonMessage', item.config, config);
|
|
617
|
+
this.sharedProps.setPropOverride('confirmButtonMessage', item.config, config);
|
|
618
|
+
}
|
|
619
|
+
visitDeleteButtonFormComponentDefinition(item) {
|
|
620
|
+
this.populateFormComponent(item);
|
|
621
|
+
}
|
|
622
|
+
/* Tab Nav Button */
|
|
623
|
+
visitTabNavButtonFieldComponentDefinition(item) {
|
|
624
|
+
// Get the current raw data for constructing the class instance.
|
|
625
|
+
const currentData = this.getData();
|
|
626
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_64.TabNavButtonComponentName)) {
|
|
627
|
+
throw new Error(`Invalid ${sails_ng_common_64.TabNavButtonComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
628
|
+
}
|
|
629
|
+
const config = currentData?.config;
|
|
630
|
+
// Create the class instance for the config
|
|
631
|
+
item.config = new sails_ng_common_65.TabNavButtonFieldComponentConfig();
|
|
632
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
633
|
+
this.sharedProps.setPropOverride('prevLabel', item.config, config);
|
|
634
|
+
this.sharedProps.setPropOverride('nextLabel', item.config, config);
|
|
635
|
+
this.sharedProps.setPropOverride('targetTabContainerId', item.config, config);
|
|
636
|
+
this.sharedProps.setPropOverride('endDisplayMode', item.config, config);
|
|
637
|
+
}
|
|
638
|
+
visitTabNavButtonFormComponentDefinition(item) {
|
|
639
|
+
this.populateFormComponent(item);
|
|
640
|
+
}
|
|
641
|
+
/* Text Area */
|
|
642
|
+
visitTextAreaFieldComponentDefinition(item) {
|
|
643
|
+
// Get the current raw data for constructing the class instance.
|
|
644
|
+
const currentData = this.getData();
|
|
645
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_23.TextAreaComponentName)) {
|
|
646
|
+
throw new Error(`Invalid ${sails_ng_common_23.TextAreaComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
647
|
+
}
|
|
648
|
+
const config = currentData?.config;
|
|
649
|
+
// Create the class instance for the config
|
|
650
|
+
item.config = new sails_ng_common_24.TextAreaFieldComponentConfig();
|
|
651
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
652
|
+
this.sharedProps.setPropOverride('rows', item.config, config);
|
|
653
|
+
this.sharedProps.setPropOverride('cols', item.config, config);
|
|
654
|
+
this.sharedProps.setPropOverride('placeholder', item.config, config);
|
|
655
|
+
}
|
|
656
|
+
visitTextAreaFieldModelDefinition(item) {
|
|
657
|
+
// Get the current raw data for constructing the class instance.
|
|
658
|
+
const currentData = this.getData();
|
|
659
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_23.TextAreaModelName)) {
|
|
660
|
+
throw new Error(`Invalid ${sails_ng_common_23.TextAreaModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
661
|
+
}
|
|
662
|
+
// Create the class instance for the config
|
|
663
|
+
item.config = new sails_ng_common_24.TextAreaFieldModelConfig();
|
|
664
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
665
|
+
this.setModelValue(item, currentData?.config);
|
|
666
|
+
}
|
|
667
|
+
visitTextAreaFormComponentDefinition(item) {
|
|
668
|
+
this.populateFormComponent(item);
|
|
669
|
+
}
|
|
670
|
+
/* Rich Text Editor */
|
|
671
|
+
visitRichTextEditorFieldComponentDefinition(item) {
|
|
672
|
+
const currentData = this.getData();
|
|
673
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_25.RichTextEditorComponentName)) {
|
|
674
|
+
throw new Error(`Invalid ${sails_ng_common_25.RichTextEditorComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
675
|
+
}
|
|
676
|
+
const config = currentData?.config;
|
|
677
|
+
item.config = new sails_ng_common_26.RichTextEditorFieldComponentConfig();
|
|
678
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
679
|
+
this.sharedProps.setPropOverride('outputFormat', item.config, config);
|
|
680
|
+
this.sharedProps.setPropOverride('showSourceToggle', item.config, config);
|
|
681
|
+
this.sharedProps.setPropOverride('toolbar', item.config, config);
|
|
682
|
+
this.sharedProps.setPropOverride('minHeight', item.config, config);
|
|
683
|
+
this.sharedProps.setPropOverride('placeholder', item.config, config);
|
|
684
|
+
}
|
|
685
|
+
visitRichTextEditorFieldModelDefinition(item) {
|
|
686
|
+
const currentData = this.getData();
|
|
687
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_25.RichTextEditorModelName)) {
|
|
688
|
+
throw new Error(`Invalid ${sails_ng_common_25.RichTextEditorModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
689
|
+
}
|
|
690
|
+
item.config = new sails_ng_common_26.RichTextEditorFieldModelConfig();
|
|
691
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
692
|
+
this.setModelValue(item, currentData?.config);
|
|
693
|
+
}
|
|
694
|
+
visitRichTextEditorFormComponentDefinition(item) {
|
|
695
|
+
this.populateFormComponent(item);
|
|
696
|
+
this.ensureRichTextViewOverride(item);
|
|
697
|
+
}
|
|
698
|
+
/* Map */
|
|
699
|
+
visitMapFieldComponentDefinition(item) {
|
|
700
|
+
const currentData = this.getData();
|
|
701
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_27.MapComponentName)) {
|
|
702
|
+
throw new Error(`Invalid ${sails_ng_common_27.MapComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
703
|
+
}
|
|
704
|
+
const config = currentData?.config;
|
|
705
|
+
item.config = new sails_ng_common_28.MapFieldComponentConfig();
|
|
706
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
707
|
+
this.sharedProps.setPropOverride('center', item.config, config);
|
|
708
|
+
this.sharedProps.setPropOverride('zoom', item.config, config);
|
|
709
|
+
this.sharedProps.setPropOverride('mapHeight', item.config, config);
|
|
710
|
+
this.sharedProps.setPropOverride('tileLayers', item.config, config);
|
|
711
|
+
this.sharedProps.setPropOverride('enabledModes', item.config, config);
|
|
712
|
+
this.sharedProps.setPropOverride('enableImport', item.config, config);
|
|
713
|
+
this.sharedProps.setPropOverride('coordinatesHelp', item.config, config);
|
|
714
|
+
item.config.enabledModes = this.sanitizeMapEnabledModes(item.config.enabledModes, 'construct');
|
|
715
|
+
}
|
|
716
|
+
visitMapFieldModelDefinition(item) {
|
|
717
|
+
const currentData = this.getData();
|
|
718
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_27.MapModelName)) {
|
|
719
|
+
throw new Error(`Invalid ${sails_ng_common_27.MapModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
720
|
+
}
|
|
721
|
+
item.config = new sails_ng_common_28.MapFieldModelConfig();
|
|
722
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
723
|
+
this.setModelValue(item, currentData?.config);
|
|
724
|
+
}
|
|
725
|
+
visitMapFormComponentDefinition(item) {
|
|
726
|
+
this.populateFormComponent(item);
|
|
727
|
+
}
|
|
728
|
+
/* File Upload */
|
|
729
|
+
visitFileUploadFieldComponentDefinition(item) {
|
|
730
|
+
const currentData = this.getData();
|
|
731
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_29.FileUploadComponentName)) {
|
|
732
|
+
throw new Error(`Invalid ${sails_ng_common_29.FileUploadComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
733
|
+
}
|
|
734
|
+
const config = currentData?.config;
|
|
735
|
+
item.config = new sails_ng_common_30.FileUploadFieldComponentConfig();
|
|
736
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
737
|
+
this.sharedProps.setPropOverride('restrictions', item.config, config);
|
|
738
|
+
this.sharedProps.setPropOverride('enabledSources', item.config, config);
|
|
739
|
+
this.sharedProps.setPropOverride('companionUrl', item.config, config);
|
|
740
|
+
this.sharedProps.setPropOverride('allowUploadWithoutSave', item.config, config);
|
|
741
|
+
this.sharedProps.setPropOverride('uppyDashboardNote', item.config, config);
|
|
742
|
+
this.sharedProps.setPropOverride('tusHeaders', item.config, config);
|
|
743
|
+
}
|
|
744
|
+
visitFileUploadFieldModelDefinition(item) {
|
|
745
|
+
const currentData = this.getData();
|
|
746
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_29.FileUploadModelName)) {
|
|
747
|
+
throw new Error(`Invalid ${sails_ng_common_29.FileUploadModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
748
|
+
}
|
|
749
|
+
item.config = new sails_ng_common_30.FileUploadFieldModelConfig();
|
|
750
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
751
|
+
this.setModelValue(item, currentData?.config);
|
|
752
|
+
}
|
|
753
|
+
visitFileUploadFormComponentDefinition(item) {
|
|
754
|
+
this.populateFormComponent(item);
|
|
755
|
+
}
|
|
756
|
+
/* PDF List */
|
|
757
|
+
visitPDFListFieldComponentDefinition(item) {
|
|
758
|
+
const currentData = this.getData();
|
|
759
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_31.PDFListComponentName)) {
|
|
760
|
+
throw new Error(`Invalid ${sails_ng_common_31.PDFListComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
761
|
+
}
|
|
762
|
+
const config = currentData?.config;
|
|
763
|
+
item.config = new sails_ng_common_32.PDFListFieldComponentConfig();
|
|
764
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
765
|
+
this.sharedProps.setPropOverride('startsWith', item.config, config);
|
|
766
|
+
this.sharedProps.setPropOverride('recentPdfLimit', item.config, config);
|
|
767
|
+
this.sharedProps.setPropOverride('showVersionCounter', item.config, config);
|
|
768
|
+
this.sharedProps.setPropOverride('showVersionColumn', item.config, config);
|
|
769
|
+
this.sharedProps.setPropOverride('versionColumnValueField', item.config, config);
|
|
770
|
+
this.sharedProps.setPropOverride('versionColumnLabelKey', item.config, config);
|
|
771
|
+
this.sharedProps.setPropOverride('useVersionLabelForFileName', item.config, config);
|
|
772
|
+
this.sharedProps.setPropOverride('downloadBtnLabel', item.config, config);
|
|
773
|
+
this.sharedProps.setPropOverride('downloadPreviousBtnLabel', item.config, config);
|
|
774
|
+
this.sharedProps.setPropOverride('downloadPrefix', item.config, config);
|
|
775
|
+
this.sharedProps.setPropOverride('fileNameTemplate', item.config, config);
|
|
776
|
+
}
|
|
777
|
+
visitPDFListFieldModelDefinition(item) {
|
|
778
|
+
const currentData = this.getData();
|
|
779
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_31.PDFListModelName)) {
|
|
780
|
+
throw new Error(`Invalid ${sails_ng_common_31.PDFListModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
781
|
+
}
|
|
782
|
+
item.config = new sails_ng_common_32.PDFListFieldModelConfig();
|
|
783
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
784
|
+
this.setModelValue(item, currentData?.config);
|
|
785
|
+
}
|
|
786
|
+
visitPDFListFormComponentDefinition(item) {
|
|
787
|
+
this.populateFormComponent(item);
|
|
788
|
+
}
|
|
789
|
+
/* Record Metadata Retriever */
|
|
790
|
+
visitRecordMetadataRetrieverFieldComponentDefinition(item) {
|
|
791
|
+
const currentData = this.getData();
|
|
792
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_33.RecordMetadataRetrieverComponentName)) {
|
|
793
|
+
throw new Error(`Invalid ${sails_ng_common_33.RecordMetadataRetrieverComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
794
|
+
}
|
|
795
|
+
item.config = new sails_ng_common_34.RecordMetadataRetrieverFieldComponentConfig();
|
|
796
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, currentData?.config);
|
|
797
|
+
}
|
|
798
|
+
visitRecordMetadataRetrieverFormComponentDefinition(item) {
|
|
799
|
+
this.populateFormComponent(item);
|
|
800
|
+
}
|
|
801
|
+
/* Data Location */
|
|
802
|
+
visitDataLocationFieldComponentDefinition(item) {
|
|
803
|
+
const currentData = this.getData();
|
|
804
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_35.DataLocationComponentName)) {
|
|
805
|
+
throw new Error(`Invalid ${sails_ng_common_35.DataLocationComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
806
|
+
}
|
|
807
|
+
const config = currentData?.config;
|
|
808
|
+
item.config = new sails_ng_common_36.DataLocationFieldComponentConfig();
|
|
809
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
810
|
+
this.sharedProps.setPropOverride('restrictions', item.config, config);
|
|
811
|
+
this.sharedProps.setPropOverride('enabledSources', item.config, config);
|
|
812
|
+
this.sharedProps.setPropOverride('companionUrl', item.config, config);
|
|
813
|
+
this.sharedProps.setPropOverride('allowUploadWithoutSave', item.config, config);
|
|
814
|
+
this.sharedProps.setPropOverride('uppyDashboardNote', item.config, config);
|
|
815
|
+
this.sharedProps.setPropOverride('tusHeaders', item.config, config);
|
|
816
|
+
this.sharedProps.setPropOverride('notesEnabled', item.config, config);
|
|
817
|
+
this.sharedProps.setPropOverride('iscEnabled', item.config, config);
|
|
818
|
+
this.sharedProps.setPropOverride('iscHeader', item.config, config);
|
|
819
|
+
this.sharedProps.setPropOverride('defaultSelect', item.config, config);
|
|
820
|
+
this.sharedProps.setPropOverride('securityClassificationOptions', item.config, config);
|
|
821
|
+
this.sharedProps.setPropOverride('locationAddText', item.config, config);
|
|
822
|
+
this.sharedProps.setPropOverride('typeHeader', item.config, config);
|
|
823
|
+
this.sharedProps.setPropOverride('locationHeader', item.config, config);
|
|
824
|
+
this.sharedProps.setPropOverride('notesHeader', item.config, config);
|
|
825
|
+
this.sharedProps.setPropOverride('columns', item.config, config);
|
|
826
|
+
this.sharedProps.setPropOverride('editNotesButtonText', item.config, config);
|
|
827
|
+
this.sharedProps.setPropOverride('editNotesTitle', item.config, config);
|
|
828
|
+
this.sharedProps.setPropOverride('cancelEditNotesButtonText', item.config, config);
|
|
829
|
+
this.sharedProps.setPropOverride('applyEditNotesButtonText', item.config, config);
|
|
830
|
+
this.sharedProps.setPropOverride('editNotesCssClasses', item.config, config);
|
|
831
|
+
this.sharedProps.setPropOverride('dataTypes', item.config, config);
|
|
832
|
+
this.sharedProps.setPropOverride('dataTypeLookup', item.config, config);
|
|
833
|
+
this.sharedProps.setPropOverride('hideNotesForLocationTypes', item.config, config);
|
|
834
|
+
}
|
|
835
|
+
visitDataLocationFieldModelDefinition(item) {
|
|
836
|
+
const currentData = this.getData();
|
|
837
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_35.DataLocationModelName)) {
|
|
838
|
+
throw new Error(`Invalid ${sails_ng_common_35.DataLocationModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
839
|
+
}
|
|
840
|
+
item.config = new sails_ng_common_36.DataLocationFieldModelConfig();
|
|
841
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
842
|
+
this.setModelValue(item, currentData?.config);
|
|
843
|
+
}
|
|
844
|
+
visitDataLocationFormComponentDefinition(item) {
|
|
845
|
+
this.populateFormComponent(item);
|
|
846
|
+
}
|
|
847
|
+
// Construct the refresh trigger as a pure component definition. The click
|
|
848
|
+
// token is synthetic, so no model instance should be created here.
|
|
849
|
+
visitPublishDataLocationRefreshFieldComponentDefinition(item) {
|
|
850
|
+
const currentData = this.getData();
|
|
851
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_37.PublishDataLocationRefreshComponentName)) {
|
|
852
|
+
throw new Error(`Invalid ${sails_ng_common_37.PublishDataLocationRefreshComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
853
|
+
}
|
|
854
|
+
item.config = new sails_ng_common_38.PublishDataLocationRefreshFieldComponentConfig();
|
|
855
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, currentData?.config);
|
|
856
|
+
}
|
|
857
|
+
visitPublishDataLocationRefreshFormComponentDefinition(item) {
|
|
858
|
+
this.populateFormComponent(item);
|
|
859
|
+
}
|
|
860
|
+
visitPublishDataLocationSelectorFieldComponentDefinition(item) {
|
|
861
|
+
const currentData = this.getData();
|
|
862
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_39.PublishDataLocationSelectorComponentName)) {
|
|
863
|
+
throw new Error(`Invalid ${sails_ng_common_39.PublishDataLocationSelectorComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
864
|
+
}
|
|
865
|
+
const config = currentData?.config;
|
|
866
|
+
item.config = new sails_ng_common_40.PublishDataLocationSelectorFieldComponentConfig();
|
|
867
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
868
|
+
this.sharedProps.setPropOverride('columns', item.config, config);
|
|
869
|
+
this.sharedProps.setPropOverride('editNotesButtonText', item.config, config);
|
|
870
|
+
this.sharedProps.setPropOverride('editNotesTitle', item.config, config);
|
|
871
|
+
this.sharedProps.setPropOverride('cancelEditNotesButtonText', item.config, config);
|
|
872
|
+
this.sharedProps.setPropOverride('applyEditNotesButtonText', item.config, config);
|
|
873
|
+
this.sharedProps.setPropOverride('editNotesCssClasses', item.config, config);
|
|
874
|
+
this.sharedProps.setPropOverride('typeHeader', item.config, config);
|
|
875
|
+
this.sharedProps.setPropOverride('locationHeader', item.config, config);
|
|
876
|
+
this.sharedProps.setPropOverride('notesHeader', item.config, config);
|
|
877
|
+
this.sharedProps.setPropOverride('iscHeader', item.config, config);
|
|
878
|
+
this.sharedProps.setPropOverride('iscEnabled', item.config, config);
|
|
879
|
+
this.sharedProps.setPropOverride('notesEnabled', item.config, config);
|
|
880
|
+
this.sharedProps.setPropOverride('noLocationSelectedText', item.config, config);
|
|
881
|
+
this.sharedProps.setPropOverride('noLocationSelectedHelp', item.config, config);
|
|
882
|
+
this.sharedProps.setPropOverride('publicCheck', item.config, config);
|
|
883
|
+
this.sharedProps.setPropOverride('selectionCriteria', item.config, config);
|
|
884
|
+
this.sharedProps.setPropOverride('dataTypes', item.config, config);
|
|
885
|
+
this.sharedProps.setPropOverride('dataTypeLookup', item.config, config);
|
|
886
|
+
}
|
|
887
|
+
visitPublishDataLocationSelectorFieldModelDefinition(item) {
|
|
888
|
+
const currentData = this.getData();
|
|
889
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_39.PublishDataLocationSelectorModelName)) {
|
|
890
|
+
throw new Error(`Invalid ${sails_ng_common_39.PublishDataLocationSelectorModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
891
|
+
}
|
|
892
|
+
item.config = new sails_ng_common_40.PublishDataLocationSelectorFieldModelConfig();
|
|
893
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
894
|
+
this.setModelValue(item, currentData?.config);
|
|
895
|
+
}
|
|
896
|
+
visitPublishDataLocationSelectorFormComponentDefinition(item) {
|
|
897
|
+
this.populateFormComponent(item);
|
|
898
|
+
}
|
|
899
|
+
/* Default Layout */
|
|
900
|
+
visitDefaultFieldLayoutDefinition(item) {
|
|
901
|
+
// Get the current raw data for constructing the class instance.
|
|
902
|
+
const currentData = this.getData();
|
|
903
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_9.DefaultLayoutName)) {
|
|
904
|
+
throw new Error(`Invalid ${sails_ng_common_9.DefaultLayoutName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
905
|
+
}
|
|
906
|
+
// Create the class instance for the config
|
|
907
|
+
item.config = new sails_ng_common_10.DefaultFieldLayoutConfig();
|
|
908
|
+
this.sharedProps.sharedPopulateFieldLayoutConfig(item.config, currentData?.config);
|
|
909
|
+
}
|
|
910
|
+
visitInlineFieldLayoutDefinition(item) {
|
|
911
|
+
// Get the current raw data for constructing the class instance.
|
|
912
|
+
const currentData = this.getData();
|
|
913
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_13.InlineLayoutName)) {
|
|
914
|
+
throw new Error(`Invalid ${sails_ng_common_13.InlineLayoutName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
915
|
+
}
|
|
916
|
+
item.config = new sails_ng_common_14.InlineFieldLayoutConfig();
|
|
917
|
+
this.sharedProps.sharedPopulateFieldLayoutConfig(item.config, currentData?.config);
|
|
918
|
+
}
|
|
919
|
+
visitActionRowFieldLayoutDefinition(item) {
|
|
920
|
+
const currentData = this.getData();
|
|
921
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_11.ActionRowLayoutName)) {
|
|
922
|
+
throw new Error(`Invalid ${sails_ng_common_11.ActionRowLayoutName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
923
|
+
}
|
|
924
|
+
const config = currentData?.config;
|
|
925
|
+
item.config = new sails_ng_common_12.ActionRowFieldLayoutConfig();
|
|
926
|
+
this.sharedProps.sharedPopulateFieldLayoutConfig(item.config, config);
|
|
927
|
+
this.sharedProps.setPropOverride('containerCssClass', item.config, config);
|
|
928
|
+
this.sharedProps.setPropOverride('alignment', item.config, config);
|
|
929
|
+
this.sharedProps.setPropOverride('wrap', item.config, config);
|
|
930
|
+
this.sharedProps.setPropOverride('slotCssClass', item.config, config);
|
|
931
|
+
this.sharedProps.setPropOverride('compact', item.config, config);
|
|
932
|
+
}
|
|
933
|
+
/* Checkbox Input */
|
|
934
|
+
visitCheckboxInputFieldComponentDefinition(item) {
|
|
935
|
+
// Get the current raw data for constructing the class instance.
|
|
936
|
+
const currentData = this.getData();
|
|
937
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_46.CheckboxInputComponentName)) {
|
|
938
|
+
throw new Error(`Invalid ${sails_ng_common_46.CheckboxInputComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
939
|
+
}
|
|
940
|
+
const config = currentData?.config;
|
|
941
|
+
// Create the class instance for the config
|
|
942
|
+
item.config = new sails_ng_common_47.CheckboxInputFieldComponentConfig();
|
|
943
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
944
|
+
this.sharedProps.setPropOverride('placeholder', item.config, config);
|
|
945
|
+
this.sharedProps.setPropOverride('options', item.config, config);
|
|
946
|
+
this.sharedProps.setPropOverride('multipleValues', item.config, config);
|
|
947
|
+
this.sharedProps.setPropOverride('vocabRef', item.config, config);
|
|
948
|
+
this.sharedProps.setPropOverride('inlineVocab', item.config, config);
|
|
949
|
+
}
|
|
950
|
+
visitCheckboxInputFieldModelDefinition(item) {
|
|
951
|
+
// Get the current raw data for constructing the class instance.
|
|
952
|
+
const currentData = this.getData();
|
|
953
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_46.CheckboxInputModelName)) {
|
|
954
|
+
throw new Error(`Invalid ${sails_ng_common_46.CheckboxInputModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
955
|
+
}
|
|
956
|
+
// Create the class instance for the config
|
|
957
|
+
item.config = new sails_ng_common_47.CheckboxInputFieldModelConfig();
|
|
958
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
959
|
+
this.setModelValue(item, currentData?.config);
|
|
960
|
+
}
|
|
961
|
+
visitCheckboxInputFormComponentDefinition(item) {
|
|
962
|
+
this.populateFormComponent(item);
|
|
963
|
+
}
|
|
964
|
+
/* Checkbox Tree */
|
|
965
|
+
visitCheckboxTreeFieldComponentDefinition(item) {
|
|
966
|
+
// Get the current raw data for constructing the class instance.
|
|
967
|
+
const currentData = this.getData();
|
|
968
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_48.CheckboxTreeComponentName)) {
|
|
969
|
+
throw new Error(`Invalid ${sails_ng_common_48.CheckboxTreeComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
970
|
+
}
|
|
971
|
+
const config = currentData?.config;
|
|
972
|
+
// Create the class instance for the config
|
|
973
|
+
item.config = new sails_ng_common_49.CheckboxTreeFieldComponentConfig();
|
|
974
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
975
|
+
this.sharedProps.setPropOverride('vocabRef', item.config, config);
|
|
976
|
+
this.sharedProps.setPropOverride('inlineVocab', item.config, config);
|
|
977
|
+
this.sharedProps.setPropOverride('treeData', item.config, config);
|
|
978
|
+
this.sharedProps.setPropOverride('leafOnly', item.config, config);
|
|
979
|
+
this.sharedProps.setPropOverride('maxDepth', item.config, config);
|
|
980
|
+
this.sharedProps.setPropOverride('labelTemplate', item.config, config);
|
|
981
|
+
}
|
|
982
|
+
visitCheckboxTreeFieldModelDefinition(item) {
|
|
983
|
+
// Get the current raw data for constructing the class instance.
|
|
984
|
+
const currentData = this.getData();
|
|
985
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_48.CheckboxTreeModelName)) {
|
|
986
|
+
throw new Error(`Invalid ${sails_ng_common_48.CheckboxTreeModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
987
|
+
}
|
|
988
|
+
// Create the class instance for the config
|
|
989
|
+
item.config = new sails_ng_common_49.CheckboxTreeFieldModelConfig();
|
|
990
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
991
|
+
this.setModelValue(item, currentData?.config);
|
|
992
|
+
}
|
|
993
|
+
visitCheckboxTreeFormComponentDefinition(item) {
|
|
994
|
+
this.populateFormComponent(item);
|
|
995
|
+
}
|
|
996
|
+
/* Record Selector */
|
|
997
|
+
visitRecordSelectorFieldComponentDefinition(item) {
|
|
998
|
+
const currentData = this.getData();
|
|
999
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_50.RecordSelectorComponentName)) {
|
|
1000
|
+
throw new Error(`Invalid ${sails_ng_common_50.RecordSelectorComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1001
|
+
}
|
|
1002
|
+
const config = currentData?.config;
|
|
1003
|
+
item.config = new sails_ng_common_51.RecordSelectorFieldComponentConfig();
|
|
1004
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
1005
|
+
this.sharedProps.setPropOverride('columnTitle', item.config, config);
|
|
1006
|
+
this.sharedProps.setPropOverride('recordType', item.config, config);
|
|
1007
|
+
this.sharedProps.setPropOverride('workflowState', item.config, config);
|
|
1008
|
+
this.sharedProps.setPropOverride('filterMode', item.config, config);
|
|
1009
|
+
this.sharedProps.setPropOverride('filterFields', item.config, config);
|
|
1010
|
+
}
|
|
1011
|
+
visitRecordSelectorFieldModelDefinition(item) {
|
|
1012
|
+
const currentData = this.getData();
|
|
1013
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_50.RecordSelectorModelName)) {
|
|
1014
|
+
throw new Error(`Invalid ${sails_ng_common_50.RecordSelectorModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1015
|
+
}
|
|
1016
|
+
item.config = new sails_ng_common_51.RecordSelectorFieldModelConfig();
|
|
1017
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
1018
|
+
this.setModelValue(item, currentData?.config);
|
|
1019
|
+
}
|
|
1020
|
+
visitRecordSelectorFormComponentDefinition(item) {
|
|
1021
|
+
this.populateFormComponent(item);
|
|
1022
|
+
}
|
|
1023
|
+
/* Dropdown Input */
|
|
1024
|
+
visitDropdownInputFieldComponentDefinition(item) {
|
|
1025
|
+
// Get the current raw data for constructing the class instance.
|
|
1026
|
+
const currentData = this.getData();
|
|
1027
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_42.DropdownInputComponentName)) {
|
|
1028
|
+
throw new Error(`Invalid ${sails_ng_common_42.DropdownInputComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1029
|
+
}
|
|
1030
|
+
const config = currentData?.config;
|
|
1031
|
+
// Create the class instance for the config
|
|
1032
|
+
item.config = new sails_ng_common_43.DropdownInputFieldComponentConfig();
|
|
1033
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
1034
|
+
this.sharedProps.setPropOverride('placeholder', item.config, config);
|
|
1035
|
+
this.sharedProps.setPropOverride('options', item.config, config);
|
|
1036
|
+
this.sharedProps.setPropOverride('vocabRef', item.config, config);
|
|
1037
|
+
this.sharedProps.setPropOverride('inlineVocab', item.config, config);
|
|
1038
|
+
}
|
|
1039
|
+
visitDropdownInputFieldModelDefinition(item) {
|
|
1040
|
+
// Get the current raw data for constructing the class instance.
|
|
1041
|
+
const currentData = this.getData();
|
|
1042
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_42.DropdownInputModelName)) {
|
|
1043
|
+
throw new Error(`Invalid ${sails_ng_common_42.DropdownInputModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1044
|
+
}
|
|
1045
|
+
// Create the class instance for the config
|
|
1046
|
+
item.config = new sails_ng_common_43.DropdownInputFieldModelConfig();
|
|
1047
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
1048
|
+
this.setModelValue(item, currentData?.config);
|
|
1049
|
+
}
|
|
1050
|
+
visitDropdownInputFormComponentDefinition(item) {
|
|
1051
|
+
this.populateFormComponent(item);
|
|
1052
|
+
}
|
|
1053
|
+
/* Typeahead Input */
|
|
1054
|
+
visitTypeaheadInputFieldComponentDefinition(item) {
|
|
1055
|
+
const currentData = this.getData();
|
|
1056
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_44.TypeaheadInputComponentName)) {
|
|
1057
|
+
throw new Error(`Invalid ${sails_ng_common_44.TypeaheadInputComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1058
|
+
}
|
|
1059
|
+
const config = currentData?.config;
|
|
1060
|
+
item.config = new sails_ng_common_45.TypeaheadInputFieldComponentConfig();
|
|
1061
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
1062
|
+
this.sharedProps.setPropOverride('sourceType', item.config, config);
|
|
1063
|
+
this.sharedProps.setPropOverride('staticOptions', item.config, config);
|
|
1064
|
+
this.sharedProps.setPropOverride('vocabRef', item.config, config);
|
|
1065
|
+
this.sharedProps.setPropOverride('queryId', item.config, config);
|
|
1066
|
+
this.sharedProps.setPropOverride('provider', item.config, config);
|
|
1067
|
+
this.sharedProps.setPropOverride('resultArrayProperty', item.config, config);
|
|
1068
|
+
this.sharedProps.setPropOverride('labelField', item.config, config);
|
|
1069
|
+
this.sharedProps.setPropOverride('labelTemplate', item.config, config);
|
|
1070
|
+
this.sharedProps.setPropOverride('valueField', item.config, config);
|
|
1071
|
+
this.sharedProps.setPropOverride('minChars', item.config, config);
|
|
1072
|
+
this.sharedProps.setPropOverride('debounceMs', item.config, config);
|
|
1073
|
+
this.sharedProps.setPropOverride('maxResults', item.config, config);
|
|
1074
|
+
this.sharedProps.setPropOverride('requireSelection', item.config, config);
|
|
1075
|
+
this.sharedProps.setPropOverride('valueMode', item.config, config);
|
|
1076
|
+
this.sharedProps.setPropOverride('cacheResults', item.config, config);
|
|
1077
|
+
this.sharedProps.setPropOverride('multiSelect', item.config, config);
|
|
1078
|
+
this.sharedProps.setPropOverride('placeholder', item.config, config);
|
|
1079
|
+
this.sharedProps.setPropOverride('readOnlyAfterSelect', item.config, config);
|
|
1080
|
+
const sourceType = item.config.sourceType ?? 'static';
|
|
1081
|
+
if (sourceType === 'namedQuery') {
|
|
1082
|
+
if (!item.config.labelField) {
|
|
1083
|
+
item.config.labelField = 'label';
|
|
1084
|
+
}
|
|
1085
|
+
if (!item.config.valueField) {
|
|
1086
|
+
item.config.valueField = 'value';
|
|
1087
|
+
}
|
|
1088
|
+
if (config?.cacheResults === undefined) {
|
|
1089
|
+
item.config.cacheResults = false;
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
else if (config?.cacheResults === undefined) {
|
|
1093
|
+
item.config.cacheResults = true;
|
|
1094
|
+
}
|
|
1095
|
+
const minChars = Number(item.config.minChars);
|
|
1096
|
+
const debounceMs = Number(item.config.debounceMs);
|
|
1097
|
+
const maxResults = Number(item.config.maxResults);
|
|
1098
|
+
if (!Number.isInteger(minChars) || minChars < 0) {
|
|
1099
|
+
item.config.minChars = 2;
|
|
1100
|
+
}
|
|
1101
|
+
if (!Number.isInteger(debounceMs) || debounceMs < 0) {
|
|
1102
|
+
item.config.debounceMs = 250;
|
|
1103
|
+
}
|
|
1104
|
+
if (!Number.isInteger(maxResults) || maxResults <= 0) {
|
|
1105
|
+
item.config.maxResults = 25;
|
|
1106
|
+
}
|
|
1107
|
+
item.config.requireSelection = Boolean(item.config.requireSelection);
|
|
1108
|
+
item.config.multiSelect = Boolean(item.config.multiSelect);
|
|
1109
|
+
}
|
|
1110
|
+
visitTypeaheadInputFieldModelDefinition(item) {
|
|
1111
|
+
const currentData = this.getData();
|
|
1112
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_44.TypeaheadInputModelName)) {
|
|
1113
|
+
throw new Error(`Invalid ${sails_ng_common_44.TypeaheadInputModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1114
|
+
}
|
|
1115
|
+
item.config = new sails_ng_common_45.TypeaheadInputFieldModelConfig();
|
|
1116
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
1117
|
+
this.setModelValue(item, currentData?.config);
|
|
1118
|
+
}
|
|
1119
|
+
visitTypeaheadInputFormComponentDefinition(item) {
|
|
1120
|
+
this.populateFormComponent(item);
|
|
1121
|
+
}
|
|
1122
|
+
/* Radio Input */
|
|
1123
|
+
visitRadioInputFieldComponentDefinition(item) {
|
|
1124
|
+
// Get the current raw data for constructing the class instance.
|
|
1125
|
+
const currentData = this.getData();
|
|
1126
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_52.RadioInputComponentName)) {
|
|
1127
|
+
throw new Error(`Invalid ${sails_ng_common_52.RadioInputComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1128
|
+
}
|
|
1129
|
+
const config = currentData?.config;
|
|
1130
|
+
// Create the class instance for the config
|
|
1131
|
+
item.config = new sails_ng_common_53.RadioInputFieldComponentConfig();
|
|
1132
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
1133
|
+
this.sharedProps.setPropOverride('options', item.config, config);
|
|
1134
|
+
this.sharedProps.setPropOverride('vocabRef', item.config, config);
|
|
1135
|
+
this.sharedProps.setPropOverride('inlineVocab', item.config, config);
|
|
1136
|
+
}
|
|
1137
|
+
visitRadioInputFieldModelDefinition(item) {
|
|
1138
|
+
// Get the current raw data for constructing the class instance.
|
|
1139
|
+
const currentData = this.getData();
|
|
1140
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_52.RadioInputModelName)) {
|
|
1141
|
+
throw new Error(`Invalid ${sails_ng_common_52.RadioInputModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1142
|
+
}
|
|
1143
|
+
// Create the class instance for the config
|
|
1144
|
+
item.config = new sails_ng_common_53.RadioInputFieldModelConfig();
|
|
1145
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
1146
|
+
this.setModelValue(item, currentData?.config);
|
|
1147
|
+
}
|
|
1148
|
+
visitRadioInputFormComponentDefinition(item) {
|
|
1149
|
+
this.populateFormComponent(item);
|
|
1150
|
+
}
|
|
1151
|
+
/* Date Input */
|
|
1152
|
+
visitDateInputFieldComponentDefinition(item) {
|
|
1153
|
+
// Get the current raw data for constructing the class instance.
|
|
1154
|
+
const currentData = this.getData();
|
|
1155
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_54.DateInputComponentName)) {
|
|
1156
|
+
throw new Error(`Invalid ${sails_ng_common_54.DateInputComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1157
|
+
}
|
|
1158
|
+
const config = currentData?.config;
|
|
1159
|
+
// Create the class instance for the config
|
|
1160
|
+
item.config = new sails_ng_common_55.DateInputFieldComponentConfig();
|
|
1161
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, config);
|
|
1162
|
+
this.sharedProps.setPropOverride('placeholder', item.config, config);
|
|
1163
|
+
this.sharedProps.setPropOverride('dateFormat', item.config, config);
|
|
1164
|
+
this.sharedProps.setPropOverride('showWeekNumbers', item.config, config);
|
|
1165
|
+
this.sharedProps.setPropOverride('containerClass', item.config, config);
|
|
1166
|
+
this.sharedProps.setPropOverride('enableTimePicker', item.config, config);
|
|
1167
|
+
this.sharedProps.setPropOverride('bsFullConfig', item.config, config);
|
|
1168
|
+
}
|
|
1169
|
+
visitDateInputFieldModelDefinition(item) {
|
|
1170
|
+
// Get the current raw data for constructing the class instance.
|
|
1171
|
+
const currentData = this.getData();
|
|
1172
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_54.DateInputModelName)) {
|
|
1173
|
+
throw new Error(`Invalid ${sails_ng_common_54.DateInputModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1174
|
+
}
|
|
1175
|
+
// Create the class instance for the config
|
|
1176
|
+
item.config = new sails_ng_common_55.DateInputFieldModelConfig();
|
|
1177
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
1178
|
+
this.setModelValue(item, currentData?.config);
|
|
1179
|
+
}
|
|
1180
|
+
visitDateInputFormComponentDefinition(item) {
|
|
1181
|
+
this.populateFormComponent(item);
|
|
1182
|
+
}
|
|
1183
|
+
/* Question Tree */
|
|
1184
|
+
visitQuestionTreeFieldComponentDefinition(item) {
|
|
1185
|
+
const currentData = this.getData();
|
|
1186
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_56.QuestionTreeComponentName)) {
|
|
1187
|
+
throw new Error(`Invalid ${sails_ng_common_56.QuestionTreeComponentName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1188
|
+
}
|
|
1189
|
+
const configFrame = currentData?.config ?? { availableOutcomes: [], questions: [], componentDefinitions: [] };
|
|
1190
|
+
item.config = new sails_ng_common_57.QuestionTreeFieldComponentConfig();
|
|
1191
|
+
this.sharedProps.sharedPopulateFieldComponentConfig(item.config, configFrame);
|
|
1192
|
+
this.sharedProps.setPropOverride('availableOutcomes', item.config, configFrame);
|
|
1193
|
+
this.sharedProps.setPropOverride('availableMeta', item.config, configFrame);
|
|
1194
|
+
this.sharedProps.setPropOverride('questions', item.config, configFrame);
|
|
1195
|
+
// Transform the question tree questions DSL into reusable components.
|
|
1196
|
+
configFrame.componentDefinitions = this.formOverride.applyQuestionTreeDsl(this.formPathHelper.modelName, this.formPathHelper.formPath, item);
|
|
1197
|
+
// Apply the reusable component overrides.
|
|
1198
|
+
configFrame.componentDefinitions = this.formOverride.applyQuestionTreeFrames(this.formOverride.applyOverridesReusable(configFrame?.componentDefinitions ?? [], this.reusableFormDefs));
|
|
1199
|
+
configFrame.componentDefinitions.forEach((componentDefinition, index) => {
|
|
1200
|
+
const formComponent = this.constructFormComponent(componentDefinition);
|
|
1201
|
+
this.formPathHelper.acceptFormPath(formComponent, this.formPathHelper.lineagePathsForQuestionTreeFieldComponentDefinition(formComponent, index));
|
|
1202
|
+
// Preserve the generated question controls until the parent QuestionTree view transform runs.
|
|
1203
|
+
const itemTransformed = this.formMode === 'view'
|
|
1204
|
+
? formComponent
|
|
1205
|
+
: this.formOverride.applyOverrideTransform(formComponent, this.formMode);
|
|
1206
|
+
// Store the instance on the item
|
|
1207
|
+
item.config?.componentDefinitions.push(itemTransformed);
|
|
1208
|
+
});
|
|
1209
|
+
}
|
|
1210
|
+
visitQuestionTreeFieldModelDefinition(item) {
|
|
1211
|
+
const currentData = this.getData();
|
|
1212
|
+
if (!(0, sails_ng_common_70.isTypeFieldDefinitionName)(currentData, sails_ng_common_56.QuestionTreeModelName)) {
|
|
1213
|
+
throw new Error(`Invalid ${sails_ng_common_56.QuestionTreeModelName} at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1214
|
+
}
|
|
1215
|
+
item.config = new sails_ng_common_57.QuestionTreeFieldModelConfig();
|
|
1216
|
+
this.sharedProps.sharedPopulateFieldModelConfig(item.config, currentData?.config);
|
|
1217
|
+
this.setModelValue(item, currentData?.config);
|
|
1218
|
+
}
|
|
1219
|
+
visitQuestionTreeFormComponentDefinition(item) {
|
|
1220
|
+
this.populateFormComponent(item);
|
|
1221
|
+
}
|
|
1222
|
+
/* Shared */
|
|
1223
|
+
constructFormComponent(item) {
|
|
1224
|
+
return this.sharedProps.sharedConstructFormComponent(item);
|
|
1225
|
+
}
|
|
1226
|
+
populateFormComponent(item) {
|
|
1227
|
+
const currentData = this.getData();
|
|
1228
|
+
if (!(0, sails_ng_common_70.isTypeFormComponentDefinition)(currentData)) {
|
|
1229
|
+
throw new Error(`Invalid FormComponentDefinition at '${this.formPathHelper.formPath.formConfig}': ${JSON.stringify(currentData)}`);
|
|
1230
|
+
}
|
|
1231
|
+
// NOTE: Leaving expressions form-level processing placeholder, currently unused and unimplemented.
|
|
1232
|
+
// Set the expressions
|
|
1233
|
+
item.expressions = [];
|
|
1234
|
+
const expressionNames = new Set();
|
|
1235
|
+
for (const exprData of currentData.expressions ?? []) {
|
|
1236
|
+
if (expressionNames.has(exprData.name)) {
|
|
1237
|
+
throw new Error(`Duplicate name in expression: ${exprData.name}`);
|
|
1238
|
+
}
|
|
1239
|
+
expressionNames.add(exprData.name);
|
|
1240
|
+
const exprItem = new sails_ng_common_15.FormExpressionsConfig();
|
|
1241
|
+
exprItem.name = exprData.name;
|
|
1242
|
+
exprItem.description = exprData.description;
|
|
1243
|
+
exprItem.config = exprData.config;
|
|
1244
|
+
if (!exprItem.config) {
|
|
1245
|
+
throw new Error(`Missing config for expression: ${exprData.name}`);
|
|
1246
|
+
}
|
|
1247
|
+
item.expressions.push(exprItem);
|
|
1248
|
+
}
|
|
1249
|
+
const itemName = item?.name ?? '';
|
|
1250
|
+
const itemDefaultValue = currentData?.model?.config?.defaultValue;
|
|
1251
|
+
// Merge the default value if form default values are being used and item has a default value.
|
|
1252
|
+
// Repeatable elementTemplate and descendants cannot declare a defaultValue.
|
|
1253
|
+
const isElementTemplate = this.isMostRecentRepeatableElementTemplate();
|
|
1254
|
+
const isElementTemplateDescendant = this.isRepeatableElementTemplateDescendant();
|
|
1255
|
+
if (!isElementTemplate && !isElementTemplateDescendant) {
|
|
1256
|
+
this.mergeDefaultValues(itemName, itemDefaultValue);
|
|
1257
|
+
}
|
|
1258
|
+
// Continue visiting
|
|
1259
|
+
this.formPathHelper.acceptFormComponentDefinition(item);
|
|
1260
|
+
}
|
|
1261
|
+
applyConstructPhaseTransform(formComponent) {
|
|
1262
|
+
if (this.formMode === 'view') {
|
|
1263
|
+
const className = formComponent?.component?.class;
|
|
1264
|
+
const shouldDeferToClientViewTransform = className === sails_ng_common_56.QuestionTreeComponentName ||
|
|
1265
|
+
className === sails_ng_common_4.RepeatableComponentName ||
|
|
1266
|
+
(className === sails_ng_common_3.GroupFieldComponentName && formComponent?.layout?.class !== sails_ng_common_11.ActionRowLayoutName);
|
|
1267
|
+
if (shouldDeferToClientViewTransform) {
|
|
1268
|
+
return formComponent;
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
return this.formOverride.applyOverrideTransform(formComponent, this.formMode, {
|
|
1272
|
+
phase: 'construct',
|
|
1273
|
+
reusableFormDefs: this.reusableFormDefs,
|
|
1274
|
+
});
|
|
1275
|
+
}
|
|
1276
|
+
ensureRichTextViewOverride(item) {
|
|
1277
|
+
const allowModes = item?.constraints?.allowModes;
|
|
1278
|
+
const hasExplicitViewMode = Array.isArray(allowModes) && allowModes.includes('view');
|
|
1279
|
+
const existingViewComponent = item?.overrides?.formModeClasses?.view?.component;
|
|
1280
|
+
if (!hasExplicitViewMode || existingViewComponent !== undefined) {
|
|
1281
|
+
return;
|
|
1282
|
+
}
|
|
1283
|
+
item.overrides = {
|
|
1284
|
+
...(item.overrides ?? {}),
|
|
1285
|
+
formModeClasses: {
|
|
1286
|
+
...(item.overrides?.formModeClasses ?? {}),
|
|
1287
|
+
view: {
|
|
1288
|
+
...(item.overrides?.formModeClasses?.view ?? {}),
|
|
1289
|
+
component: sails_ng_common_16.ContentComponentName,
|
|
1290
|
+
},
|
|
1291
|
+
},
|
|
1292
|
+
};
|
|
1293
|
+
}
|
|
1294
|
+
/**
|
|
1295
|
+
* Set the model value from the record values.
|
|
1296
|
+
* @param item The field model component instance.
|
|
1297
|
+
* @param config The field model form config.
|
|
1298
|
+
* @protected
|
|
1299
|
+
*/
|
|
1300
|
+
setModelValue(item, config) {
|
|
1301
|
+
// Use defaultValue in form config, not value.
|
|
1302
|
+
if (item?.config?.value !== undefined || config?.value !== undefined) {
|
|
1303
|
+
throw new Error(`${this.logName}: Use 'model.config.defaultValue' in form config ` +
|
|
1304
|
+
`instead of 'model.config.value' - item: ${JSON.stringify(item)} config: ${JSON.stringify(config)}`);
|
|
1305
|
+
}
|
|
1306
|
+
if (item.config === null || item.config === undefined) {
|
|
1307
|
+
throw new Error(`${this.logName}: Missing config for item: ${JSON.stringify(item)}`);
|
|
1308
|
+
}
|
|
1309
|
+
const isElementTemplate = this.isMostRecentRepeatableElementTemplate();
|
|
1310
|
+
const isElementTemplateDescendant = this.isRepeatableElementTemplateDescendant();
|
|
1311
|
+
// Only elementTemplates can use newEntryValue.
|
|
1312
|
+
if (!isElementTemplate && (item.config.newEntryValue !== undefined || config?.newEntryValue !== undefined)) {
|
|
1313
|
+
throw new Error(`${this.logName}: Only repeatable elementTemplates can define 'model.config.newEntryValue', ` +
|
|
1314
|
+
`use 'model.config.defaultValue' in other places ` +
|
|
1315
|
+
`- item: ${JSON.stringify(item)} config: ${JSON.stringify(config)}`);
|
|
1316
|
+
}
|
|
1317
|
+
// The elementTemplate definitions cannot have a defaultValue.
|
|
1318
|
+
if (isElementTemplate && (item.config.defaultValue !== undefined || config?.defaultValue !== undefined)) {
|
|
1319
|
+
throw new Error(`${this.logName}: Set the repeatable elementTemplate new item default ` +
|
|
1320
|
+
`using 'elementTemplate.model.config.newEntryValue', not 'elementTemplate.model.config.defaultValue', ` +
|
|
1321
|
+
`set the repeatable default in 'repeatable.model.config.defaultValue' ` +
|
|
1322
|
+
`- item: ${JSON.stringify(item)} config: ${JSON.stringify(config)}`);
|
|
1323
|
+
}
|
|
1324
|
+
// Components in an elementTemplate cannot set default values.
|
|
1325
|
+
if (isElementTemplateDescendant && (item.config.defaultValue !== undefined || config?.defaultValue !== undefined)) {
|
|
1326
|
+
throw new Error(`${this.logName}: Set the repeatable elementTemplate descendant component new item default ` +
|
|
1327
|
+
`using 'elementTemplate.model.config.newEntryValue', ` +
|
|
1328
|
+
`set the repeatable default in 'repeatable.model.config.defaultValue', ` +
|
|
1329
|
+
`not the descendant components ` +
|
|
1330
|
+
`- item: ${JSON.stringify(item)} config: ${JSON.stringify(config)}`);
|
|
1331
|
+
}
|
|
1332
|
+
// Set the model.config.value or new item value
|
|
1333
|
+
if (isElementTemplate) {
|
|
1334
|
+
item.config.newEntryValue = config?.newEntryValue;
|
|
1335
|
+
}
|
|
1336
|
+
else if (!isElementTemplateDescendant) {
|
|
1337
|
+
// NOTE: It is useless to set the model.config.value on an elementTemplate or a descendant component.
|
|
1338
|
+
// The top-most repeatable must have either:
|
|
1339
|
+
// - no value, in which case the elementTemplate.model.config.newEntryValue will be used if one item is added by default; or
|
|
1340
|
+
// - a value, which will be used to populate the entire repeatable and so any value on nested components will be ignored.
|
|
1341
|
+
item.config.value = this.currentModelValue();
|
|
1342
|
+
// Remove the defaultValue property.
|
|
1343
|
+
if (item?.config && 'defaultValue' in item.config) {
|
|
1344
|
+
delete item.config.defaultValue;
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
/**
|
|
1349
|
+
* Get the value for the current data model path.
|
|
1350
|
+
* @param itemDefaultValue The default value if there is no existing value.
|
|
1351
|
+
* @protected
|
|
1352
|
+
*/
|
|
1353
|
+
currentModelValue(itemDefaultValue) {
|
|
1354
|
+
// Use the collected default value if form config default values are being used, otherwise, use the record values.
|
|
1355
|
+
const useFormConfigDefaultValues = this.recordValues === null;
|
|
1356
|
+
const defaultValue = this.currentDefaultValue(itemDefaultValue);
|
|
1357
|
+
const recordValue = this.currentRecordValue();
|
|
1358
|
+
// For debugging:
|
|
1359
|
+
// this.logger.info(`currentModelValue itemDefaultValue ${JSON.stringify(itemDefaultValue)} defaultValue ${JSON.stringify(defaultValue)} recordValue ${JSON.stringify(recordValue)} formPath ${JSON.stringify(this.formPathHelper.formPath.dataModel)}`);
|
|
1360
|
+
return useFormConfigDefaultValues ? defaultValue : recordValue;
|
|
1361
|
+
}
|
|
1362
|
+
/**
|
|
1363
|
+
* Get the default value for the current data model path.
|
|
1364
|
+
* @param itemDefaultValue The default value if no default value was provided in the form config.
|
|
1365
|
+
* @protected
|
|
1366
|
+
*/
|
|
1367
|
+
currentDefaultValue(itemDefaultValue) {
|
|
1368
|
+
const dataModelPath = this.formPathHelper.formPath.dataModel;
|
|
1369
|
+
return (0, lodash_1.cloneDeep)((0, lodash_1.get)(this.extractedDefaultValues, dataModelPath, itemDefaultValue));
|
|
1370
|
+
}
|
|
1371
|
+
/**
|
|
1372
|
+
* Get the record / existing value for the current data model path.
|
|
1373
|
+
* @protected
|
|
1374
|
+
*/
|
|
1375
|
+
currentRecordValue() {
|
|
1376
|
+
const dataModelPath = this.formPathHelper.formPath.dataModel;
|
|
1377
|
+
return (0, lodash_1.cloneDeep)((0, lodash_1.get)(this.recordValues, dataModelPath, undefined));
|
|
1378
|
+
}
|
|
1379
|
+
/**
|
|
1380
|
+
* Check whether the current form config path matches the
|
|
1381
|
+
* most recent repeatable element template path.
|
|
1382
|
+
* @protected
|
|
1383
|
+
*/
|
|
1384
|
+
isMostRecentRepeatableElementTemplate() {
|
|
1385
|
+
const mostRecent = this.mostRecentRepeatableElementTemplatePath ?? [];
|
|
1386
|
+
const formConfig = this.formPathHelper.formPath.formConfig;
|
|
1387
|
+
if (!mostRecent || mostRecent.length === 0 || !formConfig || formConfig.length === 0) {
|
|
1388
|
+
return false;
|
|
1389
|
+
}
|
|
1390
|
+
// Either array can have 'component', 'model', 'layout' at the end and
|
|
1391
|
+
// still match if the other array is one item shorter.
|
|
1392
|
+
const allowedExtras = ['component', 'model', 'layout'];
|
|
1393
|
+
if (mostRecent.length === formConfig.length) {
|
|
1394
|
+
return mostRecent.every((value, index) => value === formConfig[index]);
|
|
1395
|
+
}
|
|
1396
|
+
else if (mostRecent.length === formConfig.length - 1) {
|
|
1397
|
+
return (allowedExtras.includes(formConfig[formConfig.length - 1]) &&
|
|
1398
|
+
mostRecent.every((value, index) => value === formConfig[index]));
|
|
1399
|
+
}
|
|
1400
|
+
else if (mostRecent.length - 1 === formConfig.length) {
|
|
1401
|
+
return (allowedExtras.includes(mostRecent[mostRecent.length - 1]) &&
|
|
1402
|
+
formConfig.every((value, index) => value === mostRecent[index]));
|
|
1403
|
+
}
|
|
1404
|
+
return false;
|
|
1405
|
+
}
|
|
1406
|
+
/**
|
|
1407
|
+
* Check whether the current form config path is a descendant (and not a match)
|
|
1408
|
+
* of the most recent repeatable element template path.
|
|
1409
|
+
* @protected
|
|
1410
|
+
*/
|
|
1411
|
+
isRepeatableElementTemplateDescendant() {
|
|
1412
|
+
const mostRecentPath = this.mostRecentRepeatableElementTemplatePath ?? [];
|
|
1413
|
+
const formConfigPath = this.formPathHelper.formPath.formConfig;
|
|
1414
|
+
if (!mostRecentPath || mostRecentPath.length === 0 || !formConfigPath || formConfigPath.length === 0) {
|
|
1415
|
+
return false;
|
|
1416
|
+
}
|
|
1417
|
+
// The formConfig path might have ["[component|model|layout]", "config"] at the end (2 additional items),
|
|
1418
|
+
// but only the path up to ["config", "elementTemplate"] is relevant for this check.
|
|
1419
|
+
if (formConfigPath.length + 2 <= mostRecentPath.length) {
|
|
1420
|
+
return false;
|
|
1421
|
+
}
|
|
1422
|
+
return mostRecentPath.every((value, index) => value === formConfigPath[index]);
|
|
1423
|
+
}
|
|
1424
|
+
/**
|
|
1425
|
+
* Merge the items' default value into the intermediate values.
|
|
1426
|
+
* @param itemName The item name.
|
|
1427
|
+
* @param itemDefaultValue The item's default value.
|
|
1428
|
+
* @protected
|
|
1429
|
+
*/
|
|
1430
|
+
mergeDefaultValues(itemName, itemDefaultValue) {
|
|
1431
|
+
const isElementTemplate = this.isMostRecentRepeatableElementTemplate();
|
|
1432
|
+
const isElementTemplateDescendant = this.isRepeatableElementTemplateDescendant();
|
|
1433
|
+
if (isElementTemplate || isElementTemplateDescendant) {
|
|
1434
|
+
throw new Error(`${this.logName}: Cannot merge default values for a repeatable elementTemplate or descendants ` +
|
|
1435
|
+
`- itemName: ${JSON.stringify(itemName)} itemDefaultValue: ${JSON.stringify(itemDefaultValue)}`);
|
|
1436
|
+
}
|
|
1437
|
+
if (itemName && itemDefaultValue !== undefined) {
|
|
1438
|
+
// Set the default value at the current data model path.
|
|
1439
|
+
// This makes it easier to merge defaults.
|
|
1440
|
+
const dataModelPath = this.formPathHelper.formPath.dataModel;
|
|
1441
|
+
const dataModelWithDefaultValue = (0, lodash_1.set)({}, dataModelPath, itemDefaultValue);
|
|
1442
|
+
// Merging is only needed if there is a default value.
|
|
1443
|
+
if (dataModelWithDefaultValue !== undefined) {
|
|
1444
|
+
// Use lodash mergeWith because it will recurse into nested objects and arrays.
|
|
1445
|
+
// Object.assign and the spread operator do not recurse.
|
|
1446
|
+
// The lodash mergeWith also allows specifying how to handle arrays, which we need to handle in a special way.
|
|
1447
|
+
(0, lodash_1.mergeWith)(this.extractedDefaultValues, dataModelWithDefaultValue, (objValue, srcValue) => {
|
|
1448
|
+
// merge approach for arrays is to choose the source array,
|
|
1449
|
+
// or the one that is an array if the other isn't
|
|
1450
|
+
if (Array.isArray(objValue) && Array.isArray(srcValue)) {
|
|
1451
|
+
return srcValue;
|
|
1452
|
+
}
|
|
1453
|
+
else if (Array.isArray(objValue) && !Array.isArray(srcValue)) {
|
|
1454
|
+
return objValue;
|
|
1455
|
+
}
|
|
1456
|
+
else if (!Array.isArray(objValue) && Array.isArray(srcValue)) {
|
|
1457
|
+
return srcValue;
|
|
1458
|
+
}
|
|
1459
|
+
// undefined = use the default merge approach
|
|
1460
|
+
return undefined;
|
|
1461
|
+
});
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
sanitizeMapEnabledModes(rawModes, source) {
|
|
1466
|
+
const fallback = ['point', 'polygon', 'linestring', 'rectangle', 'select'];
|
|
1467
|
+
if (!Array.isArray(rawModes)) {
|
|
1468
|
+
return fallback;
|
|
1469
|
+
}
|
|
1470
|
+
const validModes = [];
|
|
1471
|
+
const invalidModes = [];
|
|
1472
|
+
for (const mode of rawModes) {
|
|
1473
|
+
if (mode === 'point' ||
|
|
1474
|
+
mode === 'polygon' ||
|
|
1475
|
+
mode === 'linestring' ||
|
|
1476
|
+
mode === 'rectangle' ||
|
|
1477
|
+
mode === 'select') {
|
|
1478
|
+
validModes.push(mode);
|
|
1479
|
+
}
|
|
1480
|
+
else {
|
|
1481
|
+
invalidModes.push(mode);
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
if (invalidModes.length > 0) {
|
|
1485
|
+
this.logger.warn(`${this.logName}: Map ${source} dropped unsupported enabledModes values at ${JSON.stringify(this.formPathHelper.formPath.formConfig)}: ${JSON.stringify(invalidModes)}.`);
|
|
1486
|
+
}
|
|
1487
|
+
return validModes;
|
|
1488
|
+
}
|
|
1489
|
+
getData() {
|
|
1490
|
+
const formConfigData = this.data;
|
|
1491
|
+
const formConfigPath = this.formPathHelper.formPath.formConfig;
|
|
1492
|
+
if (!formConfigPath || formConfigPath.length < 1) {
|
|
1493
|
+
return formConfigData;
|
|
1494
|
+
}
|
|
1495
|
+
return (0, lodash_1.get)(formConfigData, formConfigPath.map(i => i.toString()));
|
|
1496
|
+
}
|
|
1497
|
+
}
|
|
1498
|
+
exports.ConstructFormConfigVisitor = ConstructFormConfigVisitor;
|
|
1499
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0LnZpc2l0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmlzaXRvci9jb25zdHJ1Y3QudmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0c7QUFDcEcsc0VBQStFO0FBRS9FLHNFQUFxRTtBQUVyRSxzRUFRMEM7QUFDMUMsc0VBVzBDO0FBQzFDLHNFQUkwQztBQUMxQyxzRUFBb0c7QUFDcEcsc0VBUTBDO0FBQzFDLHNFQUFnSDtBQUNoSCxzRUFJMEM7QUFDMUMsdUVBQTRFO0FBQzVFLHVFQUkwQztBQUMxQyx1RUFBOEU7QUFDOUUsdUVBSTBDO0FBQzFDLHVFQUEyRTtBQUMzRSx1RUFBeUU7QUFLekUsdUVBSzBDO0FBQzFDLHVFQVEwQztBQUMxQyx1RUFBaUc7QUFDakcsdUVBZ0IwQztBQUMxQyx1RUFNMEM7QUFDMUMsdUVBUzBDO0FBQzFDLHVFQUkwQztBQUMxQyx1RUFRMEM7QUFDMUMsdUVBQTBHO0FBQzFHLHVFQVEwQztBQUMxQyx1RUFBc0g7QUFDdEgsdUVBUzBDO0FBQzFDLHVFQUFnRztBQUNoRyx1RUFRMEM7QUFDMUMsdUVBQThHO0FBQzlHLHVFQVEwQztBQUMxQyx1RUFBd0c7QUFDeEcsdUVBSzBDO0FBQzFDLHVFQUErRjtBQUMvRix1RUFRMEM7QUFDMUMsdUVBQWtIO0FBQ2xILHVFQUswQztBQUMxQyx1RUFBa0c7QUFDbEcsdUVBUTBDO0FBQzFDLHVFQUcwQztBQUMxQyx1RUFBK0U7QUFDL0UsdUVBUTBDO0FBQzFDLHVFQUFvSDtBQUNwSCx1RUFRMEM7QUFDMUMsdUVBQXNIO0FBQ3RILHVFQVEwQztBQUMxQyx1RUFBb0g7QUFDcEgsdUVBUTBDO0FBQzFDLHVFQUFrSDtBQUNsSCx1RUFRMEM7QUFDMUMsdUVBQXNIO0FBQ3RILHVFQVEwQztBQUMxQyx1RUFBOEc7QUFDOUcsdUVBUTBDO0FBQzFDLHVFQUE0RztBQUM1Ryx1RUFRMEM7QUFDMUMsdUVBQWtIO0FBQ2xILHVF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
|