@servicetitan/dte-unlayer 0.157.0 → 0.159.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 (166) hide show
  1. package/dist/api-core.js +22 -29
  2. package/dist/api-core.js.map +1 -1
  3. package/dist/api-custom-tools.js +23 -29
  4. package/dist/api-custom-tools.js.map +1 -1
  5. package/dist/business-calendar/BusinessCalendarDrawer.d.ts +19 -0
  6. package/dist/business-calendar/BusinessCalendarDrawer.d.ts.map +1 -0
  7. package/dist/business-calendar/BusinessCalendarDrawer.js +41 -0
  8. package/dist/business-calendar/BusinessCalendarDrawer.js.map +1 -0
  9. package/dist/business-calendar/business-calendar-requests.d.ts +25 -0
  10. package/dist/business-calendar/business-calendar-requests.d.ts.map +1 -0
  11. package/dist/business-calendar/business-calendar-requests.js +46 -0
  12. package/dist/business-calendar/business-calendar-requests.js.map +1 -0
  13. package/dist/business-calendar/business-calendar-state.d.ts +22 -0
  14. package/dist/business-calendar/business-calendar-state.d.ts.map +1 -0
  15. package/dist/business-calendar/business-calendar-state.js +74 -0
  16. package/dist/business-calendar/business-calendar-state.js.map +1 -0
  17. package/dist/business-calendar/useBusinessCalendarRequests.d.ts +15 -0
  18. package/dist/business-calendar/useBusinessCalendarRequests.d.ts.map +1 -0
  19. package/dist/business-calendar/useBusinessCalendarRequests.js +30 -0
  20. package/dist/business-calendar/useBusinessCalendarRequests.js.map +1 -0
  21. package/dist/display-conditions/ConditionGroup.js +15 -89
  22. package/dist/display-conditions/ConditionGroup.js.map +1 -1
  23. package/dist/display-conditions/ConditionGroupsSection.js +2 -70
  24. package/dist/display-conditions/ConditionGroupsSection.js.map +1 -1
  25. package/dist/display-conditions/ConditionRow.d.ts.map +1 -1
  26. package/dist/display-conditions/ConditionRow.js +71 -296
  27. package/dist/display-conditions/ConditionRow.js.map +1 -1
  28. package/dist/display-conditions/DisplayConditionModal.js +40 -190
  29. package/dist/display-conditions/DisplayConditionModal.js.map +1 -1
  30. package/dist/display-conditions/LookupValueControl.d.ts.map +1 -1
  31. package/dist/display-conditions/LookupValueControl.js +42 -109
  32. package/dist/display-conditions/LookupValueControl.js.map +1 -1
  33. package/dist/display-conditions/SeparatorWithChip.js +1 -10
  34. package/dist/display-conditions/SeparatorWithChip.js.map +1 -1
  35. package/dist/display-conditions/constants.js +15 -20
  36. package/dist/display-conditions/constants.js.map +1 -1
  37. package/dist/display-conditions/displayConditionController.js +5 -8
  38. package/dist/display-conditions/displayConditionController.js.map +1 -1
  39. package/dist/display-conditions/lookupOptionsController.js +16 -16
  40. package/dist/display-conditions/lookupOptionsController.js.map +1 -1
  41. package/dist/display-conditions/nunjucks.js +98 -116
  42. package/dist/display-conditions/nunjucks.js.map +1 -1
  43. package/dist/display-conditions/schemaDataPoints.js +13 -11
  44. package/dist/display-conditions/schemaDataPoints.js.map +1 -1
  45. package/dist/display-conditions/types.js +23 -67
  46. package/dist/display-conditions/types.js.map +1 -1
  47. package/dist/display-conditions/useConditionForms.js +38 -56
  48. package/dist/display-conditions/useConditionForms.js.map +1 -1
  49. package/dist/display-conditions/useLookupOptions.js +24 -44
  50. package/dist/display-conditions/useLookupOptions.js.map +1 -1
  51. package/dist/e-sign-offset/ESignDateSignedOffsetModal.d.ts.map +1 -1
  52. package/dist/e-sign-offset/ESignDateSignedOffsetModal.js +48 -156
  53. package/dist/e-sign-offset/ESignDateSignedOffsetModal.js.map +1 -1
  54. package/dist/e-sign-offset/ESignOffsetRuleRow.d.ts +3 -1
  55. package/dist/e-sign-offset/ESignOffsetRuleRow.d.ts.map +1 -1
  56. package/dist/e-sign-offset/ESignOffsetRuleRow.js +12 -71
  57. package/dist/e-sign-offset/ESignOffsetRuleRow.js.map +1 -1
  58. package/dist/e-sign-offset/eSignOffsetController.js +5 -8
  59. package/dist/e-sign-offset/eSignOffsetController.js.map +1 -1
  60. package/dist/editor-core-source.d.ts +2 -2
  61. package/dist/editor-core-source.d.ts.map +1 -1
  62. package/dist/editor-core-source.js +3 -3
  63. package/dist/editor-core-source.js.map +1 -1
  64. package/dist/editor-core.js +2 -2
  65. package/dist/editor-core.js.map +1 -1
  66. package/dist/editor.d.ts.map +1 -1
  67. package/dist/editor.js +56 -118
  68. package/dist/editor.js.map +1 -1
  69. package/dist/image-upload-error.js +3 -3
  70. package/dist/image-upload-error.js.map +1 -1
  71. package/dist/index.d.ts +1 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +0 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/loadScript.js +7 -8
  76. package/dist/loadScript.js.map +1 -1
  77. package/dist/log.js +2 -3
  78. package/dist/log.js.map +1 -1
  79. package/dist/merge-tags.js +18 -17
  80. package/dist/merge-tags.js.map +1 -1
  81. package/dist/shared/configs.js +1 -2
  82. package/dist/shared/configs.js.map +1 -1
  83. package/dist/shared/const.d.ts +72 -0
  84. package/dist/shared/const.d.ts.map +1 -1
  85. package/dist/shared/const.js +13 -4
  86. package/dist/shared/const.js.map +1 -1
  87. package/dist/shared/date-calc.d.ts +32 -13
  88. package/dist/shared/date-calc.d.ts.map +1 -1
  89. package/dist/shared/date-calc.js +130 -76
  90. package/dist/shared/date-calc.js.map +1 -1
  91. package/dist/shared/e-sign-offset.js +46 -63
  92. package/dist/shared/e-sign-offset.js.map +1 -1
  93. package/dist/shared/edit-icon.js +0 -1
  94. package/dist/shared/edit-icon.js.map +1 -1
  95. package/dist/shared/fonts.js +16 -17
  96. package/dist/shared/fonts.js.map +1 -1
  97. package/dist/shared/forms.js +16 -38
  98. package/dist/shared/forms.js.map +1 -1
  99. package/dist/shared/instance-id.d.ts +3 -0
  100. package/dist/shared/instance-id.d.ts.map +1 -1
  101. package/dist/shared/instance-id.js +10 -7
  102. package/dist/shared/instance-id.js.map +1 -1
  103. package/dist/shared/nunjucks-helpers.js +2 -5
  104. package/dist/shared/nunjucks-helpers.js.map +1 -1
  105. package/dist/shared/schema.js +52 -96
  106. package/dist/shared/schema.js.map +1 -1
  107. package/dist/shared/tools.js +6 -13
  108. package/dist/shared/tools.js.map +1 -1
  109. package/dist/store.d.ts +15 -1
  110. package/dist/store.d.ts.map +1 -1
  111. package/dist/store.js +851 -547
  112. package/dist/store.js.map +1 -1
  113. package/dist/tools.js +133 -143
  114. package/dist/tools.js.map +1 -1
  115. package/dist/unlayer-interface.d.ts +25 -1
  116. package/dist/unlayer-interface.d.ts.map +1 -1
  117. package/dist/unlayer-interface.js +1 -2
  118. package/dist/unlayer-interface.js.map +1 -1
  119. package/dist/unlayer.js +86 -113
  120. package/dist/unlayer.js.map +1 -1
  121. package/dist/vendor/dte-shared/business-calendar-validation.utils.d.ts +25 -0
  122. package/dist/vendor/dte-shared/business-calendar-validation.utils.js +80 -0
  123. package/dist/vendor/dte-shared/components/business-calendar-section.d.ts +15 -0
  124. package/dist/vendor/dte-shared/components/business-calendar-section.js +14 -0
  125. package/dist/vendor/dte-shared/components/schedule-drawer.d.ts +18 -0
  126. package/dist/vendor/dte-shared/components/schedule-drawer.js +119 -0
  127. package/dist/vendor/dte-shared/components/schedule-picker.d.ts +8 -0
  128. package/dist/vendor/dte-shared/components/schedule-picker.js +88 -0
  129. package/dist/vendor/dte-shared/constants.d.ts +31 -0
  130. package/dist/vendor/dte-shared/constants.js +34 -0
  131. package/dist/vendor/dte-shared/field-schedule-editor-context.d.ts +31 -0
  132. package/dist/vendor/dte-shared/field-schedule-editor-context.js +110 -0
  133. package/dist/vendor/dte-shared/index.d.ts +8 -0
  134. package/dist/vendor/dte-shared/index.js +7 -0
  135. package/dist/vendor/dte-shared/schedule-bindings.utils.d.ts +22 -0
  136. package/dist/vendor/dte-shared/schedule-bindings.utils.js +31 -0
  137. package/dist/vendor/dte-shared/styles/schedule.css +19 -0
  138. package/dist/vendor/dte-shared/types.d.ts +129 -0
  139. package/dist/vendor/dte-shared/types.js +1 -0
  140. package/package.json +7 -1
  141. package/src/__tests__/business-calendar-drawer.test.tsx +183 -0
  142. package/src/__tests__/business-calendar-requests.test.ts +166 -0
  143. package/src/__tests__/business-calendar-state.test.tsx +142 -0
  144. package/src/__tests__/condition-row.test.tsx +131 -0
  145. package/src/__tests__/date-calc.test.ts +145 -0
  146. package/src/__tests__/e-sign-offset-modal.test.tsx +124 -0
  147. package/src/__tests__/instance-id.test.ts +49 -0
  148. package/src/__tests__/store.business-calendar.test.ts +185 -0
  149. package/src/__tests__/unlayer.e-sign-types.test.ts +30 -0
  150. package/src/business-calendar/BusinessCalendarDrawer.tsx +76 -0
  151. package/src/business-calendar/business-calendar-requests.ts +80 -0
  152. package/src/business-calendar/business-calendar-state.ts +113 -0
  153. package/src/business-calendar/useBusinessCalendarRequests.ts +49 -0
  154. package/src/display-conditions/ConditionRow.tsx +102 -175
  155. package/src/display-conditions/LookupValueControl.tsx +1 -12
  156. package/src/e-sign-offset/ESignDateSignedOffsetModal.tsx +20 -12
  157. package/src/e-sign-offset/ESignOffsetRuleRow.tsx +7 -2
  158. package/src/editor-core-source.ts +2 -2
  159. package/src/editor.tsx +15 -0
  160. package/src/index.ts +10 -0
  161. package/src/shared/const.ts +61 -0
  162. package/src/shared/date-calc.ts +155 -78
  163. package/src/shared/instance-id.ts +6 -1
  164. package/src/store.ts +68 -5
  165. package/src/unlayer-interface.tsx +25 -1
  166. package/src/unlayer.tsx +5 -5
@@ -1,37 +1,27 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button, Chip, Combobox, Flex } from '@servicetitan/anvil2';
2
+ import { Button, Chip, Flex, SelectFieldSync } from '@servicetitan/anvil2';
3
3
  import TrashIcon from '@servicetitan/anvil2/assets/icons/material/round/delete.svg';
4
4
  import { useEffect, useMemo, useState } from 'react';
5
5
  import { parseFormFieldKey } from '../shared/forms';
6
6
  import { LookupValueControl } from './LookupValueControl';
7
7
  import { NUMBER_OPERATORS, STRING_OPERATORS, VALUE_LESS_OPERATORS } from './types';
8
- export function ConditionRow({ canRemove, condition, dataPointOptions, formFieldOptions, forms, onChange, onFormSelect, onRemove }) {
9
- var _ref;
10
- const selectedFormFieldMeta = useMemo(()=>parseFormFieldKey(condition.dataPointKey), [
11
- condition.dataPointKey
12
- ]);
8
+ export function ConditionRow({ canRemove, condition, dataPointOptions, formFieldOptions, forms, onChange, onFormSelect, onRemove, }) {
9
+ var _a;
10
+ const selectedFormFieldMeta = useMemo(() => parseFormFieldKey(condition.dataPointKey), [condition.dataPointKey]);
13
11
  const [selectedSourceValue, setSelectedSourceValue] = useState(selectedFormFieldMeta ? `form:${selectedFormFieldMeta.formId}` : 'schema');
14
- const sourceOptions = useMemo(()=>[
15
- {
16
- label: 'Data point',
17
- value: 'schema'
18
- },
19
- ...forms.map((form)=>({
20
- formId: form.id,
21
- label: form.name,
22
- value: `form:${form.id}`
23
- }))
24
- ], [
25
- forms
26
- ]);
27
- const selectedSource = useMemo(()=>{
28
- var _ref, _sourceOptions_find;
29
- return (_ref = (_sourceOptions_find = sourceOptions.find((opt)=>opt.value === selectedSourceValue)) !== null && _sourceOptions_find !== void 0 ? _sourceOptions_find : sourceOptions[0]) !== null && _ref !== void 0 ? _ref : null;
30
- }, [
31
- selectedSourceValue,
32
- sourceOptions
33
- ]);
34
- useEffect(()=>{
12
+ const sourceOptions = useMemo(() => [
13
+ { label: 'Merge tags', value: 'schema' },
14
+ ...forms.map(form => ({
15
+ formId: form.id,
16
+ label: form.name,
17
+ value: `form:${form.id}`,
18
+ })),
19
+ ], [forms]);
20
+ const selectedSource = useMemo(() => {
21
+ var _a, _b;
22
+ return ((_b = (_a = sourceOptions.find(opt => opt.value === selectedSourceValue)) !== null && _a !== void 0 ? _a : sourceOptions[0]) !== null && _b !== void 0 ? _b : null);
23
+ }, [selectedSourceValue, sourceOptions]);
24
+ useEffect(() => {
35
25
  if (selectedFormFieldMeta) {
36
26
  setSelectedSourceValue(`form:${selectedFormFieldMeta.formId}`);
37
27
  return;
@@ -39,291 +29,76 @@ export function ConditionRow({ canRemove, condition, dataPointOptions, formField
39
29
  if (!condition.dataPointKey) {
40
30
  return;
41
31
  }
42
- const hasSchemaMatch = dataPointOptions.some((opt)=>opt.fullKey === condition.dataPointKey);
32
+ const hasSchemaMatch = dataPointOptions.some(opt => opt.fullKey === condition.dataPointKey);
43
33
  if (hasSchemaMatch) {
44
34
  setSelectedSourceValue('schema');
45
35
  }
46
- }, [
47
- condition.dataPointKey,
48
- dataPointOptions,
49
- selectedFormFieldMeta
50
- ]);
36
+ }, [condition.dataPointKey, dataPointOptions, selectedFormFieldMeta]);
51
37
  const currentFormId = selectedSource === null || selectedSource === void 0 ? void 0 : selectedSource.formId;
52
- const activeDataPointOptions = useMemo(()=>currentFormId ? formFieldOptions.filter((option)=>option.formId === currentFormId) : dataPointOptions, [
53
- currentFormId,
54
- dataPointOptions,
55
- formFieldOptions
56
- ]);
57
- const selectedDataPoint = useMemo(()=>{
58
- var _activeDataPointOptions_find;
59
- return (_activeDataPointOptions_find = activeDataPointOptions.find((opt)=>opt.fullKey === condition.dataPointKey)) !== null && _activeDataPointOptions_find !== void 0 ? _activeDataPointOptions_find : null;
60
- }, [
61
- activeDataPointOptions,
62
- condition.dataPointKey
63
- ]);
64
- const fieldType = (_ref = selectedDataPoint === null || selectedDataPoint === void 0 ? void 0 : selectedDataPoint.fieldType) !== null && _ref !== void 0 ? _ref : 'string';
38
+ const activeDataPointOptions = useMemo(() => currentFormId
39
+ ? formFieldOptions.filter(option => option.formId === currentFormId)
40
+ : dataPointOptions, [currentFormId, dataPointOptions, formFieldOptions]);
41
+ const selectedDataPoint = useMemo(() => { var _a; return (_a = activeDataPointOptions.find(opt => opt.fullKey === condition.dataPointKey)) !== null && _a !== void 0 ? _a : null; }, [activeDataPointOptions, condition.dataPointKey]);
42
+ const fieldType = (_a = selectedDataPoint === null || selectedDataPoint === void 0 ? void 0 : selectedDataPoint.fieldType) !== null && _a !== void 0 ? _a : 'string';
65
43
  const isValueLess = VALUE_LESS_OPERATORS.includes(condition.operator);
66
- const operatorItems = useMemo(()=>fieldType === 'number' ? [
67
- ...NUMBER_OPERATORS
68
- ] : [
69
- ...STRING_OPERATORS
70
- ], [
71
- fieldType
72
- ]);
73
- const selectedOperator = useMemo(()=>{
74
- var _operatorItems_find;
75
- return (_operatorItems_find = operatorItems.find((op)=>op.value === condition.operator)) !== null && _operatorItems_find !== void 0 ? _operatorItems_find : null;
76
- }, [
77
- operatorItems,
78
- condition.operator
79
- ]);
80
- const handleDataPointChange = (item)=>{
81
- var _ref;
44
+ const operatorItems = useMemo(() => fieldType === 'number'
45
+ ? [...NUMBER_OPERATORS]
46
+ : [...STRING_OPERATORS], [fieldType]);
47
+ const selectedOperator = useMemo(() => { var _a; return (_a = operatorItems.find(op => op.value === condition.operator)) !== null && _a !== void 0 ? _a : null; }, [operatorItems, condition.operator]);
48
+ const handleDataPointChange = (item) => {
49
+ var _a;
82
50
  const nextIsNumber = (item === null || item === void 0 ? void 0 : item.fieldType) === 'number';
83
51
  const nextOperatorItems = nextIsNumber ? NUMBER_OPERATORS : STRING_OPERATORS;
84
- const operatorReset = !nextOperatorItems.some((op)=>op.value === condition.operator);
52
+ const operatorReset = !nextOperatorItems.some(op => op.value === condition.operator);
85
53
  onChange({
86
54
  ...condition,
87
- dataPointKey: (_ref = item === null || item === void 0 ? void 0 : item.fullKey) !== null && _ref !== void 0 ? _ref : '',
88
- operator: operatorReset ? nextIsNumber ? 'num_eq' : 'is_equal_to' : condition.operator
55
+ dataPointKey: (_a = item === null || item === void 0 ? void 0 : item.fullKey) !== null && _a !== void 0 ? _a : '',
56
+ operator: operatorReset
57
+ ? nextIsNumber
58
+ ? 'num_eq'
59
+ : 'is_equal_to'
60
+ : condition.operator,
89
61
  });
90
62
  };
91
- const handleSourceChange = (item)=>{
92
- var _ref, _ref1, _ref2;
63
+ const handleSourceChange = (item) => {
93
64
  if (!item) {
94
65
  return;
95
66
  }
96
67
  setSelectedSourceValue(item.value);
97
- if (!item.formId) {
98
- var _dataPointOptions_find, _ref3, _ref4;
99
- const schemaField = (_dataPointOptions_find = dataPointOptions.find((opt)=>opt.fullKey === condition.dataPointKey)) !== null && _dataPointOptions_find !== void 0 ? _dataPointOptions_find : null;
100
- const nextFieldType = (_ref3 = schemaField === null || schemaField === void 0 ? void 0 : schemaField.fieldType) !== null && _ref3 !== void 0 ? _ref3 : 'string';
101
- const nextIsNumber = nextFieldType === 'number';
102
- const nextOperatorItems = nextIsNumber ? NUMBER_OPERATORS : STRING_OPERATORS;
103
- const operatorReset = !nextOperatorItems.some((op)=>op.value === condition.operator);
104
- onChange({
105
- ...condition,
106
- dataPointKey: (_ref4 = schemaField === null || schemaField === void 0 ? void 0 : schemaField.fullKey) !== null && _ref4 !== void 0 ? _ref4 : '',
107
- operator: operatorReset ? nextIsNumber ? 'num_eq' : 'is_equal_to' : condition.operator
108
- });
109
- return;
68
+ // As in BYOD, a new source starts the condition over instead of picking a data point for it.
69
+ onChange({ ...condition, dataPointKey: '', operator: 'is_equal_to', value: '' });
70
+ if (item.formId) {
71
+ onFormSelect(item.formId);
110
72
  }
111
- onFormSelect(item.formId);
112
- const nextFormFieldOptions = formFieldOptions.filter((option)=>option.formId === item.formId);
113
- const currentSelected = nextFormFieldOptions.find((opt)=>opt.fullKey === condition.dataPointKey);
114
- const nextSelected = (_ref = currentSelected !== null && currentSelected !== void 0 ? currentSelected : nextFormFieldOptions[0]) !== null && _ref !== void 0 ? _ref : null;
115
- const nextFieldType = (_ref1 = nextSelected === null || nextSelected === void 0 ? void 0 : nextSelected.fieldType) !== null && _ref1 !== void 0 ? _ref1 : 'string';
116
- const nextIsNumber = nextFieldType === 'number';
117
- const nextOperatorItems = nextIsNumber ? NUMBER_OPERATORS : STRING_OPERATORS;
118
- const operatorReset = !nextOperatorItems.some((op)=>op.value === condition.operator);
119
- onChange({
120
- ...condition,
121
- dataPointKey: (_ref2 = nextSelected === null || nextSelected === void 0 ? void 0 : nextSelected.fullKey) !== null && _ref2 !== void 0 ? _ref2 : '',
122
- operator: operatorReset ? nextIsNumber ? 'num_eq' : 'is_equal_to' : condition.operator
123
- });
124
73
  };
125
- return /*#__PURE__*/ _jsxs(Flex, {
126
- direction: "column",
127
- gap: "3",
128
- style: {
129
- width: '100%'
130
- },
131
- children: [
132
- /*#__PURE__*/ _jsx("div", {
133
- style: {
134
- width: '100%'
135
- },
136
- children: /*#__PURE__*/ _jsxs(Combobox.Select, {
137
- flex: 1,
138
- style: {
139
- width: '100%'
140
- },
141
- disableClearSelection: true,
142
- itemToKey: (item)=>{
143
- var _ref;
144
- return (_ref = item === null || item === void 0 ? void 0 : item.value) !== null && _ref !== void 0 ? _ref : '';
145
- },
146
- itemToString: (item)=>{
147
- var _ref;
148
- return (_ref = item === null || item === void 0 ? void 0 : item.label) !== null && _ref !== void 0 ? _ref : '';
149
- },
150
- items: sourceOptions,
151
- selectedItem: selectedSource,
152
- onChange: handleSourceChange,
153
- children: [
154
- /*#__PURE__*/ _jsx(Combobox.SelectTrigger, {
155
- label: "Data Type",
156
- placeholder: "Select source...",
157
- size: "small"
158
- }),
159
- /*#__PURE__*/ _jsx(Combobox.Content, {
160
- children: ({ items })=>/*#__PURE__*/ _jsx(Combobox.List, {
161
- children: items.map((item, i)=>/*#__PURE__*/ _jsx(Combobox.Item, {
162
- index: i,
163
- item: item,
164
- children: item.label
165
- }, item.value))
166
- })
167
- })
168
- ]
169
- })
170
- }),
171
- /*#__PURE__*/ _jsxs(Flex, {
172
- direction: "row",
173
- alignItems: "flex-end",
174
- gap: "2",
175
- style: {
176
- width: '100%'
177
- },
178
- children: [
179
- /*#__PURE__*/ _jsx("div", {
180
- style: {
181
- display: 'flex',
182
- alignItems: 'flex-end',
183
- flexShrink: 0,
184
- padding: '4px 8px'
185
- },
186
- children: /*#__PURE__*/ _jsx(Chip, {
187
- label: "IF",
188
- size: "small"
189
- })
190
- }),
191
- /*#__PURE__*/ _jsxs(Flex, {
192
- flex: 1,
193
- direction: "row",
194
- alignItems: "flex-end",
195
- gap: "2",
196
- style: {
197
- minWidth: 0,
198
- width: '100%'
199
- },
200
- children: [
201
- /*#__PURE__*/ _jsx(Flex, {
202
- flex: 1,
203
- style: {
204
- minWidth: 0,
205
- width: '100%'
206
- },
207
- children: /*#__PURE__*/ _jsxs(Combobox.Select, {
208
- flex: 1,
209
- style: {
210
- width: '100%'
211
- },
212
- disableClearSelection: true,
213
- itemToKey: (item)=>{
214
- var _ref;
215
- return (_ref = item === null || item === void 0 ? void 0 : item.fullKey) !== null && _ref !== void 0 ? _ref : '';
216
- },
217
- itemToString: (item)=>{
218
- var _ref;
219
- return (_ref = item === null || item === void 0 ? void 0 : item.title) !== null && _ref !== void 0 ? _ref : '';
220
- },
221
- items: activeDataPointOptions,
222
- selectedItem: selectedDataPoint,
223
- onChange: handleDataPointChange,
224
- children: [
225
- /*#__PURE__*/ _jsx(Combobox.SelectTrigger, {
226
- label: "Data Point",
227
- placeholder: currentFormId ? 'Select form field...' : 'Select data point...',
228
- size: "small"
229
- }),
230
- /*#__PURE__*/ _jsx(Combobox.Content, {
231
- children: ({ items })=>/*#__PURE__*/ _jsx(Combobox.List, {
232
- children: items.map((item, i)=>/*#__PURE__*/ _jsx(Combobox.Item, {
233
- index: i,
234
- item: item,
235
- children: item.title
236
- }, item.fullKey))
237
- })
238
- })
239
- ]
240
- })
241
- }),
242
- /*#__PURE__*/ _jsx(Flex, {
243
- flex: 1,
244
- style: {
245
- minWidth: 0,
246
- width: '100%'
247
- },
248
- children: /*#__PURE__*/ _jsxs(Combobox.Select, {
249
- flex: 1,
250
- style: {
251
- width: '100%'
252
- },
253
- disableClearSelection: true,
254
- itemToKey: (item)=>{
255
- var _ref;
256
- return (_ref = item === null || item === void 0 ? void 0 : item.value) !== null && _ref !== void 0 ? _ref : '';
257
- },
258
- itemToString: (item)=>{
259
- var _ref;
260
- return (_ref = item === null || item === void 0 ? void 0 : item.label) !== null && _ref !== void 0 ? _ref : '';
261
- },
262
- items: operatorItems,
263
- selectedItem: selectedOperator,
264
- onChange: (item)=>{
265
- var _ref;
266
- return onChange({
267
- ...condition,
268
- operator: (_ref = item === null || item === void 0 ? void 0 : item.value) !== null && _ref !== void 0 ? _ref : 'is_equal_to'
269
- });
270
- },
271
- children: [
272
- /*#__PURE__*/ _jsx(Combobox.SelectTrigger, {
273
- label: "Condition",
274
- placeholder: "Select...",
275
- size: "small"
276
- }),
277
- /*#__PURE__*/ _jsx(Combobox.Content, {
278
- children: ({ items })=>/*#__PURE__*/ _jsx(Combobox.List, {
279
- children: items.map((item, i)=>/*#__PURE__*/ _jsx(Combobox.Item, {
280
- index: i,
281
- item: item,
282
- children: item.label
283
- }, item.value))
284
- })
285
- })
286
- ]
287
- })
288
- }),
289
- !isValueLess && /*#__PURE__*/ _jsx(Flex, {
290
- flex: "0 0 186px",
291
- style: {
292
- minWidth: 0
293
- },
294
- children: /*#__PURE__*/ _jsx(LookupValueControl, {
295
- value: condition.value,
296
- fieldType: fieldType,
297
- lookupSource: selectedDataPoint === null || selectedDataPoint === void 0 ? void 0 : selectedDataPoint.lookupSource,
298
- onChange: (value)=>onChange({
299
- ...condition,
300
- value
301
- })
302
- })
303
- })
304
- ]
305
- }),
306
- canRemove && /*#__PURE__*/ _jsx("div", {
307
- style: {
308
- display: 'flex',
309
- alignItems: 'flex-end',
310
- flexShrink: 0,
311
- paddingBottom: 4
312
- },
313
- children: /*#__PURE__*/ _jsx(Button, {
314
- appearance: "secondary",
315
- "aria-label": "Remove condition",
316
- icon: {
317
- before: TrashIcon
318
- },
319
- size: "small",
320
- onClick: onRemove
321
- })
322
- })
323
- ]
324
- })
325
- ]
326
- });
74
+ // Same controls and layout as BYOD's condition row (`dte-pdf-editor`'s `ConditionRow`).
75
+ const sourceSelectOptions = sourceOptions.map(option => ({
76
+ id: option.value,
77
+ label: option.label,
78
+ }));
79
+ const dataPointSelectOptions = activeDataPointOptions.map(option => ({
80
+ id: option.fullKey,
81
+ label: option.title,
82
+ }));
83
+ const operatorSelectOptions = operatorItems.map(option => ({
84
+ id: option.value,
85
+ label: option.label,
86
+ }));
87
+ return (_jsxs(Flex, { direction: "column", gap: "4", flex: 1, children: [_jsx(Flex, { flex: 1, gap: "2", children: _jsx(SelectFieldSync, { flex: 1, disableSearch: true, disableClearButton: true, label: "Source", placeholder: "Select source...", options: sourceSelectOptions, value: selectedSource
88
+ ? { id: selectedSource.value, label: selectedSource.label }
89
+ : null, onSelectedOptionChange: (option) => { var _a; return handleSourceChange((_a = sourceOptions.find(o => o.value === (option === null || option === void 0 ? void 0 : option.id))) !== null && _a !== void 0 ? _a : null); } }) }), _jsxs(Flex, { direction: "row", alignItems: "flex-end", gap: "2", flex: 1, style: { flexWrap: 'wrap' }, children: [_jsx(Flex, { alignItems: "flex-end", style: { padding: '8px 12px' }, children: _jsx(Chip, { label: "IF", size: "medium" }) }), _jsx(Flex, { flex: 1, style: { minWidth: 160 }, children: _jsx(SelectFieldSync, { flex: 1, disableSearch: true, disableClearButton: true, label: "Data point", placeholder: currentFormId ? 'Select form field...' : 'Select data point...', options: dataPointSelectOptions, value: selectedDataPoint
90
+ ? { id: selectedDataPoint.fullKey, label: selectedDataPoint.title }
91
+ : null, onSelectedOptionChange: (option) => {
92
+ var _a;
93
+ return handleDataPointChange((_a = activeDataPointOptions.find(o => o.fullKey === (option === null || option === void 0 ? void 0 : option.id))) !== null && _a !== void 0 ? _a : null);
94
+ } }) }), _jsx(Flex, { flex: 1, style: { minWidth: 160 }, children: _jsx(SelectFieldSync, { flex: 1, disableSearch: true, disableClearButton: true, label: "Condition", placeholder: "Select...", options: operatorSelectOptions, value: selectedOperator
95
+ ? { id: selectedOperator.value, label: selectedOperator.label }
96
+ : null, onSelectedOptionChange: (option) => {
97
+ var _a;
98
+ return onChange({
99
+ ...condition,
100
+ operator: ((_a = option === null || option === void 0 ? void 0 : option.id) !== null && _a !== void 0 ? _a : 'is_equal_to'),
101
+ });
102
+ } }) }), !isValueLess && (_jsx(Flex, { flex: 1, style: { minWidth: 160 }, children: _jsx(LookupValueControl, { value: condition.value, fieldType: fieldType, lookupSource: selectedDataPoint === null || selectedDataPoint === void 0 ? void 0 : selectedDataPoint.lookupSource, onChange: value => onChange({ ...condition, value }) }) })), canRemove && (_jsx(Flex, { alignItems: "flex-end", style: { padding: '6px 12px' }, children: _jsx(Button, { appearance: "secondary", "aria-label": "Remove condition", icon: { before: TrashIcon }, onClick: onRemove }) }))] })] }));
327
103
  }
328
-
329
104
  //# sourceMappingURL=ConditionRow.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/display-conditions/ConditionRow.tsx"],"sourcesContent":["import { Button, Chip, Combobox, Flex } from '@servicetitan/anvil2';\nimport TrashIcon from '@servicetitan/anvil2/assets/icons/material/round/delete.svg';\nimport { useEffect, useMemo, useState } from 'react';\nimport { FormInfo, parseFormFieldKey } from '../shared/forms';\nimport { LookupValueControl } from './LookupValueControl';\nimport { NUMBER_OPERATORS, SingleCondition, STRING_OPERATORS, VALUE_LESS_OPERATORS } from './types';\nimport type { DataPointOption, FormFieldOption } from './types';\n\nexport interface ConditionRowProps {\n canRemove: boolean;\n condition: SingleCondition;\n dataPointOptions: DataPointOption[];\n formFieldOptions: FormFieldOption[];\n forms: FormInfo[];\n onChange: (c: SingleCondition) => void;\n onFormSelect: (formId: number) => void;\n onRemove: () => void;\n}\n\ninterface OperatorOption {\n label: string;\n value: string;\n}\n\ninterface SourceOption {\n formId?: number;\n label: string;\n value: string;\n}\n\nexport function ConditionRow({\n canRemove,\n condition,\n dataPointOptions,\n formFieldOptions,\n forms,\n onChange,\n onFormSelect,\n onRemove,\n}: Readonly<ConditionRowProps>) {\n const selectedFormFieldMeta = useMemo(\n () => parseFormFieldKey(condition.dataPointKey),\n [condition.dataPointKey],\n );\n const [selectedSourceValue, setSelectedSourceValue] = useState<string>(\n selectedFormFieldMeta ? `form:${selectedFormFieldMeta.formId}` : 'schema',\n );\n\n const sourceOptions = useMemo<SourceOption[]>(\n () => [\n { label: 'Data point', value: 'schema' },\n ...forms.map(form => ({\n formId: form.id,\n label: form.name,\n value: `form:${form.id}`,\n })),\n ],\n [forms],\n );\n\n const selectedSource = useMemo<SourceOption | null>(() => {\n return (\n sourceOptions.find(opt => opt.value === selectedSourceValue) ?? sourceOptions[0] ?? null\n );\n }, [selectedSourceValue, sourceOptions]);\n\n useEffect(() => {\n if (selectedFormFieldMeta) {\n setSelectedSourceValue(`form:${selectedFormFieldMeta.formId}`);\n return;\n }\n if (!condition.dataPointKey) {\n return;\n }\n const hasSchemaMatch = dataPointOptions.some(opt => opt.fullKey === condition.dataPointKey);\n if (hasSchemaMatch) {\n setSelectedSourceValue('schema');\n }\n }, [condition.dataPointKey, dataPointOptions, selectedFormFieldMeta]);\n\n const currentFormId = selectedSource?.formId;\n const activeDataPointOptions = useMemo(\n () =>\n currentFormId\n ? formFieldOptions.filter(option => option.formId === currentFormId)\n : dataPointOptions,\n [currentFormId, dataPointOptions, formFieldOptions],\n );\n\n const selectedDataPoint = useMemo(\n () => activeDataPointOptions.find(opt => opt.fullKey === condition.dataPointKey) ?? null,\n [activeDataPointOptions, condition.dataPointKey],\n );\n\n const fieldType = selectedDataPoint?.fieldType ?? 'string';\n\n const isValueLess = VALUE_LESS_OPERATORS.includes(condition.operator);\n\n const operatorItems: OperatorOption[] = useMemo(\n () =>\n fieldType === 'number'\n ? ([...NUMBER_OPERATORS] as OperatorOption[])\n : ([...STRING_OPERATORS] as OperatorOption[]),\n [fieldType],\n );\n\n const selectedOperator = useMemo(\n () => operatorItems.find(op => op.value === condition.operator) ?? null,\n [operatorItems, condition.operator],\n );\n\n const handleDataPointChange = (item: DataPointOption | null) => {\n const nextIsNumber = item?.fieldType === 'number';\n const nextOperatorItems = nextIsNumber ? NUMBER_OPERATORS : STRING_OPERATORS;\n const operatorReset = !nextOperatorItems.some(op => op.value === condition.operator);\n onChange({\n ...condition,\n dataPointKey: item?.fullKey ?? '',\n operator: operatorReset\n ? nextIsNumber\n ? 'num_eq'\n : 'is_equal_to'\n : condition.operator,\n });\n };\n\n const handleSourceChange = (item: SourceOption | null) => {\n if (!item) {\n return;\n }\n setSelectedSourceValue(item.value);\n\n if (!item.formId) {\n const schemaField =\n dataPointOptions.find(opt => opt.fullKey === condition.dataPointKey) ?? null;\n const nextFieldType = schemaField?.fieldType ?? 'string';\n const nextIsNumber = nextFieldType === 'number';\n const nextOperatorItems = nextIsNumber ? NUMBER_OPERATORS : STRING_OPERATORS;\n const operatorReset = !nextOperatorItems.some(op => op.value === condition.operator);\n\n onChange({\n ...condition,\n dataPointKey: schemaField?.fullKey ?? '',\n operator: operatorReset\n ? nextIsNumber\n ? 'num_eq'\n : 'is_equal_to'\n : condition.operator,\n });\n return;\n }\n\n onFormSelect(item.formId);\n const nextFormFieldOptions = formFieldOptions.filter(\n option => option.formId === item.formId,\n );\n const currentSelected = nextFormFieldOptions.find(\n opt => opt.fullKey === condition.dataPointKey,\n );\n const nextSelected = currentSelected ?? nextFormFieldOptions[0] ?? null;\n const nextFieldType = nextSelected?.fieldType ?? 'string';\n const nextIsNumber = nextFieldType === 'number';\n const nextOperatorItems = nextIsNumber ? NUMBER_OPERATORS : STRING_OPERATORS;\n const operatorReset = !nextOperatorItems.some(op => op.value === condition.operator);\n\n onChange({\n ...condition,\n dataPointKey: nextSelected?.fullKey ?? '',\n operator: operatorReset\n ? nextIsNumber\n ? 'num_eq'\n : 'is_equal_to'\n : condition.operator,\n });\n };\n\n return (\n <Flex direction=\"column\" gap=\"3\" style={{ width: '100%' }}>\n <div style={{ width: '100%' }}>\n <Combobox.Select\n flex={1}\n style={{ width: '100%' }}\n disableClearSelection\n itemToKey={(item: SourceOption | null) => item?.value ?? ''}\n itemToString={(item: SourceOption | null) => item?.label ?? ''}\n items={sourceOptions}\n selectedItem={selectedSource}\n onChange={handleSourceChange}\n >\n <Combobox.SelectTrigger\n label=\"Data Type\"\n placeholder=\"Select source...\"\n size=\"small\"\n />\n <Combobox.Content>\n {({ items }: { items: SourceOption[] }) => (\n <Combobox.List>\n {items.map((item, i) => (\n <Combobox.Item index={i} item={item} key={item.value}>\n {item.label}\n </Combobox.Item>\n ))}\n </Combobox.List>\n )}\n </Combobox.Content>\n </Combobox.Select>\n </div>\n <Flex direction=\"row\" alignItems=\"flex-end\" gap=\"2\" style={{ width: '100%' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-end',\n flexShrink: 0,\n padding: '4px 8px',\n }}\n >\n <Chip label=\"IF\" size=\"small\" />\n </div>\n <Flex\n flex={1}\n direction=\"row\"\n alignItems=\"flex-end\"\n gap=\"2\"\n style={{ minWidth: 0, width: '100%' }}\n >\n <Flex flex={1} style={{ minWidth: 0, width: '100%' }}>\n <Combobox.Select\n flex={1}\n style={{ width: '100%' }}\n disableClearSelection\n itemToKey={(item: DataPointOption | null) => item?.fullKey ?? ''}\n itemToString={(item: DataPointOption | null) => item?.title ?? ''}\n items={activeDataPointOptions}\n selectedItem={selectedDataPoint}\n onChange={handleDataPointChange}\n >\n <Combobox.SelectTrigger\n label=\"Data Point\"\n placeholder={\n currentFormId ? 'Select form field...' : 'Select data point...'\n }\n size=\"small\"\n />\n <Combobox.Content>\n {({ items }: { items: DataPointOption[] }) => (\n <Combobox.List>\n {items.map((item, i) => (\n <Combobox.Item index={i} item={item} key={item.fullKey}>\n {item.title}\n </Combobox.Item>\n ))}\n </Combobox.List>\n )}\n </Combobox.Content>\n </Combobox.Select>\n </Flex>\n <Flex flex={1} style={{ minWidth: 0, width: '100%' }}>\n <Combobox.Select\n flex={1}\n style={{ width: '100%' }}\n disableClearSelection\n itemToKey={(item: OperatorOption | null) => item?.value ?? ''}\n itemToString={(item: OperatorOption | null) => item?.label ?? ''}\n items={operatorItems}\n selectedItem={selectedOperator}\n onChange={(item: OperatorOption | null) =>\n onChange({\n ...condition,\n operator: (item?.value ??\n 'is_equal_to') as SingleCondition['operator'],\n })\n }\n >\n <Combobox.SelectTrigger\n label=\"Condition\"\n placeholder=\"Select...\"\n size=\"small\"\n />\n <Combobox.Content>\n {({ items }: { items: OperatorOption[] }) => (\n <Combobox.List>\n {items.map((item, i) => (\n <Combobox.Item index={i} item={item} key={item.value}>\n {item.label}\n </Combobox.Item>\n ))}\n </Combobox.List>\n )}\n </Combobox.Content>\n </Combobox.Select>\n </Flex>\n {!isValueLess && (\n <Flex flex=\"0 0 186px\" style={{ minWidth: 0 }}>\n <LookupValueControl\n value={condition.value}\n fieldType={fieldType}\n lookupSource={selectedDataPoint?.lookupSource}\n onChange={value => onChange({ ...condition, value })}\n />\n </Flex>\n )}\n </Flex>\n {canRemove && (\n <div\n style={{\n display: 'flex',\n alignItems: 'flex-end',\n flexShrink: 0,\n paddingBottom: 4,\n }}\n >\n <Button\n appearance=\"secondary\"\n aria-label=\"Remove condition\"\n icon={{ before: TrashIcon }}\n size=\"small\"\n onClick={onRemove}\n />\n </div>\n )}\n </Flex>\n </Flex>\n );\n}\n"],"names":["Button","Chip","Combobox","Flex","TrashIcon","useEffect","useMemo","useState","parseFormFieldKey","LookupValueControl","NUMBER_OPERATORS","STRING_OPERATORS","VALUE_LESS_OPERATORS","ConditionRow","canRemove","condition","dataPointOptions","formFieldOptions","forms","onChange","onFormSelect","onRemove","selectedFormFieldMeta","dataPointKey","selectedSourceValue","setSelectedSourceValue","formId","sourceOptions","label","value","map","form","id","name","selectedSource","find","opt","hasSchemaMatch","some","fullKey","currentFormId","activeDataPointOptions","filter","option","selectedDataPoint","fieldType","isValueLess","includes","operator","operatorItems","selectedOperator","op","handleDataPointChange","item","nextIsNumber","nextOperatorItems","operatorReset","handleSourceChange","currentSelected","schemaField","nextFieldType","nextFormFieldOptions","nextSelected","direction","gap","style","width","div","Select","flex","disableClearSelection","itemToKey","itemToString","items","selectedItem","SelectTrigger","placeholder","size","Content","List","i","Item","index","alignItems","display","flexShrink","padding","minWidth","title","lookupSource","paddingBottom","appearance","aria-label","icon","before","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"ConditionRow.js","sourceRoot":"","sources":["../../src/display-conditions/ConditionRow.tsx"],"names":[],"mappings":"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"}