@servicetitan/dte-pdf-editor 1.94.0 → 1.96.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 +121 -4
- package/dist/components/field-config-panel/advanced-settings.d.ts +2 -0
- package/dist/components/field-config-panel/advanced-settings.d.ts.map +1 -1
- package/dist/components/field-config-panel/advanced-settings.js +5 -4
- package/dist/components/field-config-panel/advanced-settings.js.map +1 -1
- package/dist/components/field-config-panel/e-sign-options-modal.d.ts +3 -0
- 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 +6 -4
- package/dist/components/field-config-panel/e-sign-options-modal.js.map +1 -1
- package/dist/components/field-config-panel/field-config-panel-overlay.d.ts +14 -1
- package/dist/components/field-config-panel/field-config-panel-overlay.d.ts.map +1 -1
- package/dist/components/field-config-panel/field-config-panel-overlay.js +41 -2
- package/dist/components/field-config-panel/field-config-panel-overlay.js.map +1 -1
- package/dist/components/field-config-panel/field-config-panel.d.ts +6 -0
- package/dist/components/field-config-panel/field-config-panel.d.ts.map +1 -1
- package/dist/components/field-config-panel/field-config-panel.js +17 -3
- package/dist/components/field-config-panel/field-config-panel.js.map +1 -1
- package/dist/components/field-config-panel/formula-generator.d.ts +4 -0
- package/dist/components/field-config-panel/formula-generator.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-generator.js +2 -2
- package/dist/components/field-config-panel/formula-generator.js.map +1 -1
- package/dist/components/field-config-panel/formula-modal.d.ts +5 -0
- package/dist/components/field-config-panel/formula-modal.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-modal.js +13 -6
- package/dist/components/field-config-panel/formula-modal.js.map +1 -1
- package/dist/components/field-config-panel/formula-workspace.d.ts +2 -0
- package/dist/components/field-config-panel/formula-workspace.d.ts.map +1 -1
- package/dist/components/field-config-panel/formula-workspace.js +6 -4
- package/dist/components/field-config-panel/formula-workspace.js.map +1 -1
- package/dist/components/pdf-editor/pdf-editor.d.ts +52 -1
- package/dist/components/pdf-editor/pdf-editor.d.ts.map +1 -1
- package/dist/components/pdf-editor/pdf-editor.js +2 -2
- package/dist/components/pdf-editor/pdf-editor.js.map +1 -1
- package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.d.ts.map +1 -1
- package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.js +4 -6
- package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.js.map +1 -1
- package/dist/components/pdf-view/pdf-view-calculated.d.ts +3 -1
- package/dist/components/pdf-view/pdf-view-calculated.d.ts.map +1 -1
- package/dist/components/pdf-view/pdf-view-calculated.js +14 -4
- 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 +27 -4
- package/dist/components/pdf-view/pdf-view-fillable.js.map +1 -1
- package/dist/components/pdf-view/pdf-view.d.ts +18 -4
- 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/components/shared/char-limit-indicator.d.ts +8 -0
- package/dist/components/shared/char-limit-indicator.d.ts.map +1 -0
- package/dist/components/shared/char-limit-indicator.js +9 -0
- package/dist/components/shared/char-limit-indicator.js.map +1 -0
- package/dist/components/shared/index.d.ts +1 -0
- package/dist/components/shared/index.d.ts.map +1 -1
- package/dist/components/shared/index.js +1 -0
- package/dist/components/shared/index.js.map +1 -1
- package/dist/constants/calculated.constants.d.ts +6 -0
- package/dist/constants/calculated.constants.d.ts.map +1 -1
- package/dist/constants/calculated.constants.js +6 -0
- package/dist/constants/calculated.constants.js.map +1 -1
- package/dist/hooks/usePinchZoom.d.ts.map +1 -1
- package/dist/hooks/usePinchZoom.js +1 -1
- package/dist/hooks/usePinchZoom.js.map +1 -1
- package/dist/interface/types.d.ts +37 -1
- package/dist/interface/types.d.ts.map +1 -1
- package/dist/interface/types.js.map +1 -1
- package/dist/styles/pdf-field-overlay.css +9 -2
- package/dist/styles/pdf-field.css +22 -1
- package/dist/utils/field/field-text-box.utils.d.ts +31 -0
- package/dist/utils/field/field-text-box.utils.d.ts.map +1 -0
- package/dist/utils/field/field-text-box.utils.js +102 -0
- package/dist/utils/field/field-text-box.utils.js.map +1 -0
- package/dist/utils/field/fit-field-text.utils.d.ts +13 -0
- package/dist/utils/field/fit-field-text.utils.d.ts.map +1 -0
- package/dist/utils/field/fit-field-text.utils.js +44 -0
- package/dist/utils/field/fit-field-text.utils.js.map +1 -0
- package/dist/utils/field/get-field-max-length.utils.d.ts +38 -0
- package/dist/utils/field/get-field-max-length.utils.d.ts.map +1 -0
- package/dist/utils/field/get-field-max-length.utils.js +166 -0
- package/dist/utils/field/get-field-max-length.utils.js.map +1 -0
- package/dist/utils/field/index.d.ts +2 -0
- package/dist/utils/field/index.d.ts.map +1 -1
- package/dist/utils/field/index.js +2 -0
- package/dist/utils/field/index.js.map +1 -1
- package/dist/utils/field/text-wrap.utils.d.ts +26 -0
- package/dist/utils/field/text-wrap.utils.d.ts.map +1 -0
- package/dist/utils/field/text-wrap.utils.js +53 -0
- package/dist/utils/field/text-wrap.utils.js.map +1 -0
- package/dist/utils/formula/business-days.utils.d.ts +32 -0
- package/dist/utils/formula/business-days.utils.d.ts.map +1 -0
- package/dist/utils/formula/business-days.utils.js +148 -0
- package/dist/utils/formula/business-days.utils.js.map +1 -0
- package/dist/utils/formula/caret.utils.js +1 -1
- package/dist/utils/formula/caret.utils.js.map +1 -1
- package/dist/utils/formula/evaluate-formula.utils.d.ts +25 -6
- package/dist/utils/formula/evaluate-formula.utils.d.ts.map +1 -1
- package/dist/utils/formula/evaluate-formula.utils.js +61 -101
- package/dist/utils/formula/evaluate-formula.utils.js.map +1 -1
- package/dist/utils/formula/index.d.ts +1 -0
- package/dist/utils/formula/index.d.ts.map +1 -1
- package/dist/utils/formula/index.js +1 -0
- package/dist/utils/formula/index.js.map +1 -1
- package/dist/utils/formula/schedule-bindings.utils.d.ts +12 -0
- package/dist/utils/formula/schedule-bindings.utils.d.ts.map +1 -0
- package/dist/utils/formula/schedule-bindings.utils.js +17 -0
- package/dist/utils/formula/schedule-bindings.utils.js.map +1 -0
- package/package.json +2 -1
- package/src/__tests__/field-types/date-fields.test.ts +29 -3
- package/src/__tests__/field-types/e-sign-fields.test.ts +2 -2
- package/src/__tests__/field-types/fillable-fields.test.ts +2 -2
- package/src/components/field-config-panel/advanced-settings.tsx +16 -3
- package/src/components/field-config-panel/e-sign-options-modal.tsx +13 -2
- package/src/components/field-config-panel/field-config-panel-overlay.tsx +97 -1
- package/src/components/field-config-panel/field-config-panel.tsx +28 -0
- package/src/components/field-config-panel/formula-generator.tsx +8 -1
- package/src/components/field-config-panel/formula-modal.tsx +19 -4
- package/src/components/field-config-panel/formula-workspace.tsx +31 -6
- package/src/components/pdf-editor/pdf-editor.tsx +82 -0
- package/src/components/pdf-fields-overlay/pdf-overlay-field-fillable.tsx +41 -28
- package/src/components/pdf-view/pdf-view-calculated.tsx +28 -3
- package/src/components/pdf-view/pdf-view-fillable.tsx +82 -36
- package/src/components/pdf-view/pdf-view.tsx +23 -3
- package/src/components/shared/char-limit-indicator.tsx +23 -0
- package/src/components/shared/index.ts +1 -0
- package/src/constants/calculated.constants.ts +7 -0
- package/src/hooks/usePinchZoom.ts +1 -6
- package/src/interface/types.ts +47 -0
- package/src/styles/pdf-field-overlay.css +9 -2
- package/src/styles/pdf-field.css +22 -1
- package/src/utils/field/__tests__/field-background-color.utils.test.ts +8 -8
- package/src/utils/field/__tests__/fit-field-text.utils.test.ts +224 -0
- package/src/utils/field/__tests__/get-field-bounds-style.utils.test.ts +16 -0
- package/src/utils/field/__tests__/get-field-max-length.utils.test.ts +751 -0
- package/src/utils/field/__tests__/text-wrap.utils.test.ts +181 -0
- package/src/utils/field/field-text-box.utils.ts +143 -0
- package/src/utils/field/fit-field-text.utils.ts +61 -0
- package/src/utils/field/get-field-max-length.utils.ts +211 -0
- package/src/utils/field/index.ts +2 -0
- package/src/utils/field/text-wrap.utils.ts +78 -0
- package/src/utils/formula/__tests__/evaluate-formula.utils.test.ts +198 -16
- package/src/utils/formula/__tests__/schedule-bindings.utils.test.ts +73 -0
- package/src/utils/formula/business-days.utils.ts +188 -0
- package/src/utils/formula/caret.utils.ts +1 -1
- package/src/utils/formula/evaluate-formula.utils.ts +94 -114
- package/src/utils/formula/index.ts +1 -0
- package/src/utils/formula/schedule-bindings.utils.ts +27 -0
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import { resolvePdfDataValues } from '../data-model';
|
|
2
|
+
import { addBusinessDays, addCalendarDays, countBusinessDays, countCalendarDays, defaultBusinessCalendar, } from './business-days.utils';
|
|
3
|
+
/**
|
|
4
|
+
* A field's options: disabled (plain calendar-day math) unless it has a binding in
|
|
5
|
+
* `scheduleBindings` (DTE's `fieldKey` = `PdfField.id`), in which case it uses its own calendar
|
|
6
|
+
* when the host passed one for its id, else the default calendar.
|
|
7
|
+
*/
|
|
8
|
+
export function getFieldDateCalcOptions(fieldId, scheduleBindings, holidays, fieldCalendars) {
|
|
9
|
+
const enabled = !!fieldId && !!(scheduleBindings === null || scheduleBindings === void 0 ? void 0 : scheduleBindings.some(b => b.fieldKey === fieldId));
|
|
10
|
+
if (!enabled) {
|
|
11
|
+
return { enabled: false };
|
|
12
|
+
}
|
|
13
|
+
const calendar = fieldCalendars === null || fieldCalendars === void 0 ? void 0 : fieldCalendars[fieldId];
|
|
14
|
+
return calendar ? { enabled: true, calendar } : { enabled: true, holidays };
|
|
15
|
+
}
|
|
2
16
|
/**
|
|
3
17
|
* Convert formula operand to number. Merge tags and fillable only ever give:
|
|
4
18
|
* empty '', a number, or a string number (e.g. '1.2'). Only those are converted to number for calculation.
|
|
@@ -148,88 +162,16 @@ function parseDateValue(raw) {
|
|
|
148
162
|
const d = new Date(raw);
|
|
149
163
|
return isNaN(d.getTime()) ? NaN : d.getTime();
|
|
150
164
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
return d;
|
|
155
|
-
}
|
|
156
|
-
function toDateKey(d) {
|
|
157
|
-
const y = d.getUTCFullYear();
|
|
158
|
-
const m = String(d.getUTCMonth() + 1).padStart(2, '0');
|
|
159
|
-
const day = String(d.getUTCDate()).padStart(2, '0');
|
|
160
|
-
return `${y}-${m}-${day}`;
|
|
161
|
-
}
|
|
162
|
-
function isWeekend(d) {
|
|
163
|
-
const day = d.getUTCDay();
|
|
164
|
-
return day === 0 || day === 6;
|
|
165
|
-
}
|
|
166
|
-
function buildHolidaySet(holidays) {
|
|
167
|
-
if (!(holidays === null || holidays === void 0 ? void 0 : holidays.length)) {
|
|
168
|
-
return new Set();
|
|
169
|
-
}
|
|
170
|
-
const set = new Set();
|
|
171
|
-
for (const h of holidays) {
|
|
172
|
-
const d = toDateOnly(new Date(h).getTime());
|
|
173
|
-
if (!isNaN(d.getTime())) {
|
|
174
|
-
set.add(toDateKey(d));
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
return set;
|
|
178
|
-
}
|
|
179
|
-
function isNonBusinessDay(d, holidaySet) {
|
|
180
|
-
return isWeekend(d) || (holidaySet.size > 0 && holidaySet.has(toDateKey(d)));
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Add business days to a date (epoch ms), skipping weekends and holidays.
|
|
184
|
-
* Returns the resulting date as epoch ms.
|
|
185
|
-
*/
|
|
186
|
-
function addBusinessDays(startMs, days, holidaySet) {
|
|
187
|
-
const result = toDateOnly(startMs);
|
|
188
|
-
if (!isFinite(result.getTime())) {
|
|
189
|
-
return result.getTime();
|
|
190
|
-
}
|
|
191
|
-
const intDays = Math.trunc(days);
|
|
192
|
-
if (intDays === 0) {
|
|
193
|
-
return result.getTime();
|
|
194
|
-
}
|
|
195
|
-
const direction = intDays > 0 ? 1 : -1;
|
|
196
|
-
let remaining = Math.abs(intDays);
|
|
197
|
-
while (remaining > 0) {
|
|
198
|
-
result.setUTCDate(result.getUTCDate() + direction);
|
|
199
|
-
if (!isNonBusinessDay(result, holidaySet)) {
|
|
200
|
-
remaining--;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return result.getTime();
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Count business days between two dates (epoch ms), skipping weekends and holidays.
|
|
207
|
-
* Positive when `toMs` is after `fromMs`, negative otherwise.
|
|
208
|
-
*/
|
|
209
|
-
function businessDayDiff(fromMs, toMs, holidaySet) {
|
|
210
|
-
const start = toDateOnly(fromMs);
|
|
211
|
-
const end = toDateOnly(toMs);
|
|
212
|
-
if (!isFinite(start.getTime()) || !isFinite(end.getTime())) {
|
|
213
|
-
return 0;
|
|
214
|
-
}
|
|
215
|
-
const direction = end.getTime() >= start.getTime() ? 1 : -1;
|
|
216
|
-
const cursor = new Date(start.getTime());
|
|
217
|
-
let count = 0;
|
|
218
|
-
while (toDateKey(cursor) !== toDateKey(end)) {
|
|
219
|
-
cursor.setUTCDate(cursor.getUTCDate() + direction);
|
|
220
|
-
if (!isNonBusinessDay(cursor, holidaySet)) {
|
|
221
|
-
count++;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
return count * direction;
|
|
165
|
+
/** Blank date arithmetic is NaN, so it carries through to a null result like other invalid values. */
|
|
166
|
+
function orNaN(value) {
|
|
167
|
+
return value !== null && value !== void 0 ? value : NaN;
|
|
225
168
|
}
|
|
226
169
|
function resolveDateAwareTokens(formula, data) {
|
|
227
170
|
return formula.tokens.map((t) => {
|
|
228
171
|
if (t.type === 'field') {
|
|
229
172
|
const raw = resolvePdfDataValues(data, t.path);
|
|
230
173
|
if (t.fieldType === 'date') {
|
|
231
|
-
|
|
232
|
-
return { kind: 'date', value: isNaN(ms) ? 0 : ms };
|
|
174
|
+
return { kind: 'date', value: parseDateValue(raw) };
|
|
233
175
|
}
|
|
234
176
|
return { kind: 'number', value: valueToNumber(raw) };
|
|
235
177
|
}
|
|
@@ -239,32 +181,46 @@ function resolveDateAwareTokens(formula, data) {
|
|
|
239
181
|
return t;
|
|
240
182
|
});
|
|
241
183
|
}
|
|
184
|
+
function businessDayMath(calendar) {
|
|
185
|
+
return {
|
|
186
|
+
add: (ms, days) => addBusinessDays(ms, days, calendar),
|
|
187
|
+
diff: (fromMs, toMs) => countBusinessDays(fromMs, toMs, calendar),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
function calendarDayMath() {
|
|
191
|
+
return {
|
|
192
|
+
add: (ms, days) => addCalendarDays(ms, days),
|
|
193
|
+
diff: (fromMs, toMs) => countCalendarDays(fromMs, toMs),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
242
196
|
/**
|
|
243
|
-
* Apply an operator to two typed values with date-aware
|
|
244
|
-
* date + number → add
|
|
245
|
-
* number + date → add
|
|
246
|
-
* date - number → sub
|
|
247
|
-
* date - date →
|
|
248
|
-
* number ± number → normal
|
|
197
|
+
* Apply an operator to two typed values with date-aware semantics:
|
|
198
|
+
* date + number → add days → date
|
|
199
|
+
* number + date → add days → date
|
|
200
|
+
* date - number → sub days → date
|
|
201
|
+
* date - date → day diff → number (`D1 - D2` counts from D2 to D1, as DTE does)
|
|
202
|
+
* number ± number → normal → number
|
|
203
|
+
*
|
|
204
|
+
* Steps are applied one at a time, left to right, as DTE's `ByodFormulaEvaluator` does.
|
|
249
205
|
*/
|
|
250
|
-
function applyDateOp(a, op, b,
|
|
206
|
+
function applyDateOp(a, op, b, dateMath) {
|
|
251
207
|
if (a.kind === 'date' && b.kind === 'number') {
|
|
252
208
|
if (op === '+') {
|
|
253
|
-
return { kind: 'date', value:
|
|
209
|
+
return { kind: 'date', value: orNaN(dateMath.add(a.value, b.value)) };
|
|
254
210
|
}
|
|
255
211
|
if (op === '-') {
|
|
256
|
-
return { kind: 'date', value:
|
|
212
|
+
return { kind: 'date', value: orNaN(dateMath.add(a.value, -b.value)) };
|
|
257
213
|
}
|
|
258
214
|
}
|
|
259
215
|
if (a.kind === 'number' && b.kind === 'date' && op === '+') {
|
|
260
|
-
return { kind: 'date', value:
|
|
216
|
+
return { kind: 'date', value: orNaN(dateMath.add(b.value, a.value)) };
|
|
261
217
|
}
|
|
262
218
|
if (a.kind === 'date' && b.kind === 'date' && op === '-') {
|
|
263
|
-
return { kind: 'number', value:
|
|
219
|
+
return { kind: 'number', value: orNaN(dateMath.diff(b.value, a.value)) };
|
|
264
220
|
}
|
|
265
221
|
return { kind: 'number', value: applyOp(a.value, op, b.value) };
|
|
266
222
|
}
|
|
267
|
-
function evalDateFlat(tokens,
|
|
223
|
+
function evalDateFlat(tokens, dateMath) {
|
|
268
224
|
const list = [...tokens];
|
|
269
225
|
for (let i = 1; i < list.length - 1;) {
|
|
270
226
|
const t = list[i];
|
|
@@ -272,7 +228,7 @@ function evalDateFlat(tokens, holidaySet) {
|
|
|
272
228
|
const left = list[i - 1];
|
|
273
229
|
const right = list[i + 1];
|
|
274
230
|
if (isTypedValue(left) && isTypedValue(right)) {
|
|
275
|
-
const result = applyDateOp(left, t.value, right,
|
|
231
|
+
const result = applyDateOp(left, t.value, right, dateMath);
|
|
276
232
|
list.splice(i - 1, 3, result);
|
|
277
233
|
continue;
|
|
278
234
|
}
|
|
@@ -282,7 +238,7 @@ function evalDateFlat(tokens, holidaySet) {
|
|
|
282
238
|
const single = list[0];
|
|
283
239
|
return isTypedValue(single) ? single : { kind: 'number', value: 0 };
|
|
284
240
|
}
|
|
285
|
-
function evalDateAwareTokens(tokens,
|
|
241
|
+
function evalDateAwareTokens(tokens, dateMath) {
|
|
286
242
|
if (tokens.length === 0) {
|
|
287
243
|
return { kind: 'number', value: 0 };
|
|
288
244
|
}
|
|
@@ -298,13 +254,13 @@ function evalDateAwareTokens(tokens, holidaySet) {
|
|
|
298
254
|
break;
|
|
299
255
|
}
|
|
300
256
|
const inner = list.slice(idx + 1, close);
|
|
301
|
-
const result = evalDateAwareTokens(inner,
|
|
257
|
+
const result = evalDateAwareTokens(inner, dateMath);
|
|
302
258
|
list.splice(idx, close - idx + 1, result);
|
|
303
259
|
continue;
|
|
304
260
|
}
|
|
305
261
|
idx++;
|
|
306
262
|
}
|
|
307
|
-
return evalDateFlat(list,
|
|
263
|
+
return evalDateFlat(list, dateMath);
|
|
308
264
|
}
|
|
309
265
|
/*
|
|
310
266
|
* ---------------------------------------------------------------------------
|
|
@@ -322,12 +278,14 @@ function evalDateAwareTokens(tokens, holidaySet) {
|
|
|
322
278
|
* field is omitted rather than showing 0.
|
|
323
279
|
*
|
|
324
280
|
* Date fields are identified by `fieldType: 'date'` on field tokens. When date
|
|
325
|
-
* fields are present, arithmetic follows business-day
|
|
326
|
-
*
|
|
327
|
-
* business days
|
|
281
|
+
* fields are present and `options.enabled` is on, arithmetic follows business-day
|
|
282
|
+
* semantics — the calendar's weekend days and holidays are skipped when adding/subtracting
|
|
283
|
+
* days, and date diffs count only business days, with a result outside the calendar's years
|
|
284
|
+
* blank. Otherwise (the field's exclusion toggle is off) it's plain calendar-day arithmetic.
|
|
285
|
+
* Either way, as in DTE, a fractional offset or a difference over 365 days is `null` (blank).
|
|
328
286
|
*/
|
|
329
|
-
export function evaluateFormula(formula, data,
|
|
330
|
-
var _a;
|
|
287
|
+
export function evaluateFormula(formula, data, options) {
|
|
288
|
+
var _a, _b;
|
|
331
289
|
if (!((_a = formula === null || formula === void 0 ? void 0 : formula.tokens) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
332
290
|
return null;
|
|
333
291
|
}
|
|
@@ -337,8 +295,10 @@ export function evaluateFormula(formula, data, holidays) {
|
|
|
337
295
|
}
|
|
338
296
|
if (dateFieldPaths.size) {
|
|
339
297
|
const resolved = resolveDateAwareTokens(formula, data);
|
|
340
|
-
const
|
|
341
|
-
|
|
298
|
+
const dateMath = (options === null || options === void 0 ? void 0 : options.enabled)
|
|
299
|
+
? businessDayMath((_b = options.calendar) !== null && _b !== void 0 ? _b : defaultBusinessCalendar(options.holidays))
|
|
300
|
+
: calendarDayMath();
|
|
301
|
+
const result = evalDateAwareTokens(resolved, dateMath);
|
|
342
302
|
const n = result.value;
|
|
343
303
|
return Number.isFinite(n) ? n : null;
|
|
344
304
|
}
|
|
@@ -350,7 +310,7 @@ export function evaluateFormula(formula, data, holidays) {
|
|
|
350
310
|
* Returns true when the formula divides by zero with the given data
|
|
351
311
|
* (literal `… / 0` or a divisor that resolves to 0). Matches backend null result.
|
|
352
312
|
*/
|
|
353
|
-
export function hasDivisionByZero(formula, data,
|
|
313
|
+
export function hasDivisionByZero(formula, data, options) {
|
|
354
314
|
var _a;
|
|
355
315
|
if (!((_a = formula === null || formula === void 0 ? void 0 : formula.tokens) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
356
316
|
return false;
|
|
@@ -363,6 +323,6 @@ export function hasDivisionByZero(formula, data, holidays) {
|
|
|
363
323
|
if (!hasAllFieldValues(formula, data, dateFieldPaths)) {
|
|
364
324
|
return false;
|
|
365
325
|
}
|
|
366
|
-
return evaluateFormula(formula, data,
|
|
326
|
+
return evaluateFormula(formula, data, options) === null;
|
|
367
327
|
}
|
|
368
328
|
//# sourceMappingURL=evaluate-formula.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate-formula.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/evaluate-formula.utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluate-formula.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/evaluate-formula.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export * from './expression.utils';
|
|
|
5
5
|
export * from './format-calculated-result.utils';
|
|
6
6
|
export * from './formula-types';
|
|
7
7
|
export * from './render-formula.utils';
|
|
8
|
+
export * from './schedule-bindings.utils';
|
|
8
9
|
export * from './validate-formula.utils';
|
|
9
10
|
export * from './form-fields.utils';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
|
@@ -5,6 +5,7 @@ export * from './expression.utils';
|
|
|
5
5
|
export * from './format-calculated-result.utils';
|
|
6
6
|
export * from './formula-types';
|
|
7
7
|
export * from './render-formula.utils';
|
|
8
|
+
export * from './schedule-bindings.utils';
|
|
8
9
|
export * from './validate-formula.utils';
|
|
9
10
|
export * from './form-fields.utils';
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/formula/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/formula/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type FieldScheduleBinding } from '../../interface/types';
|
|
2
|
+
/**
|
|
3
|
+
* Replaces `fieldKey`'s binding: enabling adds it (default schedule, `scheduleId` undefined);
|
|
4
|
+
* disabling removes it. Every other field's binding is returned unchanged.
|
|
5
|
+
*/
|
|
6
|
+
export declare function setFieldScheduleEnabled(bindings: FieldScheduleBinding[], fieldKey: string, enabled: boolean): FieldScheduleBinding[];
|
|
7
|
+
/**
|
|
8
|
+
* Sets `fieldKey`'s selected schedule (`scheduleId` undefined for the default schedule),
|
|
9
|
+
* enabling its toggle if it wasn't already on. Every other field's binding is returned unchanged.
|
|
10
|
+
*/
|
|
11
|
+
export declare function setFieldSchedule(bindings: FieldScheduleBinding[], fieldKey: string, scheduleId: number | undefined): FieldScheduleBinding[];
|
|
12
|
+
//# sourceMappingURL=schedule-bindings.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-bindings.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/schedule-bindings.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE;;;GAGG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,oBAAoB,EAAE,EAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,GACjB,oBAAoB,EAAE,CAGxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,oBAAoB,EAAE,EAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC/B,oBAAoB,EAAE,CAGxB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replaces `fieldKey`'s binding: enabling adds it (default schedule, `scheduleId` undefined);
|
|
3
|
+
* disabling removes it. Every other field's binding is returned unchanged.
|
|
4
|
+
*/
|
|
5
|
+
export function setFieldScheduleEnabled(bindings, fieldKey, enabled) {
|
|
6
|
+
const withoutField = bindings.filter(b => b.fieldKey !== fieldKey);
|
|
7
|
+
return enabled ? [...withoutField, { fieldKey }] : withoutField;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Sets `fieldKey`'s selected schedule (`scheduleId` undefined for the default schedule),
|
|
11
|
+
* enabling its toggle if it wasn't already on. Every other field's binding is returned unchanged.
|
|
12
|
+
*/
|
|
13
|
+
export function setFieldSchedule(bindings, fieldKey, scheduleId) {
|
|
14
|
+
const withoutField = bindings.filter(b => b.fieldKey !== fieldKey);
|
|
15
|
+
return [...withoutField, { fieldKey, scheduleId }];
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=schedule-bindings.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-bindings.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/schedule-bindings.utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACnC,QAAgC,EAChC,QAAgB,EAChB,OAAgB;IAEhB,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC5B,QAAgC,EAChC,QAAgB,EAChB,UAA8B;IAE9B,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,YAAY,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;AACvD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/dte-pdf-editor",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.96.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"typings": "./dist/index.d.ts",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"webpack": false
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
+
"@servicetitan/dte-shared": "^0.0.1",
|
|
22
23
|
"pdfjs-dist": "^5.4.530",
|
|
23
24
|
"react-pdf": "^10.3.0",
|
|
24
25
|
"uuid": "^9.0.0"
|
|
@@ -111,6 +111,15 @@ describe('date field scenarios', () => {
|
|
|
111
111
|
const subject = (formula: StructuredFormula, data: Record<string, string>) =>
|
|
112
112
|
evaluateFormula(formula, data);
|
|
113
113
|
|
|
114
|
+
// The default calendar covers the current year ± 1.
|
|
115
|
+
beforeAll(() => {
|
|
116
|
+
jest.useFakeTimers({ now: new Date('2024-06-01T00:00:00Z') });
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
afterAll(() => {
|
|
120
|
+
jest.useRealTimers();
|
|
121
|
+
});
|
|
122
|
+
|
|
114
123
|
test('adds business days to a date and returns epoch ms of the result', () => {
|
|
115
124
|
// Monday 2024-06-10 + 3 business days = Thursday 2024-06-13
|
|
116
125
|
const formula: StructuredFormula = {
|
|
@@ -120,7 +129,7 @@ describe('date field scenarios', () => {
|
|
|
120
129
|
{ type: 'number', value: '3' },
|
|
121
130
|
],
|
|
122
131
|
};
|
|
123
|
-
const result =
|
|
132
|
+
const result = evaluateFormula(formula, { start: '2024-06-10' }, { enabled: true });
|
|
124
133
|
expect(result).not.toBeNull();
|
|
125
134
|
const resolved = new Date(result as number);
|
|
126
135
|
expect(resolved.getUTCFullYear()).toBe(2024);
|
|
@@ -137,7 +146,7 @@ describe('date field scenarios', () => {
|
|
|
137
146
|
{ type: 'number', value: '1' },
|
|
138
147
|
],
|
|
139
148
|
};
|
|
140
|
-
const result =
|
|
149
|
+
const result = evaluateFormula(formula, { start: '2024-06-14' }, { enabled: true });
|
|
141
150
|
expect(new Date(result as number).getUTCDate()).toBe(17);
|
|
142
151
|
});
|
|
143
152
|
|
|
@@ -150,10 +159,27 @@ describe('date field scenarios', () => {
|
|
|
150
159
|
],
|
|
151
160
|
};
|
|
152
161
|
// Mon 2024-06-10 + 1 day, but 2024-06-11 is a holiday => Wed 2024-06-12
|
|
153
|
-
const result = evaluateFormula(
|
|
162
|
+
const result = evaluateFormula(
|
|
163
|
+
formula,
|
|
164
|
+
{ start: '2024-06-10' },
|
|
165
|
+
{ enabled: true, holidays: ['2024-06-11'] },
|
|
166
|
+
);
|
|
154
167
|
expect(new Date(result as number).getUTCDate()).toBe(12);
|
|
155
168
|
});
|
|
156
169
|
|
|
170
|
+
test('adds plain calendar days (no weekend/holiday skipping) when the exclusion toggle is off', () => {
|
|
171
|
+
// The toggle defaults to off: Friday 2024-06-14 + 1 day = Saturday 2024-06-15, unskipped.
|
|
172
|
+
const formula: StructuredFormula = {
|
|
173
|
+
tokens: [
|
|
174
|
+
{ type: 'field', path: 'start', fieldType: 'date' },
|
|
175
|
+
{ type: 'operator', value: '+' },
|
|
176
|
+
{ type: 'number', value: '1' },
|
|
177
|
+
],
|
|
178
|
+
};
|
|
179
|
+
const result = subject(formula, { start: '2024-06-14' });
|
|
180
|
+
expect(new Date(result as number).getUTCDate()).toBe(15);
|
|
181
|
+
});
|
|
182
|
+
|
|
157
183
|
test('returns null when date field has invalid value', () => {
|
|
158
184
|
const formula: StructuredFormula = {
|
|
159
185
|
tokens: [
|
|
@@ -65,8 +65,8 @@ describe('e-sign field scenarios', () => {
|
|
|
65
65
|
expect(getFieldColor(field.recipient, colors)).toBeDefined();
|
|
66
66
|
});
|
|
67
67
|
|
|
68
|
-
test('returns
|
|
69
|
-
expect(getFieldColor('unknown', colors)).
|
|
68
|
+
test('returns undefined for an unknown recipient', () => {
|
|
69
|
+
expect(getFieldColor('unknown', colors)).toBeUndefined();
|
|
70
70
|
});
|
|
71
71
|
});
|
|
72
72
|
|
|
@@ -296,8 +296,8 @@ describe('fillable field scenarios', () => {
|
|
|
296
296
|
);
|
|
297
297
|
});
|
|
298
298
|
|
|
299
|
-
test('returns
|
|
300
|
-
expect(getFieldColor(undefined, colors)).
|
|
299
|
+
test('returns undefined when field has no recipient', () => {
|
|
300
|
+
expect(getFieldColor(undefined, colors)).toBeUndefined();
|
|
301
301
|
});
|
|
302
302
|
});
|
|
303
303
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Flex, SegmentedControl, Switch, Text } from '@servicetitan/anvil2';
|
|
2
|
+
import { BusinessCalendarSection, type ScheduleEditorContext } from '@servicetitan/dte-shared';
|
|
2
3
|
import { Dispatch, FC, SetStateAction } from 'react';
|
|
3
4
|
import { DEFAULT_DATE_FORMAT, ROUNDING_OPTIONS } from '../../constants';
|
|
4
5
|
import { type CalculatedFieldFormat, type CalculatedFormatForNumber } from '../../interface/types';
|
|
@@ -6,9 +7,10 @@ import { type CalculatedFieldFormat, type CalculatedFormatForNumber } from '../.
|
|
|
6
7
|
interface AdvancedSettingsProps {
|
|
7
8
|
format: CalculatedFieldFormat;
|
|
8
9
|
setFormat: Dispatch<SetStateAction<CalculatedFieldFormat>>;
|
|
10
|
+
businessCalendar?: ScheduleEditorContext;
|
|
9
11
|
}
|
|
10
12
|
|
|
11
|
-
const DateFormatSettings: FC<AdvancedSettingsProps> = ({ format, setFormat }) => (
|
|
13
|
+
const DateFormatSettings: FC<AdvancedSettingsProps> = ({ businessCalendar, format, setFormat }) => (
|
|
12
14
|
<div className="dte-formula-advanced">
|
|
13
15
|
<Text variant="body" size="small">
|
|
14
16
|
Date format
|
|
@@ -24,12 +26,23 @@ const DateFormatSettings: FC<AdvancedSettingsProps> = ({ format, setFormat }) =>
|
|
|
24
26
|
<Text variant="body" size="small" color="tertiary">
|
|
25
27
|
Tokens: YYYY, YY, MMMM, MMM, MM, M, DD, D
|
|
26
28
|
</Text>
|
|
29
|
+
{businessCalendar && <BusinessCalendarSection businessCalendar={businessCalendar} />}
|
|
27
30
|
</div>
|
|
28
31
|
);
|
|
29
32
|
|
|
30
|
-
export const AdvancedSettings: FC<AdvancedSettingsProps> = ({
|
|
33
|
+
export const AdvancedSettings: FC<AdvancedSettingsProps> = ({
|
|
34
|
+
businessCalendar,
|
|
35
|
+
format,
|
|
36
|
+
setFormat,
|
|
37
|
+
}) => {
|
|
31
38
|
if (format.resultType === 'date') {
|
|
32
|
-
return
|
|
39
|
+
return (
|
|
40
|
+
<DateFormatSettings
|
|
41
|
+
format={format}
|
|
42
|
+
setFormat={setFormat}
|
|
43
|
+
businessCalendar={businessCalendar}
|
|
44
|
+
/>
|
|
45
|
+
);
|
|
33
46
|
}
|
|
34
47
|
|
|
35
48
|
return (
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Button, Flex, NumberField } from '@servicetitan/anvil2';
|
|
2
2
|
import AddIcon from '@servicetitan/anvil2/assets/icons/material/round/add_circle.svg';
|
|
3
|
+
import { BusinessCalendarSection, type ScheduleEditorContext } from '@servicetitan/dte-shared';
|
|
3
4
|
import { FC, Fragment, useState } from 'react';
|
|
4
5
|
import {
|
|
5
6
|
ESignDateSignedOffsetSettings,
|
|
@@ -23,9 +24,12 @@ interface ESignOptionsModalProps {
|
|
|
23
24
|
formFieldsByFormId?: FormFieldsByFormIdI;
|
|
24
25
|
onRequestFormFields?: (formId: number) => void;
|
|
25
26
|
formFieldsLoadingFormId?: number | null;
|
|
27
|
+
/** The business-day exclusion toggle/picker/drawer state and callbacks for this field. */
|
|
28
|
+
businessCalendar?: ScheduleEditorContext;
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
export const ESignOptionsModal: FC<ESignOptionsModalProps> = ({
|
|
32
|
+
businessCalendar,
|
|
29
33
|
documentFields,
|
|
30
34
|
formFieldsByFormId,
|
|
31
35
|
formFieldsLoadingFormId,
|
|
@@ -51,6 +55,7 @@ export const ESignOptionsModal: FC<ESignOptionsModalProps> = ({
|
|
|
51
55
|
|
|
52
56
|
const handleDaysChange = (days: number | null) => {
|
|
53
57
|
onSave({
|
|
58
|
+
...initialState,
|
|
54
59
|
rules: [...rulesWithConditions, { days: Math.max(Math.min(365, days ?? 0), 0) }],
|
|
55
60
|
});
|
|
56
61
|
};
|
|
@@ -59,11 +64,11 @@ export const ESignOptionsModal: FC<ESignOptionsModalProps> = ({
|
|
|
59
64
|
rules: ESignDateSignedOffsetSettingsRule[],
|
|
60
65
|
finalRule: ESignDateSignedOffsetSettingsFinalRule,
|
|
61
66
|
) => {
|
|
62
|
-
onSave({ rules: [...rules, finalRule] });
|
|
67
|
+
onSave({ ...initialState, rules: [...rules, finalRule] });
|
|
63
68
|
};
|
|
64
69
|
|
|
65
70
|
const handleClearRules = () => {
|
|
66
|
-
onSave(createClearedESignOffsetSettings());
|
|
71
|
+
onSave({ ...initialState, ...createClearedESignOffsetSettings() });
|
|
67
72
|
};
|
|
68
73
|
|
|
69
74
|
return (
|
|
@@ -113,6 +118,12 @@ export const ESignOptionsModal: FC<ESignOptionsModalProps> = ({
|
|
|
113
118
|
schema={schema}
|
|
114
119
|
/>
|
|
115
120
|
)}
|
|
121
|
+
{businessCalendar && (
|
|
122
|
+
<BusinessCalendarSection
|
|
123
|
+
businessCalendar={businessCalendar}
|
|
124
|
+
label="Exclude weekends & holidays from the calculation"
|
|
125
|
+
/>
|
|
126
|
+
)}
|
|
116
127
|
</Fragment>
|
|
117
128
|
);
|
|
118
129
|
};
|