@researchdatabox/sails-ng-common 0.2.0 → 5.0.0-RC1

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 (237) hide show
  1. package/dist/src/config/base-field-component.model.d.ts +26 -0
  2. package/dist/src/config/base-field-component.model.js +29 -0
  3. package/dist/src/config/base-field-component.outline.d.ts +108 -0
  4. package/dist/src/config/base-field-component.outline.js +3 -0
  5. package/dist/src/config/component/accordion.model.d.ts +103 -0
  6. package/dist/src/config/component/accordion.model.js +127 -0
  7. package/dist/src/config/component/accordion.outline.d.ts +162 -0
  8. package/dist/src/config/component/accordion.outline.js +13 -0
  9. package/dist/src/config/component/action-row-layout.model.d.ts +28 -0
  10. package/dist/src/config/component/action-row-layout.model.js +35 -0
  11. package/dist/src/config/component/action-row-layout.outline.d.ts +36 -0
  12. package/dist/src/config/component/action-row-layout.outline.js +6 -0
  13. package/dist/src/config/component/cancel-button.model.d.ts +48 -0
  14. package/dist/src/config/component/cancel-button.model.js +58 -0
  15. package/dist/src/config/component/cancel-button.outline.d.ts +85 -0
  16. package/dist/src/config/component/cancel-button.outline.js +6 -0
  17. package/dist/src/config/component/checkbox-input.model.d.ts +67 -0
  18. package/dist/src/config/component/checkbox-input.model.js +79 -0
  19. package/dist/src/config/component/checkbox-input.outline.d.ts +93 -0
  20. package/dist/src/config/component/checkbox-input.outline.js +8 -0
  21. package/dist/src/config/component/checkbox-tree.model.d.ts +68 -0
  22. package/dist/src/config/component/checkbox-tree.model.js +80 -0
  23. package/dist/src/config/component/checkbox-tree.outline.d.ts +105 -0
  24. package/dist/src/config/component/checkbox-tree.outline.js +8 -0
  25. package/dist/src/config/component/content.model.d.ts +46 -0
  26. package/dist/src/config/component/content.model.js +56 -0
  27. package/dist/src/config/component/content.outline.d.ts +74 -0
  28. package/dist/src/config/component/content.outline.js +6 -0
  29. package/dist/src/config/component/data-location.model.d.ts +83 -0
  30. package/dist/src/config/component/data-location.model.js +95 -0
  31. package/dist/src/config/component/data-location.outline.d.ts +124 -0
  32. package/dist/src/config/component/data-location.outline.js +6 -0
  33. package/dist/src/config/component/date-input.model.d.ts +67 -0
  34. package/dist/src/config/component/date-input.model.js +80 -0
  35. package/dist/src/config/component/date-input.outline.d.ts +88 -0
  36. package/dist/src/config/component/date-input.outline.js +8 -0
  37. package/dist/src/config/component/default-layout.model.d.ts +22 -0
  38. package/dist/src/config/component/default-layout.model.js +30 -0
  39. package/dist/src/config/component/default-layout.outline.d.ts +29 -0
  40. package/dist/src/config/component/default-layout.outline.js +5 -0
  41. package/dist/src/config/component/delete-button.model.d.ts +46 -0
  42. package/dist/src/config/component/delete-button.model.js +48 -0
  43. package/dist/src/config/component/delete-button.outline.d.ts +89 -0
  44. package/dist/src/config/component/delete-button.outline.js +5 -0
  45. package/dist/src/config/component/dropdown-input.model.d.ts +65 -0
  46. package/dist/src/config/component/dropdown-input.model.js +78 -0
  47. package/dist/src/config/component/dropdown-input.outline.d.ts +92 -0
  48. package/dist/src/config/component/dropdown-input.outline.js +8 -0
  49. package/dist/src/config/component/file-upload.model.d.ts +67 -0
  50. package/dist/src/config/component/file-upload.model.js +81 -0
  51. package/dist/src/config/component/file-upload.outline.d.ts +99 -0
  52. package/dist/src/config/component/file-upload.outline.js +8 -0
  53. package/dist/src/config/component/group.model.d.ts +61 -0
  54. package/dist/src/config/component/group.model.js +75 -0
  55. package/dist/src/config/component/group.outline.d.ts +83 -0
  56. package/dist/src/config/component/group.outline.js +8 -0
  57. package/dist/src/config/component/inline-layout.model.d.ts +22 -0
  58. package/dist/src/config/component/inline-layout.model.js +29 -0
  59. package/dist/src/config/component/inline-layout.outline.d.ts +29 -0
  60. package/dist/src/config/component/inline-layout.outline.js +5 -0
  61. package/dist/src/config/component/integration-status.model.d.ts +49 -0
  62. package/dist/src/config/component/integration-status.model.js +65 -0
  63. package/dist/src/config/component/integration-status.outline.d.ts +61 -0
  64. package/dist/src/config/component/integration-status.outline.js +5 -0
  65. package/dist/src/config/component/map.model.d.ts +69 -0
  66. package/dist/src/config/component/map.model.js +86 -0
  67. package/dist/src/config/component/map.outline.d.ts +110 -0
  68. package/dist/src/config/component/map.outline.js +8 -0
  69. package/dist/src/config/component/pdf-list.model.d.ts +68 -0
  70. package/dist/src/config/component/pdf-list.model.js +71 -0
  71. package/dist/src/config/component/pdf-list.outline.d.ts +97 -0
  72. package/dist/src/config/component/pdf-list.outline.js +6 -0
  73. package/dist/src/config/component/publish-data-location-refresh.model.d.ts +39 -0
  74. package/dist/src/config/component/publish-data-location-refresh.model.js +52 -0
  75. package/dist/src/config/component/publish-data-location-refresh.outline.d.ts +58 -0
  76. package/dist/src/config/component/publish-data-location-refresh.outline.js +5 -0
  77. package/dist/src/config/component/publish-data-location-selector.model.d.ts +78 -0
  78. package/dist/src/config/component/publish-data-location-selector.model.js +104 -0
  79. package/dist/src/config/component/publish-data-location-selector.outline.d.ts +110 -0
  80. package/dist/src/config/component/publish-data-location-selector.outline.js +6 -0
  81. package/dist/src/config/component/question-tree.helper.d.ts +58 -0
  82. package/dist/src/config/component/question-tree.helper.js +291 -0
  83. package/dist/src/config/component/question-tree.model.d.ts +64 -0
  84. package/dist/src/config/component/question-tree.model.js +80 -0
  85. package/dist/src/config/component/question-tree.outline.d.ts +314 -0
  86. package/dist/src/config/component/question-tree.outline.js +9 -0
  87. package/dist/src/config/component/radio-input.model.d.ts +65 -0
  88. package/dist/src/config/component/radio-input.model.js +77 -0
  89. package/dist/src/config/component/radio-input.outline.d.ts +91 -0
  90. package/dist/src/config/component/radio-input.outline.js +8 -0
  91. package/dist/src/config/component/record-metadata-retriever.model.d.ts +41 -0
  92. package/dist/src/config/component/record-metadata-retriever.model.js +57 -0
  93. package/dist/src/config/component/record-metadata-retriever.outline.d.ts +53 -0
  94. package/dist/src/config/component/record-metadata-retriever.outline.js +5 -0
  95. package/dist/src/config/component/record-selector.model.d.ts +61 -0
  96. package/dist/src/config/component/record-selector.model.js +61 -0
  97. package/dist/src/config/component/record-selector.outline.d.ts +91 -0
  98. package/dist/src/config/component/record-selector.outline.js +6 -0
  99. package/dist/src/config/component/repeatable.model.d.ts +91 -0
  100. package/dist/src/config/component/repeatable.model.js +112 -0
  101. package/dist/src/config/component/repeatable.outline.d.ts +115 -0
  102. package/dist/src/config/component/repeatable.outline.js +10 -0
  103. package/dist/src/config/component/reusable.model.d.ts +42 -0
  104. package/dist/src/config/component/reusable.model.js +57 -0
  105. package/dist/src/config/component/reusable.outline.d.ts +55 -0
  106. package/dist/src/config/component/reusable.outline.js +6 -0
  107. package/dist/src/config/component/rich-text-editor.model.d.ts +65 -0
  108. package/dist/src/config/component/rich-text-editor.model.js +79 -0
  109. package/dist/src/config/component/rich-text-editor.outline.d.ts +92 -0
  110. package/dist/src/config/component/rich-text-editor.outline.js +8 -0
  111. package/dist/src/config/component/save-button.model.d.ts +49 -0
  112. package/dist/src/config/component/save-button.model.js +59 -0
  113. package/dist/src/config/component/save-button.outline.d.ts +90 -0
  114. package/dist/src/config/component/save-button.outline.js +6 -0
  115. package/dist/src/config/component/save-status.model.d.ts +42 -0
  116. package/dist/src/config/component/save-status.model.js +60 -0
  117. package/dist/src/config/component/save-status.outline.d.ts +58 -0
  118. package/dist/src/config/component/save-status.outline.js +6 -0
  119. package/dist/src/config/component/simple-input.model.d.ts +62 -0
  120. package/dist/src/config/component/simple-input.model.js +75 -0
  121. package/dist/src/config/component/simple-input.outline.d.ts +86 -0
  122. package/dist/src/config/component/simple-input.outline.js +9 -0
  123. package/dist/src/config/component/suggested-validation-summary.model.d.ts +45 -0
  124. package/dist/src/config/component/suggested-validation-summary.model.js +61 -0
  125. package/dist/src/config/component/suggested-validation-summary.outline.d.ts +57 -0
  126. package/dist/src/config/component/suggested-validation-summary.outline.js +5 -0
  127. package/dist/src/config/component/tab-content.model.d.ts +63 -0
  128. package/dist/src/config/component/tab-content.model.js +77 -0
  129. package/dist/src/config/component/tab-content.outline.d.ts +98 -0
  130. package/dist/src/config/component/tab-content.outline.js +8 -0
  131. package/dist/src/config/component/tab-nav-button.model.d.ts +45 -0
  132. package/dist/src/config/component/tab-nav-button.model.js +55 -0
  133. package/dist/src/config/component/tab-nav-button.outline.d.ts +70 -0
  134. package/dist/src/config/component/tab-nav-button.outline.js +6 -0
  135. package/dist/src/config/component/tab.model.d.ts +71 -0
  136. package/dist/src/config/component/tab.model.js +84 -0
  137. package/dist/src/config/component/tab.outline.d.ts +112 -0
  138. package/dist/src/config/component/tab.outline.js +9 -0
  139. package/dist/src/config/component/text-area.model.d.ts +63 -0
  140. package/dist/src/config/component/text-area.model.js +76 -0
  141. package/dist/src/config/component/text-area.outline.d.ts +87 -0
  142. package/dist/src/config/component/text-area.outline.js +8 -0
  143. package/dist/src/config/component/typeahead-input.model.d.ts +83 -0
  144. package/dist/src/config/component/typeahead-input.model.js +97 -0
  145. package/dist/src/config/component/typeahead-input.outline.d.ts +199 -0
  146. package/dist/src/config/component/typeahead-input.outline.js +10 -0
  147. package/dist/src/config/component/validation-summary.model.d.ts +42 -0
  148. package/dist/src/config/component/validation-summary.model.js +60 -0
  149. package/dist/src/config/component/validation-summary.outline.d.ts +63 -0
  150. package/dist/src/config/component/validation-summary.outline.js +6 -0
  151. package/dist/src/config/dictionary.model.d.ts +648 -0
  152. package/dist/src/config/dictionary.model.js +181 -0
  153. package/dist/src/config/dictionary.outline.d.ts +96 -0
  154. package/dist/src/config/dictionary.outline.js +3 -0
  155. package/dist/src/config/field-component.model.d.ts +7 -0
  156. package/dist/src/config/field-component.model.js +11 -0
  157. package/dist/src/config/field-component.outline.d.ts +20 -0
  158. package/dist/src/config/field-component.outline.js +3 -0
  159. package/dist/src/config/field-layout.model.d.ts +19 -0
  160. package/dist/src/config/field-layout.model.js +23 -0
  161. package/dist/src/config/field-layout.outline.d.ts +42 -0
  162. package/dist/src/config/field-layout.outline.js +3 -0
  163. package/dist/src/config/field-model.model.d.ts +21 -0
  164. package/dist/src/config/field-model.model.js +24 -0
  165. package/dist/src/config/field-model.outline.d.ts +63 -0
  166. package/dist/src/config/field-model.outline.js +3 -0
  167. package/dist/src/config/field.model.d.ts +12 -0
  168. package/dist/src/config/field.model.js +12 -0
  169. package/dist/src/config/field.outline.d.ts +19 -0
  170. package/dist/src/config/field.outline.js +3 -0
  171. package/dist/src/config/form-behaviour.outline.d.ts +128 -0
  172. package/dist/src/config/form-behaviour.outline.js +40 -0
  173. package/dist/src/config/form-component.model.d.ts +38 -0
  174. package/dist/src/config/form-component.model.js +36 -0
  175. package/dist/src/config/form-component.outline.d.ts +305 -0
  176. package/dist/src/config/form-component.outline.js +27 -0
  177. package/dist/src/config/form-config.model.d.ts +33 -0
  178. package/dist/src/config/form-config.model.js +36 -0
  179. package/dist/src/config/form-config.outline.d.ts +111 -0
  180. package/dist/src/config/form-config.outline.js +3 -0
  181. package/dist/src/config/form-override.model.d.ts +146 -0
  182. package/dist/src/config/form-override.model.js +1523 -0
  183. package/dist/src/config/form-override.outline.d.ts +15 -0
  184. package/dist/src/config/form-override.outline.js +3 -0
  185. package/dist/src/config/form-prehydrate.outline.d.ts +17 -0
  186. package/dist/src/config/form-prehydrate.outline.js +5 -0
  187. package/dist/src/config/form-types.model.d.ts +6 -0
  188. package/dist/src/config/form-types.model.js +23 -0
  189. package/dist/src/config/form-types.outline.d.ts +48 -0
  190. package/dist/src/config/form-types.outline.js +137 -0
  191. package/dist/src/config/helpers.d.ts +31 -0
  192. package/dist/src/config/helpers.js +122 -0
  193. package/dist/src/config/names/naming-helpers.d.ts +112 -0
  194. package/dist/src/config/names/naming-helpers.js +188 -0
  195. package/dist/src/config/names/query-helpers.d.ts +43 -0
  196. package/dist/src/config/names/query-helpers.js +59 -0
  197. package/dist/src/config/shared.outline.d.ts +54 -0
  198. package/dist/src/config/shared.outline.js +41 -0
  199. package/dist/src/config/visitor/base.model.d.ts +143 -0
  200. package/dist/src/config/visitor/base.model.js +336 -0
  201. package/dist/src/config/visitor/base.outline.d.ts +146 -0
  202. package/dist/src/config/visitor/base.outline.js +3 -0
  203. package/dist/src/config/visitor/common.model.d.ts +119 -0
  204. package/dist/src/config/visitor/common.model.js +422 -0
  205. package/dist/src/date-format-helpers.d.ts +1 -0
  206. package/dist/src/date-format-helpers.js +21 -0
  207. package/dist/src/handlebars-helpers.d.ts +258 -0
  208. package/dist/src/handlebars-helpers.js +715 -0
  209. package/dist/src/html-helpers.d.ts +15 -0
  210. package/dist/src/html-helpers.js +42 -0
  211. package/dist/src/index.d.ts +118 -3
  212. package/dist/src/index.js +127 -2
  213. package/dist/src/jsonata-helpers.d.ts +40 -0
  214. package/dist/src/jsonata-helpers.js +118 -0
  215. package/dist/src/logger.interface.d.ts +14 -0
  216. package/dist/src/logger.interface.js +3 -0
  217. package/dist/src/record.model.d.ts +23 -0
  218. package/dist/src/record.model.js +19 -1
  219. package/dist/src/report.model.d.ts +46 -0
  220. package/dist/src/status.model.d.ts +22 -0
  221. package/dist/src/status.model.js +28 -0
  222. package/dist/src/template.outline.d.ts +82 -0
  223. package/dist/src/template.outline.js +14 -0
  224. package/dist/src/translation-helpers.d.ts +26 -0
  225. package/dist/src/translation-helpers.js +71 -0
  226. package/dist/src/validation/form.model.d.ts +306 -24
  227. package/dist/src/validation/form.model.js +29 -1
  228. package/dist/src/validation/helpers.d.ts +15 -7
  229. package/dist/src/validation/helpers.js +49 -13
  230. package/dist/src/validation/validators-support.d.ts +39 -2
  231. package/dist/src/validation/validators-support.js +162 -12
  232. package/dist/src/validation/validators.d.ts +28 -0
  233. package/dist/src/validation/validators.js +531 -0
  234. package/package.json +51 -34
  235. package/LICENSE +0 -674
  236. package/dist/src/validation/index.d.ts +0 -1
  237. package/dist/src/validation/index.js +0 -18
@@ -0,0 +1,422 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormPathHelper = exports.PropertiesHelper = void 0;
4
+ const form_component_model_1 = require("../form-component.model");
5
+ const dictionary_model_1 = require("../dictionary.model");
6
+ const naming_helpers_1 = require("../names/naming-helpers");
7
+ const shared_outline_1 = require("../shared.outline");
8
+ class PropertiesHelper {
9
+ fieldComponentMap;
10
+ fieldModelMap;
11
+ fieldLayoutMap;
12
+ formComponentMap;
13
+ kindNameDefaultsMap;
14
+ constructor() {
15
+ this.fieldComponentMap = dictionary_model_1.FieldComponentDefinitionMap;
16
+ this.fieldModelMap = dictionary_model_1.FieldModelDefinitionMap;
17
+ this.fieldLayoutMap = dictionary_model_1.FieldLayoutDefinitionMap;
18
+ this.formComponentMap = dictionary_model_1.FormComponentDefinitionMap;
19
+ this.kindNameDefaultsMap = dictionary_model_1.KindNameDefaultsMap;
20
+ }
21
+ /**
22
+ * Create a new instance of a form component.
23
+ * Populate the common form component properties.
24
+ * @param currentData The form component definition.
25
+ */
26
+ sharedConstructFormComponent(currentData) {
27
+ // The class to use is identified by the class property string values in the field definitions.
28
+ const formComponentClassString = currentData?.component?.class;
29
+ if (typeof formComponentClassString !== 'string' || formComponentClassString.trim().length === 0) {
30
+ throw new Error(`Missing required 'component.class' in form component '${currentData?.name ?? '<unknown>'}': ${JSON.stringify(currentData)}`);
31
+ }
32
+ // The class to use is identified by the class property string values in the field definitions.
33
+ // The form component is identifier the component field class string
34
+ const formComponentClass = this.formComponentMap?.get(formComponentClassString);
35
+ // Create new instance
36
+ if (!formComponentClass) {
37
+ const knownFormComponentClassNames = [...this.formComponentMap.keys()].sort().join(', ');
38
+ throw new Error(`Could not find class for form component class name '${formComponentClassString}'. ` +
39
+ `Known classes: [${knownFormComponentClassNames}]. ` +
40
+ `Item: ${JSON.stringify(currentData)}`);
41
+ }
42
+ const item = new formComponentClass();
43
+ // Set the simple properties
44
+ item.name = currentData.name;
45
+ item.module = currentData.module;
46
+ // Set the constraints
47
+ item.constraints = new form_component_model_1.FormConstraintConfig();
48
+ item.constraints.allowModes = currentData?.constraints?.allowModes ?? [];
49
+ item.constraints.authorization = new form_component_model_1.FormConstraintAuthorizationConfig();
50
+ item.constraints.authorization.allowRoles = currentData?.constraints?.authorization?.allowRoles ?? [];
51
+ // TODO: Commented out below while we decide on how to handle 'form-level' expressions
52
+ // Set the expressions
53
+ // item.expressions = new FormExpressionsConfig();
54
+ // for (const [key, value] of Object.entries(currentData.expressions ?? {})) {
55
+ // item.expressions[key] = value;
56
+ // }
57
+ // Set the overrides, as they might be used to transform this component into other components.
58
+ item.overrides = currentData.overrides;
59
+ // Create the field component class instance.
60
+ const componentClassString = currentData?.component?.class;
61
+ const componentClass = this.fieldComponentMap?.get(componentClassString);
62
+ if (!componentClass) {
63
+ throw new Error(`Could not find class for field component class string '${componentClassString}'.`);
64
+ }
65
+ item.component = new componentClass();
66
+ const sourceDefaultsMap = this.kindNameDefaultsMap.get(shared_outline_1.FormComponentDefinitionKind);
67
+ const targetDefaultsMap = sourceDefaultsMap?.get(componentClassString);
68
+ // Create the model class instance.
69
+ // If there is no model class, use the default if there is one.
70
+ const modelClassDefaultName = targetDefaultsMap?.get(shared_outline_1.FieldModelDefinitionKind);
71
+ const modelClassString = currentData?.model?.class ?? modelClassDefaultName;
72
+ const modelClass = modelClassString ? this.fieldModelMap?.get(modelClassString) : null;
73
+ if (modelClassString && !modelClass) {
74
+ throw new Error(`Could not find class for field model class string '${modelClassString}'.`);
75
+ }
76
+ const model = modelClass ? new modelClass() : undefined;
77
+ item.model = model;
78
+ if (model) {
79
+ this.setFieldClassName(currentData, 'model', modelClassString);
80
+ }
81
+ // Create the layout class instance.
82
+ // If there is no layout class, use the default if there is one.
83
+ const layoutClassDefaultName = targetDefaultsMap?.get(shared_outline_1.FieldLayoutDefinitionKind);
84
+ const layoutClassString = currentData?.layout?.class ?? layoutClassDefaultName;
85
+ const layoutClass = layoutClassString ? this.fieldLayoutMap?.get(layoutClassString) : null;
86
+ if (layoutClassString && !layoutClass) {
87
+ throw new Error(`Could not find class for field layout class string '${layoutClassString}'.`);
88
+ }
89
+ const layout = layoutClass ? new layoutClass() : undefined;
90
+ item.layout = layout;
91
+ if (layout) {
92
+ this.setFieldClassName(currentData, 'layout', layoutClassString);
93
+ }
94
+ return item;
95
+ }
96
+ /**
97
+ * Set the common field component config properties.
98
+ * @param item Set the value of the named properties on this item.
99
+ * @param config Get the value of the named properties from this config.
100
+ */
101
+ sharedPopulateFieldComponentConfig(item, config) {
102
+ this.setPropOverride('readonly', item, config);
103
+ this.setPropOverride('visible', item, config);
104
+ this.setPropOverride('editMode', item, config);
105
+ this.setPropOverride('label', item, config);
106
+ this.setPropOverride('defaultComponentCssClasses', item, config);
107
+ this.setPropOverride('hostCssClasses', item, config);
108
+ this.setPropOverride('wrapperCssClasses', item, config);
109
+ this.setPropOverride('disabled', item, config);
110
+ this.setPropOverride('autofocus', item, config);
111
+ this.setPropOverride('tooltip', item, config);
112
+ this.setPropOverride('onItemSelect', item, config);
113
+ this.setPropOverride('syncSources', item, config);
114
+ }
115
+ /**
116
+ * Set the common field model config properties.
117
+ * @param item Set the value of the named properties on this item.
118
+ * @param config Get the value of the named properties from this config.
119
+ */
120
+ sharedPopulateFieldModelConfig(item, config) {
121
+ this.setPropOverride('value', item, config);
122
+ this.setPropOverride('defaultValue', item, config);
123
+ this.setPropOverride('newEntryValue', item, config);
124
+ this.setPropOverride('validators', item, config);
125
+ this.setPropOverride('wrapperCssClasses', item, config);
126
+ this.setPropOverride('editCssClasses', item, config);
127
+ this.setPropOverride('disabled', item, config);
128
+ }
129
+ /**
130
+ * Set the common field layout config properties.
131
+ * @param item Set the value of the named properties on this item.
132
+ * @param config Get the value of the named properties from this config.
133
+ */
134
+ sharedPopulateFieldLayoutConfig(item, config) {
135
+ this.sharedPopulateFieldComponentConfig(item, config);
136
+ this.setPropOverride('labelRequiredStr', item, config);
137
+ this.setPropOverride('helpText', item, config);
138
+ this.setPropOverride('cssClassesMap', item, config);
139
+ this.setPropOverride('helpTextVisibleOnInit', item, config);
140
+ this.setPropOverride('helpTextVisible', item, config);
141
+ }
142
+ /**
143
+ * Set the property on target.
144
+ * Retain the target property value if it is not undefined.
145
+ * Use the value of the property from the first source with a non-undefined property of the same name.
146
+ *
147
+ * @param target Set the name property on the target.
148
+ * @param name The property to set.
149
+ * @param sources The sources that might have the name property.
150
+ */
151
+ setPropDefault(name, target, ...sources) {
152
+ if (target === undefined || target === null) {
153
+ throw new Error('Target provided to setPropDefault was undefined or null.');
154
+ }
155
+ if (name === undefined || name === null) {
156
+ throw new Error('Property name provided to setPropDefault was undefined or null.');
157
+ }
158
+ const propValue = [target, ...sources].find(val => val?.[name] !== undefined)?.[name];
159
+ if (propValue !== undefined) {
160
+ target[name] = propValue;
161
+ }
162
+ }
163
+ /**
164
+ * Set the property on target.
165
+ * Override the value of the property from the last source with a non-undefined property of the same name.
166
+ * @param name The property to set.
167
+ * @param target Set the name property on the target.
168
+ * @param sources The sources that might have the name property.
169
+ */
170
+ setPropOverride(name, target, ...sources) {
171
+ if (target === undefined || target === null) {
172
+ throw new Error('Target provided to setPropOverride was undefined or null.');
173
+ }
174
+ if (name === undefined || name === null) {
175
+ throw new Error('Property name provided to setPropOverride was undefined or null.');
176
+ }
177
+ const propValue = [target, ...sources].findLast(val => val?.[name] !== undefined)?.[name];
178
+ if (propValue !== undefined) {
179
+ target[name] = propValue;
180
+ }
181
+ }
182
+ /**
183
+ * Convert a value to a field reference that can be used in a JSONata expression.
184
+ * @param value The value to convert.
185
+ * @return The value ready to be used as a field reference in a JSON expression.
186
+ */
187
+ toFieldReference(value) {
188
+ // Normalise the string to a form useful for comparing identifiers.
189
+ const fieldRaw = (0, naming_helpers_1.normaliseVisual)(value);
190
+ // see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt
191
+ const fieldReference = [...fieldRaw].map((char) => {
192
+ const codePoint = char.codePointAt(0);
193
+ if (codePoint === undefined) {
194
+ return '';
195
+ }
196
+ // Numbers 0 - 9
197
+ if (codePoint >= 48 && codePoint <= 57) {
198
+ return char;
199
+ }
200
+ // Letters A - Z
201
+ if (codePoint >= 65 && codePoint <= 90) {
202
+ return char;
203
+ }
204
+ // Letters a - z
205
+ if (codePoint >= 97 && codePoint <= 122) {
206
+ return char;
207
+ }
208
+ // Selected punctuation used in identifiers - : colon 58, @ at sign 64,
209
+ // - hyphen minus 45, . full stop 46, _ low line 95
210
+ if ([58, 64, 45, 46, 95].includes(codePoint)) {
211
+ return char;
212
+ }
213
+ // Anything else is replaced with '_'
214
+ return '_';
215
+ });
216
+ return fieldReference.join('');
217
+ }
218
+ /**
219
+ * Convert a lineage path to a set of dot-separated field references for a JSONata expression.
220
+ * @param path The lineage path to convert.
221
+ * @return The path ready to be used as field references in a JSON expression.
222
+ */
223
+ lineagePathToExpressionIdentifiers(path) {
224
+ // Escape unexpected characters.
225
+ const pathFieldRefs = path.map(i => this.toFieldReference(i));
226
+ // Use backticks to build each item in the jsonata identifier.
227
+ const identifiers = pathFieldRefs.map(i => `\`${i}\``);
228
+ // Join identifiers using dot.
229
+ return identifiers.join('.');
230
+ }
231
+ setFieldClassName(currentData, fieldTypeName, className) {
232
+ if (currentData === undefined || currentData === null || className === undefined || className === null) {
233
+ return;
234
+ }
235
+ if (currentData[fieldTypeName] === undefined || currentData[fieldTypeName] === null) {
236
+ currentData[fieldTypeName] = { class: className };
237
+ return;
238
+ }
239
+ else if (currentData[fieldTypeName]?.class === undefined || currentData[fieldTypeName]?.class === null) {
240
+ currentData[fieldTypeName].class = className;
241
+ }
242
+ }
243
+ }
244
+ exports.PropertiesHelper = PropertiesHelper;
245
+ class FormPathHelper {
246
+ logName = 'FormPathHelper';
247
+ logger;
248
+ visitor;
249
+ _formPath;
250
+ constructor(logger, visitor) {
251
+ this.logger = logger;
252
+ this.visitor = visitor;
253
+ this._formPath = (0, naming_helpers_1.buildLineagePaths)();
254
+ }
255
+ /**
256
+ * Get the current form paths.
257
+ */
258
+ get formPath() {
259
+ // Return a copy so the current form paths cannot be changed.
260
+ return {
261
+ angularComponents: [...this._formPath.angularComponents],
262
+ angularComponentsJsonPointer: this._formPath.angularComponentsJsonPointer?.toString(),
263
+ dataModel: [...this._formPath.dataModel],
264
+ formConfig: [...this._formPath.formConfig],
265
+ layout: [...this._formPath.layout],
266
+ layoutJsonPointer: this._formPath.layoutJsonPointer?.toString(),
267
+ };
268
+ }
269
+ /**
270
+ * Get the current model name.
271
+ */
272
+ get modelName() {
273
+ if (this._formPath.dataModel.length > 0) {
274
+ return this._formPath.dataModel[this._formPath.dataModel.length - 1]?.toString();
275
+ }
276
+ return null;
277
+ }
278
+ reset() {
279
+ this._formPath = (0, naming_helpers_1.buildLineagePaths)();
280
+ }
281
+ /**
282
+ * Call accept on the provided item and set the current path with the given suffix.
283
+ * Set the current path to the previous value after the accept method is done.
284
+ * @param item The item to visit.
285
+ * @param more The lineage paths to add to the end of the current paths.
286
+ */
287
+ async acceptFormPath(item, more) {
288
+ if (!item) {
289
+ this.logger?.warn?.(`${this.logName}: acceptFormPath requires an item: ${JSON.stringify(item)}`);
290
+ return;
291
+ }
292
+ // Copy the original lineage paths so they can be restored.
293
+ const original = (0, naming_helpers_1.buildLineagePaths)(this._formPath);
294
+ try {
295
+ this._formPath = (0, naming_helpers_1.buildLineagePaths)(original, more);
296
+ await item.accept(this.visitor);
297
+ }
298
+ catch (error) {
299
+ throw error;
300
+ }
301
+ finally {
302
+ this._formPath = original;
303
+ }
304
+ }
305
+ /**
306
+ * Call accept on the properties of the form component definition outline that can be visited.
307
+ * @param item The form component definition outline.
308
+ */
309
+ async acceptFormComponentDefinition(item) {
310
+ await this.acceptFormPath(item.component, { formConfig: ['component'] });
311
+ if (item.model) {
312
+ await this.acceptFormPath(item.model, { formConfig: ['model'] });
313
+ }
314
+ if (item.layout) {
315
+ await this.acceptFormPath(item.layout, { formConfig: ['layout'] });
316
+ }
317
+ }
318
+ lineagePathsForFormConfigComponentDefinition(item, index) {
319
+ return {
320
+ formConfig: ['componentDefinitions', index.toString()],
321
+ dataModel: this.getFormPathDataModel(item),
322
+ angularComponents: this.getFormPathAngularComponents(item),
323
+ layout: this.getFormPathLayout(item),
324
+ };
325
+ }
326
+ lineagePathsForGroupFieldComponentDefinition(item, index) {
327
+ return {
328
+ formConfig: ['config', 'componentDefinitions', index.toString()],
329
+ dataModel: this.getFormPathDataModel(item),
330
+ angularComponents: this.getFormPathAngularComponents(item),
331
+ layout: this.getFormPathLayout(item),
332
+ };
333
+ }
334
+ lineagePathsForTabFieldComponentDefinition(item, index) {
335
+ return {
336
+ formConfig: ['config', 'tabs', index.toString()],
337
+ dataModel: this.getFormPathDataModel(item),
338
+ angularComponents: this.getFormPathAngularComponents(item),
339
+ layout: this.getFormPathLayout(item),
340
+ };
341
+ }
342
+ lineagePathsForTabContentFieldComponentDefinition(item, index) {
343
+ return {
344
+ formConfig: ['config', 'componentDefinitions', index.toString()],
345
+ dataModel: this.getFormPathDataModel(item),
346
+ angularComponents: this.getFormPathAngularComponents(item),
347
+ layout: this.getFormPathLayout(item),
348
+ };
349
+ }
350
+ lineagePathsForAccordionFieldComponentDefinition(item, index) {
351
+ return {
352
+ formConfig: ['config', 'panels', index.toString()],
353
+ dataModel: this.getFormPathDataModel(item),
354
+ angularComponents: this.getFormPathAngularComponents(item),
355
+ layout: this.getFormPathLayout(item),
356
+ };
357
+ }
358
+ lineagePathsForAccordionPanelFieldComponentDefinition(item, index) {
359
+ return {
360
+ formConfig: ['config', 'componentDefinitions', index.toString()],
361
+ dataModel: this.getFormPathDataModel(item),
362
+ angularComponents: this.getFormPathAngularComponents(item),
363
+ layout: this.getFormPathLayout(item),
364
+ };
365
+ }
366
+ lineagePathsForRepeatableFieldComponentDefinition(item) {
367
+ return {
368
+ formConfig: ['config', 'elementTemplate'],
369
+ dataModel: this.getFormPathDataModel(item),
370
+ angularComponents: this.getFormPathAngularComponents(item),
371
+ layout: this.getFormPathLayout(item),
372
+ };
373
+ }
374
+ lineagePathsForReusableFieldComponentDefinition(item, index) {
375
+ return {
376
+ formConfig: ['config', 'componentDefinitions', index.toString()],
377
+ dataModel: this.getFormPathDataModel(item),
378
+ angularComponents: this.getFormPathAngularComponents(item),
379
+ layout: this.getFormPathLayout(item),
380
+ };
381
+ }
382
+ lineagePathsForQuestionTreeFieldComponentDefinition(item, index) {
383
+ return {
384
+ formConfig: ['config', 'componentDefinitions', index.toString()],
385
+ dataModel: this.getFormPathDataModel(item),
386
+ angularComponents: this.getFormPathAngularComponents(item),
387
+ layout: this.getFormPathLayout(item),
388
+ };
389
+ }
390
+ getFormPathDataModel(item) {
391
+ const itemName = item?.name ?? '';
392
+ const className = item?.component?.class ?? '';
393
+ // NOTE: The repeatable elementTemplate should not be part of the data model path.
394
+ // This is done by also checking the name - it has a model, but it must have a 'falsy' name.
395
+ // TODO: does this need to cater for components that have no model but need the model data, like content component?
396
+ const dataModel = [];
397
+ const isGroupWithoutModel = className === 'GroupComponent' && (item.model === undefined || item.model === null);
398
+ if (itemName && (item.model !== undefined && item.model !== null || isGroupWithoutModel)) {
399
+ dataModel.push(itemName);
400
+ }
401
+ return dataModel;
402
+ }
403
+ getFormPathAngularComponents(item) {
404
+ const itemName = item?.name ?? '';
405
+ const angularComponents = [];
406
+ // TODO: don't include the top-level form config name
407
+ if (itemName) {
408
+ angularComponents.push(itemName);
409
+ }
410
+ return angularComponents;
411
+ }
412
+ getFormPathLayout(item) {
413
+ const itemName = item?.name ?? '';
414
+ const layout = [];
415
+ if (itemName) {
416
+ layout.push(`${itemName}-layout`);
417
+ }
418
+ return layout;
419
+ }
420
+ }
421
+ exports.FormPathHelper = FormPathHelper;
422
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbmZpZy92aXNpdG9yL2NvbW1vbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxrRUFBa0c7QUFDbEcsMERBVzZCO0FBQzdCLDREQU1pQztBQUVqQyxzREFBcUg7QUFFckgsTUFBYSxnQkFBZ0I7SUFDbkIsaUJBQWlCLENBQWtDO0lBQ25ELGFBQWEsQ0FBOEI7SUFDM0MsY0FBYyxDQUErQjtJQUM3QyxnQkFBZ0IsQ0FBc0M7SUFDdEQsbUJBQW1CLENBQTBCO0lBRXJEO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLDhDQUEyQixDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsMENBQXVCLENBQUM7UUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRywyQ0FBd0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsNkNBQTBCLENBQUM7UUFDbkQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLHNDQUFtQixDQUFDO0lBQ2pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksNEJBQTRCLENBQUMsV0FBeUM7UUFDM0UsK0ZBQStGO1FBQy9GLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDL0QsSUFBSSxPQUFPLHdCQUF3QixLQUFLLFFBQVEsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakcsTUFBTSxJQUFJLEtBQUssQ0FDYix5REFBeUQsV0FBVyxFQUFFLElBQUksSUFBSSxXQUFXLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUM3SCxDQUFDO1FBQ0osQ0FBQztRQUVELCtGQUErRjtRQUMvRixvRUFBb0U7UUFDcEUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxD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
@@ -0,0 +1 @@
1
+ export declare function mapMomentToLuxonFormat(fmt: string): string;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapMomentToLuxonFormat = mapMomentToLuxonFormat;
4
+ function mapMomentToLuxonFormat(fmt) {
5
+ if (!fmt) {
6
+ return fmt;
7
+ }
8
+ return fmt
9
+ .replace(/YYYY/g, 'yyyy')
10
+ .replace(/YY/g, 'yy')
11
+ .replace(/MMMM/g, 'LLLL')
12
+ .replace(/MMM/g, 'LLL')
13
+ .replace(/\bMM\b/g, 'LL')
14
+ .replace(/\bM\b/g, 'L')
15
+ .replace(/\bDD\b/g, 'dd')
16
+ .replace(/\bD\b/g, 'd')
17
+ .replace(/dddd/g, 'cccc')
18
+ .replace(/ddd/g, 'ccc')
19
+ .replace(/A/g, 'a');
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRlLWZvcm1hdC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0RBaUJDO0FBakJELFNBQWdCLHNCQUFzQixDQUFDLEdBQVc7SUFDOUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1AsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxHQUFHO1NBQ0wsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7U0FDeEIsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7U0FDcEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7U0FDeEIsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7U0FDdEIsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUM7U0FDeEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7U0FDdEIsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUM7U0FDeEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7U0FDdEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7U0FDeEIsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7U0FDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDIn0=