@sparrowengg/integrations-templates-frontend 8.0.17-Beta โ 8.0.19-Beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -23
- package/dist/cjs/contact-import/components/ContactImportHeader.js +8 -4
- package/dist/cjs/contact-import/components/ContactImportHeader.js.map +1 -1
- package/dist/cjs/contact-import/components/contact-import-mapping.js +3 -1
- package/dist/cjs/contact-import/components/contact-import-mapping.js.map +1 -1
- package/dist/cjs/contact-import/index.js +5 -2
- package/dist/cjs/contact-import/index.js.map +1 -1
- package/dist/cjs/triggers/components/trigger.js +25 -25
- package/dist/cjs/triggers/components/trigger.js.map +1 -1
- package/dist/es/contact-import/components/ContactImportHeader.js +8 -4
- package/dist/es/contact-import/components/ContactImportHeader.js.map +1 -1
- package/dist/es/contact-import/components/contact-import-mapping.js +3 -1
- package/dist/es/contact-import/components/contact-import-mapping.js.map +1 -1
- package/dist/es/contact-import/index.js +5 -2
- package/dist/es/contact-import/index.js.map +1 -1
- package/dist/es/triggers/components/trigger.js +25 -25
- package/dist/es/triggers/components/trigger.js.map +1 -1
- package/dist/index.d.ts +9 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -561,29 +561,6 @@ function IntegrationTemplateExample() {
|
|
|
561
561
|
}
|
|
562
562
|
```
|
|
563
563
|
|
|
564
|
-
## ๐งช Automation & Test IDs
|
|
565
|
-
|
|
566
|
-
Every interactive element across all modules ships with a stable `data-testid` attribute scoped to the integration name. Pass `integrationName` to any module root and all descendants receive IDs in the format `module_{integrationName}_{suffix}`:
|
|
567
|
-
|
|
568
|
-
```tsx
|
|
569
|
-
<IntegrationTemplate integrationName="salesforce" ... />
|
|
570
|
-
// โ <button data-testid="module_salesforce_configure-mapping">New Mapping</button>
|
|
571
|
-
// โ <button data-testid="module_salesforce_confirm-btn">Confirm</button>
|
|
572
|
-
```
|
|
573
|
-
|
|
574
|
-
Query them in Playwright, Cypress, or Testing Library:
|
|
575
|
-
|
|
576
|
-
```ts
|
|
577
|
-
// Playwright
|
|
578
|
-
await page.locator('[data-testid="module_salesforce_configure-mapping"]').click();
|
|
579
|
-
// nth card (0-based)
|
|
580
|
-
await page.locator('[data-testid="module_salesforce_expand-trigger"]').nth(0).click();
|
|
581
|
-
```
|
|
582
|
-
|
|
583
|
-
See **[TEST_ID_GUIDE.md](./TEST_ID_GUIDE.md)** for the full reference โ every suffix, which component it lives in, and how to add new ones.
|
|
584
|
-
|
|
585
|
-
---
|
|
586
|
-
|
|
587
564
|
## ๐จ Styling
|
|
588
565
|
|
|
589
566
|
The library includes built-in CSS styles. Make sure to import the stylesheet:
|
|
@@ -23,6 +23,7 @@ const ContactImportHeader = ({
|
|
|
23
23
|
onSaveHandler,
|
|
24
24
|
isContactMappingPage,
|
|
25
25
|
navigateMappingPage,
|
|
26
|
+
contactUniqueConstraint,
|
|
26
27
|
invitePortal
|
|
27
28
|
}) => {
|
|
28
29
|
const { tid } = testId_context.useTestId();
|
|
@@ -37,13 +38,16 @@ const ContactImportHeader = ({
|
|
|
37
38
|
}
|
|
38
39
|
};
|
|
39
40
|
const handleContinueMapping = () => {
|
|
40
|
-
var _a;
|
|
41
|
-
|
|
41
|
+
var _a, _b;
|
|
42
|
+
const isMapped = (contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.hasUniqueConstraint) ? (_a = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a.some(
|
|
43
|
+
(field) => (field == null ? void 0 : field.surveySparrowField) === contactUniqueConstraint.value
|
|
44
|
+
) : (_b = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _b.some(
|
|
42
45
|
(field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
|
|
43
|
-
)
|
|
46
|
+
);
|
|
47
|
+
if (!isMapped) {
|
|
44
48
|
useToast.toast({
|
|
45
49
|
variant: "error",
|
|
46
|
-
title: "Please map Email or mobile or uniqueId field"
|
|
50
|
+
title: (contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.hasUniqueConstraint) ? `Please map ${contactUniqueConstraint.label} field` : "Please map Email or mobile or uniqueId field"
|
|
47
51
|
});
|
|
48
52
|
return;
|
|
49
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactImportHeader.js","sources":["../../../../src/contact-import/components/ContactImportHeader.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Heading,\n IconButton,\n toast\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\nimport { ContactImportHeaderProps } from \"../types\";\nimport { CONTACT_IMPORT_UI_STRINGS } from \"../constants/ui-strings\";\nimport { ContactImportModal } from \"./ContactImportModal\";\n\nexport const ContactImportHeader: React.FC<ContactImportHeaderProps> = ({\n importName,\n setImportName,\n setNewImport,\n setContactImportField,\n contactImportField,\n hasPreviousMapping,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n invitePortal,\n}) => {\n const { tid } = useTestId();\n const [showImportModal, setShowImportModal] = useState(false);\n\n const handleBackClick = () => {\n setNewImport(false);\n previousMappingHandler();\n };\n\n const handleEventSetupClick = () => {\n if (isContactMappingPage) {\n navigateMappingPage(false);\n }\n };\n\n const handleContinueMapping = () => {\n
|
|
1
|
+
{"version":3,"file":"ContactImportHeader.js","sources":["../../../../src/contact-import/components/ContactImportHeader.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Heading,\n IconButton,\n toast\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\nimport { ContactImportHeaderProps } from \"../types\";\nimport { CONTACT_IMPORT_UI_STRINGS } from \"../constants/ui-strings\";\nimport { ContactImportModal } from \"./ContactImportModal\";\n\nexport const ContactImportHeader: React.FC<ContactImportHeaderProps> = ({\n importName,\n setImportName,\n setNewImport,\n setContactImportField,\n contactImportField,\n hasPreviousMapping,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n contactUniqueConstraint,\n invitePortal,\n}) => {\n const { tid } = useTestId();\n const [showImportModal, setShowImportModal] = useState(false);\n\n const handleBackClick = () => {\n setNewImport(false);\n previousMappingHandler();\n };\n\n const handleEventSetupClick = () => {\n if (isContactMappingPage) {\n navigateMappingPage(false);\n }\n };\n\n const handleContinueMapping = () => {\n const isMapped = contactUniqueConstraint?.hasUniqueConstraint\n ? contactImportField?.fields?.some(\n (field) => field?.surveySparrowField === contactUniqueConstraint.value\n )\n : contactImportField?.fields?.some(\n (field) =>\n field?.surveySparrowField === 'email' || field?.surveySparrowField === 'mobile'\n );\n\n if (!isMapped) {\n toast({\n variant: 'error',\n title: contactUniqueConstraint?.hasUniqueConstraint\n ? `Please map ${contactUniqueConstraint.label} field`\n : 'Please map Email or mobile or uniqueId field',\n });\n return;\n }\n\n setShowImportModal(true);\n };\n\n const handleSaveAndClose = async (importName: string) => {\n await onSaveHandler(importName);\n };\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n css={{\n borderBottom: \"$borderWidths$xs solid $neutral200\",\n padding: \"$8 $12\",\n }}\n >\n <Flex\n gap=\"$6\"\n alignItems=\"center\"\n css={{ visibility: hasPreviousMapping ? \"visible\" : \"hidden\" }}\n >\n <IconButton\n onClick={handleBackClick}\n color=\"default\"\n icon={<ArrowLeftIcon />}\n size=\"lg\"\n aria-label=\"Go back\"\n data-testid={tid('back-btn')}\n />\n <Heading size=\"h6\">{CONTACT_IMPORT_UI_STRINGS.NEW_CONTACT_IMPORT}</Heading>\n </Flex>\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{ \n width: \"420px !important\",\n \"& button\": { background: \"transparent !important\", fontSize: \"$md\" },\n }}\n >\n <Button\n css={{ color: !isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n onClick={handleEventSetupClick}\n data-testid={tid('configure-tab')}\n >\n {CONTACT_IMPORT_UI_STRINGS.EVENT_SETUP}\n </Button>\n <Arrow />\n <Button\n css={{ color: isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n disabled={!isContactMappingPage}\n >\n {CONTACT_IMPORT_UI_STRINGS.MAPPING}\n </Button>\n </Flex>\n <Button\n size=\"lg\"\n onClick={handleContinueMapping}\n css={{ visibility: isContactMappingPage ? \"visible\" : \"hidden\"}}\n data-testid={tid('continue-btn')}\n >\n {CONTACT_IMPORT_UI_STRINGS.CONTINUE_MAPPING}\n </Button>\n {showImportModal && (\n <ContactImportModal\n importName={importName}\n setImportName={setImportName}\n setContactImportField={setContactImportField}\n contactImportField={contactImportField}\n invitePortal={invitePortal}\n onSaveHandler={handleSaveAndClose}\n onCloseHandler={() => setShowImportModal(false)}\n />\n )}\n </Flex>\n );\n};\n\n"],"names":["useTestId","useState","toast","importName","Flex","IconButton","ArrowLeftIcon","Heading","CONTACT_IMPORT_UI_STRINGS","Button","Arrow","ContactImportModal"],"mappings":"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"}
|
|
@@ -49,7 +49,8 @@ const ContactImportMapping = ({
|
|
|
49
49
|
contactImportField,
|
|
50
50
|
setContactImportField,
|
|
51
51
|
integrationName,
|
|
52
|
-
contactProperties
|
|
52
|
+
contactProperties,
|
|
53
|
+
contactUniqueConstraint
|
|
53
54
|
}) => {
|
|
54
55
|
const { tid } = testId_context.useTestId();
|
|
55
56
|
const customPropertyRef = React.useRef(null);
|
|
@@ -221,6 +222,7 @@ const ContactImportMapping = ({
|
|
|
221
222
|
value: field.surveySparrowField
|
|
222
223
|
} : null,
|
|
223
224
|
options: contactProperties.filter((contact) => contact.type !== "DEPENDENT_FIELD").map((contact) => __spreadProps(__spreadValues({}, contact), {
|
|
225
|
+
label: (contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.hasUniqueConstraint) && contact.value === contactUniqueConstraint.value ? `${contact.label}` : contact.label,
|
|
224
226
|
isDisabled: contactImportField.fields.some(
|
|
225
227
|
(f) => f.id !== field.id && f.surveySparrowField === contact.value
|
|
226
228
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contact-import-mapping.js","sources":["../../../../src/contact-import/components/contact-import-mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n FormInput,\n FormLabel,\n Heading,\n IconButton,\n Select,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from \"@sparrowengg/twigs-react\";\nimport { DeleteIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useEffect, useRef } from \"react\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\nimport { ContactImportMappingProps } from \"../types\";\nimport { SelectOption } from \"../../commons/types/enhanced\";\n\n// Define the Field type with all the properties used in the component\ntype Field = {\n id: string | number;\n integrationField: string | number | null;\n surveySparrowField: string | number | null;\n sampleData?: Array<string>;\n property?: \"custom\" | \"default\";\n mapped?: boolean;\n surveySparrowFieldError?: boolean;\n};\n\n\nconst defaultFieldValue: Omit<Field, \"id\"> = {\n integrationField: null,\n surveySparrowField: null,\n sampleData: [],\n property: \"custom\",\n mapped: false,\n surveySparrowFieldError: false,\n};\n\nconst ContactImportMapping: React.FC<ContactImportMappingProps> = ({\n hasAddCustomProperty = true,\n contactImportField,\n setContactImportField,\n integrationName,\n contactProperties,\n}) => {\n const { tid } = useTestId();\n const customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\n // Frozen display order. Sorting runs once on initial load so that editing an\n // auto-mapped row (which flips `mapped` to true) does not reshuffle the list.\n const orderRef = useRef<Array<string | number>>([]);\n\n useEffect(() => {\n if (!initialRenderRef.current && customPropertyRef?.current) {\n customPropertyRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n }\n initialRenderRef.current = false;\n }, [contactImportField]);\n\n const customFieldHandler = (\n id: string | number,\n property: keyof Field,\n value: string | number | boolean | null\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id ? { ...field, [property]: value } : field\n ),\n }));\n };\n\n const updateSurveySparrowField = (\n value: string | number | null,\n id: string | number,\n manuallyMapped: boolean\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id\n ? {\n ...field,\n surveySparrowField: value,\n ...(value === null\n ? { mapped: false }\n : manuallyMapped && { mapped: true }),\n }\n : field\n ),\n }));\n };\n\n const addCustomProperty = () => {\n setContactImportField((prev) => ({\n ...prev,\n fields: [\n ...prev.fields,\n {\n id: prev.fields.length\n ? (typeof prev.fields[prev.fields.length - 1].id === 'number' \n ? (prev.fields[prev.fields.length - 1].id as number) + 1 \n : Date.now())\n : 1,\n ...defaultFieldValue,\n },\n ],\n }));\n };\n\n const deleteCustomProperty = (id: string | number) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.filter((field) => field.id !== id),\n }));\n };\n\n const currentIds = contactImportField.fields.map((field) => field.id);\n // Drop ids of deleted fields from the frozen order.\n orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));\n if (orderRef.current.length === 0 && currentIds.length) {\n // First populate: seed the order with the one-time category sort.\n orderRef.current = [...contactImportField.fields]\n .sort((a, b) => {\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n\n return 0;\n })\n .map((field) => field.id);\n } else {\n // Append newly added fields (e.g. custom properties) at the end.\n currentIds.forEach((id) => {\n if (!orderRef.current.includes(id)) orderRef.current.push(id);\n });\n }\n\n const orderedFields = orderRef.current\n .map((id) => contactImportField.fields.find((field) => field.id === id))\n .filter((field): field is Field => Boolean(field));\n\n return (\n <Flex justifyContent=\"center\">\n <Box css={{ marginTop: \"$40\", maxWidth: \"90%\", width: \"100%\" }}>\n <Box css={{ paddingLeft: \"$28\" }}>\n <Heading size=\"h5\">Map Contact Properties</Heading>\n <Text css={{ marginTop: \"$4\", color: \"$neutral600\" }} size=\"md\">\n Review these mappings before importing. Unmapped columns will be\n ignored.\n </Text>\n </Box>\n <Box\n css={{\n height: \"calc(100vh - 291px)\",\n paddingTop: \"$16\",\n overflowY: \"auto\",\n position: \"relative\",\n background: \"$white900\",\n paddingLeft: \"$28\",\n }}\n >\n <Table\n css={{\n width: \"100%\",\n background: \"$white900\",\n borderRadius: \"5px\",\n borderCollapse: \"collapse\",\n marginLeft: '-14px !important'\n }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-32px\" }}>\n <Th>{`${integrationName} Profile Fields Data`}</Th>\n <Th css={{ borderLeft: \"$borderWidths$xs solid $neutral100\" }}>\n SurveySparrow Mapping\n </Th>\n </Thead>\n <Tbody>\n {orderedFields.map((field) => {\n const hasSurveyFieldValue = contactProperties.some(\n (contact) => contact.value === field.surveySparrowField\n );\n\n return (\n <Tr key={field.id}>\n <Td css={{ width: 560 }}>\n {field.property !== \"custom\" ? (\n <>\n <Text size=\"sm\" weight=\"medium\">\n {typeof field.integrationField === 'string' \n ? field.integrationField.replace(\"_\", \" \")\n : field.integrationField}\n </Text>\n {field.sampleData?.map((sample, index) => (\n <Text\n key={index}\n size=\"xs\"\n css={{ lineHeight: \"$xs\" }}\n >\n {sample.length > 40\n ? `${sample.slice(0, 40)}...`\n : sample}\n </Text>\n ))}\n </>\n ) : (\n <Box css={{ position: \"relative\" }}>\n <FormInput\n size=\"lg\"\n onChange={(event: any) =>\n customFieldHandler(\n field.id,\n \"integrationField\",\n event.target.value\n )\n }\n />\n <FormLabel\n css={{ marginTop: \"$4\", color: \"$neutral400\" }}\n >\n Enter the exact custom property name for accurate\n mapping. It is case-sensitive.\n </FormLabel>\n <IconButton\n css={{\n position: \"absolute\",\n top: \"0\",\n left: \"-70px\",\n }}\n size=\"lg\"\n variant=\"ghost\"\n color=\"secondary\"\n onClick={() => deleteCustomProperty(field.id)}\n icon={<DeleteIcon />}\n aria-label=\"Delete custom property\"\n data-testid={tid('remove-field')}\n />\n </Box>\n )}\n </Td>\n <Td\n className=\"dm-sans\"\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n className=\"dm-sans\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\n menuPlacement=\"auto\"\n menuShouldScrollIntoView={false}\n closeMenuOnScroll={(e: any) =>\n !(\n e.target instanceof Element &&\n e.target.closest('[class*=\"menu-list\"]')\n )\n }\n styles={{\n menuPortal: (base: any) => ({\n ...base,\n zIndex: 9999,\n }),\n }}\n value={\n field.surveySparrowField\n ? {\n label: contactProperties.find(\n (contact) =>\n contact.value === field.surveySparrowField\n )?.label,\n value: field.surveySparrowField,\n }\n : null\n }\n options={contactProperties\n .filter((contact) => contact.type !== \"DEPENDENT_FIELD\")\n .map((contact) => ({\n ...contact,\n isDisabled: contactImportField.fields.some(\n (f) =>\n f.id !== field.id &&\n f.surveySparrowField === contact.value\n ),\n }))}\n onChange={(currentField: any) =>\n updateSurveySparrowField(\n currentField?.value ?? null,\n field.id,\n true\n )\n }\n />\n {hasSurveyFieldValue && (\n <FormLabel\n size=\"xs\"\n css={{\n color: field.mapped ? \"$neutral600\" : \"#0F966C\",\n marginBlock: \"$4\",\n }}\n >\n {field.mapped\n ? \"Manually mapped by you\"\n : \"Automatically mapped\"}\n </FormLabel>\n )}\n {!field.surveySparrowField &&\n field.surveySparrowFieldError && (\n <FormLabel\n css={{ color: \"$negative500\", marginTop: \"$4\" }}\n size=\"xs\"\n >\n Please select the property\n </FormLabel>\n )}\n </Td>\n </Tr>\n );\n })}\n {hasAddCustomProperty && (\n <Tr>\n <Td colSpan={2}>\n <Button\n size=\"md\"\n variant=\"ghost\"\n leftIcon={<PlusIcon />}\n onClick={addCustomProperty}\n data-testid={tid('add-field')}\n >\n Add Custom Property\n </Button>\n </Td>\n </Tr>\n )}\n </Tbody>\n </Table>\n </Box>\n </Box>\n </Flex>\n );\n};\n\nexport default ContactImportMapping;\n"],"names":["useTestId","useRef","useEffect","Flex","Box","Heading","Text","Table","Thead","Th","Tbody","Tr","Td","FormInput","FormLabel","IconButton","DeleteIcon","Select","_a","Button","PlusIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contact-import-mapping.js","sources":["../../../../src/contact-import/components/contact-import-mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n FormInput,\n FormLabel,\n Heading,\n IconButton,\n Select,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from \"@sparrowengg/twigs-react\";\nimport { DeleteIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useEffect, useRef } from \"react\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\nimport { ContactImportMappingProps } from \"../types\";\nimport { SelectOption } from \"../../commons/types/enhanced\";\n\n// Define the Field type with all the properties used in the component\ntype Field = {\n id: string | number;\n integrationField: string | number | null;\n surveySparrowField: string | number | null;\n sampleData?: Array<string>;\n property?: \"custom\" | \"default\";\n mapped?: boolean;\n surveySparrowFieldError?: boolean;\n};\n\n\nconst defaultFieldValue: Omit<Field, \"id\"> = {\n integrationField: null,\n surveySparrowField: null,\n sampleData: [],\n property: \"custom\",\n mapped: false,\n surveySparrowFieldError: false,\n};\n\nconst ContactImportMapping: React.FC<ContactImportMappingProps> = ({\n hasAddCustomProperty = true,\n contactImportField,\n setContactImportField,\n integrationName,\n contactProperties,\n contactUniqueConstraint,\n}) => {\n const { tid } = useTestId();\n const customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\n // Frozen display order. Sorting runs once on initial load so that editing an\n // auto-mapped row (which flips `mapped` to true) does not reshuffle the list.\n const orderRef = useRef<Array<string | number>>([]);\n\n useEffect(() => {\n if (!initialRenderRef.current && customPropertyRef?.current) {\n customPropertyRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n }\n initialRenderRef.current = false;\n }, [contactImportField]);\n\n const customFieldHandler = (\n id: string | number,\n property: keyof Field,\n value: string | number | boolean | null\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id ? { ...field, [property]: value } : field\n ),\n }));\n };\n\n const updateSurveySparrowField = (\n value: string | number | null,\n id: string | number,\n manuallyMapped: boolean\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id\n ? {\n ...field,\n surveySparrowField: value,\n ...(value === null\n ? { mapped: false }\n : manuallyMapped && { mapped: true }),\n }\n : field\n ),\n }));\n };\n\n const addCustomProperty = () => {\n setContactImportField((prev) => ({\n ...prev,\n fields: [\n ...prev.fields,\n {\n id: prev.fields.length\n ? (typeof prev.fields[prev.fields.length - 1].id === 'number' \n ? (prev.fields[prev.fields.length - 1].id as number) + 1 \n : Date.now())\n : 1,\n ...defaultFieldValue,\n },\n ],\n }));\n };\n\n const deleteCustomProperty = (id: string | number) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.filter((field) => field.id !== id),\n }));\n };\n\n const currentIds = contactImportField.fields.map((field) => field.id);\n // Drop ids of deleted fields from the frozen order.\n orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));\n if (orderRef.current.length === 0 && currentIds.length) {\n // First populate: seed the order with the one-time category sort.\n orderRef.current = [...contactImportField.fields]\n .sort((a, b) => {\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n\n return 0;\n })\n .map((field) => field.id);\n } else {\n // Append newly added fields (e.g. custom properties) at the end.\n currentIds.forEach((id) => {\n if (!orderRef.current.includes(id)) orderRef.current.push(id);\n });\n }\n\n const orderedFields = orderRef.current\n .map((id) => contactImportField.fields.find((field) => field.id === id))\n .filter((field): field is Field => Boolean(field));\n\n return (\n <Flex justifyContent=\"center\">\n <Box css={{ marginTop: \"$40\", maxWidth: \"90%\", width: \"100%\" }}>\n <Box css={{ paddingLeft: \"$28\" }}>\n <Heading size=\"h5\">Map Contact Properties</Heading>\n <Text css={{ marginTop: \"$4\", color: \"$neutral600\" }} size=\"md\">\n Review these mappings before importing. Unmapped columns will be\n ignored.\n </Text>\n </Box>\n <Box\n css={{\n height: \"calc(100vh - 291px)\",\n paddingTop: \"$16\",\n overflowY: \"auto\",\n position: \"relative\",\n background: \"$white900\",\n paddingLeft: \"$28\",\n }}\n >\n <Table\n css={{\n width: \"100%\",\n background: \"$white900\",\n borderRadius: \"5px\",\n borderCollapse: \"collapse\",\n marginLeft: '-14px !important'\n }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-32px\" }}>\n <Th>{`${integrationName} Profile Fields Data`}</Th>\n <Th css={{ borderLeft: \"$borderWidths$xs solid $neutral100\" }}>\n SurveySparrow Mapping\n </Th>\n </Thead>\n <Tbody>\n {orderedFields.map((field) => {\n const hasSurveyFieldValue = contactProperties.some(\n (contact) => contact.value === field.surveySparrowField\n );\n\n return (\n <Tr key={field.id}>\n <Td css={{ width: 560 }}>\n {field.property !== \"custom\" ? (\n <>\n <Text size=\"sm\" weight=\"medium\">\n {typeof field.integrationField === 'string' \n ? field.integrationField.replace(\"_\", \" \")\n : field.integrationField}\n </Text>\n {field.sampleData?.map((sample, index) => (\n <Text\n key={index}\n size=\"xs\"\n css={{ lineHeight: \"$xs\" }}\n >\n {sample.length > 40\n ? `${sample.slice(0, 40)}...`\n : sample}\n </Text>\n ))}\n </>\n ) : (\n <Box css={{ position: \"relative\" }}>\n <FormInput\n size=\"lg\"\n onChange={(event: any) =>\n customFieldHandler(\n field.id,\n \"integrationField\",\n event.target.value\n )\n }\n />\n <FormLabel\n css={{ marginTop: \"$4\", color: \"$neutral400\" }}\n >\n Enter the exact custom property name for accurate\n mapping. It is case-sensitive.\n </FormLabel>\n <IconButton\n css={{\n position: \"absolute\",\n top: \"0\",\n left: \"-70px\",\n }}\n size=\"lg\"\n variant=\"ghost\"\n color=\"secondary\"\n onClick={() => deleteCustomProperty(field.id)}\n icon={<DeleteIcon />}\n aria-label=\"Delete custom property\"\n data-testid={tid('remove-field')}\n />\n </Box>\n )}\n </Td>\n <Td\n className=\"dm-sans\"\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n className=\"dm-sans\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\n menuPlacement=\"auto\"\n menuShouldScrollIntoView={false}\n closeMenuOnScroll={(e: any) =>\n !(\n e.target instanceof Element &&\n e.target.closest('[class*=\"menu-list\"]')\n )\n }\n styles={{\n menuPortal: (base: any) => ({\n ...base,\n zIndex: 9999,\n }),\n }}\n value={\n field.surveySparrowField\n ? {\n label: contactProperties.find(\n (contact) =>\n contact.value === field.surveySparrowField\n )?.label,\n value: field.surveySparrowField,\n }\n : null\n }\n options={contactProperties\n .filter((contact) => contact.type !== \"DEPENDENT_FIELD\")\n .map((contact) => ({\n ...contact,\n label: contactUniqueConstraint?.hasUniqueConstraint &&\n contact.value === contactUniqueConstraint.value\n ? `${contact.label}`\n : contact.label,\n isDisabled: contactImportField.fields.some(\n (f) =>\n f.id !== field.id &&\n f.surveySparrowField === contact.value\n ),\n }))}\n onChange={(currentField: any) =>\n updateSurveySparrowField(\n currentField?.value ?? null,\n field.id,\n true\n )\n }\n />\n {hasSurveyFieldValue && (\n <FormLabel\n size=\"xs\"\n css={{\n color: field.mapped ? \"$neutral600\" : \"#0F966C\",\n marginBlock: \"$4\",\n }}\n >\n {field.mapped\n ? \"Manually mapped by you\"\n : \"Automatically mapped\"}\n </FormLabel>\n )}\n {!field.surveySparrowField &&\n field.surveySparrowFieldError && (\n <FormLabel\n css={{ color: \"$negative500\", marginTop: \"$4\" }}\n size=\"xs\"\n >\n Please select the property\n </FormLabel>\n )}\n </Td>\n </Tr>\n );\n })}\n {hasAddCustomProperty && (\n <Tr>\n <Td colSpan={2}>\n <Button\n size=\"md\"\n variant=\"ghost\"\n leftIcon={<PlusIcon />}\n onClick={addCustomProperty}\n data-testid={tid('add-field')}\n >\n Add Custom Property\n </Button>\n </Td>\n </Tr>\n )}\n </Tbody>\n </Table>\n </Box>\n </Box>\n </Flex>\n );\n};\n\nexport default ContactImportMapping;\n"],"names":["useTestId","useRef","useEffect","Flex","Box","Heading","Text","Table","Thead","Th","Tbody","Tr","Td","FormInput","FormLabel","IconButton","DeleteIcon","Select","_a","Button","PlusIcon"],"mappings":"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"}
|
|
@@ -48,6 +48,7 @@ const ContactImport = ({
|
|
|
48
48
|
integrationName,
|
|
49
49
|
contactProperties,
|
|
50
50
|
hasContactImportDashboard,
|
|
51
|
+
contactUniqueConstraint,
|
|
51
52
|
invitePortal
|
|
52
53
|
}) => {
|
|
53
54
|
const [newImport, setNewImport] = React.useState(true);
|
|
@@ -82,7 +83,8 @@ const ContactImport = ({
|
|
|
82
83
|
navigateMappingPage,
|
|
83
84
|
invitePortal,
|
|
84
85
|
importName,
|
|
85
|
-
setImportName
|
|
86
|
+
setImportName,
|
|
87
|
+
contactUniqueConstraint
|
|
86
88
|
}
|
|
87
89
|
), !isContactMappingPage ? /* @__PURE__ */ React.createElement(
|
|
88
90
|
contactImportConfigure.default,
|
|
@@ -99,7 +101,8 @@ const ContactImport = ({
|
|
|
99
101
|
contactImportField,
|
|
100
102
|
setContactImportField,
|
|
101
103
|
integrationName,
|
|
102
|
-
contactProperties
|
|
104
|
+
contactProperties,
|
|
105
|
+
contactUniqueConstraint
|
|
103
106
|
}
|
|
104
107
|
))))));
|
|
105
108
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/contact-import/index.tsx"],"sourcesContent":["import { Box, Toastr } from \"@sparrowengg/twigs-react\";\nimport React, { useEffect, useState } from \"react\";\nimport ThemeWrapper from \"../commons/components/theme-wrapper\";\nimport { TestIdProvider } from \"../commons/context/test-id.context\";\nimport { ContactImportProps } from \"./types\";\nimport {\n ContactImportHeader,\n ContactImportConfigure,\n ContactImportMapping,\n Dashboard,\n} from \"./components\";\n\nexport const ContactImport: React.FC<ContactImportProps> = ({\n hasAddCustomProperty,\n importName,\n setImportName,\n dashboardDescription,\n existingImports,\n hasPreviousMapping,\n hasContactImportSchedule,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n contactImportField,\n setContactImportField,\n listSegmentOptions,\n integrationName,\n contactProperties,\n hasContactImportDashboard,\n invitePortal,\n}) => {\n const [newImport, setNewImport] = useState(true);\n\n useEffect(() => {\n setNewImport(!existingImports?.length || !hasContactImportDashboard);\n }, []);\n\n const handleConfigureField = (value: Record<string, unknown>) => {\n setContactImportField({\n ...contactImportField,\n configure: { ...value },\n });\n navigateMappingPage(true);\n };\n\n const showDashboard = existingImports?.length && !newImport && hasContactImportDashboard;\n\n return (\n <TestIdProvider integrationName={integrationName}>\n <ThemeWrapper>\n <Toastr duration={10000} />\n <Box css={{ height: \"calc(100vh - 241px)\", width: \"100vw\" }}>\n {showDashboard ? (\n <Dashboard\n dashboardDescription={dashboardDescription}\n setNewImport={setNewImport}\n integrationName={integrationName}\n imports={existingImports}\n />\n ) : (\n <>\n {newImport && (\n <>\n <ContactImportHeader\n setNewImport={setNewImport}\n contactImportField={contactImportField}\n setContactImportField={setContactImportField}\n hasPreviousMapping={hasPreviousMapping}\n previousMappingHandler={previousMappingHandler}\n onSaveHandler={onSaveHandler}\n isContactMappingPage={isContactMappingPage}\n navigateMappingPage={navigateMappingPage}\n invitePortal={invitePortal}\n importName={importName}\n setImportName={setImportName}\n />\n {!isContactMappingPage ? (\n <ContactImportConfigure\n contactImportField={contactImportField}\n handleConfigureField={handleConfigureField}\n listSegmentOptions={listSegmentOptions}\n hasContactImportSchedule={hasContactImportSchedule}\n />\n ) : (\n <ContactImportMapping\n hasAddCustomProperty={hasAddCustomProperty}\n contactImportField={contactImportField}\n setContactImportField={setContactImportField}\n integrationName={integrationName}\n contactProperties={contactProperties}\n />\n )}\n </>\n )}\n </>\n )}\n </Box>\n </ThemeWrapper>\n </TestIdProvider>\n );\n};\n"],"names":["useState","useEffect","TestIdProvider","ThemeWrapper","Toastr","Box","Dashboard","ContactImportHeader","ContactImportConfigure","ContactImportMapping"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,gBAA8C,CAAC;AAAA,EAC1D,oBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,yBAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,IAAI,CAAA;AAE/C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,EAAC,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,MAAA,CAAA,IAAU,CAAC,yBAAyB,CAAA;AAAA,EACrE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAmC;AAC/D,IAAA,qBAAA,CAAsB,iCACjB,kBAAA,CAAA,EADiB;AAAA,MAEpB,WAAW,cAAA,CAAA,EAAA,EAAK,KAAA;AAAA,KAClB,CAAC,CAAA;AACD,IAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,aAAA,GAAA,CAAgB,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,MAAA,KAAU,CAAC,SAAA,IAAa,yBAAA;AAE/D,EAAA,2CACGC,6BAAA,EAAA,EAAe,eAAA,EAAA,sCACfC,oBAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAACC,iBAAO,QAAA,EAAU,GAAA,EAAO,mBACzB,KAAA,CAAA,aAAA,CAACC,OAAA,EAAA,EAAI,KAAK,EAAE,MAAA,EAAQ,uBAAuB,KAAA,EAAO,OAAA,MAC/C,aAAA,mBACC,KAAA,CAAA,aAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,oBAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,OAAA,EAAS;AAAA;AAAA,GACX,mBAEA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,SAAA,oBACC,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA;AAAA,IAACC,uCAAA;AAAA,IAAA;AAAA,MACC,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,kBAAA;AAAA,MACA,sBAAA;AAAA,MACA,aAAA;AAAA,MACA,oBAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA;AAAA,GACF,EACC,CAAC,oBAAA,mBACA,KAAA,CAAA,aAAA;AAAA,IAACC,8BAAA;AAAA,IAAA;AAAA,MACC,kBAAA;AAAA,MACA,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AAAA,GACF,mBAEA,KAAA,CAAA,aAAA;AAAA,IAACC,4BAAA;AAAA,IAAA;AAAA,MACC,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AAAA,GAGN,CAEJ,CAEJ,CACF,CACA,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/contact-import/index.tsx"],"sourcesContent":["import { Box, Toastr } from \"@sparrowengg/twigs-react\";\nimport React, { useEffect, useState } from \"react\";\nimport ThemeWrapper from \"../commons/components/theme-wrapper\";\nimport { TestIdProvider } from \"../commons/context/test-id.context\";\nimport { ContactImportProps } from \"./types\";\nimport {\n ContactImportHeader,\n ContactImportConfigure,\n ContactImportMapping,\n Dashboard,\n} from \"./components\";\n\nexport const ContactImport: React.FC<ContactImportProps> = ({\n hasAddCustomProperty,\n importName,\n setImportName,\n dashboardDescription,\n existingImports,\n hasPreviousMapping,\n hasContactImportSchedule,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n contactImportField,\n setContactImportField,\n listSegmentOptions,\n integrationName,\n contactProperties,\n hasContactImportDashboard,\n contactUniqueConstraint,\n invitePortal,\n}) => {\n const [newImport, setNewImport] = useState(true);\n\n useEffect(() => {\n setNewImport(!existingImports?.length || !hasContactImportDashboard);\n }, []);\n\n const handleConfigureField = (value: Record<string, unknown>) => {\n setContactImportField({\n ...contactImportField,\n configure: { ...value },\n });\n navigateMappingPage(true);\n };\n\n const showDashboard = existingImports?.length && !newImport && hasContactImportDashboard;\n\n return (\n <TestIdProvider integrationName={integrationName}>\n <ThemeWrapper>\n <Toastr duration={10000} />\n <Box css={{ height: \"calc(100vh - 241px)\", width: \"100vw\" }}>\n {showDashboard ? (\n <Dashboard\n dashboardDescription={dashboardDescription}\n setNewImport={setNewImport}\n integrationName={integrationName}\n imports={existingImports}\n />\n ) : (\n <>\n {newImport && (\n <>\n <ContactImportHeader\n setNewImport={setNewImport}\n contactImportField={contactImportField}\n setContactImportField={setContactImportField}\n hasPreviousMapping={hasPreviousMapping}\n previousMappingHandler={previousMappingHandler}\n onSaveHandler={onSaveHandler}\n isContactMappingPage={isContactMappingPage}\n navigateMappingPage={navigateMappingPage}\n invitePortal={invitePortal}\n importName={importName}\n setImportName={setImportName}\n contactUniqueConstraint={contactUniqueConstraint}\n />\n {!isContactMappingPage ? (\n <ContactImportConfigure\n contactImportField={contactImportField}\n handleConfigureField={handleConfigureField}\n listSegmentOptions={listSegmentOptions}\n hasContactImportSchedule={hasContactImportSchedule}\n />\n ) : (\n <ContactImportMapping\n hasAddCustomProperty={hasAddCustomProperty}\n contactImportField={contactImportField}\n setContactImportField={setContactImportField}\n integrationName={integrationName}\n contactProperties={contactProperties}\n contactUniqueConstraint={contactUniqueConstraint}\n />\n )}\n </>\n )}\n </>\n )}\n </Box>\n </ThemeWrapper>\n </TestIdProvider>\n );\n};\n"],"names":["useState","useEffect","TestIdProvider","ThemeWrapper","Toastr","Box","Dashboard","ContactImportHeader","ContactImportConfigure","ContactImportMapping"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,gBAA8C,CAAC;AAAA,EAC1D,oBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,yBAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,IAAI,CAAA;AAE/C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,EAAC,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,MAAA,CAAA,IAAU,CAAC,yBAAyB,CAAA;AAAA,EACrE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAmC;AAC/D,IAAA,qBAAA,CAAsB,iCACjB,kBAAA,CAAA,EADiB;AAAA,MAEpB,WAAW,cAAA,CAAA,EAAA,EAAK,KAAA;AAAA,KAClB,CAAC,CAAA;AACD,IAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,aAAA,GAAA,CAAgB,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,MAAA,KAAU,CAAC,SAAA,IAAa,yBAAA;AAE/D,EAAA,2CACGC,6BAAA,EAAA,EAAe,eAAA,EAAA,sCACfC,oBAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAACC,iBAAO,QAAA,EAAU,GAAA,EAAO,mBACzB,KAAA,CAAA,aAAA,CAACC,OAAA,EAAA,EAAI,KAAK,EAAE,MAAA,EAAQ,uBAAuB,KAAA,EAAO,OAAA,MAC/C,aAAA,mBACC,KAAA,CAAA,aAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,oBAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,OAAA,EAAS;AAAA;AAAA,GACX,mBAEA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,SAAA,oBACC,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA;AAAA,IAACC,uCAAA;AAAA,IAAA;AAAA,MACC,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,kBAAA;AAAA,MACA,sBAAA;AAAA,MACA,aAAA;AAAA,MACA,oBAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AAAA,GACF,EACC,CAAC,oBAAA,mBACA,KAAA,CAAA,aAAA;AAAA,IAACC,8BAAA;AAAA,IAAA;AAAA,MACC,kBAAA;AAAA,MACA,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AAAA,GACF,mBAEA,KAAA,CAAA,aAAA;AAAA,IAACC,4BAAA;AAAA,IAAA;AAAA,MACC,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA;AAAA,GAGN,CAEJ,CAEJ,CACF,CACA,CAAA;AAEJ;;;;"}
|
|
@@ -349,30 +349,7 @@ const Trigger = ({
|
|
|
349
349
|
},
|
|
350
350
|
options: variableOptions
|
|
351
351
|
}
|
|
352
|
-
)), (
|
|
353
|
-
select.Select,
|
|
354
|
-
{
|
|
355
|
-
placeholder: "",
|
|
356
|
-
size: "lg",
|
|
357
|
-
isClearable: false,
|
|
358
|
-
value: selectedContactUniqueOption,
|
|
359
|
-
onChange: handleContactUniqueFieldChange,
|
|
360
|
-
css: {
|
|
361
|
-
p: {
|
|
362
|
-
fontFamily: "'Roboto Mono', monospace !important"
|
|
363
|
-
},
|
|
364
|
-
" .twigs-select__indicators": {
|
|
365
|
-
height: "40px"
|
|
366
|
-
},
|
|
367
|
-
"& .twigs-select__control": {
|
|
368
|
-
overflow: "auto",
|
|
369
|
-
maxHeight: 488,
|
|
370
|
-
height: "100%"
|
|
371
|
-
}
|
|
372
|
-
},
|
|
373
|
-
options: variableOptions
|
|
374
|
-
}
|
|
375
|
-
)) : null) : null, showPassAndSendSections ? /* @__PURE__ */ React.createElement(flex.Flex, { flexDirection: "column", gap: "$12", css: { marginBlock: "$40" } }, /* @__PURE__ */ React.createElement(heading.Heading, { size: "h5" }, "Send Survey"), /* @__PURE__ */ React.createElement(flex.Flex, { flexDirection: "column", gap: "$8" }, /* @__PURE__ */ React.createElement(flex.Flex, { gap: "$2", flexDirection: "column" }, /* @__PURE__ */ React.createElement(formLabel.FormLabel, { size: "xs", css: { fontWeight: "$5" } }, "Choose Share Type"), /* @__PURE__ */ React.createElement(
|
|
352
|
+
))) : null, showPassAndSendSections ? /* @__PURE__ */ React.createElement(flex.Flex, { flexDirection: "column", gap: "$12", css: { marginBlock: "$40" } }, /* @__PURE__ */ React.createElement(heading.Heading, { size: "h5" }, "Send Survey"), /* @__PURE__ */ React.createElement(flex.Flex, { flexDirection: "column", gap: "$8" }, /* @__PURE__ */ React.createElement(flex.Flex, { gap: "$2", flexDirection: "column" }, /* @__PURE__ */ React.createElement(formLabel.FormLabel, { size: "xs", css: { fontWeight: "$5" } }, "Choose Share Type"), /* @__PURE__ */ React.createElement(
|
|
376
353
|
select.Select,
|
|
377
354
|
{
|
|
378
355
|
placeholder: "",
|
|
@@ -407,7 +384,30 @@ const Trigger = ({
|
|
|
407
384
|
}
|
|
408
385
|
]
|
|
409
386
|
}
|
|
410
|
-
)),
|
|
387
|
+
)), (contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.hasUniqueConstraint) ? /* @__PURE__ */ React.createElement(flex.Flex, { gap: "$2", flexDirection: "column" }, /* @__PURE__ */ React.createElement(formLabel.FormLabel, { size: "xs", css: { fontWeight: "$5" } }, `Contact Uniqueness Field for "${contactUniqueConstraint.label}"`), /* @__PURE__ */ React.createElement(
|
|
388
|
+
select.Select,
|
|
389
|
+
{
|
|
390
|
+
placeholder: "",
|
|
391
|
+
size: "lg",
|
|
392
|
+
isClearable: false,
|
|
393
|
+
value: selectedContactUniqueOption,
|
|
394
|
+
onChange: handleContactUniqueFieldChange,
|
|
395
|
+
css: {
|
|
396
|
+
p: {
|
|
397
|
+
fontFamily: "'Roboto Mono', monospace !important"
|
|
398
|
+
},
|
|
399
|
+
" .twigs-select__indicators": {
|
|
400
|
+
height: "40px"
|
|
401
|
+
},
|
|
402
|
+
"& .twigs-select__control": {
|
|
403
|
+
overflow: "auto",
|
|
404
|
+
maxHeight: 488,
|
|
405
|
+
height: "100%"
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
options: variableOptions
|
|
409
|
+
}
|
|
410
|
+
)) : null, !validation_utils.isEmpty(triggerDetails == null ? void 0 : triggerDetails.shareType) && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(flex.Flex, { gap: "$2", flexDirection: "column" }, /* @__PURE__ */ React.createElement(formLabel.FormLabel, { size: "xs", css: { fontWeight: "$5" } }, "Choose Recipient"), /* @__PURE__ */ React.createElement(
|
|
411
411
|
select.Select,
|
|
412
412
|
{
|
|
413
413
|
placeholder: "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.js","sources":["../../../../src/triggers/components/trigger.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport {\n Box,\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Flex,\n FormLabel,\n Heading,\n Select,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport { ChevronDownIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { topLevelCondition } from \"../constants\";\nimport { Filter } from \"./subcomponents\";\nimport {\n CustomShareOption,\n CustomSingleValue,\n CustomMultiValue,\n CustomShareChannelOption,\n CustomShareChannelSingleValue,\n} from \"./custom-share-components\";\nimport { useTriggerState, useFilterManagement, useChannelData } from \"../hooks\";\nimport { hasFiltersWithValues as checkFiltersHaveValues } from \"../utils\";\nimport { isEmpty } from \"../utils\";\nimport { ContactUniqueConstraint } from \"../types\";\nimport { CustomConditions } from \"../../commons/constants/operator-options\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\n\n/* ----- Types / Interfaces ----- */\n\ntype TriggerProps = {\n fields: any;\n setFields: (fields: any) => void;\n token: string;\n apiURL: string;\n surveyDetails: any;\n hasNestedCondition: boolean;\n shareRecipientOptions: any[];\n shareChannelOptions: any[];\n triggerDetails: any;\n setTriggerDetails: (details: any) => void;\n fieldOptions: any[];\n variableOptions: any[];\n contactUniqueConstraint?: ContactUniqueConstraint;\n customConditions?: CustomConditions;\n isLoading?: boolean;\n /**\n * Opt-in (default off/undefined = current behavior). When true, the\n * \"Pass Variable to Survey\" and \"Send Survey\" sections are always visible\n * instead of staying hidden until a condition has a value โ so users know\n * they exist. See CL-5.\n */\n alwaysShowPassAndSendSections?: boolean;\n};\n\n/* ----- Main Component ----- */\n\n/**\n * Trigger component for setting up trigger conditions and actions\n *\n * @param {TriggerProps} props - Component props\n * @returns {JSX.Element} Rendered Trigger component\n */\nconst Trigger: React.FC<TriggerProps> = ({\n fields,\n setFields,\n token,\n apiURL,\n hasNestedCondition,\n surveyDetails,\n shareRecipientOptions,\n shareChannelOptions,\n triggerDetails,\n setTriggerDetails,\n fieldOptions,\n variableOptions,\n contactUniqueConstraint,\n customConditions,\n alwaysShowPassAndSendSections,\n}) => {\n /* ----- Hooks ----- */\n\n const { isEditing, setIsEditing } = useTriggerState();\n\n const {\n addFilterCondition,\n addNestedFilterCondition,\n setCurrentField,\n removeCurrentFilter,\n removeNestedField,\n setNestedFieldCondition,\n } = useFilterManagement({\n setFields,\n setIsEditing,\n });\n\n const { channels } = useChannelData({\n token,\n apiURL,\n surveyId: surveyDetails?.surveyId,\n shareChannelOptions,\n });\n\n const hasFiltersWithValues = useMemo(\n () => checkFiltersHaveValues(fields),\n [fields]\n );\n\n const [passAndSendSectionsUnlocked, setPassAndSendSectionsUnlocked] =\n useState(false);\n\n useEffect(() => {\n if (hasFiltersWithValues) {\n setPassAndSendSectionsUnlocked(true);\n }\n }, [hasFiltersWithValues]);\n\n useEffect(() => {\n if (!fields?.filters?.length) {\n setPassAndSendSectionsUnlocked(false);\n }\n }, [fields?.filters?.length]);\n\n const showPassAndSendSections =\n alwaysShowPassAndSendSections ||\n passAndSendSectionsUnlocked ||\n hasFiltersWithValues;\n\n /* ----- Constants ----- */\n\n const selectedCondition = useMemo(\n () =>\n topLevelCondition.find(\n (condition) => condition.value === fields.condition\n )?.label,\n [fields.condition]\n );\n\n const filteredShareRecipientOptions = useMemo(\n () =>\n shareRecipientOptions?.filter(\n (option: any) => option?.type === triggerDetails.shareType?.value\n ),\n [shareRecipientOptions, triggerDetails.shareType?.value]\n );\n\n const filteredShareChannelOptions = useMemo(() => {\n const filtered = channels.filter(\n (channel: any) => channel?.type === triggerDetails?.shareType?.value\n );\n if (filtered.length) {\n return filtered;\n }\n if (\n triggerDetails?.shareType?.value !== \"WHATSAPP\" &&\n triggerDetails?.shareType?.value !== \"SMS\"\n ) {\n return [\n {\n label: \"New Share \",\n value: \"NEW_SHARE\",\n },\n ];\n }\n return [];\n }, [channels, triggerDetails?.shareType?.value]);\n\n /* ----- Event Handlers ----- */\n\n const setTriggerFields = useCallback(\n (property: string, value: any) => {\n setTriggerDetails((prev: any) => ({\n ...prev,\n [property]: value,\n }));\n },\n [setTriggerDetails]\n );\n\n const handleConditionChange = useCallback(\n (conditionValue: string) => {\n setFields((prev: any) => ({\n ...prev,\n condition: conditionValue,\n }));\n },\n [setFields]\n );\n\n const handleAddConditionClick = useCallback(() => {\n setIsEditing(true);\n addFilterCondition();\n }, [setIsEditing, addFilterCondition]);\n\n const handleVariablesChange = useCallback(\n (field: any) => {\n setTriggerFields(\"variables\", field);\n },\n [setTriggerFields]\n );\n\n const handleShareTypeChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareType\", field);\n setTriggerFields(\"shareRecipient\", null);\n setTriggerFields(\"shareChannel\", null);\n },\n [setTriggerFields]\n );\n\n const handleShareRecipientChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareRecipient\", field);\n },\n [setTriggerFields]\n );\n\n const handleShareChannelChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareChannel\", field);\n },\n [setTriggerFields]\n );\n\n const handleContactUniqueFieldChange = useCallback(\n (field: any) => {\n const constraintKey = contactUniqueConstraint?.value;\n if (!constraintKey) return;\n setTriggerFields(\n \"contactUniqueField\",\n field?.value ? { [constraintKey]: field.value } : null\n );\n },\n [setTriggerFields, contactUniqueConstraint?.value]\n );\n\n const selectedContactUniqueOption = useMemo(() => {\n const constraintKey = contactUniqueConstraint?.value;\n const stored = triggerDetails?.contactUniqueField;\n if (!constraintKey || !stored) return null;\n const variableValue = stored[constraintKey];\n if (!variableValue) return null;\n return (\n variableOptions?.find((option: any) => option?.value === variableValue) ??\n null\n );\n }, [\n contactUniqueConstraint?.value,\n triggerDetails?.contactUniqueField,\n variableOptions,\n ]);\n\n const resetEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n const { tid } = useTestId();\n\n /* ----- Render ----- */\n\n return (\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n css={{ marginTop: \"$40\" }}\n >\n <Box css={{ maxWidth: 488, width: \"100%\" }}>\n <Heading size=\"h5\">Set Condition</Heading>\n <Flex alignItems=\"center\" css={{ marginTop: \"$12\" }}>\n <Text\n size=\"md\"\n css={{ color: \"$neutral700\", display: \"inline-flex\" }}\n >\n which meets{\" \"}\n </Text>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Flex\n data-testid={tid('condition-selector')}\n alignItems=\"center\"\n css={{\n margin: \"0 $2\",\n }}\n >\n <Text\n size=\"md\"\n weight=\"medium\"\n css={{ color: \"$neutral900\", lineHeight: \"$sm\" }}\n >\n {selectedCondition}\n </Text>\n <ChevronDownIcon size={16} color=\"#6A6A6A\" />\n </Flex>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n sideOffset={5}\n css={{\n padding: \"$4 0\",\n minWidth: \"$15\",\n }}\n >\n {topLevelCondition.map((condition) => (\n <DropdownMenuItem\n key={condition.value}\n data-testid={tid(`condition-option-${condition.value}`)}\n onClick={() => handleConditionChange(condition.value)}\n css={{\n ...(condition.value === fields.condition && {\n background: \"$primary100\",\n color: \"$neutral900\",\n \"&:hover\": {\n background: \"$primary100\",\n color: \"$neutral900\",\n },\n }),\n }}\n >\n {condition.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n <Text\n size=\"md\"\n css={{ color: \"$neutral700\", display: \"inline-flex\" }}\n >\n of these conditions\n </Text>\n </Flex>\n <Flex\n flexDirection=\"column\"\n gap=\"$12\"\n css={{ marginTop: fields?.filters?.length ? \"$12\" : 0 }}\n >\n {fields?.filters?.map((filters: any, index: number) => (\n <Filter\n key={filters.id}\n filters={filters}\n fields={fields}\n hasNestedCondition={hasNestedCondition}\n index={index}\n isEditing={isEditing}\n setIsEditing={setIsEditing}\n setCurrentField={setCurrentField}\n resetEditing={resetEditing}\n addNestedFilterCondition={addNestedFilterCondition}\n setNestedFieldCondition={setNestedFieldCondition}\n removeCurrentFilter={removeCurrentFilter}\n removeNestedField={removeNestedField}\n fieldOptions={fieldOptions}\n customConditions={customConditions}\n />\n ))}\n </Flex>\n <Button\n data-testid={tid('add-condition')}\n css={{ marginTop: \"$8\", marginLeft: \"-$2\" }}\n leftIcon={<PlusIcon />}\n variant=\"ghost\"\n size=\"md\"\n onClick={handleAddConditionClick}\n >\n Add Condition\n </Button>\n {showPassAndSendSections ? (\n <Flex flexDirection=\"column\" gap=\"$12\" css={{ marginTop: \"$40\" }}>\n <Heading size=\"h5\">Pass Variable to Survey</Heading>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Fields\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n isMulti\n closeMenuOnSelect={false}\n isClearable={false}\n value={triggerDetails?.variables}\n onChange={handleVariablesChange}\n css={{\n p: {\n fontFamily: \"'Roboto Mono', monospace !important\",\n },\n \" .twigs-select__indicators\": {\n height: \"40px\",\n },\n \"& .twigs-select__control\": {\n overflow: \"auto\",\n maxHeight: 488,\n height: \"100%\",\n },\n \".twigs-select__value-container--is-multi\": {\n gap: \"$2\",\n },\n }}\n components={{\n MultiValue: CustomMultiValue,\n }}\n options={variableOptions}\n />\n </Flex>\n {contactUniqueConstraint?.hasUniqueConstraint ? (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {`Contact Uniqueness Field for \"${contactUniqueConstraint.label}\"`}\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n isClearable={false}\n value={selectedContactUniqueOption}\n onChange={handleContactUniqueFieldChange}\n css={{\n p: {\n fontFamily: \"'Roboto Mono', monospace !important\",\n },\n \" .twigs-select__indicators\": {\n height: \"40px\",\n },\n \"& .twigs-select__control\": {\n overflow: \"auto\",\n maxHeight: 488,\n height: \"100%\",\n },\n }}\n options={variableOptions}\n />\n </Flex>\n ) : null}\n </Flex>\n ) : null}\n {showPassAndSendSections ? (\n <Flex flexDirection=\"column\" gap=\"$12\" css={{ marginBlock: \"$40\" }}>\n <Heading size=\"h5\">Send Survey</Heading>\n <Flex flexDirection=\"column\" gap=\"$8\">\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Share Type\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n components={{\n Option: CustomShareOption,\n SingleValue: CustomSingleValue,\n }}\n styles={{\n singleValue: (provided, state) => ({\n ...provided,\n display: \"flex\",\n alignItems: \"center\",\n }),\n }}\n value={triggerDetails?.shareType}\n onChange={handleShareTypeChange}\n options={[\n {\n id: 1,\n label: \"Email\",\n value: \"EMAIL\",\n },\n {\n id: 2,\n label: \"SMS\",\n value: \"SMS\",\n },\n {\n id: 3,\n label: \"Whatsapp\",\n value: \"WHATSAPP\",\n },\n ]}\n />\n </Flex>\n {!isEmpty(triggerDetails?.shareType) && (\n <>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Recipient\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n onChange={handleShareRecipientChange}\n isDisabled={!triggerDetails?.shareType?.value}\n value={triggerDetails?.shareRecipient}\n options={filteredShareRecipientOptions}\n />\n </Flex>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Share Channel\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n components={{\n Option: CustomShareChannelOption,\n SingleValue: CustomShareChannelSingleValue,\n }}\n styles={{\n singleValue: (provided, state) => ({\n ...provided,\n display: \"flex\",\n alignItems: \"center\",\n }),\n }}\n isDisabled={!triggerDetails?.shareType?.value}\n value={triggerDetails?.shareChannel}\n onChange={handleShareChannelChange}\n options={filteredShareChannelOptions}\n />\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n ) : null}\n </Box>\n </Flex>\n );\n};\n\nexport default Trigger;"],"names":["useTriggerState","useFilterManagement","useChannelData","useMemo","checkFiltersHaveValues","useState","useEffect","_a","topLevelCondition","_b","useCallback","useTestId","Flex","Box","Heading","Text","DropdownMenu","DropdownMenuTrigger","ChevronDownIcon","DropdownMenuContent","DropdownMenuItem","Filter","Button","PlusIcon","FormLabel","Select","CustomMultiValue","CustomShareOption","CustomSingleValue","isEmpty","CustomShareChannelOption","CustomShareChannelSingleValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trigger.js","sources":["../../../../src/triggers/components/trigger.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport {\n Box,\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Flex,\n FormLabel,\n Heading,\n Select,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport { ChevronDownIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { topLevelCondition } from \"../constants\";\nimport { Filter } from \"./subcomponents\";\nimport {\n CustomShareOption,\n CustomSingleValue,\n CustomMultiValue,\n CustomShareChannelOption,\n CustomShareChannelSingleValue,\n} from \"./custom-share-components\";\nimport { useTriggerState, useFilterManagement, useChannelData } from \"../hooks\";\nimport { hasFiltersWithValues as checkFiltersHaveValues } from \"../utils\";\nimport { isEmpty } from \"../utils\";\nimport { ContactUniqueConstraint } from \"../types\";\nimport { CustomConditions } from \"../../commons/constants/operator-options\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\n\n/* ----- Types / Interfaces ----- */\n\ntype TriggerProps = {\n fields: any;\n setFields: (fields: any) => void;\n token: string;\n apiURL: string;\n surveyDetails: any;\n hasNestedCondition: boolean;\n shareRecipientOptions: any[];\n shareChannelOptions: any[];\n triggerDetails: any;\n setTriggerDetails: (details: any) => void;\n fieldOptions: any[];\n variableOptions: any[];\n contactUniqueConstraint?: ContactUniqueConstraint;\n customConditions?: CustomConditions;\n isLoading?: boolean;\n /**\n * Opt-in (default off/undefined = current behavior). When true, the\n * \"Pass Variable to Survey\" and \"Send Survey\" sections are always visible\n * instead of staying hidden until a condition has a value โ so users know\n * they exist. See CL-5.\n */\n alwaysShowPassAndSendSections?: boolean;\n};\n\n/* ----- Main Component ----- */\n\n/**\n * Trigger component for setting up trigger conditions and actions\n *\n * @param {TriggerProps} props - Component props\n * @returns {JSX.Element} Rendered Trigger component\n */\nconst Trigger: React.FC<TriggerProps> = ({\n fields,\n setFields,\n token,\n apiURL,\n hasNestedCondition,\n surveyDetails,\n shareRecipientOptions,\n shareChannelOptions,\n triggerDetails,\n setTriggerDetails,\n fieldOptions,\n variableOptions,\n contactUniqueConstraint,\n customConditions,\n alwaysShowPassAndSendSections,\n}) => {\n /* ----- Hooks ----- */\n\n const { isEditing, setIsEditing } = useTriggerState();\n\n const {\n addFilterCondition,\n addNestedFilterCondition,\n setCurrentField,\n removeCurrentFilter,\n removeNestedField,\n setNestedFieldCondition,\n } = useFilterManagement({\n setFields,\n setIsEditing,\n });\n\n const { channels } = useChannelData({\n token,\n apiURL,\n surveyId: surveyDetails?.surveyId,\n shareChannelOptions,\n });\n\n const hasFiltersWithValues = useMemo(\n () => checkFiltersHaveValues(fields),\n [fields]\n );\n\n const [passAndSendSectionsUnlocked, setPassAndSendSectionsUnlocked] =\n useState(false);\n\n useEffect(() => {\n if (hasFiltersWithValues) {\n setPassAndSendSectionsUnlocked(true);\n }\n }, [hasFiltersWithValues]);\n\n useEffect(() => {\n if (!fields?.filters?.length) {\n setPassAndSendSectionsUnlocked(false);\n }\n }, [fields?.filters?.length]);\n\n const showPassAndSendSections =\n alwaysShowPassAndSendSections ||\n passAndSendSectionsUnlocked ||\n hasFiltersWithValues;\n\n /* ----- Constants ----- */\n\n const selectedCondition = useMemo(\n () =>\n topLevelCondition.find(\n (condition) => condition.value === fields.condition\n )?.label,\n [fields.condition]\n );\n\n const filteredShareRecipientOptions = useMemo(\n () =>\n shareRecipientOptions?.filter(\n (option: any) => option?.type === triggerDetails.shareType?.value\n ),\n [shareRecipientOptions, triggerDetails.shareType?.value]\n );\n\n const filteredShareChannelOptions = useMemo(() => {\n const filtered = channels.filter(\n (channel: any) => channel?.type === triggerDetails?.shareType?.value\n );\n if (filtered.length) {\n return filtered;\n }\n if (\n triggerDetails?.shareType?.value !== \"WHATSAPP\" &&\n triggerDetails?.shareType?.value !== \"SMS\"\n ) {\n return [\n {\n label: \"New Share \",\n value: \"NEW_SHARE\",\n },\n ];\n }\n return [];\n }, [channels, triggerDetails?.shareType?.value]);\n\n /* ----- Event Handlers ----- */\n\n const setTriggerFields = useCallback(\n (property: string, value: any) => {\n setTriggerDetails((prev: any) => ({\n ...prev,\n [property]: value,\n }));\n },\n [setTriggerDetails]\n );\n\n const handleConditionChange = useCallback(\n (conditionValue: string) => {\n setFields((prev: any) => ({\n ...prev,\n condition: conditionValue,\n }));\n },\n [setFields]\n );\n\n const handleAddConditionClick = useCallback(() => {\n setIsEditing(true);\n addFilterCondition();\n }, [setIsEditing, addFilterCondition]);\n\n const handleVariablesChange = useCallback(\n (field: any) => {\n setTriggerFields(\"variables\", field);\n },\n [setTriggerFields]\n );\n\n const handleShareTypeChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareType\", field);\n setTriggerFields(\"shareRecipient\", null);\n setTriggerFields(\"shareChannel\", null);\n },\n [setTriggerFields]\n );\n\n const handleShareRecipientChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareRecipient\", field);\n },\n [setTriggerFields]\n );\n\n const handleShareChannelChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareChannel\", field);\n },\n [setTriggerFields]\n );\n\n const handleContactUniqueFieldChange = useCallback(\n (field: any) => {\n const constraintKey = contactUniqueConstraint?.value;\n if (!constraintKey) return;\n setTriggerFields(\n \"contactUniqueField\",\n field?.value ? { [constraintKey]: field.value } : null\n );\n },\n [setTriggerFields, contactUniqueConstraint?.value]\n );\n\n const selectedContactUniqueOption = useMemo(() => {\n const constraintKey = contactUniqueConstraint?.value;\n const stored = triggerDetails?.contactUniqueField;\n if (!constraintKey || !stored) return null;\n const variableValue = stored[constraintKey];\n if (!variableValue) return null;\n return (\n variableOptions?.find((option: any) => option?.value === variableValue) ??\n null\n );\n }, [\n contactUniqueConstraint?.value,\n triggerDetails?.contactUniqueField,\n variableOptions,\n ]);\n\n const resetEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n const { tid } = useTestId();\n\n /* ----- Render ----- */\n\n return (\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n css={{ marginTop: \"$40\" }}\n >\n <Box css={{ maxWidth: 488, width: \"100%\" }}>\n <Heading size=\"h5\">Set Condition</Heading>\n <Flex alignItems=\"center\" css={{ marginTop: \"$12\" }}>\n <Text\n size=\"md\"\n css={{ color: \"$neutral700\", display: \"inline-flex\" }}\n >\n which meets{\" \"}\n </Text>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Flex\n data-testid={tid('condition-selector')}\n alignItems=\"center\"\n css={{\n margin: \"0 $2\",\n }}\n >\n <Text\n size=\"md\"\n weight=\"medium\"\n css={{ color: \"$neutral900\", lineHeight: \"$sm\" }}\n >\n {selectedCondition}\n </Text>\n <ChevronDownIcon size={16} color=\"#6A6A6A\" />\n </Flex>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n sideOffset={5}\n css={{\n padding: \"$4 0\",\n minWidth: \"$15\",\n }}\n >\n {topLevelCondition.map((condition) => (\n <DropdownMenuItem\n key={condition.value}\n data-testid={tid(`condition-option-${condition.value}`)}\n onClick={() => handleConditionChange(condition.value)}\n css={{\n ...(condition.value === fields.condition && {\n background: \"$primary100\",\n color: \"$neutral900\",\n \"&:hover\": {\n background: \"$primary100\",\n color: \"$neutral900\",\n },\n }),\n }}\n >\n {condition.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n <Text\n size=\"md\"\n css={{ color: \"$neutral700\", display: \"inline-flex\" }}\n >\n of these conditions\n </Text>\n </Flex>\n <Flex\n flexDirection=\"column\"\n gap=\"$12\"\n css={{ marginTop: fields?.filters?.length ? \"$12\" : 0 }}\n >\n {fields?.filters?.map((filters: any, index: number) => (\n <Filter\n key={filters.id}\n filters={filters}\n fields={fields}\n hasNestedCondition={hasNestedCondition}\n index={index}\n isEditing={isEditing}\n setIsEditing={setIsEditing}\n setCurrentField={setCurrentField}\n resetEditing={resetEditing}\n addNestedFilterCondition={addNestedFilterCondition}\n setNestedFieldCondition={setNestedFieldCondition}\n removeCurrentFilter={removeCurrentFilter}\n removeNestedField={removeNestedField}\n fieldOptions={fieldOptions}\n customConditions={customConditions}\n />\n ))}\n </Flex>\n <Button\n data-testid={tid('add-condition')}\n css={{ marginTop: \"$8\", marginLeft: \"-$2\" }}\n leftIcon={<PlusIcon />}\n variant=\"ghost\"\n size=\"md\"\n onClick={handleAddConditionClick}\n >\n Add Condition\n </Button>\n {showPassAndSendSections ? (\n <Flex flexDirection=\"column\" gap=\"$12\" css={{ marginTop: \"$40\" }}>\n <Heading size=\"h5\">Pass Variable to Survey</Heading>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Fields\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n isMulti\n closeMenuOnSelect={false}\n isClearable={false}\n value={triggerDetails?.variables}\n onChange={handleVariablesChange}\n css={{\n p: {\n fontFamily: \"'Roboto Mono', monospace !important\",\n },\n \" .twigs-select__indicators\": {\n height: \"40px\",\n },\n \"& .twigs-select__control\": {\n overflow: \"auto\",\n maxHeight: 488,\n height: \"100%\",\n },\n \".twigs-select__value-container--is-multi\": {\n gap: \"$2\",\n },\n }}\n components={{\n MultiValue: CustomMultiValue,\n }}\n options={variableOptions}\n />\n </Flex>\n </Flex>\n ) : null}\n {showPassAndSendSections ? (\n <Flex flexDirection=\"column\" gap=\"$12\" css={{ marginBlock: \"$40\" }}>\n <Heading size=\"h5\">Send Survey</Heading>\n <Flex flexDirection=\"column\" gap=\"$8\">\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Share Type\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n components={{\n Option: CustomShareOption,\n SingleValue: CustomSingleValue,\n }}\n styles={{\n singleValue: (provided, state) => ({\n ...provided,\n display: \"flex\",\n alignItems: \"center\",\n }),\n }}\n value={triggerDetails?.shareType}\n onChange={handleShareTypeChange}\n options={[\n {\n id: 1,\n label: \"Email\",\n value: \"EMAIL\",\n },\n {\n id: 2,\n label: \"SMS\",\n value: \"SMS\",\n },\n {\n id: 3,\n label: \"Whatsapp\",\n value: \"WHATSAPP\",\n },\n ]}\n />\n </Flex>\n {contactUniqueConstraint?.hasUniqueConstraint ? (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {`Contact Uniqueness Field for \"${contactUniqueConstraint.label}\"`}\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n isClearable={false}\n value={selectedContactUniqueOption}\n onChange={handleContactUniqueFieldChange}\n css={{\n p: {\n fontFamily: \"'Roboto Mono', monospace !important\",\n },\n \" .twigs-select__indicators\": {\n height: \"40px\",\n },\n \"& .twigs-select__control\": {\n overflow: \"auto\",\n maxHeight: 488,\n height: \"100%\",\n },\n }}\n options={variableOptions}\n />\n </Flex>\n ) : null}\n {!isEmpty(triggerDetails?.shareType) && (\n <>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Recipient\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n onChange={handleShareRecipientChange}\n isDisabled={!triggerDetails?.shareType?.value}\n value={triggerDetails?.shareRecipient}\n options={filteredShareRecipientOptions}\n />\n </Flex>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Share Channel\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n components={{\n Option: CustomShareChannelOption,\n SingleValue: CustomShareChannelSingleValue,\n }}\n styles={{\n singleValue: (provided, state) => ({\n ...provided,\n display: \"flex\",\n alignItems: \"center\",\n }),\n }}\n isDisabled={!triggerDetails?.shareType?.value}\n value={triggerDetails?.shareChannel}\n onChange={handleShareChannelChange}\n options={filteredShareChannelOptions}\n />\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n ) : null}\n </Box>\n </Flex>\n );\n};\n\nexport default Trigger;"],"names":["useTriggerState","useFilterManagement","useChannelData","useMemo","checkFiltersHaveValues","useState","useEffect","_a","topLevelCondition","_b","useCallback","useTestId","Flex","Box","Heading","Text","DropdownMenu","DropdownMenuTrigger","ChevronDownIcon","DropdownMenuContent","DropdownMenuItem","Filter","Button","PlusIcon","FormLabel","Select","CustomMultiValue","CustomShareOption","CustomSingleValue","isEmpty","CustomShareChannelOption","CustomShareChannelSingleValue"],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ const ContactImportHeader = ({
|
|
|
21
21
|
onSaveHandler,
|
|
22
22
|
isContactMappingPage,
|
|
23
23
|
navigateMappingPage,
|
|
24
|
+
contactUniqueConstraint,
|
|
24
25
|
invitePortal
|
|
25
26
|
}) => {
|
|
26
27
|
const { tid } = useTestId();
|
|
@@ -35,13 +36,16 @@ const ContactImportHeader = ({
|
|
|
35
36
|
}
|
|
36
37
|
};
|
|
37
38
|
const handleContinueMapping = () => {
|
|
38
|
-
var _a;
|
|
39
|
-
|
|
39
|
+
var _a, _b;
|
|
40
|
+
const isMapped = (contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.hasUniqueConstraint) ? (_a = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a.some(
|
|
41
|
+
(field) => (field == null ? void 0 : field.surveySparrowField) === contactUniqueConstraint.value
|
|
42
|
+
) : (_b = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _b.some(
|
|
40
43
|
(field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
|
|
41
|
-
)
|
|
44
|
+
);
|
|
45
|
+
if (!isMapped) {
|
|
42
46
|
toast({
|
|
43
47
|
variant: "error",
|
|
44
|
-
title: "Please map Email or mobile or uniqueId field"
|
|
48
|
+
title: (contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.hasUniqueConstraint) ? `Please map ${contactUniqueConstraint.label} field` : "Please map Email or mobile or uniqueId field"
|
|
45
49
|
});
|
|
46
50
|
return;
|
|
47
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactImportHeader.js","sources":["../../../../src/contact-import/components/ContactImportHeader.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Heading,\n IconButton,\n toast\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\nimport { ContactImportHeaderProps } from \"../types\";\nimport { CONTACT_IMPORT_UI_STRINGS } from \"../constants/ui-strings\";\nimport { ContactImportModal } from \"./ContactImportModal\";\n\nexport const ContactImportHeader: React.FC<ContactImportHeaderProps> = ({\n importName,\n setImportName,\n setNewImport,\n setContactImportField,\n contactImportField,\n hasPreviousMapping,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n invitePortal,\n}) => {\n const { tid } = useTestId();\n const [showImportModal, setShowImportModal] = useState(false);\n\n const handleBackClick = () => {\n setNewImport(false);\n previousMappingHandler();\n };\n\n const handleEventSetupClick = () => {\n if (isContactMappingPage) {\n navigateMappingPage(false);\n }\n };\n\n const handleContinueMapping = () => {\n
|
|
1
|
+
{"version":3,"file":"ContactImportHeader.js","sources":["../../../../src/contact-import/components/ContactImportHeader.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Heading,\n IconButton,\n toast\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\nimport { ContactImportHeaderProps } from \"../types\";\nimport { CONTACT_IMPORT_UI_STRINGS } from \"../constants/ui-strings\";\nimport { ContactImportModal } from \"./ContactImportModal\";\n\nexport const ContactImportHeader: React.FC<ContactImportHeaderProps> = ({\n importName,\n setImportName,\n setNewImport,\n setContactImportField,\n contactImportField,\n hasPreviousMapping,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n contactUniqueConstraint,\n invitePortal,\n}) => {\n const { tid } = useTestId();\n const [showImportModal, setShowImportModal] = useState(false);\n\n const handleBackClick = () => {\n setNewImport(false);\n previousMappingHandler();\n };\n\n const handleEventSetupClick = () => {\n if (isContactMappingPage) {\n navigateMappingPage(false);\n }\n };\n\n const handleContinueMapping = () => {\n const isMapped = contactUniqueConstraint?.hasUniqueConstraint\n ? contactImportField?.fields?.some(\n (field) => field?.surveySparrowField === contactUniqueConstraint.value\n )\n : contactImportField?.fields?.some(\n (field) =>\n field?.surveySparrowField === 'email' || field?.surveySparrowField === 'mobile'\n );\n\n if (!isMapped) {\n toast({\n variant: 'error',\n title: contactUniqueConstraint?.hasUniqueConstraint\n ? `Please map ${contactUniqueConstraint.label} field`\n : 'Please map Email or mobile or uniqueId field',\n });\n return;\n }\n\n setShowImportModal(true);\n };\n\n const handleSaveAndClose = async (importName: string) => {\n await onSaveHandler(importName);\n };\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n css={{\n borderBottom: \"$borderWidths$xs solid $neutral200\",\n padding: \"$8 $12\",\n }}\n >\n <Flex\n gap=\"$6\"\n alignItems=\"center\"\n css={{ visibility: hasPreviousMapping ? \"visible\" : \"hidden\" }}\n >\n <IconButton\n onClick={handleBackClick}\n color=\"default\"\n icon={<ArrowLeftIcon />}\n size=\"lg\"\n aria-label=\"Go back\"\n data-testid={tid('back-btn')}\n />\n <Heading size=\"h6\">{CONTACT_IMPORT_UI_STRINGS.NEW_CONTACT_IMPORT}</Heading>\n </Flex>\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{ \n width: \"420px !important\",\n \"& button\": { background: \"transparent !important\", fontSize: \"$md\" },\n }}\n >\n <Button\n css={{ color: !isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n onClick={handleEventSetupClick}\n data-testid={tid('configure-tab')}\n >\n {CONTACT_IMPORT_UI_STRINGS.EVENT_SETUP}\n </Button>\n <Arrow />\n <Button\n css={{ color: isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n disabled={!isContactMappingPage}\n >\n {CONTACT_IMPORT_UI_STRINGS.MAPPING}\n </Button>\n </Flex>\n <Button\n size=\"lg\"\n onClick={handleContinueMapping}\n css={{ visibility: isContactMappingPage ? \"visible\" : \"hidden\"}}\n data-testid={tid('continue-btn')}\n >\n {CONTACT_IMPORT_UI_STRINGS.CONTINUE_MAPPING}\n </Button>\n {showImportModal && (\n <ContactImportModal\n importName={importName}\n setImportName={setImportName}\n setContactImportField={setContactImportField}\n contactImportField={contactImportField}\n invitePortal={invitePortal}\n onSaveHandler={handleSaveAndClose}\n onCloseHandler={() => setShowImportModal(false)}\n />\n )}\n </Flex>\n );\n};\n\n"],"names":["importName","React"],"mappings":"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"}
|
|
@@ -45,7 +45,8 @@ const ContactImportMapping = ({
|
|
|
45
45
|
contactImportField,
|
|
46
46
|
setContactImportField,
|
|
47
47
|
integrationName,
|
|
48
|
-
contactProperties
|
|
48
|
+
contactProperties,
|
|
49
|
+
contactUniqueConstraint
|
|
49
50
|
}) => {
|
|
50
51
|
const { tid } = useTestId();
|
|
51
52
|
const customPropertyRef = useRef(null);
|
|
@@ -217,6 +218,7 @@ const ContactImportMapping = ({
|
|
|
217
218
|
value: field.surveySparrowField
|
|
218
219
|
} : null,
|
|
219
220
|
options: contactProperties.filter((contact) => contact.type !== "DEPENDENT_FIELD").map((contact) => __spreadProps(__spreadValues({}, contact), {
|
|
221
|
+
label: (contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.hasUniqueConstraint) && contact.value === contactUniqueConstraint.value ? `${contact.label}` : contact.label,
|
|
220
222
|
isDisabled: contactImportField.fields.some(
|
|
221
223
|
(f) => f.id !== field.id && f.surveySparrowField === contact.value
|
|
222
224
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contact-import-mapping.js","sources":["../../../../src/contact-import/components/contact-import-mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n FormInput,\n FormLabel,\n Heading,\n IconButton,\n Select,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from \"@sparrowengg/twigs-react\";\nimport { DeleteIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useEffect, useRef } from \"react\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\nimport { ContactImportMappingProps } from \"../types\";\nimport { SelectOption } from \"../../commons/types/enhanced\";\n\n// Define the Field type with all the properties used in the component\ntype Field = {\n id: string | number;\n integrationField: string | number | null;\n surveySparrowField: string | number | null;\n sampleData?: Array<string>;\n property?: \"custom\" | \"default\";\n mapped?: boolean;\n surveySparrowFieldError?: boolean;\n};\n\n\nconst defaultFieldValue: Omit<Field, \"id\"> = {\n integrationField: null,\n surveySparrowField: null,\n sampleData: [],\n property: \"custom\",\n mapped: false,\n surveySparrowFieldError: false,\n};\n\nconst ContactImportMapping: React.FC<ContactImportMappingProps> = ({\n hasAddCustomProperty = true,\n contactImportField,\n setContactImportField,\n integrationName,\n contactProperties,\n}) => {\n const { tid } = useTestId();\n const customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\n // Frozen display order. Sorting runs once on initial load so that editing an\n // auto-mapped row (which flips `mapped` to true) does not reshuffle the list.\n const orderRef = useRef<Array<string | number>>([]);\n\n useEffect(() => {\n if (!initialRenderRef.current && customPropertyRef?.current) {\n customPropertyRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n }\n initialRenderRef.current = false;\n }, [contactImportField]);\n\n const customFieldHandler = (\n id: string | number,\n property: keyof Field,\n value: string | number | boolean | null\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id ? { ...field, [property]: value } : field\n ),\n }));\n };\n\n const updateSurveySparrowField = (\n value: string | number | null,\n id: string | number,\n manuallyMapped: boolean\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id\n ? {\n ...field,\n surveySparrowField: value,\n ...(value === null\n ? { mapped: false }\n : manuallyMapped && { mapped: true }),\n }\n : field\n ),\n }));\n };\n\n const addCustomProperty = () => {\n setContactImportField((prev) => ({\n ...prev,\n fields: [\n ...prev.fields,\n {\n id: prev.fields.length\n ? (typeof prev.fields[prev.fields.length - 1].id === 'number' \n ? (prev.fields[prev.fields.length - 1].id as number) + 1 \n : Date.now())\n : 1,\n ...defaultFieldValue,\n },\n ],\n }));\n };\n\n const deleteCustomProperty = (id: string | number) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.filter((field) => field.id !== id),\n }));\n };\n\n const currentIds = contactImportField.fields.map((field) => field.id);\n // Drop ids of deleted fields from the frozen order.\n orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));\n if (orderRef.current.length === 0 && currentIds.length) {\n // First populate: seed the order with the one-time category sort.\n orderRef.current = [...contactImportField.fields]\n .sort((a, b) => {\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n\n return 0;\n })\n .map((field) => field.id);\n } else {\n // Append newly added fields (e.g. custom properties) at the end.\n currentIds.forEach((id) => {\n if (!orderRef.current.includes(id)) orderRef.current.push(id);\n });\n }\n\n const orderedFields = orderRef.current\n .map((id) => contactImportField.fields.find((field) => field.id === id))\n .filter((field): field is Field => Boolean(field));\n\n return (\n <Flex justifyContent=\"center\">\n <Box css={{ marginTop: \"$40\", maxWidth: \"90%\", width: \"100%\" }}>\n <Box css={{ paddingLeft: \"$28\" }}>\n <Heading size=\"h5\">Map Contact Properties</Heading>\n <Text css={{ marginTop: \"$4\", color: \"$neutral600\" }} size=\"md\">\n Review these mappings before importing. Unmapped columns will be\n ignored.\n </Text>\n </Box>\n <Box\n css={{\n height: \"calc(100vh - 291px)\",\n paddingTop: \"$16\",\n overflowY: \"auto\",\n position: \"relative\",\n background: \"$white900\",\n paddingLeft: \"$28\",\n }}\n >\n <Table\n css={{\n width: \"100%\",\n background: \"$white900\",\n borderRadius: \"5px\",\n borderCollapse: \"collapse\",\n marginLeft: '-14px !important'\n }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-32px\" }}>\n <Th>{`${integrationName} Profile Fields Data`}</Th>\n <Th css={{ borderLeft: \"$borderWidths$xs solid $neutral100\" }}>\n SurveySparrow Mapping\n </Th>\n </Thead>\n <Tbody>\n {orderedFields.map((field) => {\n const hasSurveyFieldValue = contactProperties.some(\n (contact) => contact.value === field.surveySparrowField\n );\n\n return (\n <Tr key={field.id}>\n <Td css={{ width: 560 }}>\n {field.property !== \"custom\" ? (\n <>\n <Text size=\"sm\" weight=\"medium\">\n {typeof field.integrationField === 'string' \n ? field.integrationField.replace(\"_\", \" \")\n : field.integrationField}\n </Text>\n {field.sampleData?.map((sample, index) => (\n <Text\n key={index}\n size=\"xs\"\n css={{ lineHeight: \"$xs\" }}\n >\n {sample.length > 40\n ? `${sample.slice(0, 40)}...`\n : sample}\n </Text>\n ))}\n </>\n ) : (\n <Box css={{ position: \"relative\" }}>\n <FormInput\n size=\"lg\"\n onChange={(event: any) =>\n customFieldHandler(\n field.id,\n \"integrationField\",\n event.target.value\n )\n }\n />\n <FormLabel\n css={{ marginTop: \"$4\", color: \"$neutral400\" }}\n >\n Enter the exact custom property name for accurate\n mapping. It is case-sensitive.\n </FormLabel>\n <IconButton\n css={{\n position: \"absolute\",\n top: \"0\",\n left: \"-70px\",\n }}\n size=\"lg\"\n variant=\"ghost\"\n color=\"secondary\"\n onClick={() => deleteCustomProperty(field.id)}\n icon={<DeleteIcon />}\n aria-label=\"Delete custom property\"\n data-testid={tid('remove-field')}\n />\n </Box>\n )}\n </Td>\n <Td\n className=\"dm-sans\"\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n className=\"dm-sans\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\n menuPlacement=\"auto\"\n menuShouldScrollIntoView={false}\n closeMenuOnScroll={(e: any) =>\n !(\n e.target instanceof Element &&\n e.target.closest('[class*=\"menu-list\"]')\n )\n }\n styles={{\n menuPortal: (base: any) => ({\n ...base,\n zIndex: 9999,\n }),\n }}\n value={\n field.surveySparrowField\n ? {\n label: contactProperties.find(\n (contact) =>\n contact.value === field.surveySparrowField\n )?.label,\n value: field.surveySparrowField,\n }\n : null\n }\n options={contactProperties\n .filter((contact) => contact.type !== \"DEPENDENT_FIELD\")\n .map((contact) => ({\n ...contact,\n isDisabled: contactImportField.fields.some(\n (f) =>\n f.id !== field.id &&\n f.surveySparrowField === contact.value\n ),\n }))}\n onChange={(currentField: any) =>\n updateSurveySparrowField(\n currentField?.value ?? null,\n field.id,\n true\n )\n }\n />\n {hasSurveyFieldValue && (\n <FormLabel\n size=\"xs\"\n css={{\n color: field.mapped ? \"$neutral600\" : \"#0F966C\",\n marginBlock: \"$4\",\n }}\n >\n {field.mapped\n ? \"Manually mapped by you\"\n : \"Automatically mapped\"}\n </FormLabel>\n )}\n {!field.surveySparrowField &&\n field.surveySparrowFieldError && (\n <FormLabel\n css={{ color: \"$negative500\", marginTop: \"$4\" }}\n size=\"xs\"\n >\n Please select the property\n </FormLabel>\n )}\n </Td>\n </Tr>\n );\n })}\n {hasAddCustomProperty && (\n <Tr>\n <Td colSpan={2}>\n <Button\n size=\"md\"\n variant=\"ghost\"\n leftIcon={<PlusIcon />}\n onClick={addCustomProperty}\n data-testid={tid('add-field')}\n >\n Add Custom Property\n </Button>\n </Td>\n </Tr>\n )}\n </Tbody>\n </Table>\n </Box>\n </Box>\n </Flex>\n );\n};\n\nexport default ContactImportMapping;\n"],"names":["React","_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contact-import-mapping.js","sources":["../../../../src/contact-import/components/contact-import-mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n FormInput,\n FormLabel,\n Heading,\n IconButton,\n Select,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from \"@sparrowengg/twigs-react\";\nimport { DeleteIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useEffect, useRef } from \"react\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\nimport { ContactImportMappingProps } from \"../types\";\nimport { SelectOption } from \"../../commons/types/enhanced\";\n\n// Define the Field type with all the properties used in the component\ntype Field = {\n id: string | number;\n integrationField: string | number | null;\n surveySparrowField: string | number | null;\n sampleData?: Array<string>;\n property?: \"custom\" | \"default\";\n mapped?: boolean;\n surveySparrowFieldError?: boolean;\n};\n\n\nconst defaultFieldValue: Omit<Field, \"id\"> = {\n integrationField: null,\n surveySparrowField: null,\n sampleData: [],\n property: \"custom\",\n mapped: false,\n surveySparrowFieldError: false,\n};\n\nconst ContactImportMapping: React.FC<ContactImportMappingProps> = ({\n hasAddCustomProperty = true,\n contactImportField,\n setContactImportField,\n integrationName,\n contactProperties,\n contactUniqueConstraint,\n}) => {\n const { tid } = useTestId();\n const customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\n // Frozen display order. Sorting runs once on initial load so that editing an\n // auto-mapped row (which flips `mapped` to true) does not reshuffle the list.\n const orderRef = useRef<Array<string | number>>([]);\n\n useEffect(() => {\n if (!initialRenderRef.current && customPropertyRef?.current) {\n customPropertyRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n }\n initialRenderRef.current = false;\n }, [contactImportField]);\n\n const customFieldHandler = (\n id: string | number,\n property: keyof Field,\n value: string | number | boolean | null\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id ? { ...field, [property]: value } : field\n ),\n }));\n };\n\n const updateSurveySparrowField = (\n value: string | number | null,\n id: string | number,\n manuallyMapped: boolean\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id\n ? {\n ...field,\n surveySparrowField: value,\n ...(value === null\n ? { mapped: false }\n : manuallyMapped && { mapped: true }),\n }\n : field\n ),\n }));\n };\n\n const addCustomProperty = () => {\n setContactImportField((prev) => ({\n ...prev,\n fields: [\n ...prev.fields,\n {\n id: prev.fields.length\n ? (typeof prev.fields[prev.fields.length - 1].id === 'number' \n ? (prev.fields[prev.fields.length - 1].id as number) + 1 \n : Date.now())\n : 1,\n ...defaultFieldValue,\n },\n ],\n }));\n };\n\n const deleteCustomProperty = (id: string | number) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.filter((field) => field.id !== id),\n }));\n };\n\n const currentIds = contactImportField.fields.map((field) => field.id);\n // Drop ids of deleted fields from the frozen order.\n orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));\n if (orderRef.current.length === 0 && currentIds.length) {\n // First populate: seed the order with the one-time category sort.\n orderRef.current = [...contactImportField.fields]\n .sort((a, b) => {\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n\n return 0;\n })\n .map((field) => field.id);\n } else {\n // Append newly added fields (e.g. custom properties) at the end.\n currentIds.forEach((id) => {\n if (!orderRef.current.includes(id)) orderRef.current.push(id);\n });\n }\n\n const orderedFields = orderRef.current\n .map((id) => contactImportField.fields.find((field) => field.id === id))\n .filter((field): field is Field => Boolean(field));\n\n return (\n <Flex justifyContent=\"center\">\n <Box css={{ marginTop: \"$40\", maxWidth: \"90%\", width: \"100%\" }}>\n <Box css={{ paddingLeft: \"$28\" }}>\n <Heading size=\"h5\">Map Contact Properties</Heading>\n <Text css={{ marginTop: \"$4\", color: \"$neutral600\" }} size=\"md\">\n Review these mappings before importing. Unmapped columns will be\n ignored.\n </Text>\n </Box>\n <Box\n css={{\n height: \"calc(100vh - 291px)\",\n paddingTop: \"$16\",\n overflowY: \"auto\",\n position: \"relative\",\n background: \"$white900\",\n paddingLeft: \"$28\",\n }}\n >\n <Table\n css={{\n width: \"100%\",\n background: \"$white900\",\n borderRadius: \"5px\",\n borderCollapse: \"collapse\",\n marginLeft: '-14px !important'\n }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-32px\" }}>\n <Th>{`${integrationName} Profile Fields Data`}</Th>\n <Th css={{ borderLeft: \"$borderWidths$xs solid $neutral100\" }}>\n SurveySparrow Mapping\n </Th>\n </Thead>\n <Tbody>\n {orderedFields.map((field) => {\n const hasSurveyFieldValue = contactProperties.some(\n (contact) => contact.value === field.surveySparrowField\n );\n\n return (\n <Tr key={field.id}>\n <Td css={{ width: 560 }}>\n {field.property !== \"custom\" ? (\n <>\n <Text size=\"sm\" weight=\"medium\">\n {typeof field.integrationField === 'string' \n ? field.integrationField.replace(\"_\", \" \")\n : field.integrationField}\n </Text>\n {field.sampleData?.map((sample, index) => (\n <Text\n key={index}\n size=\"xs\"\n css={{ lineHeight: \"$xs\" }}\n >\n {sample.length > 40\n ? `${sample.slice(0, 40)}...`\n : sample}\n </Text>\n ))}\n </>\n ) : (\n <Box css={{ position: \"relative\" }}>\n <FormInput\n size=\"lg\"\n onChange={(event: any) =>\n customFieldHandler(\n field.id,\n \"integrationField\",\n event.target.value\n )\n }\n />\n <FormLabel\n css={{ marginTop: \"$4\", color: \"$neutral400\" }}\n >\n Enter the exact custom property name for accurate\n mapping. It is case-sensitive.\n </FormLabel>\n <IconButton\n css={{\n position: \"absolute\",\n top: \"0\",\n left: \"-70px\",\n }}\n size=\"lg\"\n variant=\"ghost\"\n color=\"secondary\"\n onClick={() => deleteCustomProperty(field.id)}\n icon={<DeleteIcon />}\n aria-label=\"Delete custom property\"\n data-testid={tid('remove-field')}\n />\n </Box>\n )}\n </Td>\n <Td\n className=\"dm-sans\"\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n className=\"dm-sans\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\n menuPlacement=\"auto\"\n menuShouldScrollIntoView={false}\n closeMenuOnScroll={(e: any) =>\n !(\n e.target instanceof Element &&\n e.target.closest('[class*=\"menu-list\"]')\n )\n }\n styles={{\n menuPortal: (base: any) => ({\n ...base,\n zIndex: 9999,\n }),\n }}\n value={\n field.surveySparrowField\n ? {\n label: contactProperties.find(\n (contact) =>\n contact.value === field.surveySparrowField\n )?.label,\n value: field.surveySparrowField,\n }\n : null\n }\n options={contactProperties\n .filter((contact) => contact.type !== \"DEPENDENT_FIELD\")\n .map((contact) => ({\n ...contact,\n label: contactUniqueConstraint?.hasUniqueConstraint &&\n contact.value === contactUniqueConstraint.value\n ? `${contact.label}`\n : contact.label,\n isDisabled: contactImportField.fields.some(\n (f) =>\n f.id !== field.id &&\n f.surveySparrowField === contact.value\n ),\n }))}\n onChange={(currentField: any) =>\n updateSurveySparrowField(\n currentField?.value ?? null,\n field.id,\n true\n )\n }\n />\n {hasSurveyFieldValue && (\n <FormLabel\n size=\"xs\"\n css={{\n color: field.mapped ? \"$neutral600\" : \"#0F966C\",\n marginBlock: \"$4\",\n }}\n >\n {field.mapped\n ? \"Manually mapped by you\"\n : \"Automatically mapped\"}\n </FormLabel>\n )}\n {!field.surveySparrowField &&\n field.surveySparrowFieldError && (\n <FormLabel\n css={{ color: \"$negative500\", marginTop: \"$4\" }}\n size=\"xs\"\n >\n Please select the property\n </FormLabel>\n )}\n </Td>\n </Tr>\n );\n })}\n {hasAddCustomProperty && (\n <Tr>\n <Td colSpan={2}>\n <Button\n size=\"md\"\n variant=\"ghost\"\n leftIcon={<PlusIcon />}\n onClick={addCustomProperty}\n data-testid={tid('add-field')}\n >\n Add Custom Property\n </Button>\n </Td>\n </Tr>\n )}\n </Tbody>\n </Table>\n </Box>\n </Box>\n </Flex>\n );\n};\n\nexport default ContactImportMapping;\n"],"names":["React","_a"],"mappings":"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"}
|
|
@@ -46,6 +46,7 @@ const ContactImport = ({
|
|
|
46
46
|
integrationName,
|
|
47
47
|
contactProperties,
|
|
48
48
|
hasContactImportDashboard,
|
|
49
|
+
contactUniqueConstraint,
|
|
49
50
|
invitePortal
|
|
50
51
|
}) => {
|
|
51
52
|
const [newImport, setNewImport] = useState(true);
|
|
@@ -80,7 +81,8 @@ const ContactImport = ({
|
|
|
80
81
|
navigateMappingPage,
|
|
81
82
|
invitePortal,
|
|
82
83
|
importName,
|
|
83
|
-
setImportName
|
|
84
|
+
setImportName,
|
|
85
|
+
contactUniqueConstraint
|
|
84
86
|
}
|
|
85
87
|
), !isContactMappingPage ? /* @__PURE__ */ React__default.createElement(
|
|
86
88
|
ContactImportConfigure,
|
|
@@ -97,7 +99,8 @@ const ContactImport = ({
|
|
|
97
99
|
contactImportField,
|
|
98
100
|
setContactImportField,
|
|
99
101
|
integrationName,
|
|
100
|
-
contactProperties
|
|
102
|
+
contactProperties,
|
|
103
|
+
contactUniqueConstraint
|
|
101
104
|
}
|
|
102
105
|
))))));
|
|
103
106
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/contact-import/index.tsx"],"sourcesContent":["import { Box, Toastr } from \"@sparrowengg/twigs-react\";\nimport React, { useEffect, useState } from \"react\";\nimport ThemeWrapper from \"../commons/components/theme-wrapper\";\nimport { TestIdProvider } from \"../commons/context/test-id.context\";\nimport { ContactImportProps } from \"./types\";\nimport {\n ContactImportHeader,\n ContactImportConfigure,\n ContactImportMapping,\n Dashboard,\n} from \"./components\";\n\nexport const ContactImport: React.FC<ContactImportProps> = ({\n hasAddCustomProperty,\n importName,\n setImportName,\n dashboardDescription,\n existingImports,\n hasPreviousMapping,\n hasContactImportSchedule,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n contactImportField,\n setContactImportField,\n listSegmentOptions,\n integrationName,\n contactProperties,\n hasContactImportDashboard,\n invitePortal,\n}) => {\n const [newImport, setNewImport] = useState(true);\n\n useEffect(() => {\n setNewImport(!existingImports?.length || !hasContactImportDashboard);\n }, []);\n\n const handleConfigureField = (value: Record<string, unknown>) => {\n setContactImportField({\n ...contactImportField,\n configure: { ...value },\n });\n navigateMappingPage(true);\n };\n\n const showDashboard = existingImports?.length && !newImport && hasContactImportDashboard;\n\n return (\n <TestIdProvider integrationName={integrationName}>\n <ThemeWrapper>\n <Toastr duration={10000} />\n <Box css={{ height: \"calc(100vh - 241px)\", width: \"100vw\" }}>\n {showDashboard ? (\n <Dashboard\n dashboardDescription={dashboardDescription}\n setNewImport={setNewImport}\n integrationName={integrationName}\n imports={existingImports}\n />\n ) : (\n <>\n {newImport && (\n <>\n <ContactImportHeader\n setNewImport={setNewImport}\n contactImportField={contactImportField}\n setContactImportField={setContactImportField}\n hasPreviousMapping={hasPreviousMapping}\n previousMappingHandler={previousMappingHandler}\n onSaveHandler={onSaveHandler}\n isContactMappingPage={isContactMappingPage}\n navigateMappingPage={navigateMappingPage}\n invitePortal={invitePortal}\n importName={importName}\n setImportName={setImportName}\n />\n {!isContactMappingPage ? (\n <ContactImportConfigure\n contactImportField={contactImportField}\n handleConfigureField={handleConfigureField}\n listSegmentOptions={listSegmentOptions}\n hasContactImportSchedule={hasContactImportSchedule}\n />\n ) : (\n <ContactImportMapping\n hasAddCustomProperty={hasAddCustomProperty}\n contactImportField={contactImportField}\n setContactImportField={setContactImportField}\n integrationName={integrationName}\n contactProperties={contactProperties}\n />\n )}\n </>\n )}\n </>\n )}\n </Box>\n </ThemeWrapper>\n </TestIdProvider>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,gBAA8C,CAAC;AAAA,EAC1D,oBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,yBAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,IAAI,CAAA;AAE/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,EAAC,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,MAAA,CAAA,IAAU,CAAC,yBAAyB,CAAA;AAAA,EACrE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAmC;AAC/D,IAAA,qBAAA,CAAsB,iCACjB,kBAAA,CAAA,EADiB;AAAA,MAEpB,WAAW,cAAA,CAAA,EAAA,EAAK,KAAA;AAAA,KAClB,CAAC,CAAA;AACD,IAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,aAAA,GAAA,CAAgB,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,MAAA,KAAU,CAAC,SAAA,IAAa,yBAAA;AAE/D,EAAA,oDACG,cAAA,EAAA,EAAe,eAAA,EAAA,+CACf,YAAA,EAAA,IAAA,kBACCA,cAAA,CAAA,aAAA,CAAC,UAAO,QAAA,EAAU,GAAA,EAAO,mBACzBA,cAAA,CAAA,aAAA,CAAC,GAAA,EAAA,EAAI,KAAK,EAAE,MAAA,EAAQ,uBAAuB,KAAA,EAAO,OAAA,MAC/C,aAAA,mBACCA,cAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,oBAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,OAAA,EAAS;AAAA;AAAA,GACX,mBAEAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EACG,SAAA,oBACCA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,kBAAA;AAAA,MACA,sBAAA;AAAA,MACA,aAAA;AAAA,MACA,oBAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA;AAAA,GACF,EACC,CAAC,oBAAA,mBACAA,cAAA,CAAA,aAAA;AAAA,IAAC,sBAAA;AAAA,IAAA;AAAA,MACC,kBAAA;AAAA,MACA,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AAAA,GACF,mBAEAA,cAAA,CAAA,aAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA;AAAA,GAGN,CAEJ,CAEJ,CACF,CACA,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/contact-import/index.tsx"],"sourcesContent":["import { Box, Toastr } from \"@sparrowengg/twigs-react\";\nimport React, { useEffect, useState } from \"react\";\nimport ThemeWrapper from \"../commons/components/theme-wrapper\";\nimport { TestIdProvider } from \"../commons/context/test-id.context\";\nimport { ContactImportProps } from \"./types\";\nimport {\n ContactImportHeader,\n ContactImportConfigure,\n ContactImportMapping,\n Dashboard,\n} from \"./components\";\n\nexport const ContactImport: React.FC<ContactImportProps> = ({\n hasAddCustomProperty,\n importName,\n setImportName,\n dashboardDescription,\n existingImports,\n hasPreviousMapping,\n hasContactImportSchedule,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n contactImportField,\n setContactImportField,\n listSegmentOptions,\n integrationName,\n contactProperties,\n hasContactImportDashboard,\n contactUniqueConstraint,\n invitePortal,\n}) => {\n const [newImport, setNewImport] = useState(true);\n\n useEffect(() => {\n setNewImport(!existingImports?.length || !hasContactImportDashboard);\n }, []);\n\n const handleConfigureField = (value: Record<string, unknown>) => {\n setContactImportField({\n ...contactImportField,\n configure: { ...value },\n });\n navigateMappingPage(true);\n };\n\n const showDashboard = existingImports?.length && !newImport && hasContactImportDashboard;\n\n return (\n <TestIdProvider integrationName={integrationName}>\n <ThemeWrapper>\n <Toastr duration={10000} />\n <Box css={{ height: \"calc(100vh - 241px)\", width: \"100vw\" }}>\n {showDashboard ? (\n <Dashboard\n dashboardDescription={dashboardDescription}\n setNewImport={setNewImport}\n integrationName={integrationName}\n imports={existingImports}\n />\n ) : (\n <>\n {newImport && (\n <>\n <ContactImportHeader\n setNewImport={setNewImport}\n contactImportField={contactImportField}\n setContactImportField={setContactImportField}\n hasPreviousMapping={hasPreviousMapping}\n previousMappingHandler={previousMappingHandler}\n onSaveHandler={onSaveHandler}\n isContactMappingPage={isContactMappingPage}\n navigateMappingPage={navigateMappingPage}\n invitePortal={invitePortal}\n importName={importName}\n setImportName={setImportName}\n contactUniqueConstraint={contactUniqueConstraint}\n />\n {!isContactMappingPage ? (\n <ContactImportConfigure\n contactImportField={contactImportField}\n handleConfigureField={handleConfigureField}\n listSegmentOptions={listSegmentOptions}\n hasContactImportSchedule={hasContactImportSchedule}\n />\n ) : (\n <ContactImportMapping\n hasAddCustomProperty={hasAddCustomProperty}\n contactImportField={contactImportField}\n setContactImportField={setContactImportField}\n integrationName={integrationName}\n contactProperties={contactProperties}\n contactUniqueConstraint={contactUniqueConstraint}\n />\n )}\n </>\n )}\n </>\n )}\n </Box>\n </ThemeWrapper>\n </TestIdProvider>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,MAAM,gBAA8C,CAAC;AAAA,EAC1D,oBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,yBAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,IAAI,CAAA;AAE/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,EAAC,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,MAAA,CAAA,IAAU,CAAC,yBAAyB,CAAA;AAAA,EACrE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAmC;AAC/D,IAAA,qBAAA,CAAsB,iCACjB,kBAAA,CAAA,EADiB;AAAA,MAEpB,WAAW,cAAA,CAAA,EAAA,EAAK,KAAA;AAAA,KAClB,CAAC,CAAA;AACD,IAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,aAAA,GAAA,CAAgB,eAAA,IAAA,IAAA,GAAA,MAAA,GAAA,eAAA,CAAiB,MAAA,KAAU,CAAC,SAAA,IAAa,yBAAA;AAE/D,EAAA,oDACG,cAAA,EAAA,EAAe,eAAA,EAAA,+CACf,YAAA,EAAA,IAAA,kBACCA,cAAA,CAAA,aAAA,CAAC,UAAO,QAAA,EAAU,GAAA,EAAO,mBACzBA,cAAA,CAAA,aAAA,CAAC,GAAA,EAAA,EAAI,KAAK,EAAE,MAAA,EAAQ,uBAAuB,KAAA,EAAO,OAAA,MAC/C,aAAA,mBACCA,cAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,oBAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,OAAA,EAAS;AAAA;AAAA,GACX,mBAEAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EACG,SAAA,oBACCA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,kBAAA;AAAA,MACA,sBAAA;AAAA,MACA,aAAA;AAAA,MACA,oBAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AAAA,GACF,EACC,CAAC,oBAAA,mBACAA,cAAA,CAAA,aAAA;AAAA,IAAC,sBAAA;AAAA,IAAA;AAAA,MACC,kBAAA;AAAA,MACA,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AAAA,GACF,mBAEAA,cAAA,CAAA,aAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,oBAAA;AAAA,MACA,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA;AAAA,GAGN,CAEJ,CAEJ,CACF,CACA,CAAA;AAEJ;;;;"}
|
|
@@ -345,30 +345,7 @@ const Trigger = ({
|
|
|
345
345
|
},
|
|
346
346
|
options: variableOptions
|
|
347
347
|
}
|
|
348
|
-
)), (
|
|
349
|
-
Select,
|
|
350
|
-
{
|
|
351
|
-
placeholder: "",
|
|
352
|
-
size: "lg",
|
|
353
|
-
isClearable: false,
|
|
354
|
-
value: selectedContactUniqueOption,
|
|
355
|
-
onChange: handleContactUniqueFieldChange,
|
|
356
|
-
css: {
|
|
357
|
-
p: {
|
|
358
|
-
fontFamily: "'Roboto Mono', monospace !important"
|
|
359
|
-
},
|
|
360
|
-
" .twigs-select__indicators": {
|
|
361
|
-
height: "40px"
|
|
362
|
-
},
|
|
363
|
-
"& .twigs-select__control": {
|
|
364
|
-
overflow: "auto",
|
|
365
|
-
maxHeight: 488,
|
|
366
|
-
height: "100%"
|
|
367
|
-
}
|
|
368
|
-
},
|
|
369
|
-
options: variableOptions
|
|
370
|
-
}
|
|
371
|
-
)) : null) : null, showPassAndSendSections ? /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$12", css: { marginBlock: "$40" } }, /* @__PURE__ */ React__default.createElement(Heading, { size: "h5" }, "Send Survey"), /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$8" }, /* @__PURE__ */ React__default.createElement(Flex, { gap: "$2", flexDirection: "column" }, /* @__PURE__ */ React__default.createElement(FormLabel, { size: "xs", css: { fontWeight: "$5" } }, "Choose Share Type"), /* @__PURE__ */ React__default.createElement(
|
|
348
|
+
))) : null, showPassAndSendSections ? /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$12", css: { marginBlock: "$40" } }, /* @__PURE__ */ React__default.createElement(Heading, { size: "h5" }, "Send Survey"), /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$8" }, /* @__PURE__ */ React__default.createElement(Flex, { gap: "$2", flexDirection: "column" }, /* @__PURE__ */ React__default.createElement(FormLabel, { size: "xs", css: { fontWeight: "$5" } }, "Choose Share Type"), /* @__PURE__ */ React__default.createElement(
|
|
372
349
|
Select,
|
|
373
350
|
{
|
|
374
351
|
placeholder: "",
|
|
@@ -403,7 +380,30 @@ const Trigger = ({
|
|
|
403
380
|
}
|
|
404
381
|
]
|
|
405
382
|
}
|
|
406
|
-
)),
|
|
383
|
+
)), (contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.hasUniqueConstraint) ? /* @__PURE__ */ React__default.createElement(Flex, { gap: "$2", flexDirection: "column" }, /* @__PURE__ */ React__default.createElement(FormLabel, { size: "xs", css: { fontWeight: "$5" } }, `Contact Uniqueness Field for "${contactUniqueConstraint.label}"`), /* @__PURE__ */ React__default.createElement(
|
|
384
|
+
Select,
|
|
385
|
+
{
|
|
386
|
+
placeholder: "",
|
|
387
|
+
size: "lg",
|
|
388
|
+
isClearable: false,
|
|
389
|
+
value: selectedContactUniqueOption,
|
|
390
|
+
onChange: handleContactUniqueFieldChange,
|
|
391
|
+
css: {
|
|
392
|
+
p: {
|
|
393
|
+
fontFamily: "'Roboto Mono', monospace !important"
|
|
394
|
+
},
|
|
395
|
+
" .twigs-select__indicators": {
|
|
396
|
+
height: "40px"
|
|
397
|
+
},
|
|
398
|
+
"& .twigs-select__control": {
|
|
399
|
+
overflow: "auto",
|
|
400
|
+
maxHeight: 488,
|
|
401
|
+
height: "100%"
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
options: variableOptions
|
|
405
|
+
}
|
|
406
|
+
)) : null, !isEmpty(triggerDetails == null ? void 0 : triggerDetails.shareType) && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Flex, { gap: "$2", flexDirection: "column" }, /* @__PURE__ */ React__default.createElement(FormLabel, { size: "xs", css: { fontWeight: "$5" } }, "Choose Recipient"), /* @__PURE__ */ React__default.createElement(
|
|
407
407
|
Select,
|
|
408
408
|
{
|
|
409
409
|
placeholder: "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.js","sources":["../../../../src/triggers/components/trigger.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport {\n Box,\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Flex,\n FormLabel,\n Heading,\n Select,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport { ChevronDownIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { topLevelCondition } from \"../constants\";\nimport { Filter } from \"./subcomponents\";\nimport {\n CustomShareOption,\n CustomSingleValue,\n CustomMultiValue,\n CustomShareChannelOption,\n CustomShareChannelSingleValue,\n} from \"./custom-share-components\";\nimport { useTriggerState, useFilterManagement, useChannelData } from \"../hooks\";\nimport { hasFiltersWithValues as checkFiltersHaveValues } from \"../utils\";\nimport { isEmpty } from \"../utils\";\nimport { ContactUniqueConstraint } from \"../types\";\nimport { CustomConditions } from \"../../commons/constants/operator-options\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\n\n/* ----- Types / Interfaces ----- */\n\ntype TriggerProps = {\n fields: any;\n setFields: (fields: any) => void;\n token: string;\n apiURL: string;\n surveyDetails: any;\n hasNestedCondition: boolean;\n shareRecipientOptions: any[];\n shareChannelOptions: any[];\n triggerDetails: any;\n setTriggerDetails: (details: any) => void;\n fieldOptions: any[];\n variableOptions: any[];\n contactUniqueConstraint?: ContactUniqueConstraint;\n customConditions?: CustomConditions;\n isLoading?: boolean;\n /**\n * Opt-in (default off/undefined = current behavior). When true, the\n * \"Pass Variable to Survey\" and \"Send Survey\" sections are always visible\n * instead of staying hidden until a condition has a value โ so users know\n * they exist. See CL-5.\n */\n alwaysShowPassAndSendSections?: boolean;\n};\n\n/* ----- Main Component ----- */\n\n/**\n * Trigger component for setting up trigger conditions and actions\n *\n * @param {TriggerProps} props - Component props\n * @returns {JSX.Element} Rendered Trigger component\n */\nconst Trigger: React.FC<TriggerProps> = ({\n fields,\n setFields,\n token,\n apiURL,\n hasNestedCondition,\n surveyDetails,\n shareRecipientOptions,\n shareChannelOptions,\n triggerDetails,\n setTriggerDetails,\n fieldOptions,\n variableOptions,\n contactUniqueConstraint,\n customConditions,\n alwaysShowPassAndSendSections,\n}) => {\n /* ----- Hooks ----- */\n\n const { isEditing, setIsEditing } = useTriggerState();\n\n const {\n addFilterCondition,\n addNestedFilterCondition,\n setCurrentField,\n removeCurrentFilter,\n removeNestedField,\n setNestedFieldCondition,\n } = useFilterManagement({\n setFields,\n setIsEditing,\n });\n\n const { channels } = useChannelData({\n token,\n apiURL,\n surveyId: surveyDetails?.surveyId,\n shareChannelOptions,\n });\n\n const hasFiltersWithValues = useMemo(\n () => checkFiltersHaveValues(fields),\n [fields]\n );\n\n const [passAndSendSectionsUnlocked, setPassAndSendSectionsUnlocked] =\n useState(false);\n\n useEffect(() => {\n if (hasFiltersWithValues) {\n setPassAndSendSectionsUnlocked(true);\n }\n }, [hasFiltersWithValues]);\n\n useEffect(() => {\n if (!fields?.filters?.length) {\n setPassAndSendSectionsUnlocked(false);\n }\n }, [fields?.filters?.length]);\n\n const showPassAndSendSections =\n alwaysShowPassAndSendSections ||\n passAndSendSectionsUnlocked ||\n hasFiltersWithValues;\n\n /* ----- Constants ----- */\n\n const selectedCondition = useMemo(\n () =>\n topLevelCondition.find(\n (condition) => condition.value === fields.condition\n )?.label,\n [fields.condition]\n );\n\n const filteredShareRecipientOptions = useMemo(\n () =>\n shareRecipientOptions?.filter(\n (option: any) => option?.type === triggerDetails.shareType?.value\n ),\n [shareRecipientOptions, triggerDetails.shareType?.value]\n );\n\n const filteredShareChannelOptions = useMemo(() => {\n const filtered = channels.filter(\n (channel: any) => channel?.type === triggerDetails?.shareType?.value\n );\n if (filtered.length) {\n return filtered;\n }\n if (\n triggerDetails?.shareType?.value !== \"WHATSAPP\" &&\n triggerDetails?.shareType?.value !== \"SMS\"\n ) {\n return [\n {\n label: \"New Share \",\n value: \"NEW_SHARE\",\n },\n ];\n }\n return [];\n }, [channels, triggerDetails?.shareType?.value]);\n\n /* ----- Event Handlers ----- */\n\n const setTriggerFields = useCallback(\n (property: string, value: any) => {\n setTriggerDetails((prev: any) => ({\n ...prev,\n [property]: value,\n }));\n },\n [setTriggerDetails]\n );\n\n const handleConditionChange = useCallback(\n (conditionValue: string) => {\n setFields((prev: any) => ({\n ...prev,\n condition: conditionValue,\n }));\n },\n [setFields]\n );\n\n const handleAddConditionClick = useCallback(() => {\n setIsEditing(true);\n addFilterCondition();\n }, [setIsEditing, addFilterCondition]);\n\n const handleVariablesChange = useCallback(\n (field: any) => {\n setTriggerFields(\"variables\", field);\n },\n [setTriggerFields]\n );\n\n const handleShareTypeChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareType\", field);\n setTriggerFields(\"shareRecipient\", null);\n setTriggerFields(\"shareChannel\", null);\n },\n [setTriggerFields]\n );\n\n const handleShareRecipientChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareRecipient\", field);\n },\n [setTriggerFields]\n );\n\n const handleShareChannelChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareChannel\", field);\n },\n [setTriggerFields]\n );\n\n const handleContactUniqueFieldChange = useCallback(\n (field: any) => {\n const constraintKey = contactUniqueConstraint?.value;\n if (!constraintKey) return;\n setTriggerFields(\n \"contactUniqueField\",\n field?.value ? { [constraintKey]: field.value } : null\n );\n },\n [setTriggerFields, contactUniqueConstraint?.value]\n );\n\n const selectedContactUniqueOption = useMemo(() => {\n const constraintKey = contactUniqueConstraint?.value;\n const stored = triggerDetails?.contactUniqueField;\n if (!constraintKey || !stored) return null;\n const variableValue = stored[constraintKey];\n if (!variableValue) return null;\n return (\n variableOptions?.find((option: any) => option?.value === variableValue) ??\n null\n );\n }, [\n contactUniqueConstraint?.value,\n triggerDetails?.contactUniqueField,\n variableOptions,\n ]);\n\n const resetEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n const { tid } = useTestId();\n\n /* ----- Render ----- */\n\n return (\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n css={{ marginTop: \"$40\" }}\n >\n <Box css={{ maxWidth: 488, width: \"100%\" }}>\n <Heading size=\"h5\">Set Condition</Heading>\n <Flex alignItems=\"center\" css={{ marginTop: \"$12\" }}>\n <Text\n size=\"md\"\n css={{ color: \"$neutral700\", display: \"inline-flex\" }}\n >\n which meets{\" \"}\n </Text>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Flex\n data-testid={tid('condition-selector')}\n alignItems=\"center\"\n css={{\n margin: \"0 $2\",\n }}\n >\n <Text\n size=\"md\"\n weight=\"medium\"\n css={{ color: \"$neutral900\", lineHeight: \"$sm\" }}\n >\n {selectedCondition}\n </Text>\n <ChevronDownIcon size={16} color=\"#6A6A6A\" />\n </Flex>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n sideOffset={5}\n css={{\n padding: \"$4 0\",\n minWidth: \"$15\",\n }}\n >\n {topLevelCondition.map((condition) => (\n <DropdownMenuItem\n key={condition.value}\n data-testid={tid(`condition-option-${condition.value}`)}\n onClick={() => handleConditionChange(condition.value)}\n css={{\n ...(condition.value === fields.condition && {\n background: \"$primary100\",\n color: \"$neutral900\",\n \"&:hover\": {\n background: \"$primary100\",\n color: \"$neutral900\",\n },\n }),\n }}\n >\n {condition.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n <Text\n size=\"md\"\n css={{ color: \"$neutral700\", display: \"inline-flex\" }}\n >\n of these conditions\n </Text>\n </Flex>\n <Flex\n flexDirection=\"column\"\n gap=\"$12\"\n css={{ marginTop: fields?.filters?.length ? \"$12\" : 0 }}\n >\n {fields?.filters?.map((filters: any, index: number) => (\n <Filter\n key={filters.id}\n filters={filters}\n fields={fields}\n hasNestedCondition={hasNestedCondition}\n index={index}\n isEditing={isEditing}\n setIsEditing={setIsEditing}\n setCurrentField={setCurrentField}\n resetEditing={resetEditing}\n addNestedFilterCondition={addNestedFilterCondition}\n setNestedFieldCondition={setNestedFieldCondition}\n removeCurrentFilter={removeCurrentFilter}\n removeNestedField={removeNestedField}\n fieldOptions={fieldOptions}\n customConditions={customConditions}\n />\n ))}\n </Flex>\n <Button\n data-testid={tid('add-condition')}\n css={{ marginTop: \"$8\", marginLeft: \"-$2\" }}\n leftIcon={<PlusIcon />}\n variant=\"ghost\"\n size=\"md\"\n onClick={handleAddConditionClick}\n >\n Add Condition\n </Button>\n {showPassAndSendSections ? (\n <Flex flexDirection=\"column\" gap=\"$12\" css={{ marginTop: \"$40\" }}>\n <Heading size=\"h5\">Pass Variable to Survey</Heading>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Fields\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n isMulti\n closeMenuOnSelect={false}\n isClearable={false}\n value={triggerDetails?.variables}\n onChange={handleVariablesChange}\n css={{\n p: {\n fontFamily: \"'Roboto Mono', monospace !important\",\n },\n \" .twigs-select__indicators\": {\n height: \"40px\",\n },\n \"& .twigs-select__control\": {\n overflow: \"auto\",\n maxHeight: 488,\n height: \"100%\",\n },\n \".twigs-select__value-container--is-multi\": {\n gap: \"$2\",\n },\n }}\n components={{\n MultiValue: CustomMultiValue,\n }}\n options={variableOptions}\n />\n </Flex>\n {contactUniqueConstraint?.hasUniqueConstraint ? (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {`Contact Uniqueness Field for \"${contactUniqueConstraint.label}\"`}\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n isClearable={false}\n value={selectedContactUniqueOption}\n onChange={handleContactUniqueFieldChange}\n css={{\n p: {\n fontFamily: \"'Roboto Mono', monospace !important\",\n },\n \" .twigs-select__indicators\": {\n height: \"40px\",\n },\n \"& .twigs-select__control\": {\n overflow: \"auto\",\n maxHeight: 488,\n height: \"100%\",\n },\n }}\n options={variableOptions}\n />\n </Flex>\n ) : null}\n </Flex>\n ) : null}\n {showPassAndSendSections ? (\n <Flex flexDirection=\"column\" gap=\"$12\" css={{ marginBlock: \"$40\" }}>\n <Heading size=\"h5\">Send Survey</Heading>\n <Flex flexDirection=\"column\" gap=\"$8\">\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Share Type\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n components={{\n Option: CustomShareOption,\n SingleValue: CustomSingleValue,\n }}\n styles={{\n singleValue: (provided, state) => ({\n ...provided,\n display: \"flex\",\n alignItems: \"center\",\n }),\n }}\n value={triggerDetails?.shareType}\n onChange={handleShareTypeChange}\n options={[\n {\n id: 1,\n label: \"Email\",\n value: \"EMAIL\",\n },\n {\n id: 2,\n label: \"SMS\",\n value: \"SMS\",\n },\n {\n id: 3,\n label: \"Whatsapp\",\n value: \"WHATSAPP\",\n },\n ]}\n />\n </Flex>\n {!isEmpty(triggerDetails?.shareType) && (\n <>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Recipient\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n onChange={handleShareRecipientChange}\n isDisabled={!triggerDetails?.shareType?.value}\n value={triggerDetails?.shareRecipient}\n options={filteredShareRecipientOptions}\n />\n </Flex>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Share Channel\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n components={{\n Option: CustomShareChannelOption,\n SingleValue: CustomShareChannelSingleValue,\n }}\n styles={{\n singleValue: (provided, state) => ({\n ...provided,\n display: \"flex\",\n alignItems: \"center\",\n }),\n }}\n isDisabled={!triggerDetails?.shareType?.value}\n value={triggerDetails?.shareChannel}\n onChange={handleShareChannelChange}\n options={filteredShareChannelOptions}\n />\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n ) : null}\n </Box>\n </Flex>\n );\n};\n\nexport default Trigger;"],"names":["hasFiltersWithValues","checkFiltersHaveValues","_a","_b","React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trigger.js","sources":["../../../../src/triggers/components/trigger.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport {\n Box,\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Flex,\n FormLabel,\n Heading,\n Select,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport { ChevronDownIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { topLevelCondition } from \"../constants\";\nimport { Filter } from \"./subcomponents\";\nimport {\n CustomShareOption,\n CustomSingleValue,\n CustomMultiValue,\n CustomShareChannelOption,\n CustomShareChannelSingleValue,\n} from \"./custom-share-components\";\nimport { useTriggerState, useFilterManagement, useChannelData } from \"../hooks\";\nimport { hasFiltersWithValues as checkFiltersHaveValues } from \"../utils\";\nimport { isEmpty } from \"../utils\";\nimport { ContactUniqueConstraint } from \"../types\";\nimport { CustomConditions } from \"../../commons/constants/operator-options\";\nimport { useTestId } from \"../../commons/context/test-id.context\";\n\n/* ----- Types / Interfaces ----- */\n\ntype TriggerProps = {\n fields: any;\n setFields: (fields: any) => void;\n token: string;\n apiURL: string;\n surveyDetails: any;\n hasNestedCondition: boolean;\n shareRecipientOptions: any[];\n shareChannelOptions: any[];\n triggerDetails: any;\n setTriggerDetails: (details: any) => void;\n fieldOptions: any[];\n variableOptions: any[];\n contactUniqueConstraint?: ContactUniqueConstraint;\n customConditions?: CustomConditions;\n isLoading?: boolean;\n /**\n * Opt-in (default off/undefined = current behavior). When true, the\n * \"Pass Variable to Survey\" and \"Send Survey\" sections are always visible\n * instead of staying hidden until a condition has a value โ so users know\n * they exist. See CL-5.\n */\n alwaysShowPassAndSendSections?: boolean;\n};\n\n/* ----- Main Component ----- */\n\n/**\n * Trigger component for setting up trigger conditions and actions\n *\n * @param {TriggerProps} props - Component props\n * @returns {JSX.Element} Rendered Trigger component\n */\nconst Trigger: React.FC<TriggerProps> = ({\n fields,\n setFields,\n token,\n apiURL,\n hasNestedCondition,\n surveyDetails,\n shareRecipientOptions,\n shareChannelOptions,\n triggerDetails,\n setTriggerDetails,\n fieldOptions,\n variableOptions,\n contactUniqueConstraint,\n customConditions,\n alwaysShowPassAndSendSections,\n}) => {\n /* ----- Hooks ----- */\n\n const { isEditing, setIsEditing } = useTriggerState();\n\n const {\n addFilterCondition,\n addNestedFilterCondition,\n setCurrentField,\n removeCurrentFilter,\n removeNestedField,\n setNestedFieldCondition,\n } = useFilterManagement({\n setFields,\n setIsEditing,\n });\n\n const { channels } = useChannelData({\n token,\n apiURL,\n surveyId: surveyDetails?.surveyId,\n shareChannelOptions,\n });\n\n const hasFiltersWithValues = useMemo(\n () => checkFiltersHaveValues(fields),\n [fields]\n );\n\n const [passAndSendSectionsUnlocked, setPassAndSendSectionsUnlocked] =\n useState(false);\n\n useEffect(() => {\n if (hasFiltersWithValues) {\n setPassAndSendSectionsUnlocked(true);\n }\n }, [hasFiltersWithValues]);\n\n useEffect(() => {\n if (!fields?.filters?.length) {\n setPassAndSendSectionsUnlocked(false);\n }\n }, [fields?.filters?.length]);\n\n const showPassAndSendSections =\n alwaysShowPassAndSendSections ||\n passAndSendSectionsUnlocked ||\n hasFiltersWithValues;\n\n /* ----- Constants ----- */\n\n const selectedCondition = useMemo(\n () =>\n topLevelCondition.find(\n (condition) => condition.value === fields.condition\n )?.label,\n [fields.condition]\n );\n\n const filteredShareRecipientOptions = useMemo(\n () =>\n shareRecipientOptions?.filter(\n (option: any) => option?.type === triggerDetails.shareType?.value\n ),\n [shareRecipientOptions, triggerDetails.shareType?.value]\n );\n\n const filteredShareChannelOptions = useMemo(() => {\n const filtered = channels.filter(\n (channel: any) => channel?.type === triggerDetails?.shareType?.value\n );\n if (filtered.length) {\n return filtered;\n }\n if (\n triggerDetails?.shareType?.value !== \"WHATSAPP\" &&\n triggerDetails?.shareType?.value !== \"SMS\"\n ) {\n return [\n {\n label: \"New Share \",\n value: \"NEW_SHARE\",\n },\n ];\n }\n return [];\n }, [channels, triggerDetails?.shareType?.value]);\n\n /* ----- Event Handlers ----- */\n\n const setTriggerFields = useCallback(\n (property: string, value: any) => {\n setTriggerDetails((prev: any) => ({\n ...prev,\n [property]: value,\n }));\n },\n [setTriggerDetails]\n );\n\n const handleConditionChange = useCallback(\n (conditionValue: string) => {\n setFields((prev: any) => ({\n ...prev,\n condition: conditionValue,\n }));\n },\n [setFields]\n );\n\n const handleAddConditionClick = useCallback(() => {\n setIsEditing(true);\n addFilterCondition();\n }, [setIsEditing, addFilterCondition]);\n\n const handleVariablesChange = useCallback(\n (field: any) => {\n setTriggerFields(\"variables\", field);\n },\n [setTriggerFields]\n );\n\n const handleShareTypeChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareType\", field);\n setTriggerFields(\"shareRecipient\", null);\n setTriggerFields(\"shareChannel\", null);\n },\n [setTriggerFields]\n );\n\n const handleShareRecipientChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareRecipient\", field);\n },\n [setTriggerFields]\n );\n\n const handleShareChannelChange = useCallback(\n (field: any) => {\n setTriggerFields(\"shareChannel\", field);\n },\n [setTriggerFields]\n );\n\n const handleContactUniqueFieldChange = useCallback(\n (field: any) => {\n const constraintKey = contactUniqueConstraint?.value;\n if (!constraintKey) return;\n setTriggerFields(\n \"contactUniqueField\",\n field?.value ? { [constraintKey]: field.value } : null\n );\n },\n [setTriggerFields, contactUniqueConstraint?.value]\n );\n\n const selectedContactUniqueOption = useMemo(() => {\n const constraintKey = contactUniqueConstraint?.value;\n const stored = triggerDetails?.contactUniqueField;\n if (!constraintKey || !stored) return null;\n const variableValue = stored[constraintKey];\n if (!variableValue) return null;\n return (\n variableOptions?.find((option: any) => option?.value === variableValue) ??\n null\n );\n }, [\n contactUniqueConstraint?.value,\n triggerDetails?.contactUniqueField,\n variableOptions,\n ]);\n\n const resetEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n const { tid } = useTestId();\n\n /* ----- Render ----- */\n\n return (\n <Flex\n justifyContent=\"center\"\n alignItems=\"center\"\n css={{ marginTop: \"$40\" }}\n >\n <Box css={{ maxWidth: 488, width: \"100%\" }}>\n <Heading size=\"h5\">Set Condition</Heading>\n <Flex alignItems=\"center\" css={{ marginTop: \"$12\" }}>\n <Text\n size=\"md\"\n css={{ color: \"$neutral700\", display: \"inline-flex\" }}\n >\n which meets{\" \"}\n </Text>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Flex\n data-testid={tid('condition-selector')}\n alignItems=\"center\"\n css={{\n margin: \"0 $2\",\n }}\n >\n <Text\n size=\"md\"\n weight=\"medium\"\n css={{ color: \"$neutral900\", lineHeight: \"$sm\" }}\n >\n {selectedCondition}\n </Text>\n <ChevronDownIcon size={16} color=\"#6A6A6A\" />\n </Flex>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n sideOffset={5}\n css={{\n padding: \"$4 0\",\n minWidth: \"$15\",\n }}\n >\n {topLevelCondition.map((condition) => (\n <DropdownMenuItem\n key={condition.value}\n data-testid={tid(`condition-option-${condition.value}`)}\n onClick={() => handleConditionChange(condition.value)}\n css={{\n ...(condition.value === fields.condition && {\n background: \"$primary100\",\n color: \"$neutral900\",\n \"&:hover\": {\n background: \"$primary100\",\n color: \"$neutral900\",\n },\n }),\n }}\n >\n {condition.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n <Text\n size=\"md\"\n css={{ color: \"$neutral700\", display: \"inline-flex\" }}\n >\n of these conditions\n </Text>\n </Flex>\n <Flex\n flexDirection=\"column\"\n gap=\"$12\"\n css={{ marginTop: fields?.filters?.length ? \"$12\" : 0 }}\n >\n {fields?.filters?.map((filters: any, index: number) => (\n <Filter\n key={filters.id}\n filters={filters}\n fields={fields}\n hasNestedCondition={hasNestedCondition}\n index={index}\n isEditing={isEditing}\n setIsEditing={setIsEditing}\n setCurrentField={setCurrentField}\n resetEditing={resetEditing}\n addNestedFilterCondition={addNestedFilterCondition}\n setNestedFieldCondition={setNestedFieldCondition}\n removeCurrentFilter={removeCurrentFilter}\n removeNestedField={removeNestedField}\n fieldOptions={fieldOptions}\n customConditions={customConditions}\n />\n ))}\n </Flex>\n <Button\n data-testid={tid('add-condition')}\n css={{ marginTop: \"$8\", marginLeft: \"-$2\" }}\n leftIcon={<PlusIcon />}\n variant=\"ghost\"\n size=\"md\"\n onClick={handleAddConditionClick}\n >\n Add Condition\n </Button>\n {showPassAndSendSections ? (\n <Flex flexDirection=\"column\" gap=\"$12\" css={{ marginTop: \"$40\" }}>\n <Heading size=\"h5\">Pass Variable to Survey</Heading>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Fields\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n isMulti\n closeMenuOnSelect={false}\n isClearable={false}\n value={triggerDetails?.variables}\n onChange={handleVariablesChange}\n css={{\n p: {\n fontFamily: \"'Roboto Mono', monospace !important\",\n },\n \" .twigs-select__indicators\": {\n height: \"40px\",\n },\n \"& .twigs-select__control\": {\n overflow: \"auto\",\n maxHeight: 488,\n height: \"100%\",\n },\n \".twigs-select__value-container--is-multi\": {\n gap: \"$2\",\n },\n }}\n components={{\n MultiValue: CustomMultiValue,\n }}\n options={variableOptions}\n />\n </Flex>\n </Flex>\n ) : null}\n {showPassAndSendSections ? (\n <Flex flexDirection=\"column\" gap=\"$12\" css={{ marginBlock: \"$40\" }}>\n <Heading size=\"h5\">Send Survey</Heading>\n <Flex flexDirection=\"column\" gap=\"$8\">\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Share Type\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n components={{\n Option: CustomShareOption,\n SingleValue: CustomSingleValue,\n }}\n styles={{\n singleValue: (provided, state) => ({\n ...provided,\n display: \"flex\",\n alignItems: \"center\",\n }),\n }}\n value={triggerDetails?.shareType}\n onChange={handleShareTypeChange}\n options={[\n {\n id: 1,\n label: \"Email\",\n value: \"EMAIL\",\n },\n {\n id: 2,\n label: \"SMS\",\n value: \"SMS\",\n },\n {\n id: 3,\n label: \"Whatsapp\",\n value: \"WHATSAPP\",\n },\n ]}\n />\n </Flex>\n {contactUniqueConstraint?.hasUniqueConstraint ? (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {`Contact Uniqueness Field for \"${contactUniqueConstraint.label}\"`}\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n isClearable={false}\n value={selectedContactUniqueOption}\n onChange={handleContactUniqueFieldChange}\n css={{\n p: {\n fontFamily: \"'Roboto Mono', monospace !important\",\n },\n \" .twigs-select__indicators\": {\n height: \"40px\",\n },\n \"& .twigs-select__control\": {\n overflow: \"auto\",\n maxHeight: 488,\n height: \"100%\",\n },\n }}\n options={variableOptions}\n />\n </Flex>\n ) : null}\n {!isEmpty(triggerDetails?.shareType) && (\n <>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Recipient\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n onChange={handleShareRecipientChange}\n isDisabled={!triggerDetails?.shareType?.value}\n value={triggerDetails?.shareRecipient}\n options={filteredShareRecipientOptions}\n />\n </Flex>\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n Choose Share Channel\n </FormLabel>\n <Select\n placeholder=\"\"\n size=\"lg\"\n components={{\n Option: CustomShareChannelOption,\n SingleValue: CustomShareChannelSingleValue,\n }}\n styles={{\n singleValue: (provided, state) => ({\n ...provided,\n display: \"flex\",\n alignItems: \"center\",\n }),\n }}\n isDisabled={!triggerDetails?.shareType?.value}\n value={triggerDetails?.shareChannel}\n onChange={handleShareChannelChange}\n options={filteredShareChannelOptions}\n />\n </Flex>\n </>\n )}\n </Flex>\n </Flex>\n ) : null}\n </Box>\n </Flex>\n );\n};\n\nexport default Trigger;"],"names":["hasFiltersWithValues","checkFiltersHaveValues","_a","_b","React"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -403,7 +403,7 @@ type TriggerDetails = {
|
|
|
403
403
|
contactUniqueField?: any;
|
|
404
404
|
[key: string]: any;
|
|
405
405
|
};
|
|
406
|
-
type ContactUniqueConstraint = {
|
|
406
|
+
type ContactUniqueConstraint$1 = {
|
|
407
407
|
id: string;
|
|
408
408
|
value: string;
|
|
409
409
|
label: string;
|
|
@@ -447,7 +447,7 @@ type TriggersProps = {
|
|
|
447
447
|
editField?: EditField;
|
|
448
448
|
fieldOptions: any[];
|
|
449
449
|
variableOptions: any[];
|
|
450
|
-
contactUniqueConstraint?: ContactUniqueConstraint;
|
|
450
|
+
contactUniqueConstraint?: ContactUniqueConstraint$1;
|
|
451
451
|
customConditions?: CustomConditions;
|
|
452
452
|
/** Integration identifier used to generate data-testid="module_{integrationName}_{suffix}" on interactive elements. */
|
|
453
453
|
integrationName?: string;
|
|
@@ -518,6 +518,12 @@ type ContactImportFieldType = {
|
|
|
518
518
|
invitePortal: boolean;
|
|
519
519
|
hasContactImportDashboard?: boolean;
|
|
520
520
|
};
|
|
521
|
+
type ContactUniqueConstraint = {
|
|
522
|
+
id: string;
|
|
523
|
+
value: string;
|
|
524
|
+
label: string;
|
|
525
|
+
hasUniqueConstraint: boolean;
|
|
526
|
+
} | null;
|
|
521
527
|
type ContactImportProps = {
|
|
522
528
|
hasAddCustomProperty?: boolean;
|
|
523
529
|
importName: string;
|
|
@@ -540,6 +546,7 @@ type ContactImportProps = {
|
|
|
540
546
|
integrationName: string;
|
|
541
547
|
contactProperties: Array<ContactProperty>;
|
|
542
548
|
hasContactImportDashboard?: boolean;
|
|
549
|
+
contactUniqueConstraint?: ContactUniqueConstraint;
|
|
543
550
|
invitePortal: {
|
|
544
551
|
hasInvitePortal: boolean;
|
|
545
552
|
value: boolean | null;
|