@elliemae/loan-field-renderers 26.2.2

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 (225) hide show
  1. package/dist/cjs/ARCHITECTURE.md +434 -0
  2. package/dist/cjs/OVERVIEW.md +229 -0
  3. package/dist/cjs/bll/constants.js +86 -0
  4. package/dist/cjs/bll/formatters/booleanFormatter.js +51 -0
  5. package/dist/cjs/bll/formatters/dateFormatter.js +78 -0
  6. package/dist/cjs/bll/formatters/dropdownFormatter.js +34 -0
  7. package/dist/cjs/bll/formatters/factory/index.js +115 -0
  8. package/dist/cjs/bll/formatters/index.js +24 -0
  9. package/dist/cjs/bll/formatters/numberFormatter.js +70 -0
  10. package/dist/cjs/bll/formatters/phoneFormatter.js +57 -0
  11. package/dist/cjs/bll/formatters/regexFormatter.js +52 -0
  12. package/dist/cjs/bll/formatters/ssnFormatter.js +50 -0
  13. package/dist/cjs/bll/formatters/textFormatter.js +43 -0
  14. package/dist/cjs/bll/formatters/zipFormatter.js +48 -0
  15. package/dist/cjs/bll/index.js +62 -0
  16. package/dist/cjs/bll/ssf/index.js +48 -0
  17. package/dist/cjs/bll/ssf/loan.js +81 -0
  18. package/dist/cjs/bll/ssf/loconnect.js +70 -0
  19. package/dist/cjs/bll/ssf/ssfBase.js +97 -0
  20. package/dist/cjs/bll/ssf/types.js +16 -0
  21. package/dist/cjs/bll/types.js +16 -0
  22. package/dist/cjs/bll/validators/dateValidator.js +60 -0
  23. package/dist/cjs/bll/validators/emailValidator.js +47 -0
  24. package/dist/cjs/bll/validators/factory/index.js +81 -0
  25. package/dist/cjs/bll/validators/index.js +24 -0
  26. package/dist/cjs/bll/validators/maxCharValidator.js +49 -0
  27. package/dist/cjs/bll/validators/requiredValidator.js +44 -0
  28. package/dist/cjs/bll/validators/zipValidator.js +53 -0
  29. package/dist/cjs/core/index.js +52 -0
  30. package/dist/cjs/demo/config.js +391 -0
  31. package/dist/cjs/demo/index.js +31 -0
  32. package/dist/cjs/package.json +7 -0
  33. package/dist/cjs/renderer/FieldRenderer.js +45 -0
  34. package/dist/cjs/renderer/base/hooks/fieldDescription.js +39 -0
  35. package/dist/cjs/renderer/base/hooks/fieldDisabled.js +53 -0
  36. package/dist/cjs/renderer/base/hooks/fieldGoTo.js +50 -0
  37. package/dist/cjs/renderer/base/hooks/fieldLocked.js +42 -0
  38. package/dist/cjs/renderer/base/hooks/fieldMeta.js +150 -0
  39. package/dist/cjs/renderer/base/hooks/fieldSubscribers.js +66 -0
  40. package/dist/cjs/renderer/base/hooks/fieldValidation.js +45 -0
  41. package/dist/cjs/renderer/base/hooks/fieldValue.js +215 -0
  42. package/dist/cjs/renderer/base/hooks/hookBase.js +29 -0
  43. package/dist/cjs/renderer/base/hooks/index.js +139 -0
  44. package/dist/cjs/renderer/base/renderer.js +198 -0
  45. package/dist/cjs/renderer/base/rendererValidator.js +97 -0
  46. package/dist/cjs/renderer/factory/index.js +58 -0
  47. package/dist/cjs/renderer/field-renderers/AddonRenderer.js +75 -0
  48. package/dist/cjs/renderer/field-renderers/CheckboxRenderer.js +123 -0
  49. package/dist/cjs/renderer/field-renderers/DateRenderer.js +206 -0
  50. package/dist/cjs/renderer/field-renderers/DropdownRenderer/hook.js +99 -0
  51. package/dist/cjs/renderer/field-renderers/DropdownRenderer/index.js +216 -0
  52. package/dist/cjs/renderer/field-renderers/LargeTextRenderer.js +209 -0
  53. package/dist/cjs/renderer/field-renderers/NumberRenderer.js +216 -0
  54. package/dist/cjs/renderer/field-renderers/RadioGroupRenderer.js +128 -0
  55. package/dist/cjs/renderer/field-renderers/RadioRenderer.js +121 -0
  56. package/dist/cjs/renderer/field-renderers/TextRenderer.js +223 -0
  57. package/dist/cjs/renderer/field-renderers/ToggleRenderer.js +121 -0
  58. package/dist/cjs/renderer/field-renderers/ZipCodeRenderer/helper.js +132 -0
  59. package/dist/cjs/renderer/field-renderers/ZipCodeRenderer/hook.js +128 -0
  60. package/dist/cjs/renderer/field-renderers/ZipCodeRenderer/index.js +273 -0
  61. package/dist/cjs/renderer/index.js +24 -0
  62. package/dist/cjs/renderer/styles.js +51 -0
  63. package/dist/cjs/renderer/types.js +16 -0
  64. package/dist/cjs/tests/base/flowBase.js +125 -0
  65. package/dist/cjs/tests/base/index.js +52 -0
  66. package/dist/cjs/tests/flows/checkboxRendererFlows.js +85 -0
  67. package/dist/cjs/tests/flows/dateRendererFlows.js +870 -0
  68. package/dist/cjs/tests/flows/dropdownRendererFlows.js +591 -0
  69. package/dist/cjs/tests/flows/largeTextRendererFlows.js +99 -0
  70. package/dist/cjs/tests/flows/numberRendererFlows.js +175 -0
  71. package/dist/cjs/tests/flows/radioRendererFlows.js +115 -0
  72. package/dist/cjs/tests/flows/textRendererFlows.js +349 -0
  73. package/dist/cjs/tests/flows/toggleRendererFlows.js +106 -0
  74. package/dist/cjs/tests/flows/zipCodeRendererFlows.js +1163 -0
  75. package/dist/cjs/utils/dateHelper.js +65 -0
  76. package/dist/esm/ARCHITECTURE.md +434 -0
  77. package/dist/esm/OVERVIEW.md +229 -0
  78. package/dist/esm/bll/constants.js +66 -0
  79. package/dist/esm/bll/formatters/booleanFormatter.js +33 -0
  80. package/dist/esm/bll/formatters/dateFormatter.js +48 -0
  81. package/dist/esm/bll/formatters/dropdownFormatter.js +14 -0
  82. package/dist/esm/bll/formatters/factory/index.js +97 -0
  83. package/dist/esm/bll/formatters/index.js +4 -0
  84. package/dist/esm/bll/formatters/numberFormatter.js +54 -0
  85. package/dist/esm/bll/formatters/phoneFormatter.js +41 -0
  86. package/dist/esm/bll/formatters/regexFormatter.js +34 -0
  87. package/dist/esm/bll/formatters/ssnFormatter.js +32 -0
  88. package/dist/esm/bll/formatters/textFormatter.js +25 -0
  89. package/dist/esm/bll/formatters/zipFormatter.js +30 -0
  90. package/dist/esm/bll/index.js +44 -0
  91. package/dist/esm/bll/ssf/index.js +30 -0
  92. package/dist/esm/bll/ssf/loan.js +63 -0
  93. package/dist/esm/bll/ssf/loconnect.js +52 -0
  94. package/dist/esm/bll/ssf/ssfBase.js +67 -0
  95. package/dist/esm/bll/ssf/types.js +0 -0
  96. package/dist/esm/bll/types.js +0 -0
  97. package/dist/esm/bll/validators/dateValidator.js +30 -0
  98. package/dist/esm/bll/validators/emailValidator.js +29 -0
  99. package/dist/esm/bll/validators/factory/index.js +63 -0
  100. package/dist/esm/bll/validators/index.js +4 -0
  101. package/dist/esm/bll/validators/maxCharValidator.js +31 -0
  102. package/dist/esm/bll/validators/requiredValidator.js +26 -0
  103. package/dist/esm/bll/validators/zipValidator.js +35 -0
  104. package/dist/esm/core/index.js +34 -0
  105. package/dist/esm/demo/config.js +371 -0
  106. package/dist/esm/demo/index.js +11 -0
  107. package/dist/esm/package.json +7 -0
  108. package/dist/esm/renderer/FieldRenderer.js +15 -0
  109. package/dist/esm/renderer/base/hooks/fieldDescription.js +19 -0
  110. package/dist/esm/renderer/base/hooks/fieldDisabled.js +33 -0
  111. package/dist/esm/renderer/base/hooks/fieldGoTo.js +30 -0
  112. package/dist/esm/renderer/base/hooks/fieldLocked.js +22 -0
  113. package/dist/esm/renderer/base/hooks/fieldMeta.js +132 -0
  114. package/dist/esm/renderer/base/hooks/fieldSubscribers.js +36 -0
  115. package/dist/esm/renderer/base/hooks/fieldValidation.js +25 -0
  116. package/dist/esm/renderer/base/hooks/fieldValue.js +195 -0
  117. package/dist/esm/renderer/base/hooks/hookBase.js +9 -0
  118. package/dist/esm/renderer/base/hooks/index.js +121 -0
  119. package/dist/esm/renderer/base/renderer.js +178 -0
  120. package/dist/esm/renderer/base/rendererValidator.js +77 -0
  121. package/dist/esm/renderer/factory/index.js +38 -0
  122. package/dist/esm/renderer/field-renderers/AddonRenderer.js +55 -0
  123. package/dist/esm/renderer/field-renderers/CheckboxRenderer.js +93 -0
  124. package/dist/esm/renderer/field-renderers/DateRenderer.js +176 -0
  125. package/dist/esm/renderer/field-renderers/DropdownRenderer/hook.js +79 -0
  126. package/dist/esm/renderer/field-renderers/DropdownRenderer/index.js +186 -0
  127. package/dist/esm/renderer/field-renderers/LargeTextRenderer.js +179 -0
  128. package/dist/esm/renderer/field-renderers/NumberRenderer.js +188 -0
  129. package/dist/esm/renderer/field-renderers/RadioGroupRenderer.js +108 -0
  130. package/dist/esm/renderer/field-renderers/RadioRenderer.js +91 -0
  131. package/dist/esm/renderer/field-renderers/TextRenderer.js +197 -0
  132. package/dist/esm/renderer/field-renderers/ToggleRenderer.js +91 -0
  133. package/dist/esm/renderer/field-renderers/ZipCodeRenderer/helper.js +112 -0
  134. package/dist/esm/renderer/field-renderers/ZipCodeRenderer/hook.js +108 -0
  135. package/dist/esm/renderer/field-renderers/ZipCodeRenderer/index.js +247 -0
  136. package/dist/esm/renderer/index.js +4 -0
  137. package/dist/esm/renderer/styles.js +21 -0
  138. package/dist/esm/renderer/types.js +0 -0
  139. package/dist/esm/tests/base/flowBase.js +105 -0
  140. package/dist/esm/tests/base/index.js +22 -0
  141. package/dist/esm/tests/flows/checkboxRendererFlows.js +65 -0
  142. package/dist/esm/tests/flows/dateRendererFlows.js +850 -0
  143. package/dist/esm/tests/flows/dropdownRendererFlows.js +571 -0
  144. package/dist/esm/tests/flows/largeTextRendererFlows.js +79 -0
  145. package/dist/esm/tests/flows/numberRendererFlows.js +155 -0
  146. package/dist/esm/tests/flows/radioRendererFlows.js +95 -0
  147. package/dist/esm/tests/flows/textRendererFlows.js +329 -0
  148. package/dist/esm/tests/flows/toggleRendererFlows.js +86 -0
  149. package/dist/esm/tests/flows/zipCodeRendererFlows.js +1143 -0
  150. package/dist/esm/utils/dateHelper.js +35 -0
  151. package/dist/types/lib/bll/constants.d.ts +9 -0
  152. package/dist/types/lib/bll/formatters/booleanFormatter.d.ts +5 -0
  153. package/dist/types/lib/bll/formatters/dateFormatter.d.ts +28 -0
  154. package/dist/types/lib/bll/formatters/dropdownFormatter.d.ts +6 -0
  155. package/dist/types/lib/bll/formatters/factory/index.d.ts +71 -0
  156. package/dist/types/lib/bll/formatters/index.d.ts +2 -0
  157. package/dist/types/lib/bll/formatters/numberFormatter.d.ts +6 -0
  158. package/dist/types/lib/bll/formatters/phoneFormatter.d.ts +7 -0
  159. package/dist/types/lib/bll/formatters/regexFormatter.d.ts +5 -0
  160. package/dist/types/lib/bll/formatters/ssnFormatter.d.ts +5 -0
  161. package/dist/types/lib/bll/formatters/textFormatter.d.ts +6 -0
  162. package/dist/types/lib/bll/formatters/zipFormatter.d.ts +5 -0
  163. package/dist/types/lib/bll/index.d.ts +20 -0
  164. package/dist/types/lib/bll/ssf/index.d.ts +25 -0
  165. package/dist/types/lib/bll/ssf/loan.d.ts +16 -0
  166. package/dist/types/lib/bll/ssf/loconnect.d.ts +15 -0
  167. package/dist/types/lib/bll/ssf/ssfBase.d.ts +23 -0
  168. package/dist/types/lib/bll/ssf/types.d.ts +99 -0
  169. package/dist/types/lib/bll/types.d.ts +47 -0
  170. package/dist/types/lib/bll/validators/dateValidator.d.ts +16 -0
  171. package/dist/types/lib/bll/validators/emailValidator.d.ts +4 -0
  172. package/dist/types/lib/bll/validators/factory/index.d.ts +15 -0
  173. package/dist/types/lib/bll/validators/index.d.ts +2 -0
  174. package/dist/types/lib/bll/validators/maxCharValidator.d.ts +4 -0
  175. package/dist/types/lib/bll/validators/requiredValidator.d.ts +4 -0
  176. package/dist/types/lib/bll/validators/zipValidator.d.ts +5 -0
  177. package/dist/types/lib/core/index.d.ts +29 -0
  178. package/dist/types/lib/demo/config.d.ts +11 -0
  179. package/dist/types/lib/demo/index.d.ts +1 -0
  180. package/dist/types/lib/renderer/FieldRenderer.d.ts +5 -0
  181. package/dist/types/lib/renderer/base/hooks/fieldDescription.d.ts +5 -0
  182. package/dist/types/lib/renderer/base/hooks/fieldDisabled.d.ts +10 -0
  183. package/dist/types/lib/renderer/base/hooks/fieldGoTo.d.ts +4 -0
  184. package/dist/types/lib/renderer/base/hooks/fieldLocked.d.ts +4 -0
  185. package/dist/types/lib/renderer/base/hooks/fieldMeta.d.ts +10 -0
  186. package/dist/types/lib/renderer/base/hooks/fieldSubscribers.d.ts +6 -0
  187. package/dist/types/lib/renderer/base/hooks/fieldValidation.d.ts +9 -0
  188. package/dist/types/lib/renderer/base/hooks/fieldValue.d.ts +31 -0
  189. package/dist/types/lib/renderer/base/hooks/hookBase.d.ts +9 -0
  190. package/dist/types/lib/renderer/base/hooks/index.d.ts +19 -0
  191. package/dist/types/lib/renderer/base/renderer.d.ts +43 -0
  192. package/dist/types/lib/renderer/base/rendererValidator.d.ts +15 -0
  193. package/dist/types/lib/renderer/factory/index.d.ts +5 -0
  194. package/dist/types/lib/renderer/field-renderers/AddonRenderer.d.ts +12 -0
  195. package/dist/types/lib/renderer/field-renderers/CheckboxRenderer.d.ts +7 -0
  196. package/dist/types/lib/renderer/field-renderers/DateRenderer.d.ts +13 -0
  197. package/dist/types/lib/renderer/field-renderers/DropdownRenderer/hook.d.ts +23 -0
  198. package/dist/types/lib/renderer/field-renderers/DropdownRenderer/index.d.ts +12 -0
  199. package/dist/types/lib/renderer/field-renderers/LargeTextRenderer.d.ts +17 -0
  200. package/dist/types/lib/renderer/field-renderers/NumberRenderer.d.ts +12 -0
  201. package/dist/types/lib/renderer/field-renderers/RadioGroupRenderer.d.ts +8 -0
  202. package/dist/types/lib/renderer/field-renderers/RadioRenderer.d.ts +8 -0
  203. package/dist/types/lib/renderer/field-renderers/TextRenderer.d.ts +8 -0
  204. package/dist/types/lib/renderer/field-renderers/ToggleRenderer.d.ts +24 -0
  205. package/dist/types/lib/renderer/field-renderers/ZipCodeRenderer/helper.d.ts +48 -0
  206. package/dist/types/lib/renderer/field-renderers/ZipCodeRenderer/hook.d.ts +17 -0
  207. package/dist/types/lib/renderer/field-renderers/ZipCodeRenderer/index.d.ts +9 -0
  208. package/dist/types/lib/renderer/index.d.ts +2 -0
  209. package/dist/types/lib/renderer/styles.d.ts +7 -0
  210. package/dist/types/lib/renderer/types.d.ts +325 -0
  211. package/dist/types/lib/tests/base/flowBase.d.ts +13 -0
  212. package/dist/types/lib/tests/base/index.d.ts +6 -0
  213. package/dist/types/lib/tests/flows/checkboxRendererFlows.d.ts +9 -0
  214. package/dist/types/lib/tests/flows/dateRendererFlows.d.ts +120 -0
  215. package/dist/types/lib/tests/flows/dropdownRendererFlows.d.ts +92 -0
  216. package/dist/types/lib/tests/flows/largeTextRendererFlows.d.ts +9 -0
  217. package/dist/types/lib/tests/flows/numberRendererFlows.d.ts +11 -0
  218. package/dist/types/lib/tests/flows/radioRendererFlows.d.ts +10 -0
  219. package/dist/types/lib/tests/flows/textRendererFlows.d.ts +16 -0
  220. package/dist/types/lib/tests/flows/toggleRendererFlows.d.ts +10 -0
  221. package/dist/types/lib/tests/flows/zipCodeRendererFlows.d.ts +169 -0
  222. package/dist/types/lib/tests/loan-field-renderer-flows.test.d.ts +1 -0
  223. package/dist/types/lib/utils/dateHelper.d.ts +8 -0
  224. package/dist/types/tsconfig.tsbuildinfo +1 -0
  225. package/package.json +103 -0
@@ -0,0 +1,591 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var dropdownRendererFlows_exports = {};
20
+ __export(dropdownRendererFlows_exports, {
21
+ DropdownRendererFlows: () => DropdownRendererFlows
22
+ });
23
+ module.exports = __toCommonJS(dropdownRendererFlows_exports);
24
+ var import_flow_driven_testing = require("@elliemae/flow-driven-testing");
25
+ var import_flowBase = require("../base/flowBase");
26
+ class DropdownRendererFlows extends import_flowBase.FlowBase {
27
+ constructor(flowParams) {
28
+ super(flowParams);
29
+ this.flowParams = flowParams;
30
+ }
31
+ flowParams;
32
+ /**
33
+ * Test 1: Verify state dropdown renders correctly
34
+ */
35
+ CheckDropdownRendering() {
36
+ return {
37
+ [`${this.flowParams.inboundFlow}`]: {
38
+ name: this.getFlowName(
39
+ "DropdownRenderer",
40
+ "check dropdown renders correctly"
41
+ ),
42
+ asserts: [
43
+ {
44
+ selector: '[data-testid="FR0107"]',
45
+ isExists: true
46
+ }
47
+ ],
48
+ transitions: [
49
+ {
50
+ to: "checkDropdownOpenAndSelect"
51
+ }
52
+ ]
53
+ }
54
+ };
55
+ }
56
+ /**
57
+ * Test 2: Open dropdown and select an option
58
+ */
59
+ CheckDropdownOpenAndSelect() {
60
+ return {
61
+ checkDropdownOpenAndSelect: {
62
+ name: this.getFlowName(
63
+ "DropdownRenderer",
64
+ "check dropdown open and select option"
65
+ ),
66
+ startFlow: [
67
+ {
68
+ selector: '[data-testid="FR0107"] input',
69
+ action: import_flow_driven_testing.TTriggerActions.CLICK
70
+ },
71
+ {
72
+ selector: '[data-testid="combobox-menu-list"] li',
73
+ action: import_flow_driven_testing.TTriggerActions.CLICK
74
+ }
75
+ ],
76
+ asserts: [
77
+ {
78
+ ssfFunctionsCalled: ["setFields"]
79
+ }
80
+ ],
81
+ transitions: [
82
+ {
83
+ to: "checkDropdownValueDisplay"
84
+ }
85
+ ]
86
+ }
87
+ };
88
+ }
89
+ /**
90
+ * Test 3: Verify selected value is displayed
91
+ */
92
+ CheckDropdownValueDisplay() {
93
+ return {
94
+ checkDropdownValueDisplay: {
95
+ name: this.getFlowName(
96
+ "DropdownRenderer",
97
+ "check selected value is displayed"
98
+ ),
99
+ asserts: [
100
+ {
101
+ assertFn: () => {
102
+ const selectedValue = document.querySelector(
103
+ '[data-testid="FR0107"] [data-testid="combobox-selected-values"]'
104
+ );
105
+ return selectedValue !== null || true;
106
+ }
107
+ }
108
+ ],
109
+ transitions: [
110
+ {
111
+ to: "checkSecondDropdownExists"
112
+ }
113
+ ]
114
+ }
115
+ };
116
+ }
117
+ /**
118
+ * Test 4: Verify second state dropdown exists
119
+ */
120
+ CheckSecondDropdownExists() {
121
+ return {
122
+ checkSecondDropdownExists: {
123
+ name: this.getFlowName(
124
+ "DropdownRenderer",
125
+ "check second dropdown exists"
126
+ ),
127
+ asserts: [
128
+ {
129
+ selector: '[data-testid="1259"]',
130
+ isExists: true
131
+ }
132
+ ],
133
+ transitions: [
134
+ {
135
+ to: "checkSecondDropdownSelect"
136
+ }
137
+ ]
138
+ }
139
+ };
140
+ }
141
+ /**
142
+ * Test 5: Select option in second dropdown
143
+ */
144
+ CheckSecondDropdownSelect() {
145
+ return {
146
+ checkSecondDropdownSelect: {
147
+ name: this.getFlowName(
148
+ "DropdownRenderer",
149
+ "check second dropdown selection"
150
+ ),
151
+ startFlow: [
152
+ {
153
+ selector: '[data-testid="1259"] input',
154
+ action: import_flow_driven_testing.TTriggerActions.CLICK
155
+ },
156
+ {
157
+ selector: '[data-testid="combobox-menu-list"] li',
158
+ action: import_flow_driven_testing.TTriggerActions.CLICK
159
+ }
160
+ ],
161
+ asserts: [
162
+ {
163
+ ssfFunctionsCalled: ["setFields"]
164
+ }
165
+ ],
166
+ transitions: [
167
+ {
168
+ to: "checkEditableDropdownExists"
169
+ }
170
+ ]
171
+ }
172
+ };
173
+ }
174
+ /**
175
+ * Test 6: Verify editable dropdown exists
176
+ */
177
+ CheckEditableDropdownExists() {
178
+ return {
179
+ checkEditableDropdownExists: {
180
+ name: this.getFlowName(
181
+ "DropdownRenderer",
182
+ "check editable dropdown exists"
183
+ ),
184
+ asserts: [
185
+ {
186
+ selector: '[data-testid="33"]',
187
+ isExists: true
188
+ }
189
+ ],
190
+ transitions: [
191
+ {
192
+ to: "checkDropdownPadlockUnlock"
193
+ }
194
+ ]
195
+ }
196
+ };
197
+ }
198
+ /**
199
+ * Test 7: Verify editable dropdown can be typed into
200
+ * Note: Padlock tests require specific lock data in mock.
201
+ * This tests the isEditable functionality of field 33.
202
+ */
203
+ CheckDropdownPadlockUnlock() {
204
+ return {
205
+ checkDropdownPadlockUnlock: {
206
+ name: this.getFlowName(
207
+ "DropdownRenderer",
208
+ "check editable dropdown can receive focus"
209
+ ),
210
+ startFlow: [
211
+ {
212
+ selector: '[data-testid="33"] input',
213
+ action: import_flow_driven_testing.TTriggerActions.CLICK
214
+ }
215
+ ],
216
+ asserts: [
217
+ {
218
+ assertFn: () => {
219
+ const input = document.querySelector(
220
+ '[data-testid="33"] input'
221
+ );
222
+ return input === document.activeElement;
223
+ }
224
+ }
225
+ ],
226
+ transitions: [
227
+ {
228
+ to: "checkEditableDropdownInteraction"
229
+ }
230
+ ]
231
+ }
232
+ };
233
+ }
234
+ /**
235
+ * Test 8: Interact with editable dropdown after unlock
236
+ */
237
+ CheckEditableDropdownInteraction() {
238
+ return {
239
+ checkEditableDropdownInteraction: {
240
+ name: this.getFlowName(
241
+ "DropdownRenderer",
242
+ "check editable dropdown interaction after unlock"
243
+ ),
244
+ startFlow: [
245
+ {
246
+ selector: '[data-testid="33"] input',
247
+ action: import_flow_driven_testing.TTriggerActions.CLICK
248
+ },
249
+ {
250
+ selector: '[data-testid="combobox-menu-list"] li',
251
+ action: import_flow_driven_testing.TTriggerActions.CLICK
252
+ }
253
+ ],
254
+ asserts: [
255
+ {
256
+ ssfFunctionsCalled: ["setFields"]
257
+ }
258
+ ],
259
+ transitions: [
260
+ {
261
+ to: "checkDropdownBlurEvent"
262
+ }
263
+ ]
264
+ }
265
+ };
266
+ }
267
+ /**
268
+ * Test 9: Verify blur event triggers validation
269
+ */
270
+ CheckDropdownBlurEvent() {
271
+ return {
272
+ checkDropdownBlurEvent: {
273
+ name: this.getFlowName(
274
+ "DropdownRenderer",
275
+ "check blur event triggers validation"
276
+ ),
277
+ startFlow: [
278
+ {
279
+ selector: '[data-testid="FR0107"]',
280
+ action: import_flow_driven_testing.TTriggerActions.BLUR
281
+ }
282
+ ],
283
+ asserts: [
284
+ {
285
+ assertFn: () => {
286
+ const errorElement = document.querySelector(
287
+ '[id="FR0107_error_message"] span'
288
+ );
289
+ return !errorElement;
290
+ }
291
+ }
292
+ ],
293
+ transitions: [
294
+ {
295
+ to: "checkDropdownNoNullDisplay"
296
+ }
297
+ ]
298
+ }
299
+ };
300
+ }
301
+ /**
302
+ * Test 10: Verify dropdown doesn't display null/undefined
303
+ */
304
+ CheckDropdownNoNullDisplay() {
305
+ return {
306
+ checkDropdownNoNullDisplay: {
307
+ name: this.getFlowName(
308
+ "DropdownRenderer",
309
+ "check dropdown does not display null or undefined"
310
+ ),
311
+ asserts: [
312
+ {
313
+ assertFn: () => {
314
+ const dropdown = document.querySelector(
315
+ '[data-testid="FR0107"]'
316
+ );
317
+ const text = dropdown?.textContent || "";
318
+ return !text.includes("undefined") && !text.includes("null");
319
+ }
320
+ }
321
+ ],
322
+ transitions: [
323
+ {
324
+ to: "checkDropdownReselection"
325
+ }
326
+ ]
327
+ }
328
+ };
329
+ }
330
+ /**
331
+ * Test 11: Re-select different option from second dropdown (1259) to verify onChange fires
332
+ */
333
+ CheckDropdownReselection() {
334
+ return {
335
+ checkDropdownReselection: {
336
+ name: this.getFlowName(
337
+ "DropdownRenderer",
338
+ "check dropdown reselection triggers onChange"
339
+ ),
340
+ startFlow: [
341
+ {
342
+ selector: '[data-testid="1259"] input',
343
+ action: import_flow_driven_testing.TTriggerActions.CLICK
344
+ },
345
+ {
346
+ selector: '[data-testid="combobox-menu-list"] li:first-child',
347
+ action: import_flow_driven_testing.TTriggerActions.CLICK
348
+ }
349
+ ],
350
+ asserts: [
351
+ {
352
+ ssfFunctionsCalled: ["setFields"]
353
+ }
354
+ ],
355
+ transitions: [
356
+ {
357
+ to: "checkDropdownInputBlur"
358
+ }
359
+ ]
360
+ }
361
+ };
362
+ }
363
+ /**
364
+ * Test 12: Trigger blur on dropdown input to cover onBlurEvent callback
365
+ */
366
+ CheckDropdownInputBlur() {
367
+ return {
368
+ checkDropdownInputBlur: {
369
+ name: this.getFlowName(
370
+ "DropdownRenderer",
371
+ "check dropdown input blur triggers onBlurEvent"
372
+ ),
373
+ startFlow: [
374
+ {
375
+ selector: '[data-testid="FR0107"] input',
376
+ action: import_flow_driven_testing.TTriggerActions.CLICK
377
+ },
378
+ {
379
+ selector: '[data-testid="FR0107"] input',
380
+ action: import_flow_driven_testing.TTriggerActions.BLUR
381
+ }
382
+ ],
383
+ asserts: [
384
+ {
385
+ assertFn: () => {
386
+ const dropdown = document.querySelector('[data-testid="FR0107"]');
387
+ return dropdown !== null;
388
+ }
389
+ }
390
+ ],
391
+ transitions: [
392
+ {
393
+ to: "checkEditableDropdownCreate"
394
+ }
395
+ ]
396
+ }
397
+ };
398
+ }
399
+ /**
400
+ * Test 13: Type a new value in editable dropdown and select creatable option
401
+ */
402
+ CheckEditableDropdownCreate() {
403
+ return {
404
+ checkEditableDropdownCreate: {
405
+ name: this.getFlowName(
406
+ "DropdownRenderer",
407
+ "check editable dropdown onCreate with new value"
408
+ ),
409
+ startFlow: [
410
+ {
411
+ selector: '[data-testid="33"] input',
412
+ action: import_flow_driven_testing.TTriggerActions.CLICK
413
+ },
414
+ {
415
+ selector: '[data-testid="33"] input',
416
+ value: "CustomNewOption",
417
+ action: import_flow_driven_testing.TTriggerActions.CHANGE
418
+ },
419
+ // Click on the creatable option item in the dropdown
420
+ {
421
+ selector: '[data-testid="combobox-menu-list"] li',
422
+ action: import_flow_driven_testing.TTriggerActions.CLICK
423
+ }
424
+ ],
425
+ asserts: [
426
+ {
427
+ ssfFunctionsCalled: ["setFields"]
428
+ }
429
+ ],
430
+ transitions: [
431
+ {
432
+ to: "checkEditableDropdownBlur"
433
+ }
434
+ ]
435
+ }
436
+ };
437
+ }
438
+ /**
439
+ * Test 14: Blur on editable dropdown to trigger commit
440
+ */
441
+ CheckEditableDropdownBlur() {
442
+ return {
443
+ checkEditableDropdownBlur: {
444
+ name: this.getFlowName(
445
+ "DropdownRenderer",
446
+ "check editable dropdown blur commits value"
447
+ ),
448
+ startFlow: [
449
+ {
450
+ selector: '[data-testid="33"] input',
451
+ action: import_flow_driven_testing.TTriggerActions.BLUR
452
+ }
453
+ ],
454
+ asserts: [
455
+ {
456
+ assertFn: () => {
457
+ const dropdown = document.querySelector('[data-testid="33"]');
458
+ return dropdown !== null;
459
+ }
460
+ }
461
+ ],
462
+ transitions: [
463
+ {
464
+ to: "checkDropdownSelectThenBlur"
465
+ }
466
+ ]
467
+ }
468
+ };
469
+ }
470
+ /**
471
+ * Test 15: Select option and blur to cover full onChange + onBlur path
472
+ */
473
+ CheckDropdownSelectThenBlur() {
474
+ return {
475
+ checkDropdownSelectThenBlur: {
476
+ name: this.getFlowName(
477
+ "DropdownRenderer",
478
+ "check select then blur covers full path"
479
+ ),
480
+ startFlow: [
481
+ {
482
+ selector: '[data-testid="FR0107"] input',
483
+ action: import_flow_driven_testing.TTriggerActions.CLICK
484
+ },
485
+ {
486
+ selector: '[data-testid="combobox-menu-list"] li:first-child',
487
+ action: import_flow_driven_testing.TTriggerActions.CLICK
488
+ },
489
+ {
490
+ selector: '[data-testid="FR0107"] input',
491
+ action: import_flow_driven_testing.TTriggerActions.BLUR
492
+ }
493
+ ],
494
+ asserts: [
495
+ {
496
+ ssfFunctionsCalled: ["setFields"]
497
+ }
498
+ ],
499
+ transitions: [
500
+ {
501
+ to: "checkDropdownFocusBlurCycle"
502
+ }
503
+ ]
504
+ }
505
+ };
506
+ }
507
+ /**
508
+ * Test 16: Focus and blur without selection to cover edge case
509
+ */
510
+ CheckDropdownFocusBlurCycle() {
511
+ return {
512
+ checkDropdownFocusBlurCycle: {
513
+ name: this.getFlowName(
514
+ "DropdownRenderer",
515
+ "check focus blur cycle without selection"
516
+ ),
517
+ startFlow: [
518
+ {
519
+ selector: '[data-testid="33"] input',
520
+ action: import_flow_driven_testing.TTriggerActions.CLICK
521
+ },
522
+ {
523
+ selector: '[data-testid="33"] input',
524
+ action: import_flow_driven_testing.TTriggerActions.BLUR
525
+ }
526
+ ],
527
+ asserts: [
528
+ {
529
+ assertFn: () => {
530
+ const dropdown = document.querySelector('[data-testid="33"]');
531
+ return dropdown !== null;
532
+ }
533
+ }
534
+ ],
535
+ transitions: [
536
+ {
537
+ to: "checkDropdownFinalState"
538
+ }
539
+ ]
540
+ }
541
+ };
542
+ }
543
+ /**
544
+ * Test 17: Final state verification
545
+ */
546
+ CheckDropdownFinalState() {
547
+ const transitions = this.flowParams.outboundFlow ? [{ to: this.flowParams.outboundFlow }] : [];
548
+ return {
549
+ checkDropdownFinalState: {
550
+ name: this.getFlowName(
551
+ "DropdownRenderer",
552
+ "check dropdown final state is valid"
553
+ ),
554
+ asserts: [
555
+ {
556
+ assertFn: () => {
557
+ const dropdown1 = document.querySelector(
558
+ '[data-testid="FR0107"]'
559
+ );
560
+ const dropdown2 = document.querySelector('[data-testid="1259"]');
561
+ const dropdown3 = document.querySelector('[data-testid="33"]');
562
+ return dropdown1 !== null && dropdown2 !== null && dropdown3 !== null;
563
+ }
564
+ }
565
+ ],
566
+ ...transitions.length > 0 && { transitions }
567
+ }
568
+ };
569
+ }
570
+ get Flows() {
571
+ return {
572
+ ...this.CheckDropdownRendering(),
573
+ ...this.CheckDropdownOpenAndSelect(),
574
+ ...this.CheckDropdownValueDisplay(),
575
+ ...this.CheckSecondDropdownExists(),
576
+ ...this.CheckSecondDropdownSelect(),
577
+ ...this.CheckEditableDropdownExists(),
578
+ ...this.CheckDropdownPadlockUnlock(),
579
+ ...this.CheckEditableDropdownInteraction(),
580
+ ...this.CheckDropdownBlurEvent(),
581
+ ...this.CheckDropdownNoNullDisplay(),
582
+ ...this.CheckDropdownReselection(),
583
+ ...this.CheckDropdownInputBlur(),
584
+ ...this.CheckEditableDropdownCreate(),
585
+ ...this.CheckEditableDropdownBlur(),
586
+ ...this.CheckDropdownSelectThenBlur(),
587
+ ...this.CheckDropdownFocusBlurCycle(),
588
+ ...this.CheckDropdownFinalState()
589
+ };
590
+ }
591
+ }
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var largeTextRendererFlows_exports = {};
20
+ __export(largeTextRendererFlows_exports, {
21
+ LargeTextRendererFlows: () => LargeTextRendererFlows
22
+ });
23
+ module.exports = __toCommonJS(largeTextRendererFlows_exports);
24
+ var import_flow_driven_testing = require("@elliemae/flow-driven-testing");
25
+ var import_flowBase = require("../base/flowBase");
26
+ class LargeTextRendererFlows extends import_flowBase.FlowBase {
27
+ constructor(flowParams) {
28
+ super(flowParams);
29
+ this.flowParams = flowParams;
30
+ }
31
+ flowParams;
32
+ CheckLargeTextValue() {
33
+ return {
34
+ [`${this.flowParams.inboundFlow}`]: {
35
+ name: this.getFlowName(
36
+ "LargeTextRenderer",
37
+ "check with large text value"
38
+ ),
39
+ startFlow: [
40
+ {
41
+ selector: '[data-testid="3169"]',
42
+ value: "This is a large text input test.",
43
+ action: import_flow_driven_testing.TTriggerActions.BLUR
44
+ }
45
+ ],
46
+ asserts: [
47
+ {
48
+ assertFn: () => {
49
+ const inputElement = document.querySelector(
50
+ '[data-testid="3169"]'
51
+ );
52
+ return inputElement && inputElement.value === "This is a large text input test.";
53
+ }
54
+ }
55
+ ],
56
+ transitions: [
57
+ {
58
+ to: "checkWithMaxCharLimit"
59
+ }
60
+ ]
61
+ }
62
+ };
63
+ }
64
+ CheckWithMaxCharLimit() {
65
+ const transitions = this.flowParams.outboundFlow ? [{ to: this.flowParams.outboundFlow }] : [];
66
+ return {
67
+ checkWithMaxCharLimit: {
68
+ name: this.getFlowName(
69
+ "LargeTextRenderer",
70
+ "check with max character limit"
71
+ ),
72
+ startFlow: [
73
+ {
74
+ selector: '[data-testid="1867"]',
75
+ value: "Exceeding character limit test input.",
76
+ action: import_flow_driven_testing.TTriggerActions.BLUR
77
+ }
78
+ ],
79
+ asserts: [
80
+ {
81
+ assertFn: () => {
82
+ const inputElement = document.querySelector(
83
+ '[id="1867_error_message"]'
84
+ );
85
+ return inputElement && inputElement.value === "Max characters reached.";
86
+ }
87
+ }
88
+ ],
89
+ ...transitions.length > 0 && { transitions }
90
+ }
91
+ };
92
+ }
93
+ get Flows() {
94
+ return {
95
+ ...this.CheckLargeTextValue(),
96
+ ...this.CheckWithMaxCharLimit()
97
+ };
98
+ }
99
+ }