@servicetitan/dte-pdf-editor 1.88.0 → 1.89.0

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 (20) hide show
  1. package/dist/components/field-config-panel/e-sign-date-rules-summary.d.ts +1 -0
  2. package/dist/components/field-config-panel/e-sign-date-rules-summary.d.ts.map +1 -1
  3. package/dist/components/field-config-panel/e-sign-date-rules-summary.js +3 -2
  4. package/dist/components/field-config-panel/e-sign-date-rules-summary.js.map +1 -1
  5. package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.d.ts.map +1 -1
  6. package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.js +27 -12
  7. package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.js.map +1 -1
  8. package/dist/components/field-config-panel/e-sign-options-modal.d.ts.map +1 -1
  9. package/dist/components/field-config-panel/e-sign-options-modal.js +5 -1
  10. package/dist/components/field-config-panel/e-sign-options-modal.js.map +1 -1
  11. package/dist/utils/conditions/e-sign-offset-rules.utils.d.ts +6 -1
  12. package/dist/utils/conditions/e-sign-offset-rules.utils.d.ts.map +1 -1
  13. package/dist/utils/conditions/e-sign-offset-rules.utils.js +15 -0
  14. package/dist/utils/conditions/e-sign-offset-rules.utils.js.map +1 -1
  15. package/package.json +1 -1
  16. package/src/components/field-config-panel/e-sign-date-rules-summary.tsx +21 -8
  17. package/src/components/field-config-panel/e-sign-date-signed-offset-modal.tsx +49 -17
  18. package/src/components/field-config-panel/e-sign-options-modal.tsx +6 -0
  19. package/src/utils/conditions/__tests__/e-sign-offset-rules.utils.test.ts +58 -0
  20. package/src/utils/conditions/e-sign-offset-rules.utils.ts +30 -1
@@ -5,6 +5,7 @@ export interface ESignDateRulesSummaryProps {
5
5
  rulesWithConditions: ESignDateSignedOffsetSettingsRule[];
6
6
  schema?: SchemaObject;
7
7
  documentFields?: PdfField[];
8
+ onClear: () => void;
8
9
  onEdit: () => void;
9
10
  }
10
11
  export declare const ESignDateRulesSummary: FC<ESignDateRulesSummaryProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"e-sign-date-rules-summary.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-date-rules-summary.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AACpC,OAAO,EAIH,KAAK,iCAAiC,EAEtC,KAAK,QAAQ,EAEb,KAAK,YAAY,EAGpB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,WAAW,0BAA0B;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,iCAAiC,EAAE,CAAC;IACzD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CA8EhE,CAAC"}
1
+ {"version":3,"file":"e-sign-date-rules-summary.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-date-rules-summary.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AACpC,OAAO,EAIH,KAAK,iCAAiC,EAEtC,KAAK,QAAQ,EAEb,KAAK,YAAY,EAGpB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,WAAW,0BAA0B;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,iCAAiC,EAAE,CAAC;IACzD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAyFhE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, Flex, Text } from '@servicetitan/anvil2';
3
+ import DeleteIcon from '@servicetitan/anvil2/assets/icons/material/round/delete.svg';
3
4
  import EditIcon from '@servicetitan/anvil2/assets/icons/material/round/edit.svg';
4
5
  import { useMemo } from 'react';
5
6
  import { CHECKBOX_OPERATORS, NUMBER_OPERATORS, RADIO_OPERATORS, STRING_OPERATORS, VALUE_LESS_OPERATORS, } from '../../interface/types';
@@ -11,7 +12,7 @@ const ALL_OPERATORS = [
11
12
  ...CHECKBOX_OPERATORS,
12
13
  ];
13
14
  const getOperatorSymbol = (operator) => { var _a, _b; return (_b = (_a = ALL_OPERATORS.find(op => op.value === operator)) === null || _a === void 0 ? void 0 : _a.label.split(' (')[0]) !== null && _b !== void 0 ? _b : operator; };
14
- export const ESignDateRulesSummary = ({ documentFields, elseDays, onEdit, rulesWithConditions, schema, }) => {
15
+ export const ESignDateRulesSummary = ({ documentFields, elseDays, onClear, onEdit, rulesWithConditions, schema, }) => {
15
16
  const dataPointOptions = useMemo(() => getDataPointOptions(schema, documentFields), [schema, documentFields]);
16
17
  const getConditionText = (condition) => {
17
18
  var _a, _b;
@@ -23,7 +24,7 @@ export const ESignDateRulesSummary = ({ documentFields, elseDays, onEdit, rulesW
23
24
  const value = (_b = condition.valueLabel) !== null && _b !== void 0 ? _b : condition.value;
24
25
  return `${label} ${symbol}${isValueLess ? '' : ` ${value}`}`;
25
26
  };
26
- return (_jsxs(Flex, { direction: "column", gap: "1", children: [_jsxs(Flex, { justifyContent: "space-between", alignItems: "center", children: [_jsx(Text, { variant: "body", size: "medium", style: { fontWeight: 500 }, children: "Calculated date rules" }), _jsx(Button, { appearance: "ghost", size: "small", icon: { before: EditIcon }, onClick: onEdit, children: "Edit" })] }), _jsxs(Flex, { direction: "column", gap: "2", className: "dte-rule-card --active", children: [rulesWithConditions.map((rule, index) => {
27
+ return (_jsxs(Flex, { direction: "column", gap: "1", children: [_jsxs(Flex, { justifyContent: "space-between", alignItems: "center", children: [_jsx(Text, { variant: "body", size: "medium", style: { fontWeight: 500 }, children: "Calculated date rules" }), _jsxs(Flex, { gap: "2", children: [_jsx(Button, { appearance: "ghost", size: "small", icon: { before: EditIcon }, onClick: onEdit, children: "Edit" }), _jsx(Button, { appearance: "ghost", size: "small", icon: { before: DeleteIcon }, onClick: onClear, children: "Clear" })] })] }), _jsxs(Flex, { direction: "column", gap: "2", className: "dte-rule-card --active", children: [rulesWithConditions.map((rule, index) => {
27
28
  var _a, _b, _c;
28
29
  const condition = (_a = rule.condition.groups[0]) === null || _a === void 0 ? void 0 : _a.conditions[0];
29
30
  return (_jsxs(Flex, { direction: "column", children: [_jsxs(Text, { variant: "body", children: [rule.days, " After Signing When:"] }), condition && (_jsx(Text, { variant: "body", size: "small", style: {
@@ -1 +1 @@
1
- {"version":3,"file":"e-sign-date-rules-summary.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-date-rules-summary.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e-sign-date-rules-summary.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-date-rules-summary.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"e-sign-date-signed-offset-modal.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-date-signed-offset-modal.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,EAAE,EAAkC,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EACR,sCAAsC,EACtC,iCAAiC,EACjC,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,YAAY,EACf,MAAM,uBAAuB,CAAC;AAY/B,MAAM,WAAW,+BAA+B;IAC5C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,CACJ,KAAK,EAAE,iCAAiC,EAAE,EAC1C,SAAS,EAAE,sCAAsC,KAChD,IAAI,CAAC;IACV,YAAY,EAAE,iCAAiC,EAAE,CAAC;IAClD,SAAS,EAAE,sCAAsC,CAAC;IAClD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,+BAA+B,CA4I1E,CAAC"}
1
+ {"version":3,"file":"e-sign-date-signed-offset-modal.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-date-signed-offset-modal.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,EAAE,EAAkC,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EACR,sCAAsC,EACtC,iCAAiC,EACjC,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,YAAY,EACf,MAAM,uBAAuB,CAAC;AAc/B,MAAM,WAAW,+BAA+B;IAC5C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,CACJ,KAAK,EAAE,iCAAiC,EAAE,EAC1C,SAAS,EAAE,sCAAsC,KAChD,IAAI,CAAC;IACV,YAAY,EAAE,iCAAiC,EAAE,CAAC;IAClD,SAAS,EAAE,sCAAsC,CAAC;IAClD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,+BAA+B,CA0K1E,CAAC"}
@@ -20,18 +20,27 @@ import { Button, Chip, Dialog, Flex, NumberField, Text } from '@servicetitan/anv
20
20
  import PlusCircleIcon from '@servicetitan/anvil2/assets/icons/material/round/add_circle.svg';
21
21
  import { useCallback, useMemo, useState } from 'react';
22
22
  import { MODAL_CONTENT_MAX_HEIGHT } from '../../constants';
23
- import { addESignOffsetRule, canAddESignOffsetRule, createESignOffsetRule, getDocumentFieldsDataPointOptions, getSchemaDataPointOptions, isValidConditionGroups, updateESignOffsetRule, } from '../../utils';
23
+ import { addESignOffsetRule, canAddESignOffsetRule, createInitialESignOffsetRules, getDocumentFieldsDataPointOptions, getESignOffsetRulesForSave, getSchemaDataPointOptions, isValidConditionGroups, removeESignOffsetRule, updateESignOffsetRule, } from '../../utils';
24
24
  import { ESignOffsetRuleRow } from './e-sign-offset-rule-row';
25
25
  export const ESignDateSignedOffsetModal = ({ documentFields, finalRule, formFieldsByFormId, formFieldsLoadingFormId, forms, initialState, onClose, onRequestFormFields, onSave, schema, }) => {
26
- const [rules, setRules] = useState(initialState.length === 0 ? [createESignOffsetRule()] : initialState);
26
+ const [rules, setRules] = useState(initialState.length === 0 ? createInitialESignOffsetRules() : initialState);
27
27
  const [finalRuleDays, setFinalRuleDays] = useState(finalRule.days);
28
+ const [hasClearedRules, setHasClearedRules] = useState(false);
28
29
  const mergeTagOptions = useMemo(() => getSchemaDataPointOptions(schema), [schema]);
29
30
  const fillableOptions = useMemo(() => getDocumentFieldsDataPointOptions(documentFields), [documentFields]);
31
+ const conditionValidationDeps = useMemo(() => ({
32
+ fillableOptions,
33
+ formFieldsByFormId,
34
+ mergeTagOptions,
35
+ }), [fillableOptions, formFieldsByFormId, mergeTagOptions]);
36
+ const hasConfiguredRules = useMemo(() => rules.some(rule => isValidConditionGroups(rule.condition.groups, conditionValidationDeps)), [conditionValidationDeps, rules]);
37
+ const showClearRules = hasConfiguredRules || rules.length > 1;
30
38
  const handleClose = useCallback(() => onClose(), [onClose]);
31
39
  const handleSave = useCallback(() => {
32
- onSave(rules, { days: finalRuleDays });
40
+ const rulesToSave = getESignOffsetRulesForSave(rules, hasClearedRules, hasConfiguredRules);
41
+ onSave(rulesToSave, { days: finalRuleDays });
33
42
  onClose();
34
- }, [finalRuleDays, onClose, onSave, rules]);
43
+ }, [finalRuleDays, hasClearedRules, hasConfiguredRules, onClose, onSave, rules]);
35
44
  const handleFinalRuleDaysChange = useCallback((days) => {
36
45
  setFinalRuleDays(Math.max(Math.min(365, days !== null && days !== void 0 ? days : 0), 0));
37
46
  }, []);
@@ -39,24 +48,30 @@ export const ESignDateSignedOffsetModal = ({ documentFields, finalRule, formFiel
39
48
  setRules(prev => addESignOffsetRule(prev));
40
49
  }, []);
41
50
  const handleRemoveRule = useCallback((index) => {
42
- setRules(prev => prev.filter((_, i) => i !== index));
51
+ setRules(prev => removeESignOffsetRule(prev, index));
52
+ }, []);
53
+ const handleClearRules = useCallback(() => {
54
+ setRules(createInitialESignOffsetRules());
55
+ setFinalRuleDays(0);
56
+ setHasClearedRules(true);
43
57
  }, []);
44
58
  const handleUpdateRule = useCallback((index, rule) => {
45
59
  setRules(prev => updateESignOffsetRule(prev, index, rule));
46
60
  }, []);
47
- const canSave = useMemo(() => rules.every(rule => isValidConditionGroups(rule.condition.groups, {
48
- fillableOptions,
49
- formFieldsByFormId,
50
- mergeTagOptions,
51
- })), [fillableOptions, formFieldsByFormId, mergeTagOptions, rules]);
61
+ const canSave = useMemo(() => {
62
+ if (hasClearedRules && !hasConfiguredRules) {
63
+ return true;
64
+ }
65
+ return rules.every(rule => isValidConditionGroups(rule.condition.groups, conditionValidationDeps));
66
+ }, [conditionValidationDeps, hasClearedRules, hasConfiguredRules, rules]);
52
67
  return (_jsxs(Dialog, { open: true, onClose: handleClose, size: "xlarge", children: [_jsx(Dialog.Header, { children: "Date Signed Offset Rules" }), _jsx(Dialog.Content, { children: _jsxs(Flex, { direction: "column", gap: "4", flex: 1, style: {
53
68
  maxHeight: MODAL_CONTENT_MAX_HEIGHT,
54
69
  overflowY: 'auto',
55
70
  }, children: [rules.length === 0 && (_jsx(Flex, { justifyContent: "center", alignItems: "center", children: _jsx(Text, { variant: "body", size: "xlarge", subdued: true, children: "Rule not configured yet." }) })), rules.map((rule, index) => {
56
71
  var _a, _b;
57
- return (_jsx(ESignOffsetRuleRow, { onDelete: () => handleRemoveRule(index), fillableOptions: fillableOptions, formFieldsByFormId: formFieldsByFormId, formFieldsLoadingFormId: formFieldsLoadingFormId, forms: forms, mergeTagOptions: mergeTagOptions, onChange: next => handleUpdateRule(index, next), onRequestFormFields: onRequestFormFields, rule: rule, canRemove: rules.length > 1 }, (_b = (_a = rule.condition.groups[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : index));
72
+ return (_jsx(ESignOffsetRuleRow, { onDelete: () => handleRemoveRule(index), fillableOptions: fillableOptions, formFieldsByFormId: formFieldsByFormId, formFieldsLoadingFormId: formFieldsLoadingFormId, forms: forms, mergeTagOptions: mergeTagOptions, onChange: next => handleUpdateRule(index, next), onRequestFormFields: onRequestFormFields, rule: rule, canRemove: true }, (_b = (_a = rule.condition.groups[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : index));
58
73
  }), _jsx(Button, { size: "small", appearance: "ghost", icon: { before: PlusCircleIcon }, onClick: handleAddRule, disabled: !canAddESignOffsetRule(rules), children: "Add Else Condition" }), _jsxs(Flex, { className: "dte-rule-card", children: [_jsx(Flex, { alignItems: "center", style: {
59
74
  padding: '8px 12px',
60
- }, children: _jsx(Chip, { label: "THEN", size: "medium" }) }), _jsxs(Flex, { direction: "column", gap: "1", children: [_jsx(NumberField, { size: "small", label: "Number of days", value: finalRuleDays, onChange: handleFinalRuleDaysChange, suffix: "days" }), _jsx(Text, { variant: "body", size: "small", subdued: true, children: "days range up to 365" })] })] })] }) }), _jsxs(Dialog.Footer, { sticky: true, children: [_jsx(Dialog.CancelButton, { onClick: handleClose, children: "Cancel" }), _jsx(Button, { appearance: "primary", disabled: !canSave, onClick: handleSave, children: "Save Changes" })] })] }));
75
+ }, children: _jsx(Chip, { label: "THEN", size: "medium" }) }), _jsxs(Flex, { direction: "column", gap: "1", children: [_jsx(NumberField, { size: "small", label: "Number of days", value: finalRuleDays, onChange: handleFinalRuleDaysChange, suffix: "days" }), _jsx(Text, { variant: "body", size: "small", subdued: true, children: "days range up to 365" })] })] })] }) }), _jsxs(Dialog.Footer, { sticky: true, children: [showClearRules && (_jsx(Button, { appearance: "ghost", onClick: handleClearRules, children: "Clear Rules" })), _jsx(Dialog.CancelButton, { onClick: handleClose, children: "Cancel" }), _jsx(Button, { appearance: "primary", disabled: !canSave, onClick: handleSave, children: "Save Changes" })] })] }));
61
76
  };
62
77
  //# sourceMappingURL=e-sign-date-signed-offset-modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"e-sign-date-signed-offset-modal.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-date-signed-offset-modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e-sign-date-signed-offset-modal.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-date-signed-offset-modal.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"e-sign-options-modal.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-options-modal.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAsB,MAAM,OAAO,CAAC;AAC/C,OAAO,EACH,6BAA6B,EAG7B,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,YAAY,EACf,MAAM,uBAAuB,CAAC;AAI/B,UAAU,sBAAsB;IAC5B,YAAY,EAAE,6BAA6B,CAAC;IAC5C,MAAM,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,CAAC;IACvD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAqFxD,CAAC"}
1
+ {"version":3,"file":"e-sign-options-modal.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-options-modal.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAsB,MAAM,OAAO,CAAC;AAC/C,OAAO,EACH,6BAA6B,EAG7B,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,YAAY,EACf,MAAM,uBAAuB,CAAC;AAK/B,UAAU,sBAAsB;IAC5B,YAAY,EAAE,6BAA6B,CAAC;IAC5C,MAAM,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,CAAC;IACvD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CA0FxD,CAAC"}
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, Flex, NumberField } from '@servicetitan/anvil2';
3
3
  import AddIcon from '@servicetitan/anvil2/assets/icons/material/round/add_circle.svg';
4
4
  import { Fragment, useState } from 'react';
5
+ import { createClearedESignOffsetSettings } from '../../utils';
5
6
  import { ESignDateRulesSummary } from './e-sign-date-rules-summary';
6
7
  import { ESignDateSignedOffsetModal } from './e-sign-date-signed-offset-modal';
7
8
  export const ESignOptionsModal = ({ documentFields, formFieldsByFormId, formFieldsLoadingFormId, forms, initialState, onRequestFormFields, onSave, schema, }) => {
@@ -21,6 +22,9 @@ export const ESignOptionsModal = ({ documentFields, formFieldsByFormId, formFiel
21
22
  const handleSaveRules = (rules, finalRule) => {
22
23
  onSave({ rules: [...rules, finalRule] });
23
24
  };
24
- return (_jsxs(Fragment, { children: [rulesWithConditions.length === 0 ? (_jsxs(Flex, { gap: 1, direction: "column", justifyContent: "space-between", children: [_jsx(NumberField, { size: "small", label: "Number of days", value: ruleWithOutCondition.days, onChange: handleDaysChange, suffix: "days", width: "100%" }), _jsx(Button, { appearance: "ghost", size: "small", icon: AddIcon, onClick: () => setOpen(true), style: { color: '#0265DC' }, children: "Set Date Rule" })] })) : (_jsx(ESignDateRulesSummary, { documentFields: documentFields, onEdit: () => setOpen(true), rulesWithConditions: rulesWithConditions, schema: schema, elseDays: ruleWithOutCondition.days })), open && (_jsx(ESignDateSignedOffsetModal, { onClose: () => setOpen(false), onSave: handleSaveRules, documentFields: documentFields, finalRule: ruleWithOutCondition, formFieldsByFormId: formFieldsByFormId, formFieldsLoadingFormId: formFieldsLoadingFormId, forms: forms, initialState: rulesWithConditions, onRequestFormFields: onRequestFormFields, schema: schema }))] }));
25
+ const handleClearRules = () => {
26
+ onSave(createClearedESignOffsetSettings());
27
+ };
28
+ return (_jsxs(Fragment, { children: [rulesWithConditions.length === 0 ? (_jsxs(Flex, { gap: 1, direction: "column", justifyContent: "space-between", children: [_jsx(NumberField, { size: "small", label: "Number of days", value: ruleWithOutCondition.days, onChange: handleDaysChange, suffix: "days", width: "100%" }), _jsx(Button, { appearance: "ghost", size: "small", icon: AddIcon, onClick: () => setOpen(true), style: { color: '#0265DC' }, children: "Set Date Rule" })] })) : (_jsx(ESignDateRulesSummary, { documentFields: documentFields, onClear: handleClearRules, onEdit: () => setOpen(true), rulesWithConditions: rulesWithConditions, schema: schema, elseDays: ruleWithOutCondition.days })), open && (_jsx(ESignDateSignedOffsetModal, { onClose: () => setOpen(false), onSave: handleSaveRules, documentFields: documentFields, finalRule: ruleWithOutCondition, formFieldsByFormId: formFieldsByFormId, formFieldsLoadingFormId: formFieldsLoadingFormId, forms: forms, initialState: rulesWithConditions, onRequestFormFields: onRequestFormFields, schema: schema }))] }));
25
29
  };
26
30
  //# sourceMappingURL=e-sign-options-modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"e-sign-options-modal.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-options-modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e-sign-options-modal.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/e-sign-options-modal.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,17 @@
1
- import type { ESignDateSignedOffsetSettingsRule } from '../../interface/types';
1
+ import type { ESignDateSignedOffsetSettings, ESignDateSignedOffsetSettingsRule } from '../../interface/types';
2
2
  /**
3
3
  * Product limit: rules (the conditioned rules managed here, plus the trailing else row that
4
4
  * lives outside this array) may not exceed this total.
5
5
  */
6
6
  export declare const MAX_ESIGN_OFFSET_RULES = 5;
7
7
  export declare const createESignOffsetRule: () => ESignDateSignedOffsetSettingsRule;
8
+ /** Same single blank rule shown when the user first clicks Set Date Rule. */
9
+ export declare const createInitialESignOffsetRules: () => ESignDateSignedOffsetSettingsRule[];
8
10
  export declare const canAddESignOffsetRule: (rules: ESignDateSignedOffsetSettingsRule[]) => boolean;
9
11
  /** Appends a new rule. No-op past the max. */
10
12
  export declare const addESignOffsetRule: (rules: ESignDateSignedOffsetSettingsRule[]) => ESignDateSignedOffsetSettingsRule[];
11
13
  export declare const updateESignOffsetRule: (rules: ESignDateSignedOffsetSettingsRule[], index: number, rule: ESignDateSignedOffsetSettingsRule) => ESignDateSignedOffsetSettingsRule[];
14
+ export declare const removeESignOffsetRule: (rules: ESignDateSignedOffsetSettingsRule[], index: number) => ESignDateSignedOffsetSettingsRule[];
15
+ export declare const createClearedESignOffsetSettings: () => ESignDateSignedOffsetSettings;
16
+ export declare const getESignOffsetRulesForSave: (rules: ESignDateSignedOffsetSettingsRule[], hasClearedRules: boolean, hasConfiguredRules: boolean) => ESignDateSignedOffsetSettingsRule[];
12
17
  //# sourceMappingURL=e-sign-offset-rules.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"e-sign-offset-rules.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/conditions/e-sign-offset-rules.utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,qBAAqB,QAAO,iCAGvC,CAAC;AAEH,eAAO,MAAM,qBAAqB,GAAI,OAAO,iCAAiC,EAAE,KAAG,OACtC,CAAC;AAE9C,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,GAC3B,OAAO,iCAAiC,EAAE,KAC3C,iCAAiC,EAC0C,CAAC;AAE/E,eAAO,MAAM,qBAAqB,GAC9B,OAAO,iCAAiC,EAAE,EAC1C,OAAO,MAAM,EACb,MAAM,iCAAiC,KACxC,iCAAiC,EAInC,CAAC"}
1
+ {"version":3,"file":"e-sign-offset-rules.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/conditions/e-sign-offset-rules.utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,6BAA6B,EAC7B,iCAAiC,EACpC,MAAM,uBAAuB,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,qBAAqB,QAAO,iCAGvC,CAAC;AAEH,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,QAAO,iCAAiC,EAEjF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,OAAO,iCAAiC,EAAE,KAAG,OACtC,CAAC;AAE9C,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,GAC3B,OAAO,iCAAiC,EAAE,KAC3C,iCAAiC,EAC0C,CAAC;AAE/E,eAAO,MAAM,qBAAqB,GAC9B,OAAO,iCAAiC,EAAE,EAC1C,OAAO,MAAM,EACb,MAAM,iCAAiC,KACxC,iCAAiC,EAInC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAC9B,OAAO,iCAAiC,EAAE,EAC1C,OAAO,MAAM,KACd,iCAAiC,EAEnC,CAAC;AAEF,eAAO,MAAM,gCAAgC,QAAO,6BAInD,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACnC,OAAO,iCAAiC,EAAE,EAC1C,iBAAiB,OAAO,EACxB,oBAAoB,OAAO,KAC5B,iCAAiC,EAEnC,CAAC"}
@@ -8,6 +8,10 @@ export const createESignOffsetRule = () => ({
8
8
  days: 0,
9
9
  condition: { behavior: 'show', groups: [defaultGroup()] },
10
10
  });
11
+ /** Same single blank rule shown when the user first clicks Set Date Rule. */
12
+ export const createInitialESignOffsetRules = () => {
13
+ return [createESignOffsetRule()];
14
+ };
11
15
  export const canAddESignOffsetRule = (rules) => rules.length < MAX_ESIGN_OFFSET_RULES - 1;
12
16
  /** Appends a new rule. No-op past the max. */
13
17
  export const addESignOffsetRule = (rules) => canAddESignOffsetRule(rules) ? [...rules, createESignOffsetRule()] : rules;
@@ -16,4 +20,15 @@ export const updateESignOffsetRule = (rules, index, rule) => {
16
20
  next[index] = rule;
17
21
  return next;
18
22
  };
23
+ export const removeESignOffsetRule = (rules, index) => {
24
+ return rules.filter((_, i) => i !== index);
25
+ };
26
+ export const createClearedESignOffsetSettings = () => {
27
+ return {
28
+ rules: [{ days: 0 }],
29
+ };
30
+ };
31
+ export const getESignOffsetRulesForSave = (rules, hasClearedRules, hasConfiguredRules) => {
32
+ return hasClearedRules && !hasConfiguredRules ? [] : rules;
33
+ };
19
34
  //# sourceMappingURL=e-sign-offset-rules.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"e-sign-offset-rules.utils.js","sourceRoot":"","sources":["../../../src/utils/conditions/e-sign-offset-rules.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAsC,EAAE,CAAC,CAAC;IAC3E,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;CAC5D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAA0C,EAAW,EAAE,CACzF,KAAK,CAAC,MAAM,GAAG,sBAAsB,GAAG,CAAC,CAAC;AAE9C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,KAA0C,EACP,EAAE,CACrC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,KAA0C,EAC1C,KAAa,EACb,IAAuC,EACJ,EAAE;IACrC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"e-sign-offset-rules.utils.js","sourceRoot":"","sources":["../../../src/utils/conditions/e-sign-offset-rules.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAsC,EAAE,CAAC,CAAC;IAC3E,IAAI,EAAE,CAAC;IACP,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE;CAC5D,CAAC,CAAC;AAEH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAwC,EAAE;IACnF,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAA0C,EAAW,EAAE,CACzF,KAAK,CAAC,MAAM,GAAG,sBAAsB,GAAG,CAAC,CAAC;AAE9C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,KAA0C,EACP,EAAE,CACrC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,KAA0C,EAC1C,KAAa,EACb,IAAuC,EACJ,EAAE;IACrC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,KAA0C,EAC1C,KAAa,EACsB,EAAE;IACrC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAkC,EAAE;IAChF,OAAO;QACH,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;KACvB,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,KAA0C,EAC1C,eAAwB,EACxB,kBAA2B,EACQ,EAAE;IACrC,OAAO,eAAe,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/dte-pdf-editor",
3
- "version": "1.88.0",
3
+ "version": "1.89.0",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",
@@ -1,4 +1,5 @@
1
1
  import { Button, Flex, Text } from '@servicetitan/anvil2';
2
+ import DeleteIcon from '@servicetitan/anvil2/assets/icons/material/round/delete.svg';
2
3
  import EditIcon from '@servicetitan/anvil2/assets/icons/material/round/edit.svg';
3
4
  import { FC, useMemo } from 'react';
4
5
  import {
@@ -30,12 +31,14 @@ export interface ESignDateRulesSummaryProps {
30
31
  rulesWithConditions: ESignDateSignedOffsetSettingsRule[];
31
32
  schema?: SchemaObject;
32
33
  documentFields?: PdfField[];
34
+ onClear: () => void;
33
35
  onEdit: () => void;
34
36
  }
35
37
 
36
38
  export const ESignDateRulesSummary: FC<ESignDateRulesSummaryProps> = ({
37
39
  documentFields,
38
40
  elseDays,
41
+ onClear,
39
42
  onEdit,
40
43
  rulesWithConditions,
41
44
  schema,
@@ -65,14 +68,24 @@ export const ESignDateRulesSummary: FC<ESignDateRulesSummaryProps> = ({
65
68
  <Text variant="body" size="medium" style={{ fontWeight: 500 }}>
66
69
  Calculated date rules
67
70
  </Text>
68
- <Button
69
- appearance="ghost"
70
- size="small"
71
- icon={{ before: EditIcon }}
72
- onClick={onEdit}
73
- >
74
- Edit
75
- </Button>
71
+ <Flex gap="2">
72
+ <Button
73
+ appearance="ghost"
74
+ size="small"
75
+ icon={{ before: EditIcon }}
76
+ onClick={onEdit}
77
+ >
78
+ Edit
79
+ </Button>
80
+ <Button
81
+ appearance="ghost"
82
+ size="small"
83
+ icon={{ before: DeleteIcon }}
84
+ onClick={onClear}
85
+ >
86
+ Clear
87
+ </Button>
88
+ </Flex>
76
89
  </Flex>
77
90
  <Flex direction="column" gap="2" className="dte-rule-card --active">
78
91
  {rulesWithConditions.map((rule, index) => {
@@ -30,10 +30,12 @@ import type {
30
30
  import {
31
31
  addESignOffsetRule,
32
32
  canAddESignOffsetRule,
33
- createESignOffsetRule,
33
+ createInitialESignOffsetRules,
34
34
  getDocumentFieldsDataPointOptions,
35
+ getESignOffsetRulesForSave,
35
36
  getSchemaDataPointOptions,
36
37
  isValidConditionGroups,
38
+ removeESignOffsetRule,
37
39
  updateESignOffsetRule,
38
40
  } from '../../utils';
39
41
  import { ESignOffsetRuleRow } from './e-sign-offset-rule-row';
@@ -67,9 +69,10 @@ export const ESignDateSignedOffsetModal: FC<ESignDateSignedOffsetModalProps> = (
67
69
  schema,
68
70
  }) => {
69
71
  const [rules, setRules] = useState<ESignDateSignedOffsetSettingsRule[]>(
70
- initialState.length === 0 ? [createESignOffsetRule()] : initialState,
72
+ initialState.length === 0 ? createInitialESignOffsetRules() : initialState,
71
73
  );
72
74
  const [finalRuleDays, setFinalRuleDays] = useState<number>(finalRule.days);
75
+ const [hasClearedRules, setHasClearedRules] = useState(false);
73
76
 
74
77
  const mergeTagOptions = useMemo(() => getSchemaDataPointOptions(schema), [schema]);
75
78
 
@@ -78,12 +81,32 @@ export const ESignDateSignedOffsetModal: FC<ESignDateSignedOffsetModalProps> = (
78
81
  [documentFields],
79
82
  );
80
83
 
84
+ const conditionValidationDeps = useMemo(
85
+ () => ({
86
+ fillableOptions,
87
+ formFieldsByFormId,
88
+ mergeTagOptions,
89
+ }),
90
+ [fillableOptions, formFieldsByFormId, mergeTagOptions],
91
+ );
92
+
93
+ const hasConfiguredRules = useMemo(
94
+ () =>
95
+ rules.some(rule =>
96
+ isValidConditionGroups(rule.condition.groups, conditionValidationDeps),
97
+ ),
98
+ [conditionValidationDeps, rules],
99
+ );
100
+
101
+ const showClearRules = hasConfiguredRules || rules.length > 1;
102
+
81
103
  const handleClose = useCallback(() => onClose(), [onClose]);
82
104
 
83
105
  const handleSave = useCallback(() => {
84
- onSave(rules, { days: finalRuleDays });
106
+ const rulesToSave = getESignOffsetRulesForSave(rules, hasClearedRules, hasConfiguredRules);
107
+ onSave(rulesToSave, { days: finalRuleDays });
85
108
  onClose();
86
- }, [finalRuleDays, onClose, onSave, rules]);
109
+ }, [finalRuleDays, hasClearedRules, hasConfiguredRules, onClose, onSave, rules]);
87
110
 
88
111
  const handleFinalRuleDaysChange = useCallback((days: number | null) => {
89
112
  setFinalRuleDays(Math.max(Math.min(365, days ?? 0), 0));
@@ -94,7 +117,13 @@ export const ESignDateSignedOffsetModal: FC<ESignDateSignedOffsetModalProps> = (
94
117
  }, []);
95
118
 
96
119
  const handleRemoveRule = useCallback((index: number) => {
97
- setRules(prev => prev.filter((_, i) => i !== index));
120
+ setRules(prev => removeESignOffsetRule(prev, index));
121
+ }, []);
122
+
123
+ const handleClearRules = useCallback(() => {
124
+ setRules(createInitialESignOffsetRules());
125
+ setFinalRuleDays(0);
126
+ setHasClearedRules(true);
98
127
  }, []);
99
128
 
100
129
  const handleUpdateRule = useCallback(
@@ -104,17 +133,15 @@ export const ESignDateSignedOffsetModal: FC<ESignDateSignedOffsetModalProps> = (
104
133
  [],
105
134
  );
106
135
 
107
- const canSave = useMemo(
108
- () =>
109
- rules.every(rule =>
110
- isValidConditionGroups(rule.condition.groups, {
111
- fillableOptions,
112
- formFieldsByFormId,
113
- mergeTagOptions,
114
- }),
115
- ),
116
- [fillableOptions, formFieldsByFormId, mergeTagOptions, rules],
117
- );
136
+ const canSave = useMemo(() => {
137
+ if (hasClearedRules && !hasConfiguredRules) {
138
+ return true;
139
+ }
140
+
141
+ return rules.every(rule =>
142
+ isValidConditionGroups(rule.condition.groups, conditionValidationDeps),
143
+ );
144
+ }, [conditionValidationDeps, hasClearedRules, hasConfiguredRules, rules]);
118
145
 
119
146
  return (
120
147
  <Dialog open onClose={handleClose} size="xlarge">
@@ -149,7 +176,7 @@ export const ESignDateSignedOffsetModal: FC<ESignDateSignedOffsetModalProps> = (
149
176
  onChange={next => handleUpdateRule(index, next)}
150
177
  onRequestFormFields={onRequestFormFields}
151
178
  rule={rule}
152
- canRemove={rules.length > 1}
179
+ canRemove
153
180
  />
154
181
  ))}
155
182
  <Button
@@ -187,6 +214,11 @@ export const ESignDateSignedOffsetModal: FC<ESignDateSignedOffsetModalProps> = (
187
214
  </Flex>
188
215
  </Dialog.Content>
189
216
  <Dialog.Footer sticky>
217
+ {showClearRules && (
218
+ <Button appearance="ghost" onClick={handleClearRules}>
219
+ Clear Rules
220
+ </Button>
221
+ )}
190
222
  <Dialog.CancelButton onClick={handleClose}>Cancel</Dialog.CancelButton>
191
223
  <Button appearance="primary" disabled={!canSave} onClick={handleSave}>
192
224
  Save Changes
@@ -10,6 +10,7 @@ import {
10
10
  PdfField,
11
11
  SchemaObject,
12
12
  } from '../../interface/types';
13
+ import { createClearedESignOffsetSettings } from '../../utils';
13
14
  import { ESignDateRulesSummary } from './e-sign-date-rules-summary';
14
15
  import { ESignDateSignedOffsetModal } from './e-sign-date-signed-offset-modal';
15
16
 
@@ -61,6 +62,10 @@ export const ESignOptionsModal: FC<ESignOptionsModalProps> = ({
61
62
  onSave({ rules: [...rules, finalRule] });
62
63
  };
63
64
 
65
+ const handleClearRules = () => {
66
+ onSave(createClearedESignOffsetSettings());
67
+ };
68
+
64
69
  return (
65
70
  <Fragment>
66
71
  {rulesWithConditions.length === 0 ? (
@@ -87,6 +92,7 @@ export const ESignOptionsModal: FC<ESignOptionsModalProps> = ({
87
92
  ) : (
88
93
  <ESignDateRulesSummary
89
94
  documentFields={documentFields}
95
+ onClear={handleClearRules}
90
96
  onEdit={() => setOpen(true)}
91
97
  rulesWithConditions={rulesWithConditions}
92
98
  schema={schema}
@@ -2,8 +2,12 @@ import type { ESignDateSignedOffsetSettingsRule } from '../../../interface/types
2
2
  import {
3
3
  addESignOffsetRule,
4
4
  canAddESignOffsetRule,
5
+ createClearedESignOffsetSettings,
5
6
  createESignOffsetRule,
7
+ createInitialESignOffsetRules,
8
+ getESignOffsetRulesForSave,
6
9
  MAX_ESIGN_OFFSET_RULES,
10
+ removeESignOffsetRule,
7
11
  updateESignOffsetRule,
8
12
  } from '../e-sign-offset-rules.utils';
9
13
 
@@ -17,6 +21,18 @@ describe('createESignOffsetRule', () => {
17
21
  });
18
22
  });
19
23
 
24
+ describe('createInitialESignOffsetRules', () => {
25
+ test('returns the same single blank rule as first opening Set Date Rule', () => {
26
+ const rules = createInitialESignOffsetRules();
27
+ const initialRule = createESignOffsetRule();
28
+ expect(rules).toHaveLength(1);
29
+ expect(rules[0].days).toBe(initialRule.days);
30
+ expect(rules[0].condition.behavior).toBe(initialRule.condition.behavior);
31
+ expect(rules[0].condition.groups).toHaveLength(1);
32
+ expect(rules[0].condition.groups[0].conditions).toHaveLength(1);
33
+ });
34
+ });
35
+
20
36
  describe('addESignOffsetRule', () => {
21
37
  test('appends a new rule after any existing rules, preserving their order', () => {
22
38
  const first = createESignOffsetRule();
@@ -49,3 +65,45 @@ describe('updateESignOffsetRule', () => {
49
65
  expect(rules[1].days).toBe(0);
50
66
  });
51
67
  });
68
+
69
+ describe('removeESignOffsetRule', () => {
70
+ test('removes the rule at the given index without mutating the input array', () => {
71
+ const first = createESignOffsetRule();
72
+ const second = createESignOffsetRule();
73
+ const rules = [first, second];
74
+ const next = removeESignOffsetRule(rules, 0);
75
+ expect(next).toEqual([second]);
76
+ expect(rules).toHaveLength(2);
77
+ });
78
+
79
+ test('returns an empty array when the last conditioned rule is removed', () => {
80
+ const next = removeESignOffsetRule([createESignOffsetRule()], 0);
81
+ expect(next).toEqual([]);
82
+ });
83
+ });
84
+
85
+ describe('getESignOffsetRulesForSave', () => {
86
+ test('saves an empty conditioned-rule list after clear when no rule is configured', () => {
87
+ const blankRules = createInitialESignOffsetRules();
88
+ const subject = () => getESignOffsetRulesForSave(blankRules, true, false);
89
+
90
+ expect(subject()).toEqual([]);
91
+ });
92
+
93
+ test('saves the configured rules when a rule is added after clear', () => {
94
+ const configured = [{ ...createESignOffsetRule(), days: 3 }];
95
+ const subject = () => getESignOffsetRulesForSave(configured, true, true);
96
+
97
+ expect(subject()).toBe(configured);
98
+ });
99
+ });
100
+
101
+ describe('createClearedESignOffsetSettings', () => {
102
+ test('keeps only a zero-day else rule so a cleared date rule can be saved', () => {
103
+ const subject = () => createClearedESignOffsetSettings();
104
+
105
+ expect(subject()).toEqual({
106
+ rules: [{ days: 0 }],
107
+ });
108
+ });
109
+ });
@@ -1,5 +1,8 @@
1
1
  import { defaultGroup } from '../../constants';
2
- import type { ESignDateSignedOffsetSettingsRule } from '../../interface/types';
2
+ import type {
3
+ ESignDateSignedOffsetSettings,
4
+ ESignDateSignedOffsetSettingsRule,
5
+ } from '../../interface/types';
3
6
 
4
7
  /**
5
8
  * Product limit: rules (the conditioned rules managed here, plus the trailing else row that
@@ -12,6 +15,11 @@ export const createESignOffsetRule = (): ESignDateSignedOffsetSettingsRule => ({
12
15
  condition: { behavior: 'show', groups: [defaultGroup()] },
13
16
  });
14
17
 
18
+ /** Same single blank rule shown when the user first clicks Set Date Rule. */
19
+ export const createInitialESignOffsetRules = (): ESignDateSignedOffsetSettingsRule[] => {
20
+ return [createESignOffsetRule()];
21
+ };
22
+
15
23
  export const canAddESignOffsetRule = (rules: ESignDateSignedOffsetSettingsRule[]): boolean =>
16
24
  rules.length < MAX_ESIGN_OFFSET_RULES - 1;
17
25
 
@@ -30,3 +38,24 @@ export const updateESignOffsetRule = (
30
38
  next[index] = rule;
31
39
  return next;
32
40
  };
41
+
42
+ export const removeESignOffsetRule = (
43
+ rules: ESignDateSignedOffsetSettingsRule[],
44
+ index: number,
45
+ ): ESignDateSignedOffsetSettingsRule[] => {
46
+ return rules.filter((_, i) => i !== index);
47
+ };
48
+
49
+ export const createClearedESignOffsetSettings = (): ESignDateSignedOffsetSettings => {
50
+ return {
51
+ rules: [{ days: 0 }],
52
+ };
53
+ };
54
+
55
+ export const getESignOffsetRulesForSave = (
56
+ rules: ESignDateSignedOffsetSettingsRule[],
57
+ hasClearedRules: boolean,
58
+ hasConfiguredRules: boolean,
59
+ ): ESignDateSignedOffsetSettingsRule[] => {
60
+ return hasClearedRules && !hasConfiguredRules ? [] : rules;
61
+ };