@saltcorn/server 1.3.1-beta.1 → 1.3.1-beta.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 (404) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/auth/admin.js +9 -1
  3. package/auth/routes.js +50 -5
  4. package/docs/assets/search.js +1 -1
  5. package/docs/classes/_saltcorn_common_code.Relation.html +10 -10
  6. package/docs/classes/_saltcorn_common_code.RelationsFinder.html +5 -5
  7. package/docs/classes/_saltcorn_data.models.Crash.html +17 -17
  8. package/docs/classes/_saltcorn_data.models.EventLog-1.html +19 -19
  9. package/docs/classes/_saltcorn_data.models.Field.html +74 -74
  10. package/docs/classes/_saltcorn_data.models.FieldRepeat.html +16 -16
  11. package/docs/classes/_saltcorn_data.models.File-1.html +48 -48
  12. package/docs/classes/_saltcorn_data.models.Form-1.html +39 -39
  13. package/docs/classes/_saltcorn_data.models.Library.html +13 -13
  14. package/docs/classes/_saltcorn_data.models.Page.html +24 -24
  15. package/docs/classes/_saltcorn_data.models.PageGroup-1.html +25 -25
  16. package/docs/classes/_saltcorn_data.models.Plugin.html +25 -25
  17. package/docs/classes/_saltcorn_data.models.Role.html +9 -9
  18. package/docs/classes/_saltcorn_data.models.Table-1.html +92 -92
  19. package/docs/classes/_saltcorn_data.models.TableConstraint.html +14 -14
  20. package/docs/classes/_saltcorn_data.models.Trigger.html +71 -39
  21. package/docs/classes/_saltcorn_data.models.User.html +51 -49
  22. package/docs/classes/_saltcorn_data.models.View-1.html +54 -54
  23. package/docs/classes/_saltcorn_data.models.Workflow.html +17 -17
  24. package/docs/classes/_saltcorn_data.models.WorkflowRun.html +35 -35
  25. package/docs/classes/_saltcorn_data.models.WorkflowStep.html +25 -25
  26. package/docs/classes/_saltcorn_data.models.WorkflowTrace.html +18 -18
  27. package/docs/classes/_saltcorn_mobile_builder.MobileBuilder.html +37 -37
  28. package/docs/enums/_saltcorn_common_code.RelationType.html +7 -7
  29. package/docs/enums/_saltcorn_common_code.ViewDisplayType.html +4 -4
  30. package/docs/functions/_saltcorn_admin_models.backup.create_backup.html +1 -1
  31. package/docs/functions/_saltcorn_admin_models.backup.create_csv_from_rows.html +1 -1
  32. package/docs/functions/_saltcorn_admin_models.backup.restore.html +1 -1
  33. package/docs/functions/_saltcorn_admin_models.pack.add_to_menu.html +1 -1
  34. package/docs/functions/_saltcorn_admin_models.pack.can_install_pack.html +1 -1
  35. package/docs/functions/_saltcorn_admin_models.pack.fetch_available_packs.html +1 -1
  36. package/docs/functions/_saltcorn_admin_models.pack.fetch_pack_by_name.html +1 -1
  37. package/docs/functions/_saltcorn_admin_models.pack.install_pack.html +1 -1
  38. package/docs/functions/_saltcorn_admin_models.pack.library_pack.html +1 -1
  39. package/docs/functions/_saltcorn_admin_models.pack.model_instance_pack.html +1 -1
  40. package/docs/functions/_saltcorn_admin_models.pack.model_pack.html +1 -1
  41. package/docs/functions/_saltcorn_admin_models.pack.page_group_pack.html +1 -1
  42. package/docs/functions/_saltcorn_admin_models.pack.page_pack.html +1 -1
  43. package/docs/functions/_saltcorn_admin_models.pack.plugin_pack.html +1 -1
  44. package/docs/functions/_saltcorn_admin_models.pack.role_pack.html +1 -1
  45. package/docs/functions/_saltcorn_admin_models.pack.table_pack.html +1 -1
  46. package/docs/functions/_saltcorn_admin_models.pack.trigger_pack.html +1 -1
  47. package/docs/functions/_saltcorn_admin_models.pack.uninstall_pack.html +1 -1
  48. package/docs/functions/_saltcorn_admin_models.pack.view_pack.html +1 -1
  49. package/docs/functions/_saltcorn_admin_models.tenant.copy_tenant_template.html +1 -1
  50. package/docs/functions/_saltcorn_admin_models.tenant.create_tenant.html +1 -1
  51. package/docs/functions/_saltcorn_admin_models.tenant.deleteTenant.html +1 -1
  52. package/docs/functions/_saltcorn_admin_models.tenant.domain_sanitize.html +1 -1
  53. package/docs/functions/_saltcorn_admin_models.tenant.eachTenant.html +1 -1
  54. package/docs/functions/_saltcorn_admin_models.tenant.getAllTenantRows.html +1 -1
  55. package/docs/functions/_saltcorn_admin_models.tenant.getAllTenants.html +1 -1
  56. package/docs/functions/_saltcorn_admin_models.tenant.insertTenant.html +1 -1
  57. package/docs/functions/_saltcorn_admin_models.tenant.switchToTenant.html +1 -1
  58. package/docs/functions/_saltcorn_common_code.buildTableCaches.html +1 -1
  59. package/docs/functions/_saltcorn_common_code.parseLegacyRelation.html +1 -1
  60. package/docs/functions/_saltcorn_common_code.parseRelationPath.html +1 -1
  61. package/docs/functions/_saltcorn_data.models.config.check_email_mask.html +1 -1
  62. package/docs/functions/_saltcorn_data.models.config.deleteConfig.html +1 -1
  63. package/docs/functions/_saltcorn_data.models.config.getAllConfig.html +1 -1
  64. package/docs/functions/_saltcorn_data.models.config.getConfig.html +1 -1
  65. package/docs/functions/_saltcorn_data.models.config.get_base_url.html +1 -1
  66. package/docs/functions/_saltcorn_data.models.config.get_latest_npm_version.html +1 -1
  67. package/docs/functions/_saltcorn_data.models.config.remove_from_menu.html +1 -1
  68. package/docs/functions/_saltcorn_data.models.config.save_menu_items.html +1 -1
  69. package/docs/functions/_saltcorn_data.models.config.setConfig.html +1 -1
  70. package/docs/functions/_saltcorn_data.models.discovery.discover_tables.html +1 -1
  71. package/docs/functions/_saltcorn_data.models.discovery.discoverable_tables.html +1 -1
  72. package/docs/functions/_saltcorn_data.models.discovery.findType.html +1 -1
  73. package/docs/functions/_saltcorn_data.models.discovery.get_existing_views.html +1 -1
  74. package/docs/functions/_saltcorn_data.models.discovery.implement_discovery.html +1 -1
  75. package/docs/functions/_saltcorn_data.models.email.getMailTransport.html +1 -1
  76. package/docs/functions/_saltcorn_data.models.email.send_verification_email.html +1 -1
  77. package/docs/functions/_saltcorn_data.models.email.viewToEmailHtml.html +1 -1
  78. package/docs/functions/_saltcorn_data.models.expression.apply_calculated_fields.html +1 -1
  79. package/docs/functions/_saltcorn_data.models.expression.apply_calculated_fields_stored.html +1 -1
  80. package/docs/functions/_saltcorn_data.models.expression.eval_expression.html +1 -1
  81. package/docs/functions/_saltcorn_data.models.expression.expressionValidator.html +1 -1
  82. package/docs/functions/_saltcorn_data.models.expression.get_async_expression_function.html +1 -1
  83. package/docs/functions/_saltcorn_data.models.expression.get_expression_function.html +1 -1
  84. package/docs/functions/_saltcorn_data.models.expression.jsexprToWhere.html +1 -1
  85. package/docs/functions/_saltcorn_data.models.expression.recalculate_for_stored.html +1 -1
  86. package/docs/functions/_saltcorn_data.models.expression.transform_for_async.html +1 -1
  87. package/docs/functions/_saltcorn_data.models.layout.eachView.html +1 -1
  88. package/docs/functions/_saltcorn_data.models.layout.getStringsForI18n.html +1 -1
  89. package/docs/functions/_saltcorn_data.models.layout.getViews.html +1 -1
  90. package/docs/functions/_saltcorn_data.models.layout.translateLayout.html +1 -1
  91. package/docs/functions/_saltcorn_data.models.layout.traverse.html +1 -1
  92. package/docs/functions/_saltcorn_data.models.layout.traverseSync.html +1 -1
  93. package/docs/functions/_saltcorn_data.models.random.all_views.html +1 -1
  94. package/docs/functions/_saltcorn_data.models.random.fill_table_row.html +1 -1
  95. package/docs/functions/_saltcorn_data.models.random.initial_view.html +1 -1
  96. package/docs/functions/_saltcorn_data.models.random.random_table.html +1 -1
  97. package/docs/functions/_saltcorn_db_common.buildInsertBulkSql.html +2 -1
  98. package/docs/functions/_saltcorn_db_common.buildInsertSql.html +2 -1
  99. package/docs/functions/_saltcorn_db_common.commitAndBeginNewTransaction.html +103 -0
  100. package/docs/functions/_saltcorn_db_common.doCount.html +2 -1
  101. package/docs/functions/_saltcorn_db_common.doDeleteWhere.html +2 -1
  102. package/docs/functions/_saltcorn_db_common.doListScTables.html +2 -1
  103. package/docs/functions/_saltcorn_db_common.doListTables.html +2 -1
  104. package/docs/functions/_saltcorn_db_common.doListUserDefinedTables.html +2 -1
  105. package/docs/functions/_saltcorn_db_common.do_add_index.html +2 -1
  106. package/docs/functions/_saltcorn_db_common.do_drop_index.html +2 -1
  107. package/docs/functions/_saltcorn_db_common.ftsFieldsSqlExpr.html +2 -1
  108. package/docs/functions/_saltcorn_db_common.mkSelectOptions.html +2 -1
  109. package/docs/functions/_saltcorn_db_common.mkVal.html +2 -1
  110. package/docs/functions/_saltcorn_db_common.mkWhere.html +2 -1
  111. package/docs/functions/_saltcorn_db_common.multi_tenant.enable_multi_tenant.html +2 -1
  112. package/docs/functions/_saltcorn_db_common.multi_tenant.getRequestContext.html +2 -1
  113. package/docs/functions/_saltcorn_db_common.multi_tenant.getTenantSchema.html +2 -1
  114. package/docs/functions/_saltcorn_db_common.multi_tenant.init.html +2 -1
  115. package/docs/functions/_saltcorn_db_common.multi_tenant.is_it_multi_tenant.html +2 -1
  116. package/docs/functions/_saltcorn_db_common.multi_tenant.runWithTenant.html +2 -1
  117. package/docs/functions/_saltcorn_db_common.orderByIsObject.html +2 -1
  118. package/docs/functions/_saltcorn_db_common.orderByIsOperator.html +2 -1
  119. package/docs/functions/_saltcorn_db_common.prefixFieldsInWhere.html +2 -1
  120. package/docs/functions/_saltcorn_db_common.reprAsJson.html +2 -1
  121. package/docs/functions/_saltcorn_db_common.slugify.html +2 -1
  122. package/docs/functions/_saltcorn_db_common.sqlBinOp.html +2 -1
  123. package/docs/functions/_saltcorn_db_common.sqlFun.html +2 -1
  124. package/docs/functions/_saltcorn_db_common.sqlsanitize.html +2 -1
  125. package/docs/functions/_saltcorn_db_common.sqlsanitizeAllowDots.html +2 -1
  126. package/docs/functions/_saltcorn_db_common.subSelectWhere.html +2 -1
  127. package/docs/functions/_saltcorn_db_common.tryCatchInTransaction.html +2 -1
  128. package/docs/functions/_saltcorn_db_common.withTransaction.html +2 -1
  129. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.androidFeatures.html +1 -1
  130. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.androidPermissions.html +1 -1
  131. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.buildTablesFile.html +1 -1
  132. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyPrepopulatedDb.html +1 -1
  133. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyServerFiles.html +1 -1
  134. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyShareExtFiles.html +1 -1
  135. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copySiteLogo.html +1 -1
  136. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyTranslationFiles.html +1 -1
  137. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.createSqliteDb.html +1 -1
  138. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.decodeProvisioningProfile.html +1 -1
  139. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.extractDomain.html +1 -1
  140. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.generateAndroidVersionCode.html +1 -1
  141. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyAndroidManifest.html +1 -1
  142. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyConfigXml.html +1 -1
  143. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyGradleConfig.html +1 -1
  144. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyInfoPlist.html +1 -1
  145. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyXcodeProjectFile.html +1 -1
  146. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepAppIcon.html +1 -1
  147. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareAppIcon.html +1 -1
  148. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareBuildDir.html +1 -1
  149. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareExportOptionsPlist.html +1 -1
  150. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashIcon.html +1 -1
  151. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashPage.html +1 -1
  152. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCapacitorConfig.html +1 -1
  153. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCfgFile.html +1 -1
  154. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeDataExtractionRules.html +1 -1
  155. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeNetworkSecurityConfig.html +1 -1
  156. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePodfile.html +1 -1
  157. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePrivacyInfo.html +1 -1
  158. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundleMobileAppCode.html +1 -1
  159. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundlePackagesAndPlugins.html +1 -1
  160. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.copyMobileAppDirs.html +1 -1
  161. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.copyPublicDirs.html +1 -1
  162. package/docs/functions/_saltcorn_sqlite.add_index.html +1 -1
  163. package/docs/functions/_saltcorn_sqlite.add_unique_constraint.html +1 -1
  164. package/docs/functions/_saltcorn_sqlite.begin.html +1 -1
  165. package/docs/functions/_saltcorn_sqlite.changeConnection.html +1 -1
  166. package/docs/functions/_saltcorn_sqlite.close.html +1 -1
  167. package/docs/functions/_saltcorn_sqlite.commit.html +1 -1
  168. package/docs/functions/_saltcorn_sqlite.count.html +1 -1
  169. package/docs/functions/_saltcorn_sqlite.deleteWhere.html +1 -1
  170. package/docs/functions/_saltcorn_sqlite.dropTable.html +1 -1
  171. package/docs/functions/_saltcorn_sqlite.dropTables.html +1 -1
  172. package/docs/functions/_saltcorn_sqlite.drop_index.html +1 -1
  173. package/docs/functions/_saltcorn_sqlite.drop_reset_schema.html +1 -1
  174. package/docs/functions/_saltcorn_sqlite.drop_unique_constraint.html +1 -1
  175. package/docs/functions/_saltcorn_sqlite.getVersion.html +1 -1
  176. package/docs/functions/_saltcorn_sqlite.get_db_filepath.html +1 -1
  177. package/docs/functions/_saltcorn_sqlite.get_sql_logging.html +1 -1
  178. package/docs/functions/_saltcorn_sqlite.init.html +1 -1
  179. package/docs/functions/_saltcorn_sqlite.insert.html +1 -1
  180. package/docs/functions/_saltcorn_sqlite.listScTables.html +1 -1
  181. package/docs/functions/_saltcorn_sqlite.listTables.html +1 -1
  182. package/docs/functions/_saltcorn_sqlite.listUserDefinedTables.html +1 -1
  183. package/docs/functions/_saltcorn_sqlite.query.html +1 -1
  184. package/docs/functions/_saltcorn_sqlite.rollback.html +1 -1
  185. package/docs/functions/_saltcorn_sqlite.select.html +1 -1
  186. package/docs/functions/_saltcorn_sqlite.selectMaybeOne.html +1 -1
  187. package/docs/functions/_saltcorn_sqlite.selectOne.html +1 -1
  188. package/docs/functions/_saltcorn_sqlite.set_sql_logging.html +1 -1
  189. package/docs/functions/_saltcorn_sqlite.sql_log.html +1 -1
  190. package/docs/functions/_saltcorn_sqlite.update.html +1 -1
  191. package/docs/functions/_saltcorn_sqlite.updateWhere.html +1 -1
  192. package/docs/functions/_saltcorn_sqlite_mobile.add_index.html +1 -1
  193. package/docs/functions/_saltcorn_sqlite_mobile.add_unique_constraint.html +1 -1
  194. package/docs/functions/_saltcorn_sqlite_mobile.count.html +1 -1
  195. package/docs/functions/_saltcorn_sqlite_mobile.deleteWhere.html +1 -1
  196. package/docs/functions/_saltcorn_sqlite_mobile.drop_index.html +1 -1
  197. package/docs/functions/_saltcorn_sqlite_mobile.drop_reset_schema.html +1 -1
  198. package/docs/functions/_saltcorn_sqlite_mobile.drop_unique_constraint.html +1 -1
  199. package/docs/functions/_saltcorn_sqlite_mobile.init.html +1 -1
  200. package/docs/functions/_saltcorn_sqlite_mobile.insert.html +1 -1
  201. package/docs/functions/_saltcorn_sqlite_mobile.insertRows.html +1 -1
  202. package/docs/functions/_saltcorn_sqlite_mobile.listScTables.html +1 -1
  203. package/docs/functions/_saltcorn_sqlite_mobile.listTables.html +1 -1
  204. package/docs/functions/_saltcorn_sqlite_mobile.listUserDefinedTables.html +1 -1
  205. package/docs/functions/_saltcorn_sqlite_mobile.query.html +1 -1
  206. package/docs/functions/_saltcorn_sqlite_mobile.select.html +1 -1
  207. package/docs/functions/_saltcorn_sqlite_mobile.selectMaybeOne.html +1 -1
  208. package/docs/functions/_saltcorn_sqlite_mobile.selectOne.html +1 -1
  209. package/docs/functions/_saltcorn_sqlite_mobile.setConnectionObject.html +1 -1
  210. package/docs/functions/_saltcorn_sqlite_mobile.tableExists.html +1 -1
  211. package/docs/functions/_saltcorn_sqlite_mobile.time.html +1 -1
  212. package/docs/functions/_saltcorn_sqlite_mobile.update.html +1 -1
  213. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_field.instanceOfField.html +1 -1
  214. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_page.instanceOfPage.html +1 -1
  215. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_view.instanceOfView.html +1 -1
  216. package/docs/functions/_saltcorn_types.Types.base_types.instanceOWithHtmlFile.html +1 -1
  217. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfErrorMsg.html +1 -1
  218. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfSuccessMsg.html +1 -1
  219. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfType.html +1 -1
  220. package/docs/functions/_saltcorn_types.generators.generateBool.html +1 -1
  221. package/docs/functions/_saltcorn_types.generators.generateString.html +1 -1
  222. package/docs/functions/_saltcorn_types.generators.num_between.html +1 -1
  223. package/docs/functions/_saltcorn_types.generators.oneOf.html +1 -1
  224. package/docs/interfaces/_saltcorn_mobile_builder.common_build_utils.ScCapacitorConfig.html +10 -10
  225. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractField.html +15 -15
  226. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractFieldRepeat.html +3 -3
  227. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_form.AbstractForm.html +27 -27
  228. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_page.AbstractPage.html +7 -7
  229. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_role.AbstractRole.html +3 -3
  230. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_table.AbstractTable.html +11 -11
  231. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_trigger.AbstractTrigger.html +38 -16
  232. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_view.AbstractView.html +10 -10
  233. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_workflow.AbstractWorkflow.html +13 -13
  234. package/docs/modules/_saltcorn_admin_models.backup.html +1 -1
  235. package/docs/modules/_saltcorn_admin_models.html +1 -1
  236. package/docs/modules/_saltcorn_admin_models.pack.html +1 -1
  237. package/docs/modules/_saltcorn_admin_models.tenant.html +1 -1
  238. package/docs/modules/_saltcorn_common_code.html +1 -1
  239. package/docs/modules/_saltcorn_data.html +3 -3
  240. package/docs/modules/_saltcorn_data.models.EventLog.html +2 -2
  241. package/docs/modules/_saltcorn_data.models.File.html +2 -2
  242. package/docs/modules/_saltcorn_data.models.Form.html +2 -2
  243. package/docs/modules/_saltcorn_data.models.PageGroup.html +2 -2
  244. package/docs/modules/_saltcorn_data.models.Table.html +2 -2
  245. package/docs/modules/_saltcorn_data.models.View.html +2 -2
  246. package/docs/modules/_saltcorn_data.models.config.html +1 -1
  247. package/docs/modules/_saltcorn_data.models.discovery.html +1 -1
  248. package/docs/modules/_saltcorn_data.models.email.html +1 -1
  249. package/docs/modules/_saltcorn_data.models.expression.html +1 -1
  250. package/docs/modules/_saltcorn_data.models.html +1 -1
  251. package/docs/modules/_saltcorn_data.models.layout.html +1 -1
  252. package/docs/modules/_saltcorn_data.models.random.html +1 -1
  253. package/docs/modules/_saltcorn_data.models.scheduler.html +1 -1
  254. package/docs/modules/_saltcorn_data.plugin_helper.html +1 -1
  255. package/docs/modules/_saltcorn_data.utils.html +1 -1
  256. package/docs/modules/_saltcorn_db_common.html +4 -2
  257. package/docs/modules/_saltcorn_db_common.multi_tenant.html +2 -1
  258. package/docs/modules/_saltcorn_markup.html +2 -2
  259. package/docs/modules/_saltcorn_mobile_builder.common_build_utils.html +1 -1
  260. package/docs/modules/_saltcorn_mobile_builder.html +1 -1
  261. package/docs/modules/_saltcorn_mobile_builder.package_bundle_utils.html +1 -1
  262. package/docs/modules/_saltcorn_sqlite.html +1 -1
  263. package/docs/modules/_saltcorn_sqlite_mobile.html +1 -1
  264. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_field.html +1 -1
  265. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_form.html +1 -1
  266. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_library.html +1 -1
  267. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_page.html +1 -1
  268. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_plugin.html +1 -1
  269. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_role.html +1 -1
  270. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_table.html +1 -1
  271. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_trigger.html +1 -1
  272. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_view.html +1 -1
  273. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_workflow.html +1 -1
  274. package/docs/modules/_saltcorn_types.ModelAbstracts.html +1 -1
  275. package/docs/modules/_saltcorn_types.Types.base_types.html +1 -1
  276. package/docs/modules/_saltcorn_types.Types.common_types.html +1 -1
  277. package/docs/modules/_saltcorn_types.Types.html +1 -1
  278. package/docs/modules/_saltcorn_types.generators.html +1 -1
  279. package/docs/modules/_saltcorn_types.html +1 -1
  280. package/docs/types/_saltcorn_data.models.EventLog.EventLogCfg.html +1 -1
  281. package/docs/types/_saltcorn_data.models.File.FileCfg.html +1 -1
  282. package/docs/types/_saltcorn_data.models.Form.AdditionalButton.html +1 -1
  283. package/docs/types/_saltcorn_data.models.Form.FormCfg.html +1 -1
  284. package/docs/types/_saltcorn_data.models.PageGroup.ScreenInfoParams.html +1 -1
  285. package/docs/types/_saltcorn_data.models.Table.ChildRelations.html +1 -1
  286. package/docs/types/_saltcorn_data.models.Table.ParentRelations.html +1 -1
  287. package/docs/types/_saltcorn_data.models.Table.RelationData.html +1 -1
  288. package/docs/types/_saltcorn_data.models.View.FindViewsPred.html +1 -1
  289. package/docs/types/_saltcorn_db_common.AggregationOptions.html +2 -1
  290. package/docs/types/_saltcorn_db_common.CoordOpts.html +2 -1
  291. package/docs/types/_saltcorn_db_common.DatabaseClient.html +2 -1
  292. package/docs/types/_saltcorn_db_common.JoinField.html +2 -1
  293. package/docs/types/_saltcorn_db_common.JoinFields.html +2 -1
  294. package/docs/types/_saltcorn_db_common.JoinOptions.html +2 -1
  295. package/docs/types/_saltcorn_db_common.JsonPath.html +2 -1
  296. package/docs/types/_saltcorn_db_common.JsonPathElem.html +2 -1
  297. package/docs/types/_saltcorn_db_common.Operator.html +2 -1
  298. package/docs/types/_saltcorn_db_common.PartialSome.html +2 -1
  299. package/docs/types/_saltcorn_db_common.PrimaryKeyValue.html +2 -1
  300. package/docs/types/_saltcorn_db_common.Row.html +2 -1
  301. package/docs/types/_saltcorn_db_common.SelectOptions.html +2 -1
  302. package/docs/types/_saltcorn_db_common.SqlAndValues.html +2 -1
  303. package/docs/types/_saltcorn_db_common.StrongRow.html +2 -1
  304. package/docs/types/_saltcorn_db_common.SubselectOptions.html +2 -1
  305. package/docs/types/_saltcorn_db_common.Value.html +2 -1
  306. package/docs/types/_saltcorn_db_common.Where.html +2 -1
  307. package/docs/types/_saltcorn_mobile_builder.IosCfg.html +1 -1
  308. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.FieldCfg.html +1 -1
  309. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.InputType.html +1 -1
  310. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_form.AdditionalButton.html +1 -1
  311. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryCfg.html +1 -1
  312. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryPack.html +1 -1
  313. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PageCfg.html +1 -1
  314. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PagePack.html +1 -1
  315. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginCfg.html +1 -1
  316. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginPack.html +1 -1
  317. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RoleCfg.html +1 -1
  318. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RolePack.html +1 -1
  319. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TableCfg.html +1 -1
  320. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TablePack.html +1 -1
  321. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerCfg.html +1 -1
  322. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerPack.html +1 -1
  323. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewCfg.html +1 -1
  324. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewPack.html +1 -1
  325. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.ConfigWorkflowStep.html +1 -1
  326. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.RunResult.html +1 -1
  327. package/docs/types/_saltcorn_types.Types.base_types.Action.html +1 -1
  328. package/docs/types/_saltcorn_types.Types.base_types.AuthenticationMethod.html +1 -1
  329. package/docs/types/_saltcorn_types.Types.base_types.CalcJoinfield.html +1 -1
  330. package/docs/types/_saltcorn_types.Types.base_types.CapacitorPlugin.html +1 -1
  331. package/docs/types/_saltcorn_types.Types.base_types.CodePagePack.html +1 -1
  332. package/docs/types/_saltcorn_types.Types.base_types.Column.html +1 -1
  333. package/docs/types/_saltcorn_types.Types.base_types.ConnectObjType.html +4 -2
  334. package/docs/types/_saltcorn_types.Types.base_types.ConnectedObjects.html +1 -1
  335. package/docs/types/_saltcorn_types.Types.base_types.CopilotSkill.html +1 -1
  336. package/docs/types/_saltcorn_types.Types.base_types.ErrorObj.html +1 -1
  337. package/docs/types/_saltcorn_types.Types.base_types.FieldLike.html +1 -1
  338. package/docs/types/_saltcorn_types.Types.base_types.FieldView.html +1 -1
  339. package/docs/types/_saltcorn_types.Types.base_types.Header.html +1 -1
  340. package/docs/types/_saltcorn_types.Types.base_types.JoinFieldOption.html +1 -1
  341. package/docs/types/_saltcorn_types.Types.base_types.Layout.html +1 -1
  342. package/docs/types/_saltcorn_types.Types.base_types.MobileConfig.html +1 -1
  343. package/docs/types/_saltcorn_types.Types.base_types.ModelPattern.html +1 -1
  344. package/docs/types/_saltcorn_types.Types.base_types.Pack.html +1 -1
  345. package/docs/types/_saltcorn_types.Types.base_types.Plugin.html +1 -1
  346. package/docs/types/_saltcorn_types.Types.base_types.PluginFunction.html +1 -1
  347. package/docs/types/_saltcorn_types.Types.base_types.PluginLayout.html +1 -1
  348. package/docs/types/_saltcorn_types.Types.base_types.PluginRoute.html +1 -1
  349. package/docs/types/_saltcorn_types.Types.base_types.PluginSourceType.html +1 -1
  350. package/docs/types/_saltcorn_types.Types.base_types.PluginType.html +1 -1
  351. package/docs/types/_saltcorn_types.Types.base_types.PluginWrap.html +1 -1
  352. package/docs/types/_saltcorn_types.Types.base_types.PluginWrapArg.html +1 -1
  353. package/docs/types/_saltcorn_types.Types.base_types.RelationOption.html +1 -1
  354. package/docs/types/_saltcorn_types.Types.base_types.Req.html +1 -1
  355. package/docs/types/_saltcorn_types.Types.base_types.Res.html +1 -1
  356. package/docs/types/_saltcorn_types.Types.base_types.ResultType.html +1 -1
  357. package/docs/types/_saltcorn_types.Types.base_types.RouteAction.html +1 -1
  358. package/docs/types/_saltcorn_types.Types.base_types.RunExtra.html +1 -1
  359. package/docs/types/_saltcorn_types.Types.base_types.SlugStepType.html +1 -1
  360. package/docs/types/_saltcorn_types.Types.base_types.StepResType.html +1 -1
  361. package/docs/types/_saltcorn_types.Types.base_types.SubField.html +1 -1
  362. package/docs/types/_saltcorn_types.Types.base_types.TableProvider.html +1 -1
  363. package/docs/types/_saltcorn_types.Types.base_types.TableQuery.html +1 -1
  364. package/docs/types/_saltcorn_types.Types.base_types.Tablely.html +1 -1
  365. package/docs/types/_saltcorn_types.Types.base_types.ViewTemplate.html +1 -1
  366. package/docs/types/_saltcorn_types.Types.common_types.ErrorMessage.html +1 -1
  367. package/docs/types/_saltcorn_types.Types.common_types.GenObj.html +1 -1
  368. package/docs/types/_saltcorn_types.Types.common_types.ReqRes.html +1 -1
  369. package/docs/types/_saltcorn_types.Types.common_types.ResultMessage.html +1 -1
  370. package/docs/types/_saltcorn_types.Types.common_types.SuccessMessage.html +1 -1
  371. package/docs/types/_saltcorn_types.Types.common_types.Type.html +1 -1
  372. package/docs/variables/_saltcorn_data.db.html +1 -1
  373. package/docs/variables/_saltcorn_data.migrations.html +1 -1
  374. package/docs/variables/_saltcorn_data.models.config.available_languages.html +1 -1
  375. package/docs/variables/_saltcorn_data.models.config.configTypes.html +1 -1
  376. package/docs/variables/_saltcorn_data.models.scheduler.runScheduler.html +1 -1
  377. package/docs/variables/_saltcorn_data.plugin_helper.run_action_column.html +1 -1
  378. package/docs/variables/_saltcorn_data.utils.NotAuthorized.html +1 -1
  379. package/docs/variables/_saltcorn_data.utils.isPushEnabled.html +1 -1
  380. package/docs/variables/_saltcorn_data.utils.sleep.html +1 -1
  381. package/docs/variables/_saltcorn_db_common.multi_tenant.tenantNamespace.html +2 -1
  382. package/help/JavaScript action code.tmd +10 -0
  383. package/locales/en.json +32 -1
  384. package/package.json +9 -9
  385. package/public/log_viewer_utils.js +3 -2
  386. package/public/saltcorn-common.js +89 -39
  387. package/public/saltcorn.css +12 -0
  388. package/public/saltcorn.js +8 -0
  389. package/routes/actions.js +14 -0
  390. package/routes/admin.js +5 -3
  391. package/routes/common_lists.js +8 -1
  392. package/routes/eventlog.js +20 -0
  393. package/routes/fields.js +1 -1
  394. package/routes/menu.js +98 -6
  395. package/routes/page.js +4 -1
  396. package/routes/pageedit.js +1 -0
  397. package/routes/plugins.js +8 -7
  398. package/routes/tables.js +11 -0
  399. package/routes/view.js +12 -3
  400. package/serve.js +76 -13
  401. package/tests/admin.test.js +3 -3
  402. package/tests/auth.test.js +1 -0
  403. package/tests/viewedit.test.js +2 -0
  404. package/wrapper.js +24 -192
@@ -62,7 +62,7 @@
62
62
  <h5><span class="tsd-kind-parameter">cfg</span>: <a href="_saltcorn_types.Types.common_types.GenObj.html" class="tsd-signature-type tsd-kind-type-alias">GenObj</a></h5></li></ul></div>
63
63
  <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type ">Partial</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/_saltcorn_types.ModelAbstracts.abstract_table.AbstractTable.html" class="tsd-signature-type tsd-kind-interface">AbstractTable</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></li></ul></li></ul></div><aside class="tsd-sources">
64
64
  <ul>
65
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/base_types.ts#L499">saltcorn-types/base_types.ts:499</a></li></ul></aside></div>
65
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/base_types.ts#L499">saltcorn-types/base_types.ts:499</a></li></ul></aside></div>
66
66
  <div class="col-sidebar">
67
67
  <div class="page-menu">
68
68
  <div class="tsd-navigation settings">
@@ -51,7 +51,7 @@
51
51
  <li class="tsd-parameter">
52
52
  <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">where</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type ">Where</span></h5></li></ul></div><aside class="tsd-sources">
53
53
  <ul>
54
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/base_types.ts#L186">saltcorn-types/base_types.ts:186</a></li></ul></aside></div>
54
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/base_types.ts#L186">saltcorn-types/base_types.ts:186</a></li></ul></aside></div>
55
55
  <div class="col-sidebar">
56
56
  <div class="page-menu">
57
57
  <div class="tsd-navigation settings">
@@ -25,7 +25,7 @@
25
25
  <li class="tsd-parameter">
26
26
  <h5><span class="tsd-kind-property">external</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">true</span></h5></li></ul></div><aside class="tsd-sources">
27
27
  <ul>
28
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/base_types.ts#L589">saltcorn-types/base_types.ts:589</a></li></ul></aside></div>
28
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/base_types.ts#L589">saltcorn-types/base_types.ts:589</a></li></ul></aside></div>
29
29
  <div class="col-sidebar">
30
30
  <div class="page-menu">
31
31
  <div class="tsd-navigation settings">
@@ -395,7 +395,7 @@
395
395
  <h5><span class="tsd-kind-parameter">configuration</span>: <span class="tsd-signature-type">any</span></h5></li></ul></div>
396
396
  <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/_saltcorn_types.ModelAbstracts.abstract_trigger.AbstractTrigger.html" class="tsd-signature-type tsd-kind-interface">AbstractTrigger</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></li></ul></li></ul></div><aside class="tsd-sources">
397
397
  <ul>
398
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/base_types.ts#L245">saltcorn-types/base_types.ts:245</a></li></ul></aside></div>
398
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/base_types.ts#L245">saltcorn-types/base_types.ts:245</a></li></ul></aside></div>
399
399
  <div class="col-sidebar">
400
400
  <div class="page-menu">
401
401
  <div class="tsd-navigation settings">
@@ -29,7 +29,7 @@
29
29
  <li class="tsd-parameter">
30
30
  <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">errors</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div><aside class="tsd-sources">
31
31
  <ul>
32
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/common_types.ts#L8">saltcorn-types/common_types.ts:8</a></li></ul></aside></div>
32
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/common_types.ts#L8">saltcorn-types/common_types.ts:8</a></li></ul></aside></div>
33
33
  <div class="col-sidebar">
34
34
  <div class="page-menu">
35
35
  <div class="tsd-navigation settings">
@@ -25,7 +25,7 @@
25
25
  <li class="tsd-parameter-index-signature">
26
26
  <h5><span class="tsd-signature-symbol">[</span><span class="tsd-kind-parameter">key</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">]: </span><span class="tsd-signature-type">any</span></h5></li></ul></div><aside class="tsd-sources">
27
27
  <ul>
28
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/common_types.ts#L65">saltcorn-types/common_types.ts:65</a></li></ul></aside></div>
28
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/common_types.ts#L65">saltcorn-types/common_types.ts:65</a></li></ul></aside></div>
29
29
  <div class="col-sidebar">
30
30
  <div class="page-menu">
31
31
  <div class="tsd-navigation settings">
@@ -27,7 +27,7 @@
27
27
  <li class="tsd-parameter">
28
28
  <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">res</span><span class="tsd-signature-symbol">?: </span><a href="_saltcorn_types.Types.base_types.Res.html" class="tsd-signature-type tsd-kind-type-alias">Res</a></h5></li></ul></div><aside class="tsd-sources">
29
29
  <ul>
30
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/common_types.ts#L21">saltcorn-types/common_types.ts:21</a></li></ul></aside></div>
30
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/common_types.ts#L21">saltcorn-types/common_types.ts:21</a></li></ul></aside></div>
31
31
  <div class="col-sidebar">
32
32
  <div class="page-menu">
33
33
  <div class="tsd-navigation settings">
@@ -20,7 +20,7 @@
20
20
  <h1>Type alias ResultMessage</h1></div>
21
21
  <div class="tsd-signature"><span class="tsd-kind-type-alias">Result<wbr/>Message</span><span class="tsd-signature-symbol">:</span> <a href="_saltcorn_types.Types.common_types.ErrorMessage.html" class="tsd-signature-type tsd-kind-type-alias">ErrorMessage</a><span class="tsd-signature-symbol"> | </span><a href="_saltcorn_types.Types.common_types.SuccessMessage.html" class="tsd-signature-type tsd-kind-type-alias">SuccessMessage</a></div><aside class="tsd-sources">
22
22
  <ul>
23
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/common_types.ts#L26">saltcorn-types/common_types.ts:26</a></li></ul></aside></div>
23
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/common_types.ts#L26">saltcorn-types/common_types.ts:26</a></li></ul></aside></div>
24
24
  <div class="col-sidebar">
25
25
  <div class="page-menu">
26
26
  <div class="tsd-navigation settings">
@@ -31,7 +31,7 @@
31
31
  <li class="tsd-parameter">
32
32
  <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">table</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">any</span></h5></li></ul></div><aside class="tsd-sources">
33
33
  <ul>
34
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/common_types.ts#L14">saltcorn-types/common_types.ts:14</a></li></ul></aside></div>
34
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/common_types.ts#L14">saltcorn-types/common_types.ts:14</a></li></ul></aside></div>
35
35
  <div class="col-sidebar">
36
36
  <div class="page-menu">
37
37
  <div class="tsd-navigation settings">
@@ -102,7 +102,7 @@
102
102
  <li class="tsd-parameter">
103
103
  <h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">validate_<wbr/>attributes</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type ">Function</span></h5></li></ul></div><aside class="tsd-sources">
104
104
  <ul>
105
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-types/common_types.ts#L36">saltcorn-types/common_types.ts:36</a></li></ul></aside></div>
105
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-types/common_types.ts#L36">saltcorn-types/common_types.ts:36</a></li></ul></aside></div>
106
106
  <div class="col-sidebar">
107
107
  <div class="page-menu">
108
108
  <div class="tsd-navigation settings">
@@ -18,7 +18,7 @@
18
18
  <h1>Variable db<code class="tsd-tag ts-flagConst">Const</code> </h1></div>
19
19
  <div class="tsd-signature"><span class="tsd-kind-variable">db</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type ">DbExportsType</span><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources">
20
20
  <ul>
21
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-data/db/index.ts#L56">saltcorn-data/db/index.ts:56</a></li></ul></aside></div>
21
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-data/db/index.ts#L56">saltcorn-data/db/index.ts:56</a></li></ul></aside></div>
22
22
  <div class="col-sidebar">
23
23
  <div class="page-menu">
24
24
  <div class="tsd-navigation settings">
@@ -18,7 +18,7 @@
18
18
  <h1>Variable migrations</h1></div>
19
19
  <div class="tsd-signature"><span class="tsd-kind-variable">migrations</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol"> = {}</span></div><aside class="tsd-sources">
20
20
  <ul>
21
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-data/index.ts#L26">saltcorn-data/index.ts:26</a></li></ul></aside></div>
21
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-data/index.ts#L26">saltcorn-data/index.ts:26</a></li></ul></aside></div>
22
22
  <div class="col-sidebar">
23
23
  <div class="page-menu">
24
24
  <div class="tsd-navigation settings">
@@ -85,7 +85,7 @@
85
85
  <li class="tsd-parameter">
86
86
  <h5><span class="tsd-kind-property">zh</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li></ul></div><aside class="tsd-sources">
87
87
  <ul>
88
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-data/models/index.ts#L56">saltcorn-data/models/index.ts:56</a></li></ul></aside></div>
88
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-data/models/index.ts#L56">saltcorn-data/models/index.ts:56</a></li></ul></aside></div>
89
89
  <div class="col-sidebar">
90
90
  <div class="page-menu">
91
91
  <div class="tsd-navigation settings">
@@ -20,7 +20,7 @@
20
20
  <h1>Variable configTypes</h1></div>
21
21
  <div class="tsd-signature"><span class="tsd-kind-variable">config<wbr/>Types</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type ">ConfigTypes</span></div><aside class="tsd-sources">
22
22
  <ul>
23
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-data/models/index.ts#L54">saltcorn-data/models/index.ts:54</a></li></ul></aside></div>
23
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-data/models/index.ts#L54">saltcorn-data/models/index.ts:54</a></li></ul></aside></div>
24
24
  <div class="col-sidebar">
25
25
  <div class="page-menu">
26
26
  <div class="tsd-navigation settings">
@@ -65,7 +65,7 @@
65
65
  <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type ">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
66
66
  <div class="tsd-comment tsd-typography"></div></li></ul></li></ul></li></ul></div><aside class="tsd-sources">
67
67
  <ul>
68
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-data/models/index.ts#L116">saltcorn-data/models/index.ts:116</a></li></ul></aside></div>
68
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-data/models/index.ts#L116">saltcorn-data/models/index.ts:116</a></li></ul></aside></div>
69
69
  <div class="col-sidebar">
70
70
  <div class="page-menu">
71
71
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable run_action_column</h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">run_<wbr/>action_<wbr/>column</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-data/index.ts#L15">saltcorn-data/index.ts:15</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-data/index.ts#L15">saltcorn-data/index.ts:15</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable NotAuthorized</h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">Not<wbr/>Authorized</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable isPushEnabled</h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">is<wbr/>Push<wbr/>Enabled</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable sleep</h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">sleep</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/saltcorn-data/index.ts#L20">saltcorn-data/index.ts:20</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -19,7 +19,7 @@
19
19
  <h1>Variable tenantNamespace<code class="tsd-tag ts-flagConst">Const</code> </h1></div>
20
20
  <div class="tsd-signature"><span class="tsd-kind-variable">tenant<wbr/>Namespace</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type ">AsyncLocalStorage</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type ">RequestContext</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources">
21
21
  <ul>
22
- <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/1c2c07fafb/packages/db-common/multi-tenant.ts#L17">db-common/multi-tenant.ts:17</a></li></ul></aside></div>
22
+ <li>Defined in <a href="https://github.com/saltcorn/saltcorn/blob/af484534de/packages/db-common/multi-tenant.ts#L17">db-common/multi-tenant.ts:17</a></li></ul></aside></div>
23
23
  <div class="col-sidebar">
24
24
  <div class="page-menu">
25
25
  <div class="tsd-navigation settings">
@@ -76,6 +76,7 @@
76
76
  <li><a href="../modules/_saltcorn_db_common.html#tenants"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><g id="icon-1024"><rect fill="var(--color-icon-background)" stroke="#FF984D" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><path d="M9.354 16V7.24H12.174C12.99 7.24 13.638 7.476 14.118 7.948C14.606 8.412 14.85 9.036 14.85 9.82C14.85 10.604 14.606 11.232 14.118 11.704C13.638 12.168 12.99 12.4 12.174 12.4H10.434V16H9.354ZM10.434 11.428H12.174C12.646 11.428 13.022 11.284 13.302 10.996C13.59 10.7 13.734 10.308 13.734 9.82C13.734 9.324 13.59 8.932 13.302 8.644C13.022 8.356 12.646 8.212 12.174 8.212H10.434V11.428Z" fill="var(--color-text)"></path></g></svg><span>tenants</span></a></li>
77
77
  <li><a href="../functions/_saltcorn_db_common.buildInsertBulkSql.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>build<wbr/>Insert<wbr/>Bulk<wbr/>Sql</span></a></li>
78
78
  <li><a href="../functions/_saltcorn_db_common.buildInsertSql.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>build<wbr/>Insert<wbr/>Sql</span></a></li>
79
+ <li><a href="../functions/_saltcorn_db_common.commitAndBeginNewTransaction.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>commit<wbr/>And<wbr/>Begin<wbr/>New<wbr/>Transaction</span></a></li>
79
80
  <li><a href="../functions/_saltcorn_db_common.doCount.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>do<wbr/>Count</span></a></li>
80
81
  <li><a href="../functions/_saltcorn_db_common.doDeleteWhere.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>do<wbr/>Delete<wbr/>Where</span></a></li>
81
82
  <li><a href="../functions/_saltcorn_db_common.doListScTables.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-64"></use></svg><span>do<wbr/>List<wbr/>Sc<wbr/>Tables</span></a></li>
@@ -147,3 +147,13 @@ return { set_fields: {
147
147
  Execute JavaScript in the browser.
148
148
 
149
149
  Example: `return { eval_js: 'alert("Hello world")' }`
150
+
151
+ ### Emit Client events
152
+
153
+ Use `emit_to_client' to send socket.io events to one or multiple clients. For example, to notify the user with id 1:
154
+ ```
155
+ emit_to_client({notify: "hello admin"}, 1);
156
+ ```
157
+ This event goes to each tab (and window) where the user is logged in. Otherwise, you can use an array or omit the second parameter to emit to default to the originating user. All return directives from the block above can be used.
158
+
159
+ Include the constant `page_load_tag` in the object to only appear on the originating tab, for instance: `emit_to_client({notify: "Hello", page_load_tag})`.
package/locales/en.json CHANGED
@@ -1643,5 +1643,36 @@
1643
1643
  "Web push": "Web push",
1644
1644
  "Native Android": "Native Android",
1645
1645
  "Firebase JSON key": "Firebase JSON key",
1646
- "This is your Firebase Service Account JSON key file. ": "This is your Firebase Service Account JSON key file. "
1646
+ "This is your Firebase Service Account JSON key file. ": "This is your Firebase Service Account JSON key file. ",
1647
+ "Real-time updates": "Real-time updates",
1648
+ "Enable real-time updates for this view": "Enable real-time updates for this view",
1649
+ "today": "today",
1650
+ "Push notifications": "Push notifications",
1651
+ "Password Policy": "Password Policy",
1652
+ "Minimum password length": "Minimum password length",
1653
+ "The minimum length of passwords for users. Set to 0 to disable password requirements.": "The minimum length of passwords for users. Set to 0 to disable password requirements.",
1654
+ "Check common passwords": "Check common passwords",
1655
+ "Check if the password is in the list of common passwords. If enabled, users will not be able to use common passwords.": "Check if the password is in the list of common passwords. If enabled, users will not be able to use common passwords.",
1656
+ "Require uppercase": "Require uppercase",
1657
+ "Require at least one uppercase letter in the password": "Require at least one uppercase letter in the password",
1658
+ "Require lowercase": "Require lowercase",
1659
+ "Require at least one lowercase letter in the password": "Require at least one lowercase letter in the password",
1660
+ "Require number": "Require number",
1661
+ "Require at least one number in the password": "Require at least one number in the password",
1662
+ "Require special character": "Require special character",
1663
+ "Require at least one special character in the password": "Require at least one special character in the password",
1664
+ "Password complexity": "Password complexity",
1665
+ "The regular expression that passwords must match. Set to empty string to disable password complexity requirements.": "The regular expression that passwords must match. Set to empty string to disable password complexity requirements.",
1666
+ "Password complexity error": "Password complexity error",
1667
+ "The error message to show when password does not match the complexity requirements.": "The error message to show when password does not match the complexity requirements.",
1668
+ "Only if": "Only if",
1669
+ "Optional JavaScript expression to determine if the trigger should run.": "Optional JavaScript expression to determine if the trigger should run.",
1670
+ "Admin Page": "Admin Page",
1671
+ "User Page": "User Page",
1672
+ "User menu header": "User menu header",
1673
+ "Some themes display this header differently": "Some themes display this header differently",
1674
+ "Dynamic server side updates": "Dynamic server side updates",
1675
+ "Enable dynamic updates": "Enable dynamic updates",
1676
+ "Enable server side updates from within run_js_code actions": "Enable server side updates from within run_js_code actions",
1677
+ "Vertical alignment": "Vertical alignment"
1647
1678
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saltcorn/server",
3
- "version": "1.3.1-beta.1",
3
+ "version": "1.3.1-beta.10",
4
4
  "description": "Server app for Saltcorn, open-source no-code platform",
5
5
  "homepage": "https://saltcorn.com",
6
6
  "main": "index.js",
@@ -8,14 +8,14 @@
8
8
  "dependencies": {
9
9
  "@aws-sdk/client-s3": "^3.735.0",
10
10
  "@dr.pogodin/csurf": "1.15.0",
11
- "@saltcorn/admin-models": "1.3.1-beta.1",
12
- "@saltcorn/base-plugin": "1.3.1-beta.1",
13
- "@saltcorn/builder": "1.3.1-beta.1",
14
- "@saltcorn/data": "1.3.1-beta.1",
15
- "@saltcorn/filemanager": "1.3.1-beta.1",
16
- "@saltcorn/markup": "1.3.1-beta.1",
17
- "@saltcorn/plugins-loader": "1.3.1-beta.1",
18
- "@saltcorn/sbadmin2": "1.3.1-beta.1",
11
+ "@saltcorn/admin-models": "1.3.1-beta.10",
12
+ "@saltcorn/base-plugin": "1.3.1-beta.10",
13
+ "@saltcorn/builder": "1.3.1-beta.10",
14
+ "@saltcorn/data": "1.3.1-beta.10",
15
+ "@saltcorn/filemanager": "1.3.1-beta.10",
16
+ "@saltcorn/markup": "1.3.1-beta.10",
17
+ "@saltcorn/plugins-loader": "1.3.1-beta.10",
18
+ "@saltcorn/sbadmin2": "1.3.1-beta.10",
19
19
  "@socket.io/cluster-adapter": "^0.2.1",
20
20
  "@socket.io/sticky": "^1.0.1",
21
21
  "adm-zip": "0.5.16",
@@ -172,7 +172,7 @@ var logViewerHelpers = (() => {
172
172
  }
173
173
  }, 5000);
174
174
  try {
175
- socket = io({ transports: ["websocket"] });
175
+ socket = window.get_shared_socket();
176
176
  } catch (e) {
177
177
  notifyAlert({
178
178
  type: "danger",
@@ -180,7 +180,8 @@ var logViewerHelpers = (() => {
180
180
  });
181
181
  }
182
182
  startTrackingMsg();
183
- socket.on("connect", () => handleConnect(socket));
183
+ if (socket.connected) handleConnect(socket);
184
+ else socket.on("connect", () => handleConnect(socket));
184
185
  socket.on("disconnect", handleDisconnect);
185
186
  socket.on("log_msg", handleLogMsg);
186
187
  socket.on("test_conn_msg", handleTestConnMsg);
@@ -151,15 +151,15 @@ function valid_js_var_name(s) {
151
151
  return !!s.match(/^[a-zA-Z_$][a-zA-Z_$0-9]*$/);
152
152
  }
153
153
 
154
- function add_extra_state(base_url, extra_state_fml, row) {
154
+ function add_extra_state(base_url, extra_state_fml, row, outerState = {}) {
155
155
  //console.log("add_extra_state", { base_url, extra_state_fml, row });
156
- if (!extra_state_fml) return base_url;
156
+ if (!extra_state_fml && !Object.keys(outerState).length) return base_url;
157
157
  let extra_state = new Function(
158
158
  "row",
159
159
  `{${Object.keys(row).join(",")}}`,
160
- "return " + extra_state_fml
160
+ "return " + extra_state_fml||"{}"
161
161
  )(row, row);
162
- let qs = Object.entries(extra_state)
162
+ let qs = Object.entries({ ...outerState, ...extra_state })
163
163
  .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
164
164
  .join("&");
165
165
  let sepChar = base_url.includes("?") ? "&" : "?";
@@ -1699,10 +1699,13 @@ function notifyAlert(note, spin) {
1699
1699
  if ($modal.length && $modal.hasClass("show"))
1700
1700
  $("#modal-toasts-area").append(html);
1701
1701
  else $("#toasts-area").append(html);
1702
- if (type === "success") {
1703
- setTimeout(() => {
1704
- $(`#${id}`).removeClass("show");
1705
- }, 5000);
1702
+ if (type === "success" || note.remove_delay) {
1703
+ setTimeout(
1704
+ () => {
1705
+ $(`#${id}`).removeClass("show");
1706
+ },
1707
+ note.remove_delay ? note.remove_delay * 1000 : 5000
1708
+ );
1706
1709
  }
1707
1710
  }
1708
1711
 
@@ -1723,6 +1726,8 @@ function press_store_button(clicked, keepOld, disable) {
1723
1726
  .html('<i class="fas fa-spinner fa-spin"></i>')
1724
1727
  .width(width)
1725
1728
  .height(height);
1729
+ $(document).trigger("activate-spinner", $(btn));
1730
+ $(btn).trigger("spin");
1726
1731
  setTimeout(() => {
1727
1732
  $(btn).prop("disabled", true);
1728
1733
  }, 50);
@@ -1751,6 +1756,9 @@ async function common_done(res, viewnameOrElem0, isWeb = true) {
1751
1756
  .attr("data-sc-embed-viewname");
1752
1757
  if (window._sc_loglevel > 4)
1753
1758
  console.log("ajax result directives", viewname, res);
1759
+
1760
+ if (res.page_load_tag && res.page_load_tag !== _sc_pageloadtag) return;
1761
+
1754
1762
  const handle = async (element, fn) => {
1755
1763
  if (Array.isArray(element))
1756
1764
  for (const current of element) await fn(current);
@@ -1776,17 +1784,32 @@ async function common_done(res, viewnameOrElem0, isWeb = true) {
1776
1784
  };
1777
1785
  if (res.notify)
1778
1786
  await handle(res.notify, (text) =>
1779
- notifyAlert({ type: "info", text, toast_title: res.toast_title })
1787
+ notifyAlert({
1788
+ type: "info",
1789
+ text,
1790
+ toast_title: res.toast_title,
1791
+ remove_delay: res.remove_delay,
1792
+ })
1780
1793
  );
1781
1794
  if (res.error) {
1782
1795
  if (window._sc_loglevel > 4) console.trace("error response", res.error);
1783
1796
  await handle(res.error, (text) =>
1784
- notifyAlert({ type: "danger", text, toast_title: res.toast_title })
1797
+ notifyAlert({
1798
+ type: "danger",
1799
+ text,
1800
+ toast_title: res.toast_title,
1801
+ remove_delay: res.remove_delay,
1802
+ })
1785
1803
  );
1786
1804
  }
1787
1805
  if (res.notify_success)
1788
1806
  await handle(res.notify_success, (text) =>
1789
- notifyAlert({ type: "success", text, toast_title: res.toast_title })
1807
+ notifyAlert({
1808
+ type: "success",
1809
+ text,
1810
+ toast_title: res.toast_title,
1811
+ remove_delay: res.remove_delay,
1812
+ })
1790
1813
  );
1791
1814
  if (res.set_fields && (viewname || res.set_fields._viewname)) {
1792
1815
  const form =
@@ -1821,10 +1844,10 @@ async function common_done(res, viewnameOrElem0, isWeb = true) {
1821
1844
  input.attr("data-selected", res.set_fields[k]);
1822
1845
  }
1823
1846
 
1824
- input.trigger("set_form_field");
1847
+ input.trigger("set_form_field", { no_onchange: res.no_onchange });
1825
1848
  });
1826
1849
  }
1827
- form.trigger("change");
1850
+ if (!res.no_onchange) form.trigger("change");
1828
1851
  }
1829
1852
 
1830
1853
  if (res.download) {
@@ -2055,17 +2078,24 @@ function room_older(viewname, room_id, btn) {
2055
2078
  );
2056
2079
  }
2057
2080
 
2058
- function init_room(viewname, room_id) {
2059
- let socket = null;
2060
- if (parent?.saltcorn?.data?.state) {
2061
- const { server_path, jwt } =
2062
- parent.saltcorn.data.state.getState().mobileConfig;
2063
- socket = io(server_path, {
2064
- query: `jwt=${jwt}`,
2065
- transports: ["websocket"],
2066
- });
2067
- } else socket = io({ transports: ["websocket"] });
2081
+ function get_shared_socket() {
2082
+ let socket = window.sharedSocket || null;
2083
+ if (!socket) {
2084
+ if (parent?.saltcorn?.data?.state) {
2085
+ const { server_path, jwt } =
2086
+ parent.saltcorn.data.state.getState().mobileConfig;
2087
+ socket = io(server_path, {
2088
+ query: `jwt=${jwt}`,
2089
+ transports: ["websocket"],
2090
+ });
2091
+ } else socket = io({ transports: ["websocket"] });
2092
+ window.sharedSocket = socket;
2093
+ }
2094
+ return socket;
2095
+ }
2068
2096
 
2097
+ function init_room(viewname, room_id) {
2098
+ let socket = get_shared_socket();
2069
2099
  socket.emit("join_room", [viewname, room_id]);
2070
2100
  socket.on("message", (msg) => {
2071
2101
  if (msg.not_for_user_id) {
@@ -2088,32 +2118,46 @@ function init_room(viewname, room_id) {
2088
2118
  }
2089
2119
 
2090
2120
  function init_collab_room(viewname, eventCfgs) {
2091
- let socket = null;
2092
- if (parent?.saltcorn?.data?.state) {
2093
- const { server_path, jwt } =
2094
- parent.saltcorn.data.state.getState().mobileConfig;
2095
- socket = io(server_path, {
2096
- query: `jwt=${jwt}`,
2097
- transports: ["websocket"],
2098
- });
2099
- } else socket = io({ transports: ["websocket"] });
2121
+ let socket = get_shared_socket();
2100
2122
  for (const [event, callback] of Object.entries(eventCfgs.events)) {
2101
2123
  socket.on(event, callback);
2102
2124
  }
2103
- socket.on("connect", function () {
2125
+ const joinFn = () => {
2104
2126
  socket.emit("join_collab_room", viewname, (ack) => {
2105
- if (ack && ack.status === "ok") {
2127
+ if (ack && ack.status === "ok")
2106
2128
  console.log(`Joined collaboration room for view '${viewname}'`);
2107
- } else {
2108
- console.error("Failed to join collaboration room:", ack);
2109
- }
2129
+ else console.error("Failed to join collaboration room:", ack);
2110
2130
  });
2111
- });
2131
+ };
2132
+ if (socket.connected) joinFn();
2133
+ else socket.on("connect", joinFn);
2112
2134
  socket.on("disconnect", function () {
2113
2135
  console.log("Disconnected from the server");
2114
2136
  });
2115
2137
  }
2116
2138
 
2139
+ function init_dynamic_update_room() {
2140
+ if (
2141
+ !window.io ||
2142
+ navigator.userAgent.includes("jsdom") ||
2143
+ !dynamic_updates_cfg?.enabled
2144
+ )
2145
+ return;
2146
+ let socket = get_shared_socket();
2147
+ socket.on("dynamic_update", async (data) => {
2148
+ await common_done(data);
2149
+ });
2150
+ const joinFn = () => {
2151
+ socket.emit("join_dynamic_update_room", (ack) => {
2152
+ if (ack && ack.status === "ok") {
2153
+ if (window._sc_loglevel > 5) console.log("Joined dynamic update room");
2154
+ } else console.error("Failed to join dynamic update room:", ack);
2155
+ });
2156
+ };
2157
+ if (socket.connected) joinFn();
2158
+ else socket.on("connect", joinFn);
2159
+ }
2160
+
2117
2161
  function cancel_form(form) {
2118
2162
  if (!form) return;
2119
2163
  $(form).trigger("reset");
@@ -2159,7 +2203,7 @@ function check_saltcorn_notifications() {
2159
2203
  .then((resp) => {
2160
2204
  if (resp.success) {
2161
2205
  const n = resp.success;
2162
- const menu_item = $(`a.notify-menu-item`);
2206
+ const menu_item = $('a[href="/notifications"]');
2163
2207
 
2164
2208
  menu_item.html(
2165
2209
  `<i class="fa-fw mr-05 fas fa-bell"></i>Notifications (${n})`
@@ -2561,3 +2605,9 @@ async function initPushNotify() {
2561
2605
  console.error("Push notification initialization failed:", error);
2562
2606
  }
2563
2607
  }
2608
+
2609
+ if (document.readyState !== "loading") {
2610
+ init_dynamic_update_room();
2611
+ } else {
2612
+ document.addEventListener("DOMContentLoaded", init_dynamic_update_room);
2613
+ }
@@ -1,3 +1,15 @@
1
+ .table-valign-middle > tbody > tr > td {
2
+ vertical-align: middle;
3
+ }
4
+
5
+ .table-valign-top > tbody > tr > td {
6
+ vertical-align: top;
7
+ }
8
+
9
+ .table-valign-bottom > tbody > tr > td {
10
+ vertical-align: bottom;
11
+ }
12
+
1
13
  div.form-repeat {
2
14
  border: 1px dashed black;
3
15
  padding: 3px;
@@ -218,6 +218,9 @@ function pjax_to(href, e) {
218
218
  }
219
219
  $dest.html(res);
220
220
  if (localizer.length) localizer.attr("data-sc-local-state", href);
221
+ let $modal = $("#scmodal");
222
+ if ($modal.length && $modal.hasClass("show"))
223
+ $modal.prop("data-modal-state", href);
221
224
  initialize_page();
222
225
  document.dispatchEvent(new Event("pjax-loaded"));
223
226
  },
@@ -261,6 +264,8 @@ function spin_action_link(e) {
261
264
 
262
265
  $e.attr("data-innerhtml-prespin", $e.html());
263
266
  $e.html('<i class="fas fa-spinner fa-spin"></i>').width(width).height(height);
267
+ $(document).trigger("activate-spinner", $e);
268
+ $e.trigger("spin");
264
269
  }
265
270
 
266
271
  function reset_spinners() {
@@ -289,6 +294,7 @@ function view_post(viewnameOrElem, route, data, onDone, sendState) {
289
294
  type: "POST",
290
295
  headers: {
291
296
  "CSRF-Token": _sc_globalCsrf,
297
+ "Page-Load-Tag": _sc_pageloadtag,
292
298
  },
293
299
  ...(!isFormData
294
300
  ? {
@@ -423,6 +429,7 @@ function ajax_modal(url, opts = {}) {
423
429
  new bootstrap.Modal($("#scmodal"), {
424
430
  focus: false,
425
431
  }).show();
432
+ $("#scmodal .modal-body").find("[autofocus]").first().focus();
426
433
  initialize_page();
427
434
  (opts.onOpen || function () {})(res);
428
435
  $("#scmodal").on("hidden.bs.modal", function (e) {
@@ -702,6 +709,7 @@ function ajax_post(url, args) {
702
709
  type: "POST",
703
710
  headers: {
704
711
  "CSRF-Token": _sc_globalCsrf,
712
+ "Page-Load-Tag": _sc_pageloadtag,
705
713
  },
706
714
  ...(args || {}),
707
715
  })