@servicetitan/dte-pdf-editor 1.88.0 → 1.90.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.
- package/dist/components/field-config-panel/e-sign-date-rules-summary.d.ts +1 -0
- package/dist/components/field-config-panel/e-sign-date-rules-summary.d.ts.map +1 -1
- package/dist/components/field-config-panel/e-sign-date-rules-summary.js +3 -2
- package/dist/components/field-config-panel/e-sign-date-rules-summary.js.map +1 -1
- package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.d.ts.map +1 -1
- package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.js +27 -12
- package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.js.map +1 -1
- package/dist/components/field-config-panel/e-sign-options-modal.d.ts.map +1 -1
- package/dist/components/field-config-panel/e-sign-options-modal.js +5 -1
- package/dist/components/field-config-panel/e-sign-options-modal.js.map +1 -1
- package/dist/components/pdf-canvas/pdf-document-renderer.d.ts +0 -1
- package/dist/components/pdf-canvas/pdf-document-renderer.d.ts.map +1 -1
- package/dist/components/pdf-canvas/pdf-document-renderer.js +8 -2
- package/dist/components/pdf-canvas/pdf-document-renderer.js.map +1 -1
- package/dist/utils/conditions/e-sign-offset-rules.utils.d.ts +6 -1
- package/dist/utils/conditions/e-sign-offset-rules.utils.d.ts.map +1 -1
- package/dist/utils/conditions/e-sign-offset-rules.utils.js +15 -0
- package/dist/utils/conditions/e-sign-offset-rules.utils.js.map +1 -1
- package/dist/utils/pdf/pdfjs-init.d.ts +1 -1
- package/dist/utils/pdf/pdfjs-init.d.ts.map +1 -1
- package/dist/utils/pdf/pdfjs-init.js +10 -0
- package/dist/utils/pdf/pdfjs-init.js.map +1 -1
- package/package.json +1 -1
- package/src/components/field-config-panel/e-sign-date-rules-summary.tsx +21 -8
- package/src/components/field-config-panel/e-sign-date-signed-offset-modal.tsx +49 -17
- package/src/components/field-config-panel/e-sign-options-modal.tsx +6 -0
- package/src/components/pdf-canvas/pdf-document-renderer.tsx +9 -1
- package/src/utils/conditions/__tests__/e-sign-offset-rules.utils.test.ts +58 -0
- package/src/utils/conditions/e-sign-offset-rules.utils.ts +30 -1
- package/src/utils/pdf/pdfjs-init.ts +11 -0
|
@@ -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":"
|
|
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":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,QAAQ,MAAM,2DAA2D,CAAC;AACjF,OAAO,EAAM,OAAO,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EACH,kBAAkB,EAIlB,gBAAgB,EAEhB,eAAe,EAEf,gBAAgB,EAChB,oBAAoB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,aAAa,GAAG;IAClB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,eAAe;IAClB,GAAG,kBAAkB;CACxB,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAU,EAAE,eACnD,OAAA,MAAA,MAAA,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,0CAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,mCAAI,QAAQ,CAAA,EAAA,CAAC;
|
|
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;
|
|
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,
|
|
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 ?
|
|
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
|
-
|
|
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
|
|
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(() =>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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:
|
|
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":";AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,cAAc,MAAM,iEAAiE,CAAC;AAC7F,OAAO,EAAM,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAS3D,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EACrB,
|
|
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;
|
|
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
|
-
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-document-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-canvas/pdf-document-renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,yCAAyC,CAAC;AACjD,OAAO,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"pdf-document-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-canvas/pdf-document-renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,yCAAyC,CAAC;AACjD,OAAO,mCAAmC,CAAC;AAW3C,UAAU,wBAAwB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAChD,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACnE;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAmE5D,CAAC"}
|
|
@@ -3,7 +3,13 @@ import { Document, Page } from 'react-pdf';
|
|
|
3
3
|
import 'react-pdf/dist/Page/AnnotationLayer.css';
|
|
4
4
|
import 'react-pdf/dist/Page/TextLayer.css';
|
|
5
5
|
import { usePdfDocumentRenderer } from '../../hooks';
|
|
6
|
-
import '../../utils/pdf/pdfjs-init'; // Initialize PDF.js worker at a module load
|
|
6
|
+
import { PDFJS_WASM_URL } from '../../utils/pdf/pdfjs-init'; // Initialize PDF.js worker at a module load
|
|
7
|
+
/*
|
|
8
|
+
* Defined outside the component (per react-pdf's own guidance for `options`) so it's referentially
|
|
9
|
+
* stable across renders - passing a fresh object each render would make react-pdf treat the file as
|
|
10
|
+
* "changed" and reload the document.
|
|
11
|
+
*/
|
|
12
|
+
const documentOptions = { wasmUrl: PDFJS_WASM_URL };
|
|
7
13
|
export const PdfDocumentRenderer = ({ errorPlaceholder, loading, loadingPlaceholder, onDocumentLoadSuccess, onDragOver, onDrop, pageWidth, pdfUrl, }) => {
|
|
8
14
|
const { handleDocumentLoadSuccess: handleLoadSuccess, numPages, pages, } = usePdfDocumentRenderer();
|
|
9
15
|
const handleDocumentLoadSuccess = ({ numPages }) => {
|
|
@@ -19,7 +25,7 @@ export const PdfDocumentRenderer = ({ errorPlaceholder, loading, loadingPlacehol
|
|
|
19
25
|
e.stopPropagation();
|
|
20
26
|
onDragOver === null || onDragOver === void 0 ? void 0 : onDragOver(e);
|
|
21
27
|
};
|
|
22
|
-
return (_jsx(Document, { file: pdfUrl, error: errorPlaceholder, loading: loadingPlaceholder, onLoadSuccess: handleDocumentLoadSuccess, noData: loading ? loadingPlaceholder : undefined, children: pages.map(pageNumber => {
|
|
28
|
+
return (_jsx(Document, { file: pdfUrl, options: documentOptions, error: errorPlaceholder, loading: loadingPlaceholder, onLoadSuccess: handleDocumentLoadSuccess, noData: loading ? loadingPlaceholder : undefined, children: pages.map(pageNumber => {
|
|
23
29
|
return (_jsx("div", { "data-page-number": pageNumber, className: "dte-pdf-document-renderer-page", onDragOver: handlePageDragOver, onDrop: e => handlePageDrop(e, pageNumber), children: _jsx(Page, { loading: loadingPlaceholder, onLoadSuccess: e => {
|
|
24
30
|
if (e._pageIndex + 1 === numPages) {
|
|
25
31
|
onDocumentLoadSuccess === null || onDocumentLoadSuccess === void 0 ? void 0 : onDocumentLoadSuccess(numPages);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-document-renderer.js","sourceRoot":"","sources":["../../../src/components/pdf-canvas/pdf-document-renderer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,yCAAyC,CAAC;AACjD,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,4BAA4B,CAAC,CAAC,4CAA4C;
|
|
1
|
+
{"version":3,"file":"pdf-document-renderer.js","sourceRoot":"","sources":["../../../src/components/pdf-canvas/pdf-document-renderer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,yCAAyC,CAAC;AACjD,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC,CAAC,4CAA4C;AAEzG;;;;GAIG;AACH,MAAM,eAAe,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAapD,MAAM,CAAC,MAAM,mBAAmB,GAAiC,CAAC,EAC9D,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,MAAM,EACN,SAAS,EACT,MAAM,GACT,EAAE,EAAE;IACD,MAAM,EACF,yBAAyB,EAAE,iBAAiB,EAC5C,QAAQ,EACR,KAAK,GACR,GAAG,sBAAsB,EAAE,CAAC;IAE7B,MAAM,yBAAyB,GAAG,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE;QACrE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,CAA4B,EAAE,UAAkB,EAAE,EAAE;QACxE,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,CAA4B,EAAE,EAAE;QACxD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,QAAQ,IACL,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,kBAAkB,EAC3B,aAAa,EAAE,yBAAyB,EACxC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,YAE/C,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACpB,OAAO,CACH,kCAEsB,UAAU,EAC5B,SAAS,EAAC,gCAAgC,EAC1C,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,YAE1C,KAAC,IAAI,IACD,OAAO,EAAE,kBAAkB,EAC3B,aAAa,EAAE,CAAC,CAAC,EAAE;wBACf,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;4BAChC,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAG,QAAQ,CAAC,CAAC;wBACtC,CAAC;oBACL,CAAC,EACD,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,KAAK,EACtB,qBAAqB,EAAE,KAAK,GAC9B,IAjBG,QAAQ,UAAU,EAAE,CAkBvB,CACT,CAAC;QACN,CAAC,CAAC,GACK,CACd,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -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,
|
|
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;
|
|
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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare const PDFJS_WASM_URL: string;
|
|
2
2
|
//# sourceMappingURL=pdfjs-init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdfjs-init.d.ts","sourceRoot":"","sources":["../../../src/utils/pdf/pdfjs-init.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"pdfjs-init.d.ts","sourceRoot":"","sources":["../../../src/utils/pdf/pdfjs-init.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,cAAc,QAAwD,CAAC"}
|
|
@@ -25,4 +25,14 @@ if (typeof window !== 'undefined' &&
|
|
|
25
25
|
pdfjs.GlobalWorkerOptions.workerSrc === 'pdf.worker.mjs')) {
|
|
26
26
|
pdfjs.GlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;
|
|
27
27
|
}
|
|
28
|
+
/*
|
|
29
|
+
* pdfjs-dist 5.x moved its wasm-backed image codecs (OpenJPEG for JPX/JPEG2000, JBIG2, qcms)
|
|
30
|
+
* out of build/ into a sibling wasm/ directory, gated behind the `wasmUrl` document-load option.
|
|
31
|
+
* That option defaults to null, and the worker builds each fetch path as `${wasmUrl}<file>` -
|
|
32
|
+
* so with no wasmUrl set it literally tries to import "nullopenjpeg_nowasm_fallback.js" and the
|
|
33
|
+
* JPX decoder throws, silently dropping any JPEG2000 image in the PDF. Point it at the same
|
|
34
|
+
* unpkg-hosted version's wasm/ folder (must end with a trailing slash - it's string-concatenated
|
|
35
|
+
* with the filename, not resolved as a URL).
|
|
36
|
+
*/
|
|
37
|
+
export const PDFJS_WASM_URL = `https://unpkg.com/pdfjs-dist@${pdfjs.version}/wasm/`;
|
|
28
38
|
//# sourceMappingURL=pdfjs-init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdfjs-init.js","sourceRoot":"","sources":["../../../src/utils/pdf/pdfjs-init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,IACI,OAAO,MAAM,KAAK,WAAW;IAC7B,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS;QACjC,KAAK,CAAC,mBAAmB,CAAC,SAAS,KAAK,gBAAgB,CAAC,EAC/D,CAAC;IACC,KAAK,CAAC,mBAAmB,CAAC,SAAS,GAAG,gCAAgC,KAAK,CAAC,OAAO,2BAA2B,CAAC;AACnH,CAAC"}
|
|
1
|
+
{"version":3,"file":"pdfjs-init.js","sourceRoot":"","sources":["../../../src/utils/pdf/pdfjs-init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,IACI,OAAO,MAAM,KAAK,WAAW;IAC7B,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS;QACjC,KAAK,CAAC,mBAAmB,CAAC,SAAS,KAAK,gBAAgB,CAAC,EAC/D,CAAC;IACC,KAAK,CAAC,mBAAmB,CAAC,SAAS,GAAG,gCAAgC,KAAK,CAAC,OAAO,2BAA2B,CAAC;AACnH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,gCAAgC,KAAK,CAAC,OAAO,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -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
|
-
<
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
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 ?
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
|
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}
|
|
@@ -3,7 +3,14 @@ import { Document, Page } from 'react-pdf';
|
|
|
3
3
|
import 'react-pdf/dist/Page/AnnotationLayer.css';
|
|
4
4
|
import 'react-pdf/dist/Page/TextLayer.css';
|
|
5
5
|
import { usePdfDocumentRenderer } from '../../hooks';
|
|
6
|
-
import '../../utils/pdf/pdfjs-init'; // Initialize PDF.js worker at a module load
|
|
6
|
+
import { PDFJS_WASM_URL } from '../../utils/pdf/pdfjs-init'; // Initialize PDF.js worker at a module load
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
* Defined outside the component (per react-pdf's own guidance for `options`) so it's referentially
|
|
10
|
+
* stable across renders - passing a fresh object each render would make react-pdf treat the file as
|
|
11
|
+
* "changed" and reload the document.
|
|
12
|
+
*/
|
|
13
|
+
const documentOptions = { wasmUrl: PDFJS_WASM_URL };
|
|
7
14
|
|
|
8
15
|
interface PdfDocumentRendererProps {
|
|
9
16
|
pdfUrl: string;
|
|
@@ -51,6 +58,7 @@ export const PdfDocumentRenderer: FC<PdfDocumentRendererProps> = ({
|
|
|
51
58
|
return (
|
|
52
59
|
<Document
|
|
53
60
|
file={pdfUrl}
|
|
61
|
+
options={documentOptions}
|
|
54
62
|
error={errorPlaceholder}
|
|
55
63
|
loading={loadingPlaceholder}
|
|
56
64
|
onLoadSuccess={handleDocumentLoadSuccess}
|
|
@@ -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 {
|
|
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
|
+
};
|
|
@@ -28,3 +28,14 @@ if (
|
|
|
28
28
|
) {
|
|
29
29
|
pdfjs.GlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;
|
|
30
30
|
}
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
* pdfjs-dist 5.x moved its wasm-backed image codecs (OpenJPEG for JPX/JPEG2000, JBIG2, qcms)
|
|
34
|
+
* out of build/ into a sibling wasm/ directory, gated behind the `wasmUrl` document-load option.
|
|
35
|
+
* That option defaults to null, and the worker builds each fetch path as `${wasmUrl}<file>` -
|
|
36
|
+
* so with no wasmUrl set it literally tries to import "nullopenjpeg_nowasm_fallback.js" and the
|
|
37
|
+
* JPX decoder throws, silently dropping any JPEG2000 image in the PDF. Point it at the same
|
|
38
|
+
* unpkg-hosted version's wasm/ folder (must end with a trailing slash - it's string-concatenated
|
|
39
|
+
* with the filename, not resolved as a URL).
|
|
40
|
+
*/
|
|
41
|
+
export const PDFJS_WASM_URL = `https://unpkg.com/pdfjs-dist@${pdfjs.version}/wasm/`;
|