@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,206 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var DateRenderer_exports = {};
30
+ __export(DateRenderer_exports, {
31
+ DateRenderer: () => DateRenderer
32
+ });
33
+ module.exports = __toCommonJS(DateRenderer_exports);
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var import_react = __toESM(require("react"));
36
+ var import_ds_form_date_time_picker = require("@elliemae/ds-form-date-time-picker");
37
+ var import_ds_utilities = require("@elliemae/ds-utilities");
38
+ var import_ds_form_layout_blocks = require("@elliemae/ds-form-layout-blocks");
39
+ var import_renderer = require("../base/renderer");
40
+ var import_AddonRenderer = require("./AddonRenderer");
41
+ var import_dateHelper = require("../../utils/dateHelper");
42
+ var import_styles = require("../styles");
43
+ class DateRenderer extends import_renderer.Renderer {
44
+ AddOnRenderer;
45
+ constructor() {
46
+ super();
47
+ this.AddOnRenderer = new import_AddonRenderer.AddonRenderer().render();
48
+ this.BRWrapper = this.renderBR();
49
+ }
50
+ render() {
51
+ const DateComponent = (props) => {
52
+ const {
53
+ id,
54
+ fieldId,
55
+ isDisable,
56
+ validationRules = [],
57
+ onChange,
58
+ onBlur,
59
+ autoFieldSet = true,
60
+ label,
61
+ rightAddon,
62
+ dateFormat = "MM/DD/YYYY",
63
+ brCompProps,
64
+ extra,
65
+ ...rest
66
+ } = props;
67
+ const { BRWrapper, AddOnRenderer } = this;
68
+ const {
69
+ fieldMetadata: {
70
+ isLockField = false,
71
+ maxLength = 0,
72
+ fieldFormat = ""
73
+ } = {},
74
+ fieldValue,
75
+ setFieldValue,
76
+ isLockedState,
77
+ isSearchedField,
78
+ isFieldDisabled,
79
+ validationResult,
80
+ setIsSearchedField
81
+ } = this.initVM(props);
82
+ this.fieldFormat = fieldFormat;
83
+ const isCalendarOpenRef = (0, import_react.useRef)(false);
84
+ const setCalendarOpen = (0, import_react.useCallback)((isOpen) => {
85
+ isCalendarOpenRef.current = isOpen;
86
+ }, []);
87
+ const blurConfig = (0, import_react.useMemo)(
88
+ () => ({
89
+ onBlur: () => {
90
+ if (isDisable || isFieldDisabled || isCalendarOpenRef.current) {
91
+ return;
92
+ }
93
+ const formattedValue = this.getFormattedValue(fieldValue);
94
+ const rulesToCheck = [
95
+ ...validationRules,
96
+ { type: "date", options: { dateFormat } }
97
+ ];
98
+ const tempValResult = this.Hooks.runValidationsOnValue(
99
+ formattedValue,
100
+ rulesToCheck
101
+ );
102
+ if (!tempValResult.isValid) {
103
+ this.VM.setValidationResult({ isValid: true, message: "" });
104
+ setFieldValue("");
105
+ (async () => {
106
+ await this.BLL.SSF.setFieldValue(fieldId, null);
107
+ })();
108
+ return;
109
+ }
110
+ this.VM.setValidationResult(tempValResult);
111
+ setFieldValue(formattedValue);
112
+ const parsedValue = this.getParsedValue(formattedValue);
113
+ if (autoFieldSet) {
114
+ (async () => {
115
+ await this.BLL.SSF.setFieldValue(fieldId, parsedValue);
116
+ })();
117
+ }
118
+ if (onBlur) {
119
+ onBlur(fieldId, parsedValue);
120
+ }
121
+ }
122
+ }),
123
+ // eslint-disable-next-line react-hooks/exhaustive-deps
124
+ [
125
+ autoFieldSet,
126
+ dateFormat,
127
+ fieldId,
128
+ fieldValue,
129
+ isDisable,
130
+ isFieldDisabled,
131
+ onBlur,
132
+ validationRules
133
+ ]
134
+ );
135
+ const handleBlurOut = (0, import_ds_utilities.useOnBlurOut)(blurConfig);
136
+ const onDateChangeEvent = (0, import_react.useCallback)(
137
+ (selectedDate) => {
138
+ setIsSearchedField(false);
139
+ if (!isDisable && !isFieldDisabled) {
140
+ setFieldValue(selectedDate);
141
+ if (onChange) {
142
+ onChange(fieldId, selectedDate);
143
+ }
144
+ }
145
+ },
146
+ [
147
+ fieldId,
148
+ isDisable,
149
+ isFieldDisabled,
150
+ onChange,
151
+ setFieldValue,
152
+ setIsSearchedField
153
+ ]
154
+ );
155
+ const validationProps = this.buildValidationProps(validationResult);
156
+ const handlePadLockToggle = (0, import_react.useCallback)(
157
+ () => this.toggleLockStatus(fieldId, isLockedState || false),
158
+ // eslint-disable-next-line react-hooks/exhaustive-deps
159
+ [fieldId, isLockedState]
160
+ );
161
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
162
+ BRWrapper,
163
+ {
164
+ fieldId,
165
+ inputID: fieldId,
166
+ label,
167
+ value: String(
168
+ (0, import_dateHelper.formatDateForBr)(fieldValue, dateFormat) || ""
169
+ ),
170
+ ...validationProps,
171
+ ...brCompProps || {},
172
+ withHighlight: isSearchedField,
173
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
174
+ AddOnRenderer,
175
+ {
176
+ rendererType: "addon",
177
+ fieldId,
178
+ isLocked: isLockedState,
179
+ isPadLock: isLockField,
180
+ isDisable,
181
+ onPadLockToggle: handlePadLockToggle,
182
+ rightAddon,
183
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_form_layout_blocks.DSFormLayoutBlockItem, { onBlur: handleBlurOut, label: "", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
184
+ import_styles.StyledDateTimePicker,
185
+ {
186
+ "data-testid": fieldId,
187
+ id,
188
+ date: fieldValue || "",
189
+ onDateChange: onDateChangeEvent,
190
+ onPickerOpen: () => setCalendarOpen(true),
191
+ onPickerClose: () => setCalendarOpen(false),
192
+ applyAriaDisabled: isFieldDisabled || isDisable,
193
+ ...maxLength && maxLength > 0 && { maxLength },
194
+ ...extra,
195
+ ...this.sanitize(rest),
196
+ type: import_ds_form_date_time_picker.CONTROLLED_DATE_TIME_PICKER_TYPES.DATE.FULL
197
+ }
198
+ ) })
199
+ }
200
+ )
201
+ }
202
+ );
203
+ };
204
+ return import_react.default.memo(DateComponent);
205
+ }
206
+ }
@@ -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 hook_exports = {};
20
+ __export(hook_exports, {
21
+ useDropdownCreateSupport: () => useDropdownCreateSupport
22
+ });
23
+ module.exports = __toCommonJS(hook_exports);
24
+ var import_react = require("react");
25
+ function useDropdownCreateSupport({
26
+ isEditable = false,
27
+ fieldValue,
28
+ baseOptions,
29
+ isLockField,
30
+ handlePersist,
31
+ isLocked,
32
+ setIsSearchedField,
33
+ fieldId,
34
+ onCreateCB
35
+ }) {
36
+ const [dynamicOptions, setDynamicOptions] = (0, import_react.useState)(
37
+ isEditable ? baseOptions : []
38
+ );
39
+ (0, import_react.useEffect)(() => {
40
+ if (isEditable) setDynamicOptions(baseOptions);
41
+ }, [isEditable, baseOptions]);
42
+ const effectiveOptions = isEditable ? dynamicOptions : baseOptions;
43
+ const selectedOption = (0, import_react.useMemo)(() => {
44
+ if (fieldValue == null) return null;
45
+ const match = effectiveOptions.find(
46
+ (o) => o.value.toLowerCase() === String(fieldValue).toLowerCase()
47
+ );
48
+ if (!match) return null;
49
+ return {
50
+ type: "option",
51
+ label: match.label,
52
+ value: match.value
53
+ };
54
+ }, [fieldValue, effectiveOptions]);
55
+ const addNewOption = (0, import_react.useCallback)(
56
+ (optionLabel, persist) => {
57
+ if (!isEditable) return;
58
+ const newItem = {
59
+ dsId: "0",
60
+ type: "option",
61
+ label: optionLabel,
62
+ value: optionLabel
63
+ };
64
+ setDynamicOptions((prev) => [newItem, ...prev]);
65
+ if (persist) handlePersist(optionLabel);
66
+ },
67
+ [isEditable, handlePersist]
68
+ );
69
+ (0, import_react.useEffect)(() => {
70
+ if (!isEditable || fieldValue === null || fieldValue === void 0 || fieldValue === "") {
71
+ return;
72
+ }
73
+ const valueStr = String(fieldValue);
74
+ const exists = dynamicOptions.some(
75
+ (o) => o.value.toLowerCase() === valueStr.toLowerCase()
76
+ );
77
+ if (!exists) addNewOption(valueStr, false);
78
+ }, [isEditable, fieldValue, dynamicOptions, addNewOption]);
79
+ const onCreateEvent = (0, import_react.useCallback)(
80
+ (createdLabel) => {
81
+ if (!isEditable) return;
82
+ if (isLockField && !isLocked) return;
83
+ setIsSearchedField(false);
84
+ addNewOption(createdLabel, true);
85
+ onCreateCB?.(fieldId, createdLabel);
86
+ },
87
+ [
88
+ isEditable,
89
+ isLockField,
90
+ isLocked,
91
+ setIsSearchedField,
92
+ addNewOption,
93
+ fieldId,
94
+ onCreateCB
95
+ ]
96
+ );
97
+ const createProps = isEditable ? { onCreate: onCreateEvent } : {};
98
+ return { effectiveOptions, selectedOption, createProps };
99
+ }
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var DropdownRenderer_exports = {};
30
+ __export(DropdownRenderer_exports, {
31
+ DropdownRenderer: () => DropdownRenderer,
32
+ default: () => DropdownRenderer_default
33
+ });
34
+ module.exports = __toCommonJS(DropdownRenderer_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var React = __toESM(require("react"));
37
+ var import_react = require("react");
38
+ var import_ds_controlled_form = require("@elliemae/ds-controlled-form");
39
+ var import_renderer = require("../../base/renderer");
40
+ var import_AddonRenderer = require("../AddonRenderer");
41
+ var import_styles = require("../../styles");
42
+ var import_hook = require("./hook");
43
+ class DropdownRenderer extends import_renderer.Renderer {
44
+ AddOnRenderer;
45
+ constructor() {
46
+ super();
47
+ this.AddOnRenderer = new import_AddonRenderer.AddonRenderer().render();
48
+ this.BRWrapper = this.renderBR();
49
+ }
50
+ render() {
51
+ const DropdownComponent = (props) => {
52
+ const { BRWrapper, AddOnRenderer } = this;
53
+ const {
54
+ fieldId,
55
+ options = [],
56
+ label,
57
+ isDisable,
58
+ isEditable,
59
+ autoFieldSet = true,
60
+ brCompProps,
61
+ onChange,
62
+ onBlur,
63
+ onCreate,
64
+ validationRules = [],
65
+ ...rest
66
+ } = props;
67
+ const {
68
+ fieldMetadata: {
69
+ fieldFormat = "",
70
+ isLockField = false,
71
+ fieldOptions = []
72
+ } = {},
73
+ fieldValue,
74
+ setFieldValue,
75
+ isLockedState,
76
+ isSearchedField,
77
+ setIsSearchedField,
78
+ isFieldDisabled,
79
+ validationResult
80
+ } = this.initVM(props);
81
+ this.fieldFormat = fieldFormat;
82
+ const disabledByState = isFieldDisabled || isDisable || isLockField && !isLockedState;
83
+ const baseOptions = (0, import_react.useMemo)(
84
+ () => options.length ? options : fieldOptions,
85
+ [options, fieldOptions]
86
+ );
87
+ const commitValue = (0, import_react.useCallback)(
88
+ (raw) => {
89
+ if (!isDisable && !isFieldDisabled) {
90
+ const formattedValue = this.getFormattedValue(raw);
91
+ setFieldValue(formattedValue);
92
+ const parsedValue = this.getParsedValue(formattedValue);
93
+ if (autoFieldSet) {
94
+ (async () => {
95
+ await this.BLL.SSF.setFieldValue(fieldId, parsedValue);
96
+ })();
97
+ }
98
+ }
99
+ },
100
+ [autoFieldSet, fieldId, isDisable, isFieldDisabled, setFieldValue]
101
+ );
102
+ const { effectiveOptions, selectedOption, createProps } = (0, import_hook.useDropdownCreateSupport)({
103
+ isEditable,
104
+ fieldValue,
105
+ baseOptions,
106
+ isLockField,
107
+ handlePersist: commitValue,
108
+ isLocked: isLockedState,
109
+ setIsSearchedField,
110
+ fieldId,
111
+ onCreateCB: onCreate
112
+ });
113
+ const onChangeEvent = (0, import_react.useCallback)(
114
+ (newSelected) => {
115
+ setIsSearchedField(false);
116
+ const dsItem = newSelected;
117
+ const newValue = dsItem?.value ?? null;
118
+ if (!isDisable && !isFieldDisabled) {
119
+ const formattedValue = this.getFormattedValue(newValue);
120
+ setFieldValue(formattedValue);
121
+ const parsedValue = this.getParsedValue(formattedValue);
122
+ if (autoFieldSet) {
123
+ (async () => {
124
+ await this.BLL.SSF.setFieldValue(fieldId, parsedValue);
125
+ })();
126
+ }
127
+ if (onChange) {
128
+ onChange(fieldId, parsedValue);
129
+ }
130
+ }
131
+ },
132
+ [
133
+ autoFieldSet,
134
+ fieldId,
135
+ isDisable,
136
+ isFieldDisabled,
137
+ onChange,
138
+ setFieldValue,
139
+ setIsSearchedField
140
+ ]
141
+ );
142
+ const onBlurEvent = (0, import_react.useCallback)(() => {
143
+ if (!isDisable && !isFieldDisabled) {
144
+ const currentValue = selectedOption?.value || "";
145
+ const formattedValue = this.getFormattedValue(currentValue);
146
+ setFieldValue(formattedValue);
147
+ const rulesToCheck = [...validationRules];
148
+ const tempValResult = this.Hooks.runValidationsOnValue(
149
+ formattedValue,
150
+ rulesToCheck
151
+ );
152
+ this.VM.setValidationResult(tempValResult);
153
+ if (!tempValResult.isValid) {
154
+ return;
155
+ }
156
+ const parsedValue = this.getParsedValue(formattedValue);
157
+ if (onBlur) {
158
+ onBlur(fieldId, parsedValue);
159
+ }
160
+ }
161
+ }, [
162
+ fieldId,
163
+ selectedOption,
164
+ onBlur,
165
+ isDisable,
166
+ isFieldDisabled,
167
+ validationRules,
168
+ setFieldValue
169
+ ]);
170
+ const validationProps = this.buildValidationProps(validationResult);
171
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
172
+ BRWrapper,
173
+ {
174
+ fieldId,
175
+ inputID: fieldId,
176
+ label,
177
+ value: fieldValue,
178
+ ...validationProps,
179
+ ...brCompProps || {},
180
+ withHighlight: isSearchedField,
181
+ children: [
182
+ !label && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styles.EmptyLabel, { htmlFor: fieldId }),
183
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
184
+ AddOnRenderer,
185
+ {
186
+ rendererType: "addon",
187
+ fieldId,
188
+ isLocked: isLockedState,
189
+ isPadLock: isLockField,
190
+ isDisable,
191
+ onPadLockToggle: () => this.toggleLockStatus(fieldId, isLockedState || false),
192
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
193
+ import_ds_controlled_form.DSComboBox,
194
+ {
195
+ id: fieldId,
196
+ "data-testid": fieldId,
197
+ selectedValues: selectedOption,
198
+ allOptions: effectiveOptions,
199
+ onChange: onChangeEvent,
200
+ onBlur: onBlurEvent,
201
+ ...this.sanitize(rest),
202
+ ...createProps,
203
+ applyAriaDisabled: disabledByState,
204
+ placeholder: ""
205
+ }
206
+ )
207
+ }
208
+ )
209
+ ]
210
+ }
211
+ );
212
+ };
213
+ return React.memo(DropdownComponent);
214
+ }
215
+ }
216
+ var DropdownRenderer_default = DropdownRenderer;