@servicetitan/dte-pdf-editor 1.41.0 → 1.43.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 (120) hide show
  1. package/README.md +89 -45
  2. package/dist/components/display-conditions/condition-group.d.ts +8 -3
  3. package/dist/components/display-conditions/condition-group.d.ts.map +1 -1
  4. package/dist/components/display-conditions/condition-group.js +7 -2
  5. package/dist/components/display-conditions/condition-group.js.map +1 -1
  6. package/dist/components/display-conditions/condition-groups-section.d.ts +8 -3
  7. package/dist/components/display-conditions/condition-groups-section.d.ts.map +1 -1
  8. package/dist/components/display-conditions/condition-groups-section.js +2 -2
  9. package/dist/components/display-conditions/condition-groups-section.js.map +1 -1
  10. package/dist/components/display-conditions/condition-row.d.ts +8 -3
  11. package/dist/components/display-conditions/condition-row.d.ts.map +1 -1
  12. package/dist/components/display-conditions/condition-row.js +154 -22
  13. package/dist/components/display-conditions/condition-row.js.map +1 -1
  14. package/dist/components/display-conditions/display-condition-modal.d.ts +6 -2
  15. package/dist/components/display-conditions/display-condition-modal.d.ts.map +1 -1
  16. package/dist/components/display-conditions/display-condition-modal.js +7 -7
  17. package/dist/components/display-conditions/display-condition-modal.js.map +1 -1
  18. package/dist/components/display-conditions/display-condition.d.ts +1 -1
  19. package/dist/components/display-conditions/display-condition.d.ts.map +1 -1
  20. package/dist/components/display-conditions/display-condition.js +2 -2
  21. package/dist/components/display-conditions/display-condition.js.map +1 -1
  22. package/dist/components/field-config-panel/field-config-panel-overlay.d.ts +6 -2
  23. package/dist/components/field-config-panel/field-config-panel-overlay.d.ts.map +1 -1
  24. package/dist/components/field-config-panel/field-config-panel-overlay.js +2 -2
  25. package/dist/components/field-config-panel/field-config-panel-overlay.js.map +1 -1
  26. package/dist/components/field-config-panel/field-config-panel.d.ts +6 -2
  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 +9 -4
  29. package/dist/components/field-config-panel/field-config-panel.js.map +1 -1
  30. package/dist/components/field-config-panel/field-sidebar.d.ts +5 -1
  31. package/dist/components/field-config-panel/field-sidebar.d.ts.map +1 -1
  32. package/dist/components/field-config-panel/field-sidebar.js +42 -8
  33. package/dist/components/field-config-panel/field-sidebar.js.map +1 -1
  34. package/dist/components/field-config-panel/formula-generator.d.ts +5 -1
  35. package/dist/components/field-config-panel/formula-generator.d.ts.map +1 -1
  36. package/dist/components/field-config-panel/formula-generator.js +2 -2
  37. package/dist/components/field-config-panel/formula-generator.js.map +1 -1
  38. package/dist/components/field-config-panel/formula-modal.d.ts +5 -1
  39. package/dist/components/field-config-panel/formula-modal.d.ts.map +1 -1
  40. package/dist/components/field-config-panel/formula-modal.js +38 -8
  41. package/dist/components/field-config-panel/formula-modal.js.map +1 -1
  42. package/dist/components/field-sidebar/field-sidebar.d.ts +6 -1
  43. package/dist/components/field-sidebar/field-sidebar.d.ts.map +1 -1
  44. package/dist/components/field-sidebar/field-sidebar.js +11 -6
  45. package/dist/components/field-sidebar/field-sidebar.js.map +1 -1
  46. package/dist/components/field-sidebar/form-fields-type-list.d.ts +13 -0
  47. package/dist/components/field-sidebar/form-fields-type-list.d.ts.map +1 -0
  48. package/dist/components/field-sidebar/form-fields-type-list.js +14 -0
  49. package/dist/components/field-sidebar/form-fields-type-list.js.map +1 -0
  50. package/dist/components/pdf-editor/pdf-editor.d.ts +4 -1
  51. package/dist/components/pdf-editor/pdf-editor.d.ts.map +1 -1
  52. package/dist/components/pdf-editor/pdf-editor.js +6 -5
  53. package/dist/components/pdf-editor/pdf-editor.js.map +1 -1
  54. package/dist/components/pdf-fields-overlay/pdf-overlay-field.d.ts.map +1 -1
  55. package/dist/components/pdf-fields-overlay/pdf-overlay-field.js +1 -1
  56. package/dist/components/pdf-fields-overlay/pdf-overlay-field.js.map +1 -1
  57. package/dist/components/pdf-view/pdf-view.d.ts.map +1 -1
  58. package/dist/components/pdf-view/pdf-view.js +2 -1
  59. package/dist/components/pdf-view/pdf-view.js.map +1 -1
  60. package/dist/constants/menu-group.d.ts.map +1 -1
  61. package/dist/constants/menu-group.js +2 -0
  62. package/dist/constants/menu-group.js.map +1 -1
  63. package/dist/hooks/index.d.ts +1 -0
  64. package/dist/hooks/index.d.ts.map +1 -1
  65. package/dist/hooks/index.js +1 -0
  66. package/dist/hooks/index.js.map +1 -1
  67. package/dist/hooks/useFormFields.d.ts +13 -0
  68. package/dist/hooks/useFormFields.d.ts.map +1 -0
  69. package/dist/hooks/useFormFields.js +121 -0
  70. package/dist/hooks/useFormFields.js.map +1 -0
  71. package/dist/hooks/useFormulaEditor.d.ts.map +1 -1
  72. package/dist/hooks/useFormulaEditor.js +7 -1
  73. package/dist/hooks/useFormulaEditor.js.map +1 -1
  74. package/dist/hooks/usePdfFieldDnD.d.ts.map +1 -1
  75. package/dist/hooks/usePdfFieldDnD.js +4 -0
  76. package/dist/hooks/usePdfFieldDnD.js.map +1 -1
  77. package/dist/interface/types.d.ts +35 -3
  78. package/dist/interface/types.d.ts.map +1 -1
  79. package/dist/interface/types.js +1 -0
  80. package/dist/interface/types.js.map +1 -1
  81. package/dist/utils/formula/expression.utils.d.ts +5 -2
  82. package/dist/utils/formula/expression.utils.d.ts.map +1 -1
  83. package/dist/utils/formula/expression.utils.js +8 -6
  84. package/dist/utils/formula/expression.utils.js.map +1 -1
  85. package/dist/utils/formula/form-fields.utils.d.ts +21 -0
  86. package/dist/utils/formula/form-fields.utils.d.ts.map +1 -0
  87. package/dist/utils/formula/form-fields.utils.js +101 -0
  88. package/dist/utils/formula/form-fields.utils.js.map +1 -0
  89. package/dist/utils/formula/index.d.ts +1 -0
  90. package/dist/utils/formula/index.d.ts.map +1 -1
  91. package/dist/utils/formula/index.js +1 -0
  92. package/dist/utils/formula/index.js.map +1 -1
  93. package/package.json +1 -1
  94. package/src/components/display-conditions/condition-group.tsx +32 -5
  95. package/src/components/display-conditions/condition-groups-section.tsx +24 -4
  96. package/src/components/display-conditions/condition-row.tsx +359 -80
  97. package/src/components/display-conditions/display-condition-modal.tsx +39 -10
  98. package/src/components/display-conditions/display-condition.tsx +19 -2
  99. package/src/components/field-config-panel/field-config-panel-overlay.tsx +22 -2
  100. package/src/components/field-config-panel/field-config-panel.tsx +34 -10
  101. package/src/components/field-config-panel/field-sidebar.tsx +187 -41
  102. package/src/components/field-config-panel/formula-generator.tsx +14 -0
  103. package/src/components/field-config-panel/formula-modal.tsx +62 -5
  104. package/src/components/field-sidebar/field-sidebar.tsx +35 -4
  105. package/src/components/field-sidebar/form-fields-type-list.tsx +113 -0
  106. package/src/components/pdf-editor/pdf-editor.tsx +42 -25
  107. package/src/components/pdf-fields-overlay/pdf-overlay-field.tsx +3 -1
  108. package/src/components/pdf-view/pdf-view.tsx +2 -1
  109. package/src/constants/menu-group.ts +2 -0
  110. package/src/hooks/index.ts +1 -0
  111. package/src/hooks/useFormFields.ts +157 -0
  112. package/src/hooks/useFormulaEditor.ts +7 -1
  113. package/src/hooks/usePdfFieldDnD.ts +4 -0
  114. package/src/interface/types.ts +43 -4
  115. package/src/styles/field-type-list.css +1 -0
  116. package/src/styles/formula-modal.css +66 -8
  117. package/src/styles/variables.css +4 -0
  118. package/src/utils/formula/expression.utils.ts +24 -6
  119. package/src/utils/formula/form-fields.utils.ts +165 -0
  120. package/src/utils/formula/index.ts +1 -0
@@ -0,0 +1,21 @@
1
+ import { DataPointOption, FieldTypeEnum, FieldTypeOption, FormFieldInfo, FormFieldsByFormIdI, FormFieldType, FormInfo, FormulaFieldFormSnapshot, SchemaFieldType } from '../../interface/types';
2
+ export declare const FORM_FIELD_TYPES_FOR_CALC: FormFieldType[];
3
+ /** Root key and path prefix for form submission field references (matches Unlayer/tools). */
4
+ export declare const SUBMISSION_FIELDS_PATH_PREFIX = "__submission_fields";
5
+ export declare const normalizeFormFieldIdForPath: (fieldId: string) => string;
6
+ export declare const buildFormFieldKey: (formId: number, fieldId: string) => string;
7
+ export declare const parseFormFieldKey: (key: string) => {
8
+ formId: number;
9
+ fieldId: string;
10
+ } | null;
11
+ export declare const buildFormFieldSnapshot: (formId: number, formName: string, field: FormFieldInfo) => FormulaFieldFormSnapshot;
12
+ export declare const tryBuildFormFieldFormulaSnapshot: (path: string, forms: FormInfo[], formFieldsByFormId: FormFieldsByFormIdI) => FormulaFieldFormSnapshot | undefined;
13
+ export declare const isFormFieldCalculationType: (itemType: FormFieldType) => itemType is SchemaFieldType;
14
+ export declare const formFieldInfosToCalculationOptions: (formId: number, fields: FormFieldInfo[], formName: string) => FieldTypeOption[];
15
+ export declare const formFieldInfoToFieldTypeOption: (formId: number, field: FormFieldInfo, formName: string) => FieldTypeOption;
16
+ export declare const formFieldToDisplayConditionDataPointOption: (form: FormInfo, field: FormFieldInfo) => DataPointOption;
17
+ export declare const getDisplayConditionFieldTypeForKey: (dataPointKey: string, mergeTagOptions: DataPointOption[], fillableOptions: DataPointOption[], formFieldsByFormId: FormFieldsByFormIdI) => "number" | "string";
18
+ /** Subset of {@link FieldTypeEnum} used as display-condition row “Source”. */
19
+ export type DisplayConditionSourceKind = Extract<FieldTypeEnum, FieldTypeEnum.dataModel | FieldTypeEnum.fillable | FieldTypeEnum.forms>;
20
+ export declare const inferDisplayConditionSourceKind: (dataPointKey: string, mergeTagOptions: DataPointOption[], fillableOptions: DataPointOption[]) => DisplayConditionSourceKind | null;
21
+ //# sourceMappingURL=form-fields.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-fields.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/form-fields.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,QAAQ,EACR,wBAAwB,EACxB,eAAe,EAClB,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,yBAAyB,EAAyB,aAAa,EAAE,CAAC;AAE/E,6FAA6F;AAC7F,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;AAEnE,eAAO,MAAM,2BAA2B,GAAI,SAAS,MAAM,KAAG,MAAqC,CAAC;AAEpG,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MACoB,CAAC;AAKzF,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAcrF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAC/B,QAAQ,MAAM,EACd,UAAU,MAAM,EAChB,OAAO,aAAa,KACrB,wBAMD,CAAC;AAEH,eAAO,MAAM,gCAAgC,GACzC,MAAM,MAAM,EACZ,OAAO,QAAQ,EAAE,EACjB,oBAAoB,mBAAmB,KACxC,wBAAwB,GAAG,SAe7B,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,UAAU,aAAa,KAAG,QAAQ,IAAI,eACjC,CAAC;AAEjD,eAAO,MAAM,kCAAkC,GAC3C,QAAQ,MAAM,EACd,QAAQ,aAAa,EAAE,EACvB,UAAU,MAAM,KACjB,eAAe,EAWP,CAAC;AAEZ,eAAO,MAAM,8BAA8B,GACvC,QAAQ,MAAM,EACd,OAAO,aAAa,EACpB,UAAU,MAAM,KACjB,eAMD,CAAC;AAEH,eAAO,MAAM,0CAA0C,GACnD,MAAM,QAAQ,EACd,OAAO,aAAa,KACrB,eAKD,CAAC;AAEH,eAAO,MAAM,kCAAkC,GAC3C,cAAc,MAAM,EACpB,iBAAiB,eAAe,EAAE,EAClC,iBAAiB,eAAe,EAAE,EAClC,oBAAoB,mBAAmB,KACxC,QAAQ,GAAG,QAiBb,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAC5C,aAAa,EACb,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAK,CACzE,CAAC;AAEF,eAAO,MAAM,+BAA+B,GACxC,cAAc,MAAM,EACpB,iBAAiB,eAAe,EAAE,EAClC,iBAAiB,eAAe,EAAE,KACnC,0BAA0B,GAAG,IAc/B,CAAC"}
@@ -0,0 +1,101 @@
1
+ import { FieldTypeEnum, } from '../../interface/types';
2
+ export const FORM_FIELD_TYPES_FOR_CALC = ['date', 'number'];
3
+ /** Root key and path prefix for form submission field references (matches Unlayer/tools). */
4
+ export const SUBMISSION_FIELDS_PATH_PREFIX = '__submission_fields';
5
+ export const normalizeFormFieldIdForPath = (fieldId) => fieldId.replaceAll('-', '');
6
+ export const buildFormFieldKey = (formId, fieldId) => `${SUBMISSION_FIELDS_PATH_PREFIX}.${formId}.${normalizeFormFieldIdForPath(fieldId)}`;
7
+ const SUBMISSION_FIELDS_DOT_PATH_RE = /^__submission_fields\.(\d+)\.([A-Za-z0-9]+)$/;
8
+ const LEGACY_SUBMISSION_FIELD_SINGULAR_RE = /^__submission_field\.(\d+)\.(.+)$/;
9
+ export const parseFormFieldKey = (key) => {
10
+ let match = SUBMISSION_FIELDS_DOT_PATH_RE.exec(key);
11
+ if (match) {
12
+ return { formId: Number(match[1]), fieldId: match[2] };
13
+ }
14
+ match = LEGACY_SUBMISSION_FIELD_SINGULAR_RE.exec(key);
15
+ if (match) {
16
+ return { formId: Number(match[1]), fieldId: normalizeFormFieldIdForPath(match[2]) };
17
+ }
18
+ const legacyMatch = key.match(/^__form_(\d+)_([a-f0-9]+)$/i);
19
+ if (legacyMatch) {
20
+ return { formId: Number(legacyMatch[1]), fieldId: legacyMatch[2] };
21
+ }
22
+ return null;
23
+ };
24
+ export const buildFormFieldSnapshot = (formId, formName, field) => ({
25
+ formId,
26
+ fieldId: field.id,
27
+ formName,
28
+ fieldName: field.header,
29
+ fieldType: field.itemType,
30
+ });
31
+ export const tryBuildFormFieldFormulaSnapshot = (path, forms, formFieldsByFormId) => {
32
+ const parsed = parseFormFieldKey(path);
33
+ if (!parsed) {
34
+ return undefined;
35
+ }
36
+ const form = forms.find(f => f.id === parsed.formId);
37
+ const fields = formFieldsByFormId[parsed.formId];
38
+ if (!form || !(fields === null || fields === void 0 ? void 0 : fields.length)) {
39
+ return undefined;
40
+ }
41
+ const field = fields.find(f => normalizeFormFieldIdForPath(f.id) === parsed.fieldId);
42
+ if (!field) {
43
+ return undefined;
44
+ }
45
+ return buildFormFieldSnapshot(parsed.formId, form.name, field);
46
+ };
47
+ export const isFormFieldCalculationType = (itemType) => FORM_FIELD_TYPES_FOR_CALC.includes(itemType);
48
+ export const formFieldInfosToCalculationOptions = (formId, fields, formName) => fields
49
+ .filter((f) => isFormFieldCalculationType(f.itemType))
50
+ .map(field => ({
51
+ type: FieldTypeEnum.forms,
52
+ label: field.header,
53
+ path: buildFormFieldKey(formId, field.id),
54
+ fieldType: field.itemType,
55
+ formSnapshot: buildFormFieldSnapshot(formId, formName, field),
56
+ }));
57
+ export const formFieldInfoToFieldTypeOption = (formId, field, formName) => ({
58
+ type: FieldTypeEnum.forms,
59
+ label: field.header,
60
+ path: buildFormFieldKey(formId, field.id),
61
+ formSnapshot: buildFormFieldSnapshot(formId, formName, field),
62
+ ...(isFormFieldCalculationType(field.itemType) ? { fieldType: field.itemType } : {}),
63
+ });
64
+ export const formFieldToDisplayConditionDataPointOption = (form, field) => ({
65
+ fullKey: buildFormFieldKey(form.id, field.id),
66
+ title: field.header,
67
+ fieldType: field.itemType === 'number' ? 'number' : 'string',
68
+ formSnapshot: buildFormFieldSnapshot(form.id, form.name, field),
69
+ });
70
+ export const getDisplayConditionFieldTypeForKey = (dataPointKey, mergeTagOptions, fillableOptions, formFieldsByFormId) => {
71
+ const fromLists = [...mergeTagOptions, ...fillableOptions].find(o => o.fullKey === dataPointKey);
72
+ if (fromLists) {
73
+ return fromLists.fieldType;
74
+ }
75
+ const parsed = parseFormFieldKey(dataPointKey);
76
+ if (!parsed) {
77
+ return 'string';
78
+ }
79
+ const fields = formFieldsByFormId[parsed.formId];
80
+ const field = fields === null || fields === void 0 ? void 0 : fields.find(f => normalizeFormFieldIdForPath(f.id) === parsed.fieldId);
81
+ if (!field) {
82
+ return 'string';
83
+ }
84
+ return field.itemType === 'number' ? 'number' : 'string';
85
+ };
86
+ export const inferDisplayConditionSourceKind = (dataPointKey, mergeTagOptions, fillableOptions) => {
87
+ if (!dataPointKey) {
88
+ return null;
89
+ }
90
+ if (parseFormFieldKey(dataPointKey)) {
91
+ return FieldTypeEnum.forms;
92
+ }
93
+ if (fillableOptions.some(o => o.fullKey === dataPointKey)) {
94
+ return FieldTypeEnum.fillable;
95
+ }
96
+ if (mergeTagOptions.some(o => o.fullKey === dataPointKey)) {
97
+ return FieldTypeEnum.dataModel;
98
+ }
99
+ return null;
100
+ };
101
+ //# sourceMappingURL=form-fields.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-fields.utils.js","sourceRoot":"","sources":["../../../src/utils/formula/form-fields.utils.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,5 @@ export * from './format-calculated-result.utils';
6
6
  export * from './formula-types';
7
7
  export * from './render-formula.utils';
8
8
  export * from './validate-formula.utils';
9
+ export * from './form-fields.utils';
9
10
  //# 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"}
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"}
@@ -6,4 +6,5 @@ export * from './format-calculated-result.utils';
6
6
  export * from './formula-types';
7
7
  export * from './render-formula.utils';
8
8
  export * from './validate-formula.utils';
9
+ export * from './form-fields.utils';
9
10
  //# 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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/dte-pdf-editor",
3
- "version": "1.41.0",
3
+ "version": "1.43.0",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",
@@ -7,13 +7,20 @@ import type {
7
7
  DataPointOption,
8
8
  DisplayConditionGroup,
9
9
  DisplayConditionSingle,
10
+ FormFieldsByFormIdI,
11
+ FormInfo,
10
12
  } from '../../interface/types';
11
13
  import { ConditionRow } from './condition-row';
12
14
 
13
15
  export interface ConditionGroupProps {
14
16
  canDelete: boolean;
15
17
  conditionJoinOperator: 'and' | 'or';
16
- dataPointOptions: DataPointOption[];
18
+ fillableOptions: DataPointOption[];
19
+ mergeTagOptions: DataPointOption[];
20
+ forms?: FormInfo[];
21
+ formFieldsByFormId?: FormFieldsByFormIdI;
22
+ onRequestFormFields?: (formId: number) => void;
23
+ formFieldsLoadingFormId?: number | null;
17
24
  group: DisplayConditionGroup;
18
25
  onDelete: () => void;
19
26
  onUpdate: (g: DisplayConditionGroup) => void;
@@ -25,9 +32,14 @@ export interface ConditionGroupProps {
25
32
  export function ConditionGroup({
26
33
  canDelete,
27
34
  conditionJoinOperator,
28
- dataPointOptions,
35
+ fillableOptions,
36
+ formFieldsByFormId,
37
+ formFieldsLoadingFormId,
38
+ forms,
29
39
  group,
40
+ mergeTagOptions,
30
41
  onDelete,
42
+ onRequestFormFields,
31
43
  onUpdate,
32
44
  ruleIndex,
33
45
  totalRuleCount,
@@ -70,7 +82,7 @@ export function ConditionGroup({
70
82
  const showRuleHeading = totalRuleCount > 1;
71
83
 
72
84
  return (
73
- <Flex direction="column" gap="2" flex={1}>
85
+ <Flex direction="column" gap="2" flex={1} style={{ padding: '0 8px' }}>
74
86
  {showRuleHeading && (
75
87
  <Flex direction="row" alignItems="center" justifyContent="space-between" flex={1}>
76
88
  <Text size="medium" variant="body" style={{ fontWeight: 'bold' }}>
@@ -89,13 +101,28 @@ export function ConditionGroup({
89
101
  )}
90
102
  <Flex direction="column" gap="3" flex={1}>
91
103
  {group.conditions.map((c, i) => (
92
- <Flex key={c.id} direction="column" gap="3" style={{ padding: '8px 0' }}>
104
+ <Flex
105
+ key={c.id}
106
+ direction="column"
107
+ gap="3"
108
+ style={{
109
+ padding: '8px',
110
+ background: '#f7f7f7',
111
+ boxShadow: '0px 0px 4px 1px #e0e0e0',
112
+ borderRadius: '8px',
113
+ }}
114
+ >
93
115
  <ConditionRow
94
116
  canRemove
95
117
  condition={c}
96
- dataPointOptions={dataPointOptions}
118
+ fillableOptions={fillableOptions}
119
+ formFieldsByFormId={formFieldsByFormId}
120
+ formFieldsLoadingFormId={formFieldsLoadingFormId}
121
+ forms={forms}
122
+ mergeTagOptions={mergeTagOptions}
97
123
  onRemove={() => removeCondition(i)}
98
124
  onChange={next => updateCondition(i, next)}
125
+ onRequestFormFields={onRequestFormFields}
99
126
  />
100
127
  </Flex>
101
128
  ))}
@@ -1,12 +1,22 @@
1
1
  import { Button, Flex } from '@servicetitan/anvil2';
2
2
  import PlusIcon from '@servicetitan/anvil2/assets/icons/material/round/add.svg';
3
3
  import { MAX_DISPLAY_CONDITION_RULES_UI } from '../../constants';
4
- import type { DataPointOption, DisplayConditionGroup } from '../../interface/types';
4
+ import type {
5
+ DataPointOption,
6
+ DisplayConditionGroup,
7
+ FormFieldsByFormIdI,
8
+ FormInfo,
9
+ } from '../../interface/types';
5
10
  import { ConditionGroup } from './condition-group';
6
11
 
7
12
  export interface ConditionGroupsSectionProps {
8
13
  conditionJoinOperator: 'and' | 'or';
9
- dataPointOptions: DataPointOption[];
14
+ fillableOptions: DataPointOption[];
15
+ mergeTagOptions: DataPointOption[];
16
+ forms?: FormInfo[];
17
+ formFieldsByFormId?: FormFieldsByFormIdI;
18
+ onRequestFormFields?: (formId: number) => void;
19
+ formFieldsLoadingFormId?: number | null;
10
20
  groups: DisplayConditionGroup[];
11
21
  onAddGroup: () => void;
12
22
  onRemoveGroup: (index: number) => void;
@@ -15,10 +25,15 @@ export interface ConditionGroupsSectionProps {
15
25
 
16
26
  export function ConditionGroupsSection({
17
27
  conditionJoinOperator,
18
- dataPointOptions,
28
+ fillableOptions,
29
+ formFieldsByFormId,
30
+ formFieldsLoadingFormId,
31
+ forms,
19
32
  groups,
33
+ mergeTagOptions,
20
34
  onAddGroup,
21
35
  onRemoveGroup,
36
+ onRequestFormFields,
22
37
  onUpdateGroup,
23
38
  }: Readonly<ConditionGroupsSectionProps>) {
24
39
  return (
@@ -28,10 +43,15 @@ export function ConditionGroupsSection({
28
43
  <ConditionGroup
29
44
  canDelete={groups.length > 1}
30
45
  conditionJoinOperator={conditionJoinOperator}
31
- dataPointOptions={dataPointOptions}
46
+ fillableOptions={fillableOptions}
47
+ formFieldsByFormId={formFieldsByFormId}
48
+ formFieldsLoadingFormId={formFieldsLoadingFormId}
49
+ forms={forms}
32
50
  group={group}
51
+ mergeTagOptions={mergeTagOptions}
33
52
  onDelete={() => onRemoveGroup(index)}
34
53
  onUpdate={g => onUpdateGroup(index, g)}
54
+ onRequestFormFields={onRequestFormFields}
35
55
  ruleIndex={index}
36
56
  totalRuleCount={groups.length}
37
57
  />