@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.
- package/dist/cjs/ARCHITECTURE.md +434 -0
- package/dist/cjs/OVERVIEW.md +229 -0
- package/dist/cjs/bll/constants.js +86 -0
- package/dist/cjs/bll/formatters/booleanFormatter.js +51 -0
- package/dist/cjs/bll/formatters/dateFormatter.js +78 -0
- package/dist/cjs/bll/formatters/dropdownFormatter.js +34 -0
- package/dist/cjs/bll/formatters/factory/index.js +115 -0
- package/dist/cjs/bll/formatters/index.js +24 -0
- package/dist/cjs/bll/formatters/numberFormatter.js +70 -0
- package/dist/cjs/bll/formatters/phoneFormatter.js +57 -0
- package/dist/cjs/bll/formatters/regexFormatter.js +52 -0
- package/dist/cjs/bll/formatters/ssnFormatter.js +50 -0
- package/dist/cjs/bll/formatters/textFormatter.js +43 -0
- package/dist/cjs/bll/formatters/zipFormatter.js +48 -0
- package/dist/cjs/bll/index.js +62 -0
- package/dist/cjs/bll/ssf/index.js +48 -0
- package/dist/cjs/bll/ssf/loan.js +81 -0
- package/dist/cjs/bll/ssf/loconnect.js +70 -0
- package/dist/cjs/bll/ssf/ssfBase.js +97 -0
- package/dist/cjs/bll/ssf/types.js +16 -0
- package/dist/cjs/bll/types.js +16 -0
- package/dist/cjs/bll/validators/dateValidator.js +60 -0
- package/dist/cjs/bll/validators/emailValidator.js +47 -0
- package/dist/cjs/bll/validators/factory/index.js +81 -0
- package/dist/cjs/bll/validators/index.js +24 -0
- package/dist/cjs/bll/validators/maxCharValidator.js +49 -0
- package/dist/cjs/bll/validators/requiredValidator.js +44 -0
- package/dist/cjs/bll/validators/zipValidator.js +53 -0
- package/dist/cjs/core/index.js +52 -0
- package/dist/cjs/demo/config.js +391 -0
- package/dist/cjs/demo/index.js +31 -0
- package/dist/cjs/package.json +7 -0
- package/dist/cjs/renderer/FieldRenderer.js +45 -0
- package/dist/cjs/renderer/base/hooks/fieldDescription.js +39 -0
- package/dist/cjs/renderer/base/hooks/fieldDisabled.js +53 -0
- package/dist/cjs/renderer/base/hooks/fieldGoTo.js +50 -0
- package/dist/cjs/renderer/base/hooks/fieldLocked.js +42 -0
- package/dist/cjs/renderer/base/hooks/fieldMeta.js +150 -0
- package/dist/cjs/renderer/base/hooks/fieldSubscribers.js +66 -0
- package/dist/cjs/renderer/base/hooks/fieldValidation.js +45 -0
- package/dist/cjs/renderer/base/hooks/fieldValue.js +215 -0
- package/dist/cjs/renderer/base/hooks/hookBase.js +29 -0
- package/dist/cjs/renderer/base/hooks/index.js +139 -0
- package/dist/cjs/renderer/base/renderer.js +198 -0
- package/dist/cjs/renderer/base/rendererValidator.js +97 -0
- package/dist/cjs/renderer/factory/index.js +58 -0
- package/dist/cjs/renderer/field-renderers/AddonRenderer.js +75 -0
- package/dist/cjs/renderer/field-renderers/CheckboxRenderer.js +123 -0
- package/dist/cjs/renderer/field-renderers/DateRenderer.js +206 -0
- package/dist/cjs/renderer/field-renderers/DropdownRenderer/hook.js +99 -0
- package/dist/cjs/renderer/field-renderers/DropdownRenderer/index.js +216 -0
- package/dist/cjs/renderer/field-renderers/LargeTextRenderer.js +209 -0
- package/dist/cjs/renderer/field-renderers/NumberRenderer.js +216 -0
- package/dist/cjs/renderer/field-renderers/RadioGroupRenderer.js +128 -0
- package/dist/cjs/renderer/field-renderers/RadioRenderer.js +121 -0
- package/dist/cjs/renderer/field-renderers/TextRenderer.js +223 -0
- package/dist/cjs/renderer/field-renderers/ToggleRenderer.js +121 -0
- package/dist/cjs/renderer/field-renderers/ZipCodeRenderer/helper.js +132 -0
- package/dist/cjs/renderer/field-renderers/ZipCodeRenderer/hook.js +128 -0
- package/dist/cjs/renderer/field-renderers/ZipCodeRenderer/index.js +273 -0
- package/dist/cjs/renderer/index.js +24 -0
- package/dist/cjs/renderer/styles.js +51 -0
- package/dist/cjs/renderer/types.js +16 -0
- package/dist/cjs/tests/base/flowBase.js +125 -0
- package/dist/cjs/tests/base/index.js +52 -0
- package/dist/cjs/tests/flows/checkboxRendererFlows.js +85 -0
- package/dist/cjs/tests/flows/dateRendererFlows.js +870 -0
- package/dist/cjs/tests/flows/dropdownRendererFlows.js +591 -0
- package/dist/cjs/tests/flows/largeTextRendererFlows.js +99 -0
- package/dist/cjs/tests/flows/numberRendererFlows.js +175 -0
- package/dist/cjs/tests/flows/radioRendererFlows.js +115 -0
- package/dist/cjs/tests/flows/textRendererFlows.js +349 -0
- package/dist/cjs/tests/flows/toggleRendererFlows.js +106 -0
- package/dist/cjs/tests/flows/zipCodeRendererFlows.js +1163 -0
- package/dist/cjs/utils/dateHelper.js +65 -0
- package/dist/esm/ARCHITECTURE.md +434 -0
- package/dist/esm/OVERVIEW.md +229 -0
- package/dist/esm/bll/constants.js +66 -0
- package/dist/esm/bll/formatters/booleanFormatter.js +33 -0
- package/dist/esm/bll/formatters/dateFormatter.js +48 -0
- package/dist/esm/bll/formatters/dropdownFormatter.js +14 -0
- package/dist/esm/bll/formatters/factory/index.js +97 -0
- package/dist/esm/bll/formatters/index.js +4 -0
- package/dist/esm/bll/formatters/numberFormatter.js +54 -0
- package/dist/esm/bll/formatters/phoneFormatter.js +41 -0
- package/dist/esm/bll/formatters/regexFormatter.js +34 -0
- package/dist/esm/bll/formatters/ssnFormatter.js +32 -0
- package/dist/esm/bll/formatters/textFormatter.js +25 -0
- package/dist/esm/bll/formatters/zipFormatter.js +30 -0
- package/dist/esm/bll/index.js +44 -0
- package/dist/esm/bll/ssf/index.js +30 -0
- package/dist/esm/bll/ssf/loan.js +63 -0
- package/dist/esm/bll/ssf/loconnect.js +52 -0
- package/dist/esm/bll/ssf/ssfBase.js +67 -0
- package/dist/esm/bll/ssf/types.js +0 -0
- package/dist/esm/bll/types.js +0 -0
- package/dist/esm/bll/validators/dateValidator.js +30 -0
- package/dist/esm/bll/validators/emailValidator.js +29 -0
- package/dist/esm/bll/validators/factory/index.js +63 -0
- package/dist/esm/bll/validators/index.js +4 -0
- package/dist/esm/bll/validators/maxCharValidator.js +31 -0
- package/dist/esm/bll/validators/requiredValidator.js +26 -0
- package/dist/esm/bll/validators/zipValidator.js +35 -0
- package/dist/esm/core/index.js +34 -0
- package/dist/esm/demo/config.js +371 -0
- package/dist/esm/demo/index.js +11 -0
- package/dist/esm/package.json +7 -0
- package/dist/esm/renderer/FieldRenderer.js +15 -0
- package/dist/esm/renderer/base/hooks/fieldDescription.js +19 -0
- package/dist/esm/renderer/base/hooks/fieldDisabled.js +33 -0
- package/dist/esm/renderer/base/hooks/fieldGoTo.js +30 -0
- package/dist/esm/renderer/base/hooks/fieldLocked.js +22 -0
- package/dist/esm/renderer/base/hooks/fieldMeta.js +132 -0
- package/dist/esm/renderer/base/hooks/fieldSubscribers.js +36 -0
- package/dist/esm/renderer/base/hooks/fieldValidation.js +25 -0
- package/dist/esm/renderer/base/hooks/fieldValue.js +195 -0
- package/dist/esm/renderer/base/hooks/hookBase.js +9 -0
- package/dist/esm/renderer/base/hooks/index.js +121 -0
- package/dist/esm/renderer/base/renderer.js +178 -0
- package/dist/esm/renderer/base/rendererValidator.js +77 -0
- package/dist/esm/renderer/factory/index.js +38 -0
- package/dist/esm/renderer/field-renderers/AddonRenderer.js +55 -0
- package/dist/esm/renderer/field-renderers/CheckboxRenderer.js +93 -0
- package/dist/esm/renderer/field-renderers/DateRenderer.js +176 -0
- package/dist/esm/renderer/field-renderers/DropdownRenderer/hook.js +79 -0
- package/dist/esm/renderer/field-renderers/DropdownRenderer/index.js +186 -0
- package/dist/esm/renderer/field-renderers/LargeTextRenderer.js +179 -0
- package/dist/esm/renderer/field-renderers/NumberRenderer.js +188 -0
- package/dist/esm/renderer/field-renderers/RadioGroupRenderer.js +108 -0
- package/dist/esm/renderer/field-renderers/RadioRenderer.js +91 -0
- package/dist/esm/renderer/field-renderers/TextRenderer.js +197 -0
- package/dist/esm/renderer/field-renderers/ToggleRenderer.js +91 -0
- package/dist/esm/renderer/field-renderers/ZipCodeRenderer/helper.js +112 -0
- package/dist/esm/renderer/field-renderers/ZipCodeRenderer/hook.js +108 -0
- package/dist/esm/renderer/field-renderers/ZipCodeRenderer/index.js +247 -0
- package/dist/esm/renderer/index.js +4 -0
- package/dist/esm/renderer/styles.js +21 -0
- package/dist/esm/renderer/types.js +0 -0
- package/dist/esm/tests/base/flowBase.js +105 -0
- package/dist/esm/tests/base/index.js +22 -0
- package/dist/esm/tests/flows/checkboxRendererFlows.js +65 -0
- package/dist/esm/tests/flows/dateRendererFlows.js +850 -0
- package/dist/esm/tests/flows/dropdownRendererFlows.js +571 -0
- package/dist/esm/tests/flows/largeTextRendererFlows.js +79 -0
- package/dist/esm/tests/flows/numberRendererFlows.js +155 -0
- package/dist/esm/tests/flows/radioRendererFlows.js +95 -0
- package/dist/esm/tests/flows/textRendererFlows.js +329 -0
- package/dist/esm/tests/flows/toggleRendererFlows.js +86 -0
- package/dist/esm/tests/flows/zipCodeRendererFlows.js +1143 -0
- package/dist/esm/utils/dateHelper.js +35 -0
- package/dist/types/lib/bll/constants.d.ts +9 -0
- package/dist/types/lib/bll/formatters/booleanFormatter.d.ts +5 -0
- package/dist/types/lib/bll/formatters/dateFormatter.d.ts +28 -0
- package/dist/types/lib/bll/formatters/dropdownFormatter.d.ts +6 -0
- package/dist/types/lib/bll/formatters/factory/index.d.ts +71 -0
- package/dist/types/lib/bll/formatters/index.d.ts +2 -0
- package/dist/types/lib/bll/formatters/numberFormatter.d.ts +6 -0
- package/dist/types/lib/bll/formatters/phoneFormatter.d.ts +7 -0
- package/dist/types/lib/bll/formatters/regexFormatter.d.ts +5 -0
- package/dist/types/lib/bll/formatters/ssnFormatter.d.ts +5 -0
- package/dist/types/lib/bll/formatters/textFormatter.d.ts +6 -0
- package/dist/types/lib/bll/formatters/zipFormatter.d.ts +5 -0
- package/dist/types/lib/bll/index.d.ts +20 -0
- package/dist/types/lib/bll/ssf/index.d.ts +25 -0
- package/dist/types/lib/bll/ssf/loan.d.ts +16 -0
- package/dist/types/lib/bll/ssf/loconnect.d.ts +15 -0
- package/dist/types/lib/bll/ssf/ssfBase.d.ts +23 -0
- package/dist/types/lib/bll/ssf/types.d.ts +99 -0
- package/dist/types/lib/bll/types.d.ts +47 -0
- package/dist/types/lib/bll/validators/dateValidator.d.ts +16 -0
- package/dist/types/lib/bll/validators/emailValidator.d.ts +4 -0
- package/dist/types/lib/bll/validators/factory/index.d.ts +15 -0
- package/dist/types/lib/bll/validators/index.d.ts +2 -0
- package/dist/types/lib/bll/validators/maxCharValidator.d.ts +4 -0
- package/dist/types/lib/bll/validators/requiredValidator.d.ts +4 -0
- package/dist/types/lib/bll/validators/zipValidator.d.ts +5 -0
- package/dist/types/lib/core/index.d.ts +29 -0
- package/dist/types/lib/demo/config.d.ts +11 -0
- package/dist/types/lib/demo/index.d.ts +1 -0
- package/dist/types/lib/renderer/FieldRenderer.d.ts +5 -0
- package/dist/types/lib/renderer/base/hooks/fieldDescription.d.ts +5 -0
- package/dist/types/lib/renderer/base/hooks/fieldDisabled.d.ts +10 -0
- package/dist/types/lib/renderer/base/hooks/fieldGoTo.d.ts +4 -0
- package/dist/types/lib/renderer/base/hooks/fieldLocked.d.ts +4 -0
- package/dist/types/lib/renderer/base/hooks/fieldMeta.d.ts +10 -0
- package/dist/types/lib/renderer/base/hooks/fieldSubscribers.d.ts +6 -0
- package/dist/types/lib/renderer/base/hooks/fieldValidation.d.ts +9 -0
- package/dist/types/lib/renderer/base/hooks/fieldValue.d.ts +31 -0
- package/dist/types/lib/renderer/base/hooks/hookBase.d.ts +9 -0
- package/dist/types/lib/renderer/base/hooks/index.d.ts +19 -0
- package/dist/types/lib/renderer/base/renderer.d.ts +43 -0
- package/dist/types/lib/renderer/base/rendererValidator.d.ts +15 -0
- package/dist/types/lib/renderer/factory/index.d.ts +5 -0
- package/dist/types/lib/renderer/field-renderers/AddonRenderer.d.ts +12 -0
- package/dist/types/lib/renderer/field-renderers/CheckboxRenderer.d.ts +7 -0
- package/dist/types/lib/renderer/field-renderers/DateRenderer.d.ts +13 -0
- package/dist/types/lib/renderer/field-renderers/DropdownRenderer/hook.d.ts +23 -0
- package/dist/types/lib/renderer/field-renderers/DropdownRenderer/index.d.ts +12 -0
- package/dist/types/lib/renderer/field-renderers/LargeTextRenderer.d.ts +17 -0
- package/dist/types/lib/renderer/field-renderers/NumberRenderer.d.ts +12 -0
- package/dist/types/lib/renderer/field-renderers/RadioGroupRenderer.d.ts +8 -0
- package/dist/types/lib/renderer/field-renderers/RadioRenderer.d.ts +8 -0
- package/dist/types/lib/renderer/field-renderers/TextRenderer.d.ts +8 -0
- package/dist/types/lib/renderer/field-renderers/ToggleRenderer.d.ts +24 -0
- package/dist/types/lib/renderer/field-renderers/ZipCodeRenderer/helper.d.ts +48 -0
- package/dist/types/lib/renderer/field-renderers/ZipCodeRenderer/hook.d.ts +17 -0
- package/dist/types/lib/renderer/field-renderers/ZipCodeRenderer/index.d.ts +9 -0
- package/dist/types/lib/renderer/index.d.ts +2 -0
- package/dist/types/lib/renderer/styles.d.ts +7 -0
- package/dist/types/lib/renderer/types.d.ts +325 -0
- package/dist/types/lib/tests/base/flowBase.d.ts +13 -0
- package/dist/types/lib/tests/base/index.d.ts +6 -0
- package/dist/types/lib/tests/flows/checkboxRendererFlows.d.ts +9 -0
- package/dist/types/lib/tests/flows/dateRendererFlows.d.ts +120 -0
- package/dist/types/lib/tests/flows/dropdownRendererFlows.d.ts +92 -0
- package/dist/types/lib/tests/flows/largeTextRendererFlows.d.ts +9 -0
- package/dist/types/lib/tests/flows/numberRendererFlows.d.ts +11 -0
- package/dist/types/lib/tests/flows/radioRendererFlows.d.ts +10 -0
- package/dist/types/lib/tests/flows/textRendererFlows.d.ts +16 -0
- package/dist/types/lib/tests/flows/toggleRendererFlows.d.ts +10 -0
- package/dist/types/lib/tests/flows/zipCodeRendererFlows.d.ts +169 -0
- package/dist/types/lib/tests/loan-field-renderer-flows.test.d.ts +1 -0
- package/dist/types/lib/utils/dateHelper.d.ts +8 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import moment from "moment";
|
|
2
|
+
const isSunday = (momentDateObj) => moment(momentDateObj).format("dddd") === "Sunday";
|
|
3
|
+
const isHoliday = (momentDateObj, holidays) => holidays.includes(moment(momentDateObj).format("YYYY-MM-DD"));
|
|
4
|
+
const calNextBusinessDay = (dayCound, momentDateObj, holidays) => {
|
|
5
|
+
const nextDateObj = momentDateObj.add(dayCound, "d");
|
|
6
|
+
if (isSunday(nextDateObj) || isHoliday(nextDateObj, holidays)) {
|
|
7
|
+
calNextBusinessDay(dayCound, nextDateObj, holidays);
|
|
8
|
+
}
|
|
9
|
+
return nextDateObj;
|
|
10
|
+
};
|
|
11
|
+
const calNextPresumedRecievedDay = (dayCount, momentDateObj, holidays) => {
|
|
12
|
+
const nextPresumedRecievedDay = isSunday(momentDateObj) || isHoliday(momentDateObj, holidays) ? calNextBusinessDay(1, momentDateObj, holidays) : momentDateObj;
|
|
13
|
+
for (let index = 0; index < dayCount; index += 1) {
|
|
14
|
+
calNextBusinessDay(1, nextPresumedRecievedDay, holidays);
|
|
15
|
+
}
|
|
16
|
+
return nextPresumedRecievedDay;
|
|
17
|
+
};
|
|
18
|
+
const formatISODate = (date) => moment(date).utc().format("MM/DD/YYYY");
|
|
19
|
+
const formatDateForBr = (date, format) => {
|
|
20
|
+
if (!date) return date;
|
|
21
|
+
if (format === "ISO") {
|
|
22
|
+
return moment(date).format("YYYY-MM-DD");
|
|
23
|
+
}
|
|
24
|
+
return moment(date).format("MM/DD/YYYY");
|
|
25
|
+
};
|
|
26
|
+
const convertToLocalDateTime = (date) => date ? moment.utc(date).local().format("MM/DD/YYYY [at] hh:mm A") : date;
|
|
27
|
+
export {
|
|
28
|
+
calNextBusinessDay,
|
|
29
|
+
calNextPresumedRecievedDay,
|
|
30
|
+
convertToLocalDateTime,
|
|
31
|
+
formatDateForBr,
|
|
32
|
+
formatISODate,
|
|
33
|
+
isHoliday,
|
|
34
|
+
isSunday
|
|
35
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const ACRONYM_FORMAT_MAP: Record<string, string>;
|
|
2
|
+
export declare const FORMATTER_ACRONYMS: string[];
|
|
3
|
+
export declare const FORMATTER_TYPE_MAP: Record<string, string>;
|
|
4
|
+
export declare const DECIMAL_POINTS_MAP: Record<string, number>;
|
|
5
|
+
/**
|
|
6
|
+
* Mapping of renderer-controlled props that should be filtered from extra props.
|
|
7
|
+
* These props are managed internally by each renderer and should not be overridden.
|
|
8
|
+
*/
|
|
9
|
+
export declare const RENDERER_CONTROLLED_PROPS: Readonly<Record<string, ReadonlyArray<string>>>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { IFormatter } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* DateFormatter handles conversion between storage format (YYYY-MM-DD)
|
|
4
|
+
* and display format (configurable, default MM/DD/YYYY).
|
|
5
|
+
*/
|
|
6
|
+
declare class DateFormatter implements IFormatter {
|
|
7
|
+
/**
|
|
8
|
+
* Format date from storage format to display format
|
|
9
|
+
* @param {unknown} input - Date value from loan (typically YYYY-MM-DD or ISO format)
|
|
10
|
+
* @param {object} [options] - Formatting options
|
|
11
|
+
* @param {string} [options.dateFormat] - Target display format (default: MM/DD/YYYY)
|
|
12
|
+
* @returns {string} Formatted date string for UI display
|
|
13
|
+
*/
|
|
14
|
+
format(input: unknown, options?: {
|
|
15
|
+
dateFormat?: string;
|
|
16
|
+
}): string;
|
|
17
|
+
/**
|
|
18
|
+
* Parse date from display format to storage format
|
|
19
|
+
* @param {string} input - Date string from UI (in display format)
|
|
20
|
+
* @param {object} [options] - Parsing options
|
|
21
|
+
* @param {string} [options.dateFormat] - Source display format (default: MM/DD/YYYY)
|
|
22
|
+
* @returns {unknown} Date in storage format (YYYY-MM-DD)
|
|
23
|
+
*/
|
|
24
|
+
parse(input: string, options?: {
|
|
25
|
+
dateFormat?: string;
|
|
26
|
+
}): unknown;
|
|
27
|
+
}
|
|
28
|
+
export { DateFormatter };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { PhoneFormatter } from '../phoneFormatter';
|
|
2
|
+
import { RegexFormatter } from '../regexFormatter';
|
|
3
|
+
import { SSNFormatter } from '../ssnFormatter';
|
|
4
|
+
import { ZipFormatter } from '../zipFormatter';
|
|
5
|
+
import { BooleanFormatter } from '../booleanFormatter';
|
|
6
|
+
import { TextFormatter } from '../textFormatter';
|
|
7
|
+
import { NumberFormatter } from '../numberFormatter';
|
|
8
|
+
import { DateFormatter } from '../dateFormatter';
|
|
9
|
+
import { DropdownFormatter } from '../dropdownFormatter';
|
|
10
|
+
export type FormatterAcronymMap = {
|
|
11
|
+
SS: SSNFormatter;
|
|
12
|
+
T: DateFormatter;
|
|
13
|
+
TD: DateFormatter;
|
|
14
|
+
S: TextFormatter;
|
|
15
|
+
ST: DropdownFormatter;
|
|
16
|
+
I: NumberFormatter;
|
|
17
|
+
D2: NumberFormatter;
|
|
18
|
+
D3: NumberFormatter;
|
|
19
|
+
D4: NumberFormatter;
|
|
20
|
+
D5: NumberFormatter;
|
|
21
|
+
D6: NumberFormatter;
|
|
22
|
+
RI: NumberFormatter;
|
|
23
|
+
RD2: NumberFormatter;
|
|
24
|
+
RD3: NumberFormatter;
|
|
25
|
+
RD4: NumberFormatter;
|
|
26
|
+
RD5: NumberFormatter;
|
|
27
|
+
RD6: NumberFormatter;
|
|
28
|
+
Y: BooleanFormatter;
|
|
29
|
+
P: PhoneFormatter;
|
|
30
|
+
Z: ZipFormatter;
|
|
31
|
+
RS: RegexFormatter;
|
|
32
|
+
DD: DropdownFormatter;
|
|
33
|
+
DT: DateFormatter;
|
|
34
|
+
};
|
|
35
|
+
type FormatterAcronym = keyof FormatterAcronymMap;
|
|
36
|
+
export interface IFormatterFactory {
|
|
37
|
+
createFormatter<T extends FormatterAcronym>(acronym: T): FormatterAcronymMap[T];
|
|
38
|
+
}
|
|
39
|
+
declare class FormatterFactory implements IFormatterFactory {
|
|
40
|
+
/**
|
|
41
|
+
* Cache for formatter instances by acronym
|
|
42
|
+
* Since formatters are stateless, we can safely reuse instances
|
|
43
|
+
*/
|
|
44
|
+
private formatterCache;
|
|
45
|
+
/**
|
|
46
|
+
* Helper to check if acronym is for number formatter
|
|
47
|
+
* @param {string} acronym - Acronym to check
|
|
48
|
+
* @returns {boolean} True if number formatter
|
|
49
|
+
*/
|
|
50
|
+
private isNumberAcronym;
|
|
51
|
+
/**
|
|
52
|
+
* Helper to check if acronym is for text formatter
|
|
53
|
+
* @param {string} acronym - Acronym to check
|
|
54
|
+
* @returns {boolean} True if text formatter
|
|
55
|
+
*/
|
|
56
|
+
private isTextAcronym;
|
|
57
|
+
/**
|
|
58
|
+
* Create specific formatter based on acronym
|
|
59
|
+
* @param {string} upperAcronym - Uppercase acronym
|
|
60
|
+
* @returns Specific formatter instance
|
|
61
|
+
*/
|
|
62
|
+
private createSpecificFormatter;
|
|
63
|
+
/**
|
|
64
|
+
* Create formatter from acronym with type safety
|
|
65
|
+
* @param {FormatterAcronym} acronym - Acronym identifier (e.g., 'SS', 'I', 'D2')
|
|
66
|
+
* @returns {FormatterAcronymMap[T]} Specific formatter instance based on acronym
|
|
67
|
+
*/
|
|
68
|
+
createFormatter<T extends FormatterAcronym>(acronym: T): FormatterAcronymMap[T];
|
|
69
|
+
}
|
|
70
|
+
declare const factoryInstance: FormatterFactory;
|
|
71
|
+
export { factoryInstance };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IFormatter, INumberFormatOptions, INumberParseOptions } from '../types';
|
|
2
|
+
export declare class NumberFormatter implements IFormatter<INumberFormatOptions, INumberParseOptions> {
|
|
3
|
+
private getMaskOptions;
|
|
4
|
+
format(input: unknown, { fieldFormat, numberOptions }: INumberFormatOptions): string;
|
|
5
|
+
parse(input: string, { fieldFormat, unmaskPattern }: INumberParseOptions): number | undefined;
|
|
6
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UsePhoneMaskT } from '@elliemae/ds-form-helpers-mask-hooks';
|
|
2
|
+
import { IFormatter, IPhoneParseOptions, IPhoneFormatOptions } from '../types';
|
|
3
|
+
export declare class PhoneFormatter implements IFormatter<IPhoneFormatOptions, IPhoneParseOptions> {
|
|
4
|
+
format(input: unknown, { isInternational }: IPhoneFormatOptions): string;
|
|
5
|
+
parse(input: string, { unmaskPattern }?: IPhoneParseOptions): string | undefined;
|
|
6
|
+
static getPhoneFormatOptions({ isInternational, }: Omit<UsePhoneMaskT.Props, 'valueSetter'>): Omit<UsePhoneMaskT.Props, 'valueSetter'>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { coreInstance } from '../core';
|
|
2
|
+
import { IFormatterFactory } from './formatters/factory';
|
|
3
|
+
import { ValidatorFactory } from './validators/factory';
|
|
4
|
+
import { SSF } from './ssf';
|
|
5
|
+
import { IValidatorFactory } from './types';
|
|
6
|
+
export interface IBLL {
|
|
7
|
+
get SSF(): SSF;
|
|
8
|
+
get Core(): typeof coreInstance;
|
|
9
|
+
get Formatter(): IFormatterFactory;
|
|
10
|
+
get Validator(): IValidatorFactory;
|
|
11
|
+
}
|
|
12
|
+
export declare class BLL implements IBLL {
|
|
13
|
+
get Core(): import("../core").Core;
|
|
14
|
+
private ssf;
|
|
15
|
+
get Formatter(): IFormatterFactory;
|
|
16
|
+
get Validator(): ValidatorFactory;
|
|
17
|
+
get SSF(): SSF;
|
|
18
|
+
set SSF(service: SSF);
|
|
19
|
+
}
|
|
20
|
+
export declare const bllInstance: BLL;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSF Module Barrel Export
|
|
3
|
+
* Architecture follows HookBase pattern:
|
|
4
|
+
* - SSFBase: Base class with shared SSF initialization
|
|
5
|
+
* - Loan: Groups loan object operations
|
|
6
|
+
* - LoConnect: Groups loconnect host operations
|
|
7
|
+
* - SSF: Combined class with all operations via Mixins
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* import { ssfAdapterInstance } from './ssf';
|
|
11
|
+
* await ssfAdapterInstance.getFieldValue('FR0104');
|
|
12
|
+
* await ssfAdapterInstance.getStateDropDownList();
|
|
13
|
+
*/
|
|
14
|
+
import { SSFBase } from './ssfBase';
|
|
15
|
+
import { Loan } from './loan';
|
|
16
|
+
import { LoConnect } from './loconnect';
|
|
17
|
+
export { SSFBase } from './ssfBase';
|
|
18
|
+
export type { FieldValueResolverFn } from './ssfBase';
|
|
19
|
+
export { Loan } from './loan';
|
|
20
|
+
export { LoConnect } from './loconnect';
|
|
21
|
+
export interface SSF extends Loan, LoConnect {
|
|
22
|
+
}
|
|
23
|
+
export declare class SSF extends SSFBase {
|
|
24
|
+
}
|
|
25
|
+
export declare const ssfInstance: SSF;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SSFBase } from './ssfBase';
|
|
2
|
+
import { ModelPathT } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Loan operations - Groups loan object related SSF methods
|
|
5
|
+
* Similar to how FieldValue, FieldMeta etc. extend HookBase
|
|
6
|
+
* Reference: ssf-wrapper-base.js loan methods
|
|
7
|
+
*/
|
|
8
|
+
export declare class Loan extends SSFBase {
|
|
9
|
+
getFieldValue(fieldId: string): Promise<unknown>;
|
|
10
|
+
setFieldValue(fieldId: string, value: unknown): Promise<void>;
|
|
11
|
+
setFieldsValues(setFieldsValuesObject: Record<string, unknown>, doCalc?: boolean): Promise<void>;
|
|
12
|
+
getFieldContractPaths(): Promise<Record<string, ModelPathT>>;
|
|
13
|
+
isReadOnlyLoan(): Promise<boolean>;
|
|
14
|
+
resolveBaseCollectionId(fieldId: string): Promise<string>;
|
|
15
|
+
getCollectionRowIndex(fieldId: string): Promise<number>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SSFBase } from './ssfBase';
|
|
2
|
+
import { IGoToFieldDetails, StateOptionT } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* LoConnect operations - Groups loconnect host related SSF methods
|
|
5
|
+
* Similar to how FieldDisabled, FieldLocked etc. extend HookBase
|
|
6
|
+
* Reference: ssf-wrapper-base.js loconnect methods
|
|
7
|
+
*/
|
|
8
|
+
export declare class LoConnect extends SSFBase {
|
|
9
|
+
getStateDropDownList(): Promise<StateOptionT[]>;
|
|
10
|
+
getLockStatus(fieldId: string): Promise<boolean>;
|
|
11
|
+
callCalcForLock(fieldId: string, isLocked: boolean): Promise<void>;
|
|
12
|
+
getZipCodeOptions(zip: string): Promise<Record<string, string>[] | undefined>;
|
|
13
|
+
getZipCodeOptionsWithLatLong(zip: string): Promise<Record<string, string>[] | undefined>;
|
|
14
|
+
getGTFSelectedFormDetails(): Promise<IGoToFieldDetails | null>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { IGoToFieldDetails, SSFLoanObjectT } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for SSF operations
|
|
4
|
+
* Follows the HookBase pattern - provides shared SSF initialization
|
|
5
|
+
* Reference: ssf-wrapper-base.js
|
|
6
|
+
*/
|
|
7
|
+
export type FieldValueResolverFn = (fieldId: string) => unknown;
|
|
8
|
+
export declare class SSFBase {
|
|
9
|
+
protected ssfEnabled: boolean;
|
|
10
|
+
protected initDone: boolean;
|
|
11
|
+
protected hostInstance: unknown;
|
|
12
|
+
private gtfFormDetailsCache;
|
|
13
|
+
private fieldValueResolverFn;
|
|
14
|
+
setFieldValueResolver(resolver: FieldValueResolverFn | null): void;
|
|
15
|
+
get fieldValueResolver(): FieldValueResolverFn | null;
|
|
16
|
+
constructor();
|
|
17
|
+
protected get IsLocalhost(): boolean;
|
|
18
|
+
protected get SSFLoanObject(): Promise<SSFLoanObjectT>;
|
|
19
|
+
protected initSSF(): Promise<void>;
|
|
20
|
+
protected genericCall(funcName: string, ...rest: unknown[]): Promise<unknown>;
|
|
21
|
+
getCachedGTFFormDetails(): IGoToFieldDetails | null;
|
|
22
|
+
setCachedGTFFormDetails(formDetails: IGoToFieldDetails | null): void;
|
|
23
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
export interface IGoToFieldDetails {
|
|
2
|
+
formId: string;
|
|
3
|
+
fieldId: string;
|
|
4
|
+
formName: string;
|
|
5
|
+
fileName: string;
|
|
6
|
+
fieldOcc: number;
|
|
7
|
+
}
|
|
8
|
+
export type ModelPathT = [
|
|
9
|
+
string,
|
|
10
|
+
1 | 0,
|
|
11
|
+
string,
|
|
12
|
+
string?,
|
|
13
|
+
(1 | 0)?,
|
|
14
|
+
number?,
|
|
15
|
+
[
|
|
16
|
+
string,
|
|
17
|
+
string
|
|
18
|
+
][]?,
|
|
19
|
+
(1 | 0)?
|
|
20
|
+
];
|
|
21
|
+
export type StateOptionT = {
|
|
22
|
+
name: string;
|
|
23
|
+
value: string;
|
|
24
|
+
};
|
|
25
|
+
export interface SSFLoanObjectT {
|
|
26
|
+
getField(fieldId: string): unknown;
|
|
27
|
+
setFields(fields: Record<string, unknown>): Promise<void>;
|
|
28
|
+
calculate(): Promise<void>;
|
|
29
|
+
fieldDefinitions(): Record<string, ModelPathT>;
|
|
30
|
+
isReadOnly(): Promise<boolean>;
|
|
31
|
+
resolveBaseCollectionId(fieldId: string): Promise<string>;
|
|
32
|
+
getCollectionRowIndex(fieldId: string): Promise<number>;
|
|
33
|
+
}
|
|
34
|
+
export interface ISSFAdapter {
|
|
35
|
+
/**
|
|
36
|
+
* Retrieves a single field value from the loan
|
|
37
|
+
* @param fieldId - The field identifier
|
|
38
|
+
* @returns Promise resolving to the field value
|
|
39
|
+
*/
|
|
40
|
+
getFieldValue(fieldId: string): Promise<unknown>;
|
|
41
|
+
/**
|
|
42
|
+
* Sets a single field value in the loan
|
|
43
|
+
* @param fieldId - The field identifier
|
|
44
|
+
* @param value - The value to set
|
|
45
|
+
* @returns Promise that resolves when the operation completes
|
|
46
|
+
*/
|
|
47
|
+
setFieldValue(fieldId: string, value: unknown): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Sets multiple field values in the loan (batch operation)
|
|
50
|
+
* More efficient than calling setFieldValue multiple times
|
|
51
|
+
* @param setFieldsValuesObject - Map of field IDs to their values
|
|
52
|
+
* @returns Promise that resolves when the operation completes
|
|
53
|
+
*/
|
|
54
|
+
setFieldsValues(setFieldsValuesObject: Record<string, unknown>): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Retrieves field metadata including contract paths, formats, and options
|
|
57
|
+
* @returns Promise resolving to a map of field IDs to their metadata
|
|
58
|
+
*/
|
|
59
|
+
getFieldContractPaths(): Promise<Record<string, ModelPathT>>;
|
|
60
|
+
/**
|
|
61
|
+
* Retrieves the list of US states for state dropdown fields
|
|
62
|
+
* @returns Promise resolving to an array of state options
|
|
63
|
+
*/
|
|
64
|
+
getStateDropDownList(): Promise<StateOptionT[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Checks if the current loan is in read-only mode
|
|
67
|
+
* @returns Promise resolving to true if loan is read-only
|
|
68
|
+
*/
|
|
69
|
+
isReadOnlyLoan(): Promise<boolean>;
|
|
70
|
+
/**
|
|
71
|
+
* Retrieves the lock status of a specific field
|
|
72
|
+
* @param fieldId - The field identifier
|
|
73
|
+
* @returns Promise resolving to true if field is locked
|
|
74
|
+
*/
|
|
75
|
+
getLockStatus(fieldId: string): Promise<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* Triggers calculation for a locked field
|
|
78
|
+
* @param fieldId - The field identifier
|
|
79
|
+
* @param isLocked - Whether the field is locked
|
|
80
|
+
* @returns Promise that resolves when calculation completes
|
|
81
|
+
*/
|
|
82
|
+
callCalcForLock(fieldId: string, isLocked: boolean): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Retrieves Go-To-Field (GTF) selected form details
|
|
85
|
+
* Used for field navigation and context
|
|
86
|
+
* @returns Promise resolving to form details or null
|
|
87
|
+
*/
|
|
88
|
+
getGTFSelectedFormDetails(): Promise<IGoToFieldDetails | null>;
|
|
89
|
+
/**
|
|
90
|
+
* Gets cached GTF selected form details
|
|
91
|
+
* @returns Cached form details or null if not cached
|
|
92
|
+
*/
|
|
93
|
+
getCachedGTFFormDetails(): IGoToFieldDetails | null;
|
|
94
|
+
/**
|
|
95
|
+
* Sets cached GTF selected form details
|
|
96
|
+
* @param formDetails - Form details to cache, or null to clear cache
|
|
97
|
+
*/
|
|
98
|
+
setCachedGTFFormDetails(formDetails: IGoToFieldDetails | null): void;
|
|
99
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { UseNumberMaskT } from '@elliemae/ds-form-helpers-mask-hooks';
|
|
2
|
+
export interface IFormatter<T = unknown, U = unknown> {
|
|
3
|
+
format(input: unknown, formatOptions?: T): unknown;
|
|
4
|
+
parse(input: unknown, parseOptions?: U): unknown;
|
|
5
|
+
}
|
|
6
|
+
export interface IValidationResult {
|
|
7
|
+
isValid: boolean;
|
|
8
|
+
message?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Conditional type that provides specific validation options based on validator type
|
|
12
|
+
*/
|
|
13
|
+
export type ValidationOptionsT<T extends string> = T extends 'date' ? {
|
|
14
|
+
dateFormat: string;
|
|
15
|
+
} : T extends 'maxChar' ? {
|
|
16
|
+
charsLimit: number;
|
|
17
|
+
} : Record<string, unknown>;
|
|
18
|
+
export interface IValidator {
|
|
19
|
+
validate(value: unknown, message?: string, options?: ValidationOptionsT<string>): IValidationResult;
|
|
20
|
+
}
|
|
21
|
+
export interface IValidationRule {
|
|
22
|
+
type: string;
|
|
23
|
+
message?: string;
|
|
24
|
+
options?: ValidationOptionsT<string>;
|
|
25
|
+
}
|
|
26
|
+
export interface IValidatePayload {
|
|
27
|
+
fieldValue: unknown;
|
|
28
|
+
validationRules: Array<IValidationRule>;
|
|
29
|
+
}
|
|
30
|
+
export interface IValidatorFactory {
|
|
31
|
+
createValidator(type: string): IValidator;
|
|
32
|
+
runValidators(rules: Array<IValidationRule>, value: unknown): IValidationResult;
|
|
33
|
+
}
|
|
34
|
+
export interface INumberFormatOptions {
|
|
35
|
+
fieldFormat: string;
|
|
36
|
+
numberOptions?: Omit<UseNumberMaskT.Props, 'valueSetter' | 'decimalPlaces' | 'decimalRequired'>;
|
|
37
|
+
}
|
|
38
|
+
export interface INumberParseOptions {
|
|
39
|
+
fieldFormat: string;
|
|
40
|
+
unmaskPattern?: RegExp;
|
|
41
|
+
}
|
|
42
|
+
export interface IPhoneFormatOptions {
|
|
43
|
+
isInternational?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface IPhoneParseOptions {
|
|
46
|
+
unmaskPattern?: RegExp;
|
|
47
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IValidator, IValidationResult, ValidationOptionsT } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* DateValidator validates date values using moment.js
|
|
4
|
+
* Supports custom date formats and provides meaningful error messages
|
|
5
|
+
*/
|
|
6
|
+
declare class DateValidator implements IValidator {
|
|
7
|
+
/**
|
|
8
|
+
* Validate if the given value is a valid date
|
|
9
|
+
* @param {unknown} value - The date value to validate
|
|
10
|
+
* @param {string} [message] - Custom error message
|
|
11
|
+
* @param {ValidationOptionsT<'date'>} [options] - Validation options including dateFormat for strict checking
|
|
12
|
+
* @returns {IValidationResult} Validation result with isValid flag and optional message
|
|
13
|
+
*/
|
|
14
|
+
validate(value: unknown, message?: string, options?: ValidationOptionsT<'date'>): IValidationResult;
|
|
15
|
+
}
|
|
16
|
+
export { DateValidator };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IValidator, IValidatorFactory, IValidationResult, IValidationRule } from '../../types';
|
|
2
|
+
declare class ValidatorFactory implements IValidatorFactory {
|
|
3
|
+
private registry;
|
|
4
|
+
/**
|
|
5
|
+
* Cache for validator instances by type
|
|
6
|
+
* Since validators are stateless, we can safely reuse instances
|
|
7
|
+
*/
|
|
8
|
+
private validatorCache;
|
|
9
|
+
constructor();
|
|
10
|
+
private initBuiltInValidators;
|
|
11
|
+
createValidator(type: string): IValidator;
|
|
12
|
+
registerValidator(type: string, validatorClass: new () => IValidator): void;
|
|
13
|
+
runValidators(rules: Array<IValidationRule>, value: unknown): IValidationResult;
|
|
14
|
+
}
|
|
15
|
+
export { ValidatorFactory };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Base } from '@elliemae/encw-core';
|
|
2
|
+
declare class Core extends Base {
|
|
3
|
+
get CoreUtils(): {
|
|
4
|
+
Functions: import("@elliemae/encw-core/dist/types/lib/Utilities/Functions").Functions;
|
|
5
|
+
Objects: import("@elliemae/encw-core/dist/types/lib/Utilities/Objects").Objects;
|
|
6
|
+
Random: import("@elliemae/encw-core/dist/types/lib/Utilities/Random").Random;
|
|
7
|
+
Strings: import("@elliemae/encw-core/dist/types/lib/Utilities/Strings").Strings;
|
|
8
|
+
Validate: import("@elliemae/encw-core/dist/types/lib/Utilities/Validate").Validate;
|
|
9
|
+
};
|
|
10
|
+
get ExceptionUtils(): {
|
|
11
|
+
businessException: <T extends Record<string, unknown> | string>(message: string, cause?: T | undefined) => {
|
|
12
|
+
type: "AuthenticationException" | "AuthorizationException" | "BusinessException" | "DatabaseException" | "NetworkException" | "RuntimeException" | "ValidationException" | "CustomException";
|
|
13
|
+
name: string;
|
|
14
|
+
message: string;
|
|
15
|
+
stack?: string;
|
|
16
|
+
cause?: unknown;
|
|
17
|
+
};
|
|
18
|
+
runtimeException: <T extends Record<string, unknown> | string>(message: string, cause?: T | undefined) => {
|
|
19
|
+
type: "AuthenticationException" | "AuthorizationException" | "BusinessException" | "DatabaseException" | "NetworkException" | "RuntimeException" | "ValidationException" | "CustomException";
|
|
20
|
+
name: string;
|
|
21
|
+
message: string;
|
|
22
|
+
stack?: string;
|
|
23
|
+
cause?: unknown;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
Log<T extends object | Error>(type: 'log' | 'warn' | 'error', message: string, additionalData?: T): void | (() => void);
|
|
27
|
+
}
|
|
28
|
+
declare const coreInstance: Core;
|
|
29
|
+
export { coreInstance, Core };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NumberRendererPropsT, RendererPropsT, DateRendererPropsT } from '../renderer/types';
|
|
2
|
+
export declare class Config {
|
|
3
|
+
static getTextFields(): RendererPropsT[];
|
|
4
|
+
static getNumberFields(): NumberRendererPropsT[];
|
|
5
|
+
static getCheckboxFields(): RendererPropsT[];
|
|
6
|
+
static getRadioButtonFields(): RendererPropsT[];
|
|
7
|
+
static getDateFields(): DateRendererPropsT[];
|
|
8
|
+
static getLargeTextField(): RendererPropsT[];
|
|
9
|
+
static getToggleFields(): RendererPropsT[];
|
|
10
|
+
static getRendererConfigs(): RendererPropsT[];
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Demo: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FieldMetadataT } from '../../types';
|
|
2
|
+
import { HookBase } from './hookBase';
|
|
3
|
+
export declare class FieldDisabled extends HookBase {
|
|
4
|
+
protected isLoanReadonly(): Promise<boolean>;
|
|
5
|
+
useFieldDisabled({ fieldId, metadata, isLockedState, }: {
|
|
6
|
+
fieldId: string;
|
|
7
|
+
metadata: FieldMetadataT;
|
|
8
|
+
isLockedState?: boolean;
|
|
9
|
+
}): boolean;
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FieldMetadataT } from '../../types';
|
|
2
|
+
import { HookBase } from './hookBase';
|
|
3
|
+
export declare class FieldMeta extends HookBase {
|
|
4
|
+
protected getMetadata(fieldId: string): Promise<FieldMetadataT>;
|
|
5
|
+
private lookupFieldData;
|
|
6
|
+
private transformContractPath;
|
|
7
|
+
private buildFieldMetadata;
|
|
8
|
+
private handleMetadataError;
|
|
9
|
+
private fetchStateOptions;
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IValidationResult, IValidationRule } from '../../../bll/types';
|
|
2
|
+
import { HookBase } from './hookBase';
|
|
3
|
+
export declare class FieldValidation extends HookBase {
|
|
4
|
+
runValidationsOnValue(value: unknown, validationRules: Array<IValidationRule>, customValidation?: (value: unknown) => void): IValidationResult;
|
|
5
|
+
protected useFieldValidation(): {
|
|
6
|
+
validationResult: IValidationResult | null;
|
|
7
|
+
setValidationResult: import("react").Dispatch<import("react").SetStateAction<IValidationResult | null>>;
|
|
8
|
+
};
|
|
9
|
+
}
|