@sparrowengg/integrations-templates-frontend 7.0.0-bulkify.8 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/contact-import/components/ContactImportHeader.js +12 -3
- package/dist/cjs/contact-import/components/ContactImportHeader.js.map +1 -1
- package/dist/cjs/contact-import/components/contact-import-mapping.js +35 -17
- package/dist/cjs/contact-import/components/contact-import-mapping.js.map +1 -1
- package/dist/cjs/node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js +173 -0
- package/dist/cjs/node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js.map +1 -0
- package/dist/es/contact-import/components/ContactImportHeader.js +12 -3
- package/dist/es/contact-import/components/ContactImportHeader.js.map +1 -1
- package/dist/es/contact-import/components/contact-import-mapping.js +35 -17
- package/dist/es/contact-import/components/contact-import-mapping.js.map +1 -1
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js +170 -0
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js.map +1 -0
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ var iconButton = require('../../node_modules/@sparrowengg/twigs-react/dist/es/bu
|
|
|
9
9
|
var arrowLeft = require('../../node_modules/@sparrowengg/twigs-react-icons/dist/es/icons/arrow-left.js');
|
|
10
10
|
var heading = require('../../node_modules/@sparrowengg/twigs-react/dist/es/heading/heading.js');
|
|
11
11
|
var button = require('../../node_modules/@sparrowengg/twigs-react/dist/es/button/button.js');
|
|
12
|
+
var useToast = require('../../node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js');
|
|
12
13
|
|
|
13
14
|
const ContactImportHeader = ({
|
|
14
15
|
importName,
|
|
@@ -23,7 +24,7 @@ const ContactImportHeader = ({
|
|
|
23
24
|
navigateMappingPage,
|
|
24
25
|
invitePortal
|
|
25
26
|
}) => {
|
|
26
|
-
var _a
|
|
27
|
+
var _a;
|
|
27
28
|
const [showImportModal, setShowImportModal] = React.useState(false);
|
|
28
29
|
const handleBackClick = () => {
|
|
29
30
|
setNewImport(false);
|
|
@@ -35,6 +36,16 @@ const ContactImportHeader = ({
|
|
|
35
36
|
}
|
|
36
37
|
};
|
|
37
38
|
const handleContinueMapping = () => {
|
|
39
|
+
var _a2;
|
|
40
|
+
if (!((_a2 = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a2.some(
|
|
41
|
+
(field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
|
|
42
|
+
))) {
|
|
43
|
+
useToast.toast({
|
|
44
|
+
variant: "error",
|
|
45
|
+
title: "Please map Email or mobile or uniqueId field"
|
|
46
|
+
});
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
38
49
|
setShowImportModal(true);
|
|
39
50
|
};
|
|
40
51
|
const handleSaveAndClose = async (importName2) => {
|
|
@@ -108,8 +119,6 @@ const ContactImportHeader = ({
|
|
|
108
119
|
{
|
|
109
120
|
disabled: !((_a = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a.some(
|
|
110
121
|
(field) => (field == null ? void 0 : field.integrationField) && (field == null ? void 0 : field.surveySparrowField)
|
|
111
|
-
)) || !((_b = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _b.some(
|
|
112
|
-
(field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
|
|
113
122
|
)),
|
|
114
123
|
size: "lg",
|
|
115
124
|
onClick: handleContinueMapping,
|
|
@@ -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} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\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 [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 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 />\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 >\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 disabled={\n !contactImportField?.fields?.some(\n (field) => field?.integrationField && field?.surveySparrowField\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 { 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 [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 if(!contactImportField?.fields?.some(\n (field) =>\n field?.surveySparrowField === 'email' || field?.surveySparrowField === 'mobile'\n )){\n toast({\n variant: 'error',\n title: 'Please map Email or mobile or uniqueId field'\n });\n return\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 />\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 >\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 disabled={\n !contactImportField?.fields?.some(\n (field) => field?.integrationField && field?.surveySparrowField\n )\n }\n size=\"lg\"\n onClick={handleContinueMapping}\n css={{ visibility: isContactMappingPage ? \"visible\" : \"hidden\"}}\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":["useState","_a","toast","importName","Flex","IconButton","ArrowLeftIcon","Heading","CONTACT_IMPORT_UI_STRINGS","Button","Arrow","ContactImportModal"],"mappings":"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"}
|
|
@@ -52,6 +52,7 @@ const ContactImportMapping = ({
|
|
|
52
52
|
}) => {
|
|
53
53
|
const customPropertyRef = React.useRef(null);
|
|
54
54
|
const initialRenderRef = React.useRef(true);
|
|
55
|
+
const orderRef = React.useRef([]);
|
|
55
56
|
React.useEffect(() => {
|
|
56
57
|
if (!initialRenderRef.current && (customPropertyRef == null ? void 0 : customPropertyRef.current)) {
|
|
57
58
|
customPropertyRef.current.scrollIntoView({
|
|
@@ -92,6 +93,31 @@ const ContactImportMapping = ({
|
|
|
92
93
|
fields: prev.fields.filter((field) => field.id !== id)
|
|
93
94
|
}));
|
|
94
95
|
};
|
|
96
|
+
const currentIds = contactImportField.fields.map((field) => field.id);
|
|
97
|
+
orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));
|
|
98
|
+
if (orderRef.current.length === 0 && currentIds.length) {
|
|
99
|
+
orderRef.current = [...contactImportField.fields].sort((a, b) => {
|
|
100
|
+
const aIsAutoMapped = !a.mapped && a.surveySparrowField;
|
|
101
|
+
const bIsAutoMapped = !b.mapped && b.surveySparrowField;
|
|
102
|
+
if (aIsAutoMapped && !bIsAutoMapped)
|
|
103
|
+
return -1;
|
|
104
|
+
if (!aIsAutoMapped && bIsAutoMapped)
|
|
105
|
+
return 1;
|
|
106
|
+
const aIsManuallyMapped = a.mapped && a.surveySparrowField;
|
|
107
|
+
const bIsManuallyMapped = b.mapped && b.surveySparrowField;
|
|
108
|
+
if (aIsManuallyMapped && !bIsManuallyMapped)
|
|
109
|
+
return -1;
|
|
110
|
+
if (!aIsManuallyMapped && bIsManuallyMapped)
|
|
111
|
+
return 1;
|
|
112
|
+
return 0;
|
|
113
|
+
}).map((field) => field.id);
|
|
114
|
+
} else {
|
|
115
|
+
currentIds.forEach((id) => {
|
|
116
|
+
if (!orderRef.current.includes(id))
|
|
117
|
+
orderRef.current.push(id);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
const orderedFields = orderRef.current.map((id) => contactImportField.fields.find((field) => field.id === id)).filter((field) => Boolean(field));
|
|
95
121
|
return /* @__PURE__ */ React.createElement(flex.Flex, { justifyContent: "center" }, /* @__PURE__ */ React.createElement(box.Box, { css: { marginTop: "$40", maxWidth: "90%", width: "100%" } }, /* @__PURE__ */ React.createElement(box.Box, { css: { paddingLeft: "$28" } }, /* @__PURE__ */ React.createElement(heading.Heading, { size: "h5" }, "Map Contact Properties"), /* @__PURE__ */ React.createElement(text.Text, { css: { marginTop: "$4", color: "$neutral600" }, size: "md" }, "Review these mappings before importing. Unmapped columns will be ignored.")), /* @__PURE__ */ React.createElement(
|
|
96
122
|
box.Box,
|
|
97
123
|
{
|
|
@@ -111,25 +137,12 @@ const ContactImportMapping = ({
|
|
|
111
137
|
width: "100%",
|
|
112
138
|
background: "$white900",
|
|
113
139
|
borderRadius: "5px",
|
|
114
|
-
borderCollapse: "collapse"
|
|
140
|
+
borderCollapse: "collapse",
|
|
141
|
+
marginLeft: "-14px !important"
|
|
115
142
|
}
|
|
116
143
|
},
|
|
117
|
-
/* @__PURE__ */ React.createElement(table.Thead, { css: { zIndex: 5, position: "sticky", top: "-
|
|
118
|
-
/* @__PURE__ */ React.createElement(table.Tbody, null,
|
|
119
|
-
const aIsAutoMapped = !a.mapped && a.surveySparrowField;
|
|
120
|
-
const bIsAutoMapped = !b.mapped && b.surveySparrowField;
|
|
121
|
-
if (aIsAutoMapped && !bIsAutoMapped)
|
|
122
|
-
return -1;
|
|
123
|
-
if (!aIsAutoMapped && bIsAutoMapped)
|
|
124
|
-
return 1;
|
|
125
|
-
const aIsManuallyMapped = a.mapped && a.surveySparrowField;
|
|
126
|
-
const bIsManuallyMapped = b.mapped && b.surveySparrowField;
|
|
127
|
-
if (aIsManuallyMapped && !bIsManuallyMapped)
|
|
128
|
-
return -1;
|
|
129
|
-
if (!aIsManuallyMapped && bIsManuallyMapped)
|
|
130
|
-
return 1;
|
|
131
|
-
return 0;
|
|
132
|
-
}).map((field) => {
|
|
144
|
+
/* @__PURE__ */ React.createElement(table.Thead, { css: { zIndex: 5, position: "sticky", top: "-32px" } }, /* @__PURE__ */ React.createElement(table.Th, null, `${integrationName} Profile Fields Data`), /* @__PURE__ */ React.createElement(table.Th, { css: { borderLeft: "$borderWidths$xs solid $neutral100" } }, "SurveySparrow Mapping")),
|
|
145
|
+
/* @__PURE__ */ React.createElement(table.Tbody, null, orderedFields.map((field) => {
|
|
133
146
|
var _a, _b;
|
|
134
147
|
const hasSurveyFieldValue = contactProperties.some(
|
|
135
148
|
(contact) => contact.value === field.surveySparrowField
|
|
@@ -176,6 +189,7 @@ const ContactImportMapping = ({
|
|
|
176
189
|
))), /* @__PURE__ */ React.createElement(
|
|
177
190
|
table.Td,
|
|
178
191
|
{
|
|
192
|
+
className: "dm-sans",
|
|
179
193
|
css: {
|
|
180
194
|
width: 560,
|
|
181
195
|
borderLeft: "$borderWidths$xs solid $neutral100"
|
|
@@ -185,9 +199,13 @@ const ContactImportMapping = ({
|
|
|
185
199
|
select.Select,
|
|
186
200
|
{
|
|
187
201
|
size: "lg",
|
|
202
|
+
className: "dm-sans",
|
|
188
203
|
placeholder: "--Choose Property--",
|
|
189
204
|
isClearable: true,
|
|
190
205
|
menuPortalTarget: document.body,
|
|
206
|
+
menuPlacement: "auto",
|
|
207
|
+
menuShouldScrollIntoView: false,
|
|
208
|
+
closeMenuOnScroll: (e) => !(e.target instanceof Element && e.target.closest('[class*="menu-list"]')),
|
|
191
209
|
styles: {
|
|
192
210
|
menuPortal: (base) => __spreadProps(__spreadValues({}, base), {
|
|
193
211
|
zIndex: 9999
|
|
@@ -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 { 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 customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\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 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 }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-31px\" }}>\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 {[...contactImportField.fields]\n .sort((a, b) => {\n // Automatically mapped (not manually mapped and has surveySparrowField) come first\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n \n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n \n // Then manually mapped\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n \n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n \n // Keep original order for items in the same category\n return 0;\n })\n .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 />\n </Box>\n )}\n </Td>\n <Td\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\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 >\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":["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 { 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 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 />\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 >\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":["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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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('react');
|
|
4
|
+
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __defProps = Object.defineProperties;
|
|
7
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
11
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
+
var __spreadValues = (a, b) => {
|
|
13
|
+
for (var prop in b || (b = {}))
|
|
14
|
+
if (__hasOwnProp.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
if (__getOwnPropSymbols)
|
|
17
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
18
|
+
if (__propIsEnum.call(b, prop))
|
|
19
|
+
__defNormalProp(a, prop, b[prop]);
|
|
20
|
+
}
|
|
21
|
+
return a;
|
|
22
|
+
};
|
|
23
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
24
|
+
var __objRest = (source, exclude) => {
|
|
25
|
+
var target = {};
|
|
26
|
+
for (var prop in source)
|
|
27
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
28
|
+
target[prop] = source[prop];
|
|
29
|
+
if (source != null && __getOwnPropSymbols)
|
|
30
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
31
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
32
|
+
target[prop] = source[prop];
|
|
33
|
+
}
|
|
34
|
+
return target;
|
|
35
|
+
};
|
|
36
|
+
const TOAST_REMOVE_DELAY = 1e4;
|
|
37
|
+
let count = 0;
|
|
38
|
+
function generareId() {
|
|
39
|
+
count = (count + 1) % Number.MAX_VALUE;
|
|
40
|
+
return count.toString();
|
|
41
|
+
}
|
|
42
|
+
const toastTimeouts = /* @__PURE__ */ new Map();
|
|
43
|
+
let memoryState = { toasts: [] };
|
|
44
|
+
const listeners = [];
|
|
45
|
+
function reducer(state, action) {
|
|
46
|
+
switch (action.type) {
|
|
47
|
+
case "ADD_TOAST":
|
|
48
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
49
|
+
toasts: [action.toast, ...state.toasts]
|
|
50
|
+
});
|
|
51
|
+
case "UPDATE_TOAST":
|
|
52
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
53
|
+
toasts: state.toasts.map((t) => t.id === action.toast.id ? __spreadValues(__spreadValues({}, t), action.toast) : t)
|
|
54
|
+
});
|
|
55
|
+
case "UPSERT_TOAST": {
|
|
56
|
+
const { toast: toast2 } = action;
|
|
57
|
+
return state.toasts.find((t) => t.id === toast2.id) ? reducer(state, { type: "UPDATE_TOAST", toast: toast2 }) : reducer(state, { type: "ADD_TOAST", toast: toast2 });
|
|
58
|
+
}
|
|
59
|
+
case "DISMISS_TOAST": {
|
|
60
|
+
const { toastId } = action;
|
|
61
|
+
if (toastId) {
|
|
62
|
+
addToRemoveQueue(toastId);
|
|
63
|
+
} else {
|
|
64
|
+
state.toasts.forEach((toast2) => {
|
|
65
|
+
addToRemoveQueue(toast2.id);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
69
|
+
toasts: state.toasts.map((t) => t.id === toastId || toastId === void 0 ? __spreadProps(__spreadValues({}, t), {
|
|
70
|
+
open: false
|
|
71
|
+
}) : t)
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
case "REMOVE_TOAST":
|
|
75
|
+
if (action.toastId === void 0) {
|
|
76
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
77
|
+
toasts: []
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
81
|
+
toasts: state.toasts.filter((t) => t.id !== action.toastId)
|
|
82
|
+
});
|
|
83
|
+
default:
|
|
84
|
+
return state;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function dispatch(action) {
|
|
88
|
+
memoryState = reducer(memoryState, action);
|
|
89
|
+
listeners.forEach((listener) => {
|
|
90
|
+
listener(memoryState);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
const addToRemoveQueue = (toastId) => {
|
|
94
|
+
if (toastTimeouts.has(toastId)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const timeout = setTimeout(() => {
|
|
98
|
+
toastTimeouts.delete(toastId);
|
|
99
|
+
dispatch({
|
|
100
|
+
type: "REMOVE_TOAST",
|
|
101
|
+
toastId
|
|
102
|
+
});
|
|
103
|
+
}, TOAST_REMOVE_DELAY);
|
|
104
|
+
toastTimeouts.set(toastId, timeout);
|
|
105
|
+
};
|
|
106
|
+
function toast(_a) {
|
|
107
|
+
var toastProps = __objRest(_a, []);
|
|
108
|
+
const id = generareId();
|
|
109
|
+
const update = (props) => dispatch({
|
|
110
|
+
type: "UPDATE_TOAST",
|
|
111
|
+
toast: __spreadProps(__spreadValues({}, props), { id })
|
|
112
|
+
});
|
|
113
|
+
const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
|
|
114
|
+
dispatch({
|
|
115
|
+
type: "ADD_TOAST",
|
|
116
|
+
toast: __spreadProps(__spreadValues({}, toastProps), {
|
|
117
|
+
id,
|
|
118
|
+
open: true,
|
|
119
|
+
onOpenChange: (open) => {
|
|
120
|
+
if (!open)
|
|
121
|
+
dismiss();
|
|
122
|
+
}
|
|
123
|
+
})
|
|
124
|
+
});
|
|
125
|
+
return {
|
|
126
|
+
id,
|
|
127
|
+
dismiss,
|
|
128
|
+
update
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const createHandler = (variant = "default") => (args) => {
|
|
132
|
+
const newToast = toast(__spreadProps(__spreadValues({}, args), { variant }));
|
|
133
|
+
dispatch({ type: "UPSERT_TOAST", toast: __spreadProps(__spreadValues({}, newToast), { variant }) });
|
|
134
|
+
return newToast;
|
|
135
|
+
};
|
|
136
|
+
toast.loading = createHandler("loading");
|
|
137
|
+
toast.promise = (promise, options) => {
|
|
138
|
+
const loadingToast = toast.loading(options.loading);
|
|
139
|
+
promise.then((p) => {
|
|
140
|
+
const successProps = typeof options.success === "function" ? options.success(p) : options.success;
|
|
141
|
+
const variant = successProps.variant || "default";
|
|
142
|
+
loadingToast.update({
|
|
143
|
+
variant,
|
|
144
|
+
id: loadingToast.id,
|
|
145
|
+
icon: successProps.icon,
|
|
146
|
+
css: successProps.css,
|
|
147
|
+
action: successProps.action,
|
|
148
|
+
title: successProps.title,
|
|
149
|
+
description: successProps.description,
|
|
150
|
+
showCloseButton: successProps.showCloseButton
|
|
151
|
+
});
|
|
152
|
+
return p;
|
|
153
|
+
}).catch((e) => {
|
|
154
|
+
const errorProps = typeof options.error === "function" ? options.error(e) : options.error;
|
|
155
|
+
const variant = errorProps.variant || "error";
|
|
156
|
+
loadingToast.update({
|
|
157
|
+
variant,
|
|
158
|
+
id: loadingToast.id,
|
|
159
|
+
icon: errorProps.icon,
|
|
160
|
+
css: errorProps.css,
|
|
161
|
+
action: errorProps.action,
|
|
162
|
+
title: errorProps.title,
|
|
163
|
+
description: errorProps.description,
|
|
164
|
+
showCloseButton: errorProps.showCloseButton
|
|
165
|
+
});
|
|
166
|
+
return e;
|
|
167
|
+
});
|
|
168
|
+
return promise;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
exports.reducer = reducer;
|
|
172
|
+
exports.toast = toast;
|
|
173
|
+
//# sourceMappingURL=use-toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-toast.js","sources":["../../../../../../../../../../node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js"],"sourcesContent":["import * as React from 'react';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst TOAST_REMOVE_DELAY = 1e4;\nlet count = 0;\nfunction generareId() {\n count = (count + 1) % Number.MAX_VALUE;\n return count.toString();\n}\nconst toastTimeouts = /* @__PURE__ */ new Map();\nlet memoryState = { toasts: [] };\nconst listeners = [];\nfunction reducer(state, action) {\n switch (action.type) {\n case \"ADD_TOAST\":\n return __spreadProps(__spreadValues({}, state), {\n toasts: [action.toast, ...state.toasts]\n });\n case \"UPDATE_TOAST\":\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.map((t) => t.id === action.toast.id ? __spreadValues(__spreadValues({}, t), action.toast) : t)\n });\n case \"UPSERT_TOAST\": {\n const { toast: toast2 } = action;\n return state.toasts.find((t) => t.id === toast2.id) ? reducer(state, { type: \"UPDATE_TOAST\", toast: toast2 }) : reducer(state, { type: \"ADD_TOAST\", toast: toast2 });\n }\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast2) => {\n addToRemoveQueue(toast2.id);\n });\n }\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.map((t) => t.id === toastId || toastId === void 0 ? __spreadProps(__spreadValues({}, t), {\n open: false\n }) : t)\n });\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === void 0) {\n return __spreadProps(__spreadValues({}, state), {\n toasts: []\n });\n }\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.filter((t) => t.id !== action.toastId)\n });\n default:\n return state;\n }\n}\nfunction dispatch(action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\nconst addToRemoveQueue = (toastId) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId\n });\n }, TOAST_REMOVE_DELAY);\n toastTimeouts.set(toastId, timeout);\n};\nfunction toast(_a) {\n var toastProps = __objRest(_a, []);\n const id = generareId();\n const update = (props) => dispatch({\n type: \"UPDATE_TOAST\",\n toast: __spreadProps(__spreadValues({}, props), { id })\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n dispatch({\n type: \"ADD_TOAST\",\n toast: __spreadProps(__spreadValues({}, toastProps), {\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open)\n dismiss();\n }\n })\n });\n return {\n id,\n dismiss,\n update\n };\n}\nconst createHandler = (variant = \"default\") => (args) => {\n const newToast = toast(__spreadProps(__spreadValues({}, args), { variant }));\n dispatch({ type: \"UPSERT_TOAST\", toast: __spreadProps(__spreadValues({}, newToast), { variant }) });\n return newToast;\n};\ntoast.loading = createHandler(\"loading\");\ntoast.promise = (promise, options) => {\n const loadingToast = toast.loading(options.loading);\n promise.then((p) => {\n const successProps = typeof options.success === \"function\" ? options.success(p) : options.success;\n const variant = successProps.variant || \"default\";\n loadingToast.update({\n variant,\n id: loadingToast.id,\n icon: successProps.icon,\n css: successProps.css,\n action: successProps.action,\n title: successProps.title,\n description: successProps.description,\n showCloseButton: successProps.showCloseButton\n });\n return p;\n }).catch((e) => {\n const errorProps = typeof options.error === \"function\" ? options.error(e) : options.error;\n const variant = errorProps.variant || \"error\";\n loadingToast.update({\n variant,\n id: loadingToast.id,\n icon: errorProps.icon,\n css: errorProps.css,\n action: errorProps.action,\n title: errorProps.title,\n description: errorProps.description,\n showCloseButton: errorProps.showCloseButton\n });\n return e;\n });\n return promise;\n};\nfunction useToast({ maxToasts = 3 }) {\n const [state, setState] = React.useState(memoryState);\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n return {\n toasts: state.toasts.slice(0, maxToasts),\n toast,\n dismiss: (toastId) => dispatch({ type: \"DISMISS_TOAST\", toastId })\n };\n}\n\nexport { reducer, toast, useToast };\n//# sourceMappingURL=use-toast.js.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -7,6 +7,7 @@ import { IconButton } from '../../node_modules/@sparrowengg/twigs-react/dist/es/
|
|
|
7
7
|
import { ArrowLeftIcon } from '../../node_modules/@sparrowengg/twigs-react-icons/dist/es/icons/arrow-left.js';
|
|
8
8
|
import { Heading } from '../../node_modules/@sparrowengg/twigs-react/dist/es/heading/heading.js';
|
|
9
9
|
import { Button } from '../../node_modules/@sparrowengg/twigs-react/dist/es/button/button.js';
|
|
10
|
+
import { toast } from '../../node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js';
|
|
10
11
|
|
|
11
12
|
const ContactImportHeader = ({
|
|
12
13
|
importName,
|
|
@@ -21,7 +22,7 @@ const ContactImportHeader = ({
|
|
|
21
22
|
navigateMappingPage,
|
|
22
23
|
invitePortal
|
|
23
24
|
}) => {
|
|
24
|
-
var _a
|
|
25
|
+
var _a;
|
|
25
26
|
const [showImportModal, setShowImportModal] = useState(false);
|
|
26
27
|
const handleBackClick = () => {
|
|
27
28
|
setNewImport(false);
|
|
@@ -33,6 +34,16 @@ const ContactImportHeader = ({
|
|
|
33
34
|
}
|
|
34
35
|
};
|
|
35
36
|
const handleContinueMapping = () => {
|
|
37
|
+
var _a2;
|
|
38
|
+
if (!((_a2 = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a2.some(
|
|
39
|
+
(field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
|
|
40
|
+
))) {
|
|
41
|
+
toast({
|
|
42
|
+
variant: "error",
|
|
43
|
+
title: "Please map Email or mobile or uniqueId field"
|
|
44
|
+
});
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
36
47
|
setShowImportModal(true);
|
|
37
48
|
};
|
|
38
49
|
const handleSaveAndClose = async (importName2) => {
|
|
@@ -106,8 +117,6 @@ const ContactImportHeader = ({
|
|
|
106
117
|
{
|
|
107
118
|
disabled: !((_a = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a.some(
|
|
108
119
|
(field) => (field == null ? void 0 : field.integrationField) && (field == null ? void 0 : field.surveySparrowField)
|
|
109
|
-
)) || !((_b = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _b.some(
|
|
110
|
-
(field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
|
|
111
120
|
)),
|
|
112
121
|
size: "lg",
|
|
113
122
|
onClick: handleContinueMapping,
|
|
@@ -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} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\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 [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 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 />\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 >\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 disabled={\n !contactImportField?.fields?.some(\n (field) => field?.integrationField && field?.surveySparrowField\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 { 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 [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 if(!contactImportField?.fields?.some(\n (field) =>\n field?.surveySparrowField === 'email' || field?.surveySparrowField === 'mobile'\n )){\n toast({\n variant: 'error',\n title: 'Please map Email or mobile or uniqueId field'\n });\n return\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 />\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 >\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 disabled={\n !contactImportField?.fields?.some(\n (field) => field?.integrationField && field?.surveySparrowField\n )\n }\n size=\"lg\"\n onClick={handleContinueMapping}\n css={{ visibility: isContactMappingPage ? \"visible\" : \"hidden\"}}\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":["_a","importName","React"],"mappings":";;;;;;;;;;;AAcO,MAAM,sBAA0D,CAAC;AAAA,EACtE,UAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA,KAAM;AA1BN,EAAA,IAAA,EAAA;AA2BE,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5D,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,sBAAA,EAAuB;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,wBAAwB,MAAM;AAClC,IAAA,IAAI,oBAAA,EAAsB;AACxB,MAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,wBAAwB,MAAM;AAxCtC,IAAA,IAAAA,GAAAA;AAyCI,IAAA,IAAG,EAAA,CAACA,GAAAA,GAAA,kBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAoB,MAAA,KAApB,gBAAAA,GAAAA,CAA4B,IAAA;AAAA,MAC9B,CAAC,KAAA,KAAA,CACC,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,kBAAA,MAAuB,OAAA,IAAA,CAAW,+BAAO,kBAAA,MAAuB;AAAA,KAAA,CAAA,EACzE;AACA,MAAA,KAAA,CAAM;AAAA,QACJ,OAAA,EAAS,OAAA;AAAA,QACT,KAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA;AAAA,IACF;AACA,IAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,OAAOC,WAAAA,KAAuB;AACvD,IAAA,MAAM,cAAcA,WAAU,CAAA;AAAA,EAChC,CAAA;AAEA,EAAA,uBACEC,cAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAW,QAAA;AAAA,MACX,cAAA,EAAe,eAAA;AAAA,MACf,GAAA,EAAK;AAAA,QACH,YAAA,EAAc,oCAAA;AAAA,QACd,OAAA,EAAS;AAAA;AACX,KAAA;AAAA,oBAEAA,cAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAI,IAAA;AAAA,QACJ,UAAA,EAAW,QAAA;AAAA,QACX,GAAA,EAAK,EAAE,UAAA,EAAY,kBAAA,GAAqB,YAAY,QAAA;AAAS,OAAA;AAAA,sBAE7DA,cAAA,CAAA,aAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,eAAA;AAAA,UACT,KAAA,EAAM,SAAA;AAAA,UACN,IAAA,+CAAO,aAAA,EAAA,IAAc,CAAA;AAAA,UACrB,IAAA,EAAK,IAAA;AAAA,UACL,YAAA,EAAW;AAAA;AAAA,OACb;AAAA,sBACAA,cAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAK,IAAA,EAAA,EAAM,0BAA0B,kBAAmB;AAAA,KACnE;AAAA,oBACAA,cAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAW,QAAA;AAAA,QACX,GAAA,EAAI,IAAA;AAAA,QACJ,GAAA,EAAK;AAAA,UACH,KAAA,EAAO,kBAAA;AAAA,UACP,UAAA,EAAY,EAAE,UAAA,EAAY,wBAAA,EAA0B,UAAU,KAAA;AAAM;AACtE,OAAA;AAAA,sBAEAA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAK,EAAE,KAAA,EAAO,CAAC,oBAAA,GAAuB,gBAAgB,aAAA,EAAc;AAAA,UACpE,KAAA,EAAM,SAAA;AAAA,UACN,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,OAAA,EAAS;AAAA,SAAA;AAAA,QAER,yBAAA,CAA0B;AAAA,OAC7B;AAAA,mDACC,KAAA,EAAA,IAAM,CAAA;AAAA,sBACPA,cAAA,CAAA,aAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,EAAE,KAAA,EAAO,oBAAA,GAAuB,gBAAgB,aAAA,EAAc;AAAA,UACnE,KAAA,EAAM,SAAA;AAAA,UACN,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,UAAU,CAAC;AAAA,SAAA;AAAA,QAEV,yBAAA,CAA0B;AAAA;AAC7B,KACF;AAAA,oBACAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EACE,EAAA,CAAC,EAAA,GAAA,kBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAoB,MAAA,KAApB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA4B,IAAA;AAAA,UAC3B,CAAC,KAAA,KAAA,CAAU,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,gBAAA,MAAoB,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,kBAAA;AAAA,SAAA,CAAA;AAAA,QAGjD,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAS,qBAAA;AAAA,QACT,GAAA,EAAK,EAAE,UAAA,EAAY,oBAAA,GAAuB,YAAY,QAAA;AAAQ,OAAA;AAAA,MAE7D,yBAAA,CAA0B;AAAA,KAC7B;AAAA,IACC,eAAA,oBACCA,cAAA,CAAA,aAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,UAAA;AAAA,QACA,aAAA;AAAA,QACA,qBAAA;AAAA,QACA,kBAAA;AAAA,QACA,YAAA;AAAA,QACA,aAAA,EAAe,kBAAA;AAAA,QACf,cAAA,EAAgB,MAAM,kBAAA,CAAmB,KAAK;AAAA;AAAA;AAChD,GAEJ;AAEJ;;;;"}
|
|
@@ -48,6 +48,7 @@ const ContactImportMapping = ({
|
|
|
48
48
|
}) => {
|
|
49
49
|
const customPropertyRef = useRef(null);
|
|
50
50
|
const initialRenderRef = useRef(true);
|
|
51
|
+
const orderRef = useRef([]);
|
|
51
52
|
useEffect(() => {
|
|
52
53
|
if (!initialRenderRef.current && (customPropertyRef == null ? void 0 : customPropertyRef.current)) {
|
|
53
54
|
customPropertyRef.current.scrollIntoView({
|
|
@@ -88,6 +89,31 @@ const ContactImportMapping = ({
|
|
|
88
89
|
fields: prev.fields.filter((field) => field.id !== id)
|
|
89
90
|
}));
|
|
90
91
|
};
|
|
92
|
+
const currentIds = contactImportField.fields.map((field) => field.id);
|
|
93
|
+
orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));
|
|
94
|
+
if (orderRef.current.length === 0 && currentIds.length) {
|
|
95
|
+
orderRef.current = [...contactImportField.fields].sort((a, b) => {
|
|
96
|
+
const aIsAutoMapped = !a.mapped && a.surveySparrowField;
|
|
97
|
+
const bIsAutoMapped = !b.mapped && b.surveySparrowField;
|
|
98
|
+
if (aIsAutoMapped && !bIsAutoMapped)
|
|
99
|
+
return -1;
|
|
100
|
+
if (!aIsAutoMapped && bIsAutoMapped)
|
|
101
|
+
return 1;
|
|
102
|
+
const aIsManuallyMapped = a.mapped && a.surveySparrowField;
|
|
103
|
+
const bIsManuallyMapped = b.mapped && b.surveySparrowField;
|
|
104
|
+
if (aIsManuallyMapped && !bIsManuallyMapped)
|
|
105
|
+
return -1;
|
|
106
|
+
if (!aIsManuallyMapped && bIsManuallyMapped)
|
|
107
|
+
return 1;
|
|
108
|
+
return 0;
|
|
109
|
+
}).map((field) => field.id);
|
|
110
|
+
} else {
|
|
111
|
+
currentIds.forEach((id) => {
|
|
112
|
+
if (!orderRef.current.includes(id))
|
|
113
|
+
orderRef.current.push(id);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
const orderedFields = orderRef.current.map((id) => contactImportField.fields.find((field) => field.id === id)).filter((field) => Boolean(field));
|
|
91
117
|
return /* @__PURE__ */ React__default.createElement(Flex, { justifyContent: "center" }, /* @__PURE__ */ React__default.createElement(Box, { css: { marginTop: "$40", maxWidth: "90%", width: "100%" } }, /* @__PURE__ */ React__default.createElement(Box, { css: { paddingLeft: "$28" } }, /* @__PURE__ */ React__default.createElement(Heading, { size: "h5" }, "Map Contact Properties"), /* @__PURE__ */ React__default.createElement(Text, { css: { marginTop: "$4", color: "$neutral600" }, size: "md" }, "Review these mappings before importing. Unmapped columns will be ignored.")), /* @__PURE__ */ React__default.createElement(
|
|
92
118
|
Box,
|
|
93
119
|
{
|
|
@@ -107,25 +133,12 @@ const ContactImportMapping = ({
|
|
|
107
133
|
width: "100%",
|
|
108
134
|
background: "$white900",
|
|
109
135
|
borderRadius: "5px",
|
|
110
|
-
borderCollapse: "collapse"
|
|
136
|
+
borderCollapse: "collapse",
|
|
137
|
+
marginLeft: "-14px !important"
|
|
111
138
|
}
|
|
112
139
|
},
|
|
113
|
-
/* @__PURE__ */ React__default.createElement(Thead, { css: { zIndex: 5, position: "sticky", top: "-
|
|
114
|
-
/* @__PURE__ */ React__default.createElement(Tbody, null,
|
|
115
|
-
const aIsAutoMapped = !a.mapped && a.surveySparrowField;
|
|
116
|
-
const bIsAutoMapped = !b.mapped && b.surveySparrowField;
|
|
117
|
-
if (aIsAutoMapped && !bIsAutoMapped)
|
|
118
|
-
return -1;
|
|
119
|
-
if (!aIsAutoMapped && bIsAutoMapped)
|
|
120
|
-
return 1;
|
|
121
|
-
const aIsManuallyMapped = a.mapped && a.surveySparrowField;
|
|
122
|
-
const bIsManuallyMapped = b.mapped && b.surveySparrowField;
|
|
123
|
-
if (aIsManuallyMapped && !bIsManuallyMapped)
|
|
124
|
-
return -1;
|
|
125
|
-
if (!aIsManuallyMapped && bIsManuallyMapped)
|
|
126
|
-
return 1;
|
|
127
|
-
return 0;
|
|
128
|
-
}).map((field) => {
|
|
140
|
+
/* @__PURE__ */ React__default.createElement(Thead, { css: { zIndex: 5, position: "sticky", top: "-32px" } }, /* @__PURE__ */ React__default.createElement(Th, null, `${integrationName} Profile Fields Data`), /* @__PURE__ */ React__default.createElement(Th, { css: { borderLeft: "$borderWidths$xs solid $neutral100" } }, "SurveySparrow Mapping")),
|
|
141
|
+
/* @__PURE__ */ React__default.createElement(Tbody, null, orderedFields.map((field) => {
|
|
129
142
|
var _a, _b;
|
|
130
143
|
const hasSurveyFieldValue = contactProperties.some(
|
|
131
144
|
(contact) => contact.value === field.surveySparrowField
|
|
@@ -172,6 +185,7 @@ const ContactImportMapping = ({
|
|
|
172
185
|
))), /* @__PURE__ */ React__default.createElement(
|
|
173
186
|
Td,
|
|
174
187
|
{
|
|
188
|
+
className: "dm-sans",
|
|
175
189
|
css: {
|
|
176
190
|
width: 560,
|
|
177
191
|
borderLeft: "$borderWidths$xs solid $neutral100"
|
|
@@ -181,9 +195,13 @@ const ContactImportMapping = ({
|
|
|
181
195
|
Select,
|
|
182
196
|
{
|
|
183
197
|
size: "lg",
|
|
198
|
+
className: "dm-sans",
|
|
184
199
|
placeholder: "--Choose Property--",
|
|
185
200
|
isClearable: true,
|
|
186
201
|
menuPortalTarget: document.body,
|
|
202
|
+
menuPlacement: "auto",
|
|
203
|
+
menuShouldScrollIntoView: false,
|
|
204
|
+
closeMenuOnScroll: (e) => !(e.target instanceof Element && e.target.closest('[class*="menu-list"]')),
|
|
187
205
|
styles: {
|
|
188
206
|
menuPortal: (base) => __spreadProps(__spreadValues({}, base), {
|
|
189
207
|
zIndex: 9999
|
|
@@ -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 { 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 customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\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 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 }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-31px\" }}>\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 {[...contactImportField.fields]\n .sort((a, b) => {\n // Automatically mapped (not manually mapped and has surveySparrowField) come first\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n \n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n \n // Then manually mapped\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n \n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n \n // Keep original order for items in the same category\n return 0;\n })\n .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 />\n </Box>\n )}\n </Td>\n <Td\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\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 >\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 { 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 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 />\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 >\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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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import 'react';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
5
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
9
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
|
+
var __spreadValues = (a, b) => {
|
|
11
|
+
for (var prop in b || (b = {}))
|
|
12
|
+
if (__hasOwnProp.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
if (__getOwnPropSymbols)
|
|
15
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
16
|
+
if (__propIsEnum.call(b, prop))
|
|
17
|
+
__defNormalProp(a, prop, b[prop]);
|
|
18
|
+
}
|
|
19
|
+
return a;
|
|
20
|
+
};
|
|
21
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
22
|
+
var __objRest = (source, exclude) => {
|
|
23
|
+
var target = {};
|
|
24
|
+
for (var prop in source)
|
|
25
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
26
|
+
target[prop] = source[prop];
|
|
27
|
+
if (source != null && __getOwnPropSymbols)
|
|
28
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
29
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
30
|
+
target[prop] = source[prop];
|
|
31
|
+
}
|
|
32
|
+
return target;
|
|
33
|
+
};
|
|
34
|
+
const TOAST_REMOVE_DELAY = 1e4;
|
|
35
|
+
let count = 0;
|
|
36
|
+
function generareId() {
|
|
37
|
+
count = (count + 1) % Number.MAX_VALUE;
|
|
38
|
+
return count.toString();
|
|
39
|
+
}
|
|
40
|
+
const toastTimeouts = /* @__PURE__ */ new Map();
|
|
41
|
+
let memoryState = { toasts: [] };
|
|
42
|
+
const listeners = [];
|
|
43
|
+
function reducer(state, action) {
|
|
44
|
+
switch (action.type) {
|
|
45
|
+
case "ADD_TOAST":
|
|
46
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
47
|
+
toasts: [action.toast, ...state.toasts]
|
|
48
|
+
});
|
|
49
|
+
case "UPDATE_TOAST":
|
|
50
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
51
|
+
toasts: state.toasts.map((t) => t.id === action.toast.id ? __spreadValues(__spreadValues({}, t), action.toast) : t)
|
|
52
|
+
});
|
|
53
|
+
case "UPSERT_TOAST": {
|
|
54
|
+
const { toast: toast2 } = action;
|
|
55
|
+
return state.toasts.find((t) => t.id === toast2.id) ? reducer(state, { type: "UPDATE_TOAST", toast: toast2 }) : reducer(state, { type: "ADD_TOAST", toast: toast2 });
|
|
56
|
+
}
|
|
57
|
+
case "DISMISS_TOAST": {
|
|
58
|
+
const { toastId } = action;
|
|
59
|
+
if (toastId) {
|
|
60
|
+
addToRemoveQueue(toastId);
|
|
61
|
+
} else {
|
|
62
|
+
state.toasts.forEach((toast2) => {
|
|
63
|
+
addToRemoveQueue(toast2.id);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
67
|
+
toasts: state.toasts.map((t) => t.id === toastId || toastId === void 0 ? __spreadProps(__spreadValues({}, t), {
|
|
68
|
+
open: false
|
|
69
|
+
}) : t)
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
case "REMOVE_TOAST":
|
|
73
|
+
if (action.toastId === void 0) {
|
|
74
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
75
|
+
toasts: []
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
79
|
+
toasts: state.toasts.filter((t) => t.id !== action.toastId)
|
|
80
|
+
});
|
|
81
|
+
default:
|
|
82
|
+
return state;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function dispatch(action) {
|
|
86
|
+
memoryState = reducer(memoryState, action);
|
|
87
|
+
listeners.forEach((listener) => {
|
|
88
|
+
listener(memoryState);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
const addToRemoveQueue = (toastId) => {
|
|
92
|
+
if (toastTimeouts.has(toastId)) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const timeout = setTimeout(() => {
|
|
96
|
+
toastTimeouts.delete(toastId);
|
|
97
|
+
dispatch({
|
|
98
|
+
type: "REMOVE_TOAST",
|
|
99
|
+
toastId
|
|
100
|
+
});
|
|
101
|
+
}, TOAST_REMOVE_DELAY);
|
|
102
|
+
toastTimeouts.set(toastId, timeout);
|
|
103
|
+
};
|
|
104
|
+
function toast(_a) {
|
|
105
|
+
var toastProps = __objRest(_a, []);
|
|
106
|
+
const id = generareId();
|
|
107
|
+
const update = (props) => dispatch({
|
|
108
|
+
type: "UPDATE_TOAST",
|
|
109
|
+
toast: __spreadProps(__spreadValues({}, props), { id })
|
|
110
|
+
});
|
|
111
|
+
const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
|
|
112
|
+
dispatch({
|
|
113
|
+
type: "ADD_TOAST",
|
|
114
|
+
toast: __spreadProps(__spreadValues({}, toastProps), {
|
|
115
|
+
id,
|
|
116
|
+
open: true,
|
|
117
|
+
onOpenChange: (open) => {
|
|
118
|
+
if (!open)
|
|
119
|
+
dismiss();
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
});
|
|
123
|
+
return {
|
|
124
|
+
id,
|
|
125
|
+
dismiss,
|
|
126
|
+
update
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
const createHandler = (variant = "default") => (args) => {
|
|
130
|
+
const newToast = toast(__spreadProps(__spreadValues({}, args), { variant }));
|
|
131
|
+
dispatch({ type: "UPSERT_TOAST", toast: __spreadProps(__spreadValues({}, newToast), { variant }) });
|
|
132
|
+
return newToast;
|
|
133
|
+
};
|
|
134
|
+
toast.loading = createHandler("loading");
|
|
135
|
+
toast.promise = (promise, options) => {
|
|
136
|
+
const loadingToast = toast.loading(options.loading);
|
|
137
|
+
promise.then((p) => {
|
|
138
|
+
const successProps = typeof options.success === "function" ? options.success(p) : options.success;
|
|
139
|
+
const variant = successProps.variant || "default";
|
|
140
|
+
loadingToast.update({
|
|
141
|
+
variant,
|
|
142
|
+
id: loadingToast.id,
|
|
143
|
+
icon: successProps.icon,
|
|
144
|
+
css: successProps.css,
|
|
145
|
+
action: successProps.action,
|
|
146
|
+
title: successProps.title,
|
|
147
|
+
description: successProps.description,
|
|
148
|
+
showCloseButton: successProps.showCloseButton
|
|
149
|
+
});
|
|
150
|
+
return p;
|
|
151
|
+
}).catch((e) => {
|
|
152
|
+
const errorProps = typeof options.error === "function" ? options.error(e) : options.error;
|
|
153
|
+
const variant = errorProps.variant || "error";
|
|
154
|
+
loadingToast.update({
|
|
155
|
+
variant,
|
|
156
|
+
id: loadingToast.id,
|
|
157
|
+
icon: errorProps.icon,
|
|
158
|
+
css: errorProps.css,
|
|
159
|
+
action: errorProps.action,
|
|
160
|
+
title: errorProps.title,
|
|
161
|
+
description: errorProps.description,
|
|
162
|
+
showCloseButton: errorProps.showCloseButton
|
|
163
|
+
});
|
|
164
|
+
return e;
|
|
165
|
+
});
|
|
166
|
+
return promise;
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
export { reducer, toast };
|
|
170
|
+
//# sourceMappingURL=use-toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-toast.js","sources":["../../../../../../../../../../node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js"],"sourcesContent":["import * as React from 'react';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst TOAST_REMOVE_DELAY = 1e4;\nlet count = 0;\nfunction generareId() {\n count = (count + 1) % Number.MAX_VALUE;\n return count.toString();\n}\nconst toastTimeouts = /* @__PURE__ */ new Map();\nlet memoryState = { toasts: [] };\nconst listeners = [];\nfunction reducer(state, action) {\n switch (action.type) {\n case \"ADD_TOAST\":\n return __spreadProps(__spreadValues({}, state), {\n toasts: [action.toast, ...state.toasts]\n });\n case \"UPDATE_TOAST\":\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.map((t) => t.id === action.toast.id ? __spreadValues(__spreadValues({}, t), action.toast) : t)\n });\n case \"UPSERT_TOAST\": {\n const { toast: toast2 } = action;\n return state.toasts.find((t) => t.id === toast2.id) ? reducer(state, { type: \"UPDATE_TOAST\", toast: toast2 }) : reducer(state, { type: \"ADD_TOAST\", toast: toast2 });\n }\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast2) => {\n addToRemoveQueue(toast2.id);\n });\n }\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.map((t) => t.id === toastId || toastId === void 0 ? __spreadProps(__spreadValues({}, t), {\n open: false\n }) : t)\n });\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === void 0) {\n return __spreadProps(__spreadValues({}, state), {\n toasts: []\n });\n }\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.filter((t) => t.id !== action.toastId)\n });\n default:\n return state;\n }\n}\nfunction dispatch(action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\nconst addToRemoveQueue = (toastId) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId\n });\n }, TOAST_REMOVE_DELAY);\n toastTimeouts.set(toastId, timeout);\n};\nfunction toast(_a) {\n var toastProps = __objRest(_a, []);\n const id = generareId();\n const update = (props) => dispatch({\n type: \"UPDATE_TOAST\",\n toast: __spreadProps(__spreadValues({}, props), { id })\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n dispatch({\n type: \"ADD_TOAST\",\n toast: __spreadProps(__spreadValues({}, toastProps), {\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open)\n dismiss();\n }\n })\n });\n return {\n id,\n dismiss,\n update\n };\n}\nconst createHandler = (variant = \"default\") => (args) => {\n const newToast = toast(__spreadProps(__spreadValues({}, args), { variant }));\n dispatch({ type: \"UPSERT_TOAST\", toast: __spreadProps(__spreadValues({}, newToast), { variant }) });\n return newToast;\n};\ntoast.loading = createHandler(\"loading\");\ntoast.promise = (promise, options) => {\n const loadingToast = toast.loading(options.loading);\n promise.then((p) => {\n const successProps = typeof options.success === \"function\" ? options.success(p) : options.success;\n const variant = successProps.variant || \"default\";\n loadingToast.update({\n variant,\n id: loadingToast.id,\n icon: successProps.icon,\n css: successProps.css,\n action: successProps.action,\n title: successProps.title,\n description: successProps.description,\n showCloseButton: successProps.showCloseButton\n });\n return p;\n }).catch((e) => {\n const errorProps = typeof options.error === \"function\" ? options.error(e) : options.error;\n const variant = errorProps.variant || \"error\";\n loadingToast.update({\n variant,\n id: loadingToast.id,\n icon: errorProps.icon,\n css: errorProps.css,\n action: errorProps.action,\n title: errorProps.title,\n description: errorProps.description,\n showCloseButton: errorProps.showCloseButton\n });\n return e;\n });\n return promise;\n};\nfunction useToast({ maxToasts = 3 }) {\n const [state, setState] = React.useState(memoryState);\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n return {\n toasts: state.toasts.slice(0, maxToasts),\n toast,\n dismiss: (toastId) => dispatch({ type: \"DISMISS_TOAST\", toastId })\n };\n}\n\nexport { reducer, toast, useToast };\n//# sourceMappingURL=use-toast.js.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|