@saltcorn/server 1.6.0-alpha.0 → 1.6.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1243) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/app.js +13 -9
  3. package/auth/admin.js +30 -15
  4. package/auth/routes.js +1 -1
  5. package/docs/assets/hierarchy.js +1 -1
  6. package/docs/assets/icons.js +1 -1
  7. package/docs/assets/icons.svg +1 -1
  8. package/docs/assets/navigation.js +1 -1
  9. package/docs/assets/search.js +1 -1
  10. package/docs/assets/style.css +3 -3
  11. package/docs/classes/_saltcorn_admin-models.models_snapshot.Snapshot.html +2 -2
  12. package/docs/classes/_saltcorn_common-code.relations_relation.Relation.html +3 -3
  13. package/docs/classes/_saltcorn_common-code.relations_relations_finder.RelationsFinder.html +5 -5
  14. package/docs/classes/_saltcorn_data.diagram_cy_raster.CytoscapeRaster.html +4 -4
  15. package/docs/classes/_saltcorn_data.diagram_nodes_dummy_node.DummyNode.html +4 -4
  16. package/docs/classes/_saltcorn_data.diagram_nodes_node.Node.html +4 -4
  17. package/docs/classes/_saltcorn_data.diagram_nodes_page_node.PageNode.html +4 -4
  18. package/docs/classes/_saltcorn_data.diagram_nodes_table_node.TableNode.html +4 -4
  19. package/docs/classes/_saltcorn_data.diagram_nodes_trigger_node.TriggerNode.html +4 -4
  20. package/docs/classes/_saltcorn_data.diagram_nodes_view_node.ViewNode.html +4 -4
  21. package/docs/classes/_saltcorn_data.mobile-mocks_node_async_hooks.AsyncLocalStorage.html +2 -2
  22. package/docs/classes/_saltcorn_data.models_crash.Crash.html +2 -2
  23. package/docs/classes/_saltcorn_data.models_eventlog.EventLog.html +2 -2
  24. package/docs/classes/_saltcorn_data.models_field.Field.html +9 -9
  25. package/docs/classes/_saltcorn_data.models_fieldrepeat.FieldRepeat.html +2 -2
  26. package/docs/classes/_saltcorn_data.models_file.File.html +21 -21
  27. package/docs/classes/_saltcorn_data.models_form.Form.html +3 -2
  28. package/docs/classes/_saltcorn_data.models_internal_mail_queue.MailQueue.html +4 -4
  29. package/docs/classes/_saltcorn_data.models_internal_push_message_helper.PushMessageHelper.html +16 -9
  30. package/docs/classes/_saltcorn_data.models_library.Library.html +2 -2
  31. package/docs/classes/_saltcorn_data.models_model.Model.html +2 -2
  32. package/docs/classes/_saltcorn_data.models_model_instance.ModelInstance.html +2 -2
  33. package/docs/classes/_saltcorn_data.models_notification.Notification.html +2 -2
  34. package/docs/classes/_saltcorn_data.models_page.Page.html +11 -11
  35. package/docs/classes/_saltcorn_data.models_page_group.PageGroup.html +16 -16
  36. package/docs/classes/_saltcorn_data.models_page_group_member.PageGroupMember.html +8 -8
  37. package/docs/classes/_saltcorn_data.models_plugin.Plugin.html +13 -10
  38. package/docs/classes/_saltcorn_data.models_role.Role.html +2 -2
  39. package/docs/classes/_saltcorn_data.models_table.Table.html +73 -69
  40. package/docs/classes/_saltcorn_data.models_table_constraints.TableConstraint.html +2 -2
  41. package/docs/classes/_saltcorn_data.models_tag.Tag.html +2 -2
  42. package/docs/classes/_saltcorn_data.models_tag_entry.TagEntry.html +2 -2
  43. package/docs/classes/_saltcorn_data.models_trigger.Trigger.html +19 -19
  44. package/docs/classes/_saltcorn_data.models_user.User.html +32 -32
  45. package/docs/classes/_saltcorn_data.models_view.View.html +15 -15
  46. package/docs/classes/_saltcorn_data.models_workflow.Workflow.html +2 -2
  47. package/docs/classes/_saltcorn_data.models_workflow_run.WorkflowRun.html +2 -2
  48. package/docs/classes/_saltcorn_data.models_workflow_step.WorkflowStep.html +3 -2
  49. package/docs/classes/_saltcorn_data.models_workflow_trace.MetaData.html +2 -2
  50. package/docs/classes/_saltcorn_data.models_workflow_trace.WorkflowTrace.html +2 -2
  51. package/docs/classes/_saltcorn_mobile-builder.mobile-builder.MobileBuilder.html +8 -3
  52. package/docs/classes/_saltcorn_mobile-builder.utils_capacitor-helper.CapacitorHelper.html +2 -2
  53. package/docs/enums/_saltcorn_common-code.relations_relation_types.RelationType.html +2 -2
  54. package/docs/enums/_saltcorn_common-code.relations_relation_types.ViewDisplayType.html +2 -2
  55. package/docs/functions/_saltcorn_admin-models.models_config-check.runConfigurationCheck.html +1 -1
  56. package/docs/functions/_saltcorn_common-code.relations_relation_helpers.buildRelationPath.html +1 -1
  57. package/docs/functions/_saltcorn_common-code.relations_relation_helpers.buildTableCaches.html +1 -1
  58. package/docs/functions/_saltcorn_common-code.relations_relation_helpers.parseLegacyRelation.html +1 -1
  59. package/docs/functions/_saltcorn_common-code.relations_relation_helpers.parseRelationPath.html +1 -1
  60. package/docs/functions/_saltcorn_common-code.tests_test_data.fixturesData.html +1 -1
  61. package/docs/functions/_saltcorn_common-code.tests_test_data.withAnotherUserField.html +1 -1
  62. package/docs/functions/_saltcorn_common-code.tests_test_data.withKeyFromLayerThree.html +1 -1
  63. package/docs/functions/_saltcorn_common-code.tests_test_data.withKeyFromLayerTwo.html +1 -1
  64. package/docs/functions/_saltcorn_common-code.tests_test_data.withMultipleInbounds.html +1 -1
  65. package/docs/functions/_saltcorn_common-code.tests_test_data.withSecondTopicField.html +1 -1
  66. package/docs/functions/_saltcorn_common-code.tests_test_data.withSimplePostTopicrelation.html +1 -1
  67. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.action_link.html +1 -1
  68. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.action_url.html +1 -1
  69. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.fill_presets.html +1 -1
  70. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.getForm.html +1 -1
  71. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.get_view_link_query.html +1 -1
  72. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.get_viewable_fields.html +1 -1
  73. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.get_viewable_fields_from_layout.html +1 -1
  74. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.make_link.html +2 -2
  75. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.objToQueryString.html +1 -1
  76. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.parse_view_select.html +3 -3
  77. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.setDateLocales.html +1 -1
  78. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.splitUniques.html +1 -1
  79. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.standardBlockDispatch.html +1 -1
  80. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.standardLayoutRowVisitor.html +1 -1
  81. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.transformForm.html +1 -1
  82. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.updateViewSelect.html +2 -2
  83. package/docs/functions/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.view_linker.html +2 -2
  84. package/docs/functions/_saltcorn_data.db_connect_mobile.getConnectObject.html +1 -1
  85. package/docs/functions/_saltcorn_data.db_reset_schema.reset.html +3 -3
  86. package/docs/functions/_saltcorn_data.diagram_cy_generate_utils.generateCyCode.html +1 -1
  87. package/docs/functions/_saltcorn_data.diagram_cy_generate_utils.genereateCyCfg.html +1 -1
  88. package/docs/functions/_saltcorn_data.diagram_node_extract_utils.buildObjectTrees.html +1 -1
  89. package/docs/functions/_saltcorn_data.diagram_node_extract_utils.extractFromColumns.html +1 -1
  90. package/docs/functions/_saltcorn_data.diagram_node_extract_utils.extractFromLayout.html +1 -1
  91. package/docs/functions/_saltcorn_data.diagram_node_extract_utils.extractViewToCreate.html +1 -1
  92. package/docs/functions/_saltcorn_data.migrate.create_blank_migration.html +1 -1
  93. package/docs/functions/_saltcorn_data.migrate.getMigrationsInDB.html +1 -1
  94. package/docs/functions/_saltcorn_data.migrate.migrate.html +3 -3
  95. package/docs/functions/_saltcorn_data.migrations_202102091312.js.html +1 -1
  96. package/docs/functions/_saltcorn_data.migrations_202210051058.js.html +1 -1
  97. package/docs/functions/_saltcorn_data.migrations_202210101540.js.html +1 -1
  98. package/docs/functions/_saltcorn_data.migrations_202304281224.js.html +1 -1
  99. package/docs/functions/_saltcorn_data.migrations_202307211459.js.html +1 -1
  100. package/docs/functions/_saltcorn_data.migrations_202502131103.js.html +1 -1
  101. package/docs/functions/_saltcorn_data.migrations_202508011455.js.html +1 -1
  102. package/docs/functions/_saltcorn_data.migrations_202510152058.js.html +1 -1
  103. package/docs/functions/_saltcorn_data.mobile-mocks_node_child_process.execSync.html +1 -1
  104. package/docs/functions/_saltcorn_data.mobile-mocks_node_fs.createReadStream.html +1 -1
  105. package/docs/functions/_saltcorn_data.mobile-mocks_node_fs.readdirSync.html +1 -1
  106. package/docs/functions/_saltcorn_data.mobile-mocks_node_fs.writeFileSync.html +1 -1
  107. package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.mkdir.html +1 -1
  108. package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.readFile.html +1 -1
  109. package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.stat.html +1 -1
  110. package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.unlink.html +1 -1
  111. package/docs/functions/_saltcorn_data.mobile-mocks_node_fs_promises.writeFile.html +1 -1
  112. package/docs/functions/_saltcorn_data.mobile-mocks_node_latest-version.latestVersion.html +1 -1
  113. package/docs/functions/_saltcorn_data.mobile-mocks_node_v8.deserialize.html +1 -1
  114. package/docs/functions/_saltcorn_data.mobile-mocks_node_v8.serialize.html +1 -1
  115. package/docs/functions/_saltcorn_data.mobile-mocks_npm_env-paths.envPaths.html +1 -1
  116. package/docs/functions/_saltcorn_data.model-helper.get_predictor.html +1 -1
  117. package/docs/functions/_saltcorn_data.model-helper.run_jupyter_model.html +1 -1
  118. package/docs/functions/_saltcorn_data.model-helper.shorten_trackback.html +1 -1
  119. package/docs/functions/_saltcorn_data.model-helper.write_csv.html +1 -1
  120. package/docs/functions/_saltcorn_data.models_internal_async_json_stream.async_json_stream.html +1 -1
  121. package/docs/functions/_saltcorn_data.models_internal_query.aggregation_query_fields.html +1 -1
  122. package/docs/functions/_saltcorn_data.models_internal_query.getAggAndField.html +1 -1
  123. package/docs/functions/_saltcorn_data.models_internal_query.joinfield_renamer.html +1 -1
  124. package/docs/functions/_saltcorn_data.models_internal_query.process_aggregations.html +1 -1
  125. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.buildKeyFromRelative.html +1 -1
  126. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.copyObject.html +1 -1
  127. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.deleteObject.html +1 -1
  128. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.downloadBuffer.html +1 -1
  129. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getPublicFileUrl.html +1 -1
  130. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getResolvedBucket.html +1 -1
  131. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getS3Client.html +1 -1
  132. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getServeUrl.html +1 -1
  133. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.getSignedFileUrl.html +1 -1
  134. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.headObject.html +1 -1
  135. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.isS3Enabled.html +1 -1
  136. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.listS3Folder.html +1 -1
  137. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.publicUrlToRelativePath.html +1 -1
  138. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.relativeKeyToPath.html +1 -1
  139. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.setObjectMetadata.html +1 -1
  140. package/docs/functions/_saltcorn_data.models_internal_s3_helpers.uploadBuffer.html +1 -1
  141. package/docs/functions/_saltcorn_data.models_internal_table_helper.boolExamples.html +1 -1
  142. package/docs/functions/_saltcorn_data.models_internal_table_helper.colorExamples.html +1 -1
  143. package/docs/functions/_saltcorn_data.models_internal_table_helper.floatExamples.html +1 -1
  144. package/docs/functions/_saltcorn_data.models_internal_table_helper.get_formula_examples.html +1 -1
  145. package/docs/functions/_saltcorn_data.models_internal_table_helper.intExamples.html +1 -1
  146. package/docs/functions/_saltcorn_data.models_internal_table_helper.stringExamples.html +1 -1
  147. package/docs/functions/_saltcorn_data.plugin-helper.build_schema_data.html +1 -1
  148. package/docs/functions/_saltcorn_data.plugin-helper.calcfldViewConfig.html +1 -1
  149. package/docs/functions/_saltcorn_data.plugin-helper.calcfldViewOptions.html +1 -1
  150. package/docs/functions/_saltcorn_data.plugin-helper.calcrelViewOptions.html +5 -5
  151. package/docs/functions/_saltcorn_data.plugin-helper.displayType.html +1 -1
  152. package/docs/functions/_saltcorn_data.plugin-helper.field_picker_fields.html +2 -2
  153. package/docs/functions/_saltcorn_data.plugin-helper.generate_joined_query.html +1 -1
  154. package/docs/functions/_saltcorn_data.plugin-helper.getActionConfigFields.html +2 -2
  155. package/docs/functions/_saltcorn_data.plugin-helper.get_child_views.html +2 -2
  156. package/docs/functions/_saltcorn_data.plugin-helper.get_inbound_relation_opts.html +2 -2
  157. package/docs/functions/_saltcorn_data.plugin-helper.get_inbound_self_relation_opts.html +1 -1
  158. package/docs/functions/_saltcorn_data.plugin-helper.get_link_view_opts.html +1 -1
  159. package/docs/functions/_saltcorn_data.plugin-helper.get_many_to_many_relation_opts.html +4 -4
  160. package/docs/functions/_saltcorn_data.plugin-helper.get_parent_views.html +2 -2
  161. package/docs/functions/_saltcorn_data.plugin-helper.initial_config_all_fields.html +2 -2
  162. package/docs/functions/_saltcorn_data.plugin-helper.json_list_to_external_table.html +2 -2
  163. package/docs/functions/_saltcorn_data.plugin-helper.link_view.html +1 -1
  164. package/docs/functions/_saltcorn_data.plugin-helper.pathToState.html +1 -1
  165. package/docs/functions/_saltcorn_data.plugin-helper.picked_fields_to_query.html +2 -2
  166. package/docs/functions/_saltcorn_data.plugin-helper.readState.html +2 -2
  167. package/docs/functions/_saltcorn_data.plugin-helper.readStateStrict.html +3 -3
  168. package/docs/functions/_saltcorn_data.plugin-helper.runCollabEvents.html +4 -4
  169. package/docs/functions/_saltcorn_data.plugin-helper.run_action_column.html +2 -2
  170. package/docs/functions/_saltcorn_data.plugin-helper.stateFieldsToQuery.html +2 -2
  171. package/docs/functions/_saltcorn_data.plugin-helper.stateFieldsToWhere.html +1 -1
  172. package/docs/functions/_saltcorn_data.plugin-helper.stateToQueryString.html +1 -1
  173. package/docs/functions/_saltcorn_data.plugin-helper.strictParseInt.html +2 -2
  174. package/docs/functions/_saltcorn_data.plugin-testing.auto_test_plugin.html +1 -1
  175. package/docs/functions/_saltcorn_data.plugin-testing.check_view_columns.html +1 -1
  176. package/docs/functions/_saltcorn_data.plugin-testing.generate_attributes.html +1 -1
  177. package/docs/functions/_saltcorn_data.standard-menu.create_standard_menu.html +1 -1
  178. package/docs/functions/_saltcorn_data.tests_assertions.assertIsErrorMsg.html +1 -1
  179. package/docs/functions/_saltcorn_data.tests_assertions.assertIsErrorsMsg.html +1 -1
  180. package/docs/functions/_saltcorn_data.tests_assertions.assertIsRow.html +1 -1
  181. package/docs/functions/_saltcorn_data.tests_assertions.assertIsSet.html +1 -1
  182. package/docs/functions/_saltcorn_data.tests_assertions.assertIsType.html +1 -1
  183. package/docs/functions/_saltcorn_data.tests_assertions.assertsIsSuccessMessage.html +1 -1
  184. package/docs/functions/_saltcorn_data.tests_assertions.assertsObjectIsUser.html +1 -1
  185. package/docs/functions/_saltcorn_data.tests_common_helpers.createAnotherUserField.html +1 -1
  186. package/docs/functions/_saltcorn_data.tests_common_helpers.createKeyFromLevelTwo.html +1 -1
  187. package/docs/functions/_saltcorn_data.tests_common_helpers.createLevelThreeInbound.html +1 -1
  188. package/docs/functions/_saltcorn_data.tests_common_helpers.createMultipleInbounds.html +1 -1
  189. package/docs/functions/_saltcorn_data.tests_common_helpers.createSecondTopicField.html +1 -1
  190. package/docs/functions/_saltcorn_data.tests_common_helpers.prepareEmployeeDepartment.html +1 -1
  191. package/docs/functions/_saltcorn_data.tests_common_helpers.prepareSimpleTopicPostRelation.html +1 -1
  192. package/docs/functions/_saltcorn_data.tests_remote_query_helper.deleteViewFromServer.html +1 -1
  193. package/docs/functions/_saltcorn_data.tests_remote_query_helper.prepareQueryEnviroment.html +1 -1
  194. package/docs/functions/_saltcorn_data.tests_remote_query_helper.sendViewToServer.html +1 -1
  195. package/docs/functions/_saltcorn_data.translate.hasLLM.html +1 -1
  196. package/docs/functions/_saltcorn_data.translate.translate.html +1 -1
  197. package/docs/functions/_saltcorn_db-common.internal.ftsFieldsSqlExpr.html +1 -1
  198. package/docs/functions/_saltcorn_db-common.internal.mkSelectOptions.html +1 -1
  199. package/docs/functions/_saltcorn_db-common.internal.mkWhere.html +1 -1
  200. package/docs/functions/_saltcorn_db-common.internal.orderByIsObject.html +1 -1
  201. package/docs/functions/_saltcorn_db-common.internal.orderByIsOperator.html +1 -1
  202. package/docs/functions/_saltcorn_db-common.internal.prefixFieldsInWhere.html +1 -1
  203. package/docs/functions/_saltcorn_db-common.internal.sqlBinOp.html +1 -1
  204. package/docs/functions/_saltcorn_db-common.internal.sqlFun.html +1 -1
  205. package/docs/functions/_saltcorn_db-common.internal.sqlsanitize.html +1 -1
  206. package/docs/functions/_saltcorn_db-common.internal.sqlsanitizeAllowDots.html +1 -1
  207. package/docs/functions/_saltcorn_db-common.internal.subSelectWhere.html +1 -1
  208. package/docs/functions/_saltcorn_db-common.multi-tenant.enable_multi_tenant.html +1 -1
  209. package/docs/functions/_saltcorn_db-common.multi-tenant.getRequestContext.html +1 -1
  210. package/docs/functions/_saltcorn_db-common.multi-tenant.getTenantSchema.html +1 -1
  211. package/docs/functions/_saltcorn_db-common.multi-tenant.init.html +1 -1
  212. package/docs/functions/_saltcorn_db-common.multi-tenant.is_it_multi_tenant.html +1 -1
  213. package/docs/functions/_saltcorn_db-common.multi-tenant.runWithTenant.html +1 -1
  214. package/docs/functions/_saltcorn_db-common.sqlite-commons.buildInsertBulkSql.html +1 -1
  215. package/docs/functions/_saltcorn_db-common.sqlite-commons.buildInsertSql.html +1 -1
  216. package/docs/functions/_saltcorn_db-common.sqlite-commons.commitAndBeginNewTransaction.html +1 -1
  217. package/docs/functions/_saltcorn_db-common.sqlite-commons.doCount.html +1 -1
  218. package/docs/functions/_saltcorn_db-common.sqlite-commons.doDeleteWhere.html +1 -1
  219. package/docs/functions/_saltcorn_db-common.sqlite-commons.doListScTables.html +1 -1
  220. package/docs/functions/_saltcorn_db-common.sqlite-commons.doListTables.html +1 -1
  221. package/docs/functions/_saltcorn_db-common.sqlite-commons.doListUserDefinedTables.html +1 -1
  222. package/docs/functions/_saltcorn_db-common.sqlite-commons.do_add_index.html +1 -1
  223. package/docs/functions/_saltcorn_db-common.sqlite-commons.do_drop_index.html +1 -1
  224. package/docs/functions/_saltcorn_db-common.sqlite-commons.mkVal.html +1 -1
  225. package/docs/functions/_saltcorn_db-common.sqlite-commons.openOrUseTransaction.html +1 -1
  226. package/docs/functions/_saltcorn_db-common.sqlite-commons.reprAsJson.html +1 -1
  227. package/docs/functions/_saltcorn_db-common.sqlite-commons.slugify.html +1 -1
  228. package/docs/functions/_saltcorn_db-common.sqlite-commons.tryCatchInTransaction.html +1 -1
  229. package/docs/functions/_saltcorn_db-common.sqlite-commons.whenTransactionisFree.html +1 -1
  230. package/docs/functions/_saltcorn_db-common.sqlite-commons.withTransaction.html +1 -1
  231. package/docs/functions/_saltcorn_markup.mktag.mkTag.html +1 -1
  232. package/docs/functions/_saltcorn_markup.tabs.tabs.html +1 -1
  233. package/docs/functions/_saltcorn_markup.workflow.renderWorkflow.html +2 -0
  234. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.androidFeatures.html +1 -1
  235. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.androidPermissions.html +1 -1
  236. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.buildTablesFile.html +1 -1
  237. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copyPrepopulatedDb.html +1 -1
  238. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copyServerFiles.html +1 -1
  239. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copyShareExtFiles.html +1 -1
  240. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copySiteLogo.html +1 -1
  241. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.copyTranslationFiles.html +1 -1
  242. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.createSqliteDb.html +1 -1
  243. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.extractDomain.html +1 -1
  244. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.generateAndroidVersionCode.html +1 -1
  245. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.hasAuthMethod.html +1 -1
  246. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyAndroidManifest.html +1 -1
  247. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyAppDelegate.html +1 -0
  248. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyConfigXml.html +1 -1
  249. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyGradleConfig.html +1 -1
  250. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyInfoPlist.html +1 -1
  251. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyShareViewController.html +1 -0
  252. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.modifyXcodeProjectFile.html +1 -1
  253. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepAppIcon.html +1 -1
  254. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareAppIcon.html +1 -1
  255. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareBuildDir.html +5 -3
  256. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareExportOptionsPlist.html +1 -1
  257. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareSplashIcon.html +1 -1
  258. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.prepareSplashPage.html +1 -1
  259. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.runAddEntitlementsScript.html +1 -0
  260. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeCapacitorConfig.html +1 -1
  261. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeCfgFile.html +1 -1
  262. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeDataExtractionRules.html +1 -1
  263. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeEntitlementsPlist.html +1 -0
  264. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writeNetworkSecurityConfig.html +1 -1
  265. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writePodfile.html +1 -1
  266. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.writePrivacyInfo.html +1 -1
  267. package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.bundleMobileAppCode.html +1 -1
  268. package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.bundlePackagesAndPlugins.html +1 -1
  269. package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.copyOptionalSource.html +1 -1
  270. package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.copyPluginMobileAppDirs.html +1 -1
  271. package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.copyPublicDirs.html +1 -1
  272. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.add_index.html +1 -1
  273. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.add_unique_constraint.html +1 -1
  274. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.count.html +1 -1
  275. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.deleteWhere.html +1 -1
  276. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.drop_index.html +1 -1
  277. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.drop_reset_schema.html +1 -1
  278. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.drop_unique_constraint.html +1 -1
  279. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.init.html +1 -1
  280. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.insert.html +1 -1
  281. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.insertRows.html +1 -1
  282. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.listScTables.html +1 -1
  283. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.listTables.html +1 -1
  284. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.listUserDefinedTables.html +1 -1
  285. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.query.html +1 -1
  286. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.select.html +1 -1
  287. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.selectMaybeOne.html +1 -1
  288. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.selectOne.html +1 -1
  289. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.setConnectionObject.html +1 -1
  290. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.tableExists.html +1 -1
  291. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.time.html +1 -1
  292. package/docs/functions/_saltcorn_sqlite-mobile.sqlite_capacitor.update.html +1 -1
  293. package/docs/functions/_saltcorn_sqlite.sqlite.add_index.html +1 -1
  294. package/docs/functions/_saltcorn_sqlite.sqlite.add_unique_constraint.html +1 -1
  295. package/docs/functions/_saltcorn_sqlite.sqlite.begin.html +1 -1
  296. package/docs/functions/_saltcorn_sqlite.sqlite.changeConnection.html +1 -1
  297. package/docs/functions/_saltcorn_sqlite.sqlite.close.html +1 -1
  298. package/docs/functions/_saltcorn_sqlite.sqlite.commit.html +1 -1
  299. package/docs/functions/_saltcorn_sqlite.sqlite.count.html +1 -1
  300. package/docs/functions/_saltcorn_sqlite.sqlite.deleteWhere.html +1 -1
  301. package/docs/functions/_saltcorn_sqlite.sqlite.dropTable.html +1 -1
  302. package/docs/functions/_saltcorn_sqlite.sqlite.dropTables.html +1 -1
  303. package/docs/functions/_saltcorn_sqlite.sqlite.drop_index.html +1 -1
  304. package/docs/functions/_saltcorn_sqlite.sqlite.drop_reset_schema.html +1 -1
  305. package/docs/functions/_saltcorn_sqlite.sqlite.drop_unique_constraint.html +1 -1
  306. package/docs/functions/_saltcorn_sqlite.sqlite.getVersion.html +1 -1
  307. package/docs/functions/_saltcorn_sqlite.sqlite.get_db_filepath.html +1 -1
  308. package/docs/functions/_saltcorn_sqlite.sqlite.get_sql_logging.html +1 -1
  309. package/docs/functions/_saltcorn_sqlite.sqlite.init.html +1 -1
  310. package/docs/functions/_saltcorn_sqlite.sqlite.insert.html +1 -1
  311. package/docs/functions/_saltcorn_sqlite.sqlite.listScTables.html +1 -1
  312. package/docs/functions/_saltcorn_sqlite.sqlite.listTables.html +1 -1
  313. package/docs/functions/_saltcorn_sqlite.sqlite.listUserDefinedTables.html +1 -1
  314. package/docs/functions/_saltcorn_sqlite.sqlite.query.html +1 -1
  315. package/docs/functions/_saltcorn_sqlite.sqlite.rollback.html +1 -1
  316. package/docs/functions/_saltcorn_sqlite.sqlite.select.html +1 -1
  317. package/docs/functions/_saltcorn_sqlite.sqlite.selectMaybeOne.html +1 -1
  318. package/docs/functions/_saltcorn_sqlite.sqlite.selectOne.html +1 -1
  319. package/docs/functions/_saltcorn_sqlite.sqlite.set_sql_logging.html +1 -1
  320. package/docs/functions/_saltcorn_sqlite.sqlite.sql_log.html +1 -1
  321. package/docs/functions/_saltcorn_sqlite.sqlite.update.html +1 -1
  322. package/docs/functions/_saltcorn_sqlite.sqlite.updateWhere.html +1 -1
  323. package/docs/functions/_saltcorn_types.base_types.instanceOWithHtmlFile.html +1 -1
  324. package/docs/functions/_saltcorn_types.base_types.instanceOfFieldViewEdit.html +1 -0
  325. package/docs/functions/_saltcorn_types.base_types.instanceOfFieldViewShow.html +1 -0
  326. package/docs/functions/_saltcorn_types.base_types.instanceOfPack.html +1 -0
  327. package/docs/functions/_saltcorn_types.common_types.instanceOfErrorMsg.html +1 -1
  328. package/docs/functions/_saltcorn_types.common_types.instanceOfSuccessMsg.html +1 -1
  329. package/docs/functions/_saltcorn_types.common_types.instanceOfType.html +1 -1
  330. package/docs/functions/_saltcorn_types.model-abstracts_abstract_field.instanceOfField.html +1 -1
  331. package/docs/functions/_saltcorn_types.model-abstracts_abstract_page.instanceOfPage.html +1 -1
  332. package/docs/functions/_saltcorn_types.model-abstracts_abstract_plugin.instanceOfPlugin.html +1 -0
  333. package/docs/functions/_saltcorn_types.model-abstracts_abstract_table.instanceOfTable.html +1 -0
  334. package/docs/functions/_saltcorn_types.model-abstracts_abstract_view.instanceOfView.html +1 -1
  335. package/docs/hierarchy.html +1 -1
  336. package/docs/index.html +4 -2
  337. package/docs/interfaces/_saltcorn_db-common.dbtypes.UserLike.html +2 -2
  338. package/docs/interfaces/_saltcorn_markup.types.TagExports.html +2 -2
  339. package/docs/interfaces/_saltcorn_mobile-builder.utils_common-build-utils.ScCapacitorConfig.html +2 -2
  340. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_field.AbstractField.html +2 -2
  341. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_field.AbstractFieldRepeat.html +2 -2
  342. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_form.AbstractForm.html +3 -2
  343. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_page.AbstractPage.html +2 -2
  344. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_page_group.AbstractPageGroup.html +2 -2
  345. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_page_group_member.AbstractPageGroupMember.html +2 -2
  346. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_plugin.AbstractPlugin.html +13 -0
  347. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_role.AbstractRole.html +2 -2
  348. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_table.AbstractTable.html +2 -2
  349. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_tag.AbstractTag.html +2 -2
  350. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_tag_entry.AbstractTagEntry.html +2 -2
  351. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_trigger.AbstractTrigger.html +2 -2
  352. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_user.AbstractUser.html +2 -2
  353. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_user.ForUserRequest.html +2 -2
  354. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_view.AbstractView.html +2 -2
  355. package/docs/interfaces/_saltcorn_types.model-abstracts_abstract_workflow.AbstractWorkflow.html +2 -2
  356. package/docs/modules/_saltcorn_admin-models.index.html +1 -1
  357. package/docs/modules/_saltcorn_common-code..html +1 -1
  358. package/docs/modules/_saltcorn_common-code.index.html +1 -1
  359. package/docs/modules/_saltcorn_common-code.relations_relation-1.html +1 -1
  360. package/docs/modules/_saltcorn_common-code.relations_relation_helpers-1.html +1 -1
  361. package/docs/modules/_saltcorn_common-code.relations_relation_types-1.html +1 -1
  362. package/docs/modules/_saltcorn_common-code.relations_relations_finder-1.html +1 -1
  363. package/docs/modules/_saltcorn_data..html +1 -1
  364. package/docs/modules/_saltcorn_data.base-plugin_actions-1.html +1 -1
  365. package/docs/modules/_saltcorn_data.base-plugin_fieldviews-1.html +1 -1
  366. package/docs/modules/_saltcorn_data.base-plugin_fieldviews.html +1 -1
  367. package/docs/modules/_saltcorn_data.base-plugin_fileview-1.html +1 -1
  368. package/docs/modules/_saltcorn_data.base-plugin_fileview.html +1 -1
  369. package/docs/modules/_saltcorn_data.base-plugin_index-1.html +1 -1
  370. package/docs/modules/_saltcorn_data.base-plugin_index-2.html +1 -1
  371. package/docs/modules/_saltcorn_data.base-plugin_types-1.html +1 -1
  372. package/docs/modules/_saltcorn_data.base-plugin_types.html +1 -1
  373. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_edit-1.html +1 -1
  374. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_feed-1.html +1 -1
  375. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_filter-1.html +1 -1
  376. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_list-1.html +1 -1
  377. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_listshowlist-1.html +1 -1
  378. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_room-2.html +1 -1
  379. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_room-3.html +1 -1
  380. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_show-1.html +1 -1
  381. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_viewable_fields-1.html +1 -2
  382. package/docs/modules/_saltcorn_data.base-plugin_viewtemplates_viewable_fields-2.html +1 -0
  383. package/docs/modules/_saltcorn_data.contract.html +1 -1
  384. package/docs/modules/_saltcorn_data.db_connect-1.html +1 -1
  385. package/docs/modules/_saltcorn_data.db_connect_mobile-1.html +1 -1
  386. package/docs/modules/_saltcorn_data.db_fa5-icons-1.html +1 -1
  387. package/docs/modules/_saltcorn_data.db_fixtures-1.html +1 -1
  388. package/docs/modules/_saltcorn_data.db_index-1.html +1 -1
  389. package/docs/modules/_saltcorn_data.db_index-2.html +1 -1
  390. package/docs/modules/_saltcorn_data.db_reset_schema-1.html +1 -1
  391. package/docs/modules/_saltcorn_data.db_state-1.html +1 -1
  392. package/docs/modules/_saltcorn_data.html +3 -2
  393. package/docs/modules/_saltcorn_data.index.html +1 -1
  394. package/docs/modules/{_saltcorn_data.tests_exact_views.test.html → _saltcorn_data.mobile-mocks_npm_apns2.html} +1 -1
  395. package/docs/modules/_saltcorn_data.mobile-mocks_npm_vm2.html +1 -0
  396. package/docs/modules/{_saltcorn_data.tests_workflow_run.test.html → _saltcorn_data.mobile-mocks_npm_xml2js.html} +1 -1
  397. package/docs/modules/_saltcorn_data.model-helper.html +2 -1
  398. package/docs/modules/_saltcorn_data.models_config-1.html +1 -1
  399. package/docs/modules/_saltcorn_data.models_config.configExports.html +1 -1
  400. package/docs/modules/_saltcorn_data.models_crash-1.html +1 -1
  401. package/docs/modules/_saltcorn_data.models_discovery-1.html +1 -1
  402. package/docs/modules/_saltcorn_data.models_email-1.html +1 -1
  403. package/docs/modules/_saltcorn_data.models_eventlog-1.html +1 -1
  404. package/docs/modules/_saltcorn_data.models_eventlog.EventLog.html +1 -1
  405. package/docs/modules/_saltcorn_data.models_expression-1.html +1 -1
  406. package/docs/modules/_saltcorn_data.models_field-1.html +1 -1
  407. package/docs/modules/_saltcorn_data.models_fieldrepeat-1.html +1 -1
  408. package/docs/modules/_saltcorn_data.models_file-1.html +1 -1
  409. package/docs/modules/_saltcorn_data.models_file.File.html +1 -1
  410. package/docs/modules/_saltcorn_data.models_form-1.html +1 -1
  411. package/docs/modules/_saltcorn_data.models_form.Form.html +1 -1
  412. package/docs/modules/_saltcorn_data.models_index-1.html +1 -1
  413. package/docs/modules/_saltcorn_data.models_index.html +1 -1
  414. package/docs/modules/_saltcorn_data.models_internal_async_json_stream-1.html +1 -1
  415. package/docs/modules/_saltcorn_data.models_internal_mail_queue-1.html +1 -1
  416. package/docs/modules/_saltcorn_data.models_internal_push_message_helper-1.html +1 -1
  417. package/docs/modules/_saltcorn_data.models_internal_push_message_helper.html +1 -1
  418. package/docs/modules/_saltcorn_data.models_internal_query-1.html +1 -1
  419. package/docs/modules/_saltcorn_data.models_internal_s3_helpers-1.html +1 -1
  420. package/docs/modules/_saltcorn_data.models_internal_table_helper-1.html +1 -1
  421. package/docs/modules/_saltcorn_data.models_layout-1.html +1 -1
  422. package/docs/modules/_saltcorn_data.models_library-1.html +1 -1
  423. package/docs/modules/_saltcorn_data.models_model-1.html +1 -1
  424. package/docs/modules/_saltcorn_data.models_model_instance-1.html +1 -1
  425. package/docs/modules/_saltcorn_data.models_notification-1.html +1 -1
  426. package/docs/modules/_saltcorn_data.models_page-1.html +1 -1
  427. package/docs/modules/_saltcorn_data.models_page_group-1.html +1 -1
  428. package/docs/modules/_saltcorn_data.models_page_group.PageGroup.html +1 -1
  429. package/docs/modules/_saltcorn_data.models_page_group_member-1.html +1 -1
  430. package/docs/modules/_saltcorn_data.models_plugin-1.html +1 -1
  431. package/docs/modules/_saltcorn_data.models_random-1.html +1 -1
  432. package/docs/modules/_saltcorn_data.models_role-1.html +1 -1
  433. package/docs/modules/_saltcorn_data.models_scheduler-1.html +1 -1
  434. package/docs/modules/_saltcorn_data.models_table-1.html +1 -1
  435. package/docs/modules/_saltcorn_data.models_table.Table.html +1 -1
  436. package/docs/modules/_saltcorn_data.models_table_constraints-1.html +1 -1
  437. package/docs/modules/_saltcorn_data.models_tag-1.html +1 -1
  438. package/docs/modules/_saltcorn_data.models_tag_entry-1.html +1 -1
  439. package/docs/modules/_saltcorn_data.models_tag_entry.TagEntry.html +1 -1
  440. package/docs/modules/_saltcorn_data.models_trigger-1.html +1 -1
  441. package/docs/modules/_saltcorn_data.models_user-1.html +1 -1
  442. package/docs/modules/_saltcorn_data.models_view-1.html +1 -1
  443. package/docs/modules/_saltcorn_data.models_view.View.html +1 -1
  444. package/docs/modules/_saltcorn_data.models_workflow-1.html +1 -1
  445. package/docs/modules/_saltcorn_data.models_workflow_run-1.html +1 -1
  446. package/docs/modules/_saltcorn_data.models_workflow_step-1.html +1 -1
  447. package/docs/modules/_saltcorn_data.models_workflow_trace-2.html +1 -1
  448. package/docs/modules/_saltcorn_data.models_workflow_trace-3.html +1 -1
  449. package/docs/modules/_saltcorn_data.standard-menu.html +2 -1
  450. package/docs/modules/_saltcorn_db-common..html +1 -1
  451. package/docs/modules/_saltcorn_db-common.index.html +1 -1
  452. package/docs/modules/_saltcorn_db-common.internal.html +1 -1
  453. package/docs/modules/_saltcorn_markup.emergency_layout.EmergencyLayoutExports.html +1 -1
  454. package/docs/modules/_saltcorn_markup.helpers.HelpersExports.html +1 -1
  455. package/docs/modules/_saltcorn_markup.html +1 -1
  456. package/docs/modules/_saltcorn_markup.index.html +1 -1
  457. package/docs/modules/_saltcorn_markup.layout.LayoutExports-1.html +1 -1
  458. package/docs/modules/_saltcorn_markup.layout.LayoutExports.html +1 -1
  459. package/docs/modules/_saltcorn_markup.mjml-layout.LayoutExports.html +1 -1
  460. package/docs/modules/_saltcorn_markup.table.TableExports.html +1 -1
  461. package/docs/{variables/_saltcorn_data.base-plugin_types.float.sql_name.html → modules/_saltcorn_markup.workflow.html} +1 -1
  462. package/docs/modules/_saltcorn_mobile-builder..html +1 -1
  463. package/docs/modules/_saltcorn_mobile-builder.index.html +1 -1
  464. package/docs/modules/_saltcorn_mobile-builder.utils_common-build-utils.html +1 -1
  465. package/docs/modules/_saltcorn_sqlite-mobile.index.html +1 -1
  466. package/docs/modules/_saltcorn_sqlite-mobile.sqlite_capacitor.html +1 -1
  467. package/docs/modules/_saltcorn_sqlite..html +1 -1
  468. package/docs/modules/_saltcorn_sqlite.index.html +1 -1
  469. package/docs/modules/_saltcorn_sqlite.sqlite.html +1 -1
  470. package/docs/modules/_saltcorn_types..Types.html +1 -1
  471. package/docs/modules/_saltcorn_types..html +1 -1
  472. package/docs/modules/_saltcorn_types.base_types.html +1 -1
  473. package/docs/modules/_saltcorn_types.index.html +1 -1
  474. package/docs/modules/_saltcorn_types.model-abstracts_abstract_event_log-1.html +1 -1
  475. package/docs/modules/_saltcorn_types.model-abstracts_abstract_field-1.html +1 -1
  476. package/docs/modules/_saltcorn_types.model-abstracts_abstract_form-1.html +1 -1
  477. package/docs/modules/_saltcorn_types.model-abstracts_abstract_library-1.html +1 -1
  478. package/docs/modules/_saltcorn_types.model-abstracts_abstract_model-1.html +1 -1
  479. package/docs/modules/_saltcorn_types.model-abstracts_abstract_model_instance-1.html +1 -1
  480. package/docs/modules/_saltcorn_types.model-abstracts_abstract_page-1.html +1 -1
  481. package/docs/modules/_saltcorn_types.model-abstracts_abstract_page_group-1.html +1 -1
  482. package/docs/modules/_saltcorn_types.model-abstracts_abstract_page_group_member-1.html +1 -1
  483. package/docs/modules/_saltcorn_types.model-abstracts_abstract_plugin-1.html +1 -1
  484. package/docs/modules/_saltcorn_types.model-abstracts_abstract_plugin.html +1 -1
  485. package/docs/modules/_saltcorn_types.model-abstracts_abstract_role-1.html +1 -1
  486. package/docs/modules/_saltcorn_types.model-abstracts_abstract_table-1.html +1 -1
  487. package/docs/modules/_saltcorn_types.model-abstracts_abstract_table.html +1 -1
  488. package/docs/modules/_saltcorn_types.model-abstracts_abstract_tag-1.html +1 -1
  489. package/docs/modules/_saltcorn_types.model-abstracts_abstract_tag_entry-1.html +1 -1
  490. package/docs/modules/_saltcorn_types.model-abstracts_abstract_trigger-1.html +1 -1
  491. package/docs/modules/_saltcorn_types.model-abstracts_abstract_user-1.html +1 -1
  492. package/docs/modules/_saltcorn_types.model-abstracts_abstract_view-1.html +1 -1
  493. package/docs/modules/_saltcorn_types.model-abstracts_abstract_workflow-1.html +1 -1
  494. package/docs/modules/_saltcorn_types.model-abstracts_abstract_workflow_run-1.html +1 -1
  495. package/docs/modules/_saltcorn_types.model-abstracts_abstract_workflow_step-1.html +1 -1
  496. package/docs/modules/_saltcorn_types.model-abstracts_abstract_workflow_trace-1.html +1 -1
  497. package/docs/modules/_saltcorn_types.model-abstracts_index-1.html +1 -1
  498. package/docs/modules/_saltcorn_types.model-abstracts_index.ModelAbstracts.html +1 -1
  499. package/docs/types/_saltcorn_data.diagram_node_extract_utils.ExtractOpts.html +2 -2
  500. package/docs/types/_saltcorn_data.diagram_node_extract_utils.ExtractResult.html +2 -2
  501. package/docs/types/_saltcorn_data.diagram_nodes_node.NodeType.html +1 -1
  502. package/docs/types/_saltcorn_data.models_config.ConfigTypes.html +1 -1
  503. package/docs/types/_saltcorn_data.models_config.SingleConfig.html +1 -1
  504. package/docs/types/_saltcorn_data.models_eventlog.EventLogCfg.html +2 -2
  505. package/docs/types/_saltcorn_data.models_file.FileCfg.html +2 -2
  506. package/docs/types/_saltcorn_data.models_form.AdditionalButton.html +1 -1
  507. package/docs/types/_saltcorn_data.models_form.FormCfg.html +3 -2
  508. package/docs/types/_saltcorn_data.models_internal_push_message_helper.MobileSubscription.html +4 -0
  509. package/docs/types/_saltcorn_data.models_internal_push_message_helper.WebPushSubscription.html +2 -2
  510. package/docs/types/_saltcorn_data.models_internal_s3_helpers.S3HeadResult.html +1 -1
  511. package/docs/types/_saltcorn_data.models_internal_s3_helpers.S3ListResult.html +2 -2
  512. package/docs/types/_saltcorn_data.models_page_group.ScreenInfoParams.html +2 -2
  513. package/docs/types/_saltcorn_data.models_table.ChildRelations.html +2 -2
  514. package/docs/types/_saltcorn_data.models_table.ParentRelations.html +2 -2
  515. package/docs/types/_saltcorn_data.models_table.RelationData.html +2 -2
  516. package/docs/types/_saltcorn_data.models_tag_entry.TagEntryCfg.html +1 -1
  517. package/docs/types/_saltcorn_data.models_view.FindViewsPred.html +1 -1
  518. package/docs/types/_saltcorn_db-common.dbtypes.AggregationOptions.html +2 -2
  519. package/docs/types/_saltcorn_db-common.dbtypes.CoordOpts.html +2 -2
  520. package/docs/types/_saltcorn_db-common.dbtypes.DatabaseClient.html +2 -2
  521. package/docs/types/_saltcorn_db-common.dbtypes.JoinField.html +2 -2
  522. package/docs/types/_saltcorn_db-common.dbtypes.JoinFields.html +1 -1
  523. package/docs/types/_saltcorn_db-common.dbtypes.JoinOptions.html +1 -1
  524. package/docs/types/_saltcorn_db-common.dbtypes.JsonPath.html +1 -1
  525. package/docs/types/_saltcorn_db-common.dbtypes.JsonPathElem.html +1 -1
  526. package/docs/types/_saltcorn_db-common.dbtypes.Operator.html +1 -1
  527. package/docs/types/_saltcorn_db-common.dbtypes.PartialSome.html +1 -1
  528. package/docs/types/_saltcorn_db-common.dbtypes.PrimaryKeyValue.html +1 -1
  529. package/docs/types/_saltcorn_db-common.dbtypes.Row.html +1 -1
  530. package/docs/types/_saltcorn_db-common.dbtypes.SelectOptions.html +4 -2
  531. package/docs/types/_saltcorn_db-common.dbtypes.StrongRow.html +1 -1
  532. package/docs/types/_saltcorn_db-common.dbtypes.SubselectOptions.html +2 -2
  533. package/docs/types/_saltcorn_db-common.dbtypes.Value.html +1 -1
  534. package/docs/types/_saltcorn_db-common.dbtypes.Where.html +2 -2
  535. package/docs/types/_saltcorn_db-common.sqlite-commons.SqlAndValues.html +2 -2
  536. package/docs/types/_saltcorn_db-common.types.DbExportsType.html +2 -2
  537. package/docs/types/_saltcorn_db-common.types.GenObj.html +1 -1
  538. package/docs/types/_saltcorn_markup.emergency_layout.WrapParams.html +2 -2
  539. package/docs/types/_saltcorn_markup.helpers.CheckBoxGroupOpts.html +2 -2
  540. package/docs/types/_saltcorn_markup.helpers.PaginationOpts.html +2 -2
  541. package/docs/types/_saltcorn_markup.helpers.RadioGroupOpts.html +2 -2
  542. package/docs/types/_saltcorn_markup.helpers.SearchBarOpts.html +2 -2
  543. package/docs/types/_saltcorn_markup.layout.RenderOpts-1.html +2 -2
  544. package/docs/types/_saltcorn_markup.layout.RenderOpts.html +2 -2
  545. package/docs/types/_saltcorn_markup.mjml-layout.RenderOpts.html +2 -2
  546. package/docs/types/_saltcorn_markup.table.HeadersParams.html +2 -2
  547. package/docs/types/_saltcorn_markup.table.OptsParams.html +3 -2
  548. package/docs/types/_saltcorn_markup.types.AttributeVal.html +1 -1
  549. package/docs/types/_saltcorn_markup.types.Attributes.html +2 -2
  550. package/docs/types/_saltcorn_markup.types.ClassVal.html +1 -1
  551. package/docs/types/_saltcorn_markup.types.Element.html +1 -1
  552. package/docs/types/_saltcorn_markup.types.Falsy.html +1 -1
  553. package/docs/types/_saltcorn_markup.types.StyleVal.html +1 -1
  554. package/docs/types/_saltcorn_markup.types.TagFunction.html +1 -1
  555. package/docs/types/_saltcorn_mobile-builder.mobile-builder.IosCfg.html +4 -3
  556. package/docs/types/_saltcorn_mobile-builder.utils_capacitor-helper.CapacitorCfg.html +2 -2
  557. package/docs/types/_saltcorn_types.base_types.Action.html +3 -3
  558. package/docs/types/_saltcorn_types.base_types.AuthenticationMethod.html +2 -2
  559. package/docs/types/_saltcorn_types.base_types.CalcJoinfield.html +2 -2
  560. package/docs/types/_saltcorn_types.base_types.CapacitorPlugin.html +2 -2
  561. package/docs/types/_saltcorn_types.base_types.CodePagePack.html +2 -2
  562. package/docs/types/_saltcorn_types.base_types.Column.html +16 -2
  563. package/docs/types/_saltcorn_types.base_types.ConnectObjType.html +2 -2
  564. package/docs/types/_saltcorn_types.base_types.ConnectedObjects.html +2 -2
  565. package/docs/types/_saltcorn_types.base_types.CopilotSkill.html +2 -2
  566. package/docs/types/_saltcorn_types.base_types.ErrorObj.html +2 -2
  567. package/docs/types/_saltcorn_types.base_types.FieldLike.html +1 -1
  568. package/docs/types/_saltcorn_types.base_types.FieldView.html +1 -1
  569. package/docs/types/_saltcorn_types.base_types.Header.html +2 -2
  570. package/docs/types/_saltcorn_types.base_types.JoinFieldOption.html +2 -2
  571. package/docs/types/_saltcorn_types.base_types.Layout.html +1 -1
  572. package/docs/types/_saltcorn_types.base_types.MenuItem.html +22 -0
  573. package/docs/types/_saltcorn_types.base_types.MobileConfig.html +3 -2
  574. package/docs/types/_saltcorn_types.base_types.ModelPattern.html +6 -6
  575. package/docs/types/_saltcorn_types.base_types.Pack.html +2 -2
  576. package/docs/types/_saltcorn_types.base_types.Plugin.html +1 -1
  577. package/docs/types/_saltcorn_types.base_types.PluginFunction.html +2 -2
  578. package/docs/types/_saltcorn_types.base_types.PluginLayout.html +2 -2
  579. package/docs/types/_saltcorn_types.base_types.PluginRoute.html +2 -2
  580. package/docs/types/_saltcorn_types.base_types.PluginSourceType.html +1 -1
  581. package/docs/types/_saltcorn_types.base_types.PluginType.html +5 -2
  582. package/docs/types/_saltcorn_types.base_types.PluginWrap.html +1 -1
  583. package/docs/types/_saltcorn_types.base_types.PluginWrapArg.html +2 -2
  584. package/docs/types/_saltcorn_types.base_types.RelationOption.html +2 -2
  585. package/docs/types/_saltcorn_types.base_types.Req.html +2 -2
  586. package/docs/types/_saltcorn_types.base_types.Res.html +2 -2
  587. package/docs/types/_saltcorn_types.base_types.ResultType.html +2 -2
  588. package/docs/types/_saltcorn_types.base_types.RouteAction.html +1 -1
  589. package/docs/types/_saltcorn_types.base_types.RunExtra.html +1 -1
  590. package/docs/types/_saltcorn_types.base_types.SlugStepType.html +2 -2
  591. package/docs/types/_saltcorn_types.base_types.StepResType.html +1 -1
  592. package/docs/types/_saltcorn_types.base_types.SubField.html +2 -2
  593. package/docs/types/_saltcorn_types.base_types.TableProvider.html +2 -2
  594. package/docs/types/_saltcorn_types.base_types.TableQuery.html +2 -2
  595. package/docs/types/_saltcorn_types.base_types.Tablely.html +1 -1
  596. package/docs/types/_saltcorn_types.base_types.ViewTemplate.html +3 -2
  597. package/docs/types/_saltcorn_types.common_types.ErrorMessage.html +2 -2
  598. package/docs/types/_saltcorn_types.common_types.GenObj.html +1 -1
  599. package/docs/types/_saltcorn_types.common_types.ReqRes.html +2 -2
  600. package/docs/types/_saltcorn_types.common_types.ResultMessage.html +1 -1
  601. package/docs/types/_saltcorn_types.common_types.SuccessMessage.html +2 -2
  602. package/docs/types/_saltcorn_types.common_types.Type.html +2 -2
  603. package/docs/types/_saltcorn_types.model-abstracts_abstract_event_log.EventLogPack.html +2 -2
  604. package/docs/types/_saltcorn_types.model-abstracts_abstract_field.FieldCfg.html +2 -2
  605. package/docs/types/_saltcorn_types.model-abstracts_abstract_field.InputType.html +1 -1
  606. package/docs/types/_saltcorn_types.model-abstracts_abstract_form.AdditionalButton.html +2 -2
  607. package/docs/types/_saltcorn_types.model-abstracts_abstract_library.LibraryCfg.html +2 -2
  608. package/docs/types/_saltcorn_types.model-abstracts_abstract_library.LibraryPack.html +1 -1
  609. package/docs/types/_saltcorn_types.model-abstracts_abstract_model.ModelCfg.html +2 -2
  610. package/docs/types/_saltcorn_types.model-abstracts_abstract_model.ModelPack.html +1 -1
  611. package/docs/types/_saltcorn_types.model-abstracts_abstract_model_instance.ModelInstanceCfg.html +2 -2
  612. package/docs/types/_saltcorn_types.model-abstracts_abstract_model_instance.ModelInstancePack.html +1 -1
  613. package/docs/types/_saltcorn_types.model-abstracts_abstract_page.PageCfg.html +2 -2
  614. package/docs/types/_saltcorn_types.model-abstracts_abstract_page.PagePack.html +1 -1
  615. package/docs/types/_saltcorn_types.model-abstracts_abstract_page_group.PageGroupCfg.html +2 -2
  616. package/docs/types/_saltcorn_types.model-abstracts_abstract_page_group.PageGroupPack.html +1 -1
  617. package/docs/types/_saltcorn_types.model-abstracts_abstract_page_group_member.PageGroupMemberCfg.html +2 -2
  618. package/docs/types/_saltcorn_types.model-abstracts_abstract_page_group_member.PageGroupMemberPack.html +1 -1
  619. package/docs/types/_saltcorn_types.model-abstracts_abstract_plugin.PluginCfg.html +2 -2
  620. package/docs/types/_saltcorn_types.model-abstracts_abstract_plugin.PluginPack.html +1 -1
  621. package/docs/types/_saltcorn_types.model-abstracts_abstract_role.RoleCfg.html +1 -1
  622. package/docs/types/_saltcorn_types.model-abstracts_abstract_role.RolePack.html +1 -1
  623. package/docs/types/_saltcorn_types.model-abstracts_abstract_table.TableCfg.html +2 -2
  624. package/docs/types/_saltcorn_types.model-abstracts_abstract_table.TablePack.html +1 -1
  625. package/docs/types/_saltcorn_types.model-abstracts_abstract_tag.TagPack.html +2 -2
  626. package/docs/types/_saltcorn_types.model-abstracts_abstract_tag_entry.TagEntryPack.html +2 -2
  627. package/docs/types/_saltcorn_types.model-abstracts_abstract_trigger.TriggerCfg.html +2 -2
  628. package/docs/types/_saltcorn_types.model-abstracts_abstract_trigger.TriggerPack.html +1 -1
  629. package/docs/types/_saltcorn_types.model-abstracts_abstract_view.ViewCfg.html +2 -2
  630. package/docs/types/_saltcorn_types.model-abstracts_abstract_view.ViewPack.html +1 -1
  631. package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow.ConfigWorkflowStep.html +1 -1
  632. package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow.RunResult.html +2 -2
  633. package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow_run.WorkflowRunCfg.html +2 -2
  634. package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow_step.WorkflowStepCfg.html +2 -2
  635. package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow_step.WorkflowStepPack.html +1 -1
  636. package/docs/types/_saltcorn_types.model-abstracts_abstract_workflow_trace.WorkflowTraceCfg.html +2 -2
  637. package/docs/variables/_saltcorn_admin-models..backup.create_backup.html +1 -1
  638. package/docs/variables/_saltcorn_admin-models..backup.create_csv_from_rows.html +1 -1
  639. package/docs/variables/_saltcorn_admin-models..backup.restore.html +1 -1
  640. package/docs/variables/_saltcorn_admin-models..pack.add_to_menu.html +1 -1
  641. package/docs/variables/_saltcorn_admin-models..pack.can_install_pack.html +1 -1
  642. package/docs/variables/_saltcorn_admin-models..pack.fetch_available_packs.html +1 -1
  643. package/docs/variables/_saltcorn_admin-models..pack.fetch_pack_by_name.html +1 -1
  644. package/docs/variables/_saltcorn_admin-models..pack.install_pack.html +1 -1
  645. package/docs/variables/_saltcorn_admin-models..pack.library_pack.html +1 -1
  646. package/docs/variables/_saltcorn_admin-models..pack.model_instance_pack.html +1 -1
  647. package/docs/variables/_saltcorn_admin-models..pack.model_pack.html +1 -1
  648. package/docs/variables/_saltcorn_admin-models..pack.page_group_pack.html +1 -1
  649. package/docs/variables/_saltcorn_admin-models..pack.page_pack.html +1 -1
  650. package/docs/variables/_saltcorn_admin-models..pack.plugin_pack.html +1 -1
  651. package/docs/variables/_saltcorn_admin-models..pack.role_pack.html +1 -1
  652. package/docs/variables/_saltcorn_admin-models..pack.table_pack.html +1 -1
  653. package/docs/variables/_saltcorn_admin-models..pack.trigger_pack.html +1 -1
  654. package/docs/variables/_saltcorn_admin-models..pack.uninstall_pack.html +1 -1
  655. package/docs/variables/_saltcorn_admin-models..pack.view_pack.html +1 -1
  656. package/docs/variables/_saltcorn_admin-models..tenant.copy_tenant_template.html +1 -1
  657. package/docs/variables/_saltcorn_admin-models..tenant.create_tenant.html +1 -1
  658. package/docs/variables/_saltcorn_admin-models..tenant.deleteTenant.html +1 -1
  659. package/docs/variables/_saltcorn_admin-models..tenant.domain_sanitize.html +1 -1
  660. package/docs/variables/_saltcorn_admin-models..tenant.eachTenant.html +1 -1
  661. package/docs/variables/_saltcorn_admin-models..tenant.getAllTenantRows.html +1 -1
  662. package/docs/variables/_saltcorn_admin-models..tenant.getAllTenants.html +1 -1
  663. package/docs/variables/_saltcorn_admin-models..tenant.insertTenant.html +1 -1
  664. package/docs/variables/_saltcorn_admin-models..tenant.switchToTenant.html +1 -1
  665. package/docs/variables/_saltcorn_admin-models.models_backup.backup.html +1 -1
  666. package/docs/variables/_saltcorn_admin-models.pack.pack.html +1 -1
  667. package/docs/variables/_saltcorn_admin-models.tenant.tenant.html +1 -1
  668. package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedFive.html +1 -1
  669. package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedFour.html +1 -1
  670. package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedOne.html +1 -1
  671. package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedSix.html +1 -1
  672. package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedThree.html +1 -1
  673. package/docs/variables/_saltcorn_common-code.tests_expected_relations.expectedTwo.html +1 -1
  674. package/docs/variables/_saltcorn_data..migrations.html +1 -1
  675. package/docs/variables/_saltcorn_data..plugin_helper.run_action_column.html +2 -1
  676. package/docs/variables/_saltcorn_data..utils.NotAuthorized.html +1 -1
  677. package/docs/variables/_saltcorn_data..utils.isPushEnabled.html +1 -1
  678. package/docs/variables/_saltcorn_data..utils.sleep.html +1 -1
  679. package/docs/variables/_saltcorn_data.base-plugin_actions.actions.html +18 -18
  680. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.fieldviews.html +5 -0
  681. package/docs/variables/_saltcorn_data.base-plugin_fileview.fileviews.html +1 -0
  682. package/docs/variables/_saltcorn_data.base-plugin_index.index.html +22 -1
  683. package/docs/variables/_saltcorn_data.base-plugin_types.types.html +50 -0
  684. package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_edit.edit.html +1 -1
  685. package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_feed.feed.html +1 -1
  686. package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_filter.filter.html +1 -1
  687. package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_list.list.html +1 -1
  688. package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_listshowlist.listshowlist.html +1 -1
  689. package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_room.room-1.html +1 -1
  690. package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_room.room.html +1 -1
  691. package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_show.show.html +1 -1
  692. package/docs/variables/_saltcorn_data.base-plugin_viewtemplates_viewable_fields.edit_build_in_actions.html +1 -1
  693. package/docs/variables/_saltcorn_data.contract.contract.html +1 -0
  694. package/docs/variables/_saltcorn_data.db_connect.connect.html +1 -1
  695. package/docs/variables/_saltcorn_data.db_fa5-icons.fa5Icons.html +1 -1
  696. package/docs/variables/_saltcorn_data.db_fixtures.fixtures.html +1 -1
  697. package/docs/variables/_saltcorn_data.db_index.dbExports.html +1 -1
  698. package/docs/variables/_saltcorn_data.db_state.state.html +3 -3
  699. package/docs/variables/_saltcorn_data.migrations_202005141503.sql.html +1 -1
  700. package/docs/variables/_saltcorn_data.migrations_202005241712.sql.html +1 -1
  701. package/docs/variables/_saltcorn_data.migrations_202005251037.sql.html +1 -1
  702. package/docs/variables/_saltcorn_data.migrations_202005282134.sql.html +1 -1
  703. package/docs/variables/_saltcorn_data.migrations_202006022156.sql.html +1 -1
  704. package/docs/variables/_saltcorn_data.migrations_202006051507.sql.html +1 -1
  705. package/docs/variables/_saltcorn_data.migrations_202006240906.sql.html +1 -1
  706. package/docs/variables/_saltcorn_data.migrations_202007091707.sql.html +1 -1
  707. package/docs/variables/_saltcorn_data.migrations_202007202144.sql.html +1 -1
  708. package/docs/variables/_saltcorn_data.migrations_202008031500.sql.html +1 -1
  709. package/docs/variables/_saltcorn_data.migrations_202008051415.sql.html +1 -1
  710. package/docs/variables/_saltcorn_data.migrations_202008121149.sql_pg.html +1 -1
  711. package/docs/variables/_saltcorn_data.migrations_202008121149.sql_sqlite.html +1 -1
  712. package/docs/variables/_saltcorn_data.migrations_202009112140.sql_pg.html +1 -1
  713. package/docs/variables/_saltcorn_data.migrations_202009112140.sql_sqlite.html +1 -1
  714. package/docs/variables/_saltcorn_data.migrations_202009181655.sql.html +1 -1
  715. package/docs/variables/_saltcorn_data.migrations_202009221105.sql.html +1 -1
  716. package/docs/variables/_saltcorn_data.migrations_202009231331.sql.html +1 -1
  717. package/docs/variables/_saltcorn_data.migrations_202009301531.sql.html +1 -1
  718. package/docs/variables/_saltcorn_data.migrations_202010231444.sql.html +1 -1
  719. package/docs/variables/_saltcorn_data.migrations_202010251412.sql.html +1 -1
  720. package/docs/variables/_saltcorn_data.migrations_202011021749.sql.html +1 -1
  721. package/docs/variables/_saltcorn_data.migrations_202011051353.sql.html +1 -1
  722. package/docs/variables/_saltcorn_data.migrations_202011111127.sql.html +1 -1
  723. package/docs/variables/_saltcorn_data.migrations_202012011203.sql.html +1 -1
  724. package/docs/variables/_saltcorn_data.migrations_202012100841.sql.html +1 -1
  725. package/docs/variables/_saltcorn_data.migrations_202012281835.sql.html +1 -1
  726. package/docs/variables/_saltcorn_data.migrations_202101061051.sql.html +1 -1
  727. package/docs/variables/_saltcorn_data.migrations_202101141128.sql.html +1 -1
  728. package/docs/variables/_saltcorn_data.migrations_202102091312.sql.html +1 -1
  729. package/docs/variables/_saltcorn_data.migrations_202102101624.sql.html +1 -1
  730. package/docs/variables/_saltcorn_data.migrations_202102172148.sql.html +1 -1
  731. package/docs/variables/_saltcorn_data.migrations_202102261650.sql.html +1 -1
  732. package/docs/variables/_saltcorn_data.migrations_202106102347.sql.html +1 -1
  733. package/docs/variables/_saltcorn_data.migrations_202106112120.sql.html +1 -1
  734. package/docs/variables/_saltcorn_data.migrations_202106120012.sql.html +1 -1
  735. package/docs/variables/_saltcorn_data.migrations_202106120220.sql.html +1 -1
  736. package/docs/variables/_saltcorn_data.migrations_202106121701.sql.html +1 -1
  737. package/docs/variables/_saltcorn_data.migrations_202106121703.sql_pg.html +1 -1
  738. package/docs/variables/_saltcorn_data.migrations_202106121703.sql_sqlite.html +1 -1
  739. package/docs/variables/_saltcorn_data.migrations_202106251126.sql.html +1 -1
  740. package/docs/variables/_saltcorn_data.migrations_202107281619.sql.html +1 -1
  741. package/docs/variables/_saltcorn_data.migrations_202107302158.sql_pg.html +1 -1
  742. package/docs/variables/_saltcorn_data.migrations_202107302158.sql_sqlite.html +1 -1
  743. package/docs/variables/_saltcorn_data.migrations_202108022257.sql.html +1 -1
  744. package/docs/variables/_saltcorn_data.migrations_202109201624.sql.html +1 -1
  745. package/docs/variables/_saltcorn_data.migrations_202109301031.sql_pg.html +1 -1
  746. package/docs/variables/_saltcorn_data.migrations_202109301031.sql_sqlite.html +1 -1
  747. package/docs/variables/_saltcorn_data.migrations_202111290253.sql_pg.html +1 -1
  748. package/docs/variables/_saltcorn_data.migrations_202111290253.sql_sqlite.html +1 -1
  749. package/docs/variables/_saltcorn_data.migrations_202112282254.sql_pg.html +1 -1
  750. package/docs/variables/_saltcorn_data.migrations_202112282254.sql_sqlite.html +1 -1
  751. package/docs/variables/_saltcorn_data.migrations_202207022002.sql.html +1 -1
  752. package/docs/variables/_saltcorn_data.migrations_202207252150.sql_pg.html +1 -1
  753. package/docs/variables/_saltcorn_data.migrations_202207252150.sql_sqlite.html +1 -1
  754. package/docs/variables/_saltcorn_data.migrations_202207261221.sql.html +1 -1
  755. package/docs/variables/_saltcorn_data.migrations_202208101144.sql_pg.html +1 -1
  756. package/docs/variables/_saltcorn_data.migrations_202208101144.sql_sqlite.html +1 -1
  757. package/docs/variables/_saltcorn_data.migrations_202211040031.sql.html +1 -1
  758. package/docs/variables/_saltcorn_data.migrations_202212112152.sql_pg.html +1 -1
  759. package/docs/variables/_saltcorn_data.migrations_202212112152.sql_sqlite.html +1 -1
  760. package/docs/variables/_saltcorn_data.migrations_202301130917.sql.html +1 -1
  761. package/docs/variables/_saltcorn_data.migrations_202303201126.sql_pg.html +1 -1
  762. package/docs/variables/_saltcorn_data.migrations_202303201126.sql_sqlite.html +1 -1
  763. package/docs/variables/_saltcorn_data.migrations_202303221944.sql_pg.html +1 -1
  764. package/docs/variables/_saltcorn_data.migrations_202303221944.sql_sqlite.html +1 -1
  765. package/docs/variables/_saltcorn_data.migrations_202304281224.sql.html +1 -1
  766. package/docs/variables/_saltcorn_data.migrations_202305031518.sql_pg.html +1 -1
  767. package/docs/variables/_saltcorn_data.migrations_202305031518.sql_sqlite.html +1 -1
  768. package/docs/variables/_saltcorn_data.migrations_202308211648.sql.html +1 -1
  769. package/docs/variables/_saltcorn_data.migrations_202311011755.sql_pg.html +1 -1
  770. package/docs/variables/_saltcorn_data.migrations_202311011755.sql_sqlite.html +1 -1
  771. package/docs/variables/_saltcorn_data.migrations_202311231356.sql.html +1 -1
  772. package/docs/variables/_saltcorn_data.migrations_202402071125.sql.html +1 -1
  773. package/docs/variables/_saltcorn_data.migrations_202406260915.sql.html +1 -1
  774. package/docs/variables/_saltcorn_data.migrations_202412051957.sql_pg.html +1 -1
  775. package/docs/variables/_saltcorn_data.migrations_202412051957.sql_sqlite.html +1 -1
  776. package/docs/variables/_saltcorn_data.migrations_202412111526.sql_pg.html +1 -1
  777. package/docs/variables/_saltcorn_data.migrations_202412111526.sql_sqlite.html +1 -1
  778. package/docs/variables/_saltcorn_data.migrations_202501081226.sql_pg.html +1 -1
  779. package/docs/variables/_saltcorn_data.migrations_202501081226.sql_sqlite.html +1 -1
  780. package/docs/variables/_saltcorn_data.migrations_202501201239.sql_sqlite.html +1 -1
  781. package/docs/variables/_saltcorn_data.migrations_202501262157.sql.html +1 -1
  782. package/docs/variables/_saltcorn_data.migrations_202503071353.sql_pg.html +1 -1
  783. package/docs/variables/_saltcorn_data.migrations_202506050958.sql.html +1 -1
  784. package/docs/variables/_saltcorn_data.migrations_202510110312.sql_pg.html +1 -1
  785. package/docs/variables/_saltcorn_data.migrations_202510110312.sql_sqlite.html +1 -1
  786. package/docs/variables/_saltcorn_data.migrations_202511081024.sql.html +1 -1
  787. package/docs/variables/_saltcorn_data.mobile-mocks_saltcorn_html-pdf-node.htmlPdfNode.html +1 -1
  788. package/docs/variables/_saltcorn_data.models_config.configExports.html +2 -2
  789. package/docs/variables/_saltcorn_data.models_discovery.discovery.html +1 -1
  790. package/docs/variables/_saltcorn_data.models_email.email.html +1 -1
  791. package/docs/variables/_saltcorn_data.models_expression.expression.html +1 -1
  792. package/docs/variables/_saltcorn_data.models_index.config.available_languages.html +1 -1
  793. package/docs/variables/_saltcorn_data.models_index.config.check_email_mask.html +1 -1
  794. package/docs/variables/_saltcorn_data.models_index.config.configTypes.html +1 -1
  795. package/docs/variables/_saltcorn_data.models_index.config.deleteConfig.html +1 -1
  796. package/docs/variables/_saltcorn_data.models_index.config.getAllConfig.html +1 -1
  797. package/docs/variables/_saltcorn_data.models_index.config.getConfig.html +1 -1
  798. package/docs/variables/_saltcorn_data.models_index.config.get_base_url.html +1 -1
  799. package/docs/variables/_saltcorn_data.models_index.config.get_latest_npm_version.html +1 -1
  800. package/docs/variables/_saltcorn_data.models_index.config.remove_from_menu.html +1 -1
  801. package/docs/variables/_saltcorn_data.models_index.config.save_menu_items.html +1 -1
  802. package/docs/variables/_saltcorn_data.models_index.config.setConfig.html +1 -1
  803. package/docs/variables/_saltcorn_data.models_index.discovery.discover_tables.html +1 -1
  804. package/docs/variables/_saltcorn_data.models_index.discovery.discoverable_tables.html +1 -1
  805. package/docs/variables/_saltcorn_data.models_index.discovery.findType.html +1 -1
  806. package/docs/variables/_saltcorn_data.models_index.discovery.get_existing_views.html +1 -1
  807. package/docs/variables/_saltcorn_data.models_index.discovery.implement_discovery.html +1 -1
  808. package/docs/variables/_saltcorn_data.models_index.email.getMailTransport.html +1 -1
  809. package/docs/variables/_saltcorn_data.models_index.email.send_verification_email.html +1 -1
  810. package/docs/variables/_saltcorn_data.models_index.email.viewToEmailHtml.html +1 -1
  811. package/docs/variables/_saltcorn_data.models_index.expression.apply_calculated_fields.html +1 -1
  812. package/docs/variables/_saltcorn_data.models_index.expression.apply_calculated_fields_stored.html +1 -1
  813. package/docs/variables/_saltcorn_data.models_index.expression.eval_expression.html +1 -1
  814. package/docs/variables/_saltcorn_data.models_index.expression.expressionValidator.html +1 -1
  815. package/docs/variables/_saltcorn_data.models_index.expression.get_async_expression_function.html +1 -1
  816. package/docs/variables/_saltcorn_data.models_index.expression.get_expression_function.html +1 -1
  817. package/docs/variables/_saltcorn_data.models_index.expression.jsexprToWhere.html +1 -1
  818. package/docs/variables/_saltcorn_data.models_index.expression.recalculate_for_stored.html +1 -1
  819. package/docs/variables/_saltcorn_data.models_index.expression.transform_for_async.html +1 -1
  820. package/docs/variables/_saltcorn_data.models_index.layout.eachView.html +1 -1
  821. package/docs/variables/_saltcorn_data.models_index.layout.getStringsForI18n.html +1 -1
  822. package/docs/variables/_saltcorn_data.models_index.layout.getViews.html +1 -1
  823. package/docs/variables/_saltcorn_data.models_index.layout.translateLayout.html +1 -1
  824. package/docs/variables/_saltcorn_data.models_index.layout.traverse.html +1 -1
  825. package/docs/variables/_saltcorn_data.models_index.layout.traverseSync.html +1 -1
  826. package/docs/variables/_saltcorn_data.models_index.random.all_views.html +1 -1
  827. package/docs/variables/_saltcorn_data.models_index.random.fill_table_row.html +1 -1
  828. package/docs/variables/_saltcorn_data.models_index.random.initial_view.html +1 -1
  829. package/docs/variables/_saltcorn_data.models_index.random.random_table.html +1 -1
  830. package/docs/variables/_saltcorn_data.models_index.scheduler.runScheduler.html +1 -1
  831. package/docs/variables/_saltcorn_data.models_layout.layout.html +2 -2
  832. package/docs/variables/_saltcorn_data.models_random.random.html +1 -1
  833. package/docs/variables/_saltcorn_data.models_scheduler.scheduler.html +1 -1
  834. package/docs/variables/_saltcorn_data.plugin-helper.add_free_variables_to_joinfields.html +2 -2
  835. package/docs/variables/_saltcorn_data.plugin-helper.sqlBinOp.html +1 -1
  836. package/docs/variables/_saltcorn_data.plugin-helper.sqlFun.html +1 -1
  837. package/docs/variables/_saltcorn_data.tests_mocks.mocks.html +1 -1
  838. package/docs/variables/_saltcorn_data.tests_remote_query_helper.renderEditInEditConfig.html +1 -1
  839. package/docs/variables/_saltcorn_data.utils.utils.html +3 -3
  840. package/docs/variables/_saltcorn_data.web-mobile-commons.webMobileCommons.html +3 -3
  841. package/docs/variables/_saltcorn_db-common.internal.dbCommonModulePath.html +1 -1
  842. package/docs/variables/_saltcorn_db-common.multi-tenant.tenantNamespace.html +1 -1
  843. package/docs/variables/_saltcorn_db-common.tenants.tenants.html +1 -1
  844. package/docs/variables/_saltcorn_markup..export_.html +3 -2
  845. package/docs/variables/_saltcorn_markup.builder.builder.html +1 -1
  846. package/docs/variables/_saltcorn_markup.emergency_layout.EmergencyLayoutExports.html +1 -1
  847. package/docs/variables/_saltcorn_markup.form.form.html +1 -1
  848. package/docs/variables/_saltcorn_markup.helpers.HelpersExports.html +1 -1
  849. package/docs/variables/_saltcorn_markup.layout.LayoutExports-1.html +1 -1
  850. package/docs/variables/_saltcorn_markup.layout.LayoutExports.html +1 -1
  851. package/docs/variables/_saltcorn_markup.layout_utils.layoutUtils.html +1 -1
  852. package/docs/variables/_saltcorn_markup.mjml-layout.LayoutExports.html +1 -1
  853. package/docs/variables/_saltcorn_markup.mjml-tags.tagsExports.html +1 -1
  854. package/docs/variables/_saltcorn_markup.table.TableExports.html +1 -1
  855. package/docs/variables/_saltcorn_markup.tags.tagsExports.html +1 -1
  856. package/docs/variables/_saltcorn_types..generators.generateBool.html +1 -1
  857. package/docs/variables/_saltcorn_types..generators.generateString.html +1 -1
  858. package/docs/variables/_saltcorn_types..generators.num_between.html +1 -1
  859. package/docs/variables/_saltcorn_types..generators.oneOf.html +1 -1
  860. package/docs/variables/_saltcorn_types.generators.generators.html +1 -1
  861. package/help/APN Signing Key.tmd +31 -0
  862. package/help/Menu item shortcuts.tmd +37 -0
  863. package/help/Provisioning Profile.tmd +1 -1
  864. package/help/iOS Build tools.tmd +18 -0
  865. package/load_plugins.js +25 -8
  866. package/locales/ar.json +213 -2
  867. package/locales/bn.json +1521 -2
  868. package/locales/cs.json +1522 -3
  869. package/locales/de.json +195 -2
  870. package/locales/el.json +1792 -273
  871. package/locales/en.json +322 -2
  872. package/locales/es.json +194 -1
  873. package/locales/et.json +1520 -1
  874. package/locales/fil.json +1793 -0
  875. package/locales/fr.json +195 -2
  876. package/locales/id.json +1578 -62
  877. package/locales/ja.json +1520 -1
  878. package/locales/ko.json +1793 -0
  879. package/locales/lt.json +1520 -1
  880. package/locales/lv.json +1520 -1
  881. package/locales/ne.json +1520 -1
  882. package/locales/ro.json +1793 -0
  883. package/locales/sk.json +1522 -3
  884. package/locales/sl.json +1520 -1
  885. package/locales/sr.json +1520 -1
  886. package/locales/th.json +1793 -274
  887. package/locales/tr.json +1520 -1
  888. package/locales/uk.json +214 -3
  889. package/locales/ur.json +1793 -0
  890. package/locales/vt.json +1793 -0
  891. package/package.json +17 -10
  892. package/public/ios_share_tutorial/01_xcode_open_exisiting.png +0 -0
  893. package/public/ios_share_tutorial/02_open_xc_ws_file.png +0 -0
  894. package/public/ios_share_tutorial/03_share_extension_dialog.png +0 -0
  895. package/public/ios_share_tutorial/04_share_extension_dialog_b.png +0 -0
  896. package/public/ios_share_tutorial/05_activate.png +0 -0
  897. package/public/ios_share_tutorial/06_show_new_share_ext_target.png +0 -0
  898. package/public/ios_share_tutorial/07_convert_to_group.png +0 -0
  899. package/public/saltcorn-builder.css +232 -0
  900. package/public/saltcorn-common.js +64 -60
  901. package/public/saltcorn-mobile.css +5 -0
  902. package/public/saltcorn.css +12 -1
  903. package/public/saltcorn.js +83 -38
  904. package/restart_watcher.js +41 -3
  905. package/routes/actions.js +407 -92
  906. package/routes/admin.js +1434 -954
  907. package/routes/api.js +1 -1
  908. package/routes/common_lists.js +28 -26
  909. package/routes/entities.js +2209 -69
  910. package/routes/files.js +191 -0
  911. package/routes/menu.js +101 -1
  912. package/routes/notifications.js +7 -18
  913. package/routes/packs.js +23 -8
  914. package/routes/page.js +4 -1
  915. package/routes/pageedit.js +16 -0
  916. package/routes/plugins.js +46 -14
  917. package/routes/registry.js +1 -0
  918. package/routes/sync.js +3 -1
  919. package/routes/tables.js +20 -15
  920. package/routes/utils.js +2 -1
  921. package/routes/viewedit.js +6 -1
  922. package/serve.js +96 -25
  923. package/tests/files.test.js +116 -9
  924. package/tests/menu.test.js +113 -0
  925. package/wrapper.js +44 -2
  926. package/docs/functions/_saltcorn_data.base-plugin_fieldviews.radio_select.run.html +0 -1
  927. package/docs/functions/_saltcorn_data.base-plugin_fieldviews.search_or_create.configFields.html +0 -1
  928. package/docs/functions/_saltcorn_data.base-plugin_fieldviews.search_or_create.run.html +0 -1
  929. package/docs/functions/_saltcorn_data.base-plugin_fieldviews.select.run.html +0 -1
  930. package/docs/functions/_saltcorn_data.base-plugin_fieldviews.select_from_table.fill_options.html +0 -1
  931. package/docs/functions/_saltcorn_data.base-plugin_fieldviews.select_from_table.run.html +0 -1
  932. package/docs/functions/_saltcorn_data.base-plugin_types.bool.contract.html +0 -1
  933. package/docs/functions/_saltcorn_data.base-plugin_types.bool.fieldviews.TrueFalse.run.html +0 -1
  934. package/docs/functions/_saltcorn_data.base-plugin_types.bool.fieldviews.checkboxes.run.html +0 -1
  935. package/docs/functions/_saltcorn_data.base-plugin_types.bool.fieldviews.edit.run.html +0 -1
  936. package/docs/functions/_saltcorn_data.base-plugin_types.bool.fieldviews.show.run.html +0 -1
  937. package/docs/functions/_saltcorn_data.base-plugin_types.bool.fieldviews.tristate.run.html +0 -1
  938. package/docs/functions/_saltcorn_data.base-plugin_types.bool.listAs.html +0 -1
  939. package/docs/functions/_saltcorn_data.base-plugin_types.bool.read.html +0 -1
  940. package/docs/functions/_saltcorn_data.base-plugin_types.bool.readFromDB.html +0 -1
  941. package/docs/functions/_saltcorn_data.base-plugin_types.bool.readFromFormRecord.html +0 -1
  942. package/docs/functions/_saltcorn_data.base-plugin_types.bool.validate.html +0 -1
  943. package/docs/functions/_saltcorn_data.base-plugin_types.color.contract.html +0 -1
  944. package/docs/functions/_saltcorn_data.base-plugin_types.color.fieldviews.edit.run.html +0 -1
  945. package/docs/functions/_saltcorn_data.base-plugin_types.color.fieldviews.show.run.html +0 -1
  946. package/docs/functions/_saltcorn_data.base-plugin_types.color.read.html +0 -1
  947. package/docs/functions/_saltcorn_data.base-plugin_types.color.validate.html +0 -1
  948. package/docs/functions/_saltcorn_data.base-plugin_types.date.contract.html +0 -1
  949. package/docs/functions/_saltcorn_data.base-plugin_types.date.equals.html +0 -3
  950. package/docs/functions/_saltcorn_data.base-plugin_types.date.fieldviews.edit.run.html +0 -1
  951. package/docs/functions/_saltcorn_data.base-plugin_types.date.fieldviews.editDay.run.html +0 -1
  952. package/docs/functions/_saltcorn_data.base-plugin_types.date.fieldviews.format.run.html +0 -1
  953. package/docs/functions/_saltcorn_data.base-plugin_types.date.fieldviews.relative.run.html +0 -1
  954. package/docs/functions/_saltcorn_data.base-plugin_types.date.fieldviews.show.run.html +0 -1
  955. package/docs/functions/_saltcorn_data.base-plugin_types.date.fieldviews.showDay.run.html +0 -1
  956. package/docs/functions/_saltcorn_data.base-plugin_types.date.fieldviews.yearsAgo.run.html +0 -1
  957. package/docs/functions/_saltcorn_data.base-plugin_types.date.presets.Now.html +0 -1
  958. package/docs/functions/_saltcorn_data.base-plugin_types.date.read.html +0 -1
  959. package/docs/functions/_saltcorn_data.base-plugin_types.date.validate.html +0 -1
  960. package/docs/functions/_saltcorn_data.base-plugin_types.float.contract.html +0 -1
  961. package/docs/functions/_saltcorn_data.base-plugin_types.float.equals.html +0 -3
  962. package/docs/functions/_saltcorn_data.base-plugin_types.float.fieldviews.edit.run.html +0 -1
  963. package/docs/functions/_saltcorn_data.base-plugin_types.float.fieldviews.show.run.html +0 -1
  964. package/docs/functions/_saltcorn_data.base-plugin_types.float.read.html +0 -1
  965. package/docs/functions/_saltcorn_data.base-plugin_types.float.validate.html +0 -1
  966. package/docs/functions/_saltcorn_data.base-plugin_types.int.contract.html +0 -1
  967. package/docs/functions/_saltcorn_data.base-plugin_types.int.read.html +0 -1
  968. package/docs/functions/_saltcorn_data.base-plugin_types.int.validate.html +0 -1
  969. package/docs/functions/_saltcorn_data.base-plugin_types.int.validate_attributes.html +0 -1
  970. package/docs/functions/_saltcorn_data.base-plugin_types.string.attributes.html +0 -1
  971. package/docs/functions/_saltcorn_data.base-plugin_types.string.contract.html +0 -1
  972. package/docs/functions/_saltcorn_data.base-plugin_types.string.fieldviews.as_header.run.html +0 -1
  973. package/docs/functions/_saltcorn_data.base-plugin_types.string.fieldviews.as_link.run.html +0 -1
  974. package/docs/functions/_saltcorn_data.base-plugin_types.string.fieldviews.as_text.run.html +0 -1
  975. package/docs/functions/_saltcorn_data.base-plugin_types.string.fieldviews.edit.configFields.html +0 -1
  976. package/docs/functions/_saltcorn_data.base-plugin_types.string.fieldviews.edit.run.html +0 -1
  977. package/docs/functions/_saltcorn_data.base-plugin_types.string.fieldviews.img_from_url.run.html +0 -1
  978. package/docs/functions/_saltcorn_data.base-plugin_types.string.fieldviews.password.run.html +0 -1
  979. package/docs/functions/_saltcorn_data.base-plugin_types.string.fieldviews.radio_group.run.html +0 -1
  980. package/docs/functions/_saltcorn_data.base-plugin_types.string.fieldviews.textarea.run.html +0 -1
  981. package/docs/functions/_saltcorn_data.base-plugin_types.string.presets.IP.html +0 -1
  982. package/docs/functions/_saltcorn_data.base-plugin_types.string.presets.SessionID.html +0 -1
  983. package/docs/functions/_saltcorn_data.base-plugin_types.string.read.html +0 -1
  984. package/docs/functions/_saltcorn_data.base-plugin_types.string.validate.html +0 -1
  985. package/docs/functions/_saltcorn_data.base-plugin_types.string.validate_attributes.html +0 -1
  986. package/docs/functions/_saltcorn_mobile-builder.utils_common-build-utils.decodeProvisioningProfile.html +0 -1
  987. package/docs/functions/_saltcorn_mobile-builder.utils_package-bundle-utils.copyMobileAppDirs.html +0 -1
  988. package/docs/modules/_saltcorn_admin-models.tests_backup.test.html +0 -1
  989. package/docs/modules/_saltcorn_admin-models.tests_cfgcheck.test.html +0 -1
  990. package/docs/modules/_saltcorn_admin-models.tests_pack.test.html +0 -1
  991. package/docs/modules/_saltcorn_admin-models.tests_random.test.html +0 -1
  992. package/docs/modules/_saltcorn_admin-models.tests_tenant.test.html +0 -1
  993. package/docs/modules/_saltcorn_data.base-plugin_fieldviews.radio_select.html +0 -2
  994. package/docs/modules/_saltcorn_data.base-plugin_fieldviews.search_or_create.html +0 -2
  995. package/docs/modules/_saltcorn_data.base-plugin_fieldviews.select.html +0 -2
  996. package/docs/modules/_saltcorn_data.base-plugin_fieldviews.select_from_table.html +0 -2
  997. package/docs/modules/_saltcorn_data.base-plugin_types.bool.fieldviews.TrueFalse.html +0 -2
  998. package/docs/modules/_saltcorn_data.base-plugin_types.bool.fieldviews.checkboxes.html +0 -2
  999. package/docs/modules/_saltcorn_data.base-plugin_types.bool.fieldviews.edit.html +0 -2
  1000. package/docs/modules/_saltcorn_data.base-plugin_types.bool.fieldviews.html +0 -2
  1001. package/docs/modules/_saltcorn_data.base-plugin_types.bool.fieldviews.show.html +0 -2
  1002. package/docs/modules/_saltcorn_data.base-plugin_types.bool.fieldviews.tristate.html +0 -2
  1003. package/docs/modules/_saltcorn_data.base-plugin_types.bool.html +0 -3
  1004. package/docs/modules/_saltcorn_data.base-plugin_types.color.fieldviews.edit.html +0 -2
  1005. package/docs/modules/_saltcorn_data.base-plugin_types.color.fieldviews.html +0 -2
  1006. package/docs/modules/_saltcorn_data.base-plugin_types.color.fieldviews.show.html +0 -2
  1007. package/docs/modules/_saltcorn_data.base-plugin_types.color.html +0 -4
  1008. package/docs/modules/_saltcorn_data.base-plugin_types.date.fieldviews.edit.html +0 -2
  1009. package/docs/modules/_saltcorn_data.base-plugin_types.date.fieldviews.editDay.html +0 -2
  1010. package/docs/modules/_saltcorn_data.base-plugin_types.date.fieldviews.format.html +0 -2
  1011. package/docs/modules/_saltcorn_data.base-plugin_types.date.fieldviews.html +0 -2
  1012. package/docs/modules/_saltcorn_data.base-plugin_types.date.fieldviews.relative.html +0 -2
  1013. package/docs/modules/_saltcorn_data.base-plugin_types.date.fieldviews.show.html +0 -2
  1014. package/docs/modules/_saltcorn_data.base-plugin_types.date.fieldviews.showDay.html +0 -2
  1015. package/docs/modules/_saltcorn_data.base-plugin_types.date.fieldviews.yearsAgo.html +0 -2
  1016. package/docs/modules/_saltcorn_data.base-plugin_types.date.html +0 -3
  1017. package/docs/modules/_saltcorn_data.base-plugin_types.date.presets.html +0 -2
  1018. package/docs/modules/_saltcorn_data.base-plugin_types.float.fieldviews.edit.html +0 -2
  1019. package/docs/modules/_saltcorn_data.base-plugin_types.float.fieldviews.html +0 -2
  1020. package/docs/modules/_saltcorn_data.base-plugin_types.float.fieldviews.show.html +0 -2
  1021. package/docs/modules/_saltcorn_data.base-plugin_types.float.html +0 -3
  1022. package/docs/modules/_saltcorn_data.base-plugin_types.int.distance_operators.html +0 -2
  1023. package/docs/modules/_saltcorn_data.base-plugin_types.int.html +0 -3
  1024. package/docs/modules/_saltcorn_data.base-plugin_types.string.fieldviews.as_header.html +0 -2
  1025. package/docs/modules/_saltcorn_data.base-plugin_types.string.fieldviews.as_link.html +0 -2
  1026. package/docs/modules/_saltcorn_data.base-plugin_types.string.fieldviews.as_text.html +0 -2
  1027. package/docs/modules/_saltcorn_data.base-plugin_types.string.fieldviews.edit.html +0 -2
  1028. package/docs/modules/_saltcorn_data.base-plugin_types.string.fieldviews.html +0 -2
  1029. package/docs/modules/_saltcorn_data.base-plugin_types.string.fieldviews.img_from_url.html +0 -2
  1030. package/docs/modules/_saltcorn_data.base-plugin_types.string.fieldviews.password.html +0 -2
  1031. package/docs/modules/_saltcorn_data.base-plugin_types.string.fieldviews.radio_group.html +0 -2
  1032. package/docs/modules/_saltcorn_data.base-plugin_types.string.fieldviews.textarea.html +0 -2
  1033. package/docs/modules/_saltcorn_data.base-plugin_types.string.html +0 -3
  1034. package/docs/modules/_saltcorn_data.base-plugin_types.string.presets.html +0 -2
  1035. package/docs/modules/_saltcorn_data.test-utils_mocks.html +0 -1
  1036. package/docs/modules/_saltcorn_data.tests_actions.test.html +0 -1
  1037. package/docs/modules/_saltcorn_data.tests_auth.test.html +0 -1
  1038. package/docs/modules/_saltcorn_data.tests_auxtest.test.html +0 -1
  1039. package/docs/modules/_saltcorn_data.tests_base.test.html +0 -1
  1040. package/docs/modules/_saltcorn_data.tests_calc.test.html +0 -1
  1041. package/docs/modules/_saltcorn_data.tests_composite_pk.test.html +0 -1
  1042. package/docs/modules/_saltcorn_data.tests_config.test.html +0 -1
  1043. package/docs/modules/_saltcorn_data.tests_db.test.html +0 -1
  1044. package/docs/modules/_saltcorn_data.tests_discover.test.html +0 -1
  1045. package/docs/modules/_saltcorn_data.tests_edit.test.html +0 -1
  1046. package/docs/modules/_saltcorn_data.tests_email.test.html +0 -1
  1047. package/docs/modules/_saltcorn_data.tests_field.test.html +0 -1
  1048. package/docs/modules/_saltcorn_data.tests_fieldviews.test.html +0 -1
  1049. package/docs/modules/_saltcorn_data.tests_file.test.html +0 -1
  1050. package/docs/modules/_saltcorn_data.tests_filter.test.html +0 -1
  1051. package/docs/modules/_saltcorn_data.tests_form.test.html +0 -1
  1052. package/docs/modules/_saltcorn_data.tests_list.test.html +0 -1
  1053. package/docs/modules/_saltcorn_data.tests_mail_queue.test.html +0 -1
  1054. package/docs/modules/_saltcorn_data.tests_models.test.html +0 -1
  1055. package/docs/modules/_saltcorn_data.tests_page.test.html +0 -1
  1056. package/docs/modules/_saltcorn_data.tests_page_group.test.html +0 -1
  1057. package/docs/modules/_saltcorn_data.tests_plugin.test.html +0 -1
  1058. package/docs/modules/_saltcorn_data.tests_show.test.html +0 -1
  1059. package/docs/modules/_saltcorn_data.tests_state.test.html +0 -1
  1060. package/docs/modules/_saltcorn_data.tests_table.test.html +0 -1
  1061. package/docs/modules/_saltcorn_data.tests_table_history.test.html +0 -1
  1062. package/docs/modules/_saltcorn_data.tests_table_sync_info.test.html +0 -1
  1063. package/docs/modules/_saltcorn_data.tests_tag.test.html +0 -1
  1064. package/docs/modules/_saltcorn_data.tests_user.test.html +0 -1
  1065. package/docs/modules/_saltcorn_data.tests_view.test.html +0 -1
  1066. package/docs/modules/_saltcorn_data.tests_workflow.test.html +0 -1
  1067. package/docs/modules/_saltcorn_mobile-builder.appium_tests_ui.test.html +0 -1
  1068. package/docs/modules/_saltcorn_mobile-builder.tests_versioncode.test.html +0 -1
  1069. package/docs/modules/_saltcorn_mobile-builder.tests_webpack.test.html +0 -1
  1070. package/docs/types/_saltcorn_data.models_internal_push_message_helper.FcmSubscription.html +0 -4
  1071. package/docs/types/_saltcorn_data.models_internal_push_message_helper.Subscription.html +0 -1
  1072. package/docs/types/_saltcorn_db-common.internal.AggregationOptions.html +0 -11
  1073. package/docs/types/_saltcorn_db-common.internal.CoordOpts.html +0 -5
  1074. package/docs/types/_saltcorn_db-common.internal.DatabaseClient.html +0 -2
  1075. package/docs/types/_saltcorn_db-common.internal.JoinField.html +0 -6
  1076. package/docs/types/_saltcorn_db-common.internal.JoinFields.html +0 -1
  1077. package/docs/types/_saltcorn_db-common.internal.JoinOptions.html +0 -1
  1078. package/docs/types/_saltcorn_db-common.internal.JsonPath.html +0 -1
  1079. package/docs/types/_saltcorn_db-common.internal.JsonPathElem.html +0 -1
  1080. package/docs/types/_saltcorn_db-common.internal.Operator.html +0 -1
  1081. package/docs/types/_saltcorn_db-common.internal.PartialSome.html +0 -1
  1082. package/docs/types/_saltcorn_db-common.internal.PrimaryKeyValue.html +0 -1
  1083. package/docs/types/_saltcorn_db-common.internal.Row.html +0 -1
  1084. package/docs/types/_saltcorn_db-common.internal.SelectOptions.html +0 -21
  1085. package/docs/types/_saltcorn_db-common.internal.StrongRow.html +0 -1
  1086. package/docs/types/_saltcorn_db-common.internal.SubselectOptions.html +0 -5
  1087. package/docs/types/_saltcorn_db-common.internal.Value.html +0 -1
  1088. package/docs/types/_saltcorn_db-common.internal.Where.html +0 -5
  1089. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.radio_select.description.html +0 -1
  1090. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.radio_select.isEdit.html +0 -1
  1091. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.radio_select.type.html +0 -1
  1092. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.search_join_field.html +0 -1
  1093. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.search_or_create.blockDisplay.html +0 -1
  1094. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.search_or_create.description.html +0 -1
  1095. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.search_or_create.isEdit.html +0 -1
  1096. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.search_or_create.type.html +0 -1
  1097. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select.blockDisplay.html +0 -1
  1098. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select.configFields.html +0 -1
  1099. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select.description.html +0 -1
  1100. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select.isEdit.html +0 -1
  1101. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select.type.html +0 -1
  1102. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select_by_code.html +0 -1
  1103. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select_by_view.html +0 -1
  1104. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select_from_table.blockDisplay.html +0 -1
  1105. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select_from_table.configFields.html +0 -1
  1106. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select_from_table.description.html +0 -1
  1107. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select_from_table.isEdit.html +0 -1
  1108. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.select_from_table.type.html +0 -1
  1109. package/docs/variables/_saltcorn_data.base-plugin_fieldviews.two_level_select.html +0 -1
  1110. package/docs/variables/_saltcorn_data.base-plugin_fileview.fileview.html +0 -1
  1111. package/docs/variables/_saltcorn_data.base-plugin_types.bool.attributes.html +0 -1
  1112. package/docs/variables/_saltcorn_data.base-plugin_types.bool.description.html +0 -1
  1113. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.TrueFalse.description.html +0 -1
  1114. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.TrueFalse.isEdit.html +0 -1
  1115. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.checkboxes.description.html +0 -1
  1116. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.checkboxes.isEdit.html +0 -1
  1117. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.edit.configFields.html +0 -1
  1118. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.edit.description.html +0 -1
  1119. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.edit.isEdit.html +0 -1
  1120. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.show.description.html +0 -1
  1121. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.show.isEdit.html +0 -1
  1122. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.show_with_html.html +0 -1
  1123. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.switch.html +0 -1
  1124. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.thumbs_up_down.html +0 -1
  1125. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.tristate.configFields.html +0 -1
  1126. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.tristate.description.html +0 -1
  1127. package/docs/variables/_saltcorn_data.base-plugin_types.bool.fieldviews.tristate.isEdit.html +0 -1
  1128. package/docs/variables/_saltcorn_data.base-plugin_types.bool.js_type.html +0 -1
  1129. package/docs/variables/_saltcorn_data.base-plugin_types.bool.name.html +0 -1
  1130. package/docs/variables/_saltcorn_data.base-plugin_types.bool.sql_name.html +0 -1
  1131. package/docs/variables/_saltcorn_data.base-plugin_types.color.attributes.html +0 -1
  1132. package/docs/variables/_saltcorn_data.base-plugin_types.color.description.html +0 -1
  1133. package/docs/variables/_saltcorn_data.base-plugin_types.color.fieldviews.edit.blockDisplay.html +0 -1
  1134. package/docs/variables/_saltcorn_data.base-plugin_types.color.fieldviews.edit.description.html +0 -1
  1135. package/docs/variables/_saltcorn_data.base-plugin_types.color.fieldviews.edit.isEdit.html +0 -1
  1136. package/docs/variables/_saltcorn_data.base-plugin_types.color.fieldviews.show.description.html +0 -1
  1137. package/docs/variables/_saltcorn_data.base-plugin_types.color.fieldviews.show.isEdit.html +0 -1
  1138. package/docs/variables/_saltcorn_data.base-plugin_types.color.fieldviews.show_with_html.html +0 -1
  1139. package/docs/variables/_saltcorn_data.base-plugin_types.color.js_type.html +0 -1
  1140. package/docs/variables/_saltcorn_data.base-plugin_types.color.name.html +0 -1
  1141. package/docs/variables/_saltcorn_data.base-plugin_types.color.sql_name.html +0 -1
  1142. package/docs/variables/_saltcorn_data.base-plugin_types.date.attributes.html +0 -1
  1143. package/docs/variables/_saltcorn_data.base-plugin_types.date.description.html +0 -1
  1144. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.edit.blockDisplay.html +0 -1
  1145. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.edit.configFields.html +0 -1
  1146. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.edit.description.html +0 -1
  1147. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.edit.isEdit.html +0 -1
  1148. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.editDay.blockDisplay.html +0 -1
  1149. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.editDay.configFields.html +0 -1
  1150. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.editDay.description.html +0 -1
  1151. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.editDay.isEdit.html +0 -1
  1152. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.format.configFields.html +0 -1
  1153. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.format.description.html +0 -1
  1154. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.format.isEdit.html +0 -1
  1155. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.relative.description.html +0 -1
  1156. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.relative.isEdit.html +0 -1
  1157. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.show.description.html +0 -1
  1158. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.show.isEdit.html +0 -1
  1159. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.showDay.description.html +0 -1
  1160. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.showDay.isEdit.html +0 -1
  1161. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.show_with_html.html +0 -1
  1162. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.yearsAgo.description.html +0 -1
  1163. package/docs/variables/_saltcorn_data.base-plugin_types.date.fieldviews.yearsAgo.isEdit.html +0 -1
  1164. package/docs/variables/_saltcorn_data.base-plugin_types.date.js_type.html +0 -1
  1165. package/docs/variables/_saltcorn_data.base-plugin_types.date.name.html +0 -1
  1166. package/docs/variables/_saltcorn_data.base-plugin_types.date.sql_name.html +0 -1
  1167. package/docs/variables/_saltcorn_data.base-plugin_types.float.attributes.html +0 -1
  1168. package/docs/variables/_saltcorn_data.base-plugin_types.float.description.html +0 -1
  1169. package/docs/variables/_saltcorn_data.base-plugin_types.float.distance_operators.html +0 -1
  1170. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.above_input.html +0 -1
  1171. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.below_input.html +0 -1
  1172. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.edit.blockDisplay.html +0 -1
  1173. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.edit.configFields.html +0 -1
  1174. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.edit.description.html +0 -1
  1175. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.edit.isEdit.html +0 -1
  1176. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.heat_cell.html +0 -1
  1177. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.number_slider.html +0 -1
  1178. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.progress_bar.html +0 -1
  1179. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.range_interval.html +0 -1
  1180. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.show.description.html +0 -1
  1181. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.show.isEdit.html +0 -1
  1182. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.show_with_html.html +0 -1
  1183. package/docs/variables/_saltcorn_data.base-plugin_types.float.fieldviews.to_locale_string.html +0 -1
  1184. package/docs/variables/_saltcorn_data.base-plugin_types.float.js_type.html +0 -1
  1185. package/docs/variables/_saltcorn_data.base-plugin_types.float.name.html +0 -1
  1186. package/docs/variables/_saltcorn_data.base-plugin_types.int.attributes.html +0 -1
  1187. package/docs/variables/_saltcorn_data.base-plugin_types.int.description.html +0 -1
  1188. package/docs/variables/_saltcorn_data.base-plugin_types.int.distance_operators.near.html +0 -1
  1189. package/docs/variables/_saltcorn_data.base-plugin_types.int.fieldviews.html +0 -3
  1190. package/docs/variables/_saltcorn_data.base-plugin_types.int.js_type.html +0 -1
  1191. package/docs/variables/_saltcorn_data.base-plugin_types.int.name.html +0 -1
  1192. package/docs/variables/_saltcorn_data.base-plugin_types.int.primaryKey.html +0 -1
  1193. package/docs/variables/_saltcorn_data.base-plugin_types.int.sql_name.html +0 -1
  1194. package/docs/variables/_saltcorn_data.base-plugin_types.string.description.html +0 -1
  1195. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.as_header.description.html +0 -1
  1196. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.as_header.isEdit.html +0 -1
  1197. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.as_link.configFields.html +0 -1
  1198. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.as_link.description.html +0 -1
  1199. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.as_link.isEdit.html +0 -1
  1200. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.as_text.description.html +0 -1
  1201. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.as_text.isEdit.html +0 -1
  1202. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.checkbox_group.html +0 -1
  1203. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.code.html +0 -1
  1204. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.code_editor.html +0 -1
  1205. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.edit.blockDisplay.html +0 -1
  1206. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.edit.description.html +0 -1
  1207. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.edit.isEdit.html +0 -1
  1208. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.ellipsize.html +0 -1
  1209. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.fill_formula_btn.html +0 -1
  1210. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.img_from_url.description.html +0 -1
  1211. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.img_from_url.isEdit.html +0 -1
  1212. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.make_unique.html +0 -1
  1213. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.monospace_block.html +0 -1
  1214. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.password.blockDisplay.html +0 -1
  1215. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.password.configFields.html +0 -1
  1216. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.password.description.html +0 -1
  1217. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.password.isEdit.html +0 -1
  1218. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.preFormatted.html +0 -1
  1219. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.radio_group.configFields.html +0 -1
  1220. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.radio_group.description.html +0 -1
  1221. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.radio_group.isEdit.html +0 -1
  1222. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.select_by_code.html +0 -1
  1223. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.show_with_html.html +0 -1
  1224. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.textarea.blockDisplay.html +0 -1
  1225. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.textarea.configFields.html +0 -1
  1226. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.textarea.description.html +0 -1
  1227. package/docs/variables/_saltcorn_data.base-plugin_types.string.fieldviews.textarea.isEdit.html +0 -1
  1228. package/docs/variables/_saltcorn_data.base-plugin_types.string.js_type.html +0 -1
  1229. package/docs/variables/_saltcorn_data.base-plugin_types.string.name.html +0 -1
  1230. package/docs/variables/_saltcorn_data.base-plugin_types.string.sql_name.html +0 -1
  1231. package/docs/variables/_saltcorn_data.contract.fieldlike.html +0 -1
  1232. package/docs/variables/_saltcorn_data.contract.is_column.html +0 -1
  1233. package/docs/variables/_saltcorn_data.contract.is_header.html +0 -1
  1234. package/docs/variables/_saltcorn_data.contract.is_pack.html +0 -1
  1235. package/docs/variables/_saltcorn_data.contract.is_plugin.html +0 -1
  1236. package/docs/variables/_saltcorn_data.contract.is_plugin_layout.html +0 -1
  1237. package/docs/variables/_saltcorn_data.contract.is_plugin_type.html +0 -1
  1238. package/docs/variables/_saltcorn_data.contract.is_plugin_wrap.html +0 -1
  1239. package/docs/variables/_saltcorn_data.contract.is_plugin_wrap_arg.html +0 -1
  1240. package/docs/variables/_saltcorn_data.contract.is_table_query.html +0 -1
  1241. package/docs/variables/_saltcorn_data.contract.is_tablely.html +0 -1
  1242. package/docs/variables/_saltcorn_data.contract.is_viewtemplate.html +0 -1
  1243. package/docs/variables/_saltcorn_data.test-utils_mocks.mocks.html +0 -1
package/routes/admin.js CHANGED
@@ -40,6 +40,7 @@ const {
40
40
  a,
41
41
  hr,
42
42
  i,
43
+ img,
43
44
  h4,
44
45
  table,
45
46
  tbody,
@@ -163,9 +164,114 @@ const app_files_table = (files, buildDirName, req) =>
163
164
  ],
164
165
  files
165
166
  );
166
- const intermediate_build_result = (outDirName, buildDir, req) => {
167
+
168
+ const tutorial_step = (
169
+ stepNumber,
170
+ headline,
171
+ description,
172
+ imageName,
173
+ imageWidth = "100%",
174
+ footer = ""
175
+ ) => {
176
+ return div(
177
+ {
178
+ class: "tutorial-step mb-4 p-3",
179
+ style: "border:1px solid #ddd; border-radius:8px; background:#fafafa;",
180
+ },
181
+ h5({ style: "margin-bottom:10px;" }, `Step ${stepNumber}: ${headline}`),
182
+ p(description),
183
+ img({
184
+ src: `/static_assets/${db.connectObj.version_tag}/ios_share_tutorial/${imageName}`,
185
+ style: `max-width:${imageWidth}; border:1px solid #ccc; border-radius:6px;`,
186
+ }),
187
+ footer ? p({ class: "fst-italic mt-3 mb-1" }, footer) : ""
188
+ );
189
+ };
190
+
191
+ const intermediate_build_result = (outDirName, buildDir, req, appFilesTbl) => {
167
192
  return div(
168
193
  h3("Intermediate build result"),
194
+ div(
195
+ { class: "mb-3" },
196
+ "The build has paused because the Share To feature is enabled for iOS. " +
197
+ "Before continuing, a few additional configurations must be completed in the Xcode IDE. " +
198
+ "Please follow the steps shown in the screenshots below."
199
+ ),
200
+
201
+ p(
202
+ { class: "h5 ps-1 mt-3" },
203
+ button(
204
+ {
205
+ class: "btn btn-outline-secondary p-1 me-2",
206
+ type: "button",
207
+ "data-bs-toggle": "collapse",
208
+ "data-bs-target": "#xCodeStepsId",
209
+ "aria-expanded": "true",
210
+ "aria-controls": "xCodeStepsId",
211
+ },
212
+ i({ class: "fas fa-chevron-down" })
213
+ ) + "Steps to configure the Xcode project"
214
+ ),
215
+
216
+ div(
217
+ {
218
+ class: "form-group border border-2 p-3 rounded collapse show",
219
+ id: "xCodeStepsId",
220
+ },
221
+
222
+ tutorial_step(
223
+ 1,
224
+ "Open existing Xcode project",
225
+ "Open Xcode and click 'Open Existing Project':",
226
+ "01_xcode_open_exisiting.png",
227
+ "50%"
228
+ ),
229
+ tutorial_step(
230
+ 2,
231
+ "Locate xcworkspace file",
232
+ "Open the 'App.xcworkspace' file. It should be located in <code>/YOUR_HOME_DIR/mobile_app_build/ios/App/App</code>:",
233
+ "02_open_xc_ws_file.png",
234
+ "50%"
235
+ ),
236
+ tutorial_step(
237
+ 3,
238
+ "Open add share extension target",
239
+ "In Xcode, click <strong>File → New → Target</strong>. " +
240
+ "In the dialog that appears, select <strong>Share Extension</strong> and proceed:",
241
+ "03_share_extension_dialog.png",
242
+ "50%"
243
+ ),
244
+ tutorial_step(
245
+ 4,
246
+ "Add share extension target",
247
+ "Enter <strong>share-ext</strong> as the product name, select your your Team Id and proceed:",
248
+ "04_share_extension_dialog_b.png",
249
+ "50%"
250
+ ),
251
+ tutorial_step(
252
+ 5,
253
+ "Activate the new target",
254
+ "Click <strong>Activate</strong>:",
255
+ "05_activate.png",
256
+ "50%"
257
+ ),
258
+ tutorial_step(
259
+ 6,
260
+ "Locate target in project navigator",
261
+ "The <strong>share-ext</strong> target should be visible in the navigator on the left:",
262
+ "06_show_new_share_ext_target.png",
263
+ "50%"
264
+ ),
265
+ tutorial_step(
266
+ 7,
267
+ "Convert the extension target to a group",
268
+ "Right-click on the <strong>share-ext</strong> target and click <strong>Convert to Group</strong>:",
269
+ "07_convert_to_group.png",
270
+ "50%",
271
+ "Now close Xcode and click <strong>Finish the build</strong>."
272
+ )
273
+ ),
274
+ appFilesTbl,
169
275
  div(
170
276
  button(
171
277
  {
@@ -2345,26 +2451,406 @@ const checkXcodebuild = () => {
2345
2451
  resolve({ installed: false });
2346
2452
  } else {
2347
2453
  const tokens = stdout.split(" ");
2454
+ const version = tokens.length > 1 ? tokens[1] : undefined;
2348
2455
  resolve({
2349
2456
  installed: true,
2350
- version: tokens.length > 1 ? tokens[1] : undefined,
2457
+ version: version,
2458
+ fullfilled: version ? versFullfilled(version, 11) : false,
2351
2459
  });
2352
2460
  }
2353
2461
  });
2354
2462
  });
2355
2463
  };
2356
2464
 
2357
- const versionMarker = (version) => {
2358
- const tokens = version.split(".");
2359
- const majVers = parseInt(tokens[0]);
2360
- return i({
2361
- id: "versionMarkerId",
2362
- class: `fas ${
2363
- majVers >= 11 ? "fa-check text-success" : "fa-times text-danger"
2364
- }`,
2465
+ const checkCocoaPods = () => {
2466
+ return new Promise((resolve) => {
2467
+ exec("pod --version", (error, stdout, stderr) => {
2468
+ if (error) {
2469
+ resolve({ installed: false });
2470
+ } else {
2471
+ const version = stdout?.length > 1 ? stdout : undefined;
2472
+ resolve({
2473
+ installed: true,
2474
+ version: version,
2475
+ fullfilled: version ? versFullfilled(version, 1) : false,
2476
+ });
2477
+ }
2478
+ });
2365
2479
  });
2366
2480
  };
2367
2481
 
2482
+ const versFullfilled = (version, minMajVersion) => {
2483
+ const vTokens = version.split(".");
2484
+ const majVers = parseInt(vTokens[0]);
2485
+ return majVers >= minMajVersion;
2486
+ };
2487
+
2488
+ /**
2489
+ * iOS Config Box
2490
+ * @param {any} param0
2491
+ */
2492
+ const buildIosConfigBox = ({
2493
+ req,
2494
+ isMac,
2495
+ xcodebuildAvailable,
2496
+ xcodebuildVersion,
2497
+ cocoaPodsAvailable,
2498
+ cocoaPodsVersion,
2499
+ provisioningFiles,
2500
+ allAppCfgFiles,
2501
+ builderSettings,
2502
+ }) => {
2503
+ const xCodeFullfilled = versFullfilled(xcodebuildVersion || "0.0.0", 11);
2504
+ const cocoaPodsFullfilled = versFullfilled(cocoaPodsVersion || "0.0.0", 1);
2505
+ const keyCfg = getState().getConfig("apn_signing_key", "");
2506
+ const apnSigningKey = keyCfg ? path.basename(keyCfg) : null;
2507
+
2508
+ // xcodebuild and cocoapods infos
2509
+ const toolsInfoBox = () => {
2510
+ return div(
2511
+ { class: "row pb-3 pt-2" },
2512
+ div(
2513
+ h5(
2514
+ { class: "form-label mb-3" },
2515
+ req.__("Build tools") +
2516
+ a(
2517
+ {
2518
+ href: "javascript:ajax_modal('/admin/help/iOS Build tools?')",
2519
+ },
2520
+ i({ class: "fas fa-question-circle ps-1" })
2521
+ )
2522
+ )
2523
+ ),
2524
+ div(
2525
+ { class: "col-sm-12" },
2526
+ isMac
2527
+ ? div(
2528
+ div(
2529
+ {
2530
+ id: "iosBuilderStatusId",
2531
+ class: "row",
2532
+ },
2533
+ // xcodebuild status
2534
+ div(
2535
+ { class: "col-sm-4" },
2536
+ div({ class: "fw-bold form-label label" }, "xcodebuild"),
2537
+ span(
2538
+ { id: "xcodebuildStatusId" },
2539
+ xcodebuildAvailable
2540
+ ? xcodebuildVersion
2541
+ : req.__("not available"),
2542
+ i({
2543
+ class: `fas p-2 ${
2544
+ xCodeFullfilled
2545
+ ? "fa-check text-success"
2546
+ : "fa-times text-danger"
2547
+ }`,
2548
+ })
2549
+ )
2550
+ ),
2551
+ // refresh button
2552
+ div(
2553
+ { class: "col-sm-4" },
2554
+ span(
2555
+ {
2556
+ role: "button",
2557
+ onClick: "check_ios_build_deps()",
2558
+ },
2559
+ span({ class: "ps-3" }, req.__("refresh")),
2560
+ i({ class: "ps-2 fas fa-undo" })
2561
+ )
2562
+ )
2563
+ ),
2564
+ div(
2565
+ {
2566
+ class: "row",
2567
+ },
2568
+ // cocoapods status
2569
+ div(
2570
+ { class: "col-sm-4" },
2571
+ div({ class: "fw-bold form-label label" }, "cocoapods"),
2572
+ span(
2573
+ { id: "cocoapodsStatusId" },
2574
+ cocoaPodsAvailable
2575
+ ? span(cocoaPodsVersion)
2576
+ : span(req.__("not available")),
2577
+ i({
2578
+ class: `fas p-2 ${
2579
+ cocoaPodsFullfilled
2580
+ ? "fa-check text-success"
2581
+ : "fa-times text-danger"
2582
+ }`,
2583
+ })
2584
+ )
2585
+ )
2586
+ )
2587
+ )
2588
+ : span(
2589
+ req.__("Not a Mac OS system"),
2590
+ i({
2591
+ class: "ps-2 fas",
2592
+ })
2593
+ )
2594
+ )
2595
+ );
2596
+ };
2597
+
2598
+ const provisioningFilesBox = () => {
2599
+ return (
2600
+ div(
2601
+ h5(
2602
+ { class: "form-label mb-3" },
2603
+ req.__("Provisioning profiles"),
2604
+
2605
+ a(
2606
+ {
2607
+ href: "javascript:ajax_modal('/admin/help/Provisioning Profile?')",
2608
+ },
2609
+ i({ class: "fas fa-question-circle ps-1" })
2610
+ )
2611
+ )
2612
+ ) +
2613
+ // Build without provisioning profile
2614
+ div(
2615
+ { class: "row pb-2 my-2" },
2616
+ div(
2617
+ { class: "col-sm-10" },
2618
+ input({
2619
+ type: "checkbox",
2620
+ id: "buildWithoutProfileId",
2621
+ class: "form-check-input me-2 mb-0 ",
2622
+ name: "noProvisioningProfile",
2623
+ checked: builderSettings.noProvisioningProfile === "on",
2624
+ }),
2625
+ label(
2626
+ {
2627
+ for: "buildWithoutProfileId",
2628
+ class: "form-label fw-bold mb-0",
2629
+ },
2630
+ req.__("No Provisioning Profile")
2631
+ ),
2632
+ div(),
2633
+ i(
2634
+ req.__(
2635
+ "Only create the project directory without building an .ipa file. " +
2636
+ "This can be useful if you want to open the project in Xcode and run it in the Simulator."
2637
+ )
2638
+ )
2639
+ )
2640
+ ) +
2641
+ // App Provisioning profile
2642
+ div(
2643
+ { class: "row pb-3" },
2644
+ div(
2645
+ { class: "col-sm-10" },
2646
+ label(
2647
+ {
2648
+ for: "provisioningProfileInputId",
2649
+ class: "form-label fw-bold",
2650
+ },
2651
+ req.__("Provisioning Profile")
2652
+ ),
2653
+ select(
2654
+ {
2655
+ class: "form-select",
2656
+ name: "provisioningProfile",
2657
+ id: "provisioningProfileInputId",
2658
+ },
2659
+ [
2660
+ option({ value: "" }, ""),
2661
+ ...provisioningFiles.map((file) =>
2662
+ option(
2663
+ {
2664
+ value: file.location,
2665
+ selected:
2666
+ builderSettings.provisioningProfile === file.location,
2667
+ },
2668
+ file.filename
2669
+ )
2670
+ ),
2671
+ ].join("")
2672
+ )
2673
+ )
2674
+ ) +
2675
+ // Share Extension provisioning profile
2676
+ div(
2677
+ { class: "row pb-3" },
2678
+ div(
2679
+ { class: "col-sm-10" },
2680
+ label(
2681
+ {
2682
+ for: "shareProvisioningProfileInputId",
2683
+ class: "form-label fw-bold",
2684
+ },
2685
+ req.__("Share Extension Provisioning Profile")
2686
+ ),
2687
+ select(
2688
+ {
2689
+ class: "form-select",
2690
+ name: "shareProvisioningProfile",
2691
+ id: "shareProvisioningProfileInputId",
2692
+ },
2693
+ [
2694
+ option({ value: "" }, ""),
2695
+ ...provisioningFiles.map((file) =>
2696
+ option(
2697
+ {
2698
+ value: file.location,
2699
+ selected:
2700
+ builderSettings.shareProvisioningProfile ===
2701
+ file.location,
2702
+ },
2703
+ file.filename
2704
+ )
2705
+ ),
2706
+ ].join("")
2707
+ ),
2708
+ div(),
2709
+ i(req.__("This is a Share extension profile"))
2710
+ )
2711
+ ) +
2712
+ // App-Group-Id
2713
+ div(
2714
+ { class: "row pb-3" },
2715
+ div(
2716
+ { class: "col-sm-10" },
2717
+ label(
2718
+ {
2719
+ for: "appGroupIdInputId",
2720
+ class: "form-label fw-bold",
2721
+ },
2722
+ req.__("App Group ID")
2723
+ ),
2724
+ input({
2725
+ type: "text",
2726
+ class: "form-control",
2727
+ name: "appGroupId",
2728
+ id: "appGroupIdInputId",
2729
+ value: builderSettings.appGroupId || "",
2730
+ }),
2731
+ div(),
2732
+ i(
2733
+ req.__(
2734
+ "The App Group ID is used to share data between the main app and the Share extension."
2735
+ )
2736
+ )
2737
+ )
2738
+ )
2739
+ );
2740
+ };
2741
+
2742
+ const iosPushConfigBox = () => {
2743
+ return (
2744
+ // APN Signing Key
2745
+ div(
2746
+ { class: "row pb-3" },
2747
+ div(
2748
+ { class: "col-sm-10" },
2749
+ label(
2750
+ {
2751
+ for: "apnSigningKeyInputId",
2752
+ class: "form-label fw-bold",
2753
+ },
2754
+ req.__("APN Signing Key (.p8 file)")
2755
+ ),
2756
+ select(
2757
+ {
2758
+ class: "form-select",
2759
+ name: "apnSigningKey",
2760
+ id: "apnSigningKeyInputId",
2761
+ },
2762
+ [
2763
+ option({ value: "" }, ""),
2764
+ ...allAppCfgFiles.map((file) =>
2765
+ option(
2766
+ {
2767
+ value: file.path_to_serve,
2768
+ selected: apnSigningKey === file.filename,
2769
+ },
2770
+ file.filename
2771
+ )
2772
+ ),
2773
+ ].join("")
2774
+ ),
2775
+ div(),
2776
+ i(req.__("This is a private key file"))
2777
+ )
2778
+ ) +
2779
+ // APN Signing Key ID
2780
+ div(
2781
+ { class: "row pb-3" },
2782
+ div(
2783
+ { class: "col-sm-10" },
2784
+ label(
2785
+ {
2786
+ for: "apnSigningKeyIdInputId",
2787
+ class: "form-label fw-bold",
2788
+ },
2789
+ req.__("APN Signing Key ID")
2790
+ ),
2791
+ input({
2792
+ type: "text",
2793
+ class: "form-control",
2794
+ name: "apnSigningKeyId",
2795
+ id: "apnSigningKeyIdInputId",
2796
+ value: builderSettings.apnSigningKeyId || "",
2797
+ }),
2798
+ div(),
2799
+ i(
2800
+ req.__(
2801
+ "The 10-character Key ID obtained from Apple developer account"
2802
+ )
2803
+ )
2804
+ )
2805
+ )
2806
+ );
2807
+ };
2808
+
2809
+ return div(
2810
+ { class: "my-3" },
2811
+ p(
2812
+ { class: "h3 ps-1 mt-3" },
2813
+ button(
2814
+ {
2815
+ class: "btn btn-outline-secondary p-1 me-2",
2816
+ type: "button",
2817
+ "data-bs-toggle": "collapse",
2818
+ "data-bs-target": "#iOSConfigFormGroupId",
2819
+ "aria-expanded": "false",
2820
+ "aria-controls": "iOSConfigFormGroupId",
2821
+ },
2822
+ i({ class: "fas fa-chevron-down" })
2823
+ ) + "iOS Configuration"
2824
+ ),
2825
+ div(
2826
+ {
2827
+ id: "iOSConfigFormGroupId",
2828
+ class: "form-group border border-2 p-3 rounded collapse",
2829
+ },
2830
+ toolsInfoBox(),
2831
+ provisioningFilesBox(),
2832
+ // Push Notifications section
2833
+ div(
2834
+ { class: "form-group row my-3" },
2835
+ div(
2836
+ { class: "col-sm-12 mt-2 fw-bold" },
2837
+ h5(
2838
+ { class: "" },
2839
+ req.__("Push Notifications"),
2840
+ a(
2841
+ {
2842
+ href: "javascript:ajax_modal('/admin/help/APN Signing Key?')",
2843
+ },
2844
+ i({ class: "fas fa-question-circle ps-1" })
2845
+ )
2846
+ )
2847
+ )
2848
+ ),
2849
+ iosPushConfigBox()
2850
+ )
2851
+ );
2852
+ };
2853
+
2368
2854
  /**
2369
2855
  * Build mobile app
2370
2856
  */
@@ -2396,7 +2882,9 @@ router.get(
2396
2882
  ];
2397
2883
  const withSyncInfo = await Table.find({ has_sync_info: true });
2398
2884
  const plugins = (await Plugin.find()).filter(
2399
- (plugin) => ["base", "sbadmin2"].indexOf(plugin.name) < 0
2885
+ (plugin) =>
2886
+ ["base", "sbadmin2"].indexOf(plugin.name) < 0 &&
2887
+ !plugin.exclude_from_mobile()
2400
2888
  );
2401
2889
  const pluginsReadyForMobile = plugins
2402
2890
  .filter((plugin) => plugin.ready_for_mobile())
@@ -2411,6 +2899,10 @@ router.get(
2411
2899
  const xcodeCheckRes = await checkXcodebuild();
2412
2900
  const xcodebuildAvailable = xcodeCheckRes.installed;
2413
2901
  const xcodebuildVersion = xcodeCheckRes.version;
2902
+ const isMac = process.platform === "darwin";
2903
+ const cocoaPodCheckRes = await checkCocoaPods();
2904
+ const cocoaPodsAvailable = cocoaPodCheckRes.installed;
2905
+ const cocoaPodsVersion = cocoaPodCheckRes.version;
2414
2906
  const layout = getState().getLayout(req.user);
2415
2907
  const isSbadmin2 = layout === getState().layouts.sbadmin2;
2416
2908
  const isEntrypointByRole = builderSettings.entryPointByRole === "on";
@@ -2447,7 +2939,15 @@ router.get(
2447
2939
  onchange: "builderMenuChanged(this)",
2448
2940
  id: "buildMobileAppForm",
2449
2941
  },
2450
-
2942
+ p(
2943
+ "This menu allows building Android or iOS apps for your web app. " +
2944
+ "On Android, installing the capacitor-builder Docker image is recommended, for iOS, an Apple machine is required. "
2945
+ ),
2946
+ p(
2947
+ "To select files (like an Android keystore or iOS provisioning profile), " +
2948
+ "upload them to the 'mobile-app-configurations' folder (create it if it not yet exists). " +
2949
+ "Results are shown once on completion, and the builder adds a result folder to the 'mobile_app' directory."
2950
+ ),
2451
2951
  fieldset(
2452
2952
  input({
2453
2953
  type: "hidden",
@@ -2460,886 +2960,984 @@ router.get(
2460
2960
  value: builderSettings.entryPointType || "view",
2461
2961
  id: "entryPointTypeID",
2462
2962
  }),
2963
+
2463
2964
  div(
2464
2965
  { class: "container ps-2" },
2465
- div(
2466
- { class: "row pb-2" },
2467
- div({ class: "col-sm-4 fw-bold" }, req.__("Entry point")),
2468
- div({ class: "col-sm-4 fw-bold" }, req.__("Platform")),
2469
- div(
2966
+ p(
2967
+ { class: "h3 ps-1" },
2968
+ button(
2470
2969
  {
2471
- class: `col-sm-1 fw-bold d-flex justify-content-center ${
2472
- builderSettings.androidPlatform !== "on"
2473
- ? "d-none"
2474
- : ""
2475
- }`,
2476
- id: "dockerLabelId",
2970
+ class: "btn btn-outline-secondary p-1 me-2",
2971
+ type: "button",
2972
+ "data-bs-toggle": "collapse",
2973
+ "data-bs-target": "#commonSettingsContainerId",
2974
+ "aria-expanded": "true",
2975
+ "aria-controls": "commonSettingsContainerId",
2477
2976
  },
2478
- req.__("docker")
2479
- )
2977
+ i({ class: "fas fa-chevron-down" })
2978
+ ) + "Common configuration"
2480
2979
  ),
2481
2980
  div(
2482
- { class: "row mb-3" },
2981
+ {
2982
+ id: "commonSettingsContainerId",
2983
+ class:
2984
+ "form-group border border-2 p-3 rounded collapse show",
2985
+ },
2483
2986
  div(
2484
- {
2485
- class: `col-sm-4 mt-2 ${isEntrypointByRole ? "" : "border border-2 p-3 rounded"}`,
2486
- id: "entryPointRowId",
2487
- },
2987
+ { class: "row pb-2" },
2988
+ div({ class: "col-sm-4 fw-bold" }, req.__("Entry point")),
2989
+ div({ class: "col-sm-4 fw-bold" }, req.__("Platform")),
2488
2990
  div(
2489
- { class: "row pb-2" },
2490
- div(
2491
- { class: "col-sm-6" },
2492
- input({
2493
- type: "checkbox",
2494
- id: "entryPointByRoleBoxId",
2495
- class: "form-check-input me-2",
2496
- name: "entryPointByRole",
2497
- checked: isEntrypointByRole,
2498
- }),
2499
- label(
2500
- {
2501
- for: "entryPointByRole",
2502
- class: "form-label",
2503
- },
2504
- req.__("Entry point by role"),
2505
- a(
2506
- {
2507
- href: "javascript:ajax_modal('/admin/help/Entry point by role?')",
2508
- },
2509
- i({ class: "fas fa-question-circle ps-1" })
2510
- )
2511
- )
2512
- )
2513
- ),
2514
- // 'view/page/pagegroup' tabs
2991
+ {
2992
+ class: `col-sm-1 fw-bold d-flex justify-content-center ${
2993
+ builderSettings.androidPlatform !== "on"
2994
+ ? "d-none"
2995
+ : ""
2996
+ }`,
2997
+ id: "dockerLabelId",
2998
+ },
2999
+ req.__("docker")
3000
+ )
3001
+ ),
3002
+ div(
3003
+ { class: "row mb-3" },
2515
3004
  div(
2516
3005
  {
2517
- id: "entrySelectorsId",
2518
- class: isEntrypointByRole ? "d-none" : "",
3006
+ class: `col-sm-4 mt-2 ms-3 me-2 ${isEntrypointByRole ? "" : "border border-2 p-3 rounded"}`,
3007
+ id: "entryPointRowId",
2519
3008
  },
2520
- ul(
2521
- { class: "nav nav-pills" },
2522
- li(
2523
- {
2524
- class: "nav-item",
2525
- onClick: "showEntrySelect('view')",
2526
- },
2527
- div(
3009
+ div(
3010
+ { class: "row pb-2" },
3011
+ div(
3012
+ { class: "col-sm-6" },
3013
+ input({
3014
+ type: "checkbox",
3015
+ id: "entryPointByRoleBoxId",
3016
+ class: "form-check-input me-2",
3017
+ name: "entryPointByRole",
3018
+ checked: isEntrypointByRole,
3019
+ }),
3020
+ label(
2528
3021
  {
2529
- class: `nav-link ${
2530
- !builderSettings.entryPointType ||
2531
- builderSettings.entryPointType === "view"
2532
- ? "active"
2533
- : ""
2534
- }`,
2535
- id: "viewNavLinkID",
3022
+ for: "entryPointByRole",
3023
+ class: "form-label",
2536
3024
  },
2537
- req.__("View")
3025
+ req.__("Entry point by role"),
3026
+ a(
3027
+ {
3028
+ href: "javascript:ajax_modal('/admin/help/Entry point by role?')",
3029
+ },
3030
+ i({ class: "fas fa-question-circle ps-1" })
3031
+ )
2538
3032
  )
2539
- ),
2540
- li(
2541
- {
2542
- class: "nav-item",
2543
- onClick: "showEntrySelect('page')",
2544
- },
2545
- div(
3033
+ )
3034
+ ),
3035
+ // 'view/page/pagegroup' tabs
3036
+ div(
3037
+ {
3038
+ id: "entrySelectorsId",
3039
+ class: isEntrypointByRole ? "d-none" : "",
3040
+ },
3041
+ ul(
3042
+ { class: "nav nav-pills" },
3043
+ li(
2546
3044
  {
2547
- class: `nav-link ${
2548
- builderSettings.entryPointType === "page"
2549
- ? "active"
2550
- : ""
2551
- }`,
2552
- id: "pageNavLinkID",
3045
+ class: "nav-item",
3046
+ onClick: "showEntrySelect('view')",
2553
3047
  },
2554
- req.__("Page")
3048
+ div(
3049
+ {
3050
+ class: `nav-link ${
3051
+ !builderSettings.entryPointType ||
3052
+ builderSettings.entryPointType === "view"
3053
+ ? "active"
3054
+ : ""
3055
+ }`,
3056
+ id: "viewNavLinkID",
3057
+ },
3058
+ req.__("View")
3059
+ )
2555
3060
  ),
2556
3061
  li(
2557
3062
  {
2558
3063
  class: "nav-item",
2559
- onClick: "showEntrySelect('pagegroup')",
3064
+ onClick: "showEntrySelect('page')",
2560
3065
  },
2561
3066
  div(
2562
3067
  {
2563
3068
  class: `nav-link ${
2564
- builderSettings.entryPointType ===
2565
- "pagegroup"
3069
+ builderSettings.entryPointType === "page"
2566
3070
  ? "active"
2567
3071
  : ""
2568
3072
  }`,
2569
- id: "pagegroupNavLinkID",
3073
+ id: "pageNavLinkID",
2570
3074
  },
2571
- req.__("Pagegroup")
2572
- )
2573
- )
2574
- )
2575
- ),
2576
- // select entry-view
2577
- select(
2578
- {
2579
- class: `form-select ${
2580
- builderSettings.entryPointType === "page" ||
2581
- builderSettings.entryPointType === "pagegroup"
2582
- ? "d-none"
2583
- : ""
2584
- }`,
2585
- ...(!builderSettings.entryPointType ||
2586
- builderSettings.entryPointType === "view"
2587
- ? { name: "entryPoint" }
2588
- : {}),
2589
- id: "viewInputID",
2590
- },
2591
- views
2592
- .map((view) =>
2593
- option(
3075
+ req.__("Page")
3076
+ ),
3077
+ li(
2594
3078
  {
2595
- value: view.name,
2596
- selected:
2597
- builderSettings.entryPointType === "view" &&
2598
- builderSettings.entryPoint === view.name,
3079
+ class: "nav-item",
3080
+ onClick: "showEntrySelect('pagegroup')",
2599
3081
  },
2600
- view.name
3082
+ div(
3083
+ {
3084
+ class: `nav-link ${
3085
+ builderSettings.entryPointType ===
3086
+ "pagegroup"
3087
+ ? "active"
3088
+ : ""
3089
+ }`,
3090
+ id: "pagegroupNavLinkID",
3091
+ },
3092
+ req.__("Pagegroup")
3093
+ )
2601
3094
  )
2602
3095
  )
2603
- .join(",")
2604
- ),
2605
- // select entry-page
2606
- select(
2607
- {
2608
- class: `form-select ${
2609
- !builderSettings.entryPointType ||
2610
- builderSettings.entryPointType === "view" ||
2611
- builderSettings.entryPointType === "pagegroup"
2612
- ? "d-none"
2613
- : ""
2614
- }`,
2615
- ...(builderSettings.entryPointType === "page"
2616
- ? { name: "entryPoint" }
2617
- : {}),
2618
- id: "pageInputID",
2619
- },
2620
- pages
2621
- .map((page) =>
2622
- option(
2623
- {
2624
- value: page.name,
2625
- selected:
2626
- builderSettings.entryPointType === "page" &&
2627
- builderSettings.entryPoint === page.name,
2628
- },
2629
- page.name
3096
+ ),
3097
+ // select entry-view
3098
+ select(
3099
+ {
3100
+ class: `form-select ${
3101
+ builderSettings.entryPointType === "page" ||
3102
+ builderSettings.entryPointType === "pagegroup"
3103
+ ? "d-none"
3104
+ : ""
3105
+ }`,
3106
+ ...(!builderSettings.entryPointType ||
3107
+ builderSettings.entryPointType === "view"
3108
+ ? { name: "entryPoint" }
3109
+ : {}),
3110
+ id: "viewInputID",
3111
+ },
3112
+ views
3113
+ .map((view) =>
3114
+ option(
3115
+ {
3116
+ value: view.name,
3117
+ selected:
3118
+ builderSettings.entryPointType ===
3119
+ "view" &&
3120
+ builderSettings.entryPoint === view.name,
3121
+ },
3122
+ view.name
3123
+ )
2630
3124
  )
2631
- )
2632
- .join("")
2633
- ),
2634
- // select entry-pagegroup
2635
- select(
2636
- {
2637
- class: `form-select ${
2638
- !builderSettings.entryPointType ||
2639
- builderSettings.entryPointType === "view" ||
2640
- builderSettings.entryPointType === "page"
2641
- ? "d-none"
2642
- : ""
2643
- }`,
2644
- ...(builderSettings.entryPointType === "pagegroup"
2645
- ? { name: "entryPoint" }
2646
- : {}),
2647
- id: "pagegroupInputID",
2648
- },
2649
- pageGroups
2650
- .map((group) =>
2651
- option(
2652
- {
2653
- value: group.name,
2654
- selected:
2655
- builderSettings.entryPointType ===
2656
- "pagegroup" &&
2657
- builderSettings.entryPoint === group.name,
2658
- },
2659
- group.name
3125
+ .join(",")
3126
+ ),
3127
+ // select entry-page
3128
+ select(
3129
+ {
3130
+ class: `form-select ${
3131
+ !builderSettings.entryPointType ||
3132
+ builderSettings.entryPointType === "view" ||
3133
+ builderSettings.entryPointType === "pagegroup"
3134
+ ? "d-none"
3135
+ : ""
3136
+ }`,
3137
+ ...(builderSettings.entryPointType === "page"
3138
+ ? { name: "entryPoint" }
3139
+ : {}),
3140
+ id: "pageInputID",
3141
+ },
3142
+ pages
3143
+ .map((page) =>
3144
+ option(
3145
+ {
3146
+ value: page.name,
3147
+ selected:
3148
+ builderSettings.entryPointType ===
3149
+ "page" &&
3150
+ builderSettings.entryPoint === page.name,
3151
+ },
3152
+ page.name
3153
+ )
2660
3154
  )
2661
- )
2662
- .join("")
3155
+ .join("")
3156
+ ),
3157
+ // select entry-pagegroup
3158
+ select(
3159
+ {
3160
+ class: `form-select ${
3161
+ !builderSettings.entryPointType ||
3162
+ builderSettings.entryPointType === "view" ||
3163
+ builderSettings.entryPointType === "page"
3164
+ ? "d-none"
3165
+ : ""
3166
+ }`,
3167
+ ...(builderSettings.entryPointType === "pagegroup"
3168
+ ? { name: "entryPoint" }
3169
+ : {}),
3170
+ id: "pagegroupInputID",
3171
+ },
3172
+ pageGroups
3173
+ .map((group) =>
3174
+ option(
3175
+ {
3176
+ value: group.name,
3177
+ selected:
3178
+ builderSettings.entryPointType ===
3179
+ "pagegroup" &&
3180
+ builderSettings.entryPoint === group.name,
3181
+ },
3182
+ group.name
3183
+ )
3184
+ )
3185
+ .join("")
3186
+ )
2663
3187
  )
2664
- )
2665
- ),
2666
- div(
2667
- { class: "col-sm-4" },
2668
- // android
3188
+ ),
2669
3189
  div(
2670
- { class: "container ps-0" },
3190
+ { class: "col-sm-4" },
3191
+ // android
2671
3192
  div(
2672
- { class: "row" },
2673
- div({ class: "col-sm-8" }, req.__("android")),
3193
+ { class: "container ps-0" },
2674
3194
  div(
2675
- { class: "col-sm" },
2676
- input({
2677
- type: "checkbox",
2678
- class: "form-check-input",
2679
- name: "androidPlatform",
2680
- id: "androidCheckboxId",
2681
- onClick: "toggle_android_platform()",
2682
- checked: builderSettings.androidPlatform === "on",
2683
- })
2684
- )
2685
- ),
2686
- // iOS
2687
- div(
2688
- { class: "row" },
2689
- div({ class: "col-sm-8" }, req.__("iOS")),
3195
+ { class: "row" },
3196
+ div({ class: "col-sm-8" }, req.__("android")),
3197
+ div(
3198
+ { class: "col-sm" },
3199
+ input({
3200
+ type: "checkbox",
3201
+ class: "form-check-input",
3202
+ name: "androidPlatform",
3203
+ id: "androidCheckboxId",
3204
+ onClick: "toggle_android_platform()",
3205
+ checked:
3206
+ builderSettings.androidPlatform === "on",
3207
+ })
3208
+ )
3209
+ ),
3210
+ // iOS
2690
3211
  div(
2691
- { class: "col-sm" },
2692
- input({
2693
- type: "checkbox",
2694
- class: "form-check-input",
2695
- name: "iOSPlatform",
2696
- id: "iOSCheckboxId",
2697
- checked: builderSettings.iOSPlatform === "on",
2698
- })
3212
+ { class: "row" },
3213
+ div({ class: "col-sm-8" }, req.__("iOS")),
3214
+ div(
3215
+ { class: "col-sm" },
3216
+ input({
3217
+ type: "checkbox",
3218
+ class: "form-check-input",
3219
+ name: "iOSPlatform",
3220
+ id: "iOSCheckboxId",
3221
+ checked: builderSettings.iOSPlatform === "on",
3222
+ })
3223
+ )
2699
3224
  )
2700
3225
  )
3226
+ ),
3227
+ // android with docker
3228
+ div(
3229
+ { class: "col-sm-1 d-flex justify-content-center" },
3230
+ input({
3231
+ type: "checkbox",
3232
+ class: "form-check-input",
3233
+ name: "useDocker",
3234
+ id: "dockerCheckboxId",
3235
+ hidden: builderSettings.androidPlatform !== "on",
3236
+ checked: builderSettings.useDocker === "on",
3237
+ })
2701
3238
  )
2702
3239
  ),
2703
- // android with docker
2704
- div(
2705
- { class: "col-sm-1 d-flex justify-content-center" },
2706
- input({
2707
- type: "checkbox",
2708
- class: "form-check-input",
2709
- name: "useDocker",
2710
- id: "dockerCheckboxId",
2711
- hidden: builderSettings.androidPlatform !== "on",
2712
- checked: builderSettings.useDocker === "on",
2713
- })
2714
- )
2715
- ),
2716
- // app name
2717
- div(
2718
- { class: "row pb-2" },
2719
- div(
2720
- { class: "col-sm-10" },
2721
- label(
2722
- {
2723
- for: "appFileInputId",
2724
- class: "form-label fw-bold",
2725
- },
2726
- req.__("App name")
2727
- ),
2728
- input({
2729
- type: "text",
2730
- class: "form-control",
2731
- name: "appName",
2732
- id: "appNameInputId",
2733
- placeholder: "SaltcornMobileApp",
2734
- value: builderSettings.appName || "",
2735
- })
2736
- )
2737
- ),
2738
- // app id
2739
- div(
2740
- { class: "row pb-2" },
3240
+ // app name
2741
3241
  div(
2742
- { class: "col-sm-10" },
2743
- label(
2744
- {
2745
- for: "appIdInputId",
2746
- class: "form-label fw-bold",
2747
- },
2748
- req.__("App ID")
2749
- ),
2750
- input({
2751
- type: "text",
2752
- class: "form-control",
2753
- name: "appId",
2754
- id: "appIdInputId",
2755
- placeholder: "com.saltcorn.mobile.app",
2756
- value: builderSettings.appId || "",
2757
- })
2758
- )
2759
- ),
2760
- // app version
2761
- div(
2762
- { class: "row pb-2" },
2763
- div(
2764
- { class: "col-sm-10" },
2765
- label(
2766
- {
2767
- for: "appVersionInputId",
2768
- class: "form-label fw-bold",
2769
- },
2770
- req.__("App version")
2771
- ),
2772
- input({
2773
- type: "text",
2774
- class: "form-control",
2775
- name: "appVersion",
2776
- id: "appVersionInputId",
2777
- placeholder: "0.0.1",
2778
- value: builderSettings.appVersion || "",
2779
- }),
3242
+ { class: "row pb-2" },
2780
3243
  div(
2781
- { class: "invalid-feedback" },
2782
- req.__(
2783
- "Please enter a version in the format 'x.y.z' (e.g. 0.0.1 with numbers from 0 to 999) or leave it empty."
2784
- )
3244
+ { class: "col-sm-10" },
3245
+ label(
3246
+ {
3247
+ for: "appFileInputId",
3248
+ class: "form-label fw-bold",
3249
+ },
3250
+ req.__("App name")
3251
+ ),
3252
+ input({
3253
+ type: "text",
3254
+ class: "form-control",
3255
+ name: "appName",
3256
+ id: "appNameInputId",
3257
+ placeholder: "SaltcornMobileApp",
3258
+ value: builderSettings.appName || "",
3259
+ })
2785
3260
  )
2786
- )
2787
- ),
2788
- // server url
2789
- div(
2790
- { class: "row pb-2" },
3261
+ ),
3262
+ // app id
2791
3263
  div(
2792
- { class: "col-sm-10" },
2793
- label(
2794
- {
2795
- for: "serverURLInputId",
2796
- class: "form-label fw-bold",
2797
- },
2798
- req.__("Server URL")
2799
- ),
2800
- input({
2801
- type: "text",
2802
- class: "form-control",
2803
- name: "serverURL",
2804
- id: "serverURLInputId",
2805
- value: builderSettings.serverURL || "",
2806
- placeholder: getState().getConfig("base_url") || "",
2807
- })
2808
- )
2809
- ),
2810
- // app icon
2811
- div(
2812
- { class: "row pb-2" },
3264
+ { class: "row pb-2" },
3265
+ div(
3266
+ { class: "col-sm-10" },
3267
+ label(
3268
+ {
3269
+ for: "appIdInputId",
3270
+ class: "form-label fw-bold",
3271
+ },
3272
+ req.__("App ID")
3273
+ ),
3274
+ input({
3275
+ type: "text",
3276
+ class: "form-control",
3277
+ name: "appId",
3278
+ id: "appIdInputId",
3279
+ placeholder: "com.saltcorn.mobile.app",
3280
+ value: builderSettings.appId || "",
3281
+ })
3282
+ )
3283
+ ),
3284
+ // app version
2813
3285
  div(
2814
- { class: "col-sm-10" },
2815
- label(
2816
- {
2817
- for: "appIconInputId",
2818
- class: "form-label fw-bold",
2819
- },
2820
- req.__("App icon")
2821
- ),
2822
- select(
2823
- {
2824
- class: "form-select",
2825
- name: "appIcon",
2826
- id: "appIconInputId",
2827
- },
2828
- [
2829
- option({ value: "" }, ""),
2830
- ...images.map((image) =>
2831
- option(
2832
- {
2833
- value: image.location,
2834
- selected:
2835
- builderSettings.appIcon === image.location,
2836
- },
2837
- image.filename
2838
- )
2839
- ),
2840
- ].join("")
3286
+ { class: "row pb-2" },
3287
+ div(
3288
+ { class: "col-sm-10" },
3289
+ label(
3290
+ {
3291
+ for: "appVersionInputId",
3292
+ class: "form-label fw-bold",
3293
+ },
3294
+ req.__("App version")
3295
+ ),
3296
+ input({
3297
+ type: "text",
3298
+ class: "form-control",
3299
+ name: "appVersion",
3300
+ id: "appVersionInputId",
3301
+ placeholder: "0.0.1",
3302
+ value: builderSettings.appVersion || "",
3303
+ }),
3304
+ div(
3305
+ { class: "invalid-feedback" },
3306
+ req.__(
3307
+ "Please enter a version in the format 'x.y.z' (e.g. 0.0.1 with numbers from 0 to 999) or leave it empty."
3308
+ )
3309
+ )
2841
3310
  )
2842
- )
2843
- ),
2844
- div(
2845
- { class: "row pb-3" },
3311
+ ),
3312
+ // server url
2846
3313
  div(
2847
- { class: "col-sm-10" },
2848
- label(
2849
- {
2850
- for: "splashPageInputId",
2851
- class: "form-label fw-bold",
2852
- },
2853
- req.__("Splash Page")
2854
- ),
2855
- select(
2856
- {
2857
- class: "form-select",
2858
- name: "splashPage",
2859
- id: "splashPageInputId",
2860
- },
2861
- [
2862
- option({ value: "" }, ""),
2863
- ...pages.map((page) =>
2864
- option(
2865
- {
2866
- value: page.name,
2867
- selected:
2868
- builderSettings.splashPage === page.name,
2869
- },
2870
- page.name
2871
- )
2872
- ),
2873
- ].join("")
3314
+ { class: "row pb-2" },
3315
+ div(
3316
+ { class: "col-sm-10" },
3317
+ label(
3318
+ {
3319
+ for: "serverURLInputId",
3320
+ class: "form-label fw-bold",
3321
+ },
3322
+ req.__("Server URL")
3323
+ ),
3324
+ input({
3325
+ type: "text",
3326
+ class: "form-control",
3327
+ name: "serverURL",
3328
+ id: "serverURLInputId",
3329
+ value: builderSettings.serverURL || "",
3330
+ placeholder: getState().getConfig("base_url") || "",
3331
+ })
2874
3332
  )
2875
- )
2876
- ),
2877
- // auto public login box
2878
- div(
2879
- { class: "row pb-2" },
3333
+ ),
3334
+ // app icon
2880
3335
  div(
2881
- { class: "col-sm-10" },
2882
- input({
2883
- type: "checkbox",
2884
- id: "autoPublLoginId",
2885
- class: "form-check-input me-2",
2886
- name: "autoPublicLogin",
2887
- checked: builderSettings.autoPublicLogin === "on",
2888
- }),
2889
- label(
2890
- {
2891
- for: "autoPublLoginId",
2892
- class: "form-label fw-bold mb-0",
2893
- },
2894
- req.__("Auto public login")
2895
- ),
2896
- div(),
2897
- i(
2898
- req.__(
2899
- "When enabled, you will be logged in as a public user without any login screen."
3336
+ { class: "row pb-2" },
3337
+ div(
3338
+ { class: "col-sm-10" },
3339
+ label(
3340
+ {
3341
+ for: "appIconInputId",
3342
+ class: "form-label fw-bold",
3343
+ },
3344
+ req.__("App icon")
3345
+ ),
3346
+ select(
3347
+ {
3348
+ class: "form-select",
3349
+ name: "appIcon",
3350
+ id: "appIconInputId",
3351
+ },
3352
+ [
3353
+ option({ value: "" }, ""),
3354
+ ...images.map((image) =>
3355
+ option(
3356
+ {
3357
+ value: image.location,
3358
+ selected:
3359
+ builderSettings.appIcon === image.location,
3360
+ },
3361
+ image.filename
3362
+ )
3363
+ ),
3364
+ ].join("")
2900
3365
  )
2901
3366
  )
2902
- )
2903
- ),
2904
- // show continue as public user link
2905
- div(
2906
- { class: "row pb-2" },
3367
+ ),
2907
3368
  div(
2908
- { class: "col-sm-10" },
2909
- input({
2910
- type: "checkbox",
2911
- id: "showContAsPublId",
2912
- class: "form-check-input me-2",
2913
- name: "showContinueAsPublicUser",
2914
- checked:
2915
- builderSettings.showContinueAsPublicUser === "on",
2916
- }),
2917
- label(
2918
- {
2919
- for: "showContAsPublId",
2920
- class: "form-label fw-bold mb-0",
2921
- },
2922
- req.__("Show 'Continue as public user' link")
2923
- ),
2924
- div(),
2925
- i(
2926
- req.__(
2927
- "When enabled, the login screen shows you a link to login as public user."
3369
+ { class: "row pb-3" },
3370
+ div(
3371
+ { class: "col-sm-10" },
3372
+ label(
3373
+ {
3374
+ for: "splashPageInputId",
3375
+ class: "form-label fw-bold",
3376
+ },
3377
+ req.__("Splash Page")
3378
+ ),
3379
+ select(
3380
+ {
3381
+ class: "form-select",
3382
+ name: "splashPage",
3383
+ id: "splashPageInputId",
3384
+ },
3385
+ [
3386
+ option({ value: "" }, ""),
3387
+ ...pages.map((page) =>
3388
+ option(
3389
+ {
3390
+ value: page.name,
3391
+ selected:
3392
+ builderSettings.splashPage === page.name,
3393
+ },
3394
+ page.name
3395
+ )
3396
+ ),
3397
+ ].join("")
2928
3398
  )
2929
3399
  )
2930
- )
2931
- ),
2932
-
2933
- // build type
2934
- div(
2935
- { class: "row pb-3 pt-2" },
3400
+ ),
3401
+ // auto public login box
2936
3402
  div(
2937
- { class: "col-sm-10" },
2938
- label(
2939
- {
2940
- for: "splashPageInputId",
2941
- class: "form-label fw-bold",
2942
- },
2943
- req.__("Build type")
2944
- ),
2945
-
3403
+ { class: "row pb-2" },
2946
3404
  div(
2947
- { class: "form-check" },
3405
+ { class: "col-sm-10" },
2948
3406
  input({
2949
- type: "radio",
2950
- id: "debugBuildTypeId",
3407
+ type: "checkbox",
3408
+ id: "autoPublLoginId",
2951
3409
  class: "form-check-input me-2",
2952
- name: "buildType",
2953
- value: "debug",
2954
- checked: builderSettings.buildType === "debug",
3410
+ name: "autoPublicLogin",
3411
+ checked: builderSettings.autoPublicLogin === "on",
2955
3412
  }),
2956
3413
  label(
2957
3414
  {
2958
- for: "debugBuildTypeId",
2959
- class: "form-label",
3415
+ for: "autoPublLoginId",
3416
+ class: "form-label fw-bold mb-0",
2960
3417
  },
2961
- req.__("debug")
3418
+ req.__("Auto public login")
3419
+ ),
3420
+ div(),
3421
+ i(
3422
+ req.__(
3423
+ "When enabled, you will be logged in as a public user without any login screen."
3424
+ )
2962
3425
  )
2963
- ),
3426
+ )
3427
+ ),
3428
+ // show continue as public user link
3429
+ div(
3430
+ { class: "row pb-2" },
2964
3431
  div(
2965
- { class: "form-check" },
3432
+ { class: "col-sm-10" },
2966
3433
  input({
2967
- type: "radio",
2968
- id: "releaseBuildTypeId",
3434
+ type: "checkbox",
3435
+ id: "showContAsPublId",
2969
3436
  class: "form-check-input me-2",
2970
- name: "buildType",
2971
- value: "release",
3437
+ name: "showContinueAsPublicUser",
2972
3438
  checked:
2973
- builderSettings.buildType === "release" ||
2974
- !builderSettings.buildType,
3439
+ builderSettings.showContinueAsPublicUser === "on",
2975
3440
  }),
2976
3441
  label(
2977
3442
  {
2978
- for: "releaseBuildTypeId",
2979
- class: "form-label",
3443
+ for: "showContAsPublId",
3444
+ class: "form-label fw-bold mb-0",
2980
3445
  },
2981
- req.__("release")
3446
+ req.__("Show 'Continue as public user' link")
3447
+ ),
3448
+ div(),
3449
+ i(
3450
+ req.__(
3451
+ "When enabled, the login screen shows you a link to login as public user."
3452
+ )
2982
3453
  )
2983
3454
  )
2984
- )
2985
- ),
2986
- // included/excluded plugins
2987
- div(
2988
- {
2989
- id: "pluginsSelectorId",
2990
- class: "row pb-4",
2991
- },
2992
- div(
2993
- label({ class: "form-label fw-bold" }, req.__("Plugins"))
2994
3455
  ),
3456
+
3457
+ // allow clear text traffic
2995
3458
  div(
2996
- { class: "container" },
3459
+ { class: "row pb-2" },
2997
3460
  div(
2998
- { class: "row" },
2999
- div(
3000
- { class: "col-sm-4 text-center" },
3001
- req.__("exclude")
3461
+ { class: "col-sm-10" },
3462
+ input({
3463
+ type: "checkbox",
3464
+ id: "allowClearTextTrafficId",
3465
+ class: "form-check-input me-2 mb-0 ",
3466
+ name: "allowClearTextTraffic",
3467
+ checked:
3468
+ builderSettings.allowClearTextTraffic === "on",
3469
+ }),
3470
+ label(
3471
+ {
3472
+ for: "allowClearTextTrafficId",
3473
+ class: "form-label fw-bold mb-0",
3474
+ },
3475
+ req.__("Allow clear text traffic")
3002
3476
  ),
3003
- div({ class: "col-sm-1" }),
3004
- div(
3005
- { class: "col-sm-4 text-center" },
3006
- req.__("include")
3477
+ div(),
3478
+ i(
3479
+ req.__(
3480
+ "Enable this to allow unsecure HTTP connections. Useful for local testing."
3481
+ )
3007
3482
  )
3008
- ),
3483
+ )
3484
+ ),
3485
+
3486
+ // build type
3487
+ div(
3488
+ { class: "row pb-3 pt-2" },
3009
3489
  div(
3010
- { class: "row" },
3490
+ { class: "col-sm-10" },
3491
+ label(
3492
+ {
3493
+ for: "splashPageInputId",
3494
+ class: "form-label fw-bold",
3495
+ },
3496
+ req.__("Build type")
3497
+ ),
3498
+
3011
3499
  div(
3012
- { class: "col-sm-4" },
3013
- select(
3500
+ { class: "form-check" },
3501
+ input({
3502
+ type: "radio",
3503
+ id: "debugBuildTypeId",
3504
+ class: "form-check-input me-2",
3505
+ name: "buildType",
3506
+ value: "debug",
3507
+ checked: builderSettings.buildType === "debug",
3508
+ }),
3509
+ label(
3014
3510
  {
3015
- id: "excluded-plugins-select-id",
3016
- class: "form-control form-select",
3017
- multiple: true,
3511
+ for: "debugBuildTypeId",
3512
+ class: "form-label",
3018
3513
  },
3019
- plugins
3020
- .filter(
3021
- (plugin) =>
3022
- builderSettings.excludedPlugins?.indexOf(
3023
- plugin.name
3024
- ) >= 0
3025
- )
3026
- .map((plugin) =>
3027
- option({
3028
- id: `${plugin.name}_excluded_opt`,
3029
- value: plugin.name,
3030
- label: plugin.name,
3031
- })
3032
- )
3514
+ req.__("debug")
3033
3515
  )
3034
3516
  ),
3035
3517
  div(
3036
- { class: "col-sm-1 d-flex justify-content-center" },
3037
- div(
3038
- div(
3039
- button(
3040
- {
3041
- id: "move-plugin-right-btn-id",
3042
- type: "button",
3043
- onClick: `move_plugin_to_included()`,
3044
- class: "btn btn-light pt-1 mb-1",
3045
- },
3046
- i({ class: "fas fa-arrow-right" })
3047
- )
3048
- ),
3049
- div(
3050
- button(
3051
- {
3052
- id: "move-plugin-left-btn-id",
3053
- type: "button",
3054
- onClick: `move_plugin_to_excluded()`,
3055
- class: "btn btn-light pt-1",
3056
- },
3057
- i({ class: "fas fa-arrow-left" })
3058
- )
3059
- )
3060
- )
3061
- ),
3062
- div(
3063
- { class: "col-sm-4" },
3064
- select(
3518
+ { class: "form-check" },
3519
+ input({
3520
+ type: "radio",
3521
+ id: "releaseBuildTypeId",
3522
+ class: "form-check-input me-2",
3523
+ name: "buildType",
3524
+ value: "release",
3525
+ checked:
3526
+ builderSettings.buildType === "release" ||
3527
+ !builderSettings.buildType,
3528
+ }),
3529
+ label(
3065
3530
  {
3066
- id: "included-plugins-select-id",
3067
- class: "form-control form-select",
3068
- multiple: true,
3531
+ for: "releaseBuildTypeId",
3532
+ class: "form-label",
3069
3533
  },
3070
- plugins
3071
- .filter(
3072
- (plugin) =>
3073
- !builderSettings.excludedPlugins ||
3074
- builderSettings.excludedPlugins.indexOf(
3075
- plugin.name
3076
- ) < 0
3077
- )
3078
- .map((plugin) =>
3079
- option({
3080
- id: `${plugin.name}_included_opt`,
3081
- value: plugin.name,
3082
- label: plugin.name,
3083
- })
3084
- )
3534
+ req.__("release")
3085
3535
  )
3086
3536
  )
3087
3537
  )
3088
- )
3089
- ),
3090
-
3091
- // allow offline mode box
3092
- div(
3093
- { class: "row pb-2 mt-2" },
3538
+ ),
3539
+ // included/excluded plugins
3094
3540
  div(
3095
- { class: "col-sm-10" },
3096
- input({
3097
- type: "checkbox",
3098
- id: "offlineModeBoxId",
3099
- class: "form-check-input me-2 mb-0 ",
3100
- name: "allowOfflineMode",
3101
- onClick: "toggle_tbl_sync()",
3102
- checked: builderSettings.allowOfflineMode === "on",
3103
- }),
3104
- label(
3105
- {
3106
- for: "offlineModeBoxId",
3107
- class: "form-label fw-bold mb-0",
3108
- },
3109
- req.__("Allow offline mode")
3110
- ),
3111
- div(),
3112
- i(
3113
- req.__(
3114
- "Enable this to integrate offline/online Synchronization into your app."
3541
+ {
3542
+ id: "pluginsSelectorId",
3543
+ class: "row pb-4",
3544
+ },
3545
+ div(
3546
+ label(
3547
+ { class: "form-label fw-bold" },
3548
+ req.__("Plugins")
3115
3549
  )
3116
- )
3117
- )
3118
- ),
3119
-
3120
- div(
3121
- {
3122
- id: "tblSyncSelectorId",
3123
- class: "mb-3 mt-1",
3124
- hidden: builderSettings.allowOfflineMode !== "on",
3125
- },
3126
- p({ class: "h3 ps-3" }, "Synchronization settings"),
3127
- div(
3128
- { class: "form-group border border-2 p-3 rounded" },
3129
-
3550
+ ),
3130
3551
  div(
3552
+ { class: "container" },
3131
3553
  div(
3132
- {
3133
- class: "row pb-3",
3134
- },
3554
+ { class: "row" },
3135
3555
  div(
3136
- label(
3137
- { class: "form-label fw-bold" },
3138
- req.__("Tables to synchronize") +
3139
- a(
3140
- {
3141
- href: "javascript:ajax_modal('/admin/help/Capacitor Builder?')",
3142
- },
3143
- i({ class: "fas fa-question-circle ps-1" })
3556
+ { class: "col-sm-4 text-center" },
3557
+ req.__("exclude")
3558
+ ),
3559
+ div({ class: "col-sm-1" }),
3560
+ div(
3561
+ { class: "col-sm-4 text-center" },
3562
+ req.__("include")
3563
+ )
3564
+ ),
3565
+ div(
3566
+ { class: "row" },
3567
+ div(
3568
+ { class: "col-sm-4" },
3569
+ select(
3570
+ {
3571
+ id: "excluded-plugins-select-id",
3572
+ class: "form-control form-select",
3573
+ multiple: true,
3574
+ },
3575
+ plugins
3576
+ .filter(
3577
+ (plugin) =>
3578
+ builderSettings.excludedPlugins?.indexOf(
3579
+ plugin.name
3580
+ ) >= 0
3581
+ )
3582
+ .map((plugin) =>
3583
+ option({
3584
+ id: `${plugin.name}_excluded_opt`,
3585
+ value: plugin.name,
3586
+ label: plugin.name,
3587
+ })
3144
3588
  )
3145
3589
  )
3146
3590
  ),
3147
3591
  div(
3148
- { class: "container" },
3592
+ { class: "col-sm-1 d-flex justify-content-center" },
3149
3593
  div(
3150
- { class: "row" },
3151
- div(
3152
- { class: "col-sm-4 text-center" },
3153
- req.__("unsynched")
3154
- ),
3155
- div({ class: "col-sm-1" }),
3156
3594
  div(
3157
- { class: "col-sm-4 text-center" },
3158
- req.__("synched")
3159
- )
3160
- ),
3161
- div(
3162
- { class: "row" },
3163
- div(
3164
- { class: "col-sm-4" },
3165
- select(
3595
+ button(
3166
3596
  {
3167
- id: "unsynched-tbls-select-id",
3168
- class: "form-control form-select",
3169
- multiple: true,
3597
+ id: "move-plugin-right-btn-id",
3598
+ type: "button",
3599
+ onClick: `move_plugin_to_included()`,
3600
+ class: "btn btn-light pt-1 mb-1",
3170
3601
  },
3171
- withSyncInfo
3172
- .filter(
3173
- (table) =>
3174
- !builderSettings.synchedTables ||
3175
- builderSettings.synchedTables.indexOf(
3176
- table.name
3177
- ) < 0
3178
- )
3179
- .map((table) =>
3180
- option({
3181
- id: `${table.name}_unsynched_opt`,
3182
- value: table.name,
3183
- label: table.name,
3184
- })
3185
- )
3602
+ i({ class: "fas fa-arrow-right" })
3186
3603
  )
3187
3604
  ),
3188
3605
  div(
3189
- {
3190
- class:
3191
- "col-sm-1 d-flex justify-content-center",
3192
- },
3193
- div(
3194
- div(
3195
- button(
3196
- {
3197
- id: "move-right-btn-id",
3198
- type: "button",
3199
- onClick: `move_to_synched()`,
3200
- class: "btn btn-light pt-1 mb-1",
3201
- },
3202
- i({ class: "fas fa-arrow-right" })
3203
- )
3204
- ),
3205
- div(
3206
- button(
3207
- {
3208
- id: "move-left-btn-id",
3209
- type: "button",
3210
- onClick: `move_to_unsynched()`,
3211
- class: "btn btn-light pt-1",
3212
- },
3213
- i({ class: "fas fa-arrow-left" })
3214
- )
3606
+ button(
3607
+ {
3608
+ id: "move-plugin-left-btn-id",
3609
+ type: "button",
3610
+ onClick: `move_plugin_to_excluded()`,
3611
+ class: "btn btn-light pt-1",
3612
+ },
3613
+ i({ class: "fas fa-arrow-left" })
3614
+ )
3615
+ )
3616
+ )
3617
+ ),
3618
+ div(
3619
+ { class: "col-sm-4" },
3620
+ select(
3621
+ {
3622
+ id: "included-plugins-select-id",
3623
+ class: "form-control form-select",
3624
+ multiple: true,
3625
+ },
3626
+ plugins
3627
+ .filter(
3628
+ (plugin) =>
3629
+ !builderSettings.excludedPlugins ||
3630
+ builderSettings.excludedPlugins.indexOf(
3631
+ plugin.name
3632
+ ) < 0
3633
+ )
3634
+ .map((plugin) =>
3635
+ option({
3636
+ id: `${plugin.name}_included_opt`,
3637
+ value: plugin.name,
3638
+ label: plugin.name,
3639
+ })
3640
+ )
3641
+ )
3642
+ )
3643
+ )
3644
+ )
3645
+ ),
3646
+
3647
+ // allow offline mode box
3648
+ div(
3649
+ { class: "row pb-2 mt-2" },
3650
+ div(
3651
+ { class: "col-sm-10" },
3652
+ input({
3653
+ type: "checkbox",
3654
+ id: "offlineModeBoxId",
3655
+ class: "form-check-input me-2 mb-0 ",
3656
+ name: "allowOfflineMode",
3657
+ onClick: "toggle_tbl_sync()",
3658
+ checked: builderSettings.allowOfflineMode === "on",
3659
+ }),
3660
+ label(
3661
+ {
3662
+ for: "offlineModeBoxId",
3663
+ class: "form-label fw-bold mb-0",
3664
+ },
3665
+ req.__("Allow offline mode")
3666
+ ),
3667
+ div(),
3668
+ i(
3669
+ req.__(
3670
+ "Enable this to integrate offline/online Synchronization into your app."
3671
+ )
3672
+ )
3673
+ )
3674
+ ),
3675
+
3676
+ div(
3677
+ {
3678
+ id: "tblSyncSelectorId",
3679
+ class: "mb-3 mt-1",
3680
+ hidden: builderSettings.allowOfflineMode !== "on",
3681
+ },
3682
+ p({ class: "h3 ps-3" }, "Synchronization settings"),
3683
+ div(
3684
+ { class: "form-group border border-2 p-3 rounded" },
3685
+
3686
+ div(
3687
+ div(
3688
+ {
3689
+ class: "row pb-3",
3690
+ },
3691
+ div(
3692
+ label(
3693
+ { class: "form-label fw-bold" },
3694
+ req.__("Tables to synchronize") +
3695
+ a(
3696
+ {
3697
+ href: "javascript:ajax_modal('/admin/help/Capacitor Builder?')",
3698
+ },
3699
+ i({ class: "fas fa-question-circle ps-1" })
3215
3700
  )
3701
+ )
3702
+ ),
3703
+ div(
3704
+ { class: "container" },
3705
+ div(
3706
+ { class: "row" },
3707
+ div(
3708
+ { class: "col-sm-4 text-center" },
3709
+ req.__("unsynched")
3710
+ ),
3711
+ div({ class: "col-sm-1" }),
3712
+ div(
3713
+ { class: "col-sm-4 text-center" },
3714
+ req.__("synched")
3216
3715
  )
3217
3716
  ),
3218
3717
  div(
3219
- { class: "col-sm-4" },
3220
- select(
3718
+ { class: "row" },
3719
+ div(
3720
+ { class: "col-sm-4" },
3721
+ select(
3722
+ {
3723
+ id: "unsynched-tbls-select-id",
3724
+ class: "form-control form-select",
3725
+ multiple: true,
3726
+ },
3727
+ withSyncInfo
3728
+ .filter(
3729
+ (table) =>
3730
+ !builderSettings.synchedTables ||
3731
+ builderSettings.synchedTables.indexOf(
3732
+ table.name
3733
+ ) < 0
3734
+ )
3735
+ .map((table) =>
3736
+ option({
3737
+ id: `${table.name}_unsynched_opt`,
3738
+ value: table.name,
3739
+ label: table.name,
3740
+ })
3741
+ )
3742
+ )
3743
+ ),
3744
+ div(
3221
3745
  {
3222
- id: "synched-tbls-select-id",
3223
- class: "form-control form-select",
3224
- multiple: true,
3746
+ class:
3747
+ "col-sm-1 d-flex justify-content-center",
3225
3748
  },
3226
- withSyncInfo
3227
- .filter(
3228
- (table) =>
3229
- builderSettings.synchedTables?.indexOf(
3230
- table.name
3231
- ) >= 0
3232
- )
3233
- .map((table) =>
3234
- option({
3235
- id: `${table.name}_synched_opt`,
3236
- value: table.name,
3237
- label: table.name,
3238
- })
3749
+ div(
3750
+ div(
3751
+ button(
3752
+ {
3753
+ id: "move-right-btn-id",
3754
+ type: "button",
3755
+ onClick: `move_to_synched()`,
3756
+ class: "btn btn-light pt-1 mb-1",
3757
+ },
3758
+ i({ class: "fas fa-arrow-right" })
3759
+ )
3760
+ ),
3761
+ div(
3762
+ button(
3763
+ {
3764
+ id: "move-left-btn-id",
3765
+ type: "button",
3766
+ onClick: `move_to_unsynched()`,
3767
+ class: "btn btn-light pt-1",
3768
+ },
3769
+ i({ class: "fas fa-arrow-left" })
3770
+ )
3239
3771
  )
3772
+ )
3773
+ ),
3774
+ div(
3775
+ { class: "col-sm-4" },
3776
+ select(
3777
+ {
3778
+ id: "synched-tbls-select-id",
3779
+ class: "form-control form-select",
3780
+ multiple: true,
3781
+ },
3782
+ withSyncInfo
3783
+ .filter(
3784
+ (table) =>
3785
+ builderSettings.synchedTables?.indexOf(
3786
+ table.name
3787
+ ) >= 0
3788
+ )
3789
+ .map((table) =>
3790
+ option({
3791
+ id: `${table.name}_synched_opt`,
3792
+ value: table.name,
3793
+ label: table.name,
3794
+ })
3795
+ )
3796
+ )
3240
3797
  )
3241
3798
  )
3242
3799
  )
3243
3800
  )
3244
- )
3245
- ),
3801
+ ),
3246
3802
 
3247
- // sync when connection restored
3248
- div(
3249
- { class: "row pb-2 my-2" },
3803
+ // sync when connection restored
3250
3804
  div(
3251
- { class: "col-sm-10" },
3252
- input({
3253
- type: "checkbox",
3254
- id: "connRestoredBoxId",
3255
- class: "form-check-input me-2 mb-0 ",
3256
- name: "syncOnReconnect",
3257
- checked: builderSettings.syncOnReconnect === "on",
3258
- }),
3259
- label(
3260
- {
3261
- for: "connRestoredBoxId",
3262
- class: "form-label fw-bold mb-0",
3263
- },
3264
- req.__("Sync on reconnect")
3265
- ),
3266
- div(),
3267
- i(
3268
- req.__(
3269
- "Synchronize when the internet reconnects and automatically end the offline mode. " +
3270
- "When disabled, you'll see a prompt to do it manually."
3805
+ { class: "row pb-2 my-2" },
3806
+ div(
3807
+ { class: "col-sm-10" },
3808
+ input({
3809
+ type: "checkbox",
3810
+ id: "connRestoredBoxId",
3811
+ class: "form-check-input me-2 mb-0 ",
3812
+ name: "syncOnReconnect",
3813
+ checked: builderSettings.syncOnReconnect === "on",
3814
+ }),
3815
+ label(
3816
+ {
3817
+ for: "connRestoredBoxId",
3818
+ class: "form-label fw-bold mb-0",
3819
+ },
3820
+ req.__("Sync on reconnect")
3821
+ ),
3822
+ div(),
3823
+ i(
3824
+ req.__(
3825
+ "Run Synchronizations when the network connection is restored."
3826
+ )
3271
3827
  )
3272
3828
  )
3273
- )
3274
- ),
3829
+ ),
3275
3830
 
3276
- // push sync
3277
- div(
3278
- { class: "row pb-2 my-2" },
3831
+ // sync when the app resumes
3279
3832
  div(
3280
- { class: "col-sm-10" },
3281
- input({
3282
- type: "checkbox",
3283
- id: "pushSyncBoxId",
3284
- class: "form-check-input me-2 mb-0 ",
3285
- name: "pushSync",
3286
- checked: builderSettings.pushSync === "on",
3287
- }),
3288
- label(
3289
- {
3290
- for: "pushSyncBoxId",
3291
- class: "form-label fw-bold mb-0",
3292
- },
3293
- req.__("Push sync")
3294
- ),
3295
- div(),
3296
- i(
3297
- req.__(
3298
- "Run Synchronizations when the server sends a push notification. " +
3299
- "On Android, this requires a Firebase JSON key and a Google Services File (see below)."
3833
+ { class: "row pb-2 my-2" },
3834
+ div(
3835
+ { class: "col-sm-10" },
3836
+ input({
3837
+ type: "checkbox",
3838
+ id: "appResumeSyncBoxId",
3839
+ class: "form-check-input me-2 mb-0 ",
3840
+ name: "syncOnAppResume",
3841
+ checked: builderSettings.syncOnAppResume === "on",
3842
+ }),
3843
+ label(
3844
+ {
3845
+ for: "appResumeSyncBoxId",
3846
+ class: "form-label fw-bold mb-0",
3847
+ },
3848
+ req.__("Sync on app resume")
3849
+ ),
3850
+ div(),
3851
+ i(
3852
+ req.__(
3853
+ "Run Synchronizations when the app is resumed from background."
3854
+ )
3300
3855
  )
3301
3856
  )
3302
- )
3303
- ),
3857
+ ),
3304
3858
 
3305
- // periodic sync interval
3306
- div(
3307
- { class: "row pb-2 mt-2" },
3859
+ // push sync
3308
3860
  div(
3309
- { class: "col-sm-10" },
3310
- label(
3311
- {
3312
- for: "syncIntervalInputId",
3313
- class: "form-label fw-bold mb-0 ",
3314
- },
3315
- req.__("Background Sync interval")
3316
- ),
3317
- input({
3318
- type: "text",
3319
- class: "form-control mb-0",
3320
- name: "syncInterval",
3321
- id: "syncIntervalInputId",
3322
- value: builderSettings.syncInterval || "",
3323
- }),
3324
- div(),
3325
- i(
3326
- req.__(
3327
- "Perdiodic interval (in minutes) to run synchronizations in the background. " +
3328
- "This is just a min interval, depending on system conditions, the actual time may be longer."
3861
+ { class: "row pb-2 my-2" },
3862
+ div(
3863
+ { class: "col-sm-10" },
3864
+ input({
3865
+ type: "checkbox",
3866
+ id: "pushSyncBoxId",
3867
+ class: "form-check-input me-2 mb-0 ",
3868
+ name: "pushSync",
3869
+ checked: builderSettings.pushSync === "on",
3870
+ }),
3871
+ label(
3872
+ {
3873
+ for: "pushSyncBoxId",
3874
+ class: "form-label fw-bold mb-0",
3875
+ },
3876
+ req.__("Push sync")
3877
+ ),
3878
+ div(),
3879
+ i(
3880
+ req.__(
3881
+ "Run Synchronizations when the server sends a push notification. " +
3882
+ "On Android, this requires a Firebase JSON key and a Google Services File (see below)."
3883
+ )
3884
+ )
3885
+ )
3886
+ ),
3887
+
3888
+ // periodic sync interval
3889
+ div(
3890
+ { class: "row pb-2 mt-2" },
3891
+ div(
3892
+ { class: "col-sm-10" },
3893
+ label(
3894
+ {
3895
+ for: "syncIntervalInputId",
3896
+ class: "form-label fw-bold mb-0 ",
3897
+ },
3898
+ req.__("Background Sync interval")
3899
+ ),
3900
+ input({
3901
+ type: "text",
3902
+ class: "form-control mb-0",
3903
+ name: "syncInterval",
3904
+ id: "syncIntervalInputId",
3905
+ value: builderSettings.syncInterval || "",
3906
+ }),
3907
+ div(),
3908
+ i(
3909
+ req.__(
3910
+ "Perdiodic interval (in minutes) to run synchronizations in the background. " +
3911
+ "This is just a min interval, depending on system conditions, the actual time may be longer."
3912
+ )
3329
3913
  )
3330
3914
  )
3331
3915
  )
3332
3916
  )
3333
3917
  )
3334
3918
  ),
3335
-
3336
- div({}, "&nbsp;"),
3337
-
3338
3919
  div(
3339
3920
  { class: "mt-3 mb-3" },
3340
- p({ class: "h3 ps-3" }, "Android configuration"),
3921
+ p(
3922
+ { class: "h3 ps-1" },
3923
+ button(
3924
+ {
3925
+ class: "btn btn-outline-secondary p-1 me-2",
3926
+ type: "button",
3927
+ "data-bs-toggle": "collapse",
3928
+ "data-bs-target": "#androidConfigFormGroupId",
3929
+ "aria-expanded": "false",
3930
+ "aria-controls": "androidConfigFormGroupId",
3931
+ },
3932
+ i({ class: "fas fa-chevron-down" })
3933
+ ) + "Android configuration"
3934
+ ),
3341
3935
  div(
3342
- { class: "form-group border border-2 p-3 rounded" },
3936
+ {
3937
+ id: "androidConfigFormGroupId",
3938
+ class:
3939
+ "form-group border border-2 p-3 rounded collapse",
3940
+ },
3343
3941
 
3344
3942
  div(
3345
3943
  { class: "row pb-3 pt-2" },
@@ -3639,176 +4237,18 @@ router.get(
3639
4237
  )
3640
4238
  )
3641
4239
  ),
3642
- div({}, "&nbsp;"),
3643
- div(
3644
- { class: "mt-3" },
3645
- p({ class: "h3 ps-3 mt-3" }, "iOS Configuration"),
3646
- div(
3647
- { class: "form-group border border-2 p-3 rounded" },
3648
- div(
3649
- { class: "mb-3" },
3650
- div(
3651
- { class: "row pb-3 pt-2" },
3652
- div(
3653
- label(
3654
- { class: "form-label fw-bold" },
3655
- req.__("xcodebuild") +
3656
- a(
3657
- {
3658
- href: "javascript:ajax_modal('/admin/help/xcodebuild?')",
3659
- },
3660
- i({ class: "fas fa-question-circle ps-1" })
3661
- )
3662
- )
3663
- ),
3664
- div(
3665
- { class: "col-sm-4" },
3666
- div(
3667
- {
3668
- id: "xcodebuildStatusId",
3669
- class: "",
3670
- },
3671
- xcodebuildAvailable
3672
- ? span(
3673
- req.__("installed"),
3674
- i({
3675
- class: "ps-2 fas fa-check text-success",
3676
- })
3677
- )
3678
- : span(
3679
- req.__("not available"),
3680
- i({
3681
- class: "ps-2 fas fa-times text-danger",
3682
- })
3683
- )
3684
- )
3685
- ),
3686
- div(
3687
- { class: "col-sm-4" },
3688
- // not sure if we should provide this
3689
- // button(
3690
- // {
3691
- // id: "installXCodeBtnId",
3692
- // type: "button",
3693
- // onClick: `install_xcode(this);`,
3694
- // class: "btn btn-warning",
3695
- // },
3696
- // req.__("install")
3697
- // ),
3698
- span(
3699
- {
3700
- role: "button",
3701
- onClick: "check_xcodebuild()",
3702
- },
3703
- span({ class: "ps-3" }, req.__("refresh")),
3704
- i({ class: "ps-2 fas fa-undo" })
3705
- )
3706
- )
3707
- ),
3708
- div(
3709
- {
3710
- class: `row mb-3 pb-3 ${
3711
- xcodebuildAvailable ? "" : "d-none"
3712
- }`,
3713
- id: "xcodebuildVersionBoxId",
3714
- },
3715
- div(
3716
- { class: "col-sm-4" },
3717
- span(
3718
- req.__("Version") +
3719
- span(
3720
- { id: "xcodebuildVersionId", class: "pe-2" },
3721
- `: ${xcodebuildVersion || "unknown"}`
3722
- ),
3723
- versionMarker(xcodebuildVersion || "0")
3724
- )
3725
- )
3726
- )
3727
- ),
3728
- // provisioning profile file
3729
- div(
3730
- { class: "row pb-3" },
3731
- div(
3732
- { class: "col-sm-10" },
3733
- label(
3734
- {
3735
- for: "provisioningProfileInputId",
3736
- class: "form-label fw-bold",
3737
- },
3738
- req.__("Provisioning Profile"),
3739
- a(
3740
- {
3741
- href: "javascript:ajax_modal('/admin/help/Provisioning Profile?')",
3742
- },
3743
- i({ class: "fas fa-question-circle ps-1" })
3744
- )
3745
- ),
3746
- select(
3747
- {
3748
- class: "form-select",
3749
- name: "provisioningProfile",
3750
- id: "provisioningProfileInputId",
3751
- },
3752
- [
3753
- option({ value: "" }, ""),
3754
- ...provisioningFiles.map((file) =>
3755
- option(
3756
- {
3757
- value: file.location,
3758
- selected:
3759
- builderSettings.provisioningProfile ===
3760
- file.location,
3761
- },
3762
- file.filename
3763
- )
3764
- ),
3765
- ].join("")
3766
- )
3767
- )
3768
- ),
3769
- // Share Extension provisioning profile
3770
- div(
3771
- { class: "row pb-3" },
3772
- div(
3773
- { class: "col-sm-10" },
3774
- label(
3775
- {
3776
- for: "shareProvisioningProfileInputId",
3777
- class: "form-label fw-bold",
3778
- },
3779
- req.__("Share Extension Provisioning Profile"),
3780
- a(
3781
- {
3782
- href: "javascript:ajax_modal('/admin/help/Provisioning Profile?')",
3783
- },
3784
- i({ class: "fas fa-question-circle ps-1" })
3785
- )
3786
- ),
3787
- select(
3788
- {
3789
- class: "form-select",
3790
- name: "shareProvisioningProfile",
3791
- id: "shareProvisioningProfileInputId",
3792
- },
3793
- [
3794
- option({ value: "" }, ""),
3795
- ...provisioningFiles.map((file) =>
3796
- option(
3797
- {
3798
- value: file.location,
3799
- selected:
3800
- builderSettings.shareProvisioningProfile ===
3801
- file.location,
3802
- },
3803
- file.filename
3804
- )
3805
- ),
3806
- ].join("")
3807
- )
3808
- )
3809
- )
3810
- )
3811
- )
4240
+
4241
+ buildIosConfigBox({
4242
+ req,
4243
+ isMac,
4244
+ xcodebuildAvailable,
4245
+ xcodebuildVersion,
4246
+ cocoaPodsAvailable,
4247
+ cocoaPodsVersion,
4248
+ provisioningFiles,
4249
+ allAppCfgFiles,
4250
+ builderSettings,
4251
+ })
3812
4252
  ),
3813
4253
  button(
3814
4254
  {
@@ -3932,6 +4372,7 @@ router.get(
3932
4372
  .readdirSync(buildDir)
3933
4373
  .map(async (outFile) => await File.from_file_on_disk(outFile, buildDir))
3934
4374
  );
4375
+
3935
4376
  const stepDesc =
3936
4377
  mode === "prepare"
3937
4378
  ? "_prepare_step"
@@ -3943,16 +4384,23 @@ router.get(
3943
4384
  )
3944
4385
  ? req.__("The build was successfully")
3945
4386
  : req.__("Unable to build the app");
4387
+ const appFilesTbl =
4388
+ files.length > 0 ? app_files_table(files, out_dir_name, req) : "";
3946
4389
  res.sendWrap(req.__(`Admin`), {
3947
4390
  above: [
3948
- {
3949
- type: "card",
3950
- title: req.__("Build Result"),
3951
- contents: div(resultMsg),
3952
- },
3953
- files.length > 0 ? app_files_table(files, out_dir_name, req) : "",
4391
+ mode !== "prepare"
4392
+ ? [
4393
+ {
4394
+ type: "card",
4395
+ title: req.__("Build Result"),
4396
+ contents: div(resultMsg),
4397
+ },
4398
+ appFilesTbl,
4399
+ ]
4400
+ : "",
4401
+
3954
4402
  mode === "prepare"
3955
- ? intermediate_build_result(out_dir_name, build_dir, req)
4403
+ ? intermediate_build_result(out_dir_name, build_dir, req, appFilesTbl)
3956
4404
  : "",
3957
4405
  ],
3958
4406
  });
@@ -4072,13 +4520,19 @@ router.post(
4072
4520
  showContinueAsPublicUser,
4073
4521
  allowOfflineMode,
4074
4522
  syncOnReconnect,
4523
+ syncOnAppResume,
4075
4524
  pushSync,
4076
4525
  syncInterval,
4077
4526
  synchedTables,
4078
4527
  includedPlugins,
4528
+ noProvisioningProfile,
4079
4529
  provisioningProfile,
4080
4530
  shareProvisioningProfile,
4531
+ appGroupId,
4532
+ apnSigningKey,
4533
+ apnSigningKeyId,
4081
4534
  buildType,
4535
+ allowClearTextTraffic,
4082
4536
  keystoreFile,
4083
4537
  keystoreAlias,
4084
4538
  keystorePassword,
@@ -4089,15 +4543,26 @@ router.post(
4089
4543
  when_trigger: "ReceiveMobileShareData",
4090
4544
  });
4091
4545
  let allowShareTo = receiveShareTriggers.length > 0;
4092
- if (allowShareTo && iOSPlatform && !shareProvisioningProfile) {
4093
- allowShareTo = false;
4094
- msgs.push({
4095
- type: "warning",
4096
- text: req.__(
4097
- "A ReceiveMobileShareData trigger exists, but no Share Extension Provisioning Profile is provided. " +
4098
- "Building without share to support."
4099
- ),
4100
- });
4546
+ if (allowShareTo && iOSPlatform) {
4547
+ if (!shareProvisioningProfile) {
4548
+ allowShareTo = false;
4549
+ msgs.push({
4550
+ type: "warning",
4551
+ text: req.__(
4552
+ "A ReceiveMobileShareData trigger exists, but no Share Extension Provisioning Profile is provided. " +
4553
+ "Building without share to support."
4554
+ ),
4555
+ });
4556
+ }
4557
+ // if (!appGroupId) {
4558
+ // msgs.push({
4559
+ // type: "warning",
4560
+ // text: req.__(
4561
+ // "A ReceiveMobileShareData trigger exists, but no App Group ID is provided. " +
4562
+ // "Only simple data like links will be supported"
4563
+ // ),
4564
+ // });
4565
+ // }
4101
4566
  }
4102
4567
  if (!includedPlugins) includedPlugins = [];
4103
4568
  if (!synchedTables) synchedTables = [];
@@ -4135,7 +4600,7 @@ router.post(
4135
4600
  });
4136
4601
  }
4137
4602
  if (iOSPlatform) {
4138
- if (!provisioningProfile)
4603
+ if (!provisioningProfile && !noProvisioningProfile)
4139
4604
  return res.json({
4140
4605
  error: req.__(
4141
4606
  "Please provide a Provisioning Profile for the iOS build."
@@ -4189,20 +4654,17 @@ router.post(
4189
4654
  if (!entryPointByRole) spawnParams.push("-e", entryPoint);
4190
4655
  if (useDocker) spawnParams.push("-d");
4191
4656
  if (androidPlatform) spawnParams.push("-p", "android");
4192
- if (iOSPlatform) {
4657
+ if (iOSPlatform) spawnParams.push("-p", "ios");
4658
+ if (noProvisioningProfile) spawnParams.push("--noProvisioningProfile");
4659
+ if (provisioningProfile)
4660
+ spawnParams.push("--provisioningProfile", provisioningProfile);
4661
+ if (allowShareTo && iOSPlatform) {
4662
+ mode = "prepare";
4193
4663
  spawnParams.push(
4194
- "-p",
4195
- "ios",
4196
- "--provisioningProfile",
4197
- provisioningProfile
4664
+ "--shareExtensionProvisioningProfile",
4665
+ shareProvisioningProfile
4198
4666
  );
4199
- if (allowShareTo) {
4200
- mode = "prepare";
4201
- spawnParams.push(
4202
- "--shareExtensionProvisioningProfile",
4203
- shareProvisioningProfile
4204
- );
4205
- }
4667
+ if (appGroupId) spawnParams.push("--appGroupId", appGroupId);
4206
4668
  }
4207
4669
  if (appName) spawnParams.push("--appName", appName);
4208
4670
  if (appId) spawnParams.push("--appId", appId);
@@ -4214,6 +4676,7 @@ router.post(
4214
4676
  if (syncInterval) spawnParams.push("--syncInterval", syncInterval);
4215
4677
  if (pushSync) spawnParams.push("--pushSync");
4216
4678
  if (syncOnReconnect) spawnParams.push("--syncOnReconnect");
4679
+ if (syncOnAppResume) spawnParams.push("--syncOnAppResume");
4217
4680
  if (allowShareTo) spawnParams.push("--allowShareTo");
4218
4681
  if (autoPublicLogin) spawnParams.push("--autoPublicLogin");
4219
4682
  if (showContinueAsPublicUser)
@@ -4233,6 +4696,7 @@ router.post(
4233
4696
  }
4234
4697
 
4235
4698
  if (buildType) spawnParams.push("--buildType", buildType);
4699
+ if (allowClearTextTraffic) spawnParams.push("--allowClearTextTraffic");
4236
4700
  if (keystoreFile) spawnParams.push("--androidKeystore", keystoreFile);
4237
4701
  if (keystoreAlias)
4238
4702
  spawnParams.push("--androidKeyStoreAlias", keystoreAlias);
@@ -4373,10 +4837,13 @@ router.get(
4373
4837
  );
4374
4838
 
4375
4839
  router.get(
4376
- "/mobile-app/check-xcodebuild",
4840
+ "/mobile-app/check-ios-build-tools",
4377
4841
  isAdmin,
4378
4842
  error_catcher(async (req, res) => {
4379
- res.json(await checkXcodebuild());
4843
+ const xcodebuild = await checkXcodebuild();
4844
+ const cocoapods = await checkCocoaPods();
4845
+ const isMac = process.platform === "darwin";
4846
+ res.json({ xcodebuild, cocoapods, isMac });
4380
4847
  })
4381
4848
  );
4382
4849
 
@@ -4400,6 +4867,8 @@ router.post(
4400
4867
  "firebase_app_services",
4401
4868
  newCfg.googleServicesFile
4402
4869
  );
4870
+ await getState().setConfig("apn_signing_key", newCfg.apnSigningKey);
4871
+ await getState().setConfig("apn_signing_key_id", newCfg.apnSigningKeyId);
4403
4872
  res.json({ success: true });
4404
4873
  } catch (e) {
4405
4874
  getState().log(1, `Unable to save mobile builder config: ${e.message}`);
@@ -5199,6 +5668,17 @@ admin_config_route({
5199
5668
  showIf: { enable_push_notify: true },
5200
5669
  help: { topic: "Firebase App Services" },
5201
5670
  },
5671
+ { section_header: "Native iOS Mobile App" },
5672
+ {
5673
+ name: "apn_signing_key",
5674
+ showIf: { enable_push_notify: true },
5675
+ help: { topic: "APN Signing Key" },
5676
+ },
5677
+ {
5678
+ name: "apn_signing_key_id",
5679
+ showIf: { enable_push_notify: true },
5680
+ help: { topic: "APN Signing Key ID" },
5681
+ },
5202
5682
  ],
5203
5683
  response(form, req, res) {
5204
5684
  send_admin_page({