@servicetitan/dte-pdf-editor 1.87.0 → 1.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +37 -30
  2. package/dist/components/display-conditions/condition-row.d.ts.map +1 -1
  3. package/dist/components/display-conditions/condition-row.js +51 -22
  4. package/dist/components/display-conditions/condition-row.js.map +1 -1
  5. package/dist/components/display-conditions/condition-value-control.d.ts.map +1 -1
  6. package/dist/components/display-conditions/condition-value-control.js +1 -2
  7. package/dist/components/display-conditions/condition-value-control.js.map +1 -1
  8. package/dist/components/display-conditions/display-condition-modal.d.ts.map +1 -1
  9. package/dist/components/display-conditions/display-condition-modal.js +6 -49
  10. package/dist/components/display-conditions/display-condition-modal.js.map +1 -1
  11. package/dist/components/field-config-panel/e-sign-date-rules-summary.d.ts +12 -0
  12. package/dist/components/field-config-panel/e-sign-date-rules-summary.d.ts.map +1 -0
  13. package/dist/components/field-config-panel/e-sign-date-rules-summary.js +37 -0
  14. package/dist/components/field-config-panel/e-sign-date-rules-summary.js.map +1 -0
  15. package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.d.ts +16 -0
  16. package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.d.ts.map +1 -0
  17. package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.js +77 -0
  18. package/dist/components/field-config-panel/e-sign-date-signed-offset-modal.js.map +1 -0
  19. package/dist/components/field-config-panel/e-sign-offset-rule-row.d.ts +16 -0
  20. package/dist/components/field-config-panel/e-sign-offset-rule-row.d.ts.map +1 -0
  21. package/dist/components/field-config-panel/e-sign-offset-rule-row.js +25 -0
  22. package/dist/components/field-config-panel/e-sign-offset-rule-row.js.map +1 -0
  23. package/dist/components/field-config-panel/e-sign-options-modal.d.ts +15 -0
  24. package/dist/components/field-config-panel/e-sign-options-modal.d.ts.map +1 -0
  25. package/dist/components/field-config-panel/e-sign-options-modal.js +30 -0
  26. package/dist/components/field-config-panel/e-sign-options-modal.js.map +1 -0
  27. package/dist/components/field-config-panel/field-config-panel.d.ts.map +1 -1
  28. package/dist/components/field-config-panel/field-config-panel.js +30 -28
  29. package/dist/components/field-config-panel/field-config-panel.js.map +1 -1
  30. package/dist/components/field-sidebar/e-sign-field-type-list.d.ts.map +1 -1
  31. package/dist/components/field-sidebar/e-sign-field-type-list.js +1 -6
  32. package/dist/components/field-sidebar/e-sign-field-type-list.js.map +1 -1
  33. package/dist/constants/field.constants.d.ts +1 -5
  34. package/dist/constants/field.constants.d.ts.map +1 -1
  35. package/dist/constants/field.constants.js +21 -7
  36. package/dist/constants/field.constants.js.map +1 -1
  37. package/dist/hooks/usePdfFieldDnD.d.ts.map +1 -1
  38. package/dist/hooks/usePdfFieldDnD.js +13 -5
  39. package/dist/hooks/usePdfFieldDnD.js.map +1 -1
  40. package/dist/interface/types.d.ts +26 -1
  41. package/dist/interface/types.d.ts.map +1 -1
  42. package/dist/interface/types.js +1 -0
  43. package/dist/interface/types.js.map +1 -1
  44. package/dist/styles/field-config-panel.css +11 -0
  45. package/dist/styles/field-type.css +12 -0
  46. package/dist/styles/index.css +1 -0
  47. package/dist/styles/variables.css +2 -0
  48. package/dist/utils/conditions/condition-match-type.utils.d.ts +14 -0
  49. package/dist/utils/conditions/condition-match-type.utils.d.ts.map +1 -0
  50. package/dist/utils/conditions/condition-match-type.utils.js +50 -0
  51. package/dist/utils/conditions/condition-match-type.utils.js.map +1 -0
  52. package/dist/utils/conditions/e-sign-offset-rules.utils.d.ts +17 -0
  53. package/dist/utils/conditions/e-sign-offset-rules.utils.d.ts.map +1 -0
  54. package/dist/utils/conditions/e-sign-offset-rules.utils.js +34 -0
  55. package/dist/utils/conditions/e-sign-offset-rules.utils.js.map +1 -0
  56. package/dist/utils/conditions/index.d.ts +2 -0
  57. package/dist/utils/conditions/index.d.ts.map +1 -1
  58. package/dist/utils/conditions/index.js +2 -0
  59. package/dist/utils/conditions/index.js.map +1 -1
  60. package/package.json +1 -1
  61. package/src/components/display-conditions/condition-row.tsx +114 -131
  62. package/src/components/display-conditions/condition-value-control.tsx +1 -2
  63. package/src/components/display-conditions/display-condition-modal.tsx +13 -63
  64. package/src/components/field-config-panel/e-sign-date-rules-summary.tsx +127 -0
  65. package/src/components/field-config-panel/e-sign-date-signed-offset-modal.tsx +229 -0
  66. package/src/components/field-config-panel/e-sign-offset-rule-row.tsx +91 -0
  67. package/src/components/field-config-panel/e-sign-options-modal.tsx +118 -0
  68. package/src/components/field-config-panel/field-config-panel.tsx +70 -91
  69. package/src/components/field-sidebar/e-sign-field-type-list.tsx +11 -14
  70. package/src/constants/field.constants.ts +21 -8
  71. package/src/hooks/usePdfFieldDnD.ts +17 -2
  72. package/src/interface/types.ts +34 -1
  73. package/src/styles/field-config-panel.css +11 -0
  74. package/src/styles/field-type.css +12 -0
  75. package/src/styles/index.css +1 -0
  76. package/src/styles/variables.css +2 -0
  77. package/src/utils/conditions/__tests__/condition-match-type.utils.test.ts +104 -0
  78. package/src/utils/conditions/__tests__/e-sign-offset-rules.utils.test.ts +109 -0
  79. package/src/utils/conditions/condition-match-type.utils.ts +80 -0
  80. package/src/utils/conditions/e-sign-offset-rules.utils.ts +61 -0
  81. package/src/utils/conditions/index.ts +2 -0
@@ -10,6 +10,7 @@ export declare enum ESignFieldType {
10
10
  signature = "signature",
11
11
  initials = "initials",
12
12
  dateSigned = "dateSigned",
13
+ dateSignedOffset = "dateSignedOffset",
13
14
  fullName = "fullName"
14
15
  }
15
16
  export type FillableFieldType = 'text' | 'date' | 'checkbox' | 'radio' | 'number';
@@ -47,7 +48,31 @@ export interface GenericFieldTableDataType {
47
48
  export interface GenericFieldTextDataType {
48
49
  value: string;
49
50
  }
50
- export type FieldDataType = GenericFieldTableDataType | GenericFieldTextDataType;
51
+ export interface ESignDateSignedOffsetSettingsRule {
52
+ days: number;
53
+ condition: DisplayConditionState;
54
+ }
55
+ export interface ESignDateSignedOffsetSettingsFinalRule {
56
+ days: number;
57
+ condition?: never;
58
+ }
59
+ /**
60
+ * Ordered "if/else if/.../else" chain of day-offset rules for an e-sign `dateSignedOffset` field.
61
+ * Rules are evaluated in array order; the first rule whose `condition` matches applies its `days`.
62
+ *
63
+ * The tuple shape encodes two invariants the UI and evaluator both rely on:
64
+ * - The last element is always the trailing else case: no `condition`, so it always matches.
65
+ * - Every element before it is a normal, conditioned rule (`ESignDateSignedOffsetSettingsRule`).
66
+ *
67
+ * `rules` therefore always has at least one entry (just the else rule) and never has a
68
+ * condition-less rule anywhere but last. `ESignOptionsModal` is the only place that splits this
69
+ * tuple apart (the else row is edited inline; the conditioned rules are edited in
70
+ * `ESignDateSignedOffsetModal`) and reassembles it before saving.
71
+ */
72
+ export interface ESignDateSignedOffsetSettings {
73
+ rules: [ESignDateSignedOffsetSettingsFinalRule] | [...ESignDateSignedOffsetSettingsRule[], ESignDateSignedOffsetSettingsFinalRule];
74
+ }
75
+ export type FieldDataType = GenericFieldTableDataType | GenericFieldTextDataType | ESignDateSignedOffsetSettings;
51
76
  export interface DisplayConditionState {
52
77
  behavior: 'show' | 'hide';
53
78
  groups: DisplayConditionGroup[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export var ESignFieldType;
12
12
  ESignFieldType["signature"] = "signature";
13
13
  ESignFieldType["initials"] = "initials";
14
14
  ESignFieldType["dateSigned"] = "dateSigned";
15
+ ESignFieldType["dateSignedOffset"] = "dateSignedOffset";
15
16
  ESignFieldType["fullName"] = "fullName";
16
17
  })(ESignFieldType || (ESignFieldType = {}));
17
18
  /** Supported formula operators */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;AACvB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,uCAAqB,CAAA;AACzB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB;AA8HD,kCAAkC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAmItD;;GAEG;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACtD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;CAC1C,CAAC;AAEX,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;IAChD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC9C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5D,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,SAAS,EAAE;CACnD,CAAC;AAMX,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAChD,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAC1C,CAAC;AAEX,6EAA6E;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAwB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;AACvB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,uDAAqC,CAAA;IACrC,uCAAqB,CAAA;AACzB,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AA8JD,kCAAkC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAmItD;;GAEG;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACtD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;CAC1C,CAAC;AAEX,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;IAChD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC9C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5D,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,SAAS,EAAE;CACnD,CAAC;AAMX,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAChD,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAC1C,CAAC;AAEX,6EAA6E;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAwB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ .dte-rule-card {
2
+ padding: 12px;
3
+ background: var(--color-neutral-30, #f7f7f7);
4
+ border: 1px solid var(--border-color);
5
+ border-radius: var(--radius-2);
6
+
7
+ &.--active {
8
+ border-color: var(--border-color-active, #2270ee);
9
+ background: var(--bg-color-secondary-active, #fafcff);
10
+ }
11
+ }
@@ -15,3 +15,15 @@
15
15
  .dte-field-type-item:hover {
16
16
  box-shadow: 0 0 2px 0 var(--border-color-active);
17
17
  }
18
+
19
+ .dte-field-type-items-wrapper {
20
+ &.--grid-2 {
21
+ display: grid;
22
+ grid-template-columns: 1fr 1fr;
23
+ gap: var(--spacing-1, 8px);
24
+
25
+ .dte-field-type-item {
26
+ margin-top: var(--spacing-0, 0);
27
+ }
28
+ }
29
+ }
@@ -10,3 +10,4 @@
10
10
  @import './field-type.css';
11
11
  @import './pdf-document-renderer.css';
12
12
  @import './inline-editable.css';
13
+ @import './field-config-panel.css';
@@ -28,11 +28,13 @@
28
28
  --color-neutral-70: var(--color-neutral-70, #737475);
29
29
  --color-neutral-200: var(--color-neutral-200, #6c6d70);
30
30
  --color-neutral-300: var(--color-neutral-300, #2d2e31);
31
+ --color-blue-100: var(--color-blue-100, #fafcff);
31
32
 
32
33
  /* Background colors */
33
34
  --bg-color-light: var(--color-neutral-0, #ffffff);
34
35
  --bg-color-main: var(--color-neutral-20, #fafafa);
35
36
  --bg-color-secondary: var(--color-neutral-50, #eeeeee);
37
+ --bg-color-secondary-active: var(--color-blue-100, #fafcff);
36
38
  --bg-color: var(--color-neutral-200, #f5f5f5);
37
39
  --bg-color-hover: #eaeaea;
38
40
 
@@ -0,0 +1,14 @@
1
+ import type { DataPointOption, DisplayConditionGroup, DisplayConditionState, FormFieldsByFormIdI } from '../../interface/types';
2
+ export type ConditionMatchType = 'and' | 'or';
3
+ /** Derives All/Any (and/or) toggle value from the operators already stored on a condition state. */
4
+ export declare const deriveConditionMatchType: (conditionState: DisplayConditionState) => ConditionMatchType;
5
+ /** Stamps the given All/Any (and/or) value onto every group/condition after the first in each. */
6
+ export declare const applyConditionMatchType: (conditionState: DisplayConditionState, matchType: ConditionMatchType) => DisplayConditionState;
7
+ export interface ConditionValidationDeps {
8
+ mergeTagOptions: DataPointOption[];
9
+ fillableOptions: DataPointOption[];
10
+ formFieldsByFormId?: FormFieldsByFormIdI;
11
+ }
12
+ /** True when every condition in every group has a data point and a usable value for its type. */
13
+ export declare const isValidConditionGroups: (groups: DisplayConditionGroup[], { fillableOptions, formFieldsByFormId, mergeTagOptions }: ConditionValidationDeps) => boolean;
14
+ //# sourceMappingURL=condition-match-type.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-match-type.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/conditions/condition-match-type.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,IAAI,CAAC;AAE9C,oGAAoG;AACpG,eAAO,MAAM,wBAAwB,GACjC,gBAAgB,qBAAqB,KACtC,kBAaF,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,uBAAuB,GAChC,gBAAgB,qBAAqB,EACrC,WAAW,kBAAkB,KAC9B,qBASD,CAAC;AAEH,MAAM,WAAW,uBAAuB;IACpC,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,GAC/B,QAAQ,qBAAqB,EAAE,EAC/B,0DAA0D,uBAAuB,KAClF,OAyBF,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { getDisplayConditionFieldTypeForKey } from '../formula';
2
+ import { isValidNumber } from '../shared';
3
+ /** Derives All/Any (and/or) toggle value from the operators already stored on a condition state. */
4
+ export const deriveConditionMatchType = (conditionState) => {
5
+ var _a;
6
+ for (let g = 0; g < conditionState.groups.length; g++) {
7
+ const group = conditionState.groups[g];
8
+ if (g > 0 && group.logicalOperator === 'or') {
9
+ return 'or';
10
+ }
11
+ for (let i = 1; i < group.conditions.length; i++) {
12
+ if (((_a = group.conditions[i]) === null || _a === void 0 ? void 0 : _a.logicalOperator) === 'or') {
13
+ return 'or';
14
+ }
15
+ }
16
+ }
17
+ return 'and';
18
+ };
19
+ /** Stamps the given All/Any (and/or) value onto every group/condition after the first in each. */
20
+ export const applyConditionMatchType = (conditionState, matchType) => ({
21
+ ...conditionState,
22
+ groups: conditionState.groups.map((group, groupIndex) => ({
23
+ ...group,
24
+ ...(groupIndex > 0 ? { logicalOperator: matchType } : {}),
25
+ conditions: group.conditions.map((c, i) => i === 0 ? { ...c, logicalOperator: undefined } : { ...c, logicalOperator: matchType }),
26
+ })),
27
+ });
28
+ /** True when every condition in every group has a data point and a usable value for its type. */
29
+ export const isValidConditionGroups = (groups, { fillableOptions, formFieldsByFormId, mergeTagOptions }) => {
30
+ for (const group of groups) {
31
+ for (const condition of group.conditions) {
32
+ if (!condition.dataPointKey) {
33
+ return false;
34
+ }
35
+ if (condition.operator === 'is_empty' || condition.operator === 'is_not_empty') {
36
+ continue;
37
+ }
38
+ const trimmedValue = condition.value.trim();
39
+ if (!trimmedValue) {
40
+ return false;
41
+ }
42
+ const fieldType = getDisplayConditionFieldTypeForKey(condition.dataPointKey, mergeTagOptions, fillableOptions, formFieldsByFormId !== null && formFieldsByFormId !== void 0 ? formFieldsByFormId : {});
43
+ if (fieldType === 'number' && !isValidNumber(trimmedValue)) {
44
+ return false;
45
+ }
46
+ }
47
+ }
48
+ return groups.length > 0;
49
+ };
50
+ //# sourceMappingURL=condition-match-type.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-match-type.utils.js","sourceRoot":"","sources":["../../../src/utils/conditions/condition-match-type.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ESignDateSignedOffsetSettings, ESignDateSignedOffsetSettingsRule } from '../../interface/types';
2
+ /**
3
+ * Product limit: rules (the conditioned rules managed here, plus the trailing else row that
4
+ * lives outside this array) may not exceed this total.
5
+ */
6
+ export declare const MAX_ESIGN_OFFSET_RULES = 5;
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[];
10
+ export declare const canAddESignOffsetRule: (rules: ESignDateSignedOffsetSettingsRule[]) => boolean;
11
+ /** Appends a new rule. No-op past the max. */
12
+ export declare const addESignOffsetRule: (rules: ESignDateSignedOffsetSettingsRule[]) => ESignDateSignedOffsetSettingsRule[];
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[];
17
+ //# sourceMappingURL=e-sign-offset-rules.utils.d.ts.map
@@ -0,0 +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,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"}
@@ -0,0 +1,34 @@
1
+ import { defaultGroup } from '../../constants';
2
+ /**
3
+ * Product limit: rules (the conditioned rules managed here, plus the trailing else row that
4
+ * lives outside this array) may not exceed this total.
5
+ */
6
+ export const MAX_ESIGN_OFFSET_RULES = 5;
7
+ export const createESignOffsetRule = () => ({
8
+ days: 0,
9
+ condition: { behavior: 'show', groups: [defaultGroup()] },
10
+ });
11
+ /** Same single blank rule shown when the user first clicks Set Date Rule. */
12
+ export const createInitialESignOffsetRules = () => {
13
+ return [createESignOffsetRule()];
14
+ };
15
+ export const canAddESignOffsetRule = (rules) => rules.length < MAX_ESIGN_OFFSET_RULES - 1;
16
+ /** Appends a new rule. No-op past the max. */
17
+ export const addESignOffsetRule = (rules) => canAddESignOffsetRule(rules) ? [...rules, createESignOffsetRule()] : rules;
18
+ export const updateESignOffsetRule = (rules, index, rule) => {
19
+ const next = [...rules];
20
+ next[index] = rule;
21
+ return next;
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
+ };
34
+ //# sourceMappingURL=e-sign-offset-rules.utils.js.map
@@ -0,0 +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;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,3 +1,5 @@
1
+ export * from './condition-match-type.utils';
2
+ export * from './e-sign-offset-rules.utils';
1
3
  export * from './evaluate.utils';
2
4
  export * from './schema-data-points.utils';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/conditions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/conditions/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
@@ -1,3 +1,5 @@
1
+ export * from './condition-match-type.utils';
2
+ export * from './e-sign-offset-rules.utils';
1
3
  export * from './evaluate.utils';
2
4
  export * from './schema-data-points.utils';
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/conditions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/conditions/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/dte-pdf-editor",
3
- "version": "1.87.0",
3
+ "version": "1.89.0",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",
@@ -1,4 +1,4 @@
1
- import { Button, Chip, Combobox, Flex, Text } from '@servicetitan/anvil2';
1
+ import { Button, Chip, Flex, SelectFieldSync, Text } from '@servicetitan/anvil2';
2
2
  import TrashIcon from '@servicetitan/anvil2/assets/icons/material/round/delete.svg';
3
3
  import { useEffect, useMemo, useState } from 'react';
4
4
  import {
@@ -220,6 +220,68 @@ export function ConditionRow({
220
220
  [operatorItems, condition.operator],
221
221
  );
222
222
 
223
+ const sourceKindSelectOptions = useMemo(
224
+ () => sourceKindOptions.map(option => ({ id: option.value, label: option.label })),
225
+ [sourceKindOptions],
226
+ );
227
+
228
+ const selectedSourceKindSelectOption = selectedSourceKindOption
229
+ ? { id: selectedSourceKindOption.value, label: selectedSourceKindOption.label }
230
+ : null;
231
+
232
+ const handleSourceKindSelect = (option: { id: string; label: string } | null) => {
233
+ handleSourceKindChange(sourceKindOptions.find(o => o.value === option?.id) ?? null);
234
+ };
235
+
236
+ const formSelectOptions = useMemo(
237
+ () => sortedForms.map(form => ({ id: form.id, label: form.name })),
238
+ [sortedForms],
239
+ );
240
+
241
+ const selectedFormSelectOption = pickerForm
242
+ ? { id: pickerForm.id, label: pickerForm.name }
243
+ : null;
244
+
245
+ const handleFormSelect = (option: { id: number; label: string }) => {
246
+ handlePickerFormChange(sortedForms.find(f => f.id === option?.id) ?? null);
247
+ };
248
+
249
+ const dataPointSelectOptions = useMemo(
250
+ () => dataPointItems.map(item => ({ id: item.fullKey, label: item.title })),
251
+ [dataPointItems],
252
+ );
253
+
254
+ const selectedDataPointSelectOption = selectedDataPoint
255
+ ? { id: selectedDataPoint.fullKey, label: selectedDataPoint.title }
256
+ : null;
257
+
258
+ const handleDataPointSelect = (option: { id: string; label: string }) => {
259
+ handleDataPointChange(dataPointItems.find(item => item.fullKey === option?.id) ?? null);
260
+ };
261
+
262
+ const operatorSelectOptions = useMemo(
263
+ () => operatorItems.map(op => ({ id: op.value, label: op.label })),
264
+ [operatorItems],
265
+ );
266
+
267
+ const selectedOperatorSelectOption = selectedOperator
268
+ ? { id: selectedOperator.value, label: selectedOperator.label }
269
+ : null;
270
+
271
+ const handleOperatorSelect = (option: { id: string; label: string } | null) => {
272
+ const nextOperator = (option?.id ?? 'is_equal_to') as DisplayConditionSingle['operator'];
273
+ onChange({
274
+ ...condition,
275
+ operator: nextOperator,
276
+ ...(isCheckbox
277
+ ? {
278
+ value: CHECKBOX_CONDITION_VALUE,
279
+ valueLabel: undefined,
280
+ }
281
+ : {}),
282
+ });
283
+ };
284
+
223
285
  const isValueLess =
224
286
  isCheckbox || VALUE_LESS_OPERATORS.includes(condition.operator as ConditionOperator);
225
287
 
@@ -336,51 +398,27 @@ export function ConditionRow({
336
398
  return (
337
399
  <Flex direction="column" gap="4" flex={1}>
338
400
  <Flex flex={1} gap="2">
339
- <Combobox
401
+ <SelectFieldSync
340
402
  flex={1}
341
- itemToKey={(item: SourceKindOption | null) => item?.value ?? ''}
342
- itemToString={(item: SourceKindOption | null) => item?.label ?? ''}
343
- items={sourceKindOptions}
344
- selectedItem={selectedSourceKindOption}
345
- onChange={handleSourceKindChange}
346
- filterOptions={{ keys: ['label'] }}
347
- >
348
- <Combobox.SelectTrigger label="Source" placeholder="Select source..." />
349
- <Combobox.Content>
350
- {({ items }: { items: SourceKindOption[] }) => (
351
- <Combobox.List>
352
- {items.map((item, i) => (
353
- <Combobox.Item index={i} item={item} key={item.value}>
354
- {item.label}
355
- </Combobox.Item>
356
- ))}
357
- </Combobox.List>
358
- )}
359
- </Combobox.Content>
360
- </Combobox>
403
+ disableSearch
404
+ disableClearButton
405
+ label="Source"
406
+ placeholder="Select source..."
407
+ options={sourceKindSelectOptions}
408
+ value={selectedSourceKindSelectOption}
409
+ onSelectedOptionChange={handleSourceKindSelect}
410
+ />
361
411
  {sourceKind === FieldTypeEnum.forms && (
362
- <Combobox
412
+ <SelectFieldSync
363
413
  flex={1}
364
- itemToKey={(item: FormInfo | null) => String(item?.id ?? '')}
365
- itemToString={(item: FormInfo | null) => item?.name ?? ''}
366
- items={sortedForms}
367
- selectedItem={pickerForm}
368
- onChange={handlePickerFormChange}
369
- filterOptions={{ keys: ['name'] }}
370
- >
371
- <Combobox.SelectTrigger label="Select Form" placeholder="Select form..." />
372
- <Combobox.Content>
373
- {({ items }: { items: FormInfo[] }) => (
374
- <Combobox.List>
375
- {items.map((item, i) => (
376
- <Combobox.Item index={i} item={item} key={item.id}>
377
- {item.name}
378
- </Combobox.Item>
379
- ))}
380
- </Combobox.List>
381
- )}
382
- </Combobox.Content>
383
- </Combobox>
414
+ disableSearch
415
+ disableClearButton
416
+ label="Select Form"
417
+ placeholder="Select form..."
418
+ options={formSelectOptions}
419
+ value={selectedFormSelectOption}
420
+ onSelectedOptionChange={handleFormSelect}
421
+ />
384
422
  )}
385
423
  </Flex>
386
424
 
@@ -401,113 +439,58 @@ export function ConditionRow({
401
439
  </Flex>
402
440
 
403
441
  <Flex flex={1} style={{ minWidth: 160 }}>
404
- <Combobox
442
+ <SelectFieldSync
405
443
  flex={1}
444
+ disableSearch
445
+ disableClearButton
406
446
  disabled={
407
447
  sourceKind === FieldTypeEnum.forms &&
408
448
  (!pickerForm || isLoadingFormFields)
409
449
  }
410
- itemToKey={(item: DataPointOption | null) => item?.fullKey ?? ''}
411
- itemToString={(item: DataPointOption | null) => item?.title ?? ''}
412
- items={dataPointItems}
413
- selectedItem={selectedDataPoint}
414
- onChange={handleDataPointChange}
415
- filterOptions={{ keys: ['title'] }}
416
- >
417
- <Combobox.SelectTrigger
418
- label="Data point"
419
- placeholder={
420
- sourceKind === FieldTypeEnum.forms && isLoadingFormFields
421
- ? 'Loading fields...'
422
- : sourceKind === FieldTypeEnum.forms && !pickerForm
423
- ? 'Select a form first...'
424
- : 'Select data point...'
425
- }
426
- />
427
- <Combobox.Content>
428
- {({ items }: { items: DataPointOption[] }) => (
429
- <Combobox.List>
430
- {items.map((item, i) => (
431
- <Combobox.Item index={i} item={item} key={item.fullKey}>
432
- {item.title}
433
- </Combobox.Item>
434
- ))}
435
- </Combobox.List>
436
- )}
437
- </Combobox.Content>
438
- </Combobox>
450
+ label="Data point"
451
+ placeholder={
452
+ sourceKind === FieldTypeEnum.forms && isLoadingFormFields
453
+ ? 'Loading fields...'
454
+ : sourceKind === FieldTypeEnum.forms && !pickerForm
455
+ ? 'Select a form first...'
456
+ : 'Select data point...'
457
+ }
458
+ options={dataPointSelectOptions}
459
+ value={selectedDataPointSelectOption}
460
+ onSelectedOptionChange={handleDataPointSelect}
461
+ />
439
462
  </Flex>
440
463
  <Flex flex={1} style={{ minWidth: 160 }}>
441
- <Combobox
464
+ <SelectFieldSync
442
465
  flex={1}
443
- itemToKey={(item: OperatorOption | null) => item?.value ?? ''}
444
- itemToString={(item: OperatorOption | null) => item?.label ?? ''}
445
- items={operatorItems}
446
- selectedItem={selectedOperator}
447
- onChange={(item: OperatorOption | null) => {
448
- const nextOperator = (item?.value ??
449
- 'is_equal_to') as DisplayConditionSingle['operator'];
450
- onChange({
451
- ...condition,
452
- operator: nextOperator,
453
- ...(isCheckbox
454
- ? {
455
- value: CHECKBOX_CONDITION_VALUE,
456
- valueLabel: undefined,
457
- }
458
- : {}),
459
- });
460
- }}
461
- filterOptions={{ keys: ['label'] }}
462
- >
463
- <Combobox.SelectTrigger label="Condition" placeholder="Select..." />
464
- <Combobox.Content>
465
- {({ items }: { items: OperatorOption[] }) => (
466
- <Combobox.List>
467
- {items.map((item, i) => (
468
- <Combobox.Item index={i} item={item} key={item.value}>
469
- {item.label}
470
- </Combobox.Item>
471
- ))}
472
- </Combobox.List>
473
- )}
474
- </Combobox.Content>
475
- </Combobox>
466
+ disableSearch
467
+ disableClearButton
468
+ label="Condition"
469
+ placeholder="Select..."
470
+ options={operatorSelectOptions}
471
+ value={selectedOperatorSelectOption}
472
+ onSelectedOptionChange={handleOperatorSelect}
473
+ />
476
474
  </Flex>
477
475
  {!isValueLess && (
478
476
  <Flex flex={1} style={{ minWidth: 160 }}>
479
477
  {isRadioGroup ? (
480
- <Combobox
478
+ <SelectFieldSync
481
479
  flex={1}
482
- itemToKey={item => item?.id ?? ''}
483
- itemToString={item => item?.label ?? ''}
484
- items={radioValueOptions}
485
- selectedItem={selectedRadioValue}
486
- onChange={(item: RadioGroupOption | null) =>
480
+ disableSearch
481
+ label="Value"
482
+ disableClearButton
483
+ placeholder="Select radio option..."
484
+ options={radioValueOptions}
485
+ value={selectedRadioValue}
486
+ onSelectedOptionChange={(item: RadioGroupOption | null) =>
487
487
  onChange({
488
488
  ...condition,
489
489
  value: item?.id ?? '',
490
490
  valueLabel: undefined,
491
491
  })
492
492
  }
493
- filterOptions={{ keys: ['label'] }}
494
- >
495
- <Combobox.SelectTrigger
496
- label="Value"
497
- placeholder="Select radio option..."
498
- />
499
- <Combobox.Content>
500
- {({ items }) => (
501
- <Combobox.List>
502
- {items.map((item, i) => (
503
- <Combobox.Item index={i} item={item} key={item.id}>
504
- {item.label}
505
- </Combobox.Item>
506
- ))}
507
- </Combobox.List>
508
- )}
509
- </Combobox.Content>
510
- </Combobox>
493
+ />
511
494
  ) : (
512
495
  <ConditionValueControl
513
496
  value={condition.value}
@@ -1,5 +1,4 @@
1
- import { TextField } from '@servicetitan/anvil2';
2
- import { SelectField, SelectFieldOption, SelectFieldSync } from '@servicetitan/anvil2/beta';
1
+ import { SelectField, SelectFieldOption, SelectFieldSync, TextField } from '@servicetitan/anvil2';
3
2
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
3
  import { useLookupOptions } from '../../hooks';
5
4
  import type { LookupOption } from '../../interface/host-events';