n8n 1.81.2 → 1.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/README.md +40 -118
  2. package/dist/active-workflow-manager.js +1 -1
  3. package/dist/active-workflow-manager.js.map +1 -1
  4. package/dist/build.tsbuildinfo +1 -1
  5. package/dist/collaboration/collaboration.service.js +1 -1
  6. package/dist/collaboration/collaboration.service.js.map +1 -1
  7. package/dist/commands/audit.js +1 -1
  8. package/dist/commands/audit.js.map +1 -1
  9. package/dist/commands/base-command.js +1 -1
  10. package/dist/commands/base-command.js.map +1 -1
  11. package/dist/commands/execute-batch.js +1 -1
  12. package/dist/commands/execute-batch.js.map +1 -1
  13. package/dist/commands/execute.js +3 -3
  14. package/dist/commands/execute.js.map +1 -1
  15. package/dist/commands/export/credentials.js +1 -1
  16. package/dist/commands/export/credentials.js.map +1 -1
  17. package/dist/commands/export/workflow.js +1 -1
  18. package/dist/commands/export/workflow.js.map +1 -1
  19. package/dist/commands/import/credentials.js +4 -4
  20. package/dist/commands/import/credentials.js.map +1 -1
  21. package/dist/commands/import/workflow.js +5 -5
  22. package/dist/commands/import/workflow.js.map +1 -1
  23. package/dist/commands/ldap/reset.js +7 -7
  24. package/dist/commands/ldap/reset.js.map +1 -1
  25. package/dist/commands/start.js +2 -2
  26. package/dist/commands/start.js.map +1 -1
  27. package/dist/commands/webhook.js +1 -1
  28. package/dist/commands/webhook.js.map +1 -1
  29. package/dist/config/index.js +1 -1
  30. package/dist/config/index.js.map +1 -1
  31. package/dist/config/utils.js +1 -1
  32. package/dist/config/utils.js.map +1 -1
  33. package/dist/controllers/folder.controller.d.ts +32 -0
  34. package/dist/controllers/folder.controller.js +112 -0
  35. package/dist/controllers/folder.controller.js.map +1 -0
  36. package/dist/controllers/oauth/abstract-oauth.controller.js +3 -3
  37. package/dist/controllers/oauth/abstract-oauth.controller.js.map +1 -1
  38. package/dist/credentials/credentials.service.js +1 -1
  39. package/dist/credentials/credentials.service.js.map +1 -1
  40. package/dist/credentials-helper.js +3 -3
  41. package/dist/credentials-helper.js.map +1 -1
  42. package/dist/databases/config.js +1 -1
  43. package/dist/databases/config.js.map +1 -1
  44. package/dist/databases/dsl/column.d.ts +6 -0
  45. package/dist/databases/dsl/column.js +35 -5
  46. package/dist/databases/dsl/column.js.map +1 -1
  47. package/dist/databases/dsl/table.js +1 -1
  48. package/dist/databases/dsl/table.js.map +1 -1
  49. package/dist/databases/entities/folder.d.ts +2 -2
  50. package/dist/databases/entities/folder.js +1 -1
  51. package/dist/databases/entities/folder.js.map +1 -1
  52. package/dist/databases/entities/workflow-entity.js +1 -1
  53. package/dist/databases/entities/workflow-entity.js.map +1 -1
  54. package/dist/databases/migrations/common/1700571993961-AddGlobalAdminRole.js +1 -1
  55. package/dist/databases/migrations/common/1700571993961-AddGlobalAdminRole.js.map +1 -1
  56. package/dist/databases/migrations/common/1714133768519-CreateProject.js +1 -1
  57. package/dist/databases/migrations/common/1714133768519-CreateProject.js.map +1 -1
  58. package/dist/databases/migrations/common/1739549398681-CreateAnalyticsTables.d.ts +5 -0
  59. package/dist/databases/migrations/common/1739549398681-CreateAnalyticsTables.js +78 -0
  60. package/dist/databases/migrations/common/1739549398681-CreateAnalyticsTables.js.map +1 -0
  61. package/dist/databases/migrations/mysqldb/1740445074052-UpdateParentFolderIdColumn.d.ts +4 -0
  62. package/dist/databases/migrations/mysqldb/1740445074052-UpdateParentFolderIdColumn.js +14 -0
  63. package/dist/databases/migrations/mysqldb/1740445074052-UpdateParentFolderIdColumn.js.map +1 -0
  64. package/dist/databases/migrations/mysqldb/index.js +4 -0
  65. package/dist/databases/migrations/mysqldb/index.js.map +1 -1
  66. package/dist/databases/migrations/postgresdb/1740445074052-UpdateParentFolderIdColumn.d.ts +4 -0
  67. package/dist/databases/migrations/postgresdb/1740445074052-UpdateParentFolderIdColumn.js +23 -0
  68. package/dist/databases/migrations/postgresdb/1740445074052-UpdateParentFolderIdColumn.js.map +1 -0
  69. package/dist/databases/migrations/postgresdb/index.js +4 -0
  70. package/dist/databases/migrations/postgresdb/index.js.map +1 -1
  71. package/dist/databases/migrations/sqlite/1740445074052-UpdateParentFolderIdColumn.d.ts +6 -0
  72. package/dist/databases/migrations/sqlite/1740445074052-UpdateParentFolderIdColumn.js +39 -0
  73. package/dist/databases/migrations/sqlite/1740445074052-UpdateParentFolderIdColumn.js.map +1 -0
  74. package/dist/databases/migrations/sqlite/index.js +4 -0
  75. package/dist/databases/migrations/sqlite/index.js.map +1 -1
  76. package/dist/databases/repositories/execution.repository.js +3 -3
  77. package/dist/databases/repositories/execution.repository.js.map +1 -1
  78. package/dist/databases/repositories/folder-tag-mapping.repository.d.ts +6 -0
  79. package/dist/databases/repositories/folder-tag-mapping.repository.js +33 -0
  80. package/dist/databases/repositories/folder-tag-mapping.repository.js.map +1 -0
  81. package/dist/databases/repositories/folder.repository.d.ts +9 -6
  82. package/dist/databases/repositories/folder.repository.js +25 -4
  83. package/dist/databases/repositories/folder.repository.js.map +1 -1
  84. package/dist/databases/repositories/shared-workflow.repository.d.ts +2 -1
  85. package/dist/databases/repositories/shared-workflow.repository.js +2 -1
  86. package/dist/databases/repositories/shared-workflow.repository.js.map +1 -1
  87. package/dist/databases/repositories/workflow.repository.d.ts +7 -5
  88. package/dist/databases/repositories/workflow.repository.js +14 -1
  89. package/dist/databases/repositories/workflow.repository.js.map +1 -1
  90. package/dist/databases/subscribers/user-subscriber.js +2 -2
  91. package/dist/databases/subscribers/user-subscriber.js.map +1 -1
  92. package/dist/databases/utils/migration-helpers.js +4 -4
  93. package/dist/databases/utils/migration-helpers.js.map +1 -1
  94. package/dist/decorators/controller.registry.js +1 -1
  95. package/dist/decorators/controller.registry.js.map +1 -1
  96. package/dist/decorators/on-shutdown.js +1 -1
  97. package/dist/decorators/on-shutdown.js.map +1 -1
  98. package/dist/deprecation/deprecation.service.js +15 -2
  99. package/dist/deprecation/deprecation.service.js.map +1 -1
  100. package/dist/environments.ee/source-control/source-control-export.service.ee.js +8 -8
  101. package/dist/environments.ee/source-control/source-control-export.service.ee.js.map +1 -1
  102. package/dist/environments.ee/source-control/source-control-git.service.ee.js +20 -20
  103. package/dist/environments.ee/source-control/source-control-git.service.ee.js.map +1 -1
  104. package/dist/environments.ee/source-control/source-control-helper.ee.js +1 -1
  105. package/dist/environments.ee/source-control/source-control-helper.ee.js.map +1 -1
  106. package/dist/environments.ee/source-control/source-control-import.service.ee.js +3 -3
  107. package/dist/environments.ee/source-control/source-control-import.service.ee.js.map +1 -1
  108. package/dist/environments.ee/source-control/source-control-preferences.service.ee.js +5 -5
  109. package/dist/environments.ee/source-control/source-control-preferences.service.ee.js.map +1 -1
  110. package/dist/environments.ee/source-control/source-control.service.ee.js +4 -4
  111. package/dist/environments.ee/source-control/source-control.service.ee.js.map +1 -1
  112. package/dist/errors/aborted-execution-retry.error.d.ts +2 -2
  113. package/dist/errors/aborted-execution-retry.error.js +2 -4
  114. package/dist/errors/aborted-execution-retry.error.js.map +1 -1
  115. package/dist/errors/cache-errors/malformed-refresh-value.error.d.ts +2 -2
  116. package/dist/errors/cache-errors/malformed-refresh-value.error.js +1 -1
  117. package/dist/errors/cache-errors/malformed-refresh-value.error.js.map +1 -1
  118. package/dist/errors/cache-errors/uncacheable-value.error.d.ts +2 -2
  119. package/dist/errors/cache-errors/uncacheable-value.error.js +1 -1
  120. package/dist/errors/cache-errors/uncacheable-value.error.js.map +1 -1
  121. package/dist/errors/credential-not-found.error.d.ts +2 -2
  122. package/dist/errors/credential-not-found.error.js +1 -2
  123. package/dist/errors/credential-not-found.error.js.map +1 -1
  124. package/dist/errors/credentials-overwrites-already-set.error.d.ts +2 -2
  125. package/dist/errors/credentials-overwrites-already-set.error.js +1 -1
  126. package/dist/errors/credentials-overwrites-already-set.error.js.map +1 -1
  127. package/dist/errors/deduplication.error.d.ts +2 -2
  128. package/dist/errors/deduplication.error.js +1 -1
  129. package/dist/errors/deduplication.error.js.map +1 -1
  130. package/dist/errors/execution-not-found-error.d.ts +2 -2
  131. package/dist/errors/execution-not-found-error.js +1 -1
  132. package/dist/errors/execution-not-found-error.js.map +1 -1
  133. package/dist/errors/external-secrets-provider-not-found.error.d.ts +2 -2
  134. package/dist/errors/external-secrets-provider-not-found.error.js +1 -1
  135. package/dist/errors/external-secrets-provider-not-found.error.js.map +1 -1
  136. package/dist/errors/feature-not-licensed.error.d.ts +2 -2
  137. package/dist/errors/feature-not-licensed.error.js +1 -1
  138. package/dist/errors/feature-not-licensed.error.js.map +1 -1
  139. package/dist/errors/folder-not-found.error.d.ts +4 -0
  140. package/dist/errors/folder-not-found.error.js +13 -0
  141. package/dist/errors/folder-not-found.error.js.map +1 -0
  142. package/dist/errors/invalid-concurrency-limit.error.d.ts +2 -2
  143. package/dist/errors/invalid-concurrency-limit.error.js +2 -2
  144. package/dist/errors/invalid-concurrency-limit.error.js.map +1 -1
  145. package/dist/errors/invalid-role.error.d.ts +2 -2
  146. package/dist/errors/invalid-role.error.js +1 -1
  147. package/dist/errors/invalid-role.error.js.map +1 -1
  148. package/dist/errors/max-stalled-count.error.d.ts +2 -2
  149. package/dist/errors/max-stalled-count.error.js +1 -1
  150. package/dist/errors/missing-execution-stop.error.d.ts +2 -2
  151. package/dist/errors/missing-execution-stop.error.js +1 -1
  152. package/dist/errors/missing-execution-stop.error.js.map +1 -1
  153. package/dist/errors/non-json-body.error.d.ts +2 -2
  154. package/dist/errors/non-json-body.error.js +1 -1
  155. package/dist/errors/non-json-body.error.js.map +1 -1
  156. package/dist/errors/not-string-array.error.d.ts +2 -2
  157. package/dist/errors/not-string-array.error.js +1 -1
  158. package/dist/errors/not-string-array.error.js.map +1 -1
  159. package/dist/errors/postgres-live-rows-retrieval.error.d.ts +2 -2
  160. package/dist/errors/postgres-live-rows-retrieval.error.js +1 -1
  161. package/dist/errors/postgres-live-rows-retrieval.error.js.map +1 -1
  162. package/dist/errors/queued-execution-retry.error.d.ts +2 -2
  163. package/dist/errors/queued-execution-retry.error.js +2 -4
  164. package/dist/errors/queued-execution-retry.error.js.map +1 -1
  165. package/dist/errors/redactable.error.d.ts +2 -2
  166. package/dist/errors/redactable.error.js +1 -1
  167. package/dist/errors/redactable.error.js.map +1 -1
  168. package/dist/errors/response-errors/abstract/response.error.d.ts +2 -2
  169. package/dist/errors/response-errors/abstract/response.error.js +10 -1
  170. package/dist/errors/response-errors/abstract/response.error.js.map +1 -1
  171. package/dist/errors/response-errors/internal-server.error.d.ts +1 -1
  172. package/dist/errors/response-errors/internal-server.error.js +1 -1
  173. package/dist/errors/response-errors/internal-server.error.js.map +1 -1
  174. package/dist/errors/shared-workflow-not-found.error.d.ts +2 -2
  175. package/dist/errors/shared-workflow-not-found.error.js +1 -1
  176. package/dist/errors/shared-workflow-not-found.error.js.map +1 -1
  177. package/dist/errors/unknown-auth-type.error.d.ts +2 -2
  178. package/dist/errors/unknown-auth-type.error.js +1 -1
  179. package/dist/errors/unknown-auth-type.error.js.map +1 -1
  180. package/dist/errors/unknown-execution-mode.error.d.ts +2 -2
  181. package/dist/errors/unknown-execution-mode.error.js +1 -1
  182. package/dist/errors/unknown-execution-mode.error.js.map +1 -1
  183. package/dist/errors/variable-count-limit-reached.error.d.ts +2 -2
  184. package/dist/errors/variable-count-limit-reached.error.js +1 -1
  185. package/dist/errors/variable-count-limit-reached.error.js.map +1 -1
  186. package/dist/errors/variable-validation.error.d.ts +2 -2
  187. package/dist/errors/variable-validation.error.js +1 -1
  188. package/dist/errors/variable-validation.error.js.map +1 -1
  189. package/dist/errors/worker-missing-encryption-key.error.d.ts +2 -2
  190. package/dist/errors/worker-missing-encryption-key.error.js +2 -2
  191. package/dist/errors/worker-missing-encryption-key.error.js.map +1 -1
  192. package/dist/errors/workflow-history-version-not-found.error.d.ts +2 -2
  193. package/dist/errors/workflow-history-version-not-found.error.js +1 -1
  194. package/dist/errors/workflow-history-version-not-found.error.js.map +1 -1
  195. package/dist/errors/workflow-missing-id.error.d.ts +2 -2
  196. package/dist/errors/workflow-missing-id.error.js +1 -1
  197. package/dist/errors/workflow-missing-id.error.js.map +1 -1
  198. package/dist/evaluation.ee/test-definition.schema.d.ts +2 -2
  199. package/dist/evaluation.ee/test-runner/errors.ee.d.ts +3 -3
  200. package/dist/evaluation.ee/test-runner/errors.ee.js +2 -2
  201. package/dist/evaluation.ee/test-runner/errors.ee.js.map +1 -1
  202. package/dist/evaluation.ee/test-runner/test-runner.service.ee.js +19 -1
  203. package/dist/evaluation.ee/test-runner/test-runner.service.ee.js.map +1 -1
  204. package/dist/executions/execution.service.js +3 -3
  205. package/dist/executions/execution.service.js.map +1 -1
  206. package/dist/executions/parse-range-query.middleware.js +1 -1
  207. package/dist/executions/parse-range-query.middleware.js.map +1 -1
  208. package/dist/external-hooks.js +2 -2
  209. package/dist/external-hooks.js.map +1 -1
  210. package/dist/external-secrets.ee/external-secrets-manager.ee.js +1 -1
  211. package/dist/external-secrets.ee/external-secrets-manager.ee.js.map +1 -1
  212. package/dist/external-secrets.ee/providers/infisical.js +3 -3
  213. package/dist/external-secrets.ee/providers/infisical.js.map +1 -1
  214. package/dist/ldap.ee/ldap.service.ee.js +3 -3
  215. package/dist/ldap.ee/ldap.service.ee.js.map +1 -1
  216. package/dist/license.d.ts +2 -1
  217. package/dist/license.js +6 -7
  218. package/dist/license.js.map +1 -1
  219. package/dist/load-nodes-and-credentials.js +2 -2
  220. package/dist/load-nodes-and-credentials.js.map +1 -1
  221. package/dist/manual-execution.service.js +4 -1
  222. package/dist/manual-execution.service.js.map +1 -1
  223. package/dist/metrics/prometheus-metrics.service.d.ts +4 -1
  224. package/dist/metrics/prometheus-metrics.service.js +28 -2
  225. package/dist/metrics/prometheus-metrics.service.js.map +1 -1
  226. package/dist/middlewares/list-query/dtos/base.filter.dto.js +2 -2
  227. package/dist/middlewares/list-query/dtos/base.filter.dto.js.map +1 -1
  228. package/dist/middlewares/list-query/dtos/base.select.dto.js +1 -1
  229. package/dist/middlewares/list-query/dtos/base.select.dto.js.map +1 -1
  230. package/dist/middlewares/list-query/dtos/pagination.dto.js +2 -2
  231. package/dist/middlewares/list-query/dtos/pagination.dto.js.map +1 -1
  232. package/dist/middlewares/list-query/pagination.js +1 -1
  233. package/dist/middlewares/list-query/pagination.js.map +1 -1
  234. package/dist/middlewares/list-query/sort-by.js +1 -1
  235. package/dist/middlewares/list-query/sort-by.js.map +1 -1
  236. package/dist/node-types.js +2 -2
  237. package/dist/node-types.js.map +1 -1
  238. package/dist/permissions.ee/check-access.js +1 -1
  239. package/dist/permissions.ee/check-access.js.map +1 -1
  240. package/dist/permissions.ee/project-roles.js +13 -0
  241. package/dist/permissions.ee/project-roles.js.map +1 -1
  242. package/dist/push/websocket.push.js +1 -1
  243. package/dist/push/websocket.push.js.map +1 -1
  244. package/dist/scaling/job-processor.js +3 -3
  245. package/dist/scaling/job-processor.js.map +1 -1
  246. package/dist/scaling/scaling.service.js +3 -3
  247. package/dist/scaling/scaling.service.js.map +1 -1
  248. package/dist/server.d.ts +1 -0
  249. package/dist/server.js +3 -2
  250. package/dist/server.js.map +1 -1
  251. package/dist/services/cache/cache.service.js +1 -3
  252. package/dist/services/cache/cache.service.js.map +1 -1
  253. package/dist/services/cache/redis.cache-manager.js +1 -1
  254. package/dist/services/cache/redis.cache-manager.js.map +1 -1
  255. package/dist/services/community-packages.service.js +9 -9
  256. package/dist/services/community-packages.service.js.map +1 -1
  257. package/dist/services/credentials-tester.service.js +1 -1
  258. package/dist/services/credentials-tester.service.js.map +1 -1
  259. package/dist/services/dynamic-node-parameters.service.js +3 -3
  260. package/dist/services/dynamic-node-parameters.service.js.map +1 -1
  261. package/dist/services/folder.service.d.ts +32 -0
  262. package/dist/services/folder.service.js +133 -0
  263. package/dist/services/folder.service.js.map +1 -0
  264. package/dist/services/project.service.ee.d.ts +3 -3
  265. package/dist/services/project.service.ee.js +2 -2
  266. package/dist/services/project.service.ee.js.map +1 -1
  267. package/dist/services/role.service.js +1 -1
  268. package/dist/services/role.service.js.map +1 -1
  269. package/dist/services/user.service.js +1 -1
  270. package/dist/services/user.service.js.map +1 -1
  271. package/dist/services/workflow-loader.service.js +1 -1
  272. package/dist/services/workflow-loader.service.js.map +1 -1
  273. package/dist/shutdown/shutdown.service.d.ts +2 -2
  274. package/dist/shutdown/shutdown.service.js +6 -7
  275. package/dist/shutdown/shutdown.service.js.map +1 -1
  276. package/dist/sso.ee/saml/errors/invalid-saml-metadata.error.d.ts +2 -2
  277. package/dist/sso.ee/saml/errors/invalid-saml-metadata.error.js +2 -2
  278. package/dist/sso.ee/saml/errors/invalid-saml-metadata.error.js.map +1 -1
  279. package/dist/sso.ee/saml/saml.service.ee.js +2 -2
  280. package/dist/sso.ee/saml/saml.service.ee.js.map +1 -1
  281. package/dist/task-runners/errors/task-runner-disconnected-error.d.ts +2 -2
  282. package/dist/task-runners/errors/task-runner-disconnected-error.js +1 -1
  283. package/dist/task-runners/errors/task-runner-disconnected-error.js.map +1 -1
  284. package/dist/task-runners/errors/task-runner-failed-heartbeat.error.d.ts +2 -2
  285. package/dist/task-runners/errors/task-runner-failed-heartbeat.error.js +1 -1
  286. package/dist/task-runners/errors/task-runner-failed-heartbeat.error.js.map +1 -1
  287. package/dist/task-runners/errors/task-runner-oom-error.d.ts +2 -2
  288. package/dist/task-runners/errors/task-runner-oom-error.js +2 -2
  289. package/dist/task-runners/errors/task-runner-oom-error.js.map +1 -1
  290. package/dist/task-runners/errors/task-runner-restart-loop-error.d.ts +2 -2
  291. package/dist/task-runners/errors/task-runner-restart-loop-error.js +2 -4
  292. package/dist/task-runners/errors/task-runner-restart-loop-error.js.map +1 -1
  293. package/dist/task-runners/task-broker/errors/task-deferred.error.d.ts +2 -2
  294. package/dist/task-runners/task-broker/errors/task-deferred.error.js +2 -2
  295. package/dist/task-runners/task-broker/errors/task-deferred.error.js.map +1 -1
  296. package/dist/task-runners/task-broker/errors/task-reject.error.d.ts +2 -2
  297. package/dist/task-runners/task-broker/errors/task-reject.error.js +2 -2
  298. package/dist/task-runners/task-broker/errors/task-reject.error.js.map +1 -1
  299. package/dist/task-runners/task-broker/errors/task-runner-timeout.error.d.ts +2 -2
  300. package/dist/task-runners/task-broker/errors/task-runner-timeout.error.js +1 -1
  301. package/dist/task-runners/task-broker/task-broker-ws-server.js +1 -1
  302. package/dist/task-runners/task-broker/task-broker-ws-server.js.map +1 -1
  303. package/dist/task-runners/task-broker/task-broker.service.js +3 -7
  304. package/dist/task-runners/task-broker/task-broker.service.js.map +1 -1
  305. package/dist/wait-tracker.js +3 -3
  306. package/dist/wait-tracker.js.map +1 -1
  307. package/dist/webhooks/webhook.service.js +1 -1
  308. package/dist/webhooks/webhook.service.js.map +1 -1
  309. package/dist/workflow-execute-additional-data.js +2 -2
  310. package/dist/workflow-execute-additional-data.js.map +1 -1
  311. package/dist/workflows/workflow.request.d.ts +1 -0
  312. package/dist/workflows/workflow.service.d.ts +2 -2
  313. package/dist/workflows/workflow.service.ee.js +1 -1
  314. package/dist/workflows/workflow.service.ee.js.map +1 -1
  315. package/dist/workflows/workflows.controller.d.ts +5 -3
  316. package/dist/workflows/workflows.controller.js +17 -11
  317. package/dist/workflows/workflows.controller.js.map +1 -1
  318. package/package.json +15 -14
  319. package/templates/form-trigger-404.handlebars +140 -79
  320. package/templates/form-trigger-409.handlebars +128 -66
  321. package/templates/form-trigger-completion.handlebars +99 -21
  322. package/templates/form-trigger.handlebars +181 -129
@@ -11,6 +11,69 @@
11
11
  <link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap" rel="stylesheet">
12
12
  <title>{{formTitle}}</title>
13
13
  <style>
14
+ :root {
15
+ /* Fonts */
16
+ --font-family: "Open Sans", sans-serif;
17
+ --font-size-body: 12px;
18
+ --font-size-label: 14px;
19
+ --font-size-test-notice: 12px;
20
+ --font-size-input: 14px;
21
+ --font-size-header: 20px;
22
+ --font-size-paragraph: 14px;
23
+ --font-size-link: 12px;
24
+ --font-size-error: 12px;
25
+ --font-size-html-h1: 28px;
26
+ --font-size-html-h2: 20px;
27
+ --font-size-html-h3: 16px;
28
+ --font-size-html-h4: 14px;
29
+ --font-size-html-h5: 12px;
30
+ --font-size-html-h6: 10px;
31
+
32
+ /* Colors */
33
+ --color-background: #fbfcfe;
34
+ --color-test-notice-text: #e6a23d;
35
+ --color-test-notice-bg: #fefaf6;
36
+ --color-test-notice-border: #f6dcb7;
37
+ --color-card-bg: #ffffff;
38
+ --color-card-border: #dbdfe7;
39
+ --color-card-shadow: rgba(99, 77, 255, 0.06);
40
+ --color-link: #7e8186;
41
+ --color-header: #525356;
42
+ --color-label: #555555;
43
+ --color-input-border: #dbdfe7;
44
+ --color-input-text: #71747A;
45
+ --color-focus-border: rgb(90, 76, 194);
46
+ --color-submit-btn-bg: #ff6d5a;
47
+ --color-submit-btn-text: #ffffff;
48
+ --color-error: #ea1f30;
49
+ --color-required: #ff6d5a;
50
+ --color-clear-button-bg: #7e8186;
51
+ --color-html-text: #555;
52
+ --color-html-link: #FF6D5A;
53
+
54
+ /* Border Radii */
55
+ --border-radius-card: 8px;
56
+ --border-radius-input: 6px;
57
+ --border-radius-clear-btn: 50%;
58
+
59
+ /* Spacing */
60
+ --padding-container-top: 24px;
61
+ --padding-card: 24px;
62
+ --padding-test-notice-vertical: 12px;
63
+ --padding-test-notice-horizontal: 24px;
64
+ --margin-bottom-card: 16px;
65
+ --padding-form-input: 12px;
66
+
67
+ /* Dimensions */
68
+ --container-width: 448px;
69
+ --submit-btn-height: 48px;
70
+ --checkbox-size: 18px;
71
+
72
+ /* Others */
73
+ --box-shadow-card: 0px 4px 16px 0px var(--color-card-shadow);
74
+ --opacity-placeholder: 0.5;
75
+ }
76
+
14
77
  *,
15
78
  ::after,
16
79
  ::before {
@@ -20,53 +83,51 @@
20
83
  }
21
84
 
22
85
  body {
23
- font-family:
24
- "Open Sans",
25
- sans-serif;
86
+ font-family: var(--font-family);
26
87
  font-weight: 400;
27
- font-size: 12px;
88
+ font-size: var(--font-size-body);
28
89
  display: flex;
29
90
  flex-direction: column;
30
91
  justify-content: start;
31
- background-color: #fbfcfe;
92
+ background-color: var(--color-background);
32
93
  }
33
94
 
34
95
  .container {
35
96
  margin: auto;
36
97
  text-align: center;
37
- padding-top: 24px;
38
- width: 448px;
98
+ padding-top: var(--padding-container-top);
99
+ width: var(--container-width);
39
100
  }
40
101
 
41
102
  .test-notice {
42
- padding: 12px 24px;
43
- color: #e6a23d;
44
- background-color: #fefaf6;
45
- border-radius: 8px;
46
- border: 1px solid #f6dcb7;
47
- font-size: 12px;
103
+ padding: var(--padding-test-notice-vertical) var(--padding-test-notice-horizontal);
104
+ color: var(--color-test-notice-text);
105
+ background-color: var(--color-test-notice-bg);
106
+ border-radius: var(--border-radius-card);
107
+ border: 1px solid var(--color-test-notice-border);
108
+ font-size: var(--font-size-test-notice);
48
109
  font-weight: 400;
49
110
  line-height: 16px;
50
111
  text-align: left;
51
- margin-bottom: 16px;
112
+ margin-bottom: var(--margin-bottom-card);
52
113
  }
53
114
 
54
115
  .card {
55
- padding: 24px;
56
- background-color: white;
57
- border: 1px solid #dbdfe7;
58
- border-radius: 8px;
59
- box-shadow: 0px 4px 16px 0px #634dff0f;
60
- margin-bottom: 16px;
116
+ padding: var(--padding-card);
117
+ background-color: var(--color-card-bg);
118
+ border: 1px solid var(--color-card-border);
119
+ border-radius: var(--border-radius-card);
120
+ box-shadow: var(--box-shadow-card);
121
+ margin-bottom: var(--margin-bottom-card);
61
122
  }
62
123
 
63
124
  .n8n-link {
64
- padding-bottom: 24px;
125
+ padding-bottom: var(--padding-container-top);
65
126
  }
66
127
  .n8n-link a {
67
- color: #7e8186;
128
+ color: var(--color-link);
68
129
  font-weight: 600;
69
- font-size: 12px;
130
+ font-size: var(--font-size-link);
70
131
  text-decoration: none;
71
132
  }
72
133
 
@@ -76,93 +137,89 @@
76
137
  }
77
138
 
78
139
  .form-header h1 {
79
- color: #525356;
80
- font-size: 20px;
140
+ color: var(--color-header);
141
+ font-size: var(--font-size-header);
81
142
  font-weight: 400;
82
143
  }
83
144
 
84
145
  .form-header p {
85
146
  padding-top: 8px;
86
- color: #7e8186;
87
- font-size: 14px;
147
+ color: var(--color-link);
148
+ font-size: var(--font-size-paragraph);
88
149
  font-weight: 400;
89
150
  }
90
151
 
91
152
  .inputs-wrapper {
92
- padding-top: 24px;
93
- padding-bottom: 24px;
153
+ padding-top: var(--padding-container-top);
154
+ padding-bottom: var(--padding-container-top);
94
155
  }
95
156
 
96
157
  form label {
97
158
  display: block;
98
159
  text-align: left;
99
- font-size: 14px;
160
+ font-size: var(--font-size-label);
100
161
  font-weight: 600;
101
- color: #555555;
162
+ color: var(--color-label);
102
163
  padding-bottom: 6px;
103
164
  }
104
165
 
105
166
  form .form-input {
106
- border: 1px solid #dbdfe7;
107
- border-radius: 6px;
167
+ border: 1px solid var(--color-input-border);
168
+ border-radius: var(--border-radius-input);
108
169
  width: 100%;
109
- font-size: 14px;
110
- color: #71747A;
170
+ font-size: var(--font-size-input);
171
+ color: var(--color-input-text);
111
172
  font-weight: 400;
112
- padding: 12px;
173
+ padding: var(--padding-form-input);
113
174
  }
114
175
 
115
176
  form textarea:focus,
116
177
  form input:focus {
117
178
  outline: none;
118
- border-color: rgb(90, 76, 194);
179
+ border-color: var(--color-focus-border);
119
180
  }
120
181
 
121
182
  .select-input {
122
- border: 1px solid #dbdfe7;
123
- border-radius: 6px;
183
+ border: 1px solid var(--color-input-border);
184
+ border-radius: var(--border-radius-input);
124
185
  }
125
186
 
126
187
  .select-input:focus-within {
127
- border: 1px solid rgb(90, 76, 194);
188
+ border: 1px solid var(--color-focus-border);
128
189
  }
129
190
 
130
191
  form select {
131
192
  outline: transparent;
132
193
  border: none;
133
- border-radius: 6px;
194
+ border-radius: var(--border-radius-input);
134
195
  width: 100%;
135
- font-size: 14px;
136
- color: #71747A;
196
+ font-size: var(--font-size-input);
197
+ color: var(--color-input-text);
137
198
  font-weight: 400;
138
- background-color: white;
139
- padding: 12px;
199
+ background-color: var(--color-card-bg);
200
+ padding: var(--padding-form-input);
140
201
  border-right: 12px solid transparent;
141
202
  }
142
203
 
143
204
  input[type='date'] {
144
- font-family:
145
- Open Sans,
146
- sans-serif;
205
+ font-family: var(--font-family);
147
206
  }
148
207
 
149
208
  ::placeholder {
150
- opacity: 0.5;
209
+ opacity: var(--opacity-placeholder);
151
210
  }
152
211
 
153
212
  #submit-btn {
154
213
  width: 100%;
155
- height: 48px;
156
- padding: 12px;
157
- border-radius: 6px;
214
+ height: var(--submit-btn-height);
215
+ padding: var(--padding-form-input);
216
+ border-radius: var(--border-radius-input);
158
217
  border: 0;
159
- font-size: 14px;
218
+ font-size: var(--font-size-input);
160
219
  font-weight: 600;
161
- font-family:
162
- Open Sans,
163
- sans-serif;
164
- background-color: #ff6d5a;
165
- color: #ffffff;
220
+ font-family: var(--font-family);
221
+ background-color: var(--color-submit-btn-bg);
222
+ color: var(--color-submit-btn-text);
166
223
  cursor: pointer;
167
224
  }
168
225
 
@@ -174,7 +231,7 @@
174
231
  #submit-btn span svg {
175
232
  display: inline-block;
176
233
  vertical-align: middle;
177
- fill: #ffffff;
234
+ fill: var(--color-submit-btn-text);
178
235
  animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
179
236
  }
180
237
 
@@ -194,9 +251,9 @@
194
251
  .error-hidden {
195
252
  display: block;
196
253
  position: relative;
197
- color: #ea1f30;
254
+ color: var(--color-error);
198
255
  text-align: left;
199
- font-size: 12px;
256
+ font-size: var(--font-size-error);
200
257
  font-weight: 400;
201
258
  visibility: hidden;
202
259
  padding-top: 6px;
@@ -220,33 +277,33 @@
220
277
 
221
278
  .multiselect-option label {
222
279
  padding-left: 12px;
223
- color: #7e8186;
280
+ color: var(--color-link);
224
281
  font-weight: 400;
225
282
  cursor: pointer;
226
283
  }
227
284
 
228
285
  .multiselect-checkbox {
229
286
  vertical-align: middle;
230
- min-width: 18px;
287
+ min-width: var(--checkbox-size);
231
288
  }
232
289
 
233
290
  input[type='checkbox'] {
234
- width: 18px;
235
- height: 18px;
291
+ width: var(--checkbox-size);
292
+ height: var(--checkbox-size);
236
293
  cursor: pointer;
237
294
  }
238
295
  /* required field ----------------------------- */
239
296
  .form-required {
240
297
  }
241
298
  label.form-required::after {
242
- content: ' *';
243
- color: #ff6d5a;
299
+ content: ' *';
300
+ color: var(--color-required);
244
301
  }
245
302
 
246
303
  hr {
247
304
  border: 0;
248
305
  height: 1px;
249
- border-top: 1px solid #dbdfe7;
306
+ border-top: 1px solid var(--color-input-border);
250
307
  margin-top: 24px;
251
308
  margin-bottom: 24px;
252
309
  display: none;
@@ -264,14 +321,12 @@
264
321
  right: 5px;
265
322
  top: 50%;
266
323
  transform: translateY(-65%);
267
- background-color: #7e8186;
324
+ background-color: var(--color-clear-button-bg);
268
325
  border: none;
269
- border-radius: 50%;
326
+ border-radius: var(--border-radius-clear-btn);
270
327
  font-size: 14px;
271
328
  font-weight: 600;
272
- font-family:
273
- Open Sans,
274
- sans-serif;
329
+ font-family: var(--font-family);
275
330
  color: white;
276
331
  width: 20px;
277
332
  height: 20px;
@@ -281,66 +336,66 @@
281
336
  display: none;
282
337
  }
283
338
  input[type="file"]:not(:empty) + .clear-button {
284
- display: inline-block;
339
+ display: inline-block;
285
340
  }
286
341
 
287
342
  div.html {
288
- text-align: left;
289
- color: #555;
290
- font-size: 14px;
343
+ text-align: left;
344
+ color: var(--color-html-text);
345
+ font-size: var(--font-size-input);
291
346
  }
292
347
  div.html h1, div.html h2, div.html h3, div.html h4, div.html h5, div.html h6, div.html p, div.html ul, div.html ol, div.html a {
293
- font-weight: 400;
294
- font-style: normal;
295
- margin-bottom: 8px;
348
+ font-weight: 400;
349
+ font-style: normal;
350
+ margin-bottom: 8px;
296
351
  }
297
352
  div.html li {
298
- margin-bottom: 8px;
299
- margin-left: 24px;
353
+ margin-bottom: 8px;
354
+ margin-left: 24px;
300
355
  }
301
356
  div.html ul, div.html ol {
302
- font-size: 14px;
303
- display: flex;
304
- flex-direction: column;
305
- align-self: stretch;
306
- line-height: normal;
357
+ font-size: var(--font-size-input);
358
+ display: flex;
359
+ flex-direction: column;
360
+ align-self: stretch;
361
+ line-height: normal;
307
362
  }
308
363
  div.html b {
309
- font-weight: 600;
364
+ font-weight: 600;
310
365
  }
311
366
  div.html h1 {
312
- font-size: 28px;
313
- line-height: 35px;
367
+ font-size: var(--font-size-html-h1);
368
+ line-height: 35px;
314
369
  }
315
370
  div.html h2 {
316
- font-size: 20px;
317
- line-height: 26px;
371
+ font-size: var(--font-size-html-h2);
372
+ line-height: 26px;
318
373
  }
319
374
  div.html h3 {
320
- font-size: 16px;
321
- line-height: 24px;
375
+ font-size: var(--font-size-html-h3);
376
+ line-height: 24px;
322
377
  }
323
378
  div.html h4 {
324
- font-size: 14px;
325
- line-height: 18px;
379
+ font-size: var(--font-size-html-h4);
380
+ line-height: 18px;
326
381
  }
327
382
  div.html h5 {
328
- font-size: 12px;
383
+ font-size: var(--font-size-html-h5);
329
384
  }
330
385
  div.html h6 {
331
- font-size: 10px;
386
+ font-size: var(--font-size-html-h6);
332
387
  }
333
388
  div.html p {
334
- margin-bottom: 8px;
389
+ margin-bottom: 8px;
335
390
  }
336
391
  div.html a {
337
- color: #FF6D5A;
338
- font-size: 14px;
392
+ color: var(--color-html-link);
393
+ font-size: var(--font-size-input);
339
394
  }
340
395
 
341
396
  @media only screen and (max-width: 500px) {
342
397
  body {
343
- background-color: white;
398
+ background-color: #ffffff;
344
399
  }
345
400
  hr {
346
401
  display: block;
@@ -349,21 +404,27 @@
349
404
  width: 95%;
350
405
  min-height: 100vh;
351
406
  padding: 24px;
352
- background-color: white;
353
- border: 0px solid #dbdfe7;
407
+ background-color: #ffffff;
408
+ border: 0px solid var(--color-input-border);
354
409
  border-radius: 0px;
355
- box-shadow: 0px 0px 0px 0px white;
410
+ box-shadow: 0px 0px 0px 0px #ffffff;
356
411
  }
357
412
  .card {
358
413
  padding: 0px;
359
- background-color: white;
360
- border: 0px solid #dbdfe7;
414
+ background-color: #ffffff;
415
+ border: 0px solid var(--color-input-border);
361
416
  border-radius: 0px;
362
- box-shadow: 0px 0px 0px 0px white;
417
+ box-shadow: 0px 0px 0px 0px #ffffff;
363
418
  margin-bottom: 0px;
364
419
  }
365
420
  }
366
421
  </style>
422
+
423
+ {{#if dangerousCustomCss}}
424
+ <style>
425
+ {{{ dangerousCustomCss }}}
426
+ </style>
427
+ {{/if}}
367
428
  </head>
368
429
 
369
430
  <body>
@@ -376,8 +437,6 @@
376
437
  <hr>
377
438
  {{/if}}
378
439
 
379
-
380
-
381
440
  {{#if validForm}}
382
441
  <form class='card' action='#' method='POST' name='n8n-form' id='n8n-form' novalidate>
383
442
  <div class='form-header'>
@@ -490,7 +549,7 @@
490
549
  xmlns='http://www.w3.org/2000/svg'
491
550
  height='18px'
492
551
  viewBox='0 0 512 512'
493
- ><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. -->
552
+ >
494
553
  <path
495
554
  d='M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z'
496
555
  />
@@ -564,8 +623,6 @@
564
623
  </div>
565
624
  {{/if}}
566
625
 
567
-
568
-
569
626
  {{#if redirectUrl}}
570
627
  <a id='redirectUrl' href='{{redirectUrl}}' style='display: none;'></a>
571
628
  {{/if}}
@@ -642,12 +699,12 @@
642
699
  const form = document.querySelector('#n8n-form');
643
700
 
644
701
  document.querySelectorAll("input[type=number]").forEach(function (element) {
645
- element.addEventListener("wheel", function(event) {
646
- if (document.activeElement === event.target) {
647
- event.preventDefault();
648
- }
649
- });
650
- });
702
+ element.addEventListener("wheel", function(event) {
703
+ if (document.activeElement === event.target) {
704
+ event.preventDefault();
705
+ }
706
+ });
707
+ });
651
708
 
652
709
  document.querySelectorAll('input[type="file"]').forEach(fileInput => {
653
710
  const clearButton = fileInput.nextElementSibling;
@@ -657,8 +714,8 @@
657
714
  const files = fileInput.files;
658
715
 
659
716
  if (files.length > 0) {
660
- previousFiles = Array.from(files);
661
- clearButton.style.display = 'inline-block';
717
+ previousFiles = Array.from(files);
718
+ clearButton.style.display = 'inline-block';
662
719
  } else {
663
720
  if (previousFiles.length > 0) {
664
721
  const dataTransfer = new DataTransfer();
@@ -702,15 +759,15 @@
702
759
  const errorSelector = `.error-${input.id}`;
703
760
  const error = document.querySelector(errorSelector);
704
761
 
705
- input.addEventListener("input", function(event) {
762
+ input.addEventListener("input", function(event) {
706
763
  const value = input.value.trim();
707
764
  if (value === "") {
708
765
  error.classList.remove('error-show');
709
766
  } else {
710
767
  validateEmailInput(value, error);
711
768
  }
712
- });
713
- });
769
+ });
770
+ });
714
771
 
715
772
  form.addEventListener('submit', (e) => {
716
773
  const valid = [];
@@ -753,11 +810,6 @@
753
810
  }
754
811
  }
755
812
 
756
- document.querySelectorAll('.multiselect').forEach((multiselect) => {
757
- const selectedValues = getSelectedValues(multiselect);
758
- formData.append(multiselect.id, JSON.stringify(selectedValues));
759
- });
760
-
761
813
  document.querySelector('#submit-btn').disabled = true;
762
814
  document.querySelector('#submit-btn').style.cursor = 'not-allowed';
763
815
  document.querySelector('#submit-btn span').style.display = 'inline-block';