@servicetitan/dte-pdf-editor 1.35.0 → 1.36.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/README.md +28 -12
- package/dist/components/field-config-panel/advanced-settings.d.ts.map +1 -1
- package/dist/components/field-config-panel/advanced-settings.js +20 -10
- package/dist/components/field-config-panel/advanced-settings.js.map +1 -1
- package/dist/components/field-config-panel/formula-generator.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-generator.js +2 -1
- package/dist/components/field-config-panel/formula-generator.js.map +1 -1
- package/dist/components/field-config-panel/formula-modal.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-modal.js +47 -6
- package/dist/components/field-config-panel/formula-modal.js.map +1 -1
- package/dist/components/field-config-panel/formula-workspace.d.ts +1 -0
- package/dist/components/field-config-panel/formula-workspace.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-workspace.js +10 -4
- package/dist/components/field-config-panel/formula-workspace.js.map +1 -1
- package/dist/components/field-config-panel/result-type-selector.d.ts.map +1 -1
- package/dist/components/field-config-panel/result-type-selector.js +1 -0
- package/dist/components/field-config-panel/result-type-selector.js.map +1 -1
- package/dist/components/pdf-view/pdf-view-calculated.d.ts +1 -0
- package/dist/components/pdf-view/pdf-view-calculated.d.ts.map +1 -1
- package/dist/components/pdf-view/pdf-view-calculated.js +20 -3
- package/dist/components/pdf-view/pdf-view-calculated.js.map +1 -1
- package/dist/components/pdf-view/pdf-view-fillable.d.ts.map +1 -1
- package/dist/components/pdf-view/pdf-view-fillable.js +5 -2
- package/dist/components/pdf-view/pdf-view-fillable.js.map +1 -1
- package/dist/components/pdf-view/pdf-view.d.ts +6 -0
- package/dist/components/pdf-view/pdf-view.d.ts.map +1 -1
- package/dist/components/pdf-view/pdf-view.js +2 -2
- package/dist/components/pdf-view/pdf-view.js.map +1 -1
- package/dist/constants/calculated.constants.d.ts +2 -0
- package/dist/constants/calculated.constants.d.ts.map +1 -1
- package/dist/constants/calculated.constants.js +2 -0
- package/dist/constants/calculated.constants.js.map +1 -1
- package/dist/hooks/useFormulaEditor.d.ts +3 -0
- package/dist/hooks/useFormulaEditor.d.ts.map +1 -1
- package/dist/hooks/useFormulaEditor.js +24 -1
- package/dist/hooks/useFormulaEditor.js.map +1 -1
- package/dist/interface/types.d.ts +6 -1
- package/dist/interface/types.d.ts.map +1 -1
- package/dist/interface/types.js.map +1 -1
- package/dist/utils/data-model/extract-fields.utils.d.ts.map +1 -1
- package/dist/utils/data-model/extract-fields.utils.js +11 -1
- package/dist/utils/data-model/extract-fields.utils.js.map +1 -1
- package/dist/utils/formula/evaluate-formula.utils.d.ts +10 -2
- package/dist/utils/formula/evaluate-formula.utils.d.ts.map +1 -1
- package/dist/utils/formula/evaluate-formula.utils.js +205 -4
- package/dist/utils/formula/evaluate-formula.utils.js.map +1 -1
- package/dist/utils/formula/format-calculated-result.utils.d.ts +1 -1
- package/dist/utils/formula/format-calculated-result.utils.d.ts.map +1 -1
- package/dist/utils/formula/format-calculated-result.utils.js +29 -8
- package/dist/utils/formula/format-calculated-result.utils.js.map +1 -1
- package/dist/utils/formula/validate-formula.utils.d.ts +1 -1
- package/dist/utils/formula/validate-formula.utils.d.ts.map +1 -1
- package/dist/utils/formula/validate-formula.utils.js +15 -1
- package/dist/utils/formula/validate-formula.utils.js.map +1 -1
- package/dist/utils/shared/date.utils.d.ts +2 -0
- package/dist/utils/shared/date.utils.d.ts.map +1 -0
- package/dist/utils/shared/date.utils.js +6 -0
- package/dist/utils/shared/date.utils.js.map +1 -0
- package/dist/utils/shared/index.d.ts +1 -0
- package/dist/utils/shared/index.d.ts.map +1 -1
- package/dist/utils/shared/index.js +1 -0
- package/dist/utils/shared/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/field-config-panel/advanced-settings.tsx +103 -77
- package/src/components/field-config-panel/formula-generator.tsx +2 -1
- package/src/components/field-config-panel/formula-modal.tsx +46 -6
- package/src/components/field-config-panel/formula-workspace.tsx +21 -7
- package/src/components/field-config-panel/result-type-selector.tsx +1 -0
- package/src/components/pdf-view/pdf-view-calculated.tsx +20 -3
- package/src/components/pdf-view/pdf-view-fillable.tsx +6 -3
- package/src/components/pdf-view/pdf-view.tsx +8 -0
- package/src/constants/calculated.constants.ts +4 -0
- package/src/hooks/useFormulaEditor.ts +32 -1
- package/src/interface/types.ts +7 -1
- package/src/utils/data-model/extract-fields.utils.ts +13 -1
- package/src/utils/formula/evaluate-formula.utils.ts +271 -5
- package/src/utils/formula/format-calculated-result.utils.ts +32 -10
- package/src/utils/formula/validate-formula.utils.ts +24 -0
- package/src/utils/shared/date.utils.ts +6 -0
- package/src/utils/shared/index.ts +1 -0
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ integration, e-signature support, fillable form fields, and calculated fields wi
|
|
|
11
11
|
- ✍️ **E-Signature Support**: Add signature, initials, date signed, and full name fields
|
|
12
12
|
- 📝 **Fillable Fields**: Support for text, number, date, checkbox, and radio button inputs
|
|
13
13
|
- 🧮 **Calculated Fields**: Formula-based fields with validation, autosuggest, and advanced formatting (number, currency,
|
|
14
|
-
percent, rounding, separators)
|
|
14
|
+
percent, date, rounding, separators)
|
|
15
15
|
- 📋 **Generic Fields**: Custom table and text blocks with configurable rows/cells and inline editing in view mode
|
|
16
16
|
- 👥 **Multi-Recipient Support**: Assign fields to different recipients with color-coded visualization
|
|
17
17
|
- ⚙️ **Field Configuration**: Configure field properties including position, size, label, recipient assignment,
|
|
@@ -19,13 +19,25 @@ integration, e-signature support, fillable form fields, and calculated fields wi
|
|
|
19
19
|
- 👁️ **View Mode**: Display PDFs with filled data in a read-only or interactive view mode (including generic fields via
|
|
20
20
|
`PdfViewGeneric`)
|
|
21
21
|
|
|
22
|
-
### Recent changes (vs master) — feature/DTE-
|
|
23
|
-
|
|
24
|
-
- **
|
|
25
|
-
|
|
22
|
+
### Recent changes (vs master) — feature/DTE-3900
|
|
23
|
+
|
|
24
|
+
- **Date fields in formulas**: Calculated fields now support date-typed fields from the data model and fillable date
|
|
25
|
+
fields. Date arithmetic uses day-based semantics (date + number = add days, date - date = day difference). The `*` and
|
|
26
|
+
`/` operators are disabled when date fields are present, enforced in both the UI and validation.
|
|
27
|
+
- **Date result type**: New `date` option in the result type selector. When the formula contains date fields, the result
|
|
28
|
+
type is automatically set to `date`. Advanced settings show a customizable date format (tokens: `YYYY`, `YY`, `MMMM`,
|
|
29
|
+
`MMM`, `MM`, `M`, `DD`, `D`) instead of numeric rounding/separator controls.
|
|
30
|
+
- **CalculatedFieldFormat**: Extended with `dateFormat?: string` (custom format pattern) and
|
|
31
|
+
`dateFieldPaths?: string[]` (persisted date field paths for evaluation).
|
|
32
|
+
- **SchemaFieldType**: New `fieldType` on `FieldTypeOption` tracks whether a schema field is `'number'` or `'date'`.
|
|
33
|
+
- **Validation**: Date formulas are restricted to `+`, `-`, and parentheses only. Numeric literals are capped at
|
|
34
|
+
365 days.
|
|
35
|
+
- **Generic fields** (DTE-3811): Field type `generic` with subTypes `table` and `text`. Tables support configurable
|
|
36
|
+
header and body rows with editable cells; text blocks support inline editing. Both are rendered in the overlay and in
|
|
37
|
+
view mode.
|
|
26
38
|
- **PdfField**: Added optional `data?: FieldDataType` for generic fields (`GenericFieldTableDataType` for tables,
|
|
27
39
|
`GenericFieldTextDataType` for text).
|
|
28
|
-
- **Field config panel**:
|
|
40
|
+
- **Field config panel**: **Table configs** (TableConfigs) for generic table fields—manage header visibility,
|
|
29
41
|
header/body row heights, and cell values. Inline editable components for text and table content in the overlay.
|
|
30
42
|
- **Sidebar**: Generic field type list (Text, Table) in the field menu for drag-and-drop placement.
|
|
31
43
|
- **PdfView**: Generic fields are rendered in view mode via `PdfViewGeneric` with the same inline editing support.
|
|
@@ -172,9 +184,9 @@ interface PdfField {
|
|
|
172
184
|
path?: string;
|
|
173
185
|
recipient?: string;
|
|
174
186
|
description?: string;
|
|
175
|
-
data?: FieldDataType;
|
|
176
|
-
formula?: StructuredFormula;
|
|
177
|
-
formulaFormat?: CalculatedFieldFormat; // for calculated fields
|
|
187
|
+
data?: FieldDataType; // for generic fields (table/text)
|
|
188
|
+
formula?: StructuredFormula; // for calculated fields
|
|
189
|
+
formulaFormat?: CalculatedFieldFormat; // for calculated fields (includes dateFormat, dateFieldPaths)
|
|
178
190
|
}
|
|
179
191
|
```
|
|
180
192
|
|
|
@@ -232,8 +244,12 @@ Calculated fields use a structured formula and optional display format:
|
|
|
232
244
|
|
|
233
245
|
- **StructuredFormula**: Token list (numbers, operators `+ - * /`, parentheses, field references) used for validation
|
|
234
246
|
and safe editing.
|
|
235
|
-
- **CalculatedFieldFormat**: Controls result display: `resultType` (`number` | `currency` | `percent`
|
|
236
|
-
decimal places, thousands/decimal separators, prefix/postfix text
|
|
247
|
+
- **CalculatedFieldFormat**: Controls result display: `resultType` (`number` | `currency` | `percent` | `date`),
|
|
248
|
+
rounding mode, decimal places, thousands/decimal separators, prefix/postfix text, `dateFormat` (custom pattern using
|
|
249
|
+
`YYYY`, `MM`, `DD`, etc.), and `dateFieldPaths` (persisted paths of date-typed fields for date-aware evaluation).
|
|
250
|
+
|
|
251
|
+
Date fields in formulas use day-based arithmetic: `date + number` adds days, `date - date` yields a day count. Only `+`,
|
|
252
|
+
`-`, and parentheses are allowed when date fields are present.
|
|
237
253
|
|
|
238
254
|
Schema fields can opt in via `options.useInCalculatedFields` and `options.useInConditionals` for data model extraction
|
|
239
255
|
in formula builder and conditionals.
|
|
@@ -404,7 +420,7 @@ Click on a field to open the configuration panel where you can:
|
|
|
404
420
|
- Set required status (fillable fields, except checkbox)
|
|
405
421
|
- Update the data model path
|
|
406
422
|
- For **calculated fields**: edit formula (with validation and autosuggest from data model + fillable fields), set
|
|
407
|
-
result type (number/currency/percent), rounding, decimals, and
|
|
423
|
+
result type (number/currency/percent/date), rounding, decimals, separators, and date format
|
|
408
424
|
- For **generic table fields**: configure header visibility, header/body row heights, and cell values via Table configs;
|
|
409
425
|
generic text fields support inline editing in the overlay
|
|
410
426
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advanced-settings.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/advanced-settings.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"advanced-settings.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/advanced-settings.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,UAAU,qBAAqB;IAC3B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC;CAC9D;AA2BD,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAmGtD,CAAC"}
|
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Flex, SegmentedControl, Switch, Text } from '@servicetitan/anvil2';
|
|
3
|
+
import { DEFAULT_DATE_FORMAT } from '../../constants';
|
|
3
4
|
const ROUNDING_OPTIONS = [
|
|
4
5
|
{ label: 'Round', value: 'round' },
|
|
5
6
|
{ label: 'Floor', value: 'floor' },
|
|
6
7
|
{ label: 'Ceil', value: 'ceil' },
|
|
7
8
|
];
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const DateFormatSettings = ({ format, setFormat }) => {
|
|
10
|
+
var _a;
|
|
11
|
+
return (_jsxs("div", { className: "dte-formula-advanced", children: [_jsx(Text, { variant: "body", size: "small", children: "Date format" }), _jsx("input", { type: "text", className: "dte-formula-advanced-input", style: { width: '100%' }, value: (_a = format.dateFormat) !== null && _a !== void 0 ? _a : DEFAULT_DATE_FORMAT, placeholder: DEFAULT_DATE_FORMAT, onChange: e => setFormat(prev => ({ ...prev, dateFormat: e.target.value })) }), _jsx(Text, { variant: "body", size: "small", color: "tertiary", children: "Tokens: YYYY, YY, MMMM, MMM, MM, M, DD, D" })] }));
|
|
12
|
+
};
|
|
13
|
+
export const AdvancedSettings = ({ format, setFormat }) => {
|
|
14
|
+
if (format.resultType === 'date') {
|
|
15
|
+
return _jsx(DateFormatSettings, { format: format, setFormat: setFormat });
|
|
16
|
+
}
|
|
17
|
+
return (_jsxs("div", { className: "dte-formula-advanced", children: [_jsx(Text, { variant: "body", size: "small", children: "Rounding mode" }), _jsx(SegmentedControl, { size: "medium", selected: format.roundingMode, onChange: (roundingMode) => setFormat(prev => ({ ...prev, roundingMode })), fill: true, children: ROUNDING_OPTIONS.map(opt => (_jsx(SegmentedControl.Segment, { value: opt.value, children: opt.label }, opt.value))) }), _jsxs(Flex, { alignItems: "center", justifyContent: "space-between", children: [_jsx(Text, { variant: "body", size: "small", children: "Decimal places" }), _jsx(Text, { variant: "body", size: "small", className: "dte-formula-advanced-value", children: format.decimals })] }), _jsx("input", { type: "range", min: 0, max: 10, value: format.decimals, onChange: e => setFormat(prev => ({
|
|
13
18
|
...prev,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
decimals: Number(e.target.value),
|
|
20
|
+
})) }), _jsx(Switch, { checked: format.thousandsSeparator, onChange: (_e, { checked }) => {
|
|
21
|
+
setFormat(prev => ({
|
|
22
|
+
...prev,
|
|
23
|
+
thousandsSeparator: checked,
|
|
24
|
+
decimalSeparatorEnabled: checked,
|
|
25
|
+
decimalSeparator: checked ? prev.decimalSeparator : '.',
|
|
26
|
+
}));
|
|
27
|
+
}, label: "Thousands separator", value: "switch-example" }), format.thousandsSeparator && (_jsx(SegmentedControl, { size: "medium", fill: true, selected: format.decimalSeparator, onChange: (decimalSeparator) => setFormat(prev => ({ ...prev, decimalSeparator })), children: ['.', ','].map(decimalSeparator => (_jsx(SegmentedControl.Segment, { value: decimalSeparator, children: decimalSeparator }, decimalSeparator))) })), _jsx(Text, { variant: "body", size: "small", children: "Result affixes" }), _jsxs(Flex, { gap: "2", alignItems: "center", children: [_jsx(Text, { variant: "body", size: "small", children: "Prefix" }), _jsx("input", { type: "text", className: "dte-formula-advanced-input", value: format.prefixText, onChange: e => setFormat(prev => ({ ...prev, prefixText: e.target.value })) }), _jsx(Text, { variant: "body", size: "small", children: "Postfix" }), _jsx("input", { type: "text", className: "dte-formula-advanced-input", value: format.postfixText, onChange: e => setFormat(prev => ({ ...prev, postfixText: e.target.value })) })] })] }));
|
|
28
|
+
};
|
|
19
29
|
//# sourceMappingURL=advanced-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advanced-settings.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/advanced-settings.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"advanced-settings.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/advanced-settings.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-generator.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-generator.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAA+B,MAAM,OAAO,CAAC;AACxD,OAAO,EACH,qBAAqB,EAGrB,QAAQ,EAER,YAAY,EACZ,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,WAAW,qBAAqB;IAClC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,eAAe,CAAC,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACrF;
|
|
1
|
+
{"version":3,"file":"formula-generator.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-generator.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAA+B,MAAM,OAAO,CAAC;AACxD,OAAO,EACH,qBAAqB,EAGrB,QAAQ,EAER,YAAY,EACZ,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,WAAW,qBAAqB;IAClC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,eAAe,CAAC,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACrF;AAiBD,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAiDtD,CAAC"}
|
|
@@ -15,6 +15,7 @@ function getFillableFilteredBuySubTypeFields(fields, subTypes) {
|
|
|
15
15
|
type: FieldTypeEnum.fillable,
|
|
16
16
|
subType: f.subType,
|
|
17
17
|
path: f.path,
|
|
18
|
+
fieldType: f.subType === 'date' ? 'date' : 'number',
|
|
18
19
|
});
|
|
19
20
|
});
|
|
20
21
|
}
|
|
@@ -25,7 +26,7 @@ export const FormulaGenerator = ({ dataModel, documentFields = [], formula, form
|
|
|
25
26
|
onlyUseInCalculatedFields: true,
|
|
26
27
|
})
|
|
27
28
|
: [], [dataModel]);
|
|
28
|
-
const fillableFieldsFromDocument = useMemo(() => getFillableFilteredBuySubTypeFields(documentFields, ['number']), [documentFields]);
|
|
29
|
+
const fillableFieldsFromDocument = useMemo(() => getFillableFilteredBuySubTypeFields(documentFields, ['number', 'date']), [documentFields]);
|
|
29
30
|
const handleSave = (newFormula, format) => {
|
|
30
31
|
onFormulaChange === null || onFormulaChange === void 0 ? void 0 : onFormulaChange(newFormula, format);
|
|
31
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-generator.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-generator.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,QAAQ,MAAM,2DAA2D,CAAC;AACjF,OAAO,EAAM,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAEH,aAAa,GAMhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/C,SAAS,mCAAmC,CACxC,MAAkB,EAClB,QAA2B;IAE3B,OAAO,MAAM;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC;SAC/E,GAAG,CAAC,CAAC,CAAC,EAAE;;QAAC,OAAA,CAAC;YACP,KAAK,EAAE,MAAA,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,mCAAI,EAAE;YAChC,IAAI,EAAE,aAAa,CAAC,QAAQ;YAC5B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"formula-generator.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-generator.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,QAAQ,MAAM,2DAA2D,CAAC;AACjF,OAAO,EAAM,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAEH,aAAa,GAMhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/C,SAAS,mCAAmC,CACxC,MAAkB,EAClB,QAA2B;IAE3B,OAAO,MAAM;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC;SAC/E,GAAG,CAAC,CAAC,CAAC,EAAE;;QAAC,OAAA,CAAC;YACP,KAAK,EAAE,MAAA,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,mCAAI,EAAE;YAChC,IAAI,EAAE,aAAa,CAAC,QAAQ;YAC5B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACtD,CAAC,CAAA;KAAA,CAAC,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAA8B,CAAC,EACxD,SAAS,EACT,cAAc,GAAG,EAAE,EACnB,OAAO,EACP,aAAa,EACb,eAAe,GAClB,EAAE,EAAE;IACD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,OAAO,CAC3B,GAAG,EAAE,CACD,SAAS;QACL,CAAC,CAAC,iCAAiC,CAAC,SAAS,EAAE;YACzC,yBAAyB,EAAE,IAAI;SAClC,CAAC;QACJ,CAAC,CAAC,EAAE,EACZ,CAAC,SAAS,CAAC,CACd,CAAC;IACF,MAAM,0BAA0B,GAAG,OAAO,CACtC,GAAG,EAAE,CAAC,mCAAmC,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAC7E,CAAC,cAAc,CAAC,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,UAA6B,EAAE,MAA6B,EAAE,EAAE;QAChF,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,OAAO,CACH,MAAC,QAAQ,eACL,KAAC,MAAM,IACH,UAAU,EAAC,WAAW,EACtB,SAAS,EAAC,YAAY,EACtB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,kCAG5B,EAER,SAAS,IAAI,CACV,KAAC,YAAY,IACT,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,0BAA0B,EAAE,0BAA0B,EACtD,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAClC,MAAM,EAAE,UAAU,GACpB,CACL,IACM,CACd,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-modal.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-modal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"formula-modal.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-modal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAA6C,MAAM,OAAO,CAAC;AAGtE,OAAO,EACH,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAyC/B,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,0BAA0B,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/C,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC3E;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAkM9C,CAAC"}
|
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Button, Dialog, Divider, Flex } from '@servicetitan/anvil2';
|
|
3
3
|
import IconRedo from '@servicetitan/anvil2/assets/icons/material/round/redo.svg';
|
|
4
4
|
import IconUndo from '@servicetitan/anvil2/assets/icons/material/round/undo.svg';
|
|
5
|
-
import { useCallback, useMemo, useState } from 'react';
|
|
6
|
-
import { MODAL_CONTENT_MAX_HEIGHT } from '../../constants';
|
|
5
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
6
|
+
import { DEFAULT_DATE_FORMAT, MODAL_CONTENT_MAX_HEIGHT } from '../../constants';
|
|
7
7
|
import { useFormulaEditor } from '../../hooks';
|
|
8
8
|
import { parseExpression, tokenizeExpression, tokensToExpression, validateFormula, } from '../../utils';
|
|
9
9
|
import { FieldSidebar } from './field-sidebar';
|
|
@@ -63,17 +63,51 @@ export const FormulaModal = ({ dataModelGroups, fillableFieldsFromDocument = [],
|
|
|
63
63
|
}
|
|
64
64
|
return m;
|
|
65
65
|
}, [allFields, fillableFieldsFromDocument]);
|
|
66
|
+
const knownDateFields = useMemo(() => {
|
|
67
|
+
const set = new Set();
|
|
68
|
+
for (const f of allFields) {
|
|
69
|
+
if (f.fieldType === 'date' && f.path) {
|
|
70
|
+
set.add(f.path);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
for (const f of fillableFieldsFromDocument) {
|
|
74
|
+
if (f.fieldType === 'date' && f.path) {
|
|
75
|
+
set.add(f.path);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return set;
|
|
79
|
+
}, [allFields, fillableFieldsFromDocument]);
|
|
66
80
|
const currentExpression = useMemo(() => tokensToExpression(initialFormula), [initialFormula]);
|
|
67
81
|
const [highlightElementPath, setHighlightElementPath] = useState('');
|
|
68
82
|
const [format, setFormat] = useState(() => initialFormat !== null && initialFormat !== void 0 ? initialFormat : DEFAULT_CALCULATED_FIELD_FORMAT);
|
|
69
83
|
const [advancedOpen, setAdvancedOpen] = useState(false);
|
|
70
84
|
const formulaEditor = useFormulaEditor({
|
|
71
85
|
currentExpression,
|
|
86
|
+
knownDateFields,
|
|
72
87
|
opened: true,
|
|
73
88
|
pathToLabel,
|
|
74
89
|
});
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
if (formulaEditor.expressionHasDateFields && format.resultType !== 'date') {
|
|
92
|
+
setFormat(prev => {
|
|
93
|
+
var _a;
|
|
94
|
+
return ({
|
|
95
|
+
...prev,
|
|
96
|
+
resultType: 'date',
|
|
97
|
+
dateFormat: (_a = prev.dateFormat) !== null && _a !== void 0 ? _a : DEFAULT_DATE_FORMAT,
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
setAdvancedOpen(true);
|
|
101
|
+
}
|
|
102
|
+
else if (!formulaEditor.expressionHasDateFields && format.resultType === 'date') {
|
|
103
|
+
setFormat(prev => ({
|
|
104
|
+
...prev,
|
|
105
|
+
resultType: 'number',
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
}, [formulaEditor.expressionHasDateFields, format.resultType]);
|
|
75
109
|
const parsedTokens = useMemo(() => parseExpression(formulaEditor.draftExpression, validPaths, pathToLabel), [formulaEditor.draftExpression, validPaths, pathToLabel]);
|
|
76
|
-
const formulaValidation = useMemo(() => validateFormula({ tokens: parsedTokens }, validPaths), [parsedTokens, validPaths]);
|
|
110
|
+
const formulaValidation = useMemo(() => validateFormula({ tokens: parsedTokens }, validPaths, knownDateFields), [parsedTokens, validPaths, knownDateFields]);
|
|
77
111
|
const unknownFieldErrors = useMemo(() => {
|
|
78
112
|
const parts = tokenizeExpression(formulaEditor.draftExpression);
|
|
79
113
|
const errors = [];
|
|
@@ -88,15 +122,22 @@ export const FormulaModal = ({ dataModelGroups, fillableFieldsFromDocument = [],
|
|
|
88
122
|
onClose();
|
|
89
123
|
}, [onClose]);
|
|
90
124
|
const handleSave = useCallback(() => {
|
|
91
|
-
|
|
125
|
+
const usedDatePaths = parsedTokens
|
|
126
|
+
.filter(t => t.type === 'field' && knownDateFields.has(t.path))
|
|
127
|
+
.map(t => t.path);
|
|
128
|
+
const savedFormat = {
|
|
129
|
+
...format,
|
|
130
|
+
dateFieldPaths: usedDatePaths.length > 0 ? [...new Set(usedDatePaths)] : undefined,
|
|
131
|
+
};
|
|
132
|
+
onSave({ tokens: parsedTokens }, savedFormat);
|
|
92
133
|
onClose();
|
|
93
|
-
}, [format, onClose, onSave, parsedTokens]);
|
|
134
|
+
}, [format, knownDateFields, onClose, onSave, parsedTokens]);
|
|
94
135
|
const validationError = (_b = (_a = unknownFieldErrors[0]) !== null && _a !== void 0 ? _a : formulaValidation.errors[0]) !== null && _b !== void 0 ? _b : '';
|
|
95
136
|
const isInvalid = !formulaValidation.valid || unknownFieldErrors.length > 0;
|
|
96
137
|
const canSave = formulaValidation.valid && unknownFieldErrors.length === 0 && parsedTokens.length > 0;
|
|
97
138
|
return (_jsxs(Dialog, { open: true, onClose: handleClose, size: "xlarge", children: [_jsx(Dialog.Header, { children: "Formula Builder" }), _jsx(Divider, {}), _jsx(Dialog.Content, { children: _jsxs(Flex, { flex: 1, alignItems: "stretch", gap: 2, style: {
|
|
98
139
|
height: MODAL_CONTENT_MAX_HEIGHT,
|
|
99
140
|
overflowY: 'auto',
|
|
100
|
-
}, children: [_jsx(FieldSidebar, { fillableOptions: fillableFieldsFromDocument, mergeTagOptions: allFields, highlightElementPath: highlightElementPath, onHover: setHighlightElementPath, onSelect: formulaEditor.insertField, selectedPaths: formulaEditor.selectedFieldPaths }), _jsx(FormulaWorkspace, { editorRef: formulaEditor.editorRef, isInvalid: isInvalid && formulaEditor.isDirty, validationError: validationError, format: format, onResultTypeChange: nextType => setFormat(prev => ({ ...prev, resultType: nextType })), advancedOpen: advancedOpen, onToggleAdvanced: () => setAdvancedOpen(prev => !prev), setFormat: setFormat, onInput: formulaEditor.handleEditorInput, onKeyDown: formulaEditor.handleKeyDown, onClick: () => { }, onMouseUp: formulaEditor.handleEditorInput, onPaste: formulaEditor.handlePaste, onOperatorSelect: formulaEditor.insertOperator, onRemoveField: formulaEditor.removeFieldAtIndex, actions: _jsxs(Flex, { gap: "1", alignItems: "center", children: [_jsx(Button, { appearance: "ghost", size: "small", onClick: formulaEditor.undo, disabled: !formulaEditor.canUndo, "aria-label": "Undo", icon: IconUndo }), _jsx(Button, { appearance: "ghost", size: "small", onClick: formulaEditor.redo, disabled: !formulaEditor.canRedo, "aria-label": "Redo", icon: IconRedo })] }) })] }) }), _jsx(Divider, {}), _jsxs(Dialog.Footer, { sticky: true, children: [_jsx(Dialog.CancelButton, { onClick: handleClose, children: "Cancel" }), _jsx(Button, { onClick: handleSave, appearance: "primary", disabled: !canSave, children: "Save" })] })] }));
|
|
141
|
+
}, children: [_jsx(FieldSidebar, { fillableOptions: fillableFieldsFromDocument, mergeTagOptions: allFields, highlightElementPath: highlightElementPath, onHover: setHighlightElementPath, onSelect: formulaEditor.insertField, selectedPaths: formulaEditor.selectedFieldPaths }), _jsx(FormulaWorkspace, { disabledOperators: formulaEditor.disabledOperators, editorRef: formulaEditor.editorRef, isInvalid: isInvalid && formulaEditor.isDirty, validationError: validationError, format: format, onResultTypeChange: nextType => setFormat(prev => ({ ...prev, resultType: nextType })), advancedOpen: advancedOpen, onToggleAdvanced: () => setAdvancedOpen(prev => !prev), setFormat: setFormat, onInput: formulaEditor.handleEditorInput, onKeyDown: formulaEditor.handleKeyDown, onClick: () => { }, onMouseUp: formulaEditor.handleEditorInput, onPaste: formulaEditor.handlePaste, onOperatorSelect: formulaEditor.insertOperator, onRemoveField: formulaEditor.removeFieldAtIndex, actions: _jsxs(Flex, { gap: "1", alignItems: "center", children: [_jsx(Button, { appearance: "ghost", size: "small", onClick: formulaEditor.undo, disabled: !formulaEditor.canUndo, "aria-label": "Undo", icon: IconUndo }), _jsx(Button, { appearance: "ghost", size: "small", onClick: formulaEditor.redo, disabled: !formulaEditor.canRedo, "aria-label": "Redo", icon: IconRedo })] }) })] }) }), _jsx(Divider, {}), _jsxs(Dialog.Footer, { sticky: true, children: [_jsx(Dialog.CancelButton, { onClick: handleClose, children: "Cancel" }), _jsx(Button, { onClick: handleSave, appearance: "primary", disabled: !canSave, children: "Save" })] })] }));
|
|
101
142
|
};
|
|
102
143
|
//# sourceMappingURL=formula-modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-modal.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-modal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,QAAQ,MAAM,2DAA2D,CAAC;AACjF,OAAO,QAAQ,MAAM,2DAA2D,CAAC;AACjF,OAAO,EAAM,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"formula-modal.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { CalculatedFieldFormat } from '../../interface/types';
|
|
|
3
3
|
interface FormulaWorkspaceProps {
|
|
4
4
|
actions: ReactNode;
|
|
5
5
|
advancedOpen: boolean;
|
|
6
|
+
disabledOperators?: Set<string>;
|
|
6
7
|
editorRef: RefObject<HTMLDivElement | null>;
|
|
7
8
|
format: CalculatedFieldFormat;
|
|
8
9
|
isInvalid: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-workspace.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-workspace.tsx"],"names":[],"mappings":"AACA,OAAO,EACH,QAAQ,EACR,EAAE,EACF,aAAa,EACb,UAAU,EACV,SAAS,EACT,SAAS,EACT,cAAc,EAEjB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,UAAU,qBAAqB;IAC3B,OAAO,EAAE,SAAS,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACtD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,kBAAkB,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAC5E,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC3D,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"formula-workspace.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-workspace.tsx"],"names":[],"mappings":"AACA,OAAO,EACH,QAAQ,EACR,EAAE,EACF,aAAa,EACb,UAAU,EACV,SAAS,EACT,SAAS,EACT,cAAc,EAEjB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,UAAU,qBAAqB;IAC3B,OAAO,EAAE,SAAS,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACtD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,kBAAkB,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAC5E,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC3D,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA8FtD,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Alert, Button, Flex, LinkButton, Text } from '@servicetitan/anvil2';
|
|
3
3
|
import { useCallback, } from 'react';
|
|
4
4
|
import { CALCULATED_OPERATIONS } from '../../constants';
|
|
5
5
|
import { AdvancedSettings } from './advanced-settings';
|
|
6
6
|
import { ResultTypeSelector } from './result-type-selector';
|
|
7
|
-
export const FormulaWorkspace = ({ actions, advancedOpen, editorRef, format, isInvalid, onClick, onInput, onKeyDown, onMouseUp, onOperatorSelect, onPaste, onRemoveField, onResultTypeChange, onToggleAdvanced, setFormat, validationError, }) => {
|
|
7
|
+
export const FormulaWorkspace = ({ actions, advancedOpen, disabledOperators, editorRef, format, isInvalid, onClick, onInput, onKeyDown, onMouseUp, onOperatorSelect, onPaste, onRemoveField, onResultTypeChange, onToggleAdvanced, setFormat, validationError, }) => {
|
|
8
8
|
const handleClick = useCallback((e) => {
|
|
9
9
|
var _a;
|
|
10
10
|
const target = e.target;
|
|
@@ -21,9 +21,15 @@ export const FormulaWorkspace = ({ actions, advancedOpen, editorRef, format, isI
|
|
|
21
21
|
}
|
|
22
22
|
onClick(e);
|
|
23
23
|
}, [onClick, onRemoveField]);
|
|
24
|
-
return (_jsxs(Flex, { direction: "column", flex: 1, gap: 2, style: { padding: '12px' }, children: [
|
|
24
|
+
return (_jsxs(Flex, { direction: "column", flex: 1, gap: 2, style: { padding: '12px' }, children: [_jsxs(Text, { variant: "body", size: "small", children: ["Click a field on the left to add it. Use +, -,", ' ', (disabledOperators === null || disabledOperators === void 0 ? void 0 : disabledOperators.has('*')) ? '' : '*, /, and ', "parentheses to build formulas.", (disabledOperators === null || disabledOperators === void 0 ? void 0 : disabledOperators.has('*'))
|
|
25
|
+
? ' Multiply and divide are not available with date fields.'
|
|
26
|
+
: ''] }), _jsxs(Flex, { alignItems: "center", justifyContent: "space-between", children: [_jsx(Text, { variant: "body", size: "small", children: "Formula" }), actions] }), _jsx("div", { ref: editorRef, className: `dte-formula-editor ${isInvalid ? 'dte-formula-editor-invalid' : ''}`, role: "textbox", contentEditable: true, suppressContentEditableWarning: true, "data-placeholder": "e.g. order.total + order.tax", onInput: onInput, onKeyDown: onKeyDown, onClick: handleClick, onKeyUp: onInput, onMouseUp: onMouseUp, onPaste: e => {
|
|
25
27
|
e.preventDefault();
|
|
26
28
|
onPaste(e.clipboardData.getData('text/plain'));
|
|
27
|
-
} }), isInvalid && validationError && _jsx(Alert, { status: "danger", title: validationError }), _jsx(Flex, { gap: 1, children: CALCULATED_OPERATIONS.map(op =>
|
|
29
|
+
} }), isInvalid && validationError && _jsx(Alert, { status: "danger", title: validationError }), _jsx(Flex, { gap: 1, children: CALCULATED_OPERATIONS.map(op => {
|
|
30
|
+
var _a;
|
|
31
|
+
const isDisabled = (_a = disabledOperators === null || disabledOperators === void 0 ? void 0 : disabledOperators.has(op)) !== null && _a !== void 0 ? _a : false;
|
|
32
|
+
return (_jsx(Button, { onClick: () => onOperatorSelect(op), size: "small", disabled: isDisabled, title: isDisabled ? 'Not available with date fields' : undefined, children: op }, op));
|
|
33
|
+
}) }), _jsx(ResultTypeSelector, { format: format, onChange: onResultTypeChange }), _jsx(LinkButton, { appearance: "primary", onClick: onToggleAdvanced, children: advancedOpen ? 'Hide advanced settings' : 'Show advanced settings' }), advancedOpen && _jsx(AdvancedSettings, { format: format, setFormat: setFormat })] }));
|
|
28
34
|
};
|
|
29
35
|
//# sourceMappingURL=formula-workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formula-workspace.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-workspace.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAQH,WAAW,GACd,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"formula-workspace.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/formula-workspace.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-type-selector.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/result-type-selector.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,UAAU,uBAAuB;IAC7B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;CACrE;
|
|
1
|
+
{"version":3,"file":"result-type-selector.d.ts","sourceRoot":"","sources":["../../../src/components/field-config-panel/result-type-selector.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,UAAU,uBAAuB;IAC7B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;CACrE;AASD,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAe1D,CAAC"}
|
|
@@ -5,6 +5,7 @@ const RESULT_TYPE_OPTIONS = [
|
|
|
5
5
|
{ label: 'Number', value: 'number' },
|
|
6
6
|
{ label: 'Currency', value: 'currency' },
|
|
7
7
|
{ label: 'Percent', value: 'percent' },
|
|
8
|
+
{ label: 'Date', value: 'date' },
|
|
8
9
|
];
|
|
9
10
|
export const ResultTypeSelector = ({ format, onChange }) => (_jsxs(Fragment, { children: [_jsx(Text, { variant: "body", size: "small", children: "Result type" }), _jsx(Flex, { gap: 2, children: _jsx(SegmentedControl, { size: "medium", selected: format.resultType, onChange: onChange, fill: true, children: RESULT_TYPE_OPTIONS.map(opt => (_jsx(SegmentedControl.Segment, { value: opt.value, children: opt.label }, opt.value))) }) })] }));
|
|
10
11
|
//# sourceMappingURL=result-type-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-type-selector.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/result-type-selector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAM,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQrC,MAAM,mBAAmB,GAAoE;IACzF,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"result-type-selector.js","sourceRoot":"","sources":["../../../src/components/field-config-panel/result-type-selector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAM,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQrC,MAAM,mBAAmB,GAAoE;IACzF,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACtC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAgC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CACrF,MAAC,QAAQ,eACL,KAAC,IAAI,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,4BAE1B,EACP,KAAC,IAAI,IAAC,GAAG,EAAE,CAAC,YACR,KAAC,gBAAgB,IAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,kBAChF,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAC5B,KAAC,gBAAgB,CAAC,OAAO,IAAiB,KAAK,EAAE,GAAG,CAAC,KAAK,YACrD,GAAG,CAAC,KAAK,IADiB,GAAG,CAAC,KAAK,CAEb,CAC9B,CAAC,GACa,GAChB,IACA,CACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-view-calculated.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-calculated.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGlE,UAAU,sBAAsB;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"pdf-view-calculated.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-calculated.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGlE,UAAU,sBAAsB;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CA6BxD,CAAC"}
|
|
@@ -1,18 +1,35 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { evaluateFormula, formatCalculatedResult, resolvePdfDataValues } from '../../utils';
|
|
4
|
-
export const PdfViewCalculated = ({ data, field }) => {
|
|
4
|
+
export const PdfViewCalculated = ({ data, field, holidays }) => {
|
|
5
|
+
var _a;
|
|
6
|
+
const dateFieldPaths = useMemo(() => {
|
|
7
|
+
var _a;
|
|
8
|
+
const paths = (_a = field.formulaFormat) === null || _a === void 0 ? void 0 : _a.dateFieldPaths;
|
|
9
|
+
return (paths === null || paths === void 0 ? void 0 : paths.length) ? new Set(paths) : undefined;
|
|
10
|
+
}, [(_a = field.formulaFormat) === null || _a === void 0 ? void 0 : _a.dateFieldPaths]);
|
|
5
11
|
const displayValue = useMemo(() => {
|
|
6
12
|
var _a, _b, _c, _d;
|
|
7
13
|
if ((_b = (_a = field.formula) === null || _a === void 0 ? void 0 : _a.tokens) === null || _b === void 0 ? void 0 : _b.length) {
|
|
8
|
-
const value = evaluateFormula(field.formula, data);
|
|
14
|
+
const value = evaluateFormula(field.formula, data, dateFieldPaths, holidays);
|
|
15
|
+
if (value === null) {
|
|
16
|
+
return '';
|
|
17
|
+
}
|
|
9
18
|
return formatCalculatedResult(value, field.formulaFormat);
|
|
10
19
|
}
|
|
11
20
|
if (field.path) {
|
|
12
21
|
return (_c = resolvePdfDataValues(data, field.path)) !== null && _c !== void 0 ? _c : '';
|
|
13
22
|
}
|
|
14
23
|
return (_d = field.label) !== null && _d !== void 0 ? _d : '';
|
|
15
|
-
}, [
|
|
24
|
+
}, [
|
|
25
|
+
data,
|
|
26
|
+
dateFieldPaths,
|
|
27
|
+
field.formula,
|
|
28
|
+
field.formulaFormat,
|
|
29
|
+
field.label,
|
|
30
|
+
field.path,
|
|
31
|
+
holidays,
|
|
32
|
+
]);
|
|
16
33
|
return _jsx("div", { className: "dte-pdf-field-value", children: displayValue });
|
|
17
34
|
};
|
|
18
35
|
//# sourceMappingURL=pdf-view-calculated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-view-calculated.js","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-calculated.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,OAAO,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"pdf-view-calculated.js","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-calculated.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,OAAO,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAQ5F,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;;IACvF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;;QAChC,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,aAAa,0CAAE,cAAc,CAAC;QAClD,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC,EAAE,CAAC,MAAA,KAAK,CAAC,aAAa,0CAAE,cAAc,CAAC,CAAC,CAAC;IAE1C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;;QAC9B,IAAI,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,MAAM,0CAAE,MAAM,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC7E,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,EAAE,CAAC;YACd,CAAC;YACD,OAAO,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,MAAA,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,MAAA,KAAK,CAAC,KAAK,mCAAI,EAAE,CAAC;IAC7B,CAAC,EAAE;QACC,IAAI;QACJ,cAAc;QACd,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,aAAa;QACnB,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,IAAI;QACV,QAAQ;KACX,CAAC,CAAC;IAEH,OAAO,cAAK,SAAS,EAAC,qBAAqB,YAAE,YAAY,GAAO,CAAC;AACrE,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-view-fillable.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-fillable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGlG,UAAU,oBAAoB;IAC1B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACxE;AAED,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"pdf-view-fillable.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-fillable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGlG,UAAU,oBAAoB;IAC1B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACxE;AAED,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA4IpD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { getFieldPlaceholderText } from '../../utils';
|
|
2
|
+
import { dateToUtcZero, getFieldPlaceholderText } from '../../utils';
|
|
3
3
|
export const PdfViewFillable = ({ data, field, fillingBy, onDataChange, previewMode, }) => {
|
|
4
4
|
const resolvedValue = data === null || data === void 0 ? void 0 : data[field.path];
|
|
5
5
|
const isViewByCurrentRecipient = fillingBy === null || fillingBy === void 0 ? void 0 : fillingBy.includes(field.recipient);
|
|
@@ -46,7 +46,10 @@ export const PdfViewFillable = ({ data, field, fillingBy, onDataChange, previewM
|
|
|
46
46
|
width: 'inherit',
|
|
47
47
|
height: 'inherit',
|
|
48
48
|
borderColor: 'inherit',
|
|
49
|
-
}, disabled: !isFillable, id: field.path, name: field.path, value: resolvedValue
|
|
49
|
+
}, disabled: !isFillable, id: field.path, name: field.path, value: resolvedValue ? resolvedValue.slice(0, 10) : '', onChange: e => {
|
|
50
|
+
const dateStr = e.target.value;
|
|
51
|
+
handleDataChange(dateStr ? dateToUtcZero(dateStr) : '');
|
|
52
|
+
}, placeholder: getFieldPlaceholderText(field, 'mm/dd/yyyy') }));
|
|
50
53
|
}
|
|
51
54
|
if (field.subType === 'number') {
|
|
52
55
|
return (_jsx("input", { type: "number", style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-view-fillable.js","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-fillable.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"pdf-view-fillable.js","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view-fillable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,12 @@ export interface PdfViewProps {
|
|
|
7
7
|
data?: DataModelValues;
|
|
8
8
|
pdfUrl: string;
|
|
9
9
|
loading?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* UTC date strings (e.g. `'2026-03-17T00:00:00Z'`) treated as non-business days.
|
|
12
|
+
* When provided, date-based calculated fields skip weekends and these holidays
|
|
13
|
+
* when adding/subtracting days or computing date differences.
|
|
14
|
+
*/
|
|
15
|
+
holidays?: string[];
|
|
10
16
|
fillingBy?: string[];
|
|
11
17
|
loadingPlaceholder?: ReactNode;
|
|
12
18
|
errorPlaceholder?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-view.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAoB,MAAM,OAAO,CAAC;AAExD,OAAO,EACH,iBAAiB,EACjB,eAAe,EAEf,QAAQ,EACR,WAAW,EACX,aAAa,EAChB,MAAM,uBAAuB,CAAC;AAU/B,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"pdf-view.d.ts","sourceRoot":"","sources":["../../../src/components/pdf-view/pdf-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAoB,MAAM,OAAO,CAAC;AAExD,OAAO,EACH,iBAAiB,EACjB,eAAe,EAEf,QAAQ,EACR,WAAW,EACX,aAAa,EAChB,MAAM,uBAAuB,CAAC;AAU/B,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAOpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,aAAa,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACxE;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CA0FpC,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { PdfViewESign } from './pdf-view-e-sign';
|
|
|
11
11
|
import { PdfViewFieldContainer } from './pdf-view-field-container';
|
|
12
12
|
import { PdfViewFillable } from './pdf-view-fillable';
|
|
13
13
|
import { PdfViewGeneric } from './pdf-view-generic';
|
|
14
|
-
export const PdfView = ({ data, errorPlaceholder, errors = {}, fields, fillingBy, loading = false, loadingPlaceholder, onDataChange, onLoadSuccess, pdfUrl, previewMode, recipients, }) => {
|
|
14
|
+
export const PdfView = ({ data, errorPlaceholder, errors = {}, fields, fillingBy, holidays, loading = false, loadingPlaceholder, onDataChange, onLoadSuccess, pdfUrl, previewMode, recipients, }) => {
|
|
15
15
|
const [isPdfLoaded, setIsPdfLoaded] = useState(false);
|
|
16
16
|
const [previewData, setPreviewData] = useState(data !== null && data !== void 0 ? data : {});
|
|
17
17
|
const pdfWrapperRef = useRef(null);
|
|
@@ -29,6 +29,6 @@ export const PdfView = ({ data, errorPlaceholder, errors = {}, fields, fillingBy
|
|
|
29
29
|
onDataChange === null || onDataChange === void 0 ? void 0 : onDataChange(data, field);
|
|
30
30
|
};
|
|
31
31
|
const recipientsColors = mapColorsToRecipients(recipients);
|
|
32
|
-
return (_jsx(Flex, { flex: 1, className: "dte-pdf-view-container", style: { maxWidth: BASE_PAGE_WIDTH }, children: _jsxs("div", { ref: pdfWrapperRef, className: "dte-pdf-wrapper", children: [_jsx(PdfDocumentRenderer, { pdfUrl: pdfUrl, loading: loading, pageWidth: BASE_PAGE_WIDTH, errorPlaceholder: errorPlaceholder, loadingPlaceholder: loadingPlaceholder, onDocumentLoadSuccess: onDocumentLoadSuccess }), isPdfLoaded && (_jsx("div", { className: "dte-pdf-field-overlay --view-mode", children: fields.map(field => (_jsxs(PdfViewFieldContainer, { field: field, data: previewMode === 'fillable' ? previewData : data, error: errors[field.path] || '', recipientsColors: recipientsColors, pdfWrapperRef: pdfWrapperRef, children: [field.type === FieldTypeEnum.dataModel && (_jsx(PdfViewDataModel, { field: field, data: data })), field.type === FieldTypeEnum.eSign && (_jsx(PdfViewESign, { field: field })), field.type === FieldTypeEnum.calculated && (_jsx(PdfViewCalculated, { field: field, data: previewMode === 'fillable' ? previewData : data })), field.type === FieldTypeEnum.fillable && (_jsx(PdfViewFillable, { data: previewMode === 'fillable' ? previewData : data, field: field, fillingBy: fillingBy, previewMode: previewMode, onDataChange: handleDataChange })), field.type === FieldTypeEnum.generic && (_jsx(PdfViewGeneric, { field: field }))] }, field.id))) }))] }) }));
|
|
32
|
+
return (_jsx(Flex, { flex: 1, className: "dte-pdf-view-container", style: { maxWidth: BASE_PAGE_WIDTH }, children: _jsxs("div", { ref: pdfWrapperRef, className: "dte-pdf-wrapper", children: [_jsx(PdfDocumentRenderer, { pdfUrl: pdfUrl, loading: loading, pageWidth: BASE_PAGE_WIDTH, errorPlaceholder: errorPlaceholder, loadingPlaceholder: loadingPlaceholder, onDocumentLoadSuccess: onDocumentLoadSuccess }), isPdfLoaded && (_jsx("div", { className: "dte-pdf-field-overlay --view-mode", children: fields.map(field => (_jsxs(PdfViewFieldContainer, { field: field, data: previewMode === 'fillable' ? previewData : data, error: errors[field.path] || '', recipientsColors: recipientsColors, pdfWrapperRef: pdfWrapperRef, children: [field.type === FieldTypeEnum.dataModel && (_jsx(PdfViewDataModel, { field: field, data: data })), field.type === FieldTypeEnum.eSign && (_jsx(PdfViewESign, { field: field })), field.type === FieldTypeEnum.calculated && (_jsx(PdfViewCalculated, { field: field, data: previewMode === 'fillable' ? previewData : data, holidays: holidays })), field.type === FieldTypeEnum.fillable && (_jsx(PdfViewFillable, { data: previewMode === 'fillable' ? previewData : data, field: field, fillingBy: fillingBy, previewMode: previewMode, onDataChange: handleDataChange })), field.type === FieldTypeEnum.generic && (_jsx(PdfViewGeneric, { field: field }))] }, field.id))) }))] }) }));
|
|
33
33
|
};
|
|
34
34
|
//# sourceMappingURL=pdf-view.js.map
|