@sparrowengg/integrations-templates-frontend 2.1.0-beta.1 → 2.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cascader-dropdown/cascader-dropdown-content.js +1 -1
- package/dist/cjs/cascader-dropdown/cascader-dropdown-content.js.map +1 -1
- package/dist/cjs/commons/components/NamingModal.js +34 -62
- package/dist/cjs/commons/components/NamingModal.js.map +1 -1
- package/dist/cjs/commons/components/confirmation-modal.js +12 -24
- package/dist/cjs/commons/components/confirmation-modal.js.map +1 -1
- package/dist/cjs/commons/components/custom-pill.js +12 -30
- package/dist/cjs/commons/components/custom-pill.js.map +1 -1
- package/dist/cjs/commons/components/draftModal.js +31 -45
- package/dist/cjs/commons/components/draftModal.js.map +1 -1
- package/dist/cjs/commons/components/edit-confirmation.js +17 -34
- package/dist/cjs/commons/components/edit-confirmation.js.map +1 -1
- package/dist/cjs/commons/components/import-modal.js +18 -49
- package/dist/cjs/commons/components/import-modal.js.map +1 -1
- package/dist/cjs/commons/components/spinner.js +2 -16
- package/dist/cjs/commons/components/spinner.js.map +1 -1
- package/dist/cjs/commons/components/theme-wrapper.js +12 -9
- package/dist/cjs/commons/components/theme-wrapper.js.map +1 -1
- package/dist/cjs/commons/constants/enhanced.js.map +1 -1
- package/dist/cjs/commons/helpers/index.js +52 -93
- package/dist/cjs/commons/helpers/index.js.map +1 -1
- package/dist/cjs/commons/icons/arrow.js +3 -38
- package/dist/cjs/commons/icons/arrow.js.map +1 -1
- package/dist/cjs/commons/icons/cursor.js +8 -21
- package/dist/cjs/commons/icons/cursor.js.map +1 -1
- package/dist/cjs/commons/icons/email-letter.js +12 -30
- package/dist/cjs/commons/icons/email-letter.js.map +1 -1
- package/dist/cjs/commons/icons/mapping.js +10 -23
- package/dist/cjs/commons/icons/mapping.js.map +1 -1
- package/dist/cjs/commons/icons/nested-add.js +14 -32
- package/dist/cjs/commons/icons/nested-add.js.map +1 -1
- package/dist/cjs/commons/icons/sms.js +18 -36
- package/dist/cjs/commons/icons/sms.js.map +1 -1
- package/dist/cjs/commons/icons/sync.js +3 -110
- package/dist/cjs/commons/icons/sync.js.map +1 -1
- package/dist/cjs/commons/icons/trash.js +15 -33
- package/dist/cjs/commons/icons/trash.js.map +1 -1
- package/dist/cjs/commons/icons/whatsapp.js +31 -49
- package/dist/cjs/commons/icons/whatsapp.js.map +1 -1
- package/dist/cjs/contact-import/components/ManageImport/Completed.js +41 -27
- package/dist/cjs/contact-import/components/ManageImport/Completed.js.map +1 -1
- package/dist/cjs/contact-import/components/ManageImport/Dashboard.js +43 -23
- package/dist/cjs/contact-import/components/ManageImport/Dashboard.js.map +1 -1
- package/dist/cjs/contact-import/components/ManageImport/NoDataState.js +6 -7
- package/dist/cjs/contact-import/components/ManageImport/NoDataState.js.map +1 -1
- package/dist/cjs/contact-import/components/ManageImport/Scheduled.js +46 -30
- package/dist/cjs/contact-import/components/ManageImport/Scheduled.js.map +1 -1
- package/dist/cjs/contact-import/components/ManageImport/icon.js +85 -0
- package/dist/cjs/contact-import/components/ManageImport/icon.js.map +1 -0
- package/dist/cjs/contact-import/components/Scheduling.js +27 -39
- package/dist/cjs/contact-import/components/Scheduling.js.map +1 -1
- package/dist/cjs/contact-import/components/TimePicker.js +102 -129
- package/dist/cjs/contact-import/components/TimePicker.js.map +1 -1
- package/dist/cjs/contact-import/components/conact-import-schedule.js +64 -0
- package/dist/cjs/contact-import/components/conact-import-schedule.js.map +1 -0
- package/dist/cjs/contact-import/components/contact-import-configure.js +75 -0
- package/dist/cjs/contact-import/components/contact-import-configure.js.map +1 -0
- package/dist/cjs/contact-import/components/contact-import-mapping.js +224 -0
- package/dist/cjs/contact-import/components/contact-import-mapping.js.map +1 -0
- package/dist/cjs/contact-import/constants.js +21 -0
- package/dist/cjs/contact-import/constants.js.map +1 -0
- package/dist/cjs/contact-import/index.js +242 -32
- package/dist/cjs/contact-import/index.js.map +1 -1
- package/dist/cjs/dynamic-mapping/components/Mapping.js +321 -203
- package/dist/cjs/dynamic-mapping/components/Mapping.js.map +1 -1
- package/dist/cjs/dynamic-mapping/index.js +972 -34
- package/dist/cjs/dynamic-mapping/index.js.map +1 -1
- package/dist/cjs/filter/filter-pill-value-selector.js +1 -1
- package/dist/cjs/filter/filter-pill-value-selector.js.map +1 -1
- package/dist/cjs/index.js +12 -159
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/integration-template/components/dashboard.js +137 -130
- package/dist/cjs/integration-template/components/dashboard.js.map +1 -1
- package/dist/cjs/integration-template/index.js +343 -0
- package/dist/cjs/integration-template/index.js.map +1 -0
- package/dist/cjs/mapping/components/custom-menu.js +3 -4
- package/dist/cjs/mapping/components/custom-menu.js.map +1 -1
- package/dist/cjs/mapping/components/field.js +103 -121
- package/dist/cjs/mapping/components/field.js.map +1 -1
- package/dist/cjs/mapping/components/mapping.js +195 -106
- package/dist/cjs/mapping/components/mapping.js.map +1 -1
- package/dist/cjs/mapping/constants/index.js +2 -259
- package/dist/cjs/mapping/constants/index.js.map +1 -1
- package/dist/cjs/mapping/index.js +618 -38
- package/dist/cjs/mapping/index.js.map +1 -1
- package/dist/cjs/mapping/services/index.js +58 -96
- package/dist/cjs/mapping/services/index.js.map +1 -1
- package/dist/cjs/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@radix-ui/react-menu/dist/index.js +7 -7
- package/dist/cjs/single-mapping/components/mapping.js +490 -0
- package/dist/cjs/single-mapping/components/mapping.js.map +1 -0
- package/dist/cjs/single-mapping/index.js +987 -59
- package/dist/cjs/single-mapping/index.js.map +1 -1
- package/dist/cjs/triggers/components/subcomponents.js +1140 -0
- package/dist/cjs/triggers/components/subcomponents.js.map +1 -0
- package/dist/cjs/triggers/components/trigger.js +491 -0
- package/dist/cjs/triggers/components/trigger.js.map +1 -0
- package/dist/cjs/triggers/constants/index.js +0 -253
- package/dist/cjs/triggers/constants/index.js.map +1 -1
- package/dist/cjs/triggers/index.js +333 -0
- package/dist/cjs/triggers/index.js.map +1 -0
- package/dist/cjs/triggers/services/index.js +30 -0
- package/dist/cjs/triggers/services/index.js.map +1 -0
- package/dist/es/cascader-dropdown/cascader-dropdown-content.js +1 -1
- package/dist/es/cascader-dropdown/cascader-dropdown-content.js.map +1 -1
- package/dist/es/commons/components/NamingModal.js +35 -63
- package/dist/es/commons/components/NamingModal.js.map +1 -1
- package/dist/es/commons/components/confirmation-modal.js +13 -25
- package/dist/es/commons/components/confirmation-modal.js.map +1 -1
- package/dist/es/commons/components/custom-pill.js +13 -31
- package/dist/es/commons/components/custom-pill.js.map +1 -1
- package/dist/es/commons/components/draftModal.js +32 -46
- package/dist/es/commons/components/draftModal.js.map +1 -1
- package/dist/es/commons/components/edit-confirmation.js +18 -35
- package/dist/es/commons/components/edit-confirmation.js.map +1 -1
- package/dist/es/commons/components/import-modal.js +19 -50
- package/dist/es/commons/components/import-modal.js.map +1 -1
- package/dist/es/commons/components/spinner.js +2 -16
- package/dist/es/commons/components/spinner.js.map +1 -1
- package/dist/es/commons/components/theme-wrapper.js +12 -9
- package/dist/es/commons/components/theme-wrapper.js.map +1 -1
- package/dist/es/commons/constants/enhanced.js.map +1 -1
- package/dist/es/commons/helpers/index.js +52 -93
- package/dist/es/commons/helpers/index.js.map +1 -1
- package/dist/es/commons/icons/arrow.js +3 -38
- package/dist/es/commons/icons/arrow.js.map +1 -1
- package/dist/es/commons/icons/cursor.js +8 -21
- package/dist/es/commons/icons/cursor.js.map +1 -1
- package/dist/es/commons/icons/email-letter.js +12 -30
- package/dist/es/commons/icons/email-letter.js.map +1 -1
- package/dist/es/commons/icons/mapping.js +10 -23
- package/dist/es/commons/icons/mapping.js.map +1 -1
- package/dist/es/commons/icons/nested-add.js +14 -32
- package/dist/es/commons/icons/nested-add.js.map +1 -1
- package/dist/es/commons/icons/sms.js +18 -36
- package/dist/es/commons/icons/sms.js.map +1 -1
- package/dist/es/commons/icons/sync.js +3 -110
- package/dist/es/commons/icons/sync.js.map +1 -1
- package/dist/es/commons/icons/trash.js +15 -33
- package/dist/es/commons/icons/trash.js.map +1 -1
- package/dist/es/commons/icons/whatsapp.js +31 -49
- package/dist/es/commons/icons/whatsapp.js.map +1 -1
- package/dist/es/contact-import/components/ManageImport/Completed.js +41 -27
- package/dist/es/contact-import/components/ManageImport/Completed.js.map +1 -1
- package/dist/es/contact-import/components/ManageImport/Dashboard.js +45 -25
- package/dist/es/contact-import/components/ManageImport/Dashboard.js.map +1 -1
- package/dist/es/contact-import/components/ManageImport/NoDataState.js +4 -5
- package/dist/es/contact-import/components/ManageImport/NoDataState.js.map +1 -1
- package/dist/es/contact-import/components/ManageImport/Scheduled.js +46 -30
- package/dist/es/contact-import/components/ManageImport/Scheduled.js.map +1 -1
- package/dist/es/contact-import/components/ManageImport/icon.js +82 -0
- package/dist/es/contact-import/components/ManageImport/icon.js.map +1 -0
- package/dist/es/contact-import/components/Scheduling.js +27 -39
- package/dist/es/contact-import/components/Scheduling.js.map +1 -1
- package/dist/es/contact-import/components/TimePicker.js +103 -130
- package/dist/es/contact-import/components/TimePicker.js.map +1 -1
- package/dist/es/contact-import/components/conact-import-schedule.js +60 -0
- package/dist/es/contact-import/components/conact-import-schedule.js.map +1 -0
- package/dist/es/contact-import/components/contact-import-configure.js +71 -0
- package/dist/es/contact-import/components/contact-import-configure.js.map +1 -0
- package/dist/es/contact-import/components/contact-import-mapping.js +220 -0
- package/dist/es/contact-import/components/contact-import-mapping.js.map +1 -0
- package/dist/es/contact-import/constants.js +18 -0
- package/dist/es/contact-import/constants.js.map +1 -0
- package/dist/es/contact-import/index.js +240 -27
- package/dist/es/contact-import/index.js.map +1 -1
- package/dist/es/dynamic-mapping/components/Mapping.js +321 -203
- package/dist/es/dynamic-mapping/components/Mapping.js.map +1 -1
- package/dist/es/dynamic-mapping/index.js +972 -34
- package/dist/es/dynamic-mapping/index.js.map +1 -1
- package/dist/es/filter/filter-pill-value-selector.js +1 -1
- package/dist/es/filter/filter-pill-value-selector.js.map +1 -1
- package/dist/es/index.js +2 -23
- package/dist/es/index.js.map +1 -1
- package/dist/es/integration-template/components/dashboard.js +139 -132
- package/dist/es/integration-template/components/dashboard.js.map +1 -1
- package/dist/es/integration-template/index.js +341 -0
- package/dist/es/integration-template/index.js.map +1 -0
- package/dist/es/mapping/components/custom-menu.js +3 -4
- package/dist/es/mapping/components/custom-menu.js.map +1 -1
- package/dist/es/mapping/components/field.js +100 -118
- package/dist/es/mapping/components/field.js.map +1 -1
- package/dist/es/mapping/components/mapping.js +194 -105
- package/dist/es/mapping/components/mapping.js.map +1 -1
- package/dist/es/mapping/constants/index.js +3 -239
- package/dist/es/mapping/constants/index.js.map +1 -1
- package/dist/es/mapping/index.js +617 -12
- package/dist/es/mapping/index.js.map +1 -1
- package/dist/es/mapping/services/index.js +59 -96
- package/dist/es/mapping/services/index.js.map +1 -1
- package/dist/es/node_modules/@internationalized/date/dist/CalendarDate.js +3 -3
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/dialog/dialog.js +1 -1
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/dropdown/dropdown.js +2 -2
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@radix-ui/react-dropdown-menu/dist/index.js +1 -1
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@react-aria/calendar/dist/import.js +2 -2
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@react-aria/utils/dist/import.js +1 -1
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@react-stately/calendar/dist/import.js +1 -1
- package/dist/es/single-mapping/components/mapping.js +486 -0
- package/dist/es/single-mapping/components/mapping.js.map +1 -0
- package/dist/es/single-mapping/index.js +988 -60
- package/dist/es/single-mapping/index.js.map +1 -1
- package/dist/es/triggers/components/subcomponents.js +1134 -0
- package/dist/es/triggers/components/subcomponents.js.map +1 -0
- package/dist/es/triggers/components/trigger.js +487 -0
- package/dist/es/triggers/components/trigger.js.map +1 -0
- package/dist/es/triggers/constants/index.js +1 -228
- package/dist/es/triggers/constants/index.js.map +1 -1
- package/dist/es/triggers/index.js +331 -0
- package/dist/es/triggers/index.js.map +1 -0
- package/dist/es/triggers/services/index.js +28 -0
- package/dist/es/triggers/services/index.js.map +1 -0
- package/dist/index.d.ts +448 -2161
- package/package.json +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import React__default, { useState } from 'react';
|
|
1
|
+
import React__default, { useState, useEffect } from 'react';
|
|
2
2
|
import { surveySparrowURL } from '../../commons/constants/index.js';
|
|
3
|
+
import { MAPPING_ERROR_MESSAGES, DEFAULT_FIELD_VALUE } from '../constants/index.js';
|
|
4
|
+
import { fetchSurveyQuestions, fetchSurveyVariables, fetchContactProperties, fetchSurveyExpression } from '../services/index.js';
|
|
3
5
|
import ImportModal from '../../commons/components/import-modal.js';
|
|
4
6
|
import Spinner from '../../commons/components/spinner.js';
|
|
5
7
|
import Field from './field.js';
|
|
6
8
|
import PlaceholderSpan from './placeholder-span.js';
|
|
7
|
-
import
|
|
8
|
-
import { useFieldMapping } from '../hooks/useFieldMapping.js';
|
|
9
|
-
import { UI_TEXT, FIELD_TYPE_NAMES } from '../constants/index.js';
|
|
9
|
+
import v4 from '../../node_modules/uuid/dist/esm-browser/v4.js';
|
|
10
10
|
import { Flex } from '../../node_modules/@sparrowengg/twigs-react/dist/es/flex/flex.js';
|
|
11
|
-
import { Heading } from '../../node_modules/@sparrowengg/twigs-react/dist/es/heading/heading.js';
|
|
12
11
|
import { Box } from '../../node_modules/@sparrowengg/twigs-react/dist/es/box/box.js';
|
|
12
|
+
import { Heading } from '../../node_modules/@sparrowengg/twigs-react/dist/es/heading/heading.js';
|
|
13
13
|
import { Text } from '../../node_modules/@sparrowengg/twigs-react/dist/es/text/text.js';
|
|
14
14
|
import { Button } from '../../node_modules/@sparrowengg/twigs-react/dist/es/button/button.js';
|
|
15
15
|
import { PlusIcon } from '../../node_modules/@sparrowengg/twigs-react-icons/dist/es/icons/plus.js';
|
|
@@ -17,6 +17,25 @@ import { Select } from '../../node_modules/@sparrowengg/twigs-react/dist/es/sele
|
|
|
17
17
|
import { Checkbox } from '../../node_modules/@sparrowengg/twigs-react/dist/es/checkbox/checkbox.js';
|
|
18
18
|
import { FormLabel } from '../../node_modules/@sparrowengg/twigs-react/dist/es/form-label/form-label.js';
|
|
19
19
|
|
|
20
|
+
var __defProp = Object.defineProperty;
|
|
21
|
+
var __defProps = Object.defineProperties;
|
|
22
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
23
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
24
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
25
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
26
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
27
|
+
var __spreadValues = (a, b) => {
|
|
28
|
+
for (var prop in b || (b = {}))
|
|
29
|
+
if (__hasOwnProp.call(b, prop))
|
|
30
|
+
__defNormalProp(a, prop, b[prop]);
|
|
31
|
+
if (__getOwnPropSymbols)
|
|
32
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
33
|
+
if (__propIsEnum.call(b, prop))
|
|
34
|
+
__defNormalProp(a, prop, b[prop]);
|
|
35
|
+
}
|
|
36
|
+
return a;
|
|
37
|
+
};
|
|
38
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
39
|
const Mapping = ({
|
|
21
40
|
havingTypeDropdown,
|
|
22
41
|
integrationName,
|
|
@@ -33,74 +52,103 @@ const Mapping = ({
|
|
|
33
52
|
customList,
|
|
34
53
|
oldResponse
|
|
35
54
|
}) => {
|
|
55
|
+
const [ssMappingData, setSSMappingData] = useState({
|
|
56
|
+
questions: [],
|
|
57
|
+
variables: [],
|
|
58
|
+
contactProperties: [],
|
|
59
|
+
expressions: []
|
|
60
|
+
});
|
|
36
61
|
const [showCustomPropertyModal, setShowCustomPropertyModal] = useState(false);
|
|
37
62
|
const [customPropertyField, setCustomPropertyField] = useState("");
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
handleFieldValue,
|
|
45
|
-
addNewField,
|
|
46
|
-
removeField,
|
|
47
|
-
essentialFields,
|
|
48
|
-
commonFields
|
|
49
|
-
} = useFieldMapping({
|
|
50
|
-
fields,
|
|
51
|
-
setFields
|
|
52
|
-
});
|
|
53
|
-
const hasRequiredProps = () => {
|
|
54
|
-
return !!(fields && typeof setFields === "function" && integrationFields && setIntegrationFields !== void 0 && token);
|
|
55
|
-
};
|
|
56
|
-
const handleCustomPropertySave = () => {
|
|
57
|
-
if (setIntegrationFields && customPropertyField) {
|
|
58
|
-
setIntegrationFields((prev) => [
|
|
59
|
-
...prev,
|
|
60
|
-
{
|
|
61
|
-
id: customPropertyField,
|
|
62
|
-
label: customPropertyField,
|
|
63
|
-
value: customPropertyField,
|
|
64
|
-
type: FIELD_TYPE_NAMES.STRING.toLowerCase()
|
|
65
|
-
}
|
|
66
|
-
]);
|
|
63
|
+
const [loader, setLoader] = useState(true);
|
|
64
|
+
const essentialFields = fields == null ? void 0 : fields.filter((field) => field == null ? void 0 : field.isEssentialField);
|
|
65
|
+
const commonFields = fields == null ? void 0 : fields.filter((field) => !(field == null ? void 0 : field.isEssentialField));
|
|
66
|
+
const customHandler = (field, property, value) => {
|
|
67
|
+
if ((field == null ? void 0 : field.dependency) && typeof field.dependency === "object" && "length" in field.dependency) {
|
|
68
|
+
return field.dependency;
|
|
67
69
|
}
|
|
68
|
-
|
|
69
|
-
setCustomPropertyField(UI_TEXT.EMPTY_PLACEHOLDER);
|
|
70
|
+
return [];
|
|
70
71
|
};
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
const handleFieldValue = (id, property, value) => {
|
|
73
|
+
let dependentField = [];
|
|
74
|
+
const targetField = fields.find((field) => field.id === id);
|
|
75
|
+
dependentField = customHandler(
|
|
76
|
+
targetField);
|
|
77
|
+
let currentFields = [...fields, ...dependentField].filter(
|
|
78
|
+
(obj, index, self) => index === self.findIndex((o) => JSON.stringify(o) === JSON.stringify(obj))
|
|
79
|
+
);
|
|
80
|
+
setFields(
|
|
81
|
+
currentFields == null ? void 0 : currentFields.map((field) => {
|
|
82
|
+
if (field.id === id) {
|
|
83
|
+
return property === "type" ? __spreadProps(__spreadValues({}, field), { surveySparrowField: null, mappedType: value, id: id.toString() }) : property === "integrationFieldType" ? __spreadProps(__spreadValues({}, field), { defaultValue: null, [property]: value }) : __spreadProps(__spreadValues({}, field), { [property]: value });
|
|
84
|
+
} else {
|
|
85
|
+
return __spreadValues({}, field);
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
);
|
|
75
89
|
};
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
90
|
+
const hasRequiredProps = () => !!fields && !!setFields && !!integrationFields && !!setIntegrationFields && !!token;
|
|
91
|
+
const fetchInitialMappingData = async () => {
|
|
92
|
+
setLoader(true);
|
|
93
|
+
try {
|
|
94
|
+
const [questions, variables, contactProperties, expressions] = await Promise.all([
|
|
95
|
+
fetchSurveyQuestions(apiURL, surveyId, token != null ? token : ""),
|
|
96
|
+
fetchSurveyVariables(apiURL, surveyId, token != null ? token : ""),
|
|
97
|
+
fetchContactProperties(apiURL, token != null ? token : ""),
|
|
98
|
+
fetchSurveyExpression(apiURL, surveyId, token != null ? token : "")
|
|
99
|
+
]);
|
|
100
|
+
setSSMappingData({
|
|
101
|
+
questions: questions || [],
|
|
102
|
+
contactProperties: contactProperties || [],
|
|
103
|
+
variables: variables || [],
|
|
104
|
+
expressions: expressions || []
|
|
105
|
+
});
|
|
106
|
+
} catch (error) {
|
|
107
|
+
console.error(MAPPING_ERROR_MESSAGES.FETCH_ERROR, error);
|
|
108
|
+
setSSMappingData({
|
|
109
|
+
questions: [],
|
|
110
|
+
contactProperties: [],
|
|
111
|
+
variables: [],
|
|
112
|
+
expressions: []
|
|
113
|
+
});
|
|
114
|
+
} finally {
|
|
115
|
+
setLoader(false);
|
|
79
116
|
}
|
|
80
117
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
{
|
|
85
|
-
alignItems: "center",
|
|
86
|
-
justifyContent: "center",
|
|
87
|
-
css: { height: "calc(100vh - 57px)" }
|
|
88
|
-
},
|
|
89
|
-
/* @__PURE__ */ React__default.createElement(Spinner, null)
|
|
118
|
+
useEffect(() => {
|
|
119
|
+
setFields(
|
|
120
|
+
(fields == null ? void 0 : fields.length) === 0 ? [__spreadProps(__spreadValues({}, DEFAULT_FIELD_VALUE), { id: v4() })] : fields == null ? void 0 : fields.map((field) => __spreadProps(__spreadValues({}, field), { id: v4() }))
|
|
90
121
|
);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
122
|
+
if (!!token && (token == null ? void 0 : token.length) > 60 && !!surveyId) {
|
|
123
|
+
fetchInitialMappingData();
|
|
124
|
+
} else {
|
|
125
|
+
setLoader(false);
|
|
126
|
+
}
|
|
127
|
+
}, [token, surveyId]);
|
|
128
|
+
return /* @__PURE__ */ React__default.createElement(Flex, { alignItems: "center", justifyContent: "center" }, hasRequiredProps() ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, loader ? /* @__PURE__ */ React__default.createElement(
|
|
129
|
+
Flex,
|
|
130
|
+
{
|
|
131
|
+
alignItems: "center",
|
|
132
|
+
justifyContent: "center",
|
|
133
|
+
css: { height: "calc(100vh - 57px)" }
|
|
134
|
+
},
|
|
135
|
+
/* @__PURE__ */ React__default.createElement(Spinner, null)
|
|
136
|
+
) : /* @__PURE__ */ React__default.createElement(Box, { css: { maxWidth: 1120, width: "100%", marginBlock: "$40" } }, /* @__PURE__ */ React__default.createElement(
|
|
137
|
+
Heading,
|
|
138
|
+
{
|
|
139
|
+
size: "h5",
|
|
140
|
+
css: { color: "$neutral900" }
|
|
141
|
+
},
|
|
142
|
+
`Map to ${integrationName}`
|
|
143
|
+
), /* @__PURE__ */ React__default.createElement(Flex, { gap: "$2", css: { marginTop: "$4" } }, /* @__PURE__ */ React__default.createElement(Text, { size: "sm", css: { color: "$neutral500" } }, "Survey Name:"), /* @__PURE__ */ React__default.createElement(
|
|
144
|
+
Text,
|
|
145
|
+
{
|
|
146
|
+
size: "sm",
|
|
147
|
+
weight: "medium",
|
|
148
|
+
css: { color: "$neutral800" }
|
|
149
|
+
},
|
|
150
|
+
surveyDetails.surveyName
|
|
151
|
+
)), !!(essentialFields == null ? void 0 : essentialFields.length) && /* @__PURE__ */ React__default.createElement(
|
|
104
152
|
Box,
|
|
105
153
|
{
|
|
106
154
|
css: {
|
|
@@ -120,57 +168,82 @@ const Mapping = ({
|
|
|
120
168
|
marginTop: "$4"
|
|
121
169
|
}
|
|
122
170
|
},
|
|
123
|
-
|
|
171
|
+
"This connection requires",
|
|
124
172
|
" ",
|
|
125
|
-
/* @__PURE__ */ React__default.createElement(PlaceholderSpan, { color: "$neutral600" }, essentialFields.length),
|
|
173
|
+
/* @__PURE__ */ React__default.createElement(PlaceholderSpan, { color: "$neutral600" }, essentialFields == null ? void 0 : essentialFields.length),
|
|
126
174
|
/* @__PURE__ */ React__default.createElement(PlaceholderSpan, { color: "$negative500" }, "*"),
|
|
127
175
|
" ",
|
|
128
|
-
|
|
176
|
+
"essential mappings"
|
|
129
177
|
),
|
|
130
|
-
/* @__PURE__ */ React__default.createElement(
|
|
178
|
+
/* @__PURE__ */ React__default.createElement(
|
|
179
|
+
Flex,
|
|
180
|
+
{
|
|
181
|
+
flexDirection: "column",
|
|
182
|
+
gap: "$20",
|
|
183
|
+
css: { marginTop: "$12" }
|
|
184
|
+
},
|
|
185
|
+
essentialFields == null ? void 0 : essentialFields.map((field, idx) => /* @__PURE__ */ React__default.createElement(
|
|
186
|
+
Field,
|
|
187
|
+
{
|
|
188
|
+
surveyType,
|
|
189
|
+
havingTypeDropdown,
|
|
190
|
+
key: field.id,
|
|
191
|
+
field,
|
|
192
|
+
integrationName,
|
|
193
|
+
handleFieldValue: (id, property, value) => handleFieldValue(id, property, value),
|
|
194
|
+
hasCustomMenuProperty,
|
|
195
|
+
integrationFields,
|
|
196
|
+
isBtnDisabled: commonFields.length === 1,
|
|
197
|
+
isFirstField: idx === 0,
|
|
198
|
+
ssMappingData,
|
|
199
|
+
showCustomPropertyModal: () => {
|
|
200
|
+
setShowCustomPropertyModal(true);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
))
|
|
204
|
+
)
|
|
205
|
+
), /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$16", css: { marginTop: "$16" } }, commonFields == null ? void 0 : commonFields.map((field, idx) => {
|
|
206
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
131
207
|
Field,
|
|
132
208
|
{
|
|
133
|
-
key: field.id,
|
|
134
209
|
surveyType,
|
|
135
210
|
havingTypeDropdown,
|
|
211
|
+
key: field.id,
|
|
136
212
|
field,
|
|
137
213
|
integrationName,
|
|
138
|
-
|
|
214
|
+
removeField: () => {
|
|
215
|
+
setFields(
|
|
216
|
+
(prev) => prev.filter(
|
|
217
|
+
(currentField) => currentField.id !== field.id
|
|
218
|
+
)
|
|
219
|
+
);
|
|
220
|
+
},
|
|
221
|
+
handleFieldValue: (id, property, value) => handleFieldValue(id, property, value),
|
|
139
222
|
hasCustomMenuProperty,
|
|
140
223
|
integrationFields,
|
|
141
|
-
isBtnDisabled:
|
|
224
|
+
isBtnDisabled: false,
|
|
142
225
|
isFirstField: idx === 0,
|
|
143
226
|
ssMappingData,
|
|
144
|
-
showCustomPropertyModal: () =>
|
|
227
|
+
showCustomPropertyModal: () => {
|
|
228
|
+
setShowCustomPropertyModal(true);
|
|
229
|
+
}
|
|
145
230
|
}
|
|
146
|
-
)
|
|
147
|
-
), /* @__PURE__ */ React__default.createElement(
|
|
148
|
-
Field,
|
|
149
|
-
{
|
|
150
|
-
key: field.id,
|
|
151
|
-
surveyType,
|
|
152
|
-
havingTypeDropdown,
|
|
153
|
-
field,
|
|
154
|
-
integrationName,
|
|
155
|
-
removeField: () => removeField(field.id),
|
|
156
|
-
handleFieldValue,
|
|
157
|
-
hasCustomMenuProperty,
|
|
158
|
-
integrationFields,
|
|
159
|
-
isBtnDisabled: false,
|
|
160
|
-
isFirstField: idx === 0,
|
|
161
|
-
ssMappingData,
|
|
162
|
-
showCustomPropertyModal: () => setShowCustomPropertyModal(true)
|
|
163
|
-
}
|
|
164
|
-
))), /* @__PURE__ */ React__default.createElement(
|
|
231
|
+
);
|
|
232
|
+
})), /* @__PURE__ */ React__default.createElement(
|
|
165
233
|
Button,
|
|
166
234
|
{
|
|
167
235
|
leftIcon: /* @__PURE__ */ React__default.createElement(PlusIcon, null),
|
|
168
236
|
color: "default",
|
|
169
237
|
css: { marginTop: "$10" },
|
|
170
|
-
onClick:
|
|
238
|
+
onClick: () => setFields([
|
|
239
|
+
...fields,
|
|
240
|
+
__spreadProps(__spreadValues({}, DEFAULT_FIELD_VALUE), {
|
|
241
|
+
id: v4()
|
|
242
|
+
})
|
|
243
|
+
]),
|
|
171
244
|
size: "md"
|
|
172
245
|
},
|
|
173
|
-
|
|
246
|
+
"New mapping field"
|
|
174
247
|
), (customList == null ? void 0 : customList.hasCustomList) && /* @__PURE__ */ React__default.createElement(
|
|
175
248
|
Flex,
|
|
176
249
|
{
|
|
@@ -178,7 +251,7 @@ const Mapping = ({
|
|
|
178
251
|
flexDirection: "column",
|
|
179
252
|
gap: "$8"
|
|
180
253
|
},
|
|
181
|
-
/* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$3" }, /* @__PURE__ */ React__default.createElement(Heading, { size: "h5" },
|
|
254
|
+
/* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$3" }, /* @__PURE__ */ React__default.createElement(Heading, { size: "h5" }, "Choose a List"), /* @__PURE__ */ React__default.createElement(Text, { css: { color: "$neutral500" }, size: "sm" }, "Pick a list to save mapped fields; If not, they'll be saved under all profiles.")),
|
|
182
255
|
/* @__PURE__ */ React__default.createElement(
|
|
183
256
|
Select,
|
|
184
257
|
{
|
|
@@ -186,29 +259,45 @@ const Mapping = ({
|
|
|
186
259
|
size: "lg",
|
|
187
260
|
options: customList.options,
|
|
188
261
|
value: customList.value,
|
|
189
|
-
placeholder:
|
|
190
|
-
onChange:
|
|
262
|
+
placeholder: "",
|
|
263
|
+
onChange: (value) => customList.onChangeHandler(value)
|
|
191
264
|
}
|
|
192
265
|
)
|
|
193
266
|
), (oldResponse == null ? void 0 : oldResponse.hasOldResponse) && /* @__PURE__ */ React__default.createElement(
|
|
194
267
|
Checkbox,
|
|
195
268
|
{
|
|
196
|
-
onChange:
|
|
269
|
+
onChange: (value) => oldResponse.onChangeHandler(value),
|
|
197
270
|
css: { marginBlock: "$8", cursor: "pointer" },
|
|
198
271
|
checked: oldResponse.value
|
|
199
272
|
},
|
|
200
|
-
/* @__PURE__ */ React__default.createElement(FormLabel, { size: "sm" },
|
|
273
|
+
/* @__PURE__ */ React__default.createElement(FormLabel, { size: "sm" }, "Import Old Response")
|
|
201
274
|
), showCustomPropertyModal && /* @__PURE__ */ React__default.createElement(
|
|
202
275
|
ImportModal,
|
|
203
276
|
{
|
|
204
|
-
|
|
277
|
+
onCloseHandler: () => setShowCustomPropertyModal(false),
|
|
278
|
+
onInputHandler: (value) => setCustomPropertyField(value),
|
|
279
|
+
onSaveHandler: () => {
|
|
280
|
+
setIntegrationFields && setIntegrationFields((prev) => [
|
|
281
|
+
...prev,
|
|
282
|
+
{
|
|
283
|
+
id: customPropertyField,
|
|
284
|
+
label: customPropertyField,
|
|
285
|
+
value: customPropertyField,
|
|
286
|
+
type: "string"
|
|
287
|
+
}
|
|
288
|
+
]);
|
|
205
289
|
setShowCustomPropertyModal(false);
|
|
206
|
-
|
|
207
|
-
},
|
|
208
|
-
onInputChange: setCustomPropertyField,
|
|
209
|
-
onSave: handleCustomPropertySave
|
|
290
|
+
}
|
|
210
291
|
}
|
|
211
|
-
)))
|
|
292
|
+
))) : /* @__PURE__ */ React__default.createElement(
|
|
293
|
+
Flex,
|
|
294
|
+
{
|
|
295
|
+
alignItems: "center",
|
|
296
|
+
justifyContent: "center",
|
|
297
|
+
css: { height: "100%" }
|
|
298
|
+
},
|
|
299
|
+
/* @__PURE__ */ React__default.createElement(Heading, { size: "h4", weight: "bold" }, "Provide the needed props to import Mapping Template")
|
|
300
|
+
));
|
|
212
301
|
};
|
|
213
302
|
|
|
214
303
|
export { Mapping };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.js","sources":["../../../../src/mapping/components/mapping.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport {\n Box,\n Button,\n Checkbox,\n Flex,\n FormLabel,\n Heading,\n Select,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport { PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport { surveySparrowURL } from \"../../commons/constants\";\nimport ImportModal from \"../../commons/components/import-modal\";\nimport Spinner from \"../../commons/components/spinner\";\nimport Field from \"./field\";\nimport PlaceholderSpan from \"./placeholder-span\";\nimport { FieldMappingProps, IntegrationFieldType } from \"../types\";\nimport { useMappingData, useFieldMapping } from \"../hooks\";\nimport { UI_TEXT, FIELD_TYPE_NAMES } from \"../constants\";\n\n/**\n * Mapping component - Displays and manages field mappings\n */\nexport const Mapping: React.FC<FieldMappingProps> = ({\n havingTypeDropdown,\n integrationName,\n surveyId,\n surveyType,\n fields,\n setFields,\n integrationFields,\n hasCustomMenuProperty,\n setIntegrationFields,\n apiURL = surveySparrowURL,\n token,\n surveyDetails,\n customList,\n oldResponse,\n}) => {\n const [showCustomPropertyModal, setShowCustomPropertyModal] = useState(false);\n const [customPropertyField, setCustomPropertyField] = useState<string>(\"\");\n\n // Fetch mapping data\n const { ssMappingData, loading } = useMappingData({\n apiURL,\n surveyId,\n token,\n });\n\n // Manage field mappings\n const {\n handleFieldValue,\n addNewField,\n removeField,\n essentialFields,\n commonFields,\n } = useFieldMapping({\n fields,\n setFields,\n });\n\n // Check if all required props are provided\n const hasRequiredProps = (): boolean => {\n return !!(\n fields &&\n typeof setFields === 'function' &&\n integrationFields &&\n (setIntegrationFields !== undefined) &&\n token\n );\n };\n\n const handleCustomPropertySave = (): void => {\n if (setIntegrationFields && customPropertyField) {\n setIntegrationFields((prev) => [\n ...prev,\n {\n id: customPropertyField,\n label: customPropertyField,\n value: customPropertyField,\n type: FIELD_TYPE_NAMES.STRING.toLowerCase(),\n } as IntegrationFieldType,\n ]);\n }\n setShowCustomPropertyModal(false);\n setCustomPropertyField(UI_TEXT.EMPTY_PLACEHOLDER);\n };\n\n const handleCustomListChange = (value: unknown): void => {\n if (customList.onChangeHandler) {\n customList.onChangeHandler(value as Parameters<typeof customList.onChangeHandler>[0]);\n }\n };\n\n const handleOldResponseChange = (value: unknown): void => {\n if (oldResponse.onChangeHandler) {\n oldResponse.onChangeHandler(value as Parameters<typeof oldResponse.onChangeHandler>[0]);\n }\n };\n\n // Loading state\n if (loading) {\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: \"calc(100vh - 57px)\" }}\n >\n <Spinner />\n </Flex>\n );\n }\n\n // Missing required props\n if (!hasRequiredProps()) {\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: \"100%\" }}\n >\n <Heading size=\"h4\" weight=\"bold\">\n {UI_TEXT.PROVIDE_NEEDED_PROPS}\n </Heading>\n </Flex>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Box css={{ maxWidth: 1120, width: \"100%\", marginBlock: \"$40\" }}>\n {/* Header */}\n <Heading size=\"h5\" css={{ color: \"$neutral900\" }}>\n {`${UI_TEXT.MAP_TO_PREFIX} ${integrationName}`}\n </Heading>\n <Flex gap=\"$2\" css={{ marginTop: \"$4\" }}>\n <Text size=\"sm\" css={{ color: \"$neutral500\" }}>\n {UI_TEXT.SURVEY_NAME_LABEL}\n </Text>\n <Text size=\"sm\" weight=\"medium\" css={{ color: \"$neutral800\" }}>\n {surveyDetails.surveyName}\n </Text>\n </Flex>\n\n {/* Essential Fields Section */}\n {!!essentialFields?.length && (\n <Box\n css={{\n width: \"100%\",\n paddingBlock: \"$12 $20\",\n borderBottom: \"$borderWidths$xs dashed $neutral200\",\n maxWidth: 1084,\n }}\n >\n <Text\n size=\"md\"\n css={{\n color: \"$neutral500\",\n lineHeight: \"$md\",\n marginTop: \"$4\",\n }}\n >\n {UI_TEXT.CONNECTION_REQUIRES_TEXT}{\" \"}\n <PlaceholderSpan color=\"$neutral600\">\n {essentialFields.length}\n </PlaceholderSpan>\n <PlaceholderSpan color=\"$negative500\">*</PlaceholderSpan> {UI_TEXT.ESSENTIAL_MAPPINGS_TEXT}\n </Text>\n <Flex flexDirection=\"column\" gap=\"$20\" css={{ marginTop: \"$12\" }}>\n {essentialFields.map((field, idx) => (\n <Field\n key={field.id}\n surveyType={surveyType}\n havingTypeDropdown={havingTypeDropdown}\n field={field}\n integrationName={integrationName}\n handleFieldValue={handleFieldValue}\n hasCustomMenuProperty={hasCustomMenuProperty}\n integrationFields={integrationFields}\n isBtnDisabled={commonFields.length === 1}\n isFirstField={idx === 0}\n ssMappingData={ssMappingData}\n showCustomPropertyModal={() => setShowCustomPropertyModal(true)}\n />\n ))}\n </Flex>\n </Box>\n )}\n\n {/* Common Fields Section */}\n <Flex flexDirection=\"column\" gap=\"$16\" css={{ marginTop: \"$16\" }}>\n {commonFields.map((field, idx) => (\n <Field\n key={field.id}\n surveyType={surveyType}\n havingTypeDropdown={havingTypeDropdown}\n field={field}\n integrationName={integrationName}\n removeField={() => removeField(field.id)}\n handleFieldValue={handleFieldValue}\n hasCustomMenuProperty={hasCustomMenuProperty}\n integrationFields={integrationFields}\n isBtnDisabled={false}\n isFirstField={idx === 0}\n ssMappingData={ssMappingData}\n showCustomPropertyModal={() => setShowCustomPropertyModal(true)}\n />\n ))}\n </Flex>\n\n {/* Add New Field Button */}\n <Button\n leftIcon={<PlusIcon />}\n color=\"default\"\n css={{ marginTop: \"$10\" }}\n onClick={addNewField}\n size=\"md\"\n >\n {UI_TEXT.NEW_MAPPING_FIELD_BUTTON}\n </Button>\n\n {/* Custom List Selection */}\n {customList?.hasCustomList && (\n <Flex\n css={{ marginTop: \"$40\" }}\n flexDirection=\"column\"\n gap=\"$8\"\n >\n <Flex flexDirection=\"column\" gap=\"$3\">\n <Heading size=\"h5\">{UI_TEXT.CHOOSE_LIST_HEADING}</Heading>\n <Text css={{ color: \"$neutral500\" }} size=\"sm\">\n {UI_TEXT.CHOOSE_LIST_DESCRIPTION}\n </Text>\n </Flex>\n <Select\n css={{ maxWidth: 400, width: \"100%\" }}\n size=\"lg\"\n options={customList.options}\n value={customList.value}\n placeholder={UI_TEXT.EMPTY_PLACEHOLDER}\n onChange={handleCustomListChange}\n />\n </Flex>\n )}\n\n {/* Old Response Checkbox */}\n {oldResponse?.hasOldResponse && (\n <Checkbox\n onChange={handleOldResponseChange}\n css={{ marginBlock: \"$8\", cursor: \"pointer\" }}\n checked={oldResponse.value as boolean}\n >\n <FormLabel size=\"sm\">{UI_TEXT.IMPORT_OLD_RESPONSE_LABEL}</FormLabel>\n </Checkbox>\n )}\n\n {/* Custom Property Modal */}\n {showCustomPropertyModal && (\n <ImportModal\n onClose={() => {\n setShowCustomPropertyModal(false);\n setCustomPropertyField(UI_TEXT.EMPTY_PLACEHOLDER);\n }}\n onInputChange={setCustomPropertyField}\n onSave={handleCustomPropertySave}\n />\n )}\n </Box>\n </Flex>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapping.js","sources":["../../../../src/mapping/components/mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Checkbox,\n Flex,\n FormLabel,\n Heading,\n Select,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport React, { useEffect, useState, useMemo } from \"react\";\nimport { PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport { surveySparrowURL } from \"../../commons/constants\";\nimport { DEFAULT_FIELD_VALUE, MAPPING_ERROR_MESSAGES } from \"../constants\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n fetchContactProperties,\n fetchSurveyQuestions,\n fetchSurveyVariables,\n fetchSurveyExpression,\n} from \"../services\";\nimport { MappingTypeProps, ssMappingDataResponse, FieldType, SelectOption, IntegrationFieldType } from \"../types\";\nimport { FormFieldValue, FieldChangeHandler } from \"../../commons/types/enhanced\";\nimport { UI_CONSTANTS, MAPPING_TYPES } from \"../../commons/constants/enhanced\";\nimport ImportModal from \"../../commons/components/import-modal\";\nimport Spinner from \"../../commons/components/spinner\";\nimport Field from \"./field\";\nimport PlaceholderSpan from \"./placeholder-span\";\n\n\nexport const Mapping: React.FC<MappingTypeProps> = ({\n havingTypeDropdown,\n integrationName,\n surveyId,\n surveyType,\n fields,\n setFields,\n integrationFields,\n hasCustomMenuProperty,\n setIntegrationFields,\n apiURL = surveySparrowURL,\n token,\n surveyDetails,\n customList,\n oldResponse,\n}) => {\n const [ssMappingData, setSSMappingData] = useState<\n ssMappingDataResponse<SelectOption>\n >({\n questions: [],\n variables: [],\n contactProperties: [],\n expressions: [],\n });\n const [showCustomPropertyModal, setShowCustomPropertyModal] = useState(false);\n const [customPropertyField, setCustomPropertyField] = useState<string>(\"\");\n const [loader, setLoader] = useState<boolean>(true);\n const essentialFields = fields?.filter((field) => field?.isEssentialField);\n const commonFields = fields?.filter((field) => !field?.isEssentialField);\n\n const customHandler = (field: FieldType | undefined, property: string, value: FormFieldValue): Array<IntegrationFieldType> => {\n if (field?.dependency && typeof field.dependency === 'object' && 'length' in field.dependency) {\n return (field.dependency as unknown) as Array<IntegrationFieldType>;\n }\n return [];\n };\n\n const handleFieldValue: FieldChangeHandler = (id: string | number, property: string, value: FormFieldValue) => {\n let dependentField: Array<IntegrationFieldType> = [];\n const targetField = fields.find((field) => field.id === id);\n dependentField = customHandler(\n targetField,\n property,\n value\n );\n let currentFields = [...fields, ...dependentField].filter(\n (obj, index, self) =>\n index ===\n self.findIndex((o) => JSON.stringify(o) === JSON.stringify(obj))\n );\n setFields(\n currentFields?.map((field) => {\n if (field.id === id) {\n return property === \"type\"\n ? { ...field, surveySparrowField: null, mappedType: value, id: id.toString() }\n : property === \"integrationFieldType\"\n ? { ...field, defaultValue: null, [property]: value }\n : { ...field, [property]: value };\n } else {\n return { ...field };\n }\n }) as FieldType[]\n );\n };\n\n const hasRequiredProps = () =>\n !!fields &&\n !!setFields &&\n !!integrationFields &&\n !!setIntegrationFields &&\n !!token;\n\n const fetchInitialMappingData = async (): Promise<void> => {\n setLoader(true);\n try {\n const [questions, variables, contactProperties, expressions] =\n await Promise.all([\n fetchSurveyQuestions(apiURL, surveyId, token ?? \"\"),\n fetchSurveyVariables(apiURL, surveyId, token ?? \"\"),\n fetchContactProperties(apiURL, token ?? \"\"),\n fetchSurveyExpression(apiURL, surveyId, token ?? \"\"),\n ]);\n setSSMappingData({\n questions: (questions as any) || [],\n contactProperties: (contactProperties as any) || [],\n variables: (variables as any) || [],\n expressions: (expressions as any) || [],\n });\n } catch (error) {\n console.error(MAPPING_ERROR_MESSAGES.FETCH_ERROR, error);\n setSSMappingData({\n questions: [],\n contactProperties: [],\n variables: [],\n expressions: [],\n });\n } finally {\n setLoader(false);\n }\n };\n\n const getEssentialFieldsNumber = (length: number): string => {\n const numberMapping: Record<number, string> = {\n 1: \"one\",\n 2: \"two\",\n 3: \"three\",\n 4: \"four\",\n 5: \"five\",\n 6: \"six\",\n 7: \"seven\",\n 8: \"eight\",\n 9: \"nine\",\n 10: \"ten\",\n };\n return numberMapping[length] ?? \"These\";\n };\n\n useEffect(() => {\n setFields(\n fields?.length === 0\n ? [{ ...DEFAULT_FIELD_VALUE, id: uuid() } as FieldType]\n : fields?.map((field) => ({ ...field, id: uuid() })) as FieldType[]\n );\n if (!!token && token?.length > 60 && !!surveyId) {\n fetchInitialMappingData();\n } else {\n setLoader(false);\n }\n }, [token, surveyId]);\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n {hasRequiredProps() ? (\n <>\n {loader ? (\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: \"calc(100vh - 57px)\" }}\n >\n <Spinner />\n </Flex>\n ) : (\n <Box css={{ maxWidth: 1120, width: \"100%\", marginBlock: \"$40\" }}>\n <Heading\n size=\"h5\"\n css={{ color: \"$neutral900\" }}\n >{`Map to ${integrationName}`}</Heading>\n <Flex gap=\"$2\" css={{ marginTop: \"$4\" }}>\n <Text size=\"sm\" css={{ color: \"$neutral500\" }}>\n Survey Name:\n </Text>\n <Text\n size=\"sm\"\n weight={\"medium\"}\n css={{ color: \"$neutral800\" }}\n >\n {surveyDetails.surveyName}\n </Text>\n </Flex>\n {!!essentialFields?.length && (\n <Box\n css={{\n width: \"100%\",\n paddingBlock: \"$12 $20\",\n borderBottom: \"$borderWidths$xs dashed $neutral200\",\n maxWidth: 1084,\n }}\n >\n <Text\n size=\"md\"\n css={{\n color: \"$neutral500\",\n lineHeight: \"$md\",\n marginTop: \"$4\",\n }}\n >\n This connection requires{\" \"}\n <PlaceholderSpan color=\"$neutral600\">\n {essentialFields?.length}\n </PlaceholderSpan>\n <PlaceholderSpan color=\"$negative500\">*</PlaceholderSpan>{\" \"}\n essential mappings\n </Text>\n <Flex\n flexDirection=\"column\"\n gap=\"$20\"\n css={{ marginTop: \"$12\" }}\n >\n {essentialFields?.map((field, idx) => (\n <Field\n surveyType={surveyType}\n havingTypeDropdown={havingTypeDropdown}\n key={field.id}\n field={field}\n integrationName={integrationName}\n handleFieldValue={(id: string | number, property: string, value: FormFieldValue) =>\n handleFieldValue(id, property, value)\n }\n hasCustomMenuProperty={hasCustomMenuProperty}\n integrationFields={integrationFields}\n isBtnDisabled={commonFields.length === 1}\n isFirstField={idx === 0}\n ssMappingData={ssMappingData}\n showCustomPropertyModal={() => {\n setShowCustomPropertyModal(true);\n }}\n />\n ))}\n </Flex>\n </Box>\n )}\n <Flex flexDirection=\"column\" gap=\"$16\" css={{ marginTop: \"$16\" }}>\n {commonFields?.map((field, idx) => {\n return (\n <Field\n surveyType={surveyType}\n havingTypeDropdown={havingTypeDropdown}\n key={field.id}\n field={field}\n integrationName={integrationName}\n removeField={() => {\n setFields((prev) =>\n prev.filter(\n (currentField) => currentField.id !== field.id\n )\n );\n }}\n handleFieldValue={(id: string | number, property: string, value: FormFieldValue) =>\n handleFieldValue(id, property, value)\n }\n hasCustomMenuProperty={hasCustomMenuProperty}\n integrationFields={integrationFields}\n isBtnDisabled={false}\n isFirstField={idx === 0}\n ssMappingData={ssMappingData}\n showCustomPropertyModal={() => {\n setShowCustomPropertyModal(true);\n }}\n />\n );\n })}\n </Flex>\n <Button\n leftIcon={<PlusIcon />}\n color=\"default\"\n css={{ marginTop: \"$10\" }}\n onClick={() =>\n setFields([\n ...fields,\n {\n ...DEFAULT_FIELD_VALUE,\n id: uuid(),\n } as FieldType,\n ])\n }\n size=\"md\"\n >\n New mapping field\n </Button>\n {customList?.hasCustomList && (\n <Flex\n css={{ marginTop: \"$40\" }}\n flexDirection=\"column\"\n gap=\"$8\"\n >\n <Flex flexDirection=\"column\" gap=\"$3\">\n <Heading size=\"h5\">Choose a List</Heading>\n <Text css={{ color: \"$neutral500\" }} size=\"sm\">\n Pick a list to save mapped fields; If not, they'll be\n saved under all profiles.\n </Text>\n </Flex>\n <Select\n css={{ maxWidth: 400, width: \"100%\" }}\n size=\"lg\"\n options={customList.options}\n value={customList.value}\n placeholder=\"\"\n onChange={(value: any) => customList.onChangeHandler(value)}\n />\n </Flex>\n )}\n {/* Old Response */}\n {oldResponse?.hasOldResponse && (\n <Checkbox\n onChange={(value: any) => oldResponse.onChangeHandler(value)}\n css={{ marginBlock: \"$8\", cursor: \"pointer\" }}\n checked={oldResponse.value as boolean}\n >\n <FormLabel size=\"sm\">Import Old Response</FormLabel>\n </Checkbox>\n )}\n {showCustomPropertyModal && (\n <ImportModal\n onCloseHandler={() => setShowCustomPropertyModal(false)}\n onInputHandler={(value: any) => setCustomPropertyField(value)}\n onSaveHandler={() => {\n setIntegrationFields &&\n setIntegrationFields((prev) => [\n ...prev,\n {\n id: customPropertyField,\n label: customPropertyField,\n value: customPropertyField,\n type: 'string',\n } as unknown as IntegrationFieldType,\n ]);\n setShowCustomPropertyModal(false);\n }}\n />\n )}\n </Box>\n )}\n </>\n ) : (\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: \"100%\" }}\n >\n <Heading size=\"h4\" weight=\"bold\">\n Provide the needed props to import Mapping Template\n </Heading>\n </Flex>\n )}\n </Flex>\n );\n};\n"],"names":["uuid","React"],"mappings":"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"}
|