@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,325 @@
|
|
|
1
|
+
import { DSButtonV3T } from '@elliemae/ds-button-v2';
|
|
2
|
+
import { DSFormLayoutBlockItemT } from '@elliemae/ds-form-layout-blocks';
|
|
3
|
+
import { DSAutocompleteT, DSComboboxT, DSControlledRadioT, DSInputTextT } from '@elliemae/ds-controlled-form';
|
|
4
|
+
import { DSControlledCheckboxT } from '@elliemae/ds-form-checkbox';
|
|
5
|
+
import { DSControlledToggleT } from '@elliemae/ds-form-toggle';
|
|
6
|
+
import { UseNumberMaskT } from '@elliemae/ds-form-helpers-mask-hooks';
|
|
7
|
+
import { DSControlledDateTimePickerT } from '@elliemae/ds-form-date-time-picker';
|
|
8
|
+
import { DSControlledLargeTextInput } from '@elliemae/ds-form-input-textarea';
|
|
9
|
+
import { IValidationResult, IValidationRule } from '../bll/types';
|
|
10
|
+
import { FormatterAcronymMap } from '../bll/formatters/factory';
|
|
11
|
+
type DSControlledLargeTextInputPropsT = React.ComponentProps<typeof DSControlledLargeTextInput>;
|
|
12
|
+
export type FormatterAcronym = keyof FormatterAcronymMap;
|
|
13
|
+
export type FormatterType = 'integer' | 'decimal2' | 'decimal3' | 'decimal4' | 'phone' | 'regex' | 'ssn' | 'zip' | 'date' | 'datetime' | 'boolean' | 'text';
|
|
14
|
+
export type FieldOptionsT = {
|
|
15
|
+
dsId?: string;
|
|
16
|
+
type: string;
|
|
17
|
+
label: string;
|
|
18
|
+
value: string;
|
|
19
|
+
};
|
|
20
|
+
export type FieldMetadataT = {
|
|
21
|
+
contractPath: string;
|
|
22
|
+
isNullable: boolean;
|
|
23
|
+
fieldFormat: string;
|
|
24
|
+
description: string;
|
|
25
|
+
isReadOnly: boolean;
|
|
26
|
+
maxLength?: number;
|
|
27
|
+
isLockField?: boolean;
|
|
28
|
+
fieldOptions?: FieldOptionsT[];
|
|
29
|
+
};
|
|
30
|
+
export type RendererType = 'text' | 'number';
|
|
31
|
+
export type AddonPropsT = {
|
|
32
|
+
Icon?: React.ReactNode;
|
|
33
|
+
} & Omit<DSButtonV3T.Props, 'onClick'>;
|
|
34
|
+
export interface ICoreRendererProps {
|
|
35
|
+
fieldId: string;
|
|
36
|
+
label?: string;
|
|
37
|
+
id?: string;
|
|
38
|
+
onBlur?: (fieldId: string, value: unknown) => void;
|
|
39
|
+
onChange?: (fieldId: string, value: unknown) => void;
|
|
40
|
+
autoFieldSet?: boolean;
|
|
41
|
+
isDisable?: boolean;
|
|
42
|
+
isHidden?: boolean;
|
|
43
|
+
brCompProps?: Omit<DSFormLayoutBlockItemT.Props, 'children' | 'label' | 'value'>;
|
|
44
|
+
forceRefresh?: boolean;
|
|
45
|
+
validationRules?: Array<IValidationRule>;
|
|
46
|
+
rightAddon?: React.ReactNode;
|
|
47
|
+
}
|
|
48
|
+
export type RendererTypesT = 'text' | 'number' | 'email' | 'checkbox' | 'toggle' | 'radio' | 'radiogroup' | 'addon' | 'dropdown' | 'date' | 'zipcode' | 'largetext';
|
|
49
|
+
export type TextRendererPropsT = {
|
|
50
|
+
rendererType: 'text';
|
|
51
|
+
maskType?: 'Phone' | 'SSN';
|
|
52
|
+
formatFn?: (value: unknown, metadata?: FieldMetadataT) => string;
|
|
53
|
+
parseFn?: (displayValue: string, metadata?: FieldMetadataT) => unknown;
|
|
54
|
+
} & ICoreRendererProps & {
|
|
55
|
+
extra?: Omit<DSInputTextT.Props, 'onChange' | 'onBlur' | 'value'>;
|
|
56
|
+
};
|
|
57
|
+
export type NumberRendererPropsT = {
|
|
58
|
+
rendererType: 'number';
|
|
59
|
+
} & ICoreRendererProps & {
|
|
60
|
+
numberMaskOptions?: Omit<UseNumberMaskT.Props, 'valueSetter' | 'decimalPlaces' | 'decimalRequired'>;
|
|
61
|
+
} & {
|
|
62
|
+
extra?: Omit<DSInputTextT.Props, 'onChange' | 'onBlur' | 'value'>;
|
|
63
|
+
};
|
|
64
|
+
export type EmailRendererPropsT = {
|
|
65
|
+
rendererType: 'email';
|
|
66
|
+
formatFn?: (value: unknown, metadata?: FieldMetadataT) => string;
|
|
67
|
+
parseFn?: (displayValue: string, metadata?: FieldMetadataT) => unknown;
|
|
68
|
+
} & ICoreRendererProps & {
|
|
69
|
+
extra?: Omit<DSInputTextT.Props, 'onChange' | 'onBlur' | 'value'>;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* LargeTextRenderer props - Multi-line textarea for comments and large text fields.
|
|
73
|
+
* Migrated from CommentComponent with full feature parity.
|
|
74
|
+
*/
|
|
75
|
+
export type LargeTextRendererPropsT = Omit<ICoreRendererProps, 'brCompProps'> & {
|
|
76
|
+
rendererType: 'largetext';
|
|
77
|
+
/** Number of visible text rows (default: '3') */
|
|
78
|
+
rows?: string;
|
|
79
|
+
/**
|
|
80
|
+
* External value to sync with the field.
|
|
81
|
+
* When changed, the field value will update to match.
|
|
82
|
+
* Mirrors CommentComponent's txtFieldValue behavior.
|
|
83
|
+
*/
|
|
84
|
+
externalValue?: string;
|
|
85
|
+
brCompProps?: Omit<DSFormLayoutBlockItemT.Props, 'children' | 'label' | 'value' | 'maxCharCounter'>;
|
|
86
|
+
/** Additional props to pass to DSControlledLargeTextInput */
|
|
87
|
+
extra?: Omit<DSControlledLargeTextInputPropsT, 'onChange' | 'onBlur' | 'value'>;
|
|
88
|
+
} & ({
|
|
89
|
+
maxCharactersDisplay: true;
|
|
90
|
+
maxCharCounter: number;
|
|
91
|
+
maxCharExceededMessage?: string;
|
|
92
|
+
} | {
|
|
93
|
+
maxCharactersDisplay?: false;
|
|
94
|
+
maxCharCounter?: never;
|
|
95
|
+
maxCharExceededMessage?: never;
|
|
96
|
+
});
|
|
97
|
+
export type CheckboxRendererPropsT = {
|
|
98
|
+
rendererType: 'checkbox';
|
|
99
|
+
} & Omit<ICoreRendererProps, 'isPadLock' | 'onChange'> & {
|
|
100
|
+
extra?: Omit<DSControlledCheckboxT.Props, 'value'>;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* ToggleRenderer props - Boolean toggle switch for on/off states.
|
|
104
|
+
* Follows the same pattern as CheckboxRenderer for boolean field handling.
|
|
105
|
+
* Migrated from toggle-button.tsx with full feature parity.
|
|
106
|
+
*/
|
|
107
|
+
export type ToggleRendererPropsT = {
|
|
108
|
+
rendererType: 'toggle';
|
|
109
|
+
size?: DSControlledToggleT.Props['size'];
|
|
110
|
+
} & Pick<ICoreRendererProps, 'fieldId' | 'id' | 'label' | 'isDisable' | 'onChange' | 'brCompProps' | 'forceRefresh'> & {
|
|
111
|
+
extra?: Omit<DSControlledToggleT.Props, 'onChange'>;
|
|
112
|
+
};
|
|
113
|
+
export type DropdownRendererPropsT = {
|
|
114
|
+
rendererType: 'dropdown';
|
|
115
|
+
} & ICoreRendererProps & {
|
|
116
|
+
options?: FieldOptionsT[];
|
|
117
|
+
/**
|
|
118
|
+
* When true, allows user to create new option values that are not present in existing list.
|
|
119
|
+
*/
|
|
120
|
+
isEditable?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Callback fired after a new option is created via editable dropdown. Provides fieldId and new value.
|
|
123
|
+
*/
|
|
124
|
+
onCreate?: (fieldId: string, value: string) => void;
|
|
125
|
+
extra?: Omit<DSComboboxT.Props, 'onChange' | 'onBlur' | 'value' | 'selectedValues' | 'allOptions' | 'onCreate'>;
|
|
126
|
+
};
|
|
127
|
+
export type DateRendererPropsT = {
|
|
128
|
+
rendererType: 'date';
|
|
129
|
+
/** Optional display date format (default MM/DD/YYYY). */
|
|
130
|
+
dateFormat?: string;
|
|
131
|
+
} & ICoreRendererProps & {
|
|
132
|
+
extra?: Omit<DSControlledDateTimePickerT.Props, 'onDateChange' | 'onBlur' | 'date' | 'type'>;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* City data returned from zip code lookup APIs.
|
|
136
|
+
* Supports two formats:
|
|
137
|
+
* - Standard format (City/State/County) from getZipCodeOptions
|
|
138
|
+
* - Lat/long format (city/state/county + latitude/longitude) from getZipCodeOptionsWithLatLong
|
|
139
|
+
*/
|
|
140
|
+
export type ZipCodeCityDataT = {
|
|
141
|
+
city?: string;
|
|
142
|
+
county?: string;
|
|
143
|
+
state?: string;
|
|
144
|
+
latitude?: string;
|
|
145
|
+
longitude?: string;
|
|
146
|
+
City?: string;
|
|
147
|
+
County?: string;
|
|
148
|
+
State?: string;
|
|
149
|
+
};
|
|
150
|
+
export type ZipCodeOptionT = DSAutocompleteT.ItemOption & {
|
|
151
|
+
zipNumber: string;
|
|
152
|
+
cityData: ZipCodeCityDataT | null;
|
|
153
|
+
};
|
|
154
|
+
export type ZipCodeSectionOptionT = DSAutocompleteT.ItemSectionOptions & {
|
|
155
|
+
zipNumber: string;
|
|
156
|
+
cityData: ZipCodeCityDataT | null;
|
|
157
|
+
};
|
|
158
|
+
export type ZipCodeAutocompleteOptionT = ZipCodeOptionT | ZipCodeSectionOptionT;
|
|
159
|
+
/**
|
|
160
|
+
* Address-related field IDs for auto-updating related address fields.
|
|
161
|
+
* When zip code lookup completes, these fields will be automatically updated.
|
|
162
|
+
*/
|
|
163
|
+
export type GeoFields = {
|
|
164
|
+
/** Optional: Field ID for city */
|
|
165
|
+
city?: string;
|
|
166
|
+
/** Optional: Field ID for state */
|
|
167
|
+
state?: string;
|
|
168
|
+
/** Optional: Field ID for county */
|
|
169
|
+
county?: string;
|
|
170
|
+
/** Optional: Field ID for zip/postal code */
|
|
171
|
+
zip?: string;
|
|
172
|
+
/** Optional: Field ID for country (auto-set to 'US' for non-foreign addresses) */
|
|
173
|
+
country?: string;
|
|
174
|
+
};
|
|
175
|
+
export type ZipCodeRendererPropsT = {
|
|
176
|
+
rendererType: 'zipcode';
|
|
177
|
+
/** If true, renders as plain text input without autocomplete */
|
|
178
|
+
isForeignAddress?: boolean;
|
|
179
|
+
/**
|
|
180
|
+
* Optional callback when address is updated.
|
|
181
|
+
* Called after zip code lookup completes (single match) or user selects from dropdown.
|
|
182
|
+
* @param zipCode - The selected zip code
|
|
183
|
+
* @param cityData - City data including city, state, county, and optionally latitude/longitude
|
|
184
|
+
* Format depends on useLatLong flag:
|
|
185
|
+
* - useLatLong=false: {City, State, County} (capitalized)
|
|
186
|
+
* - useLatLong=true: {city, state, county, latitude, longitude} (lowercase + coords)
|
|
187
|
+
* @example
|
|
188
|
+
* // Access latitude/longitude
|
|
189
|
+
* onGeoLookupComplete={(zip, cityData) => {
|
|
190
|
+
* console.log(cityData.latitude, cityData.longitude);
|
|
191
|
+
* setFormState({ ...formState, lat: cityData.latitude, lng: cityData.longitude });
|
|
192
|
+
* }}
|
|
193
|
+
*/
|
|
194
|
+
onGeoLookupComplete?: (zipCode: string, cityData: ZipCodeCityDataT) => void;
|
|
195
|
+
/**
|
|
196
|
+
* If true, fetches zip data with latitude/longitude coordinates.
|
|
197
|
+
* When enabled, cityData will include latitude and longitude fields.
|
|
198
|
+
* Use this for features like home counseling that need geographic coordinates.
|
|
199
|
+
*/
|
|
200
|
+
useLatLong?: boolean;
|
|
201
|
+
/**
|
|
202
|
+
* Optional: Cohesive object containing field IDs for auto-updating related address fields.
|
|
203
|
+
* When provided, city/state/county fields will be automatically updated via SSF after zip lookup.
|
|
204
|
+
* This provides a cleaner, more maintainable API than individual field ID props.
|
|
205
|
+
* @example
|
|
206
|
+
* geoFields={{ city: '11', state: '14', county: '13' }}
|
|
207
|
+
*/
|
|
208
|
+
geoFields?: GeoFields;
|
|
209
|
+
} & ICoreRendererProps & {
|
|
210
|
+
extra?: Omit<DSInputTextT.Props, 'onChange' | 'onBlur' | 'value'>;
|
|
211
|
+
};
|
|
212
|
+
export type DebounceOptionsT = {
|
|
213
|
+
leading?: boolean;
|
|
214
|
+
};
|
|
215
|
+
export type RadioRendererPropsT = {
|
|
216
|
+
rendererType: 'radio';
|
|
217
|
+
} & Omit<ICoreRendererProps, 'isPadLock' | 'onChange' | 'onBlur'> & {
|
|
218
|
+
name?: string;
|
|
219
|
+
value: unknown;
|
|
220
|
+
onSelect?: (fieldId: string, value: unknown) => void;
|
|
221
|
+
} & {
|
|
222
|
+
extra?: Omit<DSControlledRadioT.Props, 'onChange' | 'value' | 'onSelect' | 'name'>;
|
|
223
|
+
};
|
|
224
|
+
export type FormatOptions<T extends string> = T extends 'number' ? {
|
|
225
|
+
numberMaskOptions?: Omit<UseNumberMaskT.Props, 'valueSetter' | 'decimalPlaces' | 'decimalRequired'>;
|
|
226
|
+
} : T extends 'phone' ? {
|
|
227
|
+
isInternational?: boolean;
|
|
228
|
+
} : Record<string, never>;
|
|
229
|
+
export type RadioGroupRendererPropsT = {
|
|
230
|
+
rendererType: 'radiogroup';
|
|
231
|
+
} & Omit<ICoreRendererProps, 'isPadLock' | 'onChange' | 'onBlur'> & {
|
|
232
|
+
groupName?: string;
|
|
233
|
+
direction?: 'vertical' | 'horizontal';
|
|
234
|
+
wrapLabel?: boolean;
|
|
235
|
+
options?: RadioOptionsT[];
|
|
236
|
+
ariaGroupLabel?: string;
|
|
237
|
+
onSelect?: (fieldId: string, value: string) => void;
|
|
238
|
+
};
|
|
239
|
+
export type RadioOptionsT = {
|
|
240
|
+
id: string;
|
|
241
|
+
label: string;
|
|
242
|
+
value: string;
|
|
243
|
+
} & {
|
|
244
|
+
extra?: Omit<DSControlledRadioT.Props, 'onChange' | 'value' | 'onSelect'>;
|
|
245
|
+
};
|
|
246
|
+
export type AddonRendererPropsT = {
|
|
247
|
+
rendererType: 'addon';
|
|
248
|
+
} & {
|
|
249
|
+
fieldId: string;
|
|
250
|
+
label?: never;
|
|
251
|
+
isPadLock?: boolean;
|
|
252
|
+
isLocked?: boolean;
|
|
253
|
+
isDisable?: boolean;
|
|
254
|
+
rightAddon?: React.ReactNode;
|
|
255
|
+
validationRules?: Array<IValidationRule>;
|
|
256
|
+
children: React.ReactNode;
|
|
257
|
+
forceRefresh?: boolean;
|
|
258
|
+
onPadLockToggle?: () => void;
|
|
259
|
+
};
|
|
260
|
+
export type RendererPropsT = TextRendererPropsT | NumberRendererPropsT | EmailRendererPropsT | LargeTextRendererPropsT | CheckboxRendererPropsT | ToggleRendererPropsT | RadioRendererPropsT | AddonRendererPropsT | RadioGroupRendererPropsT | DropdownRendererPropsT | DateRendererPropsT | ZipCodeRendererPropsT;
|
|
261
|
+
export interface LoanChangeEventParams {
|
|
262
|
+
fieldID: string;
|
|
263
|
+
oldVal: string | number | null;
|
|
264
|
+
newVal: string | number | null;
|
|
265
|
+
}
|
|
266
|
+
export type FieldMetaResultT = {
|
|
267
|
+
fieldMetadata: FieldMetadataT;
|
|
268
|
+
};
|
|
269
|
+
export type FieldSearchResultT = {
|
|
270
|
+
isSearchedField: boolean;
|
|
271
|
+
setIsSearchedField: React.Dispatch<React.SetStateAction<boolean>>;
|
|
272
|
+
};
|
|
273
|
+
export type FieldValueResultT = {
|
|
274
|
+
fieldValue: unknown;
|
|
275
|
+
setFieldValue: React.Dispatch<React.SetStateAction<unknown>>;
|
|
276
|
+
};
|
|
277
|
+
export type FieldValidationResultT = {
|
|
278
|
+
validationResult: IValidationResult | null;
|
|
279
|
+
setValidationResult: React.Dispatch<React.SetStateAction<IValidationResult | null>>;
|
|
280
|
+
};
|
|
281
|
+
export type ViewModelT = FieldMetaResultT & FieldValueResultT & FieldValidationResultT & FieldSearchResultT & {
|
|
282
|
+
isLockedState: boolean;
|
|
283
|
+
setIsLockedState: React.Dispatch<React.SetStateAction<boolean>>;
|
|
284
|
+
isFieldDisabled: boolean;
|
|
285
|
+
ariaDescProps: AriaDescT;
|
|
286
|
+
};
|
|
287
|
+
export interface IRendererValidateParams {
|
|
288
|
+
rendererType: string;
|
|
289
|
+
fieldFormat: string;
|
|
290
|
+
fieldId: string;
|
|
291
|
+
metadata: FieldMetadataT;
|
|
292
|
+
}
|
|
293
|
+
export type FormattingOptionsT = {
|
|
294
|
+
rendererType: RendererTypesT;
|
|
295
|
+
maskType?: 'Phone' | 'SSN';
|
|
296
|
+
numberMaskOptions?: Omit<UseNumberMaskT.Props, 'valueSetter'>;
|
|
297
|
+
dateFormat?: string;
|
|
298
|
+
};
|
|
299
|
+
export type FieldValueParamsT = {
|
|
300
|
+
fieldId: string;
|
|
301
|
+
fieldFormat: string;
|
|
302
|
+
options: FormattingOptionsT;
|
|
303
|
+
};
|
|
304
|
+
export type ParsingOptionsT = {
|
|
305
|
+
rendererType: RendererTypesT;
|
|
306
|
+
maskType?: 'Phone' | 'SSN';
|
|
307
|
+
unmaskPattern?: RegExp;
|
|
308
|
+
dateFormat?: string;
|
|
309
|
+
};
|
|
310
|
+
export type AriaDescT = {
|
|
311
|
+
'aria-label': string;
|
|
312
|
+
} | {
|
|
313
|
+
'aria-description': string;
|
|
314
|
+
};
|
|
315
|
+
export type VMConfigT = {
|
|
316
|
+
fieldId: string;
|
|
317
|
+
label?: string;
|
|
318
|
+
rendererType: RendererTypesT;
|
|
319
|
+
maskType?: 'Phone' | 'SSN';
|
|
320
|
+
numberMaskOptions?: Omit<UseNumberMaskT.Props, 'valueSetter'>;
|
|
321
|
+
dateFormat?: string;
|
|
322
|
+
validationRules?: Array<IValidationRule>;
|
|
323
|
+
forceRefresh?: boolean;
|
|
324
|
+
};
|
|
325
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IFlowMock, TFlow } from '@elliemae/flow-driven-testing';
|
|
2
|
+
export type FlowParams = {
|
|
3
|
+
inboundFlow: string;
|
|
4
|
+
outboundFlow?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare abstract class FlowBase {
|
|
7
|
+
flowParams: FlowParams;
|
|
8
|
+
protected constructor(flowParams: FlowParams);
|
|
9
|
+
protected setTimeoutAwaitable(timeout?: number): Promise<void>;
|
|
10
|
+
abstract get Flows(): TFlow;
|
|
11
|
+
protected getFlowName(rendererName: string, description: string): string;
|
|
12
|
+
static get Mocks(): IFlowMock;
|
|
13
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TFlow } from '@elliemae/flow-driven-testing';
|
|
2
|
+
import { FlowBase, FlowParams } from '../base/flowBase';
|
|
3
|
+
export declare class CheckboxRendererFlows extends FlowBase {
|
|
4
|
+
flowParams: FlowParams;
|
|
5
|
+
constructor(flowParams: FlowParams);
|
|
6
|
+
private UpdateCheckboxStatus;
|
|
7
|
+
private CheckCheckboxDisabled;
|
|
8
|
+
get Flows(): TFlow;
|
|
9
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { TFlow } from '@elliemae/flow-driven-testing';
|
|
2
|
+
import { FlowBase, FlowParams } from '../base/flowBase';
|
|
3
|
+
/**
|
|
4
|
+
* DateRendererFlows - Comprehensive end-to-end test flows for DateRenderer.
|
|
5
|
+
*
|
|
6
|
+
* Test Coverage:
|
|
7
|
+
* 1. Basic date field rendering verification
|
|
8
|
+
* 2. Date input and blur event handling
|
|
9
|
+
* 3. Value persistence after date change (SSF setFields called)
|
|
10
|
+
* 4. Date format display (MM/DD/YYYY)
|
|
11
|
+
* 5. onBlur validation execution
|
|
12
|
+
* 6. Empty/null value handling
|
|
13
|
+
* 7. Second date field rendering and value entry
|
|
14
|
+
* 8. Date field can be cleared
|
|
15
|
+
* 9. Multiple date value changes
|
|
16
|
+
* 10. Invalid/partial date input resets field and sends null to SSF
|
|
17
|
+
* 11. Invalid date input does not show validation error message
|
|
18
|
+
* 12. Date format option handling (configurable dateFormat prop)
|
|
19
|
+
* 13. Disabled date field - input should be blocked
|
|
20
|
+
* 14. autoFieldSet=false - SSF setFields not called, onBlur still fires
|
|
21
|
+
* 15. Field without onChange callback
|
|
22
|
+
* 16. onDateChange event handler coverage
|
|
23
|
+
*/
|
|
24
|
+
export declare class DateRendererFlows extends FlowBase {
|
|
25
|
+
flowParams: FlowParams;
|
|
26
|
+
constructor(flowParams: FlowParams);
|
|
27
|
+
/**
|
|
28
|
+
* Test 1: Verify date field renders correctly
|
|
29
|
+
*/
|
|
30
|
+
private CheckDateRendering;
|
|
31
|
+
/**
|
|
32
|
+
* Test 2: Enter a date value and verify it persists
|
|
33
|
+
*/
|
|
34
|
+
private CheckDateInputValue;
|
|
35
|
+
/**
|
|
36
|
+
* Test 3: Verify onBlur triggers SSF setFields
|
|
37
|
+
*/
|
|
38
|
+
private CheckDateOnBlur;
|
|
39
|
+
/**
|
|
40
|
+
* Test 4: Verify empty date value handling
|
|
41
|
+
*/
|
|
42
|
+
private CheckDateEmptyValue;
|
|
43
|
+
/**
|
|
44
|
+
* Test 5: Verify second date field exists and works
|
|
45
|
+
*/
|
|
46
|
+
private CheckSecondDateField;
|
|
47
|
+
/**
|
|
48
|
+
* Test 6: Enter value in second date field
|
|
49
|
+
*/
|
|
50
|
+
private CheckSecondDateValue;
|
|
51
|
+
/**
|
|
52
|
+
* Test 7: Verify date field can be cleared
|
|
53
|
+
*/
|
|
54
|
+
private CheckDateClearValue;
|
|
55
|
+
/**
|
|
56
|
+
* Test 8: Multiple date value changes - use individual inputs to trigger onDateChange
|
|
57
|
+
*/
|
|
58
|
+
private CheckDateMultipleChanges;
|
|
59
|
+
/**
|
|
60
|
+
* Test 9: Final state verification
|
|
61
|
+
*/
|
|
62
|
+
private CheckDateFinalState;
|
|
63
|
+
/**
|
|
64
|
+
* Test 10: Invalid/partial date input resets field and sends null to SSF
|
|
65
|
+
*/
|
|
66
|
+
private CheckInvalidDateResetsField;
|
|
67
|
+
/**
|
|
68
|
+
* Test 11: Partial date input resets field
|
|
69
|
+
*/
|
|
70
|
+
private CheckPartialDateResetsField;
|
|
71
|
+
/**
|
|
72
|
+
* Test 12: Invalid date input does not show validation error message
|
|
73
|
+
*/
|
|
74
|
+
private CheckInvalidDateNoErrorMessage;
|
|
75
|
+
/**
|
|
76
|
+
* Test 13: Date format option - default MM/DD/YYYY format
|
|
77
|
+
*/
|
|
78
|
+
private CheckDateFormatOptionDefault;
|
|
79
|
+
/**
|
|
80
|
+
* Test 14: Valid date entry after invalid - ensures field recovers correctly
|
|
81
|
+
*/
|
|
82
|
+
private CheckValidDateAfterInvalid;
|
|
83
|
+
/**
|
|
84
|
+
* Test 15: Final complete state verification
|
|
85
|
+
*/
|
|
86
|
+
private CheckDateFinalStateComplete;
|
|
87
|
+
/**
|
|
88
|
+
* Test 16: Disabled date field - input should be blocked
|
|
89
|
+
*/
|
|
90
|
+
private CheckDisabledDateField;
|
|
91
|
+
/**
|
|
92
|
+
* Test 17: Disabled date field - blur should not trigger update
|
|
93
|
+
*/
|
|
94
|
+
private CheckDisabledDateNoUpdate;
|
|
95
|
+
/**
|
|
96
|
+
* Test 18: autoFieldSet=false - onBlur fires but SSF setFields skipped
|
|
97
|
+
*/
|
|
98
|
+
private CheckAutoFieldSetFalse;
|
|
99
|
+
/**
|
|
100
|
+
* Test 19: autoFieldSet=false - valid date entry with manual handling
|
|
101
|
+
*/
|
|
102
|
+
private CheckAutoFieldSetFalseBlur;
|
|
103
|
+
/**
|
|
104
|
+
* Test 20: onDateChange event - value changes via individual date inputs
|
|
105
|
+
*/
|
|
106
|
+
private CheckOnDateChangeEvent;
|
|
107
|
+
/**
|
|
108
|
+
* Test 21: Date change without onChange callback (field 763 has no onChange)
|
|
109
|
+
*/
|
|
110
|
+
private CheckDateChangeWithoutOnChange;
|
|
111
|
+
/**
|
|
112
|
+
* Test 22: Date change with onChange callback (field 748 has onChange)
|
|
113
|
+
*/
|
|
114
|
+
private CheckDateWithOnChangeCallback;
|
|
115
|
+
/**
|
|
116
|
+
* Test 23: All date fields final state verification
|
|
117
|
+
*/
|
|
118
|
+
private CheckAllDateFieldsFinalState;
|
|
119
|
+
get Flows(): TFlow;
|
|
120
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { TFlow } from '@elliemae/flow-driven-testing';
|
|
2
|
+
import { FlowBase, FlowParams } from '../base/flowBase';
|
|
3
|
+
/**
|
|
4
|
+
* DropdownRendererFlows - Comprehensive end-to-end test flows for DropdownRenderer.
|
|
5
|
+
*
|
|
6
|
+
* Test Coverage:
|
|
7
|
+
* 1. Basic dropdown rendering verification
|
|
8
|
+
* 2. Dropdown click to open and select option
|
|
9
|
+
* 3. Value persistence after selection (SSF setFields called)
|
|
10
|
+
* 4. Second dropdown rendering
|
|
11
|
+
* 5. Editable dropdown rendering
|
|
12
|
+
* 6. Padlock unlock and interaction
|
|
13
|
+
* 7. onChange callback verification
|
|
14
|
+
* 8. onBlur validation execution
|
|
15
|
+
* 9. Null/undefined value handling
|
|
16
|
+
* 10. Search highlight state clears on change
|
|
17
|
+
*/
|
|
18
|
+
export declare class DropdownRendererFlows extends FlowBase {
|
|
19
|
+
flowParams: FlowParams;
|
|
20
|
+
constructor(flowParams: FlowParams);
|
|
21
|
+
/**
|
|
22
|
+
* Test 1: Verify state dropdown renders correctly
|
|
23
|
+
*/
|
|
24
|
+
private CheckDropdownRendering;
|
|
25
|
+
/**
|
|
26
|
+
* Test 2: Open dropdown and select an option
|
|
27
|
+
*/
|
|
28
|
+
private CheckDropdownOpenAndSelect;
|
|
29
|
+
/**
|
|
30
|
+
* Test 3: Verify selected value is displayed
|
|
31
|
+
*/
|
|
32
|
+
private CheckDropdownValueDisplay;
|
|
33
|
+
/**
|
|
34
|
+
* Test 4: Verify second state dropdown exists
|
|
35
|
+
*/
|
|
36
|
+
private CheckSecondDropdownExists;
|
|
37
|
+
/**
|
|
38
|
+
* Test 5: Select option in second dropdown
|
|
39
|
+
*/
|
|
40
|
+
private CheckSecondDropdownSelect;
|
|
41
|
+
/**
|
|
42
|
+
* Test 6: Verify editable dropdown exists
|
|
43
|
+
*/
|
|
44
|
+
private CheckEditableDropdownExists;
|
|
45
|
+
/**
|
|
46
|
+
* Test 7: Verify editable dropdown can be typed into
|
|
47
|
+
* Note: Padlock tests require specific lock data in mock.
|
|
48
|
+
* This tests the isEditable functionality of field 33.
|
|
49
|
+
*/
|
|
50
|
+
private CheckDropdownPadlockUnlock;
|
|
51
|
+
/**
|
|
52
|
+
* Test 8: Interact with editable dropdown after unlock
|
|
53
|
+
*/
|
|
54
|
+
private CheckEditableDropdownInteraction;
|
|
55
|
+
/**
|
|
56
|
+
* Test 9: Verify blur event triggers validation
|
|
57
|
+
*/
|
|
58
|
+
private CheckDropdownBlurEvent;
|
|
59
|
+
/**
|
|
60
|
+
* Test 10: Verify dropdown doesn't display null/undefined
|
|
61
|
+
*/
|
|
62
|
+
private CheckDropdownNoNullDisplay;
|
|
63
|
+
/**
|
|
64
|
+
* Test 11: Re-select different option from second dropdown (1259) to verify onChange fires
|
|
65
|
+
*/
|
|
66
|
+
private CheckDropdownReselection;
|
|
67
|
+
/**
|
|
68
|
+
* Test 12: Trigger blur on dropdown input to cover onBlurEvent callback
|
|
69
|
+
*/
|
|
70
|
+
private CheckDropdownInputBlur;
|
|
71
|
+
/**
|
|
72
|
+
* Test 13: Type a new value in editable dropdown and select creatable option
|
|
73
|
+
*/
|
|
74
|
+
private CheckEditableDropdownCreate;
|
|
75
|
+
/**
|
|
76
|
+
* Test 14: Blur on editable dropdown to trigger commit
|
|
77
|
+
*/
|
|
78
|
+
private CheckEditableDropdownBlur;
|
|
79
|
+
/**
|
|
80
|
+
* Test 15: Select option and blur to cover full onChange + onBlur path
|
|
81
|
+
*/
|
|
82
|
+
private CheckDropdownSelectThenBlur;
|
|
83
|
+
/**
|
|
84
|
+
* Test 16: Focus and blur without selection to cover edge case
|
|
85
|
+
*/
|
|
86
|
+
private CheckDropdownFocusBlurCycle;
|
|
87
|
+
/**
|
|
88
|
+
* Test 17: Final state verification
|
|
89
|
+
*/
|
|
90
|
+
private CheckDropdownFinalState;
|
|
91
|
+
get Flows(): TFlow;
|
|
92
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TFlow } from '@elliemae/flow-driven-testing';
|
|
2
|
+
import { FlowBase, FlowParams } from '../base/flowBase';
|
|
3
|
+
export declare class LargeTextRendererFlows extends FlowBase {
|
|
4
|
+
flowParams: FlowParams;
|
|
5
|
+
constructor(flowParams: FlowParams);
|
|
6
|
+
private CheckLargeTextValue;
|
|
7
|
+
private CheckWithMaxCharLimit;
|
|
8
|
+
get Flows(): TFlow;
|
|
9
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TFlow } from '@elliemae/flow-driven-testing';
|
|
2
|
+
import { FlowBase, FlowParams } from '../base/flowBase';
|
|
3
|
+
export declare class NumberRendererFlows extends FlowBase {
|
|
4
|
+
flowParams: FlowParams;
|
|
5
|
+
constructor(flowParams: FlowParams);
|
|
6
|
+
private CheckIntegerValue;
|
|
7
|
+
private CheckD2FormatValue;
|
|
8
|
+
private CheckLockNumberField;
|
|
9
|
+
private CheckMaxLength;
|
|
10
|
+
get Flows(): TFlow;
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TFlow } from '@elliemae/flow-driven-testing';
|
|
2
|
+
import { FlowBase, FlowParams } from '../base/flowBase';
|
|
3
|
+
export declare class RadioRendererFlows extends FlowBase {
|
|
4
|
+
flowParams: FlowParams;
|
|
5
|
+
constructor(flowParams: FlowParams);
|
|
6
|
+
private SelectRadioOption;
|
|
7
|
+
private CheckRadioGroupOptions;
|
|
8
|
+
private CheckDisabledRadioGroupOptions;
|
|
9
|
+
get Flows(): TFlow;
|
|
10
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TFlow } from '@elliemae/flow-driven-testing';
|
|
2
|
+
import { FlowBase, FlowParams } from '../base/flowBase';
|
|
3
|
+
export declare class TextRendererFlows extends FlowBase {
|
|
4
|
+
flowParams: FlowParams;
|
|
5
|
+
constructor(flowParams: FlowParams);
|
|
6
|
+
private CheckTextValue;
|
|
7
|
+
private CheckCorrectEmailValue;
|
|
8
|
+
private CheckIncorrectEmailValue;
|
|
9
|
+
private CheckTextPadLock;
|
|
10
|
+
private CheckPhoneValue;
|
|
11
|
+
private CheckTextMaxLength;
|
|
12
|
+
private CheckSSNValue;
|
|
13
|
+
private CheckFormatFnUppercase;
|
|
14
|
+
private CheckParseFnLowercase;
|
|
15
|
+
get Flows(): TFlow;
|
|
16
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TFlow } from '@elliemae/flow-driven-testing';
|
|
2
|
+
import { FlowBase, FlowParams } from '../base/flowBase';
|
|
3
|
+
export declare class ToggleRendererFlows extends FlowBase {
|
|
4
|
+
flowParams: FlowParams;
|
|
5
|
+
constructor(flowParams: FlowParams);
|
|
6
|
+
private ToggleOnState;
|
|
7
|
+
private ToggleOffState;
|
|
8
|
+
private CheckToggleDisabled;
|
|
9
|
+
get Flows(): TFlow;
|
|
10
|
+
}
|