@sparrowengg/integrations-templates-frontend 2.1.0-notion-release.31 → 2.1.0-notion-release.32
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/_virtual/index10.js +2 -2
- package/dist/cjs/_virtual/index9.js +2 -2
- package/dist/cjs/mapping/utils/conditionDescriptionBuilder.js +1 -1
- package/dist/cjs/mapping/utils/conditionDescriptionBuilder.js.map +1 -1
- package/dist/cjs/node_modules/hoist-non-react-statics/node_modules/react-is/index.js +1 -1
- package/dist/cjs/node_modules/html-dom-parser/node_modules/domutils/lib/index.js +1 -1
- package/dist/cjs/node_modules/html-dom-parser/node_modules/htmlparser2/lib/index.js +1 -1
- package/dist/es/_virtual/index10.js +2 -2
- package/dist/es/_virtual/index9.js +2 -2
- package/dist/es/mapping/utils/conditionDescriptionBuilder.js +1 -1
- package/dist/es/mapping/utils/conditionDescriptionBuilder.js.map +1 -1
- package/dist/es/node_modules/hoist-non-react-statics/node_modules/react-is/index.js +1 -1
- package/dist/es/node_modules/html-dom-parser/node_modules/domutils/lib/index.js +1 -1
- package/dist/es/node_modules/html-dom-parser/node_modules/htmlparser2/lib/index.js +1 -1
- package/package.json +1 -1
|
@@ -189,7 +189,7 @@ const ConditionCard = ({
|
|
|
189
189
|
},
|
|
190
190
|
/* @__PURE__ */ React.createElement("span", null, prefix),
|
|
191
191
|
" ",
|
|
192
|
-
((_d = (_c = (_b = filter == null ? void 0 : filter.property) == null ? void 0 : _b.selectionPath) == null ? void 0 : _c[0]) == null ? void 0 : _d.label) || "
|
|
192
|
+
((_d = (_c = (_b = filter == null ? void 0 : filter.property) == null ? void 0 : _b.selectionPath) == null ? void 0 : _c[0]) == null ? void 0 : _d.label) || " ",
|
|
193
193
|
" ",
|
|
194
194
|
/* @__PURE__ */ React.createElement(text.Text, { as: "span", weight: "bold", css: { color: "$neutral900" } }, propertyLabel),
|
|
195
195
|
" ",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditionDescriptionBuilder.js","sources":["../../../../src/mapping/utils/conditionDescriptionBuilder.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Text,\n Box,\n Flex,\n Button,\n IconButton,\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n} from \"@sparrowengg/twigs-react\";\nimport {\n PencilIcon,\n EllipsisVerticalIcon,\n} from \"@sparrowengg/twigs-react-icons\";\n\ntype ComparatorType = \"AND\" | \"OR\";\ntype GlobalConnectorType = \"ALL\" | \"ANY\";\n\ntype FilterType = {\n comparator: ComparatorType;\n connector?: {\n dataType: string;\n label: string;\n value: string;\n type: string;\n };\n property: {\n label: string;\n value: string;\n selectionPath?: Array<{ label: string; value: string }>;\n };\n value: {\n NUMBER: number | null;\n DATE: string | null;\n DATE_RANGE: { start: string; end: string } | null;\n DATE_TIME_TIMEZONE: any | null;\n SINGLE_LINE_TEXT: string | null;\n MULTI_LINE_TEXT: string | null;\n SINGLE_SELECT: string | null;\n MULTI_SELECT: string[] | null;\n };\n};\n\ntype FilterGroupType = {\n filters: FilterType[];\n};\n\ntype ConditionsDataType = {\n globalConnector: GlobalConnectorType;\n filterGroups: FilterGroupType[];\n};\n\n/**\n * Formats a value based on its data type\n */\nconst formatValue = (filter: FilterType): string => {\n const { connector, value } = filter;\n\n if (!connector) return \"\";\n\n const dataType = connector.dataType;\n\n switch (dataType) {\n case \"SINGLE_LINE_TEXT\":\n return value.SINGLE_LINE_TEXT || \"\";\n\n case \"NUMBER\":\n return value.NUMBER?.toString() || \"\";\n\n case \"DATE\":\n if (value.DATE) {\n // Format date to be more readable\n const date = new Date(value.DATE);\n return date.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n }\n return \"\";\n\n case \"DATE_RANGE\":\n if (value.DATE_RANGE) {\n const startDate = new Date(value.DATE_RANGE.start);\n const endDate = new Date(value.DATE_RANGE.end);\n const formatDate = (d: Date) =>\n d.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n return `${formatDate(startDate)} to ${formatDate(endDate)}`;\n }\n return \"\";\n\n case \"SINGLE_SELECT\":\n return value.SINGLE_SELECT || \"\";\n\n case \"MULTI_SELECT\":\n if (value.MULTI_SELECT && value.MULTI_SELECT.length > 0) {\n // Get labels from choices if available\n const choices = (connector as any).choices;\n if (choices && Array.isArray(choices)) {\n const labels = value.MULTI_SELECT.map((val) => {\n const choice = choices.find((c: any) => c.value === val);\n return choice ? choice.label : val;\n });\n return labels.join(\", \");\n }\n return value.MULTI_SELECT.join(\", \");\n }\n return \"\";\n\n case \"MULTI_LINE_TEXT\":\n return value.MULTI_LINE_TEXT || \"\";\n\n default:\n return \"\";\n }\n};\n\n/**\n * Builds a description for a single filter\n */\nconst buildFilterDescription = (filter: FilterType): React.ReactNode => {\n // Build property path if selectionPath exists\n let propertyLabel = filter.property.label;\n if (\n filter.property.selectionPath &&\n filter.property.selectionPath.length > 0\n ) {\n // Skip the first item (category) and show the rest if there are more than 1 items\n if (filter.property.selectionPath.length > 1) {\n const pathLabels = filter.property.selectionPath\n .slice(1)\n .map((p) => p.label);\n propertyLabel = [...pathLabels, filter.property.label].join(\" > \");\n }\n }\n\n const operatorLabel = filter.connector?.label || \"\";\n const formattedValue = formatValue(filter);\n\n return (\n <>\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n {propertyLabel}\n </Text>{\" \"}\n {operatorLabel}{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {formattedValue}\n </Text>\n </>\n );\n};\n\n/**\n * Builds a description for a filter group\n */\nconst buildGroupDescription = (group: FilterGroupType): React.ReactNode => {\n if (group.filters.length === 0) return null;\n\n return (\n <>\n {group.filters.map((filter, index) => (\n <React.Fragment key={index}>\n {index > 0 && (\n <>\n {\" \"}\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n {filter.comparator.toLowerCase()}\n </Text>{\" \"}\n </>\n )}\n {buildFilterDescription(filter)}\n </React.Fragment>\n ))}\n </>\n );\n};\n\n/**\n * Builds the complete condition description\n */\nexport const buildConditionDescription = (\n conditionsData: ConditionsDataType\n): React.ReactNode => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <>\n When{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:{\" \"}\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <React.Fragment key={groupIndex}>\n {groupIndex > 0 && (\n <>\n {\" \"}\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n or\n </Text>{\" \"}\n </>\n )}\n ({buildGroupDescription(group)})\n </React.Fragment>\n ))}\n </>\n );\n};\n\n/**\n * Alternative: Builds a more detailed, multi-line condition description\n */\nexport const buildDetailedConditionDescription = (\n conditionsData: ConditionsDataType\n): React.ReactNode => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <div>\n <Text\n size=\"sm\"\n css={{ color: \"$neutral500\", fontFamily: \"DM Sans !important\" }}\n >\n When{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:\n </Text>\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <div key={groupIndex} style={{ marginTop: \"4px\", marginLeft: \"8px\" }}>\n <Text\n size=\"sm\"\n css={{ color: \"$neutral500\", fontFamily: \"DM Sans !important\" }}\n >\n {groupIndex > 0 && (\n <>\n <Text\n as=\"span\"\n weight=\"bold\"\n css={{\n color: \"$neutral700\",\n fontFamily: \"DM Sans !important\",\n }}\n >\n OR\n </Text>{\" \"}\n </>\n )}\n {buildGroupDescription(group)}\n </Text>\n </div>\n ))}\n </div>\n );\n};\n\n/**\n * Configure Icon Component\n */\nconst ConfigureIcon = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_1958_11629)\">\n <path\n d=\"M17.5 14.1668H14.1667M10.8333 14.1668H2.5M2.5 5.8335H5.83333M9.16667 5.8335H17.5M11.6667 11.6668H13.3333C13.7933 11.6668 14.1667 12.0402 14.1667 12.5002V15.8335C14.1667 16.2935 13.7933 16.6668 13.3333 16.6668H11.6667C11.2067 16.6668 10.8333 16.2935 10.8333 15.8335V12.5002C10.8333 12.0402 11.2067 11.6668 11.6667 11.6668ZM8.33333 8.3335H6.66667C6.20667 8.3335 5.83333 7.96016 5.83333 7.50016V4.16683C5.83333 3.70683 6.20667 3.3335 6.66667 3.3335H8.33333C8.79333 3.3335 9.16667 3.70683 9.16667 4.16683V7.50016C9.16667 7.96016 8.79333 8.3335 8.33333 8.3335Z\"\n stroke=\"#64748B\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1958_11629\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport interface ConditionCardProps {\n isEditable?: boolean;\n conditionsData: ConditionsDataType;\n onEditClick?: () => void;\n onClearClick?: () => void;\n showMoreMenu?: boolean;\n}\n\n/**\n * Builds a card-style condition display with edit and clear actions\n */\nexport const ConditionCard: React.FC<ConditionCardProps> = ({\n conditionsData,\n onEditClick,\n onClearClick,\n showMoreMenu = true,\n isEditable = false,\n}) => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <Box\n css={{\n width: \"100%\",\n marginTop: \"$8\",\n backgroundColor: !isEditable ? \"transparent\" : \"#F8F8F8\",\n borderRadius: \"$lg\",\n padding: \"$6 !important\",\n }}\n >\n <Flex flexDirection=\"column\" gap=\"$2\">\n {/* Header Row */}\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{\n maxHeight: \"20px\",\n }}\n >\n <ConfigureIcon />\n <Flex alignItems=\"center\" gap=\"$8\" css={{ flex: 1 }}>\n <Text\n size=\"sm\"\n css={{\n color: \"$neutral900\",\n fontFamily: \"DM Sans\",\n }}\n >\n When{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:\n </Text>\n </Flex>\n {isEditable ? <Flex alignItems=\"center\" gap=\"$4\">\n <Button\n leftIcon={<PencilIcon />}\n size=\"sm\"\n variant=\"ghost\"\n color=\"primary\"\n onClick={onEditClick}\n css={{\n fontFamily: \"DM Sans\",\n fontWeight: \"$5\",\n }}\n >\n Edit Conditions\n </Button>\n {showMoreMenu && onClearClick && (\n <DropdownMenu size=\"sm\">\n <DropdownMenuTrigger asChild>\n <IconButton\n size=\"sm\"\n icon={<EllipsisVerticalIcon />}\n variant=\"ghost\"\n color=\"default\"\n css={{\n borderRadius: \"$sm\",\n }}\n />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={onClearClick}>\n Clear Conditions\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </Flex> : null}\n </Flex>\n\n {/* Condition Groups */}\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <Box\n key={groupIndex}\n css={{\n paddingLeft: \"$14\",\n }}\n >\n {group.filters.map((filter, filterIndex) => {\n const propertyLabel = filter.property.label;\n const operatorLabel = filter.connector?.label || \"\";\n const formattedValue = formatValue(filter);\n\n const prefix =\n filterIndex === 0\n ? groupIndex === 0\n ? \"When\"\n : filter?.comparator === \"AND\" ? \"And When\" : \"Or When\"\n : filter.comparator.toLowerCase();\n\n return (\n <Text\n key={filterIndex}\n size=\"sm\"\n weight=\"medium\"\n css={{\n color: \"$neutral800\",\n fontFamily: \"DM Sans\",\n lineHeight: \"$md\",\n span: {\n fontWeight: \"$7\",\n color: \"$neutral900\",\n }\n }}\n >\n <span>{prefix}</span> {filter?.property?.selectionPath?.[0]?.label || \"contact property\"}{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {propertyLabel}\n </Text>{\" \"}\n {operatorLabel}{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {formattedValue}\n </Text>\n </Text>\n );\n })}\n </Box>\n ))}\n </Flex>\n </Box>\n );\n};\n"],"names":["Box","Flex","Text","Button","PencilIcon","DropdownMenu","DropdownMenuTrigger","IconButton","EllipsisVerticalIcon","DropdownMenuContent","DropdownMenuItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conditionDescriptionBuilder.js","sources":["../../../../src/mapping/utils/conditionDescriptionBuilder.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Text,\n Box,\n Flex,\n Button,\n IconButton,\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n} from \"@sparrowengg/twigs-react\";\nimport {\n PencilIcon,\n EllipsisVerticalIcon,\n} from \"@sparrowengg/twigs-react-icons\";\n\ntype ComparatorType = \"AND\" | \"OR\";\ntype GlobalConnectorType = \"ALL\" | \"ANY\";\n\ntype FilterType = {\n comparator: ComparatorType;\n connector?: {\n dataType: string;\n label: string;\n value: string;\n type: string;\n };\n property: {\n label: string;\n value: string;\n selectionPath?: Array<{ label: string; value: string }>;\n };\n value: {\n NUMBER: number | null;\n DATE: string | null;\n DATE_RANGE: { start: string; end: string } | null;\n DATE_TIME_TIMEZONE: any | null;\n SINGLE_LINE_TEXT: string | null;\n MULTI_LINE_TEXT: string | null;\n SINGLE_SELECT: string | null;\n MULTI_SELECT: string[] | null;\n };\n};\n\ntype FilterGroupType = {\n filters: FilterType[];\n};\n\ntype ConditionsDataType = {\n globalConnector: GlobalConnectorType;\n filterGroups: FilterGroupType[];\n};\n\n/**\n * Formats a value based on its data type\n */\nconst formatValue = (filter: FilterType): string => {\n const { connector, value } = filter;\n\n if (!connector) return \"\";\n\n const dataType = connector.dataType;\n\n switch (dataType) {\n case \"SINGLE_LINE_TEXT\":\n return value.SINGLE_LINE_TEXT || \"\";\n\n case \"NUMBER\":\n return value.NUMBER?.toString() || \"\";\n\n case \"DATE\":\n if (value.DATE) {\n // Format date to be more readable\n const date = new Date(value.DATE);\n return date.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n }\n return \"\";\n\n case \"DATE_RANGE\":\n if (value.DATE_RANGE) {\n const startDate = new Date(value.DATE_RANGE.start);\n const endDate = new Date(value.DATE_RANGE.end);\n const formatDate = (d: Date) =>\n d.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n return `${formatDate(startDate)} to ${formatDate(endDate)}`;\n }\n return \"\";\n\n case \"SINGLE_SELECT\":\n return value.SINGLE_SELECT || \"\";\n\n case \"MULTI_SELECT\":\n if (value.MULTI_SELECT && value.MULTI_SELECT.length > 0) {\n // Get labels from choices if available\n const choices = (connector as any).choices;\n if (choices && Array.isArray(choices)) {\n const labels = value.MULTI_SELECT.map((val) => {\n const choice = choices.find((c: any) => c.value === val);\n return choice ? choice.label : val;\n });\n return labels.join(\", \");\n }\n return value.MULTI_SELECT.join(\", \");\n }\n return \"\";\n\n case \"MULTI_LINE_TEXT\":\n return value.MULTI_LINE_TEXT || \"\";\n\n default:\n return \"\";\n }\n};\n\n/**\n * Builds a description for a single filter\n */\nconst buildFilterDescription = (filter: FilterType): React.ReactNode => {\n // Build property path if selectionPath exists\n let propertyLabel = filter.property.label;\n if (\n filter.property.selectionPath &&\n filter.property.selectionPath.length > 0\n ) {\n // Skip the first item (category) and show the rest if there are more than 1 items\n if (filter.property.selectionPath.length > 1) {\n const pathLabels = filter.property.selectionPath\n .slice(1)\n .map((p) => p.label);\n propertyLabel = [...pathLabels, filter.property.label].join(\" > \");\n }\n }\n\n const operatorLabel = filter.connector?.label || \"\";\n const formattedValue = formatValue(filter);\n\n return (\n <>\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n {propertyLabel}\n </Text>{\" \"}\n {operatorLabel}{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {formattedValue}\n </Text>\n </>\n );\n};\n\n/**\n * Builds a description for a filter group\n */\nconst buildGroupDescription = (group: FilterGroupType): React.ReactNode => {\n if (group.filters.length === 0) return null;\n\n return (\n <>\n {group.filters.map((filter, index) => (\n <React.Fragment key={index}>\n {index > 0 && (\n <>\n {\" \"}\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n {filter.comparator.toLowerCase()}\n </Text>{\" \"}\n </>\n )}\n {buildFilterDescription(filter)}\n </React.Fragment>\n ))}\n </>\n );\n};\n\n/**\n * Builds the complete condition description\n */\nexport const buildConditionDescription = (\n conditionsData: ConditionsDataType\n): React.ReactNode => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <>\n When{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:{\" \"}\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <React.Fragment key={groupIndex}>\n {groupIndex > 0 && (\n <>\n {\" \"}\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n or\n </Text>{\" \"}\n </>\n )}\n ({buildGroupDescription(group)})\n </React.Fragment>\n ))}\n </>\n );\n};\n\n/**\n * Alternative: Builds a more detailed, multi-line condition description\n */\nexport const buildDetailedConditionDescription = (\n conditionsData: ConditionsDataType\n): React.ReactNode => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <div>\n <Text\n size=\"sm\"\n css={{ color: \"$neutral500\", fontFamily: \"DM Sans !important\" }}\n >\n When{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:\n </Text>\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <div key={groupIndex} style={{ marginTop: \"4px\", marginLeft: \"8px\" }}>\n <Text\n size=\"sm\"\n css={{ color: \"$neutral500\", fontFamily: \"DM Sans !important\" }}\n >\n {groupIndex > 0 && (\n <>\n <Text\n as=\"span\"\n weight=\"bold\"\n css={{\n color: \"$neutral700\",\n fontFamily: \"DM Sans !important\",\n }}\n >\n OR\n </Text>{\" \"}\n </>\n )}\n {buildGroupDescription(group)}\n </Text>\n </div>\n ))}\n </div>\n );\n};\n\n/**\n * Configure Icon Component\n */\nconst ConfigureIcon = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_1958_11629)\">\n <path\n d=\"M17.5 14.1668H14.1667M10.8333 14.1668H2.5M2.5 5.8335H5.83333M9.16667 5.8335H17.5M11.6667 11.6668H13.3333C13.7933 11.6668 14.1667 12.0402 14.1667 12.5002V15.8335C14.1667 16.2935 13.7933 16.6668 13.3333 16.6668H11.6667C11.2067 16.6668 10.8333 16.2935 10.8333 15.8335V12.5002C10.8333 12.0402 11.2067 11.6668 11.6667 11.6668ZM8.33333 8.3335H6.66667C6.20667 8.3335 5.83333 7.96016 5.83333 7.50016V4.16683C5.83333 3.70683 6.20667 3.3335 6.66667 3.3335H8.33333C8.79333 3.3335 9.16667 3.70683 9.16667 4.16683V7.50016C9.16667 7.96016 8.79333 8.3335 8.33333 8.3335Z\"\n stroke=\"#64748B\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1958_11629\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport interface ConditionCardProps {\n isEditable?: boolean;\n conditionsData: ConditionsDataType;\n onEditClick?: () => void;\n onClearClick?: () => void;\n showMoreMenu?: boolean;\n}\n\n/**\n * Builds a card-style condition display with edit and clear actions\n */\nexport const ConditionCard: React.FC<ConditionCardProps> = ({\n conditionsData,\n onEditClick,\n onClearClick,\n showMoreMenu = true,\n isEditable = false,\n}) => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <Box\n css={{\n width: \"100%\",\n marginTop: \"$8\",\n backgroundColor: !isEditable ? \"transparent\" : \"#F8F8F8\",\n borderRadius: \"$lg\",\n padding: \"$6 !important\",\n }}\n >\n <Flex flexDirection=\"column\" gap=\"$2\">\n {/* Header Row */}\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{\n maxHeight: \"20px\",\n }}\n >\n <ConfigureIcon />\n <Flex alignItems=\"center\" gap=\"$8\" css={{ flex: 1 }}>\n <Text\n size=\"sm\"\n css={{\n color: \"$neutral900\",\n fontFamily: \"DM Sans\",\n }}\n >\n When{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:\n </Text>\n </Flex>\n {isEditable ? <Flex alignItems=\"center\" gap=\"$4\">\n <Button\n leftIcon={<PencilIcon />}\n size=\"sm\"\n variant=\"ghost\"\n color=\"primary\"\n onClick={onEditClick}\n css={{\n fontFamily: \"DM Sans\",\n fontWeight: \"$5\",\n }}\n >\n Edit Conditions\n </Button>\n {showMoreMenu && onClearClick && (\n <DropdownMenu size=\"sm\">\n <DropdownMenuTrigger asChild>\n <IconButton\n size=\"sm\"\n icon={<EllipsisVerticalIcon />}\n variant=\"ghost\"\n color=\"default\"\n css={{\n borderRadius: \"$sm\",\n }}\n />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={onClearClick}>\n Clear Conditions\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </Flex> : null}\n </Flex>\n\n {/* Condition Groups */}\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <Box\n key={groupIndex}\n css={{\n paddingLeft: \"$14\",\n }}\n >\n {group.filters.map((filter, filterIndex) => {\n const propertyLabel = filter.property.label;\n const operatorLabel = filter.connector?.label || \"\";\n const formattedValue = formatValue(filter);\n\n const prefix =\n filterIndex === 0\n ? groupIndex === 0\n ? \"When\"\n : filter?.comparator === \"AND\" ? \"And When\" : \"Or When\"\n : filter.comparator.toLowerCase();\n\n return (\n <Text\n key={filterIndex}\n size=\"sm\"\n weight=\"medium\"\n css={{\n color: \"$neutral800\",\n fontFamily: \"DM Sans\",\n lineHeight: \"$md\",\n span: {\n fontWeight: \"$7\",\n color: \"$neutral900\",\n }\n }}\n >\n <span>{prefix}</span> {filter?.property?.selectionPath?.[0]?.label || \" \"}{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {propertyLabel}\n </Text>{\" \"}\n {operatorLabel}{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {formattedValue}\n </Text>\n </Text>\n );\n })}\n </Box>\n ))}\n </Flex>\n </Box>\n );\n};\n"],"names":["Box","Flex","Text","Button","PencilIcon","DropdownMenu","DropdownMenuTrigger","IconButton","EllipsisVerticalIcon","DropdownMenuContent","DropdownMenuItem"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('../../../../_virtual/
|
|
3
|
+
var index = require('../../../../_virtual/index9.js');
|
|
4
4
|
var reactIs_production_min = require('./cjs/react-is.production.min.js');
|
|
5
5
|
var reactIs_development = require('./cjs/react-is.development.js');
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _commonjsHelpers = require('../../../../../_virtual/_commonjsHelpers.js');
|
|
4
|
-
var index = require('../../../../../_virtual/
|
|
4
|
+
var index = require('../../../../../_virtual/index10.js');
|
|
5
5
|
require('./stringify.js');
|
|
6
6
|
require('./traversal.js');
|
|
7
7
|
require('./manipulation.js');
|
|
@@ -8,7 +8,7 @@ require('./Tokenizer.js');
|
|
|
8
8
|
require('../../../../domelementtype/lib/index.js');
|
|
9
9
|
require('../../domutils/lib/index.js');
|
|
10
10
|
var index = require('../../../../../_virtual/index5.js');
|
|
11
|
-
var index$1 = require('../../../../../_virtual/
|
|
11
|
+
var index$1 = require('../../../../../_virtual/index10.js');
|
|
12
12
|
var Parser = require('../../../../../_virtual/Parser.js');
|
|
13
13
|
var index$3 = require('../../../../../_virtual/index7.js');
|
|
14
14
|
var Tokenizer = require('../../../../../_virtual/Tokenizer.js');
|
|
@@ -187,7 +187,7 @@ const ConditionCard = ({
|
|
|
187
187
|
},
|
|
188
188
|
/* @__PURE__ */ React__default.createElement("span", null, prefix),
|
|
189
189
|
" ",
|
|
190
|
-
((_d = (_c = (_b = filter == null ? void 0 : filter.property) == null ? void 0 : _b.selectionPath) == null ? void 0 : _c[0]) == null ? void 0 : _d.label) || "
|
|
190
|
+
((_d = (_c = (_b = filter == null ? void 0 : filter.property) == null ? void 0 : _b.selectionPath) == null ? void 0 : _c[0]) == null ? void 0 : _d.label) || " ",
|
|
191
191
|
" ",
|
|
192
192
|
/* @__PURE__ */ React__default.createElement(Text, { as: "span", weight: "bold", css: { color: "$neutral900" } }, propertyLabel),
|
|
193
193
|
" ",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditionDescriptionBuilder.js","sources":["../../../../src/mapping/utils/conditionDescriptionBuilder.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Text,\n Box,\n Flex,\n Button,\n IconButton,\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n} from \"@sparrowengg/twigs-react\";\nimport {\n PencilIcon,\n EllipsisVerticalIcon,\n} from \"@sparrowengg/twigs-react-icons\";\n\ntype ComparatorType = \"AND\" | \"OR\";\ntype GlobalConnectorType = \"ALL\" | \"ANY\";\n\ntype FilterType = {\n comparator: ComparatorType;\n connector?: {\n dataType: string;\n label: string;\n value: string;\n type: string;\n };\n property: {\n label: string;\n value: string;\n selectionPath?: Array<{ label: string; value: string }>;\n };\n value: {\n NUMBER: number | null;\n DATE: string | null;\n DATE_RANGE: { start: string; end: string } | null;\n DATE_TIME_TIMEZONE: any | null;\n SINGLE_LINE_TEXT: string | null;\n MULTI_LINE_TEXT: string | null;\n SINGLE_SELECT: string | null;\n MULTI_SELECT: string[] | null;\n };\n};\n\ntype FilterGroupType = {\n filters: FilterType[];\n};\n\ntype ConditionsDataType = {\n globalConnector: GlobalConnectorType;\n filterGroups: FilterGroupType[];\n};\n\n/**\n * Formats a value based on its data type\n */\nconst formatValue = (filter: FilterType): string => {\n const { connector, value } = filter;\n\n if (!connector) return \"\";\n\n const dataType = connector.dataType;\n\n switch (dataType) {\n case \"SINGLE_LINE_TEXT\":\n return value.SINGLE_LINE_TEXT || \"\";\n\n case \"NUMBER\":\n return value.NUMBER?.toString() || \"\";\n\n case \"DATE\":\n if (value.DATE) {\n // Format date to be more readable\n const date = new Date(value.DATE);\n return date.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n }\n return \"\";\n\n case \"DATE_RANGE\":\n if (value.DATE_RANGE) {\n const startDate = new Date(value.DATE_RANGE.start);\n const endDate = new Date(value.DATE_RANGE.end);\n const formatDate = (d: Date) =>\n d.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n return `${formatDate(startDate)} to ${formatDate(endDate)}`;\n }\n return \"\";\n\n case \"SINGLE_SELECT\":\n return value.SINGLE_SELECT || \"\";\n\n case \"MULTI_SELECT\":\n if (value.MULTI_SELECT && value.MULTI_SELECT.length > 0) {\n // Get labels from choices if available\n const choices = (connector as any).choices;\n if (choices && Array.isArray(choices)) {\n const labels = value.MULTI_SELECT.map((val) => {\n const choice = choices.find((c: any) => c.value === val);\n return choice ? choice.label : val;\n });\n return labels.join(\", \");\n }\n return value.MULTI_SELECT.join(\", \");\n }\n return \"\";\n\n case \"MULTI_LINE_TEXT\":\n return value.MULTI_LINE_TEXT || \"\";\n\n default:\n return \"\";\n }\n};\n\n/**\n * Builds a description for a single filter\n */\nconst buildFilterDescription = (filter: FilterType): React.ReactNode => {\n // Build property path if selectionPath exists\n let propertyLabel = filter.property.label;\n if (\n filter.property.selectionPath &&\n filter.property.selectionPath.length > 0\n ) {\n // Skip the first item (category) and show the rest if there are more than 1 items\n if (filter.property.selectionPath.length > 1) {\n const pathLabels = filter.property.selectionPath\n .slice(1)\n .map((p) => p.label);\n propertyLabel = [...pathLabels, filter.property.label].join(\" > \");\n }\n }\n\n const operatorLabel = filter.connector?.label || \"\";\n const formattedValue = formatValue(filter);\n\n return (\n <>\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n {propertyLabel}\n </Text>{\" \"}\n {operatorLabel}{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {formattedValue}\n </Text>\n </>\n );\n};\n\n/**\n * Builds a description for a filter group\n */\nconst buildGroupDescription = (group: FilterGroupType): React.ReactNode => {\n if (group.filters.length === 0) return null;\n\n return (\n <>\n {group.filters.map((filter, index) => (\n <React.Fragment key={index}>\n {index > 0 && (\n <>\n {\" \"}\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n {filter.comparator.toLowerCase()}\n </Text>{\" \"}\n </>\n )}\n {buildFilterDescription(filter)}\n </React.Fragment>\n ))}\n </>\n );\n};\n\n/**\n * Builds the complete condition description\n */\nexport const buildConditionDescription = (\n conditionsData: ConditionsDataType\n): React.ReactNode => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <>\n When{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:{\" \"}\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <React.Fragment key={groupIndex}>\n {groupIndex > 0 && (\n <>\n {\" \"}\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n or\n </Text>{\" \"}\n </>\n )}\n ({buildGroupDescription(group)})\n </React.Fragment>\n ))}\n </>\n );\n};\n\n/**\n * Alternative: Builds a more detailed, multi-line condition description\n */\nexport const buildDetailedConditionDescription = (\n conditionsData: ConditionsDataType\n): React.ReactNode => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <div>\n <Text\n size=\"sm\"\n css={{ color: \"$neutral500\", fontFamily: \"DM Sans !important\" }}\n >\n When{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:\n </Text>\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <div key={groupIndex} style={{ marginTop: \"4px\", marginLeft: \"8px\" }}>\n <Text\n size=\"sm\"\n css={{ color: \"$neutral500\", fontFamily: \"DM Sans !important\" }}\n >\n {groupIndex > 0 && (\n <>\n <Text\n as=\"span\"\n weight=\"bold\"\n css={{\n color: \"$neutral700\",\n fontFamily: \"DM Sans !important\",\n }}\n >\n OR\n </Text>{\" \"}\n </>\n )}\n {buildGroupDescription(group)}\n </Text>\n </div>\n ))}\n </div>\n );\n};\n\n/**\n * Configure Icon Component\n */\nconst ConfigureIcon = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_1958_11629)\">\n <path\n d=\"M17.5 14.1668H14.1667M10.8333 14.1668H2.5M2.5 5.8335H5.83333M9.16667 5.8335H17.5M11.6667 11.6668H13.3333C13.7933 11.6668 14.1667 12.0402 14.1667 12.5002V15.8335C14.1667 16.2935 13.7933 16.6668 13.3333 16.6668H11.6667C11.2067 16.6668 10.8333 16.2935 10.8333 15.8335V12.5002C10.8333 12.0402 11.2067 11.6668 11.6667 11.6668ZM8.33333 8.3335H6.66667C6.20667 8.3335 5.83333 7.96016 5.83333 7.50016V4.16683C5.83333 3.70683 6.20667 3.3335 6.66667 3.3335H8.33333C8.79333 3.3335 9.16667 3.70683 9.16667 4.16683V7.50016C9.16667 7.96016 8.79333 8.3335 8.33333 8.3335Z\"\n stroke=\"#64748B\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1958_11629\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport interface ConditionCardProps {\n isEditable?: boolean;\n conditionsData: ConditionsDataType;\n onEditClick?: () => void;\n onClearClick?: () => void;\n showMoreMenu?: boolean;\n}\n\n/**\n * Builds a card-style condition display with edit and clear actions\n */\nexport const ConditionCard: React.FC<ConditionCardProps> = ({\n conditionsData,\n onEditClick,\n onClearClick,\n showMoreMenu = true,\n isEditable = false,\n}) => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <Box\n css={{\n width: \"100%\",\n marginTop: \"$8\",\n backgroundColor: !isEditable ? \"transparent\" : \"#F8F8F8\",\n borderRadius: \"$lg\",\n padding: \"$6 !important\",\n }}\n >\n <Flex flexDirection=\"column\" gap=\"$2\">\n {/* Header Row */}\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{\n maxHeight: \"20px\",\n }}\n >\n <ConfigureIcon />\n <Flex alignItems=\"center\" gap=\"$8\" css={{ flex: 1 }}>\n <Text\n size=\"sm\"\n css={{\n color: \"$neutral900\",\n fontFamily: \"DM Sans\",\n }}\n >\n When{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:\n </Text>\n </Flex>\n {isEditable ? <Flex alignItems=\"center\" gap=\"$4\">\n <Button\n leftIcon={<PencilIcon />}\n size=\"sm\"\n variant=\"ghost\"\n color=\"primary\"\n onClick={onEditClick}\n css={{\n fontFamily: \"DM Sans\",\n fontWeight: \"$5\",\n }}\n >\n Edit Conditions\n </Button>\n {showMoreMenu && onClearClick && (\n <DropdownMenu size=\"sm\">\n <DropdownMenuTrigger asChild>\n <IconButton\n size=\"sm\"\n icon={<EllipsisVerticalIcon />}\n variant=\"ghost\"\n color=\"default\"\n css={{\n borderRadius: \"$sm\",\n }}\n />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={onClearClick}>\n Clear Conditions\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </Flex> : null}\n </Flex>\n\n {/* Condition Groups */}\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <Box\n key={groupIndex}\n css={{\n paddingLeft: \"$14\",\n }}\n >\n {group.filters.map((filter, filterIndex) => {\n const propertyLabel = filter.property.label;\n const operatorLabel = filter.connector?.label || \"\";\n const formattedValue = formatValue(filter);\n\n const prefix =\n filterIndex === 0\n ? groupIndex === 0\n ? \"When\"\n : filter?.comparator === \"AND\" ? \"And When\" : \"Or When\"\n : filter.comparator.toLowerCase();\n\n return (\n <Text\n key={filterIndex}\n size=\"sm\"\n weight=\"medium\"\n css={{\n color: \"$neutral800\",\n fontFamily: \"DM Sans\",\n lineHeight: \"$md\",\n span: {\n fontWeight: \"$7\",\n color: \"$neutral900\",\n }\n }}\n >\n <span>{prefix}</span> {filter?.property?.selectionPath?.[0]?.label || \"contact property\"}{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {propertyLabel}\n </Text>{\" \"}\n {operatorLabel}{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {formattedValue}\n </Text>\n </Text>\n );\n })}\n </Box>\n ))}\n </Flex>\n </Box>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conditionDescriptionBuilder.js","sources":["../../../../src/mapping/utils/conditionDescriptionBuilder.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n Text,\n Box,\n Flex,\n Button,\n IconButton,\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n} from \"@sparrowengg/twigs-react\";\nimport {\n PencilIcon,\n EllipsisVerticalIcon,\n} from \"@sparrowengg/twigs-react-icons\";\n\ntype ComparatorType = \"AND\" | \"OR\";\ntype GlobalConnectorType = \"ALL\" | \"ANY\";\n\ntype FilterType = {\n comparator: ComparatorType;\n connector?: {\n dataType: string;\n label: string;\n value: string;\n type: string;\n };\n property: {\n label: string;\n value: string;\n selectionPath?: Array<{ label: string; value: string }>;\n };\n value: {\n NUMBER: number | null;\n DATE: string | null;\n DATE_RANGE: { start: string; end: string } | null;\n DATE_TIME_TIMEZONE: any | null;\n SINGLE_LINE_TEXT: string | null;\n MULTI_LINE_TEXT: string | null;\n SINGLE_SELECT: string | null;\n MULTI_SELECT: string[] | null;\n };\n};\n\ntype FilterGroupType = {\n filters: FilterType[];\n};\n\ntype ConditionsDataType = {\n globalConnector: GlobalConnectorType;\n filterGroups: FilterGroupType[];\n};\n\n/**\n * Formats a value based on its data type\n */\nconst formatValue = (filter: FilterType): string => {\n const { connector, value } = filter;\n\n if (!connector) return \"\";\n\n const dataType = connector.dataType;\n\n switch (dataType) {\n case \"SINGLE_LINE_TEXT\":\n return value.SINGLE_LINE_TEXT || \"\";\n\n case \"NUMBER\":\n return value.NUMBER?.toString() || \"\";\n\n case \"DATE\":\n if (value.DATE) {\n // Format date to be more readable\n const date = new Date(value.DATE);\n return date.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n }\n return \"\";\n\n case \"DATE_RANGE\":\n if (value.DATE_RANGE) {\n const startDate = new Date(value.DATE_RANGE.start);\n const endDate = new Date(value.DATE_RANGE.end);\n const formatDate = (d: Date) =>\n d.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n return `${formatDate(startDate)} to ${formatDate(endDate)}`;\n }\n return \"\";\n\n case \"SINGLE_SELECT\":\n return value.SINGLE_SELECT || \"\";\n\n case \"MULTI_SELECT\":\n if (value.MULTI_SELECT && value.MULTI_SELECT.length > 0) {\n // Get labels from choices if available\n const choices = (connector as any).choices;\n if (choices && Array.isArray(choices)) {\n const labels = value.MULTI_SELECT.map((val) => {\n const choice = choices.find((c: any) => c.value === val);\n return choice ? choice.label : val;\n });\n return labels.join(\", \");\n }\n return value.MULTI_SELECT.join(\", \");\n }\n return \"\";\n\n case \"MULTI_LINE_TEXT\":\n return value.MULTI_LINE_TEXT || \"\";\n\n default:\n return \"\";\n }\n};\n\n/**\n * Builds a description for a single filter\n */\nconst buildFilterDescription = (filter: FilterType): React.ReactNode => {\n // Build property path if selectionPath exists\n let propertyLabel = filter.property.label;\n if (\n filter.property.selectionPath &&\n filter.property.selectionPath.length > 0\n ) {\n // Skip the first item (category) and show the rest if there are more than 1 items\n if (filter.property.selectionPath.length > 1) {\n const pathLabels = filter.property.selectionPath\n .slice(1)\n .map((p) => p.label);\n propertyLabel = [...pathLabels, filter.property.label].join(\" > \");\n }\n }\n\n const operatorLabel = filter.connector?.label || \"\";\n const formattedValue = formatValue(filter);\n\n return (\n <>\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n {propertyLabel}\n </Text>{\" \"}\n {operatorLabel}{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {formattedValue}\n </Text>\n </>\n );\n};\n\n/**\n * Builds a description for a filter group\n */\nconst buildGroupDescription = (group: FilterGroupType): React.ReactNode => {\n if (group.filters.length === 0) return null;\n\n return (\n <>\n {group.filters.map((filter, index) => (\n <React.Fragment key={index}>\n {index > 0 && (\n <>\n {\" \"}\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n {filter.comparator.toLowerCase()}\n </Text>{\" \"}\n </>\n )}\n {buildFilterDescription(filter)}\n </React.Fragment>\n ))}\n </>\n );\n};\n\n/**\n * Builds the complete condition description\n */\nexport const buildConditionDescription = (\n conditionsData: ConditionsDataType\n): React.ReactNode => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <>\n When{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:{\" \"}\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <React.Fragment key={groupIndex}>\n {groupIndex > 0 && (\n <>\n {\" \"}\n <Text\n as=\"span\"\n weight=\"medium\"\n className=\"dm-sans\"\n css={{ color: \"$neutral700\", fontFamily: \"DM Sans !important\" }}\n >\n or\n </Text>{\" \"}\n </>\n )}\n ({buildGroupDescription(group)})\n </React.Fragment>\n ))}\n </>\n );\n};\n\n/**\n * Alternative: Builds a more detailed, multi-line condition description\n */\nexport const buildDetailedConditionDescription = (\n conditionsData: ConditionsDataType\n): React.ReactNode => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <div>\n <Text\n size=\"sm\"\n css={{ color: \"$neutral500\", fontFamily: \"DM Sans !important\" }}\n >\n When{\" \"}\n <Text\n as=\"span\"\n weight=\"bold\"\n className=\"dm-sans\"\n css={{ color: \"$neutral900\", fontFamily: \"DM Sans !important\" }}\n >\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:\n </Text>\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <div key={groupIndex} style={{ marginTop: \"4px\", marginLeft: \"8px\" }}>\n <Text\n size=\"sm\"\n css={{ color: \"$neutral500\", fontFamily: \"DM Sans !important\" }}\n >\n {groupIndex > 0 && (\n <>\n <Text\n as=\"span\"\n weight=\"bold\"\n css={{\n color: \"$neutral700\",\n fontFamily: \"DM Sans !important\",\n }}\n >\n OR\n </Text>{\" \"}\n </>\n )}\n {buildGroupDescription(group)}\n </Text>\n </div>\n ))}\n </div>\n );\n};\n\n/**\n * Configure Icon Component\n */\nconst ConfigureIcon = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_1958_11629)\">\n <path\n d=\"M17.5 14.1668H14.1667M10.8333 14.1668H2.5M2.5 5.8335H5.83333M9.16667 5.8335H17.5M11.6667 11.6668H13.3333C13.7933 11.6668 14.1667 12.0402 14.1667 12.5002V15.8335C14.1667 16.2935 13.7933 16.6668 13.3333 16.6668H11.6667C11.2067 16.6668 10.8333 16.2935 10.8333 15.8335V12.5002C10.8333 12.0402 11.2067 11.6668 11.6667 11.6668ZM8.33333 8.3335H6.66667C6.20667 8.3335 5.83333 7.96016 5.83333 7.50016V4.16683C5.83333 3.70683 6.20667 3.3335 6.66667 3.3335H8.33333C8.79333 3.3335 9.16667 3.70683 9.16667 4.16683V7.50016C9.16667 7.96016 8.79333 8.3335 8.33333 8.3335Z\"\n stroke=\"#64748B\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1958_11629\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport interface ConditionCardProps {\n isEditable?: boolean;\n conditionsData: ConditionsDataType;\n onEditClick?: () => void;\n onClearClick?: () => void;\n showMoreMenu?: boolean;\n}\n\n/**\n * Builds a card-style condition display with edit and clear actions\n */\nexport const ConditionCard: React.FC<ConditionCardProps> = ({\n conditionsData,\n onEditClick,\n onClearClick,\n showMoreMenu = true,\n isEditable = false,\n}) => {\n if (!conditionsData || conditionsData.filterGroups.length === 0) {\n return null;\n }\n\n const globalConnectorText =\n conditionsData.globalConnector === \"ALL\" ? \"all\" : \"any\";\n\n return (\n <Box\n css={{\n width: \"100%\",\n marginTop: \"$8\",\n backgroundColor: !isEditable ? \"transparent\" : \"#F8F8F8\",\n borderRadius: \"$lg\",\n padding: \"$6 !important\",\n }}\n >\n <Flex flexDirection=\"column\" gap=\"$2\">\n {/* Header Row */}\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{\n maxHeight: \"20px\",\n }}\n >\n <ConfigureIcon />\n <Flex alignItems=\"center\" gap=\"$8\" css={{ flex: 1 }}>\n <Text\n size=\"sm\"\n css={{\n color: \"$neutral900\",\n fontFamily: \"DM Sans\",\n }}\n >\n When{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {globalConnectorText}\n </Text>{\" \"}\n of these conditions are met:\n </Text>\n </Flex>\n {isEditable ? <Flex alignItems=\"center\" gap=\"$4\">\n <Button\n leftIcon={<PencilIcon />}\n size=\"sm\"\n variant=\"ghost\"\n color=\"primary\"\n onClick={onEditClick}\n css={{\n fontFamily: \"DM Sans\",\n fontWeight: \"$5\",\n }}\n >\n Edit Conditions\n </Button>\n {showMoreMenu && onClearClick && (\n <DropdownMenu size=\"sm\">\n <DropdownMenuTrigger asChild>\n <IconButton\n size=\"sm\"\n icon={<EllipsisVerticalIcon />}\n variant=\"ghost\"\n color=\"default\"\n css={{\n borderRadius: \"$sm\",\n }}\n />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={onClearClick}>\n Clear Conditions\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </Flex> : null}\n </Flex>\n\n {/* Condition Groups */}\n {conditionsData.filterGroups.map((group, groupIndex) => (\n <Box\n key={groupIndex}\n css={{\n paddingLeft: \"$14\",\n }}\n >\n {group.filters.map((filter, filterIndex) => {\n const propertyLabel = filter.property.label;\n const operatorLabel = filter.connector?.label || \"\";\n const formattedValue = formatValue(filter);\n\n const prefix =\n filterIndex === 0\n ? groupIndex === 0\n ? \"When\"\n : filter?.comparator === \"AND\" ? \"And When\" : \"Or When\"\n : filter.comparator.toLowerCase();\n\n return (\n <Text\n key={filterIndex}\n size=\"sm\"\n weight=\"medium\"\n css={{\n color: \"$neutral800\",\n fontFamily: \"DM Sans\",\n lineHeight: \"$md\",\n span: {\n fontWeight: \"$7\",\n color: \"$neutral900\",\n }\n }}\n >\n <span>{prefix}</span> {filter?.property?.selectionPath?.[0]?.label || \" \"}{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {propertyLabel}\n </Text>{\" \"}\n {operatorLabel}{\" \"}\n <Text as=\"span\" weight=\"bold\" css={{ color: \"$neutral900\" }}>\n {formattedValue}\n </Text>\n </Text>\n );\n })}\n </Box>\n ))}\n </Flex>\n </Box>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __module as reactIs } from '../../../../_virtual/
|
|
1
|
+
import { __module as reactIs } from '../../../../_virtual/index9.js';
|
|
2
2
|
import { __require as requireReactIs_production_min } from './cjs/react-is.production.min.js';
|
|
3
3
|
import { __require as requireReactIs_development } from './cjs/react-is.development.js';
|
|
4
4
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { commonjsGlobal } from '../../../../../_virtual/_commonjsHelpers.js';
|
|
2
|
-
import { __exports as lib } from '../../../../../_virtual/
|
|
2
|
+
import { __exports as lib } from '../../../../../_virtual/index10.js';
|
|
3
3
|
import './stringify.js';
|
|
4
4
|
import './traversal.js';
|
|
5
5
|
import './manipulation.js';
|
|
@@ -6,7 +6,7 @@ import './Tokenizer.js';
|
|
|
6
6
|
import '../../../../domelementtype/lib/index.js';
|
|
7
7
|
import '../../domutils/lib/index.js';
|
|
8
8
|
import { __exports as lib } from '../../../../../_virtual/index5.js';
|
|
9
|
-
import { __exports as lib$1 } from '../../../../../_virtual/
|
|
9
|
+
import { __exports as lib$1 } from '../../../../../_virtual/index10.js';
|
|
10
10
|
import { __exports as Parser } from '../../../../../_virtual/Parser.js';
|
|
11
11
|
import { __exports as lib$3 } from '../../../../../_virtual/index7.js';
|
|
12
12
|
import { __exports as Tokenizer } from '../../../../../_virtual/Tokenizer.js';
|