@sparrowengg/integrations-templates-frontend 5.0.16 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/triggers/components/EventSetup.js +1 -2
- package/dist/cjs/triggers/components/EventSetup.js.map +1 -1
- package/dist/cjs/triggers/components/TriggerHeader.js +4 -3
- package/dist/cjs/triggers/components/TriggerHeader.js.map +1 -1
- package/dist/cjs/triggers/components/trigger.js +53 -2
- package/dist/cjs/triggers/components/trigger.js.map +1 -1
- package/dist/cjs/triggers/hooks/use-contact-unique-constraint.js +35 -0
- package/dist/cjs/triggers/hooks/use-contact-unique-constraint.js.map +1 -0
- package/dist/cjs/triggers/index.js +12 -3
- package/dist/cjs/triggers/index.js.map +1 -1
- package/dist/cjs/triggers/services/index.js +15 -0
- package/dist/cjs/triggers/services/index.js.map +1 -1
- package/dist/cjs/triggers/utils/validation.utils.js +10 -4
- package/dist/cjs/triggers/utils/validation.utils.js.map +1 -1
- package/dist/es/triggers/components/EventSetup.js +1 -2
- package/dist/es/triggers/components/EventSetup.js.map +1 -1
- package/dist/es/triggers/components/TriggerHeader.js +4 -3
- package/dist/es/triggers/components/TriggerHeader.js.map +1 -1
- package/dist/es/triggers/components/trigger.js +53 -2
- package/dist/es/triggers/components/trigger.js.map +1 -1
- package/dist/es/triggers/hooks/use-contact-unique-constraint.js +33 -0
- package/dist/es/triggers/hooks/use-contact-unique-constraint.js.map +1 -0
- package/dist/es/triggers/index.js +12 -3
- package/dist/es/triggers/index.js.map +1 -1
- package/dist/es/triggers/services/index.js +15 -1
- package/dist/es/triggers/services/index.js.map +1 -1
- package/dist/es/triggers/utils/validation.utils.js +10 -4
- package/dist/es/triggers/utils/validation.utils.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/package.json +1 -1
|
@@ -65,7 +65,7 @@ const EventSetup = ({
|
|
|
65
65
|
);
|
|
66
66
|
}
|
|
67
67
|
}, [actions == null ? void 0 : actions.value, objects == null ? void 0 : objects.value, actions, objects, eventFields]);
|
|
68
|
-
|
|
68
|
+
React.useMemo(
|
|
69
69
|
() => validation_utils.isEventSetupDisabled(actions, objects, eventFields),
|
|
70
70
|
[actions, objects, eventFields]
|
|
71
71
|
);
|
|
@@ -213,7 +213,6 @@ const EventSetup = ({
|
|
|
213
213
|
size: "lg",
|
|
214
214
|
rightIcon: /* @__PURE__ */ React.createElement(chevronRight.ChevronRightIcon, null),
|
|
215
215
|
css: { marginTop: "$16" },
|
|
216
|
-
disabled: isContinueDisabled || forceDisableEventSetupCTA,
|
|
217
216
|
onClick: handleContinueClick
|
|
218
217
|
},
|
|
219
218
|
uiStrings.TRIGGERS_UI_STRINGS.CONTINUE
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventSetup.js","sources":["../../../../src/triggers/components/EventSetup.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useEffect, useCallback, useMemo } from \"react\";\nimport {\n Box,\n Button,\n Flex,\n FormLabel,\n Heading,\n Select,\n FormHelperText,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport { ChevronRightIcon } from \"@sparrowengg/twigs-react-icons\";\nimport CustomPill from \"../../commons/components/custom-pill\";\nimport { EventSetupProps } from \"../types\";\nimport { TRIGGERS_UI_STRINGS } from \"../constants\";\nimport { isEventSetupDisabled } from \"../utils\";\nimport { sanitizeHTML } from \"../../commons/utils\";\n\n/* ----- Helper Components ----- */\n\n/**\n * Custom multi-value component for Select\n *\n * @param {any} props - Component props\n * @returns {JSX.Element} Rendered custom pill\n */\nconst CustomMultiValue: React.FC<any> = (props) => {\n return (\n <CustomPill\n label={props.data.label}\n onCloseHandler={() => props.removeProps.onClick()}\n variant=\"default\"\n radius=\"md\"\n />\n );\n};\n\n/* ----- Main Component ----- */\n\n/**\n * EventSetup component for configuring trigger event details\n *\n * @param {EventSetupProps} props - Component props\n * @returns {JSX.Element} Rendered EventSetup component\n */\nconst EventSetup: React.FC<EventSetupProps> = ({\n forceDisableEventSetupCTA,\n eventFields,\n accounts,\n objects,\n actions,\n surveyDetails,\n navigateTriggerPage,\n}) => {\n /* ----- Effects ----- */\n\n useEffect(() => {\n if (\n actions?.options?.filter((action: any) =>\n eventFields?.action?.includes(action?.value)\n )?.length\n ) {\n actions?.onChangeHandler(\n Object.keys(actions?.value || {})?.length\n ? actions?.value\n : actions?.options\n ?.filter((action: any) =>\n eventFields?.action?.includes(action?.value)\n )\n ?.map((action: any) => action)\n );\n }\n if (\n objects?.options?.find(\n (object: any) => object?.value === eventFields?.object\n )\n ) {\n objects?.onChangeHandler(\n objects?.value ??\n objects?.options?.find(\n (object: any) => object?.value === eventFields?.object\n )\n );\n }\n }, [actions?.value, objects?.value, actions, objects, eventFields]);\n\n /* ----- Constants ----- */\n\n const isContinueDisabled = useMemo(\n () => isEventSetupDisabled(actions, objects, eventFields),\n [actions, objects, eventFields]\n );\n\n const accountValue = useMemo(\n () =>\n accounts?.options?.find(\n (account: any) => account?.value === eventFields?.account\n ) ?? accounts?.value,\n [accounts?.options, accounts?.value, eventFields?.account]\n );\n\n const objectValue = useMemo(\n () =>\n objects?.value ??\n objects?.options?.find(\n (object: any) => object.value === eventFields?.object\n ),\n [objects?.value, objects?.options, eventFields?.object]\n );\n\n const actionValue = useMemo(\n () =>\n Object.keys(actions?.value || {})?.length\n ? actions.value\n : actions?.options\n .filter((action: any) =>\n eventFields?.action?.includes(action?.value)\n )\n ?.map((action: any) => action),\n [actions?.value, actions?.options, eventFields?.action]\n );\n\n /* ----- Event Handlers ----- */\n\n const handleAccountChange = useCallback(\n (value: any) => {\n accounts.onChangeHandler(value);\n },\n [accounts]\n );\n\n const handleObjectChange = useCallback(\n (value: any) => {\n objects.onChangeHandler(value);\n },\n [objects]\n );\n\n const handleActionChange = useCallback(\n (value: any) => {\n actions.onChangeHandler(value);\n },\n [actions]\n );\n\n const handleContinueClick = useCallback(() => {\n navigateTriggerPage(true);\n }, [navigateTriggerPage]);\n\n /* ----- Render ----- */\n\n return (\n <Flex\n css={{ paddingTop: \"$40\" }}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Box css={{ width: 488 }}>\n <Heading size=\"h5\">{TRIGGERS_UI_STRINGS.ACCOUNT_DETAILS}</Heading>\n <Flex gap=\"$2\" css={{ marginTop: \"$4\" }}>\n <Text size=\"sm\" css={{ color: \"$neutral500\" }}>\n {TRIGGERS_UI_STRINGS.SURVEY_NAME_LABEL}\n </Text>\n <Text size=\"sm\" weight={\"medium\"} css={{ color: \"$neutral800\" }}>\n {surveyDetails.surveyName}\n </Text>\n </Flex>\n <Flex flexDirection=\"column\" gap=\"$8\" css={{ marginTop: \"$16\" }}>\n {accounts?.hasAccounts && (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {TRIGGERS_UI_STRINGS.CHOOSE_ACCOUNT}\n </FormLabel>\n <Select\n value={accountValue}\n options={accounts.options}\n isMulti={accounts?.isMulti}\n placeholder={TRIGGERS_UI_STRINGS.PLACEHOLDER_EMPTY}\n onChange={handleAccountChange}\n size=\"lg\"\n />\n <FormHelperText\n dangerouslySetInnerHTML={{\n __html: sanitizeHTML(accounts?.helperText ?? \"\"),\n }}\n size=\"xs\"\n css={{\n color: \"$neutral500\",\n a: {\n color: \"$primary600\",\n },\n }}\n />\n </Flex>\n )}\n {objects?.hasObjects && (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {TRIGGERS_UI_STRINGS.CHOOSE_OBJECT}\n </FormLabel>\n <Select\n options={objects.options}\n value={objectValue}\n isMulti={objects?.isMulti}\n placeholder={TRIGGERS_UI_STRINGS.PLACEHOLDER_EMPTY}\n onChange={handleObjectChange}\n size=\"lg\"\n />\n <FormHelperText\n dangerouslySetInnerHTML={{\n __html: sanitizeHTML(objects?.helperText ?? \"\"),\n }}\n size=\"xs\"\n css={{\n color: \"$neutral500\",\n a: {\n color: \"$primary600\",\n },\n }}\n />\n </Flex>\n )}\n {actions?.hasActions && (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {TRIGGERS_UI_STRINGS.CHOOSE_ACTION}\n </FormLabel>\n <Select\n size=\"lg\"\n options={actions.options}\n value={actionValue}\n isMulti={actions?.isMulti}\n placeholder={TRIGGERS_UI_STRINGS.PLACEHOLDER_EMPTY}\n css={{\n \".twigs-select__value-container--is-multi\": {\n gap: \"$2\",\n },\n }}\n components={{\n MultiValue: CustomMultiValue,\n }}\n onChange={handleActionChange}\n />\n <FormHelperText\n dangerouslySetInnerHTML={{\n __html: sanitizeHTML(actions?.helperText ?? \"\"),\n }}\n size=\"xs\"\n css={{\n color: \"$neutral500\",\n a: {\n color: \"$primary600\",\n },\n }}\n />\n </Flex>\n )}\n </Flex>\n <Button\n size=\"lg\"\n rightIcon={<ChevronRightIcon />}\n css={{ marginTop: \"$16\" }}\n disabled={isContinueDisabled || forceDisableEventSetupCTA}\n onClick={handleContinueClick}\n >\n {TRIGGERS_UI_STRINGS.CONTINUE}\n </Button>\n </Box>\n </Flex>\n );\n};\n\nexport default EventSetup;\n\n"],"names":["CustomPill","useEffect","_a","_b","_c","useMemo","isEventSetupDisabled","useCallback","Flex","Box","Heading","TRIGGERS_UI_STRINGS","Text","FormLabel","Select","FormHelperText","sanitizeHTML","Button","ChevronRightIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EventSetup.js","sources":["../../../../src/triggers/components/EventSetup.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useEffect, useCallback, useMemo } from \"react\";\nimport {\n Box,\n Button,\n Flex,\n FormLabel,\n Heading,\n Select,\n FormHelperText,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport { ChevronRightIcon } from \"@sparrowengg/twigs-react-icons\";\nimport CustomPill from \"../../commons/components/custom-pill\";\nimport { EventSetupProps } from \"../types\";\nimport { TRIGGERS_UI_STRINGS } from \"../constants\";\nimport { isEventSetupDisabled } from \"../utils\";\nimport { sanitizeHTML } from \"../../commons/utils\";\n\n/* ----- Helper Components ----- */\n\n/**\n * Custom multi-value component for Select\n *\n * @param {any} props - Component props\n * @returns {JSX.Element} Rendered custom pill\n */\nconst CustomMultiValue: React.FC<any> = (props) => {\n return (\n <CustomPill\n label={props.data.label}\n onCloseHandler={() => props.removeProps.onClick()}\n variant=\"default\"\n radius=\"md\"\n />\n );\n};\n\n/* ----- Main Component ----- */\n\n/**\n * EventSetup component for configuring trigger event details\n *\n * @param {EventSetupProps} props - Component props\n * @returns {JSX.Element} Rendered EventSetup component\n */\nconst EventSetup: React.FC<EventSetupProps> = ({\n forceDisableEventSetupCTA,\n eventFields,\n accounts,\n objects,\n actions,\n surveyDetails,\n navigateTriggerPage,\n}) => {\n /* ----- Effects ----- */\n\n useEffect(() => {\n if (\n actions?.options?.filter((action: any) =>\n eventFields?.action?.includes(action?.value)\n )?.length\n ) {\n actions?.onChangeHandler(\n Object.keys(actions?.value || {})?.length\n ? actions?.value\n : actions?.options\n ?.filter((action: any) =>\n eventFields?.action?.includes(action?.value)\n )\n ?.map((action: any) => action)\n );\n }\n if (\n objects?.options?.find(\n (object: any) => object?.value === eventFields?.object\n )\n ) {\n objects?.onChangeHandler(\n objects?.value ??\n objects?.options?.find(\n (object: any) => object?.value === eventFields?.object\n )\n );\n }\n }, [actions?.value, objects?.value, actions, objects, eventFields]);\n\n /* ----- Constants ----- */\n\n const isContinueDisabled = useMemo(\n () => isEventSetupDisabled(actions, objects, eventFields),\n [actions, objects, eventFields]\n );\n\n const accountValue = useMemo(\n () =>\n accounts?.options?.find(\n (account: any) => account?.value === eventFields?.account\n ) ?? accounts?.value,\n [accounts?.options, accounts?.value, eventFields?.account]\n );\n\n const objectValue = useMemo(\n () =>\n objects?.value ??\n objects?.options?.find(\n (object: any) => object.value === eventFields?.object\n ),\n [objects?.value, objects?.options, eventFields?.object]\n );\n\n const actionValue = useMemo(\n () =>\n Object.keys(actions?.value || {})?.length\n ? actions.value\n : actions?.options\n .filter((action: any) =>\n eventFields?.action?.includes(action?.value)\n )\n ?.map((action: any) => action),\n [actions?.value, actions?.options, eventFields?.action]\n );\n\n /* ----- Event Handlers ----- */\n\n const handleAccountChange = useCallback(\n (value: any) => {\n accounts.onChangeHandler(value);\n },\n [accounts]\n );\n\n const handleObjectChange = useCallback(\n (value: any) => {\n objects.onChangeHandler(value);\n },\n [objects]\n );\n\n const handleActionChange = useCallback(\n (value: any) => {\n actions.onChangeHandler(value);\n },\n [actions]\n );\n\n const handleContinueClick = useCallback(() => {\n navigateTriggerPage(true);\n }, [navigateTriggerPage]);\n\n /* ----- Render ----- */\n\n return (\n <Flex\n css={{ paddingTop: \"$40\" }}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <Box css={{ width: 488 }}>\n <Heading size=\"h5\">{TRIGGERS_UI_STRINGS.ACCOUNT_DETAILS}</Heading>\n <Flex gap=\"$2\" css={{ marginTop: \"$4\" }}>\n <Text size=\"sm\" css={{ color: \"$neutral500\" }}>\n {TRIGGERS_UI_STRINGS.SURVEY_NAME_LABEL}\n </Text>\n <Text size=\"sm\" weight={\"medium\"} css={{ color: \"$neutral800\" }}>\n {surveyDetails.surveyName}\n </Text>\n </Flex>\n <Flex flexDirection=\"column\" gap=\"$8\" css={{ marginTop: \"$16\" }}>\n {accounts?.hasAccounts && (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {TRIGGERS_UI_STRINGS.CHOOSE_ACCOUNT}\n </FormLabel>\n <Select\n value={accountValue}\n options={accounts.options}\n isMulti={accounts?.isMulti}\n placeholder={TRIGGERS_UI_STRINGS.PLACEHOLDER_EMPTY}\n onChange={handleAccountChange}\n size=\"lg\"\n />\n <FormHelperText\n dangerouslySetInnerHTML={{\n __html: sanitizeHTML(accounts?.helperText ?? \"\"),\n }}\n size=\"xs\"\n css={{\n color: \"$neutral500\",\n a: {\n color: \"$primary600\",\n },\n }}\n />\n </Flex>\n )}\n {objects?.hasObjects && (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {TRIGGERS_UI_STRINGS.CHOOSE_OBJECT}\n </FormLabel>\n <Select\n options={objects.options}\n value={objectValue}\n isMulti={objects?.isMulti}\n placeholder={TRIGGERS_UI_STRINGS.PLACEHOLDER_EMPTY}\n onChange={handleObjectChange}\n size=\"lg\"\n />\n <FormHelperText\n dangerouslySetInnerHTML={{\n __html: sanitizeHTML(objects?.helperText ?? \"\"),\n }}\n size=\"xs\"\n css={{\n color: \"$neutral500\",\n a: {\n color: \"$primary600\",\n },\n }}\n />\n </Flex>\n )}\n {actions?.hasActions && (\n <Flex gap=\"$2\" flexDirection=\"column\">\n <FormLabel size=\"xs\" css={{ fontWeight: \"$5\" }}>\n {TRIGGERS_UI_STRINGS.CHOOSE_ACTION}\n </FormLabel>\n <Select\n size=\"lg\"\n options={actions.options}\n value={actionValue}\n isMulti={actions?.isMulti}\n placeholder={TRIGGERS_UI_STRINGS.PLACEHOLDER_EMPTY}\n css={{\n \".twigs-select__value-container--is-multi\": {\n gap: \"$2\",\n },\n }}\n components={{\n MultiValue: CustomMultiValue,\n }}\n onChange={handleActionChange}\n />\n <FormHelperText\n dangerouslySetInnerHTML={{\n __html: sanitizeHTML(actions?.helperText ?? \"\"),\n }}\n size=\"xs\"\n css={{\n color: \"$neutral500\",\n a: {\n color: \"$primary600\",\n },\n }}\n />\n </Flex>\n )}\n </Flex>\n <Button\n size=\"lg\"\n rightIcon={<ChevronRightIcon />}\n css={{ marginTop: \"$16\" }}\n // disabled={isContinueDisabled || forceDisableEventSetupCTA}\n onClick={handleContinueClick}\n >\n {TRIGGERS_UI_STRINGS.CONTINUE}\n </Button>\n </Box>\n </Flex>\n );\n};\n\nexport default EventSetup;\n\n"],"names":["CustomPill","useEffect","_a","_b","_c","useMemo","isEventSetupDisabled","useCallback","Flex","Box","Heading","TRIGGERS_UI_STRINGS","Text","FormLabel","Select","FormHelperText","sanitizeHTML","Button","ChevronRightIcon"],"mappings":"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"}
|
|
@@ -29,7 +29,8 @@ const TriggerHeader = ({
|
|
|
29
29
|
fields,
|
|
30
30
|
editFieldId,
|
|
31
31
|
eventFields,
|
|
32
|
-
triggerDetails
|
|
32
|
+
triggerDetails,
|
|
33
|
+
contactUniqueConstraint
|
|
33
34
|
}) => {
|
|
34
35
|
const [isDraftModalOpen, setIsDraftModalOpen] = React.useState(false);
|
|
35
36
|
const isDisabled = React.useMemo(
|
|
@@ -37,8 +38,8 @@ const TriggerHeader = ({
|
|
|
37
38
|
[actions, objects, eventFields]
|
|
38
39
|
);
|
|
39
40
|
const isSaveButtonDisabled = React.useMemo(
|
|
40
|
-
() => validation_utils.isSaveDisabled(fields, triggerDetails),
|
|
41
|
-
[fields, triggerDetails]
|
|
41
|
+
() => validation_utils.isSaveDisabled(fields, triggerDetails, contactUniqueConstraint),
|
|
42
|
+
[fields, triggerDetails, contactUniqueConstraint]
|
|
42
43
|
);
|
|
43
44
|
const headerTitle = React.useMemo(
|
|
44
45
|
() => editFieldId ? uiStrings.TRIGGERS_UI_STRINGS.EDIT_TRIGGER : uiStrings.TRIGGERS_UI_STRINGS.NEW_TRIGGER,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerHeader.js","sources":["../../../../src/triggers/components/TriggerHeader.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useState, useCallback, useMemo } from \"react\";\nimport {\n Button,\n Flex,\n Heading,\n IconButton,\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport DraftModal from \"../../commons/components/draftModal\";\nimport { TriggerHeaderProps } from \"../types\";\nimport { TRIGGERS_UI_STRINGS } from \"../constants\";\nimport { isEventSetupDisabled, isSaveDisabled } from \"../utils\";\n\n/* ----- Main Component ----- */\n\n/**\n * TriggerHeader component for displaying trigger navigation and actions\n *\n * @param {TriggerHeaderProps} props - Component props\n * @returns {JSX.Element} Rendered TriggerHeader component\n */\nconst TriggerHeader: React.FC<TriggerHeaderProps> = ({\n forceDisableTriggerCTA,\n draftHandler,\n navigateTriggerPage,\n objects,\n accounts,\n actions,\n onSaveTriggerLoader,\n hasPreviousMapping,\n isTriggerPage,\n onSaveHandler,\n navigateConfigurePage,\n previousMappingHandler,\n fields,\n editFieldId,\n eventFields,\n triggerDetails,\n}) => {\n /* ----- States ----- */\n\n const [isDraftModalOpen, setIsDraftModalOpen] = useState(false);\n\n /* ----- Constants ----- */\n\n const isDisabled = useMemo(\n () => isEventSetupDisabled(actions, objects, eventFields),\n [actions, objects, eventFields]\n );\n\n const isSaveButtonDisabled = useMemo(\n () => isSaveDisabled(fields, triggerDetails),\n [fields, triggerDetails]\n );\n\n const headerTitle = useMemo(\n () =>\n editFieldId\n ? TRIGGERS_UI_STRINGS.EDIT_TRIGGER\n : TRIGGERS_UI_STRINGS.NEW_TRIGGER,\n [editFieldId]\n );\n\n const saveButtonText = useMemo(\n () =>\n editFieldId\n ? TRIGGERS_UI_STRINGS.UPDATE_TRIGGER\n : TRIGGERS_UI_STRINGS.SAVE_TRIGGER,\n [editFieldId]\n );\n\n /* ----- Event Handlers ----- */\n\n const handleBackClick = useCallback(async () => {\n await previousMappingHandler();\n }, [previousMappingHandler]);\n\n const handleDraftSave = useCallback(async () => {\n await draftHandler(\"TRIGGER\", editFieldId);\n await previousMappingHandler();\n setIsDraftModalOpen(false);\n }, [draftHandler, editFieldId, previousMappingHandler]);\n\n const handleDraftCancel = useCallback(async () => {\n await previousMappingHandler();\n setIsDraftModalOpen(false);\n }, [previousMappingHandler]);\n\n const handleDraftClose = useCallback(() => {\n setIsDraftModalOpen(false);\n }, []);\n\n const handleEventSetupClick = useCallback(() => {\n if (isTriggerPage) {\n navigateConfigurePage();\n }\n }, [isTriggerPage, navigateConfigurePage]);\n\n const handleTriggerConditionsClick = useCallback(() => {\n navigateTriggerPage(true);\n }, [navigateTriggerPage]);\n\n const handleSaveClick = useCallback(() => {\n onSaveHandler(editFieldId);\n }, [onSaveHandler, editFieldId]);\n\n /* ----- Render ----- */\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n css={{\n position: \"sticky\",\n width: \"100%\",\n top: \"1px\",\n zIndex: \"99\",\n background: \"#ffff\",\n borderBottom: \"$borderWidths$xs solid $neutral200\",\n padding: \"$8 $12\",\n }}\n >\n {isDraftModalOpen && (\n <DraftModal\n onSaveHandler={handleDraftSave}\n onCloseHandler={handleDraftClose}\n onCancel={handleDraftCancel}\n />\n )}\n <Flex gap=\"$6\" alignItems=\"center\">\n <IconButton\n onClick={handleBackClick}\n color=\"default\"\n icon={<ArrowLeftIcon />}\n size=\"lg\"\n aria-label=\"Go back\"\n />\n <Heading size=\"h6\">{headerTitle}</Heading>\n </Flex>\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{\n \"& button\": { background: \"transparent !important\", fontSize: \"$md\" },\n }}\n >\n <Button\n css={{ color: !isTriggerPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n onClick={handleEventSetupClick}\n >\n {TRIGGERS_UI_STRINGS.EVENT_SETUP}\n </Button>\n <Arrow />\n <Button\n onClick={handleTriggerConditionsClick}\n css={{ color: !isDisabled ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n disabled={isDisabled}\n >\n {TRIGGERS_UI_STRINGS.TRIGGER_CONDITIONS}\n </Button>\n </Flex>\n <Button\n loading={onSaveTriggerLoader}\n size=\"lg\"\n disabled={isSaveButtonDisabled || forceDisableTriggerCTA}\n onClick={handleSaveClick}\n css={{ visibility: isTriggerPage ? \"visible\" : \"hidden\" }}\n >\n {saveButtonText}\n </Button>\n </Flex>\n );\n};\n\nexport default TriggerHeader;\n\n"],"names":["useState","useMemo","isEventSetupDisabled","isSaveDisabled","TRIGGERS_UI_STRINGS","useCallback","Flex","DraftModal","IconButton","ArrowLeftIcon","Heading","Button","Arrow"],"mappings":";;;;;;;;;;;;;;;AAwBA,MAAM,gBAA8C,CAAC;AAAA,EACnD,sBAAA;AAAA,EACA,YAAA;AAAA,EACA,mBAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA,EACA,sBAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAM;AAGJ,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,KAAK,CAAA;AAI9D,EAAA,MAAM,UAAA,GAAaC,aAAA;AAAA,IACjB,MAAMC,qCAAA,CAAqB,OAAA,EAAS,OAAA,EAAS,WAAW,CAAA;AAAA,IACxD,CAAC,OAAA,EAAS,OAAA,EAAS,WAAW;AAAA,GAChC;AAEA,EAAA,MAAM,oBAAA,GAAuBD,aAAA;AAAA,IAC3B,MAAME,+BAAA,CAAe,MAAA,EAAQ,
|
|
1
|
+
{"version":3,"file":"TriggerHeader.js","sources":["../../../../src/triggers/components/TriggerHeader.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useState, useCallback, useMemo } from \"react\";\nimport {\n Button,\n Flex,\n Heading,\n IconButton,\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport DraftModal from \"../../commons/components/draftModal\";\nimport { TriggerHeaderProps } from \"../types\";\nimport { TRIGGERS_UI_STRINGS } from \"../constants\";\nimport { isEventSetupDisabled, isSaveDisabled } from \"../utils\";\n\n/* ----- Main Component ----- */\n\n/**\n * TriggerHeader component for displaying trigger navigation and actions\n *\n * @param {TriggerHeaderProps} props - Component props\n * @returns {JSX.Element} Rendered TriggerHeader component\n */\nconst TriggerHeader: React.FC<TriggerHeaderProps> = ({\n forceDisableTriggerCTA,\n draftHandler,\n navigateTriggerPage,\n objects,\n accounts,\n actions,\n onSaveTriggerLoader,\n hasPreviousMapping,\n isTriggerPage,\n onSaveHandler,\n navigateConfigurePage,\n previousMappingHandler,\n fields,\n editFieldId,\n eventFields,\n triggerDetails,\n contactUniqueConstraint,\n}) => {\n /* ----- States ----- */\n\n const [isDraftModalOpen, setIsDraftModalOpen] = useState(false);\n\n /* ----- Constants ----- */\n\n const isDisabled = useMemo(\n () => isEventSetupDisabled(actions, objects, eventFields),\n [actions, objects, eventFields]\n );\n\n const isSaveButtonDisabled = useMemo(\n () => isSaveDisabled(fields, triggerDetails, contactUniqueConstraint),\n [fields, triggerDetails, contactUniqueConstraint]\n );\n\n const headerTitle = useMemo(\n () =>\n editFieldId\n ? TRIGGERS_UI_STRINGS.EDIT_TRIGGER\n : TRIGGERS_UI_STRINGS.NEW_TRIGGER,\n [editFieldId]\n );\n\n const saveButtonText = useMemo(\n () =>\n editFieldId\n ? TRIGGERS_UI_STRINGS.UPDATE_TRIGGER\n : TRIGGERS_UI_STRINGS.SAVE_TRIGGER,\n [editFieldId]\n );\n\n /* ----- Event Handlers ----- */\n\n const handleBackClick = useCallback(async () => {\n await previousMappingHandler();\n }, [previousMappingHandler]);\n\n const handleDraftSave = useCallback(async () => {\n await draftHandler(\"TRIGGER\", editFieldId);\n await previousMappingHandler();\n setIsDraftModalOpen(false);\n }, [draftHandler, editFieldId, previousMappingHandler]);\n\n const handleDraftCancel = useCallback(async () => {\n await previousMappingHandler();\n setIsDraftModalOpen(false);\n }, [previousMappingHandler]);\n\n const handleDraftClose = useCallback(() => {\n setIsDraftModalOpen(false);\n }, []);\n\n const handleEventSetupClick = useCallback(() => {\n if (isTriggerPage) {\n navigateConfigurePage();\n }\n }, [isTriggerPage, navigateConfigurePage]);\n\n const handleTriggerConditionsClick = useCallback(() => {\n navigateTriggerPage(true);\n }, [navigateTriggerPage]);\n\n const handleSaveClick = useCallback(() => {\n onSaveHandler(editFieldId);\n }, [onSaveHandler, editFieldId]);\n\n /* ----- Render ----- */\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n css={{\n position: \"sticky\",\n width: \"100%\",\n top: \"1px\",\n zIndex: \"99\",\n background: \"#ffff\",\n borderBottom: \"$borderWidths$xs solid $neutral200\",\n padding: \"$8 $12\",\n }}\n >\n {isDraftModalOpen && (\n <DraftModal\n onSaveHandler={handleDraftSave}\n onCloseHandler={handleDraftClose}\n onCancel={handleDraftCancel}\n />\n )}\n <Flex gap=\"$6\" alignItems=\"center\">\n <IconButton\n onClick={handleBackClick}\n color=\"default\"\n icon={<ArrowLeftIcon />}\n size=\"lg\"\n aria-label=\"Go back\"\n />\n <Heading size=\"h6\">{headerTitle}</Heading>\n </Flex>\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{\n \"& button\": { background: \"transparent !important\", fontSize: \"$md\" },\n }}\n >\n <Button\n css={{ color: !isTriggerPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n onClick={handleEventSetupClick}\n >\n {TRIGGERS_UI_STRINGS.EVENT_SETUP}\n </Button>\n <Arrow />\n <Button\n onClick={handleTriggerConditionsClick}\n css={{ color: !isDisabled ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n disabled={isDisabled}\n >\n {TRIGGERS_UI_STRINGS.TRIGGER_CONDITIONS}\n </Button>\n </Flex>\n <Button\n loading={onSaveTriggerLoader}\n size=\"lg\"\n disabled={isSaveButtonDisabled || forceDisableTriggerCTA}\n onClick={handleSaveClick}\n css={{ visibility: isTriggerPage ? \"visible\" : \"hidden\" }}\n >\n {saveButtonText}\n </Button>\n </Flex>\n );\n};\n\nexport default TriggerHeader;\n\n"],"names":["useState","useMemo","isEventSetupDisabled","isSaveDisabled","TRIGGERS_UI_STRINGS","useCallback","Flex","DraftModal","IconButton","ArrowLeftIcon","Heading","Button","Arrow"],"mappings":"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"}
|
|
@@ -54,7 +54,8 @@ const Trigger = ({
|
|
|
54
54
|
triggerDetails,
|
|
55
55
|
setTriggerDetails,
|
|
56
56
|
fieldOptions,
|
|
57
|
-
variableOptions
|
|
57
|
+
variableOptions,
|
|
58
|
+
contactUniqueConstraint
|
|
58
59
|
}) => {
|
|
59
60
|
var _a, _b, _c, _d, _e, _f;
|
|
60
61
|
const { isEditing, setIsEditing } = useTriggerState.useTriggerState();
|
|
@@ -169,6 +170,33 @@ const Trigger = ({
|
|
|
169
170
|
},
|
|
170
171
|
[setTriggerFields]
|
|
171
172
|
);
|
|
173
|
+
const handleContactUniqueFieldChange = React.useCallback(
|
|
174
|
+
(field) => {
|
|
175
|
+
const constraintKey = contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.value;
|
|
176
|
+
if (!constraintKey)
|
|
177
|
+
return;
|
|
178
|
+
setTriggerFields(
|
|
179
|
+
"contactUniqueField",
|
|
180
|
+
(field == null ? void 0 : field.value) ? { [constraintKey]: field.value } : null
|
|
181
|
+
);
|
|
182
|
+
},
|
|
183
|
+
[setTriggerFields, contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.value]
|
|
184
|
+
);
|
|
185
|
+
const selectedContactUniqueOption = React.useMemo(() => {
|
|
186
|
+
var _a2;
|
|
187
|
+
const constraintKey = contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.value;
|
|
188
|
+
const stored = triggerDetails == null ? void 0 : triggerDetails.contactUniqueField;
|
|
189
|
+
if (!constraintKey || !stored)
|
|
190
|
+
return null;
|
|
191
|
+
const variableValue = stored[constraintKey];
|
|
192
|
+
if (!variableValue)
|
|
193
|
+
return null;
|
|
194
|
+
return (_a2 = variableOptions == null ? void 0 : variableOptions.find((option) => (option == null ? void 0 : option.value) === variableValue)) != null ? _a2 : null;
|
|
195
|
+
}, [
|
|
196
|
+
contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.value,
|
|
197
|
+
triggerDetails == null ? void 0 : triggerDetails.contactUniqueField,
|
|
198
|
+
variableOptions
|
|
199
|
+
]);
|
|
172
200
|
const resetEditing = React.useCallback(() => {
|
|
173
201
|
setIsEditing(false);
|
|
174
202
|
}, [setIsEditing]);
|
|
@@ -305,7 +333,30 @@ const Trigger = ({
|
|
|
305
333
|
},
|
|
306
334
|
options: variableOptions
|
|
307
335
|
}
|
|
308
|
-
))
|
|
336
|
+
)), (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(
|
|
337
|
+
select.Select,
|
|
338
|
+
{
|
|
339
|
+
placeholder: "",
|
|
340
|
+
size: "lg",
|
|
341
|
+
isClearable: false,
|
|
342
|
+
value: selectedContactUniqueOption,
|
|
343
|
+
onChange: handleContactUniqueFieldChange,
|
|
344
|
+
css: {
|
|
345
|
+
p: {
|
|
346
|
+
fontFamily: "'Roboto Mono', monospace !important"
|
|
347
|
+
},
|
|
348
|
+
" .twigs-select__indicators": {
|
|
349
|
+
height: "40px"
|
|
350
|
+
},
|
|
351
|
+
"& .twigs-select__control": {
|
|
352
|
+
overflow: "auto",
|
|
353
|
+
maxHeight: 488,
|
|
354
|
+
height: "100%"
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
options: variableOptions
|
|
358
|
+
}
|
|
359
|
+
)) : null) : null, hasFiltersWithValues ? /* @__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(
|
|
309
360
|
select.Select,
|
|
310
361
|
{
|
|
311
362
|
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, useMemo } 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 { isEmpty } from \"../utils\";\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};\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}) => {\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 /* ----- 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 hasFiltersWithValues = useMemo(\n () =>\n fields.filters.some((filter: any) =>\n filter?.filter?.some((currentFilter: any) => !!currentFilter?.value)\n ),\n [fields.filters]\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 resetEditing = useCallback(() => {\n setIsEditing(false);\n }, [setIsEditing]);\n\n /* ----- Render ----- */\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 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 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 />\n ))}\n </Flex>\n <Button\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 {hasFiltersWithValues ? (\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 {hasFiltersWithValues ? (\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","_a","topLevelCondition","_b","useCallback","Flex","Box","Heading","Text","DropdownMenu","DropdownMenuTrigger","ChevronDownIcon","DropdownMenuContent","DropdownMenuItem","Filter","Button","PlusIcon","FormLabel","Select","CustomMultiValue","CustomShareOption","CustomSingleValue","isEmpty","CustomShareChannelOption","CustomShareChannelSingleValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,MAAM,UAAkC,CAAC;AAAA,EACvC,MAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAM;AAnEN,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAsEE,EAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAa,GAAIA,+BAAA,EAAgB;AAEpD,EAAA,MAAM;AAAA,IACJ,kBAAA;AAAA,IACA,wBAAA;AAAA,IACA,eAAA;AAAA,IACA,mBAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,MACEC,uCAAA,CAAoB;AAAA,IACtB,SAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIC,6BAAA,CAAe;AAAA,IAClC,KAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAU,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,QAAA;AAAA,IACzB;AAAA,GACD,CAAA;AAID,EAAA,MAAM,iBAAA,GAAoBC,aAAA;AAAA,IACxB,MAAG;AA9FP,MAAA,IAAAC,GAAAA;AA+FM,MAAA,OAAA,CAAAA,MAAAC,uBAAA,CAAkB,IAAA;AAAA,QAChB,CAAC,SAAA,KAAc,SAAA,CAAU,KAAA,KAAU,MAAA,CAAO;AAAA,OAC5C,KAFA,gBAAAD,GAAAA,CAEG,KAAA;AAAA,IAAA,CAAA;AAAA,IACL,CAAC,OAAO,SAAS;AAAA,GACnB;AAEA,EAAA,MAAM,oBAAA,GAAuBD,aAAA;AAAA,IAC3B,MACE,OAAO,OAAA,CAAQ,IAAA;AAAA,MAAK,CAAC,MAAA,KAAa;AAvGxC,QAAA,IAAAC,GAAAA;AAwGQ,QAAA,OAAA,CAAAA,GAAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,MAAA,KAAR,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAgB,KAAK,CAAC,aAAA,KAAuB,CAAC,EAAC,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,KAAA,CAAA,CAAA;AAAA,MAAA;AAAA,KAChE;AAAA,IACF,CAAC,OAAO,OAAO;AAAA,GACjB;AAEA,EAAA,MAAM,6BAAA,GAAgCD,aAAA;AAAA,IACpC,MACE,qBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,qBAAA,CAAuB,MAAA;AAAA,MACrB,CAAC,MAAA,KAAa;AAhHtB,QAAA,IAAAC,GAAAA;AAgHyB,QAAA,OAAA,CAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,IAAA,OAAA,CAASA,GAAAA,GAAA,cAAA,CAAe,SAAA,KAAf,gBAAAA,GAAAA,CAA0B,KAAA,CAAA;AAAA,MAAA;AAAA,KAAA;AAAA,IAEhE,CAAC,qBAAA,EAAA,CAAuB,EAAA,GAAA,cAAA,CAAe,SAAA,KAAf,mBAA0B,KAAK;AAAA,GACzD;AAEA,EAAA,MAAM,2BAAA,GAA8BD,cAAQ,MAAM;AArHpD,IAAA,IAAAC,GAAAA,EAAAE,GAAAA;AAsHI,IAAA,MAAM,WAAW,QAAA,CAAS,MAAA;AAAA,MACxB,CAAC,OAAA,KAAc;AAvHrB,QAAA,IAAAF,GAAAA;AAuHwB,QAAA,OAAA,CAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,IAAA,OAAA,CAASA,GAAAA,GAAA,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,SAAA,KAAhB,gBAAAA,GAAAA,CAA2B,KAAA,CAAA;AAAA,MAAA;AAAA,KACjE;AACA,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,OAAO,QAAA;AAAA,IACT;AACA,IAAA,IAAA,CAAA,CACEA,GAAAA,GAAA,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,SAAA,KAAhB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAA2B,KAAA,MAAU,UAAA,IAAA,CAAA,CACrCE,GAAAA,GAAA,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,SAAA,KAAhB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAA2B,WAAU,KAAA,EACrC;AACA,MAAA,OAAO;AAAA,QACL;AAAA,UACE,KAAA,EAAO,YAAA;AAAA,UACP,KAAA,EAAO;AAAA;AACT,OACF;AAAA,IACF;AACA,IAAA,OAAO,EAAC;AAAA,EACV,GAAG,CAAC,QAAA,EAAA,CAAU,sDAAgB,SAAA,KAAhB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA2B,KAAK,CAAC,CAAA;AAI/C,EAAA,MAAM,gBAAA,GAAmBC,iBAAA;AAAA,IACvB,CAAC,UAAkB,KAAA,KAAe;AAChC,MAAA,iBAAA,CAAkB,CAAC,IAAA,KAAe,aAAA,CAAA,cAAA,CAAA,EAAA,EAC7B,IAAA,CAAA,EAD6B;AAAA,QAEhC,CAAC,QAAQ,GAAG;AAAA,OACd,CAAE,CAAA;AAAA,IACJ,CAAA;AAAA,IACA,CAAC,iBAAiB;AAAA,GACpB;AAEA,EAAA,MAAM,qBAAA,GAAwBA,iBAAA;AAAA,IAC5B,CAAC,cAAA,KAA2B;AAC1B,MAAA,SAAA,CAAU,CAAC,IAAA,KAAe,aAAA,CAAA,cAAA,CAAA,EAAA,EACrB,IAAA,CAAA,EADqB;AAAA,QAExB,SAAA,EAAW;AAAA,OACb,CAAE,CAAA;AAAA,IACJ,CAAA;AAAA,IACA,CAAC,SAAS;AAAA,GACZ;AAEA,EAAA,MAAM,uBAAA,GAA0BA,kBAAY,MAAM;AAChD,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,kBAAA,EAAmB;AAAA,EACrB,CAAA,EAAG,CAAC,YAAA,EAAc,kBAAkB,CAAC,CAAA;AAErC,EAAA,MAAM,qBAAA,GAAwBA,iBAAA;AAAA,IAC5B,CAAC,KAAA,KAAe;AACd,MAAA,gBAAA,CAAiB,aAAa,KAAK,CAAA;AAAA,IACrC,CAAA;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAA,MAAM,qBAAA,GAAwBA,iBAAA;AAAA,IAC5B,CAAC,KAAA,KAAe;AACd,MAAA,gBAAA,CAAiB,aAAa,KAAK,CAAA;AACnC,MAAA,gBAAA,CAAiB,kBAAkB,IAAI,CAAA;AACvC,MAAA,gBAAA,CAAiB,gBAAgB,IAAI,CAAA;AAAA,IACvC,CAAA;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAA,MAAM,0BAAA,GAA6BA,iBAAA;AAAA,IACjC,CAAC,KAAA,KAAe;AACd,MAAA,gBAAA,CAAiB,kBAAkB,KAAK,CAAA;AAAA,IAC1C,CAAA;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAA,MAAM,wBAAA,GAA2BA,iBAAA;AAAA,IAC/B,CAAC,KAAA,KAAe;AACd,MAAA,gBAAA,CAAiB,gBAAgB,KAAK,CAAA;AAAA,IACxC,CAAA;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAA,MAAM,YAAA,GAAeA,kBAAY,MAAM;AACrC,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAGjB,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,MACC,cAAA,EAAe,QAAA;AAAA,MACf,UAAA,EAAW,QAAA;AAAA,MACX,GAAA,EAAK,EAAE,SAAA,EAAW,KAAA;AAAM,KAAA;AAAA,oBAExB,KAAA,CAAA,aAAA,CAACC,WAAI,GAAA,EAAK,EAAE,UAAU,GAAA,EAAK,KAAA,EAAO,MAAA,EAAO,EAAA,kBACvC,KAAA,CAAA,aAAA,CAACC,eAAA,EAAA,EAAQ,MAAK,IAAA,EAAA,EAAK,eAAa,CAAA,kBAChC,KAAA,CAAA,aAAA,CAACF,SAAA,EAAA,EAAK,UAAA,EAAW,UAAS,GAAA,EAAK,EAAE,SAAA,EAAW,KAAA,EAAM,EAAA,kBAChD,KAAA,CAAA,aAAA;AAAA,MAACG,SAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,IAAA;AAAA,QACL,GAAA,EAAK,EAAE,KAAA,EAAO,aAAA,EAAe,SAAS,aAAA;AAAc,OAAA;AAAA,MACrD,aAAA;AAAA,MACa;AAAA,uBAEd,KAAA,CAAA,aAAA,CAACC,qBAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAACC,4BAAA,EAAA,EAAoB,SAAO,IAAA,EAAA,kBAC1B,KAAA,CAAA,aAAA;AAAA,MAACL,SAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAW,QAAA;AAAA,QACX,GAAA,EAAK;AAAA,UACH,MAAA,EAAQ;AAAA;AACV,OAAA;AAAA,sBAEA,KAAA,CAAA,aAAA;AAAA,QAACG,SAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,IAAA;AAAA,UACL,MAAA,EAAO,QAAA;AAAA,UACP,GAAA,EAAK,EAAE,KAAA,EAAO,aAAA,EAAe,YAAY,KAAA;AAAM,SAAA;AAAA,QAE9C;AAAA,OACH;AAAA,sBACA,KAAA,CAAA,aAAA,CAACG,2BAAA,EAAA,EAAgB,IAAA,EAAM,EAAA,EAAI,OAAM,SAAA,EAAU;AAAA,KAE/C,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,MAACC,4BAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,KAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,GAAA,EAAK;AAAA,UACH,OAAA,EAAS,MAAA;AAAA,UACT,QAAA,EAAU;AAAA;AACZ,OAAA;AAAA,MAECV,uBAAA,CAAkB,GAAA,CAAI,CAAC,SAAA,qBACtB,KAAA,CAAA,aAAA;AAAA,QAACW,yBAAA;AAAA,QAAA;AAAA,UACC,KAAK,SAAA,CAAU,KAAA;AAAA,UACf,OAAA,EAAS,MAAM,qBAAA,CAAsB,SAAA,CAAU,KAAK,CAAA;AAAA,UACpD,GAAA,EAAK,cAAA,CAAA,EAAA,EACC,SAAA,CAAU,KAAA,KAAU,OAAO,SAAA,IAAa;AAAA,YAC1C,UAAA,EAAY,aAAA;AAAA,YACZ,KAAA,EAAO,aAAA;AAAA,YACP,SAAA,EAAW;AAAA,cACT,UAAA,EAAY,aAAA;AAAA,cACZ,KAAA,EAAO;AAAA;AACT,WACF;AAAA,SAAA;AAAA,QAGD,SAAA,CAAU;AAAA,OAEd;AAAA,KAEL,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,MAACL,SAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,IAAA;AAAA,QACL,GAAA,EAAK,EAAE,KAAA,EAAO,aAAA,EAAe,SAAS,aAAA;AAAc,OAAA;AAAA,MACrD;AAAA,KAGH,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,MAACH,SAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAc,QAAA;AAAA,QACd,GAAA,EAAI,KAAA;AAAA,QACJ,GAAA,EAAK,EAAE,SAAA,EAAA,CAAA,CAAW,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,YAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiB,MAAA,IAAS,QAAQ,CAAA;AAAE,OAAA;AAAA,MAAA,CAErD,sCAAQ,OAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiB,GAAA,CAAI,CAAC,SAAc,KAAA,qBACnC,KAAA,CAAA,aAAA;AAAA,QAACS,aAAA;AAAA,QAAA;AAAA,UACC,KAAK,OAAA,CAAQ,EAAA;AAAA,UACb,OAAA;AAAA,UACA,MAAA;AAAA,UACA,kBAAA;AAAA,UACA,KAAA;AAAA,UACA,SAAA;AAAA,UACA,YAAA;AAAA,UACA,eAAA;AAAA,UACA,YAAA;AAAA,UACA,wBAAA;AAAA,UACA,uBAAA;AAAA,UACA,mBAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,KAEJ,kBACA,KAAA,CAAA,aAAA;AAAA,MAACC,aAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,EAAE,SAAA,EAAW,IAAA,EAAM,YAAY,KAAA,EAAM;AAAA,QAC1C,QAAA,sCAAWC,aAAA,EAAA,IAAS,CAAA;AAAA,QACpB,OAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAS;AAAA,OAAA;AAAA,MACV;AAAA,KAED,EACC,oBAAA,mBACC,KAAA,CAAA,aAAA,CAACX,SAAA,EAAA,EAAK,eAAc,QAAA,EAAS,GAAA,EAAI,KAAA,EAAM,GAAA,EAAK,EAAE,SAAA,EAAW,KAAA,EAAM,EAAA,kBAC7D,KAAA,CAAA,aAAA,CAACE,mBAAQ,IAAA,EAAK,IAAA,EAAA,EAAK,yBAAuB,CAAA,sCACzCF,SAAA,EAAA,EAAK,GAAA,EAAI,IAAA,EAAK,aAAA,EAAc,4BAC3B,KAAA,CAAA,aAAA,CAACY,mBAAA,EAAA,EAAU,IAAA,EAAK,IAAA,EAAK,KAAK,EAAE,UAAA,EAAY,IAAA,EAAK,EAAA,EAAG,eAEhD,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,MAACC,aAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAY,EAAA;AAAA,QACZ,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAO,IAAA;AAAA,QACP,iBAAA,EAAmB,KAAA;AAAA,QACnB,WAAA,EAAa,KAAA;AAAA,QACb,OAAO,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,SAAA;AAAA,QACvB,QAAA,EAAU,qBAAA;AAAA,QACV,GAAA,EAAK;AAAA,UACH,CAAA,EAAG;AAAA,YACD,UAAA,EAAY;AAAA,WACd;AAAA,UACA,4BAAA,EAA8B;AAAA,YAC5B,MAAA,EAAQ;AAAA,WACV;AAAA,UACA,0BAAA,EAA4B;AAAA,YAC1B,QAAA,EAAU,MAAA;AAAA,YACV,SAAA,EAAW,GAAA;AAAA,YACX,MAAA,EAAQ;AAAA,WACV;AAAA,UACA,0CAAA,EAA4C;AAAA,YAC1C,GAAA,EAAK;AAAA;AACP,SACF;AAAA,QACA,UAAA,EAAY;AAAA,UACV,UAAA,EAAYC;AAAA,SACd;AAAA,QACA,OAAA,EAAS;AAAA;AAAA,KAEb,CACF,CAAA,GACE,IAAA,EACH,uCACC,KAAA,CAAA,aAAA,CAACd,SAAA,EAAA,EAAK,eAAc,QAAA,EAAS,GAAA,EAAI,OAAM,GAAA,EAAK,EAAE,aAAa,KAAA,EAAM,EAAA,sCAC9DE,eAAA,EAAA,EAAQ,IAAA,EAAK,QAAK,aAAW,CAAA,sCAC7BF,SAAA,EAAA,EAAK,aAAA,EAAc,UAAS,GAAA,EAAI,IAAA,EAAA,sCAC9BA,SAAA,EAAA,EAAK,GAAA,EAAI,MAAK,aAAA,EAAc,QAAA,EAAA,sCAC1BY,mBAAA,EAAA,EAAU,IAAA,EAAK,MAAK,GAAA,EAAK,EAAE,YAAY,IAAA,EAAK,EAAA,EAAG,mBAEhD,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,MAACC,aAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAY,EAAA;AAAA,QACZ,IAAA,EAAK,IAAA;AAAA,QACL,UAAA,EAAY;AAAA,UACV,MAAA,EAAQE,uCAAA;AAAA,UACR,WAAA,EAAaC;AAAA,SACf;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,WAAA,EAAa,CAAC,QAAA,EAAU,KAAA,KAAW,iCAC9B,QAAA,CAAA,EAD8B;AAAA,YAEjC,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY;AAAA,WACd;AAAA,SACF;AAAA,QACA,OAAO,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,SAAA;AAAA,QACvB,QAAA,EAAU,qBAAA;AAAA,QACV,OAAA,EAAS;AAAA,UACP;AAAA,YACE,EAAA,EAAI,CAAA;AAAA,YACJ,KAAA,EAAO,OAAA;AAAA,YACP,KAAA,EAAO;AAAA,WACT;AAAA,UACA;AAAA,YACE,EAAA,EAAI,CAAA;AAAA,YACJ,KAAA,EAAO,KAAA;AAAA,YACP,KAAA,EAAO;AAAA,WACT;AAAA,UACA;AAAA,YACE,EAAA,EAAI,CAAA;AAAA,YACJ,KAAA,EAAO,UAAA;AAAA,YACP,KAAA,EAAO;AAAA;AACT;AACF;AAAA,KAEJ,CAAA,EACC,CAACC,wBAAA,CAAQ,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,SAAS,CAAA,oBACjC,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAACjB,SAAA,EAAA,EAAK,GAAA,EAAI,IAAA,EAAK,eAAc,QAAA,EAAA,kBAC3B,KAAA,CAAA,aAAA,CAACY,mBAAA,EAAA,EAAU,IAAA,EAAK,IAAA,EAAK,GAAA,EAAK,EAAE,UAAA,EAAY,IAAA,EAAK,EAAA,EAAG,kBAEhD,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,MAACC,aAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAY,EAAA;AAAA,QACZ,IAAA,EAAK,IAAA;AAAA,QACL,QAAA,EAAU,0BAAA;AAAA,QACV,UAAA,EAAY,EAAA,CAAC,EAAA,GAAA,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,SAAA,KAAhB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA2B,KAAA,CAAA;AAAA,QACxC,OAAO,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,cAAA;AAAA,QACvB,OAAA,EAAS;AAAA;AAAA,KAEb,CAAA,kBACA,KAAA,CAAA,aAAA,CAACb,aAAK,GAAA,EAAI,IAAA,EAAK,eAAc,QAAA,EAAA,kBAC3B,KAAA,CAAA,aAAA,CAACY,mBAAA,EAAA,EAAU,IAAA,EAAK,MAAK,GAAA,EAAK,EAAE,YAAY,IAAA,EAAK,EAAA,EAAG,sBAEhD,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,MAACC,aAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAY,EAAA;AAAA,QACZ,IAAA,EAAK,IAAA;AAAA,QACL,UAAA,EAAY;AAAA,UACV,MAAA,EAAQK,8CAAA;AAAA,UACR,WAAA,EAAaC;AAAA,SACf;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,WAAA,EAAa,CAAC,QAAA,EAAU,KAAA,KAAW,iCAC9B,QAAA,CAAA,EAD8B;AAAA,YAEjC,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY;AAAA,WACd;AAAA,SACF;AAAA,QACA,UAAA,EAAY,EAAA,CAAC,EAAA,GAAA,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,SAAA,KAAhB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA2B,KAAA,CAAA;AAAA,QACxC,OAAO,cAAA,IAAA,IAAA,GAAA,MAAA,GAAA,cAAA,CAAgB,YAAA;AAAA,QACvB,QAAA,EAAU,wBAAA;AAAA,QACV,OAAA,EAAS;AAAA;AAAA,KAEb,CACF,CAEJ,CACF,IACE,IACN;AAAA,GACF;AAEJ;;;;"}
|
|
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, useMemo } 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 {\n useTriggerState,\n useFilterManagement,\n useChannelData,\n} from \"../hooks\";\nimport { isEmpty } from \"../utils\";\nimport { ContactUniqueConstraint } from \"../types\";\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};\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}) => {\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 /* ----- 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 hasFiltersWithValues = useMemo(\n () =>\n fields.filters.some((filter: any) =>\n filter?.filter?.some((currentFilter: any) => !!currentFilter?.value)\n ),\n [fields.filters]\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 /* ----- Render ----- */\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 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 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 />\n ))}\n </Flex>\n <Button\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 {hasFiltersWithValues ? (\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 {hasFiltersWithValues ? (\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","_a","topLevelCondition","_b","useCallback","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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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var index = require('../services/index.js');
|
|
5
|
+
|
|
6
|
+
const useContactUniqueConstraint = ({
|
|
7
|
+
token,
|
|
8
|
+
apiURL,
|
|
9
|
+
contactUniqueConstraint
|
|
10
|
+
}) => {
|
|
11
|
+
const [constraint, setConstraint] = React.useState(
|
|
12
|
+
contactUniqueConstraint != null ? contactUniqueConstraint : null
|
|
13
|
+
);
|
|
14
|
+
const loadConstraint = React.useCallback(
|
|
15
|
+
async (token2, apiURL2) => {
|
|
16
|
+
const response = await index.fetchContactUniqueConstraint(token2, apiURL2);
|
|
17
|
+
setConstraint(response != null ? response : null);
|
|
18
|
+
},
|
|
19
|
+
[]
|
|
20
|
+
);
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
if (contactUniqueConstraint) {
|
|
23
|
+
setConstraint(contactUniqueConstraint);
|
|
24
|
+
}
|
|
25
|
+
}, [contactUniqueConstraint]);
|
|
26
|
+
React.useEffect(() => {
|
|
27
|
+
if (!contactUniqueConstraint && token && apiURL) {
|
|
28
|
+
loadConstraint(token, apiURL);
|
|
29
|
+
}
|
|
30
|
+
}, [token, apiURL, contactUniqueConstraint, loadConstraint]);
|
|
31
|
+
return { constraint };
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
exports.useContactUniqueConstraint = useContactUniqueConstraint;
|
|
35
|
+
//# sourceMappingURL=use-contact-unique-constraint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-contact-unique-constraint.js","sources":["../../../../src/triggers/hooks/use-contact-unique-constraint.ts"],"sourcesContent":["/* ----- Imports ----- */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { fetchContactUniqueConstraint } from '../services';\n\n/* ----- Types / Interfaces ----- */\n\nexport type ContactUniqueConstraint = {\n id: string;\n value: string;\n label: string;\n hasUniqueConstraint: boolean;\n} | null;\n\ntype UseContactUniqueConstraintProps = {\n token: string;\n apiURL: string;\n contactUniqueConstraint?: ContactUniqueConstraint;\n};\n\ntype UseContactUniqueConstraintReturn = {\n constraint: ContactUniqueConstraint;\n};\n\n/* ----- Hook ----- */\n\n/**\n * Custom hook to fetch and manage contact unique constraint metadata.\n * If a value is supplied via props, it is used as-is. Otherwise the API is called.\n */\nexport const useContactUniqueConstraint = ({\n token,\n apiURL,\n contactUniqueConstraint,\n}: UseContactUniqueConstraintProps): UseContactUniqueConstraintReturn => {\n const [constraint, setConstraint] = useState<ContactUniqueConstraint>(\n contactUniqueConstraint ?? null\n );\n\n const loadConstraint = useCallback(\n async (token: string, apiURL: string) => {\n const response = await fetchContactUniqueConstraint(token, apiURL);\n setConstraint(response ?? null);\n },\n []\n );\n\n useEffect(() => {\n if (contactUniqueConstraint) {\n setConstraint(contactUniqueConstraint);\n }\n }, [contactUniqueConstraint]);\n\n useEffect(() => {\n if (!contactUniqueConstraint && token && apiURL) {\n loadConstraint(token, apiURL);\n }\n }, [token, apiURL, contactUniqueConstraint, loadConstraint]);\n\n return { constraint };\n};\n"],"names":["useState","useCallback","token","apiURL","fetchContactUniqueConstraint","useEffect"],"mappings":";;;;;AA8BO,MAAM,6BAA6B,CAAC;AAAA,EACzC,KAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,KAAyE;AACvE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,cAAA;AAAA,IAClC,uBAAA,IAAA,IAAA,GAAA,uBAAA,GAA2B;AAAA,GAC7B;AAEA,EAAA,MAAM,cAAA,GAAiBC,iBAAA;AAAA,IACrB,OAAOC,QAAeC,OAAAA,KAAmB;AACvC,MAAA,MAAM,QAAA,GAAW,MAAMC,kCAAA,CAA6BF,MAAAA,EAAOC,OAAM,CAAA;AACjE,MAAA,aAAA,CAAc,8BAAY,IAAI,CAAA;AAAA,IAChC,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAAE,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,uBAAA,EAAyB;AAC3B,MAAA,aAAA,CAAc,uBAAuB,CAAA;AAAA,IACvC;AAAA,EACF,CAAA,EAAG,CAAC,uBAAuB,CAAC,CAAA;AAE5B,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,uBAAA,IAA2B,KAAA,IAAS,MAAA,EAAQ;AAC/C,MAAA,cAAA,CAAe,OAAO,MAAM,CAAA;AAAA,IAC9B;AAAA,EACF,GAAG,CAAC,KAAA,EAAO,MAAA,EAAQ,uBAAA,EAAyB,cAAc,CAAC,CAAA;AAE3D,EAAA,OAAO,EAAE,UAAA,EAAW;AACtB;;;;"}
|
|
@@ -8,6 +8,7 @@ require('../commons/components/custom-pill.js');
|
|
|
8
8
|
require('../commons/constants/index.js');
|
|
9
9
|
var useEditFieldInit = require('./hooks/use-edit-field-init.js');
|
|
10
10
|
require('../node_modules/dayjs/dayjs.min.js');
|
|
11
|
+
var useContactUniqueConstraint = require('./hooks/use-contact-unique-constraint.js');
|
|
11
12
|
var themeProvider = require('../node_modules/@sparrowengg/twigs-react/dist/es/theme-provider/theme-provider.js');
|
|
12
13
|
var box = require('../node_modules/@sparrowengg/twigs-react/dist/es/box/box.js');
|
|
13
14
|
|
|
@@ -35,13 +36,19 @@ const Triggers = ({
|
|
|
35
36
|
setTriggerDetails,
|
|
36
37
|
editField,
|
|
37
38
|
fieldOptions,
|
|
38
|
-
variableOptions
|
|
39
|
+
variableOptions,
|
|
40
|
+
contactUniqueConstraint
|
|
39
41
|
}) => {
|
|
40
42
|
useEditFieldInit.useEditFieldInit({
|
|
41
43
|
editField,
|
|
42
44
|
setFields,
|
|
43
45
|
setTriggerDetails
|
|
44
46
|
});
|
|
47
|
+
const { constraint: resolvedContactUniqueConstraint } = useContactUniqueConstraint.useContactUniqueConstraint({
|
|
48
|
+
token,
|
|
49
|
+
apiURL,
|
|
50
|
+
contactUniqueConstraint
|
|
51
|
+
});
|
|
45
52
|
const handleNavigateConfigurePage = React.useCallback(() => {
|
|
46
53
|
navigateTriggerPage(false);
|
|
47
54
|
}, [navigateTriggerPage]);
|
|
@@ -80,7 +87,8 @@ const Triggers = ({
|
|
|
80
87
|
triggerDetails,
|
|
81
88
|
fields,
|
|
82
89
|
editFieldId,
|
|
83
|
-
eventFields: editField == null ? void 0 : editField.fieldValues
|
|
90
|
+
eventFields: editField == null ? void 0 : editField.fieldValues,
|
|
91
|
+
contactUniqueConstraint: resolvedContactUniqueConstraint
|
|
84
92
|
}
|
|
85
93
|
), !isTriggerPage ? /* @__PURE__ */ React.createElement(
|
|
86
94
|
EventSetup.default,
|
|
@@ -107,7 +115,8 @@ const Triggers = ({
|
|
|
107
115
|
triggerDetails,
|
|
108
116
|
setTriggerDetails,
|
|
109
117
|
fieldOptions,
|
|
110
|
-
variableOptions
|
|
118
|
+
variableOptions,
|
|
119
|
+
contactUniqueConstraint: resolvedContactUniqueConstraint
|
|
111
120
|
}
|
|
112
121
|
))
|
|
113
122
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/triggers/index.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport { Box, ThemeProvider } from \"@sparrowengg/twigs-react\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { EventSetup, TriggerHeader, Trigger } from \"./components\";\nimport { TriggersProps } from \"./types\";\nimport { useEditFieldInit } from \"./hooks\";\n\n/* ----- Main Component ----- */\n\n/**\n * Triggers component for managing survey triggers\n *\n * @param {TriggersProps} props - Component props\n * @returns {JSX.Element} Rendered Triggers component\n */\nexport const Triggers: React.FC<TriggersProps> = ({\n forceDisableTriggerCTA,\n draftHandler,\n onSaveTriggerLoader,\n objects,\n accounts,\n actions,\n isTriggerPage,\n navigateTriggerPage,\n previousMapping,\n hasNestedCondition,\n onSaveHandler,\n previousMappingHandler,\n surveyDetails,\n fields,\n token,\n apiURL,\n setFields,\n shareRecipientOptions,\n shareChannelOptions,\n triggerDetails,\n setTriggerDetails,\n editField,\n fieldOptions,\n variableOptions,\n}) => {\n /* ----- Hooks ----- */\n\n useEditFieldInit({\n editField,\n setFields,\n setTriggerDetails,\n });\n\n /* ----- Event Handlers ----- */\n\n const handleNavigateConfigurePage = useCallback(() => {\n navigateTriggerPage(false);\n }, [navigateTriggerPage]);\n\n /* ----- Render Functions ----- */\n\n const editFieldId = useMemo(\n () => editField?.id?.toString(),\n [editField?.id]\n );\n\n return (\n <ThemeProvider\n theme={{\n fonts: {\n body: \"DM Sans, Roboto Mono, sans-serif\",\n heading: \"DM Sans, Roboto Mono, sans-serif\",\n },\n }}\n >\n <Box css={{ height: \"100vh\", width: \"100vw\" }}>\n <TriggerHeader\n forceDisableTriggerCTA={forceDisableTriggerCTA}\n draftHandler={draftHandler}\n navigateTriggerPage={navigateTriggerPage}\n objects={objects}\n accounts={accounts}\n actions={actions}\n onSaveTriggerLoader={onSaveTriggerLoader}\n hasPreviousMapping={previousMapping}\n isTriggerPage={isTriggerPage}\n onSaveHandler={onSaveHandler}\n navigateConfigurePage={handleNavigateConfigurePage}\n previousMappingHandler={previousMappingHandler}\n triggerDetails={triggerDetails}\n fields={fields}\n editFieldId={editFieldId}\n eventFields={editField?.fieldValues}\n />\n {!isTriggerPage ? (\n <EventSetup\n forceDisableEventSetupCTA={forceDisableTriggerCTA}\n eventFields={editField?.fieldValues}\n objects={objects}\n accounts={accounts}\n actions={actions}\n surveyDetails={surveyDetails}\n navigateTriggerPage={navigateTriggerPage}\n />\n ) : (\n <Trigger\n hasNestedCondition={hasNestedCondition}\n fields={fields}\n setFields={setFields}\n token={token}\n apiURL={apiURL}\n surveyDetails={surveyDetails}\n shareRecipientOptions={shareRecipientOptions}\n shareChannelOptions={shareChannelOptions}\n triggerDetails={triggerDetails}\n setTriggerDetails={setTriggerDetails}\n fieldOptions={fieldOptions}\n variableOptions={variableOptions}\n />\n )}\n </Box>\n </ThemeProvider>\n );\n};\n"],"names":["useEditFieldInit","useCallback","useMemo","ThemeProvider","Box","TriggerHeader","EventSetup","Trigger"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/triggers/index.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport { Box, ThemeProvider } from \"@sparrowengg/twigs-react\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { EventSetup, TriggerHeader, Trigger } from \"./components\";\nimport { TriggersProps } from \"./types\";\nimport { useEditFieldInit, useContactUniqueConstraint } from \"./hooks\";\n\n/* ----- Main Component ----- */\n\n/**\n * Triggers component for managing survey triggers\n *\n * @param {TriggersProps} props - Component props\n * @returns {JSX.Element} Rendered Triggers component\n */\nexport const Triggers: React.FC<TriggersProps> = ({\n forceDisableTriggerCTA,\n draftHandler,\n onSaveTriggerLoader,\n objects,\n accounts,\n actions,\n isTriggerPage,\n navigateTriggerPage,\n previousMapping,\n hasNestedCondition,\n onSaveHandler,\n previousMappingHandler,\n surveyDetails,\n fields,\n token,\n apiURL,\n setFields,\n shareRecipientOptions,\n shareChannelOptions,\n triggerDetails,\n setTriggerDetails,\n editField,\n fieldOptions,\n variableOptions,\n contactUniqueConstraint,\n}) => {\n /* ----- Hooks ----- */\n\n useEditFieldInit({\n editField,\n setFields,\n setTriggerDetails,\n });\n\n const { constraint: resolvedContactUniqueConstraint } =\n useContactUniqueConstraint({\n token,\n apiURL,\n contactUniqueConstraint,\n });\n\n /* ----- Event Handlers ----- */\n\n const handleNavigateConfigurePage = useCallback(() => {\n navigateTriggerPage(false);\n }, [navigateTriggerPage]);\n\n /* ----- Render Functions ----- */\n\n const editFieldId = useMemo(\n () => editField?.id?.toString(),\n [editField?.id]\n );\n\n return (\n <ThemeProvider\n theme={{\n fonts: {\n body: \"DM Sans, Roboto Mono, sans-serif\",\n heading: \"DM Sans, Roboto Mono, sans-serif\",\n },\n }}\n >\n <Box css={{ height: \"100vh\", width: \"100vw\" }}>\n <TriggerHeader\n forceDisableTriggerCTA={forceDisableTriggerCTA}\n draftHandler={draftHandler}\n navigateTriggerPage={navigateTriggerPage}\n objects={objects}\n accounts={accounts}\n actions={actions}\n onSaveTriggerLoader={onSaveTriggerLoader}\n hasPreviousMapping={previousMapping}\n isTriggerPage={isTriggerPage}\n onSaveHandler={onSaveHandler}\n navigateConfigurePage={handleNavigateConfigurePage}\n previousMappingHandler={previousMappingHandler}\n triggerDetails={triggerDetails}\n fields={fields}\n editFieldId={editFieldId}\n eventFields={editField?.fieldValues}\n contactUniqueConstraint={resolvedContactUniqueConstraint}\n />\n {!isTriggerPage ? (\n <EventSetup\n forceDisableEventSetupCTA={forceDisableTriggerCTA}\n eventFields={editField?.fieldValues}\n objects={objects}\n accounts={accounts}\n actions={actions}\n surveyDetails={surveyDetails}\n navigateTriggerPage={navigateTriggerPage}\n />\n ) : (\n <Trigger\n hasNestedCondition={hasNestedCondition}\n fields={fields}\n setFields={setFields}\n token={token}\n apiURL={apiURL}\n surveyDetails={surveyDetails}\n shareRecipientOptions={shareRecipientOptions}\n shareChannelOptions={shareChannelOptions}\n triggerDetails={triggerDetails}\n setTriggerDetails={setTriggerDetails}\n fieldOptions={fieldOptions}\n variableOptions={variableOptions}\n contactUniqueConstraint={resolvedContactUniqueConstraint}\n />\n )}\n </Box>\n </ThemeProvider>\n );\n};\n"],"names":["useEditFieldInit","useContactUniqueConstraint","useCallback","useMemo","ThemeProvider","Box","TriggerHeader","EventSetup","Trigger"],"mappings":";;;;;;;;;;;;;;AAgBO,MAAM,WAAoC,CAAC;AAAA,EAChD,sBAAA;AAAA,EACA,YAAA;AAAA,EACA,mBAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA,mBAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,sBAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,KAAM;AAGJ,EAAAA,iCAAA,CAAiB;AAAA,IACf,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,EAAE,UAAA,EAAY,+BAAA,EAAgC,GAClDC,qDAAA,CAA2B;AAAA,IACzB,KAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACD,CAAA;AAIH,EAAA,MAAM,2BAAA,GAA8BC,kBAAY,MAAM;AACpD,IAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,EAC3B,CAAA,EAAG,CAAC,mBAAmB,CAAC,CAAA;AAIxB,EAAA,MAAM,WAAA,GAAcC,aAAA;AAAA,IAClB,MAAG;AAnEP,MAAA,IAAA,EAAA;AAmEU,MAAA,OAAA,CAAA,EAAA,GAAA,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,OAAX,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,QAAA,EAAA;AAAA,IAAA,CAAA;AAAA,IACrB,CAAC,uCAAW,EAAE;AAAA,GAChB;AAEA,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAACC,2BAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,KAAA,EAAO;AAAA,UACL,IAAA,EAAM,kCAAA;AAAA,UACN,OAAA,EAAS;AAAA;AACX;AACF,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA,CAACC,WAAI,GAAA,EAAK,EAAE,QAAQ,OAAA,EAAS,KAAA,EAAO,SAAQ,EAAA,kBAC1C,KAAA,CAAA,aAAA;AAAA,MAACC,qBAAA;AAAA,MAAA;AAAA,QACC,sBAAA;AAAA,QACA,YAAA;AAAA,QACA,mBAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,mBAAA;AAAA,QACA,kBAAA,EAAoB,eAAA;AAAA,QACpB,aAAA;AAAA,QACA,aAAA;AAAA,QACA,qBAAA,EAAuB,2BAAA;AAAA,QACvB,sBAAA;AAAA,QACA,cAAA;AAAA,QACA,MAAA;AAAA,QACA,WAAA;AAAA,QACA,aAAa,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,WAAA;AAAA,QACxB,uBAAA,EAAyB;AAAA;AAAA,KAC3B,EACC,CAAC,aAAA,mBACA,KAAA,CAAA,aAAA;AAAA,MAACC,kBAAA;AAAA,MAAA;AAAA,QACC,yBAAA,EAA2B,sBAAA;AAAA,QAC3B,aAAa,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,WAAA;AAAA,QACxB,OAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA;AAAA,KACF,mBAEA,KAAA,CAAA,aAAA;AAAA,MAACC,eAAA;AAAA,MAAA;AAAA,QACC,kBAAA;AAAA,QACA,MAAA;AAAA,QACA,SAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,aAAA;AAAA,QACA,qBAAA;AAAA,QACA,mBAAA;AAAA,QACA,cAAA;AAAA,QACA,iBAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA,uBAAA,EAAyB;AAAA;AAAA,KAG/B;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -25,6 +25,21 @@ const fetchSurveyChannels = async (token, apiURL, surveyId) => {
|
|
|
25
25
|
}
|
|
26
26
|
return channels;
|
|
27
27
|
};
|
|
28
|
+
const fetchContactUniqueConstraint = async (token, apiURL) => {
|
|
29
|
+
var _a;
|
|
30
|
+
try {
|
|
31
|
+
const data = (await fetch(
|
|
32
|
+
`${apiURL}/v3/contacts/unique-constraint`,
|
|
33
|
+
apiHeader(token)
|
|
34
|
+
)).json();
|
|
35
|
+
const response = await data;
|
|
36
|
+
return (_a = response == null ? void 0 : response.data) != null ? _a : null;
|
|
37
|
+
} catch (error) {
|
|
38
|
+
console.error(error);
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
};
|
|
28
42
|
|
|
43
|
+
exports.fetchContactUniqueConstraint = fetchContactUniqueConstraint;
|
|
29
44
|
exports.fetchSurveyChannels = fetchSurveyChannels;
|
|
30
45
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/triggers/services/index.tsx"],"sourcesContent":["\nconst apiHeader = (token: string) => ({\n headers: {\n Authorization: `Bearer ${token}`\n }\n});\n\nexport const fetchSurveyChannels = async (\n token: string,\n apiURL: string,\n surveyId: number | string\n) => {\n let channels: Array<{}> = []\n try {\n const data = (\n await fetch(\n `${apiURL}/v3/channels?survey_id=${surveyId}`,\n apiHeader(token)\n )\n ).json();\n const response = await data;\n channels = response.data.map((item:any, id:any) => ({\n label: item.name,\n value: item.id,\n type: item.type,\n id\n }));\n return channels;\n } catch (error) {\n console.error(error);\n }\n return channels;\n};\n"],"names":[],"mappings":";;AACA,MAAM,SAAA,GAAY,CAAC,KAAA,MAAmB;AAAA,EACpC,OAAA,EAAS;AAAA,IACP,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA;AAElC,CAAA,CAAA;AAEO,MAAM,mBAAA,GAAsB,OACjC,KAAA,EACA,MAAA,EACA,QAAA,KACG;AACF,EAAA,IAAI,WAAsB,EAAC;AAC5B,EAAA,IAAI;AACA,IAAA,MAAM,QACJ,MAAM,KAAA;AAAA,MACJ,CAAA,EAAG,MAAM,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAA;AAAA,MAC3C,UAAU,KAAK;AAAA,OAEjB,IAAA,EAAK;AACP,IAAA,MAAM,WAAW,MAAM,IAAA;AACvB,IAAA,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,GAAA,CAAI,CAAC,MAAU,EAAA,MAAY;AAAA,MAClD,OAAO,IAAA,CAAK,IAAA;AAAA,MACZ,OAAO,IAAA,CAAK,EAAA;AAAA,MACZ,MAAM,IAAA,CAAK,IAAA;AAAA,MACX;AAAA,KACF,CAAE,CAAA;AACJ,IAAA,OAAO,QAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,EACrB;AACA,EAAA,OAAO,QAAA;AACT
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/triggers/services/index.tsx"],"sourcesContent":["\nconst apiHeader = (token: string) => ({\n headers: {\n Authorization: `Bearer ${token}`\n }\n});\n\nexport const fetchSurveyChannels = async (\n token: string,\n apiURL: string,\n surveyId: number | string\n) => {\n let channels: Array<{}> = []\n try {\n const data = (\n await fetch(\n `${apiURL}/v3/channels?survey_id=${surveyId}`,\n apiHeader(token)\n )\n ).json();\n const response = await data;\n channels = response.data.map((item:any, id:any) => ({\n label: item.name,\n value: item.id,\n type: item.type,\n id\n }));\n return channels;\n } catch (error) {\n console.error(error);\n }\n return channels;\n};\n\nexport const fetchContactUniqueConstraint = async (\n token: string,\n apiURL: string\n) => {\n try {\n const data = (\n await fetch(\n `${apiURL}/v3/contacts/unique-constraint`,\n apiHeader(token)\n )\n ).json();\n const response = await data;\n return response?.data ?? null;\n } catch (error) {\n console.error(error);\n }\n return null;\n};\n"],"names":[],"mappings":";;AACA,MAAM,SAAA,GAAY,CAAC,KAAA,MAAmB;AAAA,EACpC,OAAA,EAAS;AAAA,IACP,aAAA,EAAe,UAAU,KAAK,CAAA;AAAA;AAElC,CAAA,CAAA;AAEO,MAAM,mBAAA,GAAsB,OACjC,KAAA,EACA,MAAA,EACA,QAAA,KACG;AACF,EAAA,IAAI,WAAsB,EAAC;AAC5B,EAAA,IAAI;AACA,IAAA,MAAM,QACJ,MAAM,KAAA;AAAA,MACJ,CAAA,EAAG,MAAM,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAA;AAAA,MAC3C,UAAU,KAAK;AAAA,OAEjB,IAAA,EAAK;AACP,IAAA,MAAM,WAAW,MAAM,IAAA;AACvB,IAAA,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,GAAA,CAAI,CAAC,MAAU,EAAA,MAAY;AAAA,MAClD,OAAO,IAAA,CAAK,IAAA;AAAA,MACZ,OAAO,IAAA,CAAK,EAAA;AAAA,MACZ,MAAM,IAAA,CAAK,IAAA;AAAA,MACX;AAAA,KACF,CAAE,CAAA;AACJ,IAAA,OAAO,QAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,EACrB;AACA,EAAA,OAAO,QAAA;AACT;AAEO,MAAM,4BAAA,GAA+B,OAC1C,KAAA,EACA,MAAA,KACG;AArCL,EAAA,IAAA,EAAA;AAsCE,EAAA,IAAI;AACF,IAAA,MAAM,QACJ,MAAM,KAAA;AAAA,MACJ,GAAG,MAAM,CAAA,8BAAA,CAAA;AAAA,MACT,UAAU,KAAK;AAAA,OAEjB,IAAA,EAAK;AACP,IAAA,MAAM,WAAW,MAAM,IAAA;AACvB,IAAA,OAAA,CAAO,EAAA,GAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,SAAV,IAAA,GAAA,EAAA,GAAkB,IAAA;AAAA,EAC3B,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,EACrB;AACA,EAAA,OAAO,IAAA;AACT;;;;;"}
|
|
@@ -4,8 +4,14 @@ const isEmpty = (object) => {
|
|
|
4
4
|
var _a;
|
|
5
5
|
return ((_a = Object.entries(object != null ? object : {})) == null ? void 0 : _a.length) === 0;
|
|
6
6
|
};
|
|
7
|
-
const isTriggerDetailsValid = (triggerDetails) => {
|
|
8
|
-
|
|
7
|
+
const isTriggerDetailsValid = (triggerDetails, contactUniqueConstraint) => {
|
|
8
|
+
const baseValid = !isEmpty(triggerDetails.shareChannel) && !isEmpty(triggerDetails.shareRecipient) && !isEmpty(triggerDetails.shareType);
|
|
9
|
+
if (!baseValid)
|
|
10
|
+
return false;
|
|
11
|
+
if (contactUniqueConstraint == null ? void 0 : contactUniqueConstraint.hasUniqueConstraint) {
|
|
12
|
+
return !isEmpty(triggerDetails.contactUniqueField);
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
9
15
|
};
|
|
10
16
|
const isEventSetupDisabled = (actions, objects, eventFields) => {
|
|
11
17
|
return (!actions.value || !objects.value) && (!objects.options.find((object) => object.value === (eventFields == null ? void 0 : eventFields.object)) || !actions.options.find(
|
|
@@ -28,8 +34,8 @@ const areAllFiltersComplete = (fields) => {
|
|
|
28
34
|
}
|
|
29
35
|
);
|
|
30
36
|
};
|
|
31
|
-
const isSaveDisabled = (fields, triggerDetails) => {
|
|
32
|
-
return !areAllFiltersComplete(fields) || !isTriggerDetailsValid(triggerDetails);
|
|
37
|
+
const isSaveDisabled = (fields, triggerDetails, contactUniqueConstraint) => {
|
|
38
|
+
return !areAllFiltersComplete(fields) || !isTriggerDetailsValid(triggerDetails, contactUniqueConstraint);
|
|
33
39
|
};
|
|
34
40
|
|
|
35
41
|
exports.areAllFiltersComplete = areAllFiltersComplete;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.utils.js","sources":["../../../../src/triggers/utils/validation.utils.ts"],"sourcesContent":["/**\n * Validation utilities for Triggers module\n */\n\n/**\n * Checks if an object is empty\n * @param object - Object to check\n * @returns boolean indicating if object is empty\n */\nexport const isEmpty = (object: any): boolean => {\n return Object.entries(object ?? {})?.length === 0;\n};\n\n/**\n * Checks if trigger details are valid\n * @param triggerDetails - Trigger details object\n * @returns boolean indicating if details are valid\n */\nexport const isTriggerDetailsValid = (triggerDetails: any): boolean => {\n
|
|
1
|
+
{"version":3,"file":"validation.utils.js","sources":["../../../../src/triggers/utils/validation.utils.ts"],"sourcesContent":["/**\n * Validation utilities for Triggers module\n */\n\n/**\n * Checks if an object is empty\n * @param object - Object to check\n * @returns boolean indicating if object is empty\n */\nexport const isEmpty = (object: any): boolean => {\n return Object.entries(object ?? {})?.length === 0;\n};\n\n/**\n * Checks if trigger details are valid\n * @param triggerDetails - Trigger details object\n * @param contactUniqueConstraint - Optional unique constraint metadata\n * @returns boolean indicating if details are valid\n */\nexport const isTriggerDetailsValid = (\n triggerDetails: any,\n contactUniqueConstraint?: { hasUniqueConstraint?: boolean } | null\n): boolean => {\n const baseValid =\n !isEmpty(triggerDetails.shareChannel) &&\n !isEmpty(triggerDetails.shareRecipient) &&\n !isEmpty(triggerDetails.shareType);\n\n if (!baseValid) return false;\n\n if (contactUniqueConstraint?.hasUniqueConstraint) {\n return !isEmpty(triggerDetails.contactUniqueField);\n }\n\n return true;\n};\n\n/**\n * Checks if any filter has a value\n * @param fields - Fields object with filters\n * @returns boolean indicating if any filter has value\n */\nexport const hasFiltersWithValues = (fields: any): boolean => {\n return fields?.filters?.some((filter: any) =>\n filter?.filter?.some((currentFilter: any) => !!currentFilter?.value)\n );\n};\n\n/**\n * Checks if event setup is disabled\n * @param actions - Actions configuration\n * @param objects - Objects configuration\n * @param eventFields - Event fields\n * @returns boolean indicating if setup is disabled\n */\nexport const isEventSetupDisabled = (\n actions: any,\n objects: any,\n eventFields?: any\n): boolean => {\n return (\n (!actions.value || !objects.value) &&\n (!objects.options.find((object: any) => object.value === eventFields?.object) ||\n !actions.options.find((action: any) =>\n eventFields?.action?.includes(action?.value)\n ))\n );\n};\n\n/**\n * Checks if all filter conditions are completely filled out,\n * including nested conditions (field, comparator, and value).\n * @param fields - Fields object with filters\n * @returns boolean indicating if all filters are complete\n */\nexport const areAllFiltersComplete = (fields: any): boolean => {\n if (!fields?.filters?.length) return false;\n\n return fields.filters.every((filterGroup: any) =>\n filterGroup?.filter?.length > 0 &&\n filterGroup.filter.every(\n (currentFilter: any) =>\n !!currentFilter?.field && !!currentFilter?.comparator && !!currentFilter?.value\n )\n );\n};\n\n/**\n * Checks if save button should be disabled\n * @param fields - Fields with filters\n * @param triggerDetails - Trigger details\n * @param contactUniqueConstraint - Optional unique constraint metadata\n * @returns boolean indicating if save should be disabled\n */\nexport const isSaveDisabled = (\n fields: any,\n triggerDetails: any,\n contactUniqueConstraint?: { hasUniqueConstraint?: boolean } | null\n): boolean => {\n return (\n !areAllFiltersComplete(fields) ||\n !isTriggerDetailsValid(triggerDetails, contactUniqueConstraint)\n );\n};\n\n"],"names":["_a"],"mappings":";;AASO,MAAM,OAAA,GAAU,CAAC,MAAA,KAAyB;AATjD,EAAA,IAAA,EAAA;AAUE,EAAA,OAAA,CAAA,CAAO,YAAO,OAAA,CAAQ,MAAA,IAAA,IAAA,GAAA,MAAA,GAAU,EAAE,CAAA,KAA3B,mBAA8B,MAAA,MAAW,CAAA;AAClD;AAQO,MAAM,qBAAA,GAAwB,CACnC,cAAA,EACA,uBAAA,KACY;AACZ,EAAA,MAAM,SAAA,GACJ,CAAC,OAAA,CAAQ,cAAA,CAAe,YAAY,CAAA,IACpC,CAAC,OAAA,CAAQ,cAAA,CAAe,cAAc,CAAA,IACtC,CAAC,OAAA,CAAQ,eAAe,SAAS,CAAA;AAEnC,EAAA,IAAI,CAAC,SAAA;AAAW,IAAA,OAAO,KAAA;AAEvB,EAAA,IAAI,mEAAyB,mBAAA,EAAqB;AAChD,IAAA,OAAO,CAAC,OAAA,CAAQ,cAAA,CAAe,kBAAkB,CAAA;AAAA,EACnD;AAEA,EAAA,OAAO,IAAA;AACT;AAoBO,MAAM,oBAAA,GAAuB,CAClC,OAAA,EACA,OAAA,EACA,WAAA,KACY;AACZ,EAAA,OAAA,CACG,CAAC,OAAA,CAAQ,KAAA,IAAS,CAAC,OAAA,CAAQ,KAAA,MAC3B,CAAC,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC,MAAA,KAAgB,OAAO,KAAA,MAAU,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,OAAM,CAAA,IAC1E,CAAC,QAAQ,OAAA,CAAQ,IAAA;AAAA,IAAK,CAAC,MAAA,KAAa;AA/D1C,MAAA,IAAA,EAAA;AAgEQ,MAAA,OAAA,CAAA,EAAA,GAAA,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,MAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAqB,QAAA,CAAS,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,KAAA,CAAA;AAAA,IAAA;AAAA,GACxC,CAAA;AAEN;AAQO,MAAM,qBAAA,GAAwB,CAAC,MAAA,KAAyB;AA3E/D,EAAA,IAAA,EAAA;AA4EE,EAAA,IAAI,EAAA,CAAC,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,OAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiB,MAAA,CAAA;AAAQ,IAAA,OAAO,KAAA;AAErC,EAAA,OAAO,OAAO,OAAA,CAAQ,KAAA;AAAA,IAAM,CAAC,WAAA,KAAkB;AA9EjD,MAAA,IAAAA,GAAAA;AA+EI,MAAA,OAAA,CAAA,CAAAA,GAAAA,GAAA,2CAAa,MAAA,KAAb,IAAA,GAAA,MAAA,GAAAA,IAAqB,MAAA,IAAS,CAAA,IAC9B,YAAY,MAAA,CAAO,KAAA;AAAA,QACjB,CAAC,aAAA,KACC,CAAC,EAAC,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,KAAA,CAAA,IAAS,CAAC,EAAC,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,UAAA,CAAA,IAAc,CAAC,EAAC,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,KAAA;AAAA,OAC9E;AAAA,IAAA;AAAA,GACF;AACF;AASO,MAAM,cAAA,GAAiB,CAC5B,MAAA,EACA,cAAA,EACA,uBAAA,KACY;AACZ,EAAA,OACE,CAAC,qBAAA,CAAsB,MAAM,KAC7B,CAAC,qBAAA,CAAsB,gBAAgB,uBAAuB,CAAA;AAElE;;;;;;;;"}
|