@sparrowengg/integrations-templates-frontend 6.0.7 → 7.0.0-bulkify.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +663 -0
- package/dist/cjs/cascader-dropdown/cascader-dropdown-provider.js +17 -1
- package/dist/cjs/cascader-dropdown/cascader-dropdown-provider.js.map +1 -1
- package/dist/cjs/cascader-dropdown/cascader-dropdown.js +5 -1
- package/dist/cjs/cascader-dropdown/cascader-dropdown.js.map +1 -1
- package/dist/cjs/dynamic-mapping/components/mapping.js +4 -2
- package/dist/cjs/dynamic-mapping/components/mapping.js.map +1 -1
- package/dist/cjs/dynamic-mapping/constants/condition-operators.js +1 -0
- package/dist/cjs/dynamic-mapping/constants/condition-operators.js.map +1 -1
- package/dist/cjs/dynamic-mapping/helpers/mapping.helpers.js +10 -0
- package/dist/cjs/dynamic-mapping/helpers/mapping.helpers.js.map +1 -1
- package/dist/cjs/dynamic-mapping/hooks/use-mapping-data.js +44 -29
- package/dist/cjs/dynamic-mapping/hooks/use-mapping-data.js.map +1 -1
- package/dist/cjs/dynamic-mapping/index.js +4 -2
- package/dist/cjs/dynamic-mapping/index.js.map +1 -1
- package/dist/cjs/filter/filter-pill.js +19 -9
- package/dist/cjs/filter/filter-pill.js.map +1 -1
- package/dist/es/cascader-dropdown/cascader-dropdown-provider.js +18 -2
- package/dist/es/cascader-dropdown/cascader-dropdown-provider.js.map +1 -1
- package/dist/es/cascader-dropdown/cascader-dropdown.js +5 -1
- package/dist/es/cascader-dropdown/cascader-dropdown.js.map +1 -1
- package/dist/es/dynamic-mapping/components/mapping.js +4 -2
- package/dist/es/dynamic-mapping/components/mapping.js.map +1 -1
- package/dist/es/dynamic-mapping/constants/condition-operators.js +1 -0
- package/dist/es/dynamic-mapping/constants/condition-operators.js.map +1 -1
- package/dist/es/dynamic-mapping/helpers/mapping.helpers.js +10 -1
- package/dist/es/dynamic-mapping/helpers/mapping.helpers.js.map +1 -1
- package/dist/es/dynamic-mapping/hooks/use-mapping-data.js +36 -21
- package/dist/es/dynamic-mapping/hooks/use-mapping-data.js.map +1 -1
- package/dist/es/dynamic-mapping/index.js +4 -2
- package/dist/es/dynamic-mapping/index.js.map +1 -1
- package/dist/es/filter/filter-pill.js +20 -10
- package/dist/es/filter/filter-pill.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-pill.js","sources":["../../../src/filter/filter-pill.tsx"],"sourcesContent":["import { CloseCircleFillIcon } from '@sparrowengg/twigs-react-icons';\nimport { Box, BoxProps } from '@sparrowengg/twigs-react';\nimport { Flex } from '@sparrowengg/twigs-react';\nimport { Tooltip, TooltipProvider } from '@sparrowengg/twigs-react';\nimport { styled } from '../../slitches.config';\nimport { Text, TextProps } from '@sparrowengg/twigs-react';\nimport { prefixClassName } from '../cascader-dropdown/styled/StyledItem';\nimport React from 'react';\nimport { CascaderDropdown, OnChangeReturnType } from '../cascader-dropdown';\nimport {\n CascaderDropdownItemType, CascaderDropdownOperatorType, CascaderDropdownValueSelectorType, dataTypes, initialFilterValueSelectorValue, optionTypes\n} from '../cascader-dropdown/helpers/cascader-dropdown-constants';\nimport { CSS } from '@stitches/react';\nimport FilterPillValueSelector from './filter-pill-value-selector';\nimport { FilterType } from './stories/filter.stories';\n\nexport type FilterPillProps = {\n icon?: React.ReactNode;\n filterPillData: FilterType;\n setFilterPillData: (value: FilterType) => void;\n variant?: 'filled' | 'outline';\n cascaderDropdownData: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n onDelete: () => void;\n showError?: boolean;\n};\n\nexport type FilterValueOperatorType = {\n label: string;\n value: string;\n dataType: keyof typeof dataTypes;\n choices?: { label: string; value: string }[];\n};\n\nexport type FilterValueItemType = {\n label?: string;\n value?: string;\n options: FilterValueOperatorType[];\n};\n\nconst resolveChoiceLabel = (\n rawValue: string,\n choices?: { label: string; value: string }[]\n): string => {\n if (!choices?.length) return rawValue;\n return choices.find((c) => c.value === rawValue)?.label ?? rawValue;\n};\n\nconst getDisplayValue = (value: FilterType) => {\n if (!value.connector) return null;\n const displayValue = value.value?.[value.connector.dataType];\n const choices = (value.connector as any)?.choices as { label: string; value: string }[] | undefined;\n\n if (value.connector.dataType === dataTypes.SINGLE_SELECT && typeof displayValue === 'string') {\n return resolveChoiceLabel(displayValue, choices);\n }\n if (value.connector.dataType === dataTypes.MULTI_SELECT && Array.isArray(displayValue)) {\n return displayValue.map((v) => resolveChoiceLabel(v, choices)).join(', ');\n }\n if (typeof displayValue === 'string') return displayValue;\n if (Array.isArray(displayValue)) return displayValue.join(', ');\n if (value.connector.dataType === dataTypes.DATE_RANGE && typeof displayValue === 'object' && displayValue !== null) {\n return `${displayValue.start} - ${displayValue.end}`;\n }\n return null;\n};\n\nexport const FilterPill = ({\n icon,\n filterPillData,\n setFilterPillData,\n variant = 'outline',\n cascaderDropdownData,\n onDelete,\n showError = false\n}: FilterPillProps) => {\n const onChange = ({\n selectedProperty,\n selectorValue\n }: OnChangeReturnType) => {\n if (selectedProperty && 'type' in selectedProperty && selectedProperty.type === optionTypes.VALUE_SELECTOR) {\n if (!('dataType' in selectedProperty)) return;\n const connector: Record<string, any> = {\n dataType: selectedProperty.dataType as keyof typeof dataTypes,\n label: `${selectedProperty.label}`,\n value: `${selectedProperty.value}`,\n type: selectedProperty.type as 'VALUE_SELECTOR',\n };\n if ('choices' in selectedProperty && selectedProperty.choices) {\n connector.choices = selectedProperty.choices;\n }\n const newFilterPillData = {\n ...filterPillData,\n value: selectorValue ?? initialFilterValueSelectorValue,\n connector,\n };\n setFilterPillData(newFilterPillData);\n }\n };\n\n return (\n <TooltipProvider delayDuration={0}>\n <StyledFilterPill variant={showError ? 'error' : variant}>\n <FilterPillLabel icon={icon} label={filterPillData.property.label} labelProps={{ css: { color: '$neutral900' } }} />\n <Flex>\n {!filterPillData.connector?.value && (\n <CascaderDropdown\n data={cascaderDropdownData}\n selectorValue={filterPillData.value}\n onChange={onChange}\n dropdownContentProps={{ align: 'start' }}\n >\n <StyledValueButton css={{ borderTopRightRadius: '$lg', borderBottomRightRadius: '$lg' }}>\n <Text\n css={{\n color: '$neutral700',\n padding: '3px $4 3px $1',\n ...(showError && {\n color: '$negative700',\n fontWeight: '$5'\n })\n }}\n >\n Choose Condition\n </Text>\n </StyledValueButton>\n </CascaderDropdown>\n )}\n {filterPillData.connector?.value && (\n <CascaderDropdown\n data={cascaderDropdownData}\n selectorValue={filterPillData.value}\n onChange={onChange}\n dropdownContentProps={{ align: 'start' }}\n >\n <StyledValueButton css={{\n ...(filterPillData.connector?.dataType === 'NO_VALUE' && {\n borderTopRightRadius: '$lg',\n borderBottomRightRadius: '$lg'\n })\n }}>\n <Text css={{ color: '$neutral700', padding: '3px $1 3px $1' }}>{filterPillData.connector?.label}</Text>\n </StyledValueButton>\n </CascaderDropdown>\n )}\n {filterPillData.connector?.value && filterPillData.connector?.dataType !== 'NO_VALUE' && (\n <CascaderDropdown\n data={cascaderDropdownData}\n selectorValue={filterPillData.value}\n value={filterPillData.connector}\n onChange={onChange}\n dropdownContentProps={{ align: 'start' }}\n >\n <StyledValueButton css={{ borderTopRightRadius: '$lg', borderBottomRightRadius: '$lg' }}>\n <Text\n css={{\n color: '$neutral900',\n padding: '3px $4 3px $2',\n ...(showError && {\n color: '$negative700'\n })\n }}\n weight=\"medium\"\n >\n {getDisplayValue(filterPillData) ?? 'Choose Value'}\n </Text>\n </StyledValueButton>\n </CascaderDropdown>\n )}\n </Flex>\n <Tooltip content=\"Remove\">\n <StyledCloseButton className={prefixClassName('filter-pill__close-button')} onClick={() => onDelete()}>\n <CloseCircleFillIcon size={16} />\n </StyledCloseButton>\n </Tooltip>\n </StyledFilterPill>\n </TooltipProvider>\n );\n};\n\nconst FilterPillLabel = ({\n icon, label, css, labelProps, iconProps\n}: { icon?: React.ReactNode, label?: string, css?: CSS, labelProps?: TextProps, iconProps?: BoxProps }) => {\n return (\n <Flex alignItems=\"center\" gap=\"$2\" css={{ padding: '3px $2 3px $4', ...css }}>\n {icon && (\n <Box\n {...iconProps}\n css={{\n lineHeight: 0,\n flexShrink: 0,\n color: '$neutral800',\n '&, & svg': {\n minWidth: '$4',\n minHeight: '$4',\n height: '$4',\n width: '$4'\n },\n ...iconProps?.css\n }}\n >\n {icon}\n </Box>\n )}\n <Text\n weight=\"medium\"\n truncate\n {...labelProps}\n css={{ color: '$neutral700', maxWidth: '$25', ...labelProps?.css }}\n >\n {label}\n </Text>\n </Flex>\n );\n};\n\ntype FilterPillWithoutOperatorProps = {\n icon?: React.ReactNode;\n filterPillData: FilterType;\n setFilterPillData: (value: FilterType) => void;\n variant?: 'filled' | 'outline';\n data: CascaderDropdownOperatorType;\n onDelete: () => void;\n showError?: boolean;\n};\nexport const FilterPillWithoutOperator = ({\n icon,\n filterPillData,\n setFilterPillData,\n variant = 'outline',\n data,\n onDelete,\n showError = false\n}: FilterPillWithoutOperatorProps) => {\n const onChange = (value: CascaderDropdownValueSelectorType[keyof CascaderDropdownValueSelectorType]) => {\n const newFilterPillData = {\n ...filterPillData,\n value: {\n ...filterPillData.value,\n [data.dataType]: value\n },\n connector: {\n dataType: data.dataType,\n label: `${data.label}`,\n value: `${data.value}`,\n type: data.type\n }\n };\n setFilterPillData(newFilterPillData);\n };\n\n return (\n <TooltipProvider delayDuration={0}>\n <StyledFilterPill variant={showError ? 'error' : variant}>\n <FilterPillLabel icon={icon} label={`${filterPillData.property.label}:`} />\n {data.dataType === 'NO_VALUE' ? (\n <Flex>\n <StyledValueButton css={{ borderTopRightRadius: '$lg', borderBottomRightRadius: '$lg' }}>\n <Text\n css={{\n color: '$neutral700',\n padding: '3px $4 3px $2'\n }}\n weight=\"medium\"\n >\n {data.label}\n </Text>\n </StyledValueButton>\n </Flex>\n ) : (\n <FilterPillValueSelector selectorValue={filterPillData.value} dataType={data.dataType} choices={data.choices} onApply={onChange}>\n <Flex>\n <StyledValueButton css={{ borderTopRightRadius: '$lg', borderBottomRightRadius: '$lg' }}>\n <Text\n css={{\n color: '$neutral900',\n padding: '3px $4 3px $2',\n ...(showError && {\n color: '$negative700'\n })\n }}\n weight=\"medium\"\n >\n {getDisplayValue(filterPillData) ?? 'Choose Value'}\n </Text>\n </StyledValueButton>\n </Flex>\n </FilterPillValueSelector>\n )}\n <Tooltip content=\"Remove\">\n <StyledCloseButton className={prefixClassName('filter-pill__close-button')} onClick={() => onDelete()}>\n <CloseCircleFillIcon size={16} />\n </StyledCloseButton>\n </Tooltip>\n </StyledFilterPill>\n </TooltipProvider>\n );\n};\n\nconst StyledFilterPill = styled(Flex, {\n height: '$7',\n alignItems: 'center',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: '$black200',\n borderRadius: '$lg',\n transition: 'all $transitions$2',\n cursor: 'default',\n width: 'fit-content',\n position: 'relative',\n flexShrink: 0,\n '&:hover': {\n borderColor: '$black400'\n },\n [`&:hover .${prefixClassName('filter-pill__close-button')}`]: {\n opacity: 1\n },\n variants: {\n disabled: {\n true: {\n opacity: 0.4,\n cursor: 'not-allowed'\n }\n },\n variant: {\n outline: {\n backgroundColor: 'transparent'\n },\n filled: {\n backgroundColor: '$secondary50'\n },\n error: {\n backgroundColorOpacity: ['$negative500', 0.05],\n borderStyle: 'dashed',\n borderColor: '$negative400',\n '&:hover': {\n borderColor: '$negative400'\n }\n }\n }\n },\n defaultVariants: {\n variant: 'outline'\n }\n});\n\nconst StyledValueButton = styled('button', {\n backgroundColor: 'transparent',\n display: 'flex',\n alignItems: 'center',\n border: 'none',\n cursor: 'pointer',\n height: '100%',\n transition: 'all $transitions$2',\n outlineWidth: '1px',\n outlineStyle: 'solid',\n outlineColor: 'transparent',\n flexShrink: 0,\n '&:focus, &:active': {\n outlineColor: 'transparent'\n },\n '&:focus-visible': {\n outline: '1px solid $primary400'\n }\n});\n\nconst StyledCloseButton = styled('button', {\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'pointer',\n outline: 'none',\n color: '$neutral500',\n transition: 'all $transitions$2',\n lineHeight: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n transform: 'translate(35%, -35%)',\n opacity: 0,\n background: 'radial-gradient($white900, $white900 50%, transparent 50%, transparent)',\n '&:hover, &:focus, &:active, &:focus-visible': {\n opacity: 1\n },\n '& path': {\n outlineWidth: '3px',\n outlineStyle: 'solid',\n outlineColor: '$white900',\n borderRadius: '$round'\n },\n '&:hover': {\n color: '$neutral800'\n },\n '&:hover path, &:focus path, &:active path, &:focus-visible path': {\n outlineColor: '#F2F5F8'\n }\n});\n"],"names":["dataTypes","optionTypes","initialFilterValueSelectorValue","TooltipProvider","Flex","CascaderDropdown","Text","Tooltip","prefixClassName","CloseCircleFillIcon","Box","FilterPillValueSelector","styled"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-pill.js","sources":["../../../src/filter/filter-pill.tsx"],"sourcesContent":["import { CloseCircleFillIcon } from '@sparrowengg/twigs-react-icons';\nimport { Box, BoxProps } from '@sparrowengg/twigs-react';\nimport { Flex } from '@sparrowengg/twigs-react';\nimport { Tooltip, TooltipProvider } from '@sparrowengg/twigs-react';\nimport { styled } from '../../slitches.config';\nimport { Text, TextProps } from '@sparrowengg/twigs-react';\nimport { prefixClassName } from '../cascader-dropdown/styled/StyledItem';\nimport React, { useState } from 'react';\nimport { CascaderDropdown, OnChangeReturnType } from '../cascader-dropdown';\nimport {\n CascaderDropdownItemType, CascaderDropdownOperatorType, CascaderDropdownValueSelectorType, dataTypes, initialFilterValueSelectorValue, optionTypes\n} from '../cascader-dropdown/helpers/cascader-dropdown-constants';\nimport { CSS } from '@stitches/react';\nimport FilterPillValueSelector from './filter-pill-value-selector';\nimport { FilterType } from './stories/filter.stories';\n\nexport type FilterPillProps = {\n icon?: React.ReactNode;\n filterPillData: FilterType;\n setFilterPillData: (value: FilterType) => void;\n variant?: 'filled' | 'outline';\n cascaderDropdownData: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n onDelete: () => void;\n showError?: boolean;\n};\n\nexport type FilterValueOperatorType = {\n label: string;\n value: string;\n dataType: keyof typeof dataTypes;\n choices?: { label: string; value: string }[];\n};\n\nexport type FilterValueItemType = {\n label?: string;\n value?: string;\n options: FilterValueOperatorType[];\n};\n\nconst resolveChoiceLabel = (\n rawValue: string,\n choices?: { label: string; value: string }[]\n): string => {\n if (!choices?.length) return rawValue;\n return choices.find((c) => c.value === rawValue)?.label ?? rawValue;\n};\n\nconst getDisplayValue = (value: FilterType) => {\n if (!value.connector) return null;\n const displayValue = value.value?.[value.connector.dataType];\n const choices = (value.connector as any)?.choices as { label: string; value: string }[] | undefined;\n\n if (value.connector.dataType === dataTypes.SINGLE_SELECT && typeof displayValue === 'string') {\n return resolveChoiceLabel(displayValue, choices);\n }\n if (value.connector.dataType === dataTypes.MULTI_SELECT && Array.isArray(displayValue)) {\n return displayValue.map((v) => resolveChoiceLabel(v, choices)).join(', ');\n }\n if (typeof displayValue === 'string') return displayValue;\n if (Array.isArray(displayValue)) return displayValue.join(', ');\n if (value.connector.dataType === dataTypes.DATE_RANGE && typeof displayValue === 'object' && displayValue !== null) {\n return `${displayValue.start} - ${displayValue.end}`;\n }\n return null;\n};\n\nexport const FilterPill = ({\n icon,\n filterPillData,\n setFilterPillData,\n variant = 'outline',\n cascaderDropdownData,\n onDelete,\n showError = false\n}: FilterPillProps) => {\n const [operatorDismissed, setOperatorDismissed] = useState(false);\n const isConnectorMissing = !filterPillData.connector?.value;\n const effectiveShowError = showError && (!isConnectorMissing || operatorDismissed);\n\n const handleOperatorOpenChange = (open: boolean) => {\n if (!open && isConnectorMissing) {\n setOperatorDismissed(true);\n }\n };\n\n const onChange = ({\n selectedProperty,\n selectorValue\n }: OnChangeReturnType) => {\n if (selectedProperty && 'type' in selectedProperty && selectedProperty.type === optionTypes.VALUE_SELECTOR) {\n if (!('dataType' in selectedProperty)) return;\n const connector: Record<string, any> = {\n dataType: selectedProperty.dataType as keyof typeof dataTypes,\n label: `${selectedProperty.label}`,\n value: `${selectedProperty.value}`,\n type: selectedProperty.type as 'VALUE_SELECTOR',\n };\n if ('choices' in selectedProperty && selectedProperty.choices) {\n connector.choices = selectedProperty.choices;\n }\n const newFilterPillData = {\n ...filterPillData,\n value: selectorValue ?? initialFilterValueSelectorValue,\n connector,\n };\n setFilterPillData(newFilterPillData);\n }\n };\n\n return (\n <TooltipProvider delayDuration={0}>\n <StyledFilterPill variant={effectiveShowError ? 'error' : variant}>\n <FilterPillLabel icon={icon} label={filterPillData.property.label} labelProps={{ css: { color: '$neutral900' } }} />\n <Flex>\n {!filterPillData.connector?.value && (\n <CascaderDropdown\n data={cascaderDropdownData}\n selectorValue={filterPillData.value}\n onChange={onChange}\n defaultOpen\n onOpenChange={handleOperatorOpenChange}\n dropdownContentProps={{ align: 'start' }}\n >\n <StyledValueButton css={{ borderTopRightRadius: '$lg', borderBottomRightRadius: '$lg' }}>\n <Text\n css={{\n color: '$neutral700',\n padding: '3px $4 3px $1',\n ...(effectiveShowError && {\n color: '$negative700',\n fontWeight: '$5'\n })\n }}\n >\n Choose Condition\n </Text>\n </StyledValueButton>\n </CascaderDropdown>\n )}\n {filterPillData.connector?.value && (\n <CascaderDropdown\n data={cascaderDropdownData}\n selectorValue={filterPillData.value}\n onChange={onChange}\n dropdownContentProps={{ align: 'start' }}\n >\n <StyledValueButton css={{\n ...(filterPillData.connector?.dataType === 'NO_VALUE' && {\n borderTopRightRadius: '$lg',\n borderBottomRightRadius: '$lg'\n })\n }}>\n <Text css={{ color: '$neutral700', padding: '3px $1 3px $1' }}>{filterPillData.connector?.label}</Text>\n </StyledValueButton>\n </CascaderDropdown>\n )}\n {filterPillData.connector?.value && filterPillData.connector?.dataType !== 'NO_VALUE' && (\n <CascaderDropdown\n data={cascaderDropdownData}\n selectorValue={filterPillData.value}\n value={filterPillData.connector}\n onChange={onChange}\n dropdownContentProps={{ align: 'start' }}\n >\n <StyledValueButton css={{ borderTopRightRadius: '$lg', borderBottomRightRadius: '$lg' }}>\n <Text\n css={{\n color: '$neutral900',\n padding: '3px $4 3px $2',\n ...(effectiveShowError && {\n color: '$negative700'\n })\n }}\n weight=\"medium\"\n >\n {getDisplayValue(filterPillData) ?? 'Choose Value'}\n </Text>\n </StyledValueButton>\n </CascaderDropdown>\n )}\n </Flex>\n <Tooltip content=\"Remove\">\n <StyledCloseButton className={prefixClassName('filter-pill__close-button')} onClick={() => onDelete()}>\n <CloseCircleFillIcon size={16} />\n </StyledCloseButton>\n </Tooltip>\n </StyledFilterPill>\n </TooltipProvider>\n );\n};\n\nconst FilterPillLabel = ({\n icon, label, css, labelProps, iconProps\n}: { icon?: React.ReactNode, label?: string, css?: CSS, labelProps?: TextProps, iconProps?: BoxProps }) => {\n return (\n <Flex alignItems=\"center\" gap=\"$2\" css={{ padding: '3px $2 3px $4', ...css }}>\n {icon && (\n <Box\n {...iconProps}\n css={{\n lineHeight: 0,\n flexShrink: 0,\n color: '$neutral800',\n '&, & svg': {\n minWidth: '$4',\n minHeight: '$4',\n height: '$4',\n width: '$4'\n },\n ...iconProps?.css\n }}\n >\n {icon}\n </Box>\n )}\n <Text\n weight=\"medium\"\n truncate\n {...labelProps}\n css={{ color: '$neutral700', maxWidth: '$25', ...labelProps?.css }}\n >\n {label}\n </Text>\n </Flex>\n );\n};\n\ntype FilterPillWithoutOperatorProps = {\n icon?: React.ReactNode;\n filterPillData: FilterType;\n setFilterPillData: (value: FilterType) => void;\n variant?: 'filled' | 'outline';\n data: CascaderDropdownOperatorType;\n onDelete: () => void;\n showError?: boolean;\n};\nexport const FilterPillWithoutOperator = ({\n icon,\n filterPillData,\n setFilterPillData,\n variant = 'outline',\n data,\n onDelete,\n showError = false\n}: FilterPillWithoutOperatorProps) => {\n const onChange = (value: CascaderDropdownValueSelectorType[keyof CascaderDropdownValueSelectorType]) => {\n const newFilterPillData = {\n ...filterPillData,\n value: {\n ...filterPillData.value,\n [data.dataType]: value\n },\n connector: {\n dataType: data.dataType,\n label: `${data.label}`,\n value: `${data.value}`,\n type: data.type\n }\n };\n setFilterPillData(newFilterPillData);\n };\n\n return (\n <TooltipProvider delayDuration={0}>\n <StyledFilterPill variant={showError ? 'error' : variant}>\n <FilterPillLabel icon={icon} label={`${filterPillData.property.label}:`} />\n {data.dataType === 'NO_VALUE' ? (\n <Flex>\n <StyledValueButton css={{ borderTopRightRadius: '$lg', borderBottomRightRadius: '$lg' }}>\n <Text\n css={{\n color: '$neutral700',\n padding: '3px $4 3px $2'\n }}\n weight=\"medium\"\n >\n {data.label}\n </Text>\n </StyledValueButton>\n </Flex>\n ) : (\n <FilterPillValueSelector selectorValue={filterPillData.value} dataType={data.dataType} choices={data.choices} onApply={onChange}>\n <Flex>\n <StyledValueButton css={{ borderTopRightRadius: '$lg', borderBottomRightRadius: '$lg' }}>\n <Text\n css={{\n color: '$neutral900',\n padding: '3px $4 3px $2',\n ...(showError && {\n color: '$negative700'\n })\n }}\n weight=\"medium\"\n >\n {getDisplayValue(filterPillData) ?? 'Choose Value'}\n </Text>\n </StyledValueButton>\n </Flex>\n </FilterPillValueSelector>\n )}\n <Tooltip content=\"Remove\">\n <StyledCloseButton className={prefixClassName('filter-pill__close-button')} onClick={() => onDelete()}>\n <CloseCircleFillIcon size={16} />\n </StyledCloseButton>\n </Tooltip>\n </StyledFilterPill>\n </TooltipProvider>\n );\n};\n\nconst StyledFilterPill = styled(Flex, {\n height: '$7',\n alignItems: 'center',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: '$black200',\n borderRadius: '$lg',\n transition: 'all $transitions$2',\n cursor: 'default',\n width: 'fit-content',\n position: 'relative',\n flexShrink: 0,\n '&:hover': {\n borderColor: '$black400'\n },\n [`&:hover .${prefixClassName('filter-pill__close-button')}`]: {\n opacity: 1\n },\n variants: {\n disabled: {\n true: {\n opacity: 0.4,\n cursor: 'not-allowed'\n }\n },\n variant: {\n outline: {\n backgroundColor: 'transparent'\n },\n filled: {\n backgroundColor: '$secondary50'\n },\n error: {\n backgroundColorOpacity: ['$negative500', 0.05],\n borderStyle: 'dashed',\n borderColor: '$negative400',\n '&:hover': {\n borderColor: '$negative400'\n }\n }\n }\n },\n defaultVariants: {\n variant: 'outline'\n }\n});\n\nconst StyledValueButton = styled('button', {\n backgroundColor: 'transparent',\n display: 'flex',\n alignItems: 'center',\n border: 'none',\n cursor: 'pointer',\n height: '100%',\n transition: 'all $transitions$2',\n outlineWidth: '1px',\n outlineStyle: 'solid',\n outlineColor: 'transparent',\n flexShrink: 0,\n '&:focus, &:active': {\n outlineColor: 'transparent'\n },\n '&:focus-visible': {\n outline: '1px solid $primary400'\n }\n});\n\nconst StyledCloseButton = styled('button', {\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'pointer',\n outline: 'none',\n color: '$neutral500',\n transition: 'all $transitions$2',\n lineHeight: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n transform: 'translate(35%, -35%)',\n opacity: 0,\n background: 'radial-gradient($white900, $white900 50%, transparent 50%, transparent)',\n '&:hover, &:focus, &:active, &:focus-visible': {\n opacity: 1\n },\n '& path': {\n outlineWidth: '3px',\n outlineStyle: 'solid',\n outlineColor: '$white900',\n borderRadius: '$round'\n },\n '&:hover': {\n color: '$neutral800'\n },\n '&:hover path, &:focus path, &:active path, &:focus-visible path': {\n outlineColor: '#F2F5F8'\n }\n});\n"],"names":["dataTypes","useState","optionTypes","initialFilterValueSelectorValue","TooltipProvider","Flex","CascaderDropdown","Text","Tooltip","prefixClassName","CloseCircleFillIcon","Box","FilterPillValueSelector","styled"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default, { useId, useRef, useState,
|
|
1
|
+
import React__default, { useId, useRef, useState, useEffect, useMemo } from 'react';
|
|
2
2
|
import { optionTypes } from './helpers/cascader-dropdown-constants.js';
|
|
3
3
|
import { CascaderDropdownContext } from './use-value.js';
|
|
4
4
|
import { buildSelectionPath, buildTree, recursiveFind, findPrevFocusableRowNode, findNextFocusableRowNode } from './helpers/cascader-dropdown-utils.js';
|
|
@@ -8,11 +8,27 @@ const CascaderDropdownProvider = ({
|
|
|
8
8
|
data,
|
|
9
9
|
value,
|
|
10
10
|
onChange,
|
|
11
|
-
selectorValue
|
|
11
|
+
selectorValue,
|
|
12
|
+
defaultOpen = false,
|
|
13
|
+
onOpenChange
|
|
12
14
|
}) => {
|
|
13
15
|
const id = useId();
|
|
14
16
|
const inputRef = useRef(null);
|
|
15
17
|
const [popoverOpen, setPopoverOpen] = useState(false);
|
|
18
|
+
const prevPopoverOpen = useRef(false);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (defaultOpen) {
|
|
21
|
+
const timer = setTimeout(() => setPopoverOpen(true), 0);
|
|
22
|
+
return () => clearTimeout(timer);
|
|
23
|
+
}
|
|
24
|
+
return void 0;
|
|
25
|
+
}, [defaultOpen]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (prevPopoverOpen.current !== popoverOpen) {
|
|
28
|
+
prevPopoverOpen.current = popoverOpen;
|
|
29
|
+
onOpenChange == null ? void 0 : onOpenChange(popoverOpen);
|
|
30
|
+
}
|
|
31
|
+
}, [popoverOpen, onOpenChange]);
|
|
16
32
|
const [selectedNode, setSelectedNode] = useState(null);
|
|
17
33
|
const [focusedNode, setFocusedNode] = useState(null);
|
|
18
34
|
const { selectionPath, foldersSelectionPath } = useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cascader-dropdown-provider.js","sources":["../../../src/cascader-dropdown/cascader-dropdown-provider.tsx"],"sourcesContent":["import React, {\n ReactNode, useId, useMemo, useState, useRef,\n useEffect\n} from 'react';\nimport {\n CascaderDropdownItemType, CascaderDropdownOperatorType, CascaderDropdownDataValueType, CascaderDropdownValueSelectorType, optionTypes\n} from './helpers/cascader-dropdown-constants';\nimport { CascaderDropdownContext, CascaderDropdownContextType } from './use-value';\nimport {\n buildSelectionPath, buildTree, findNextFocusableRowNode, findPrevFocusableRowNode,\n recursiveFind\n} from './helpers/cascader-dropdown-utils';\nimport { CascaderDropdownNode } from './cascader-dropdown-node';\nimport { OnChangeReturnType } from './cascader-dropdown';\n\nexport type CascaderDropdownProviderProps = {\n children: ReactNode;\n data: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n value: CascaderDropdownDataValueType;\n onChange: ({\n value,\n selectionPath,\n selectorValue\n }: OnChangeReturnType) => void;\n selectorValue?: CascaderDropdownValueSelectorType;\n};\n\nexport const CascaderDropdownProvider = ({\n children, data, value, onChange, selectorValue\n}: CascaderDropdownProviderProps) => {\n const id = useId();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [selectedNode, setSelectedNode] = useState<CascaderDropdownNode | null>(null);\n const [focusedNode, setFocusedNode] = useState<CascaderDropdownNode | null>(null);\n\n const { selectionPath, foldersSelectionPath } = useMemo(() => {\n return buildSelectionPath(selectedNode);\n }, [selectedNode]);\n\n const rootNode = useMemo(() => {\n const root = buildTree(data);\n const node = root.findNode(value?.value);\n if (node) setSelectedNode(node);\n return root;\n }, [data, value]);\n\n const focusPreviousColumn = () => {\n if (foldersSelectionPath.length === 0 || foldersSelectionPath.length === 1) {\n focusRootNode();\n return;\n }\n if (foldersSelectionPath.length > 1) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(-1)?.value);\n const parentNode = rootNode.findNode(foldersSelectionPath.at(-2)?.value);\n if (parentNode) {\n setFocusedNode(selectedFolderNode ?? parentNode.children.at(0) ?? null);\n setSelectedNode(parentNode);\n }\n }\n };\n\n const focusRootNode = () => {\n if (foldersSelectionPath.length > 0) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(0)?.value);\n setFocusedNode(selectedFolderNode ?? null);\n setSelectedNode(rootNode);\n return;\n }\n setFocusedNode(rootNode.children.at(0) ?? null);\n setSelectedNode(rootNode);\n };\n\n const focusNthColumn = (index: number) => {\n if (!index) {\n focusRootNode();\n return;\n }\n if (foldersSelectionPath.length > 0) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(index)?.value);\n const parent = rootNode.findNode(foldersSelectionPath.at(index - 1)?.value);\n if (parent) {\n setFocusedNode(selectedFolderNode ?? parent.children.at(0) ?? null);\n setSelectedNode(parent);\n }\n }\n };\n\n const focusNextRow = () => {\n if (focusedNode) {\n const nextNode = findNextFocusableRowNode(focusedNode);\n if (nextNode) setFocusedNode(nextNode);\n }\n };\n\n const focusPreviousRow = () => {\n if (focusedNode) {\n const prevNode = findPrevFocusableRowNode(focusedNode);\n if (prevNode) setFocusedNode(prevNode);\n }\n };\n\n const focusNextColumn = () => {\n if (focusedNode && (focusedNode.children.length > 0 || focusedNode.getType() === optionTypes.VALUE_SELECTOR)) {\n setFocusedNode(focusedNode.children.at(0) ?? null);\n setSelectedNode(focusedNode);\n }\n };\n\n const handleChange = (node: (CascaderDropdownNode | CascaderDropdownOperatorType), selectedSelectorValue?: CascaderDropdownValueSelectorType) => {\n setSelectedNode(null);\n setFocusedNode(null);\n setPopoverOpen(false);\n onChange({\n value: { label: node.label, value: node.value },\n selectionPath: selectionPath.map((item) => ({ label: item.label, value: item.value })),\n selectedProperty: recursiveFind(data, { value: node.value, label: node.label }),\n selectorValue: selectedSelectorValue\n });\n };\n\n const selectFocusedNode = () => {\n if (focusedNode) {\n if (focusedNode.children.length > 0 || focusedNode.getType() === optionTypes.VALUE_SELECTOR) {\n setFocusedNode(focusedNode.children.at(0) ?? null);\n setSelectedNode(focusedNode);\n } else {\n handleChange(focusedNode);\n }\n }\n };\n\n useEffect(() => {\n if (inputRef.current && document.activeElement !== inputRef.current) inputRef.current.focus();\n if (!focusedNode) {\n const selectedFolder: CascaderDropdownNode | null = foldersSelectionPath.length > 0 ? rootNode.findNode(foldersSelectionPath.at(0)?.value) : rootNode.children.at(0) ?? null;\n setFocusedNode(selectedFolder);\n }\n });\n\n const providerValue = useMemo<CascaderDropdownContextType>(() => ({\n id,\n data,\n value,\n inputRef,\n rootNode,\n focusedNode,\n popoverOpen,\n selectedNode,\n selectionPath,\n foldersSelectionPath,\n focusNextRow,\n setFocusedNode,\n setPopoverOpen,\n focusNthColumn,\n focusNextColumn,\n setSelectedNode,\n focusPreviousRow,\n focusPreviousColumn,\n handleChange,\n selectFocusedNode,\n selectorValue\n }), [\n id,\n data,\n value,\n inputRef,\n rootNode,\n focusedNode,\n popoverOpen,\n selectedNode,\n selectionPath,\n foldersSelectionPath,\n focusNextRow,\n setFocusedNode,\n focusNthColumn,\n setPopoverOpen,\n focusNextColumn,\n setSelectedNode,\n focusPreviousRow,\n focusPreviousColumn,\n handleChange,\n selectFocusedNode,\n selectorValue\n ]);\n\n return (\n <CascaderDropdownContext.Provider value={providerValue}>\n {children}\n </CascaderDropdownContext.Provider>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cascader-dropdown-provider.js","sources":["../../../src/cascader-dropdown/cascader-dropdown-provider.tsx"],"sourcesContent":["import React, {\n ReactNode, useId, useMemo, useState, useRef,\n useEffect\n} from 'react';\nimport {\n CascaderDropdownItemType, CascaderDropdownOperatorType, CascaderDropdownDataValueType, CascaderDropdownValueSelectorType, optionTypes\n} from './helpers/cascader-dropdown-constants';\nimport { CascaderDropdownContext, CascaderDropdownContextType } from './use-value';\nimport {\n buildSelectionPath, buildTree, findNextFocusableRowNode, findPrevFocusableRowNode,\n recursiveFind\n} from './helpers/cascader-dropdown-utils';\nimport { CascaderDropdownNode } from './cascader-dropdown-node';\nimport { OnChangeReturnType } from './cascader-dropdown';\n\nexport type CascaderDropdownProviderProps = {\n children: ReactNode;\n data: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n value: CascaderDropdownDataValueType;\n onChange: ({\n value,\n selectionPath,\n selectorValue\n }: OnChangeReturnType) => void;\n selectorValue?: CascaderDropdownValueSelectorType;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nexport const CascaderDropdownProvider = ({\n children, data, value, onChange, selectorValue, defaultOpen = false, onOpenChange\n}: CascaderDropdownProviderProps) => {\n const id = useId();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const [popoverOpen, setPopoverOpen] = useState(false);\n const prevPopoverOpen = useRef(false);\n\n useEffect(() => {\n if (defaultOpen) {\n const timer = setTimeout(() => setPopoverOpen(true), 0);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [defaultOpen]);\n\n useEffect(() => {\n if (prevPopoverOpen.current !== popoverOpen) {\n prevPopoverOpen.current = popoverOpen;\n onOpenChange?.(popoverOpen);\n }\n }, [popoverOpen, onOpenChange]);\n const [selectedNode, setSelectedNode] = useState<CascaderDropdownNode | null>(null);\n const [focusedNode, setFocusedNode] = useState<CascaderDropdownNode | null>(null);\n\n const { selectionPath, foldersSelectionPath } = useMemo(() => {\n return buildSelectionPath(selectedNode);\n }, [selectedNode]);\n\n const rootNode = useMemo(() => {\n const root = buildTree(data);\n const node = root.findNode(value?.value);\n if (node) setSelectedNode(node);\n return root;\n }, [data, value]);\n\n const focusPreviousColumn = () => {\n if (foldersSelectionPath.length === 0 || foldersSelectionPath.length === 1) {\n focusRootNode();\n return;\n }\n if (foldersSelectionPath.length > 1) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(-1)?.value);\n const parentNode = rootNode.findNode(foldersSelectionPath.at(-2)?.value);\n if (parentNode) {\n setFocusedNode(selectedFolderNode ?? parentNode.children.at(0) ?? null);\n setSelectedNode(parentNode);\n }\n }\n };\n\n const focusRootNode = () => {\n if (foldersSelectionPath.length > 0) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(0)?.value);\n setFocusedNode(selectedFolderNode ?? null);\n setSelectedNode(rootNode);\n return;\n }\n setFocusedNode(rootNode.children.at(0) ?? null);\n setSelectedNode(rootNode);\n };\n\n const focusNthColumn = (index: number) => {\n if (!index) {\n focusRootNode();\n return;\n }\n if (foldersSelectionPath.length > 0) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(index)?.value);\n const parent = rootNode.findNode(foldersSelectionPath.at(index - 1)?.value);\n if (parent) {\n setFocusedNode(selectedFolderNode ?? parent.children.at(0) ?? null);\n setSelectedNode(parent);\n }\n }\n };\n\n const focusNextRow = () => {\n if (focusedNode) {\n const nextNode = findNextFocusableRowNode(focusedNode);\n if (nextNode) setFocusedNode(nextNode);\n }\n };\n\n const focusPreviousRow = () => {\n if (focusedNode) {\n const prevNode = findPrevFocusableRowNode(focusedNode);\n if (prevNode) setFocusedNode(prevNode);\n }\n };\n\n const focusNextColumn = () => {\n if (focusedNode && (focusedNode.children.length > 0 || focusedNode.getType() === optionTypes.VALUE_SELECTOR)) {\n setFocusedNode(focusedNode.children.at(0) ?? null);\n setSelectedNode(focusedNode);\n }\n };\n\n const handleChange = (node: (CascaderDropdownNode | CascaderDropdownOperatorType), selectedSelectorValue?: CascaderDropdownValueSelectorType) => {\n setSelectedNode(null);\n setFocusedNode(null);\n setPopoverOpen(false);\n onChange({\n value: { label: node.label, value: node.value },\n selectionPath: selectionPath.map((item) => ({ label: item.label, value: item.value })),\n selectedProperty: recursiveFind(data, { value: node.value, label: node.label }),\n selectorValue: selectedSelectorValue\n });\n };\n\n const selectFocusedNode = () => {\n if (focusedNode) {\n if (focusedNode.children.length > 0 || focusedNode.getType() === optionTypes.VALUE_SELECTOR) {\n setFocusedNode(focusedNode.children.at(0) ?? null);\n setSelectedNode(focusedNode);\n } else {\n handleChange(focusedNode);\n }\n }\n };\n\n useEffect(() => {\n if (inputRef.current && document.activeElement !== inputRef.current) inputRef.current.focus();\n if (!focusedNode) {\n const selectedFolder: CascaderDropdownNode | null = foldersSelectionPath.length > 0 ? rootNode.findNode(foldersSelectionPath.at(0)?.value) : rootNode.children.at(0) ?? null;\n setFocusedNode(selectedFolder);\n }\n });\n\n const providerValue = useMemo<CascaderDropdownContextType>(() => ({\n id,\n data,\n value,\n inputRef,\n rootNode,\n focusedNode,\n popoverOpen,\n selectedNode,\n selectionPath,\n foldersSelectionPath,\n focusNextRow,\n setFocusedNode,\n setPopoverOpen,\n focusNthColumn,\n focusNextColumn,\n setSelectedNode,\n focusPreviousRow,\n focusPreviousColumn,\n handleChange,\n selectFocusedNode,\n selectorValue\n }), [\n id,\n data,\n value,\n inputRef,\n rootNode,\n focusedNode,\n popoverOpen,\n selectedNode,\n selectionPath,\n foldersSelectionPath,\n focusNextRow,\n setFocusedNode,\n focusNthColumn,\n setPopoverOpen,\n focusNextColumn,\n setSelectedNode,\n focusPreviousRow,\n focusPreviousColumn,\n handleChange,\n selectFocusedNode,\n selectorValue\n ]);\n\n return (\n <CascaderDropdownContext.Provider value={providerValue}>\n {children}\n </CascaderDropdownContext.Provider>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,9 @@ const CascaderDropdown = ({
|
|
|
34
34
|
dropdownProps = {},
|
|
35
35
|
dropdownContentProps = {},
|
|
36
36
|
tooltipProps,
|
|
37
|
-
selectorValue = initialFilterValueSelectorValue
|
|
37
|
+
selectorValue = initialFilterValueSelectorValue,
|
|
38
|
+
defaultOpen = false,
|
|
39
|
+
onOpenChange
|
|
38
40
|
}) => {
|
|
39
41
|
var _a;
|
|
40
42
|
const [localValue, setLocalValue] = useState(
|
|
@@ -62,6 +64,8 @@ const CascaderDropdown = ({
|
|
|
62
64
|
data,
|
|
63
65
|
value: selectedValue,
|
|
64
66
|
selectorValue,
|
|
67
|
+
defaultOpen,
|
|
68
|
+
onOpenChange,
|
|
65
69
|
onChange: ({
|
|
66
70
|
value: selectedDataValue,
|
|
67
71
|
selectionPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cascader-dropdown.js","sources":["../../../src/cascader-dropdown/cascader-dropdown.tsx"],"sourcesContent":["import { ReactNode, RefAttributes, useMemo, useState } from \"react\";\nimport { PopoverProps, PopoverContentProps } from \"@radix-ui/react-popover\";\nimport { TooltipProps, TooltipProvider } from \"@sparrowengg/twigs-react\";\nimport {\n CascaderDropdownItemType,\n CascaderDropdownDataValueType,\n CascaderDropdownValueSelectorType,\n CascaderDropdownOperatorType,\n initialFilterValueSelectorValue,\n} from \"./helpers/cascader-dropdown-constants\";\nimport { CascaderDropdownProvider } from \"./cascader-dropdown-provider\";\nimport { CascaderDropdownContent } from \"./cascader-dropdown-content\";\nimport { recursiveFind } from \"./helpers/cascader-dropdown-utils\";\nimport React from \"react\";\nimport ThemeWrapper from \"../commons/components/theme-wrapper\";\n\nexport type DropdownContentProps = PopoverContentProps &\n RefAttributes<HTMLDivElement>;\n\nexport type CascaderDropdownProps = {\n children?: ReactNode;\n data: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n value?: CascaderDropdownDataValueType | string | null;\n defaultValue?: CascaderDropdownDataValueType | string | null;\n onChange?: ({\n value,\n selectionPath,\n selectedProperty,\n selectorValue,\n }: OnChangeReturnType) => void;\n dropdownProps?: PopoverProps;\n dropdownContentProps?: DropdownContentProps;\n tooltipProps?: TooltipProps;\n selectorValue?: CascaderDropdownValueSelectorType;\n} & CascaderDropdownComponentProps;\n\nexport type CascaderDropdownComponentProps = {};\n\nexport type OnChangeReturnType = {\n value: CascaderDropdownDataValueType | CascaderDropdownOperatorType;\n selectionPath: CascaderDropdownDataValueType[];\n selectedProperty: CascaderDropdownDataValueType | null;\n selectorValue?: CascaderDropdownValueSelectorType;\n};\n\nexport const CascaderDropdown = ({\n children,\n data = [],\n value = null,\n defaultValue = null,\n onChange,\n dropdownProps = {},\n dropdownContentProps = {},\n tooltipProps,\n selectorValue = initialFilterValueSelectorValue,\n}: CascaderDropdownProps) => {\n const [localValue, setLocalValue] = useState<CascaderDropdownDataValueType>(\n (typeof defaultValue === \"object\"\n ? defaultValue\n : recursiveFind(data, { value: defaultValue, label: \"\" })) ?? {\n value: \"\",\n label: \"\",\n }\n );\n\n const selectedValue = useMemo<CascaderDropdownDataValueType>(() => {\n if (value && typeof value === \"object\") {\n return value;\n }\n\n if (value) {\n return (\n recursiveFind(data, { value, label: \"\" }) ?? { value: \"\", label: \"\" }\n );\n }\n\n if (localValue && typeof localValue === \"object\") {\n return localValue;\n }\n\n return { value: \"\", label: \"\" };\n }, [data, localValue, value]);\n\n return (\n <ThemeWrapper>\n <TooltipProvider delayDuration={6000}>\n <CascaderDropdownProvider\n data={data}\n value={selectedValue}\n selectorValue={selectorValue}\n onChange={({\n value: selectedDataValue,\n selectionPath,\n selectorValue: selectedSelectorValue,\n }: {\n value: CascaderDropdownDataValueType | CascaderDropdownOperatorType;\n selectionPath: CascaderDropdownDataValueType[];\n selectorValue?: CascaderDropdownValueSelectorType;\n }) => {\n setLocalValue(selectedDataValue);\n if (onChange) {\n onChange({\n value: selectedDataValue,\n selectionPath,\n selectedProperty: recursiveFind(data, {\n value: selectedDataValue.value,\n label: \"\",\n }),\n selectorValue: selectedSelectorValue,\n });\n }\n }}\n >\n <CascaderDropdownContent\n {...dropdownProps}\n dropdownContentProps={dropdownContentProps}\n tooltipProps={tooltipProps}\n >\n {children}\n </CascaderDropdownContent>\n </CascaderDropdownProvider>\n </TooltipProvider>\n </ThemeWrapper>\n );\n};\n"],"names":["_a","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"cascader-dropdown.js","sources":["../../../src/cascader-dropdown/cascader-dropdown.tsx"],"sourcesContent":["import { ReactNode, RefAttributes, useMemo, useState } from \"react\";\nimport { PopoverProps, PopoverContentProps } from \"@radix-ui/react-popover\";\nimport { TooltipProps, TooltipProvider } from \"@sparrowengg/twigs-react\";\nimport {\n CascaderDropdownItemType,\n CascaderDropdownDataValueType,\n CascaderDropdownValueSelectorType,\n CascaderDropdownOperatorType,\n initialFilterValueSelectorValue,\n} from \"./helpers/cascader-dropdown-constants\";\nimport { CascaderDropdownProvider } from \"./cascader-dropdown-provider\";\nimport { CascaderDropdownContent } from \"./cascader-dropdown-content\";\nimport { recursiveFind } from \"./helpers/cascader-dropdown-utils\";\nimport React from \"react\";\nimport ThemeWrapper from \"../commons/components/theme-wrapper\";\n\nexport type DropdownContentProps = PopoverContentProps &\n RefAttributes<HTMLDivElement>;\n\nexport type CascaderDropdownProps = {\n children?: ReactNode;\n data: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n value?: CascaderDropdownDataValueType | string | null;\n defaultValue?: CascaderDropdownDataValueType | string | null;\n onChange?: ({\n value,\n selectionPath,\n selectedProperty,\n selectorValue,\n }: OnChangeReturnType) => void;\n dropdownProps?: PopoverProps;\n dropdownContentProps?: DropdownContentProps;\n tooltipProps?: TooltipProps;\n selectorValue?: CascaderDropdownValueSelectorType;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n} & CascaderDropdownComponentProps;\n\nexport type CascaderDropdownComponentProps = {};\n\nexport type OnChangeReturnType = {\n value: CascaderDropdownDataValueType | CascaderDropdownOperatorType;\n selectionPath: CascaderDropdownDataValueType[];\n selectedProperty: CascaderDropdownDataValueType | null;\n selectorValue?: CascaderDropdownValueSelectorType;\n};\n\nexport const CascaderDropdown = ({\n children,\n data = [],\n value = null,\n defaultValue = null,\n onChange,\n dropdownProps = {},\n dropdownContentProps = {},\n tooltipProps,\n selectorValue = initialFilterValueSelectorValue,\n defaultOpen = false,\n onOpenChange,\n}: CascaderDropdownProps) => {\n const [localValue, setLocalValue] = useState<CascaderDropdownDataValueType>(\n (typeof defaultValue === \"object\"\n ? defaultValue\n : recursiveFind(data, { value: defaultValue, label: \"\" })) ?? {\n value: \"\",\n label: \"\",\n }\n );\n\n const selectedValue = useMemo<CascaderDropdownDataValueType>(() => {\n if (value && typeof value === \"object\") {\n return value;\n }\n\n if (value) {\n return (\n recursiveFind(data, { value, label: \"\" }) ?? { value: \"\", label: \"\" }\n );\n }\n\n if (localValue && typeof localValue === \"object\") {\n return localValue;\n }\n\n return { value: \"\", label: \"\" };\n }, [data, localValue, value]);\n\n return (\n <ThemeWrapper>\n <TooltipProvider delayDuration={6000}>\n <CascaderDropdownProvider\n data={data}\n value={selectedValue}\n selectorValue={selectorValue}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n onChange={({\n value: selectedDataValue,\n selectionPath,\n selectorValue: selectedSelectorValue,\n }: {\n value: CascaderDropdownDataValueType | CascaderDropdownOperatorType;\n selectionPath: CascaderDropdownDataValueType[];\n selectorValue?: CascaderDropdownValueSelectorType;\n }) => {\n setLocalValue(selectedDataValue);\n if (onChange) {\n onChange({\n value: selectedDataValue,\n selectionPath,\n selectedProperty: recursiveFind(data, {\n value: selectedDataValue.value,\n label: \"\",\n }),\n selectorValue: selectedSelectorValue,\n });\n }\n }}\n >\n <CascaderDropdownContent\n {...dropdownProps}\n dropdownContentProps={dropdownContentProps}\n tooltipProps={tooltipProps}\n >\n {children}\n </CascaderDropdownContent>\n </CascaderDropdownProvider>\n </TooltipProvider>\n </ThemeWrapper>\n );\n};\n"],"names":["_a","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,QAAA;AAAA,EACA,OAAO,EAAC;AAAA,EACR,KAAA,GAAQ,IAAA;AAAA,EACR,YAAA,GAAe,IAAA;AAAA,EACf,QAAA;AAAA,EACA,gBAAgB,EAAC;AAAA,EACjB,uBAAuB,EAAC;AAAA,EACxB,YAAA;AAAA,EACA,aAAA,GAAgB,+BAAA;AAAA,EAChB,WAAA,GAAc,KAAA;AAAA,EACd;AACF,CAAA,KAA6B;AA3D7B,EAAA,IAAA,EAAA;AA4DE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA;AAAA,IAAA,CACjC,EAAA,GAAA,OAAO,YAAA,KAAiB,QAAA,GACrB,YAAA,GACA,aAAA,CAAc,IAAA,EAAM,EAAE,KAAA,EAAO,YAAwB,CAAC,MAFzD,IAAA,GAAA,EAAA,GAE+D;AAAA,MAC9D,KAAA,EAAO,EAAA;AAAA,MACP,KAAA,EAAO;AAAA;AACT,GACF;AAEA,EAAA,MAAM,aAAA,GAAgB,QAAuC,MAAM;AArErE,IAAA,IAAAA,GAAAA;AAsEI,IAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACtC,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CACEA,GAAAA,GAAA,aAAA,CAAc,IAAA,EAAM,EAAE,KAAiB,CAAC,CAAA,KAAxC,OAAAA,GAAAA,GAA6C,EAAE,KAAA,EAAO,EAAA,EAAI,OAAO,EAAA,EAAG;AAAA,IAExE;AAEA,IAAA,IAAI,UAAA,IAAc,OAAO,UAAA,KAAe,QAAA,EAAU;AAChD,MAAA,OAAO,UAAA;AAAA,IACT;AAEA,IAAA,OAAO,EAAE,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,EAAA,EAAG;AAAA,EAChC,CAAA,EAAG,CAAC,IAAA,EAAM,UAAA,EAAY,KAAK,CAAC,CAAA;AAE5B,EAAA,uBACEC,cAAA,CAAA,aAAA,CAAC,YAAA,EAAA,IAAA,kBACCA,cAAA,CAAA,aAAA,CAAC,eAAA,EAAA,EAAgB,eAAe,GAAA,EAAA,kBAC9BA,cAAA,CAAA,aAAA;AAAA,IAAC,wBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,KAAA,EAAO,aAAA;AAAA,MACP,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAU,CAAC;AAAA,QACT,KAAA,EAAO,iBAAA;AAAA,QACP,aAAA;AAAA,QACA,aAAA,EAAe;AAAA,OACjB,KAIM;AACJ,QAAA,aAAA,CAAc,iBAAiB,CAAA;AAC/B,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,QAAA,CAAS;AAAA,YACP,KAAA,EAAO,iBAAA;AAAA,YACP,aAAA;AAAA,YACA,gBAAA,EAAkB,cAAc,IAAA,EAAM;AAAA,cACpC,OAAO,iBAAA,CAAkB,KAE3B,CAAC,CAAA;AAAA,YACD,aAAA,EAAe;AAAA,WAChB,CAAA;AAAA,QACH;AAAA,MACF;AAAA,KAAA;AAAA,oBAEAA,cAAA,CAAA,aAAA;AAAA,MAAC,uBAAA;AAAA,MAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACK,aAAA,CAAA,EADL;AAAA,QAEC,oBAAA;AAAA,QACA;AAAA,OAAA,CAAA;AAAA,MAEC;AAAA;AACH,GAEJ,CACF,CAAA;AAEJ;;;;"}
|
|
@@ -31,7 +31,8 @@ const Mapping = ({
|
|
|
31
31
|
setSSMappingData,
|
|
32
32
|
editField,
|
|
33
33
|
setIsInitialLoad,
|
|
34
|
-
setOriginalMappingData
|
|
34
|
+
setOriginalMappingData,
|
|
35
|
+
hasResponsePDF
|
|
35
36
|
}) => {
|
|
36
37
|
var _a, _b, _c;
|
|
37
38
|
const {
|
|
@@ -53,7 +54,8 @@ const Mapping = ({
|
|
|
53
54
|
setIsInitialLoad,
|
|
54
55
|
setOriginalMappingData,
|
|
55
56
|
ssMappingData,
|
|
56
|
-
setSSMappingData
|
|
57
|
+
setSSMappingData,
|
|
58
|
+
hasResponsePDF
|
|
57
59
|
});
|
|
58
60
|
const mappingData = hookSsMappingData;
|
|
59
61
|
const effectiveConditionData = useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.js","sources":["../../../../src/dynamic-mapping/components/mapping.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useMemo } from 'react';\nimport {\n Box,\n Flex,\n Heading,\n Text,\n Radio,\n RadioGroup,\n Tabs,\n TabsList,\n TabsTrigger,\n Chip,\n} from '@sparrowengg/twigs-react';\nimport { surveySparrowURL, mappingTabValues } from '../../commons/constants';\nimport Spinner from '../../commons/components/spinner';\nimport MappingCondition from '../../commons/components/mapping-conditions';\nimport { ConditionCard } from '../../mapping/utils/conditionDescriptionBuilder';\nimport { useMappingData } from '../hooks';\nimport { TabsContentComponent } from './tabs-content-component';\nimport { CustomChip } from './custom-chip';\nimport { deriveConditionDataFromSurveyData, hasValidConditionData, hasAnyMappingData } from '../helpers';\n\n/* ----- Types / Interfaces ----- */\n\ninterface MappingProps {\n hasConditions?: boolean;\n mappingConditions?: any;\n setMappingConditions?: (value: any) => void;\n conditionData?: any;\n conditionDescription?: string;\n surveyId: string | number;\n apiURL?: string;\n token?: string;\n surveyProperties?: any;\n importResponse: any;\n ssMappingData: any;\n setSSMappingData: React.Dispatch<React.SetStateAction<any>>;\n editField?: any;\n setIsInitialLoad: (value: boolean) => void;\n setOriginalMappingData: (value: any) => void;\n integrationFields?: any;\n setIntegrationFields?: any;\n}\n\n/* ----- Main Component ----- */\n\n/**\n * Mapping component for dynamic field selection\n * \n * @param {MappingProps} props - Component props\n * @returns {JSX.Element} Mapping component\n * \n * @example\n * <Mapping\n * surveyId={123}\n * token=\"token\"\n * importResponse={response}\n * ssMappingData={data}\n * setSSMappingData={setData}\n * />\n */\nexport const Mapping = ({\n hasConditions,\n mappingConditions,\n setMappingConditions,\n conditionData,\n conditionDescription,\n surveyId,\n apiURL = surveySparrowURL,\n token,\n surveyProperties,\n importResponse,\n ssMappingData,\n setSSMappingData,\n editField,\n setIsInitialLoad,\n setOriginalMappingData,\n}: MappingProps): JSX.Element => {\n const {\n loader,\n searchInput,\n setSearchInput,\n ssMappingData: hookSsMappingData,\n setSSMappingData: hookSetSSMappingData,\n handleFieldValues,\n getMappingCount,\n getAllMappingCount,\n isApiData,\n } = useMappingData({\n surveyId,\n apiURL,\n token,\n surveyProperties,\n importResponse,\n editField,\n setIsInitialLoad,\n setOriginalMappingData,\n ssMappingData,\n setSSMappingData,\n });\n\n // Use the hook's data which is synced with parent\n const mappingData = hookSsMappingData;\n\n // Compute effective conditionData - use prop if provided, otherwise derive from survey data\n const effectiveConditionData = useMemo(() => {\n // If conditionData prop is provided and valid, use it directly\n if (hasValidConditionData(conditionData)) {\n return conditionData;\n }\n // Priority: surveyProperties > external ssMappingData > hook ssMappingData\n const sourceData = surveyProperties || ssMappingData || hookSsMappingData;\n if (sourceData && hasAnyMappingData(sourceData)) {\n return deriveConditionDataFromSurveyData(sourceData);\n }\n return [];\n }, [conditionData, surveyProperties, ssMappingData, hookSsMappingData]);\n\n const isSelectedDataMode = useMemo(\n () => importResponse?.value?.importMethod === 'SELECTED_DATA',\n [importResponse?.value?.importMethod]\n );\n\n const handleImportMethodChange = useMemo(\n () => (value: string) => {\n importResponse.onChangeHandler({\n id: 'importMethod',\n value,\n });\n },\n [importResponse]\n );\n\n const handleConditionClear = useMemo(\n () => () => {\n setMappingConditions?.(undefined);\n },\n [setMappingConditions]\n );\n\n if (loader) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: 'calc(100vh - 57px)' }}\n >\n <Spinner />\n </Flex>\n </Flex>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Box css={{ maxWidth: 650, width: '100%', marginBlock: '$40' }}>\n {importResponse?.hasImportResponse && (\n <Flex flexDirection=\"column\">\n <Heading size=\"h5\" css={{ color: '$neutral900' }}>\n Select Import Data\n </Heading>\n\n {hasConditions && (\n <Flex css={{ marginTop: '$3' }}>\n {mappingConditions?.filterGroups?.length ? (\n <MappingCondition\n existingContions={mappingConditions}\n setExistingCondtions={setMappingConditions}\n conditionData={effectiveConditionData}\n renderTrigger={(onEditClick) => (\n <ConditionCard\n isEditable\n conditionsData={mappingConditions}\n onEditClick={onEditClick}\n onClearClick={handleConditionClear}\n showMoreMenu\n />\n )}\n />\n ) : (\n <Flex gap=\"$2\" css={{ marginTop: '$2' }}>\n <Text size=\"sm\" css={{ color: '$neutral500' }}>\n {conditionDescription}\n </Text>\n <MappingCondition\n existingContions={mappingConditions}\n setExistingCondtions={setMappingConditions}\n conditionData={effectiveConditionData}\n />\n </Flex>\n )}\n </Flex>\n )}\n\n <RadioGroup\n defaultValue={importResponse?.value?.importMethod}\n onChange={handleImportMethodChange}\n >\n <Flex\n alignItems=\"center\"\n gap=\"$20\"\n css={{\n marginTop: '$9',\n '& label': { color: '$neutral800', cursor: 'pointer' },\n }}\n >\n <Radio size=\"md\" value=\"SEND_ALL_DATA\" css={{ cursor: 'pointer' }}>\n Send all data\n </Radio>\n <Radio size=\"md\" value=\"SELECTED_DATA\" css={{ cursor: 'pointer' }}>\n Send selected data\n </Radio>\n </Flex>\n </RadioGroup>\n </Flex>\n )}\n\n {isSelectedDataMode ? (\n <Box css={{ marginTop: '$24' }}>\n <Tabs defaultValue=\"QUESTIONS\">\n <TabsList\n css={{\n borderBottom: '$borderWidths$xs solid $neutral200',\n }}\n >\n {mappingTabValues.map((tab) => {\n if (\n tab.value === 'DERIVED_QUESTIONS' &&\n getAllMappingCount(tab.placeholder) < 1\n ) {\n return null;\n }\n\n return (\n <TabsTrigger\n key={tab?.id}\n value={tab?.value}\n css={{\n padding: '$6 $4 !important',\n }}\n onClick={() => setSearchInput('')}\n >\n <Text size=\"sm\" weight=\"bold\">\n {tab.name}\n </Text>\n {!!getMappingCount(tab.placeholder) && (\n <Chip\n css={{\n marginLeft: '$2',\n borderRadius: '5px',\n color: '$neutral800',\n }}\n variant=\"outline\"\n rounded=\"sm\"\n >\n {getMappingCount(tab.placeholder)}\n </Chip>\n )}\n </TabsTrigger>\n );\n })}\n </TabsList>\n\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"QUESTIONS\"\n placeholder=\"Questions\"\n fields={mappingData?.questions}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('questions', field?.id, value)\n }\n isApiData={isApiData}\n />\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n fields={mappingData.variables}\n value=\"VARIABLE\"\n placeholder=\"Variables\"\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('variables', field?.id, value)\n }\n />\n <TabsContentComponent\n fields={mappingData.contactProperties}\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"CONTACT\"\n placeholder=\"Contacts\"\n handleFieldValues={(field, value) =>\n handleFieldValues('contactProperties', field?.id, value)\n }\n />\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"EXPRESSION\"\n placeholder=\"Expressions\"\n fields={mappingData.expressions}\n handleFieldValues={(field, value) =>\n handleFieldValues('expressions', field?.id, value)\n }\n />\n <TabsContentComponent\n value=\"PROPERTY\"\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n placeholder=\"Properties\"\n fields={mappingData.property}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('property', field?.id, value)\n }\n />\n <TabsContentComponent\n value=\"DERIVED_QUESTIONS\"\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n placeholder=\"Enrich\"\n fields={mappingData.derivedQuestions}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('derivedQuestions', field?.id, value)\n }\n />\n </Tabs>\n </Box>\n ) : (\n <Flex css={{ marginTop: '$16' }} alignItems=\"center\" gap=\"$6\">\n <Text\n size=\"sm\"\n weight=\"regular\"\n css={{ width: '90px', color: '$neutral900' }}\n >\n This Includes:\n </Text>\n <Flex alignItems=\"center\" gap=\"$4\">\n {getAllMappingCount('questions') - 1 > 0 && (\n <CustomChip bgColor=\"#E5F2FF\">\n {getAllMappingCount('questions') - 1} Questions\n </CustomChip>\n )}\n {getAllMappingCount('derivedQuestions') - 1 > 0 && (\n <CustomChip bgColor=\"#E5F2FF\">\n {getAllMappingCount('derivedQuestions') - 1} Enrich\n </CustomChip>\n )}\n {getAllMappingCount('variables') - 1 > 0 && (\n <CustomChip bgColor=\"#E8F4E3\">\n {getAllMappingCount('variables') - 1} Variables\n </CustomChip>\n )}\n {getAllMappingCount('contactProperties') - 1 > 0 && (\n <CustomChip bgColor=\"#FDEDE8\">\n {getAllMappingCount('contactProperties') - 1} Contacts\n </CustomChip>\n )}\n {getAllMappingCount('expressions') - 1 > 0 && (\n <CustomChip bgColor=\"#F1F1F1\">\n {getAllMappingCount('expressions') - 1} Expressions\n </CustomChip>\n )}\n {getAllMappingCount('property') - 1 > 0 && (\n <CustomChip bgColor=\"#4A9CA626\">\n {getAllMappingCount('property') - 1} Properties\n </CustomChip>\n )}\n </Flex>\n </Flex>\n )}\n </Box>\n </Flex>\n );\n};\n"],"names":["_a","React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapping.js","sources":["../../../../src/dynamic-mapping/components/mapping.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useMemo } from 'react';\nimport {\n Box,\n Flex,\n Heading,\n Text,\n Radio,\n RadioGroup,\n Tabs,\n TabsList,\n TabsTrigger,\n Chip,\n} from '@sparrowengg/twigs-react';\nimport { surveySparrowURL, mappingTabValues } from '../../commons/constants';\nimport Spinner from '../../commons/components/spinner';\nimport MappingCondition from '../../commons/components/mapping-conditions';\nimport { ConditionCard } from '../../mapping/utils/conditionDescriptionBuilder';\nimport { useMappingData } from '../hooks';\nimport { TabsContentComponent } from './tabs-content-component';\nimport { CustomChip } from './custom-chip';\nimport { deriveConditionDataFromSurveyData, hasValidConditionData, hasAnyMappingData } from '../helpers';\n\n/* ----- Types / Interfaces ----- */\n\ninterface MappingProps {\n hasConditions?: boolean;\n mappingConditions?: any;\n setMappingConditions?: (value: any) => void;\n conditionData?: any;\n conditionDescription?: string;\n surveyId: string | number;\n apiURL?: string;\n token?: string;\n surveyProperties?: any;\n importResponse: any;\n ssMappingData: any;\n setSSMappingData: React.Dispatch<React.SetStateAction<any>>;\n editField?: any;\n setIsInitialLoad: (value: boolean) => void;\n setOriginalMappingData: (value: any) => void;\n integrationFields?: any;\n setIntegrationFields?: any;\n hasResponsePDF?: boolean;\n}\n\n/* ----- Main Component ----- */\n\n/**\n * Mapping component for dynamic field selection\n * \n * @param {MappingProps} props - Component props\n * @returns {JSX.Element} Mapping component\n * \n * @example\n * <Mapping\n * surveyId={123}\n * token=\"token\"\n * importResponse={response}\n * ssMappingData={data}\n * setSSMappingData={setData}\n * />\n */\nexport const Mapping = ({\n hasConditions,\n mappingConditions,\n setMappingConditions,\n conditionData,\n conditionDescription,\n surveyId,\n apiURL = surveySparrowURL,\n token,\n surveyProperties,\n importResponse,\n ssMappingData,\n setSSMappingData,\n editField,\n setIsInitialLoad,\n setOriginalMappingData,\n hasResponsePDF,\n}: MappingProps): JSX.Element => {\n const {\n loader,\n searchInput,\n setSearchInput,\n ssMappingData: hookSsMappingData,\n setSSMappingData: hookSetSSMappingData,\n handleFieldValues,\n getMappingCount,\n getAllMappingCount,\n isApiData,\n } = useMappingData({\n surveyId,\n apiURL,\n token,\n surveyProperties,\n importResponse,\n editField,\n setIsInitialLoad,\n setOriginalMappingData,\n ssMappingData,\n setSSMappingData,\n hasResponsePDF,\n });\n\n // Use the hook's data which is synced with parent\n const mappingData = hookSsMappingData;\n\n // Compute effective conditionData - use prop if provided, otherwise derive from survey data\n const effectiveConditionData = useMemo(() => {\n // If conditionData prop is provided and valid, use it directly\n if (hasValidConditionData(conditionData)) {\n return conditionData;\n }\n // Priority: surveyProperties > external ssMappingData > hook ssMappingData\n const sourceData = surveyProperties || ssMappingData || hookSsMappingData;\n if (sourceData && hasAnyMappingData(sourceData)) {\n return deriveConditionDataFromSurveyData(sourceData);\n }\n return [];\n }, [conditionData, surveyProperties, ssMappingData, hookSsMappingData]);\n\n const isSelectedDataMode = useMemo(\n () => importResponse?.value?.importMethod === 'SELECTED_DATA',\n [importResponse?.value?.importMethod]\n );\n\n const handleImportMethodChange = useMemo(\n () => (value: string) => {\n importResponse.onChangeHandler({\n id: 'importMethod',\n value,\n });\n },\n [importResponse]\n );\n\n const handleConditionClear = useMemo(\n () => () => {\n setMappingConditions?.(undefined);\n },\n [setMappingConditions]\n );\n\n if (loader) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: 'calc(100vh - 57px)' }}\n >\n <Spinner />\n </Flex>\n </Flex>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Box css={{ maxWidth: 650, width: '100%', marginBlock: '$40' }}>\n {importResponse?.hasImportResponse && (\n <Flex flexDirection=\"column\">\n <Heading size=\"h5\" css={{ color: '$neutral900' }}>\n Select Import Data\n </Heading>\n\n {hasConditions && (\n <Flex css={{ marginTop: '$3' }}>\n {mappingConditions?.filterGroups?.length ? (\n <MappingCondition\n existingContions={mappingConditions}\n setExistingCondtions={setMappingConditions}\n conditionData={effectiveConditionData}\n renderTrigger={(onEditClick) => (\n <ConditionCard\n isEditable\n conditionsData={mappingConditions}\n onEditClick={onEditClick}\n onClearClick={handleConditionClear}\n showMoreMenu\n />\n )}\n />\n ) : (\n <Flex gap=\"$2\" css={{ marginTop: '$2' }}>\n <Text size=\"sm\" css={{ color: '$neutral500' }}>\n {conditionDescription}\n </Text>\n <MappingCondition\n existingContions={mappingConditions}\n setExistingCondtions={setMappingConditions}\n conditionData={effectiveConditionData}\n />\n </Flex>\n )}\n </Flex>\n )}\n\n <RadioGroup\n defaultValue={importResponse?.value?.importMethod}\n onChange={handleImportMethodChange}\n >\n <Flex\n alignItems=\"center\"\n gap=\"$20\"\n css={{\n marginTop: '$9',\n '& label': { color: '$neutral800', cursor: 'pointer' },\n }}\n >\n <Radio size=\"md\" value=\"SEND_ALL_DATA\" css={{ cursor: 'pointer' }}>\n Send all data\n </Radio>\n <Radio size=\"md\" value=\"SELECTED_DATA\" css={{ cursor: 'pointer' }}>\n Send selected data\n </Radio>\n </Flex>\n </RadioGroup>\n </Flex>\n )}\n\n {isSelectedDataMode ? (\n <Box css={{ marginTop: '$24' }}>\n <Tabs defaultValue=\"QUESTIONS\">\n <TabsList\n css={{\n borderBottom: '$borderWidths$xs solid $neutral200',\n }}\n >\n {mappingTabValues.map((tab) => {\n if (\n tab.value === 'DERIVED_QUESTIONS' &&\n getAllMappingCount(tab.placeholder) < 1\n ) {\n return null;\n }\n\n return (\n <TabsTrigger\n key={tab?.id}\n value={tab?.value}\n css={{\n padding: '$6 $4 !important',\n }}\n onClick={() => setSearchInput('')}\n >\n <Text size=\"sm\" weight=\"bold\">\n {tab.name}\n </Text>\n {!!getMappingCount(tab.placeholder) && (\n <Chip\n css={{\n marginLeft: '$2',\n borderRadius: '5px',\n color: '$neutral800',\n }}\n variant=\"outline\"\n rounded=\"sm\"\n >\n {getMappingCount(tab.placeholder)}\n </Chip>\n )}\n </TabsTrigger>\n );\n })}\n </TabsList>\n\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"QUESTIONS\"\n placeholder=\"Questions\"\n fields={mappingData?.questions}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('questions', field?.id, value)\n }\n isApiData={isApiData}\n />\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n fields={mappingData.variables}\n value=\"VARIABLE\"\n placeholder=\"Variables\"\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('variables', field?.id, value)\n }\n />\n <TabsContentComponent\n fields={mappingData.contactProperties}\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"CONTACT\"\n placeholder=\"Contacts\"\n handleFieldValues={(field, value) =>\n handleFieldValues('contactProperties', field?.id, value)\n }\n />\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"EXPRESSION\"\n placeholder=\"Expressions\"\n fields={mappingData.expressions}\n handleFieldValues={(field, value) =>\n handleFieldValues('expressions', field?.id, value)\n }\n />\n <TabsContentComponent\n value=\"PROPERTY\"\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n placeholder=\"Properties\"\n fields={mappingData.property}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('property', field?.id, value)\n }\n />\n <TabsContentComponent\n value=\"DERIVED_QUESTIONS\"\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n placeholder=\"Enrich\"\n fields={mappingData.derivedQuestions}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('derivedQuestions', field?.id, value)\n }\n />\n </Tabs>\n </Box>\n ) : (\n <Flex css={{ marginTop: '$16' }} alignItems=\"center\" gap=\"$6\">\n <Text\n size=\"sm\"\n weight=\"regular\"\n css={{ width: '90px', color: '$neutral900' }}\n >\n This Includes:\n </Text>\n <Flex alignItems=\"center\" gap=\"$4\">\n {getAllMappingCount('questions') - 1 > 0 && (\n <CustomChip bgColor=\"#E5F2FF\">\n {getAllMappingCount('questions') - 1} Questions\n </CustomChip>\n )}\n {getAllMappingCount('derivedQuestions') - 1 > 0 && (\n <CustomChip bgColor=\"#E5F2FF\">\n {getAllMappingCount('derivedQuestions') - 1} Enrich\n </CustomChip>\n )}\n {getAllMappingCount('variables') - 1 > 0 && (\n <CustomChip bgColor=\"#E8F4E3\">\n {getAllMappingCount('variables') - 1} Variables\n </CustomChip>\n )}\n {getAllMappingCount('contactProperties') - 1 > 0 && (\n <CustomChip bgColor=\"#FDEDE8\">\n {getAllMappingCount('contactProperties') - 1} Contacts\n </CustomChip>\n )}\n {getAllMappingCount('expressions') - 1 > 0 && (\n <CustomChip bgColor=\"#F1F1F1\">\n {getAllMappingCount('expressions') - 1} Expressions\n </CustomChip>\n )}\n {getAllMappingCount('property') - 1 > 0 && (\n <CustomChip bgColor=\"#4A9CA626\">\n {getAllMappingCount('property') - 1} Properties\n </CustomChip>\n )}\n </Flex>\n </Flex>\n )}\n </Box>\n </Flex>\n );\n};\n"],"names":["_a","React"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition-operators.js","sources":["../../../../src/dynamic-mapping/constants/condition-operators.ts"],"sourcesContent":["/* ----- Types ----- */\n\nexport type ConditionOperator = {\n label: string;\n value: string;\n dataType: string;\n type: string;\n regex?: string;\n valuesKey?: string;\n choices?: Array<{ label: string; value: string }>;\n};\n\nexport type ConditionDataOption = {\n label: string;\n value: string;\n subLabel?: string;\n operators: ConditionOperator[];\n};\n\nexport type ConditionDataGroup = {\n label: string;\n value: string;\n options?: ConditionDataOption[];\n operators?: ConditionOperator[];\n};\n\n/* ----- Default Operators by Field Type ----- */\n\n/**\n * Text operators for SINGLE_LINE_TEXT, TextInput, MULTI_LINE_TEXT fields\n */\nexport const TEXT_OPERATORS: ConditionOperator[] = [\n { label: 'equals', value: 'equals', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not equal', value: 'does-not-equal', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'contains', value: 'contains', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not contain', value: 'does-not-contain', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'starts with', value: 'starts-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'ends with', value: 'ends-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'regex', value: 'regex', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Number operators for NUMBER fields\n */\nexport const NUMBER_OPERATORS: ConditionOperator[] = [\n { label: 'equals', value: 'equals', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'does not equal', value: 'does-not-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'greater than', value: 'greater-than', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'less than', value: 'less-than', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'greater than or equal', value: 'greater-than-or-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'less than or equal', value: 'less-than-or-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Email operators - same as text but with email regex validation\n */\nexport const EMAIL_OPERATORS: ConditionOperator[] = [\n {\n label: 'equals',\n value: 'equals',\n dataType: 'SINGLE_LINE_TEXT',\n type: 'VALUE_SELECTOR',\n regex: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$',\n },\n {\n label: 'does not equal',\n value: 'does-not-equal',\n dataType: 'SINGLE_LINE_TEXT',\n type: 'VALUE_SELECTOR',\n regex: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$',\n },\n { label: 'contains', value: 'contains', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not contain', value: 'does-not-contain', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'starts with', value: 'starts-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'ends with', value: 'ends-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'regex', value: 'regex', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Date operators for DATE, DATETIME fields\n */\nexport const DATE_OPERATORS: ConditionOperator[] = [\n { label: 'is', value: 'is', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is not', value: 'is-not', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is before', value: 'is-before', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is after', value: 'is-after', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is between', value: 'is-between', dataType: 'DATE_RANGE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Dropdown/Select operators for DROPDOWN, SINGLE_SELECT fields\n */\nexport const DROPDOWN_OPERATORS: ConditionOperator[] = [\n { label: 'includes', value: 'includes', dataType: 'SINGLE_SELECT', type: 'VALUE_SELECTOR' },\n { label: 'does not include', value: 'does-not-include', dataType: 'SINGLE_SELECT', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Multi-select operators for MULTI_SELECT fields\n */\nexport const MULTI_SELECT_OPERATORS: ConditionOperator[] = [\n { label: 'includes', value: 'includes', dataType: 'MULTI_SELECT', type: 'VALUE_SELECTOR' },\n { label: 'does not include', value: 'does-not-include', dataType: 'MULTI_SELECT', type: 'VALUE_SELECTOR' },\n];\n\n/* ----- Field Type Mapping ----- */\n\n/**\n * Mapping of field types to their corresponding operators\n */\nexport const FIELD_TYPE_TO_OPERATORS: Record<string, ConditionOperator[]> = {\n // Text types\n SINGLE_LINE_TEXT: TEXT_OPERATORS,\n TextInput: TEXT_OPERATORS,\n MULTI_LINE_TEXT: TEXT_OPERATORS,\n TEXT: TEXT_OPERATORS,\n UNIQUE: TEXT_OPERATORS,\n string: TEXT_OPERATORS,\n\n // Number types\n NUMBER: NUMBER_OPERATORS,\n number: NUMBER_OPERATORS,\n Rating: NUMBER_OPERATORS,\n OpinionScale: NUMBER_OPERATORS,\n\n // Email type\n EMAIL: EMAIL_OPERATORS,\n email: EMAIL_OPERATORS,\n\n // Date types\n DATE: DATE_OPERATORS,\n DATETIME: DATE_OPERATORS,\n DateTime: DATE_OPERATORS,\n date: DATE_OPERATORS,\n\n // Dropdown/Select types\n DROPDOWN: DROPDOWN_OPERATORS,\n SINGLE_SELECT: DROPDOWN_OPERATORS,\n Dropdown: DROPDOWN_OPERATORS,\n YesNo: DROPDOWN_OPERATORS,\n\n // Multi-select types\n MULTI_SELECT: MULTI_SELECT_OPERATORS,\n MultiChoice: MULTI_SELECT_OPERATORS,\n MultiChoicePicture: MULTI_SELECT_OPERATORS,\n Checkbox: MULTI_SELECT_OPERATORS,\n};\n\n/**\n * Get operators for a specific field type\n * Falls back to TEXT_OPERATORS if type is not recognized.\n * When choices are provided, they are injected into SINGLE_SELECT / MULTI_SELECT operators.\n *\n * @param fieldType - The field type string\n * @param choices - Optional array of choices for select-type operators\n * @returns Array of operators for the field type\n */\nexport const getOperatorsForFieldType = (\n fieldType: string,\n choices?: Array<{ label: string; value: string }>\n): ConditionOperator[] => {\n const operators = FIELD_TYPE_TO_OPERATORS[fieldType] || TEXT_OPERATORS;\n if (!choices?.length) return operators;\n return operators.map((op) =>\n op.dataType === 'SINGLE_SELECT' || op.dataType === 'MULTI_SELECT'\n ? { ...op, choices }\n : op\n );\n};\n\n/* ----- Category Labels ----- */\n\nexport const CONDITION_CATEGORY_LABELS: Record<string, string> = {\n questions: 'Questions',\n contactProperties: 'Contact Properties',\n variables: 'Variables',\n expressions: 'Expressions',\n property: 'Properties',\n derivedQuestions: 'Enrich',\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"condition-operators.js","sources":["../../../../src/dynamic-mapping/constants/condition-operators.ts"],"sourcesContent":["/* ----- Types ----- */\n\nexport type ConditionOperator = {\n label: string;\n value: string;\n dataType: string;\n type: string;\n regex?: string;\n valuesKey?: string;\n choices?: Array<{ label: string; value: string }>;\n};\n\nexport type ConditionDataOption = {\n label: string;\n value: string;\n subLabel?: string;\n operators: ConditionOperator[];\n};\n\nexport type ConditionDataGroup = {\n label: string;\n value: string;\n options?: ConditionDataOption[];\n operators?: ConditionOperator[];\n};\n\n/* ----- Default Operators by Field Type ----- */\n\n/**\n * Text operators for SINGLE_LINE_TEXT, TextInput, MULTI_LINE_TEXT fields\n */\nexport const TEXT_OPERATORS: ConditionOperator[] = [\n { label: 'equals', value: 'equals', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not equal', value: 'does-not-equal', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'contains', value: 'contains', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not contain', value: 'does-not-contain', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'starts with', value: 'starts-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'ends with', value: 'ends-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'regex', value: 'regex', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Number operators for NUMBER fields\n */\nexport const NUMBER_OPERATORS: ConditionOperator[] = [\n { label: 'equals', value: 'equals', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'does not equal', value: 'does-not-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'greater than', value: 'greater-than', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'less than', value: 'less-than', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'greater than or equal', value: 'greater-than-or-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'less than or equal', value: 'less-than-or-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Email operators - same as text but with email regex validation\n */\nexport const EMAIL_OPERATORS: ConditionOperator[] = [\n {\n label: 'equals',\n value: 'equals',\n dataType: 'SINGLE_LINE_TEXT',\n type: 'VALUE_SELECTOR',\n regex: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$',\n },\n {\n label: 'does not equal',\n value: 'does-not-equal',\n dataType: 'SINGLE_LINE_TEXT',\n type: 'VALUE_SELECTOR',\n regex: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$',\n },\n { label: 'contains', value: 'contains', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not contain', value: 'does-not-contain', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'starts with', value: 'starts-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'ends with', value: 'ends-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'regex', value: 'regex', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Date operators for DATE, DATETIME fields\n */\nexport const DATE_OPERATORS: ConditionOperator[] = [\n { label: 'is', value: 'is', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is not', value: 'is-not', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is before', value: 'is-before', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is after', value: 'is-after', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is between', value: 'is-between', dataType: 'DATE_RANGE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Dropdown/Select operators for DROPDOWN, SINGLE_SELECT fields\n */\nexport const DROPDOWN_OPERATORS: ConditionOperator[] = [\n { label: 'includes', value: 'includes', dataType: 'SINGLE_SELECT', type: 'VALUE_SELECTOR' },\n { label: 'does not include', value: 'does-not-include', dataType: 'SINGLE_SELECT', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Multi-select operators for MULTI_SELECT fields\n */\nexport const MULTI_SELECT_OPERATORS: ConditionOperator[] = [\n { label: 'includes', value: 'includes', dataType: 'MULTI_SELECT', type: 'VALUE_SELECTOR' },\n { label: 'does not include', value: 'does-not-include', dataType: 'MULTI_SELECT', type: 'VALUE_SELECTOR' },\n];\n\n/* ----- Field Type Mapping ----- */\n\n/**\n * Mapping of field types to their corresponding operators\n */\nexport const FIELD_TYPE_TO_OPERATORS: Record<string, ConditionOperator[]> = {\n // Text types\n SINGLE_LINE_TEXT: TEXT_OPERATORS,\n TextInput: TEXT_OPERATORS,\n MULTI_LINE_TEXT: TEXT_OPERATORS,\n TEXT: TEXT_OPERATORS,\n UNIQUE: TEXT_OPERATORS,\n string: TEXT_OPERATORS,\n\n // Number types\n NUMBER: NUMBER_OPERATORS,\n number: NUMBER_OPERATORS,\n Rating: NUMBER_OPERATORS,\n OpinionScale: NUMBER_OPERATORS,\n NPSScore: NUMBER_OPERATORS,\n\n // Email type\n EMAIL: EMAIL_OPERATORS,\n email: EMAIL_OPERATORS,\n\n // Date types\n DATE: DATE_OPERATORS,\n DATETIME: DATE_OPERATORS,\n DateTime: DATE_OPERATORS,\n date: DATE_OPERATORS,\n\n // Dropdown/Select types\n DROPDOWN: DROPDOWN_OPERATORS,\n SINGLE_SELECT: DROPDOWN_OPERATORS,\n Dropdown: DROPDOWN_OPERATORS,\n YesNo: DROPDOWN_OPERATORS,\n\n // Multi-select types\n MULTI_SELECT: MULTI_SELECT_OPERATORS,\n MultiChoice: MULTI_SELECT_OPERATORS,\n MultiChoicePicture: MULTI_SELECT_OPERATORS,\n Checkbox: MULTI_SELECT_OPERATORS,\n};\n\n/**\n * Get operators for a specific field type\n * Falls back to TEXT_OPERATORS if type is not recognized.\n * When choices are provided, they are injected into SINGLE_SELECT / MULTI_SELECT operators.\n *\n * @param fieldType - The field type string\n * @param choices - Optional array of choices for select-type operators\n * @returns Array of operators for the field type\n */\nexport const getOperatorsForFieldType = (\n fieldType: string,\n choices?: Array<{ label: string; value: string }>\n): ConditionOperator[] => {\n const operators = FIELD_TYPE_TO_OPERATORS[fieldType] || TEXT_OPERATORS;\n if (!choices?.length) return operators;\n return operators.map((op) =>\n op.dataType === 'SINGLE_SELECT' || op.dataType === 'MULTI_SELECT'\n ? { ...op, choices }\n : op\n );\n};\n\n/* ----- Category Labels ----- */\n\nexport const CONDITION_CATEGORY_LABELS: Record<string, string> = {\n questions: 'Questions',\n contactProperties: 'Contact Properties',\n variables: 'Variables',\n expressions: 'Expressions',\n property: 'Properties',\n derivedQuestions: 'Enrich',\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,15 @@ var __spreadValues = (a, b) => {
|
|
|
17
17
|
return a;
|
|
18
18
|
};
|
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
const RESPONSE_PDF_PROPERTY_ID = "RESPONSE_PDF";
|
|
21
|
+
const stripResponsePdfProperty = (fields, omit) => {
|
|
22
|
+
if (!omit || !(fields == null ? void 0 : fields.length))
|
|
23
|
+
return fields != null ? fields : void 0;
|
|
24
|
+
return fields.filter((f) => {
|
|
25
|
+
var _a;
|
|
26
|
+
return ((_a = f == null ? void 0 : f.id) != null ? _a : f == null ? void 0 : f.name) !== RESPONSE_PDF_PROPERTY_ID;
|
|
27
|
+
});
|
|
28
|
+
};
|
|
20
29
|
const updateFieldEnabledState = (fields, id, value) => {
|
|
21
30
|
if (id === "ALL") {
|
|
22
31
|
return fields.map((field) => __spreadProps(__spreadValues({}, field), { isEnabled: value }));
|
|
@@ -149,5 +158,5 @@ const updateFieldEnabledStateWithHierarchy = (fields, id, value, isHierarchical
|
|
|
149
158
|
return modifiedFields;
|
|
150
159
|
};
|
|
151
160
|
|
|
152
|
-
export { filterFieldsBySearch, isConfigurationFieldVisible, organizeQuestionsWithHierarchy, updateFieldEnabledState, updateFieldEnabledStateWithHierarchy };
|
|
161
|
+
export { filterFieldsBySearch, isConfigurationFieldVisible, organizeQuestionsWithHierarchy, stripResponsePdfProperty, updateFieldEnabledState, updateFieldEnabledStateWithHierarchy };
|
|
153
162
|
//# sourceMappingURL=mapping.helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.helpers.js","sources":["../../../../src/dynamic-mapping/helpers/mapping.helpers.ts"],"sourcesContent":["/* ----- Imports ----- */\n\nimport { MappingData } from '../../commons/types/enhanced';\n\n/* ----- Helper Functions ----- */\n\n/**\n * Processes field array for mapping\n * \n * @param {any[]} field - Field array to process\n * @param {string} label - Label for \"select all\" option\n * @returns {any[]} Processed field array\n * \n * @example\n * const processed = processFieldForMapping(questions, \"Select all Questions\");\n */\nexport const processFieldForMapping = (field: any[], label: string): any[] => {\n if (!field?.length) return [];\n if (field?.some((item) => item.id === 'ALL')) return field;\n \n const modifiedData = field.map((data: any) => ({\n ...data,\n id: data?.id ?? data?.name,\n name: data?.rtxt ?? data?.name,\n isEnabled: data?.isEnabled ?? false,\n }));\n \n const isAllEnabled = field.every((item) => item.isEnabled);\n modifiedData.unshift({ id: 'ALL', name: label, isEnabled: isAllEnabled });\n \n return modifiedData;\n};\n\n/**\n * Gets count of enabled mapping fields\n * \n * @param {any[]} mappingField - Array of mapping fields\n * @returns {number} Count of enabled fields\n * \n * @example\n * const count = getEnabledMappingCount(questions);\n */\nexport const getEnabledMappingCount = (mappingField: any[]): number => {\n if (!mappingField) return 0;\n return mappingField.filter((field: any) => field?.id !== 'ALL' && field.isEnabled).length;\n};\n\n/**\n * Gets total count of mapping fields (excluding \"ALL\")\n * \n * @param {any[]} mappingField - Array of mapping fields\n * @returns {number} Total count of fields\n * \n * @example\n * const total = getTotalMappingCount(questions);\n */\nexport const getTotalMappingCount = (mappingField: any[]): number => {\n return mappingField?.length || 0;\n};\n\n/**\n * Updates field enabled state in mapping data\n * \n * @param {any[]} fields - Array of fields\n * @param {string | number} id - Field ID to update\n * @param {boolean} value - New enabled value\n * @returns {any[]} Updated fields array\n * \n * @example\n * const updated = updateFieldEnabledState(questions, \"q1\", true);\n */\nexport const updateFieldEnabledState = (\n fields: any[],\n id: string | number,\n value: boolean\n): any[] => {\n if (id === 'ALL') {\n return fields.map((field: any) => ({ ...field, isEnabled: value }));\n }\n\n let modifiedFields = fields.map((field: any) => {\n if (field?.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n\n const allNonAllFieldsEnabled = modifiedFields\n .filter((field: any) => field?.id !== 'ALL')\n .every((field: any) => field.isEnabled);\n\n modifiedFields = modifiedFields.map((field: any) => {\n if (field?.id === 'ALL') {\n return { ...field, isEnabled: allNonAllFieldsEnabled };\n }\n return field;\n });\n\n return modifiedFields;\n};\n\n/**\n * Checks if configuration field should be visible\n * \n * @param {any} field - Configuration field\n * @param {any} configuredFields - All configured fields\n * @returns {boolean} Whether field should be visible\n * \n * @example\n * const isVisible = isConfigurationFieldVisible(field, configuredFields);\n */\nexport const isConfigurationFieldVisible = (field: any, configuredFields: any): boolean => {\n if (field?.id === 'spreadsheet') {\n return !!configuredFields?.action?.value;\n }\n return true;\n};\n\n/**\n * Filters fields based on search input\n * \n * @param {any[]} fields - Array of fields to filter\n * @param {string} searchInput - Search query\n * @returns {any[]} Filtered fields array\n * \n * @example\n * const filtered = filterFieldsBySearch(questions, \"email\");\n */\nexport const filterFieldsBySearch = (fields: any[], searchInput: string): any[] => {\n if (!searchInput) return fields;\n return fields?.filter((field: any) =>\n field.id === 'ALL' ||\n String(field.name ?? '').toLowerCase().includes(searchInput.toLowerCase())\n );\n};\n\n/**\n * Organizes questions with parent-child hierarchy for display\n * Parent questions are followed by their children in the array\n * Adds isChild and parentId metadata for UI rendering\n * \n * @param {any[]} questions - Flat array of questions from API\n * @returns {any[]} Organized array with hierarchy metadata\n * \n * @example\n * const organized = organizeQuestionsWithHierarchy(apiQuestions);\n */\nexport const organizeQuestionsWithHierarchy = (questions: any[]): any[] => {\n if (!questions?.length) return [];\n\n // Separate parents and children\n const parents = questions.filter((q) => q.parent_question_id === null || q.parent_question_id === undefined);\n const children = questions.filter((q) => q.parent_question_id !== null && q.parent_question_id !== undefined);\n\n // Create a map of parentId -> children[]\n const childrenMap = new Map<number | string, any[]>();\n children.forEach((child) => {\n const parentId = child.parent_question_id;\n if (!childrenMap.has(parentId)) {\n childrenMap.set(parentId, []);\n }\n childrenMap.get(parentId)!.push(child);\n });\n\n // Sort children by position within each parent group\n childrenMap.forEach((childList) => {\n childList.sort((a, b) => parseFloat(a.position || '0') - parseFloat(b.position || '0'));\n });\n\n // Sort parents by section position then by position\n parents.sort((a, b) => {\n const sectionA = parseFloat(a.section?.position || '0');\n const sectionB = parseFloat(b.section?.position || '0');\n if (sectionA !== sectionB) return sectionA - sectionB;\n return parseFloat(a.position || '0') - parseFloat(b.position || '0');\n });\n\n // Build result: for each parent, add parent then its children\n const result: any[] = [];\n parents.forEach((parent) => {\n const hasChildren = childrenMap.has(parent.id);\n result.push({\n ...parent,\n isChild: false,\n parentId: null,\n hasChildren,\n });\n\n const parentChildren = childrenMap.get(parent.id) || [];\n parentChildren.forEach((child) => {\n result.push({\n ...child,\n isChild: true,\n parentId: parent.id,\n hasChildren: false,\n });\n });\n });\n\n return result?.filter((question) => question?.type !== \"Message\" && question?.type !== \"PaymentQuestion\");\n};\n\n/**\n * Updates field enabled state with parent-child cascade logic for questions\n * - When parent is toggled: all children follow\n * - When child is deselected: parent is deselected\n * - When all children are selected: parent is selected\n * \n * @param {any[]} fields - Array of fields\n * @param {string | number} id - Field ID to update\n * @param {boolean} value - New enabled value\n * @param {boolean} isHierarchical - Whether to apply parent-child cascade logic\n * @returns {any[]} Updated fields array\n * \n * @example\n * const updated = updateFieldEnabledStateWithHierarchy(questions, \"q1\", true, true);\n */\nexport const updateFieldEnabledStateWithHierarchy = (\n fields: any[],\n id: string | number,\n value: boolean,\n isHierarchical: boolean = false\n): any[] => {\n // If not hierarchical, use the standard logic\n if (!isHierarchical) {\n return updateFieldEnabledState(fields, id, value);\n }\n\n // Handle \"ALL\" selection\n if (id === 'ALL') {\n return fields.map((field: any) => ({ ...field, isEnabled: value }));\n }\n\n const targetField = fields.find((f) => f.id === id);\n if (!targetField) {\n return updateFieldEnabledState(fields, id, value);\n }\n\n let modifiedFields = [...fields];\n\n if (!targetField.isChild && targetField.hasChildren) {\n // Parent toggled - update parent and all its children\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id || field.parentId === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n } else if (targetField.isChild) {\n // Child toggled\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n\n // Check parent state\n const parentId = targetField.parentId;\n const siblings = modifiedFields.filter((f) => f.parentId === parentId);\n const allSiblingsEnabled = siblings.every((s) => s.isEnabled);\n\n // Update parent based on children state\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === parentId) {\n return { ...field, isEnabled: allSiblingsEnabled };\n }\n return field;\n });\n } else {\n // Regular field without children\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n }\n\n // Update \"ALL\" checkbox state\n const allNonAllFieldsEnabled = modifiedFields\n .filter((field: any) => field?.id !== 'ALL')\n .every((field: any) => field.isEnabled);\n\n modifiedFields = modifiedFields.map((field: any) => {\n if (field?.id === 'ALL') {\n return { ...field, isEnabled: allNonAllFieldsEnabled };\n }\n return field;\n });\n\n return modifiedFields;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapping.helpers.js","sources":["../../../../src/dynamic-mapping/helpers/mapping.helpers.ts"],"sourcesContent":["/* ----- Imports ----- */\n\nimport { MappingData } from '../../commons/types/enhanced';\n\nconst RESPONSE_PDF_PROPERTY_ID = 'RESPONSE_PDF';\n\n/**\n * When omit is true, removes the Response PDF submission property from a list (by id/name).\n */\nexport const stripResponsePdfProperty = (\n fields: any[] | undefined | null,\n omit: boolean\n): any[] | undefined | null => {\n if (!omit || !fields?.length) return fields ?? undefined;\n return fields.filter((f: any) => (f?.id ?? f?.name) !== RESPONSE_PDF_PROPERTY_ID);\n};\n\n/* ----- Helper Functions ----- */\n\n/**\n * Processes field array for mapping\n * \n * @param {any[]} field - Field array to process\n * @param {string} label - Label for \"select all\" option\n * @returns {any[]} Processed field array\n * \n * @example\n * const processed = processFieldForMapping(questions, \"Select all Questions\");\n */\nexport const processFieldForMapping = (field: any[], label: string): any[] => {\n if (!field?.length) return [];\n if (field?.some((item) => item.id === 'ALL')) return field;\n \n const modifiedData = field.map((data: any) => ({\n ...data,\n id: data?.id ?? data?.name,\n name: data?.rtxt ?? data?.name,\n isEnabled: data?.isEnabled ?? false,\n }));\n \n const isAllEnabled = field.every((item) => item.isEnabled);\n modifiedData.unshift({ id: 'ALL', name: label, isEnabled: isAllEnabled });\n \n return modifiedData;\n};\n\n/**\n * Gets count of enabled mapping fields\n * \n * @param {any[]} mappingField - Array of mapping fields\n * @returns {number} Count of enabled fields\n * \n * @example\n * const count = getEnabledMappingCount(questions);\n */\nexport const getEnabledMappingCount = (mappingField: any[]): number => {\n if (!mappingField) return 0;\n return mappingField.filter((field: any) => field?.id !== 'ALL' && field.isEnabled).length;\n};\n\n/**\n * Gets total count of mapping fields (excluding \"ALL\")\n * \n * @param {any[]} mappingField - Array of mapping fields\n * @returns {number} Total count of fields\n * \n * @example\n * const total = getTotalMappingCount(questions);\n */\nexport const getTotalMappingCount = (mappingField: any[]): number => {\n return mappingField?.length || 0;\n};\n\n/**\n * Updates field enabled state in mapping data\n * \n * @param {any[]} fields - Array of fields\n * @param {string | number} id - Field ID to update\n * @param {boolean} value - New enabled value\n * @returns {any[]} Updated fields array\n * \n * @example\n * const updated = updateFieldEnabledState(questions, \"q1\", true);\n */\nexport const updateFieldEnabledState = (\n fields: any[],\n id: string | number,\n value: boolean\n): any[] => {\n if (id === 'ALL') {\n return fields.map((field: any) => ({ ...field, isEnabled: value }));\n }\n\n let modifiedFields = fields.map((field: any) => {\n if (field?.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n\n const allNonAllFieldsEnabled = modifiedFields\n .filter((field: any) => field?.id !== 'ALL')\n .every((field: any) => field.isEnabled);\n\n modifiedFields = modifiedFields.map((field: any) => {\n if (field?.id === 'ALL') {\n return { ...field, isEnabled: allNonAllFieldsEnabled };\n }\n return field;\n });\n\n return modifiedFields;\n};\n\n/**\n * Checks if configuration field should be visible\n * \n * @param {any} field - Configuration field\n * @param {any} configuredFields - All configured fields\n * @returns {boolean} Whether field should be visible\n * \n * @example\n * const isVisible = isConfigurationFieldVisible(field, configuredFields);\n */\nexport const isConfigurationFieldVisible = (field: any, configuredFields: any): boolean => {\n if (field?.id === 'spreadsheet') {\n return !!configuredFields?.action?.value;\n }\n return true;\n};\n\n/**\n * Filters fields based on search input\n * \n * @param {any[]} fields - Array of fields to filter\n * @param {string} searchInput - Search query\n * @returns {any[]} Filtered fields array\n * \n * @example\n * const filtered = filterFieldsBySearch(questions, \"email\");\n */\nexport const filterFieldsBySearch = (fields: any[], searchInput: string): any[] => {\n if (!searchInput) return fields;\n return fields?.filter((field: any) =>\n field.id === 'ALL' ||\n String(field.name ?? '').toLowerCase().includes(searchInput.toLowerCase())\n );\n};\n\n/**\n * Organizes questions with parent-child hierarchy for display\n * Parent questions are followed by their children in the array\n * Adds isChild and parentId metadata for UI rendering\n * \n * @param {any[]} questions - Flat array of questions from API\n * @returns {any[]} Organized array with hierarchy metadata\n * \n * @example\n * const organized = organizeQuestionsWithHierarchy(apiQuestions);\n */\nexport const organizeQuestionsWithHierarchy = (questions: any[]): any[] => {\n if (!questions?.length) return [];\n\n // Separate parents and children\n const parents = questions.filter((q) => q.parent_question_id === null || q.parent_question_id === undefined);\n const children = questions.filter((q) => q.parent_question_id !== null && q.parent_question_id !== undefined);\n\n // Create a map of parentId -> children[]\n const childrenMap = new Map<number | string, any[]>();\n children.forEach((child) => {\n const parentId = child.parent_question_id;\n if (!childrenMap.has(parentId)) {\n childrenMap.set(parentId, []);\n }\n childrenMap.get(parentId)!.push(child);\n });\n\n // Sort children by position within each parent group\n childrenMap.forEach((childList) => {\n childList.sort((a, b) => parseFloat(a.position || '0') - parseFloat(b.position || '0'));\n });\n\n // Sort parents by section position then by position\n parents.sort((a, b) => {\n const sectionA = parseFloat(a.section?.position || '0');\n const sectionB = parseFloat(b.section?.position || '0');\n if (sectionA !== sectionB) return sectionA - sectionB;\n return parseFloat(a.position || '0') - parseFloat(b.position || '0');\n });\n\n // Build result: for each parent, add parent then its children\n const result: any[] = [];\n parents.forEach((parent) => {\n const hasChildren = childrenMap.has(parent.id);\n result.push({\n ...parent,\n isChild: false,\n parentId: null,\n hasChildren,\n });\n\n const parentChildren = childrenMap.get(parent.id) || [];\n parentChildren.forEach((child) => {\n result.push({\n ...child,\n isChild: true,\n parentId: parent.id,\n hasChildren: false,\n });\n });\n });\n\n return result?.filter((question) => question?.type !== \"Message\" && question?.type !== \"PaymentQuestion\");\n};\n\n/**\n * Updates field enabled state with parent-child cascade logic for questions\n * - When parent is toggled: all children follow\n * - When child is deselected: parent is deselected\n * - When all children are selected: parent is selected\n * \n * @param {any[]} fields - Array of fields\n * @param {string | number} id - Field ID to update\n * @param {boolean} value - New enabled value\n * @param {boolean} isHierarchical - Whether to apply parent-child cascade logic\n * @returns {any[]} Updated fields array\n * \n * @example\n * const updated = updateFieldEnabledStateWithHierarchy(questions, \"q1\", true, true);\n */\nexport const updateFieldEnabledStateWithHierarchy = (\n fields: any[],\n id: string | number,\n value: boolean,\n isHierarchical: boolean = false\n): any[] => {\n // If not hierarchical, use the standard logic\n if (!isHierarchical) {\n return updateFieldEnabledState(fields, id, value);\n }\n\n // Handle \"ALL\" selection\n if (id === 'ALL') {\n return fields.map((field: any) => ({ ...field, isEnabled: value }));\n }\n\n const targetField = fields.find((f) => f.id === id);\n if (!targetField) {\n return updateFieldEnabledState(fields, id, value);\n }\n\n let modifiedFields = [...fields];\n\n if (!targetField.isChild && targetField.hasChildren) {\n // Parent toggled - update parent and all its children\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id || field.parentId === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n } else if (targetField.isChild) {\n // Child toggled\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n\n // Check parent state\n const parentId = targetField.parentId;\n const siblings = modifiedFields.filter((f) => f.parentId === parentId);\n const allSiblingsEnabled = siblings.every((s) => s.isEnabled);\n\n // Update parent based on children state\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === parentId) {\n return { ...field, isEnabled: allSiblingsEnabled };\n }\n return field;\n });\n } else {\n // Regular field without children\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n }\n\n // Update \"ALL\" checkbox state\n const allNonAllFieldsEnabled = modifiedFields\n .filter((field: any) => field?.id !== 'ALL')\n .every((field: any) => field.isEnabled);\n\n modifiedFields = modifiedFields.map((field: any) => {\n if (field?.id === 'ALL') {\n return { ...field, isEnabled: allNonAllFieldsEnabled };\n }\n return field;\n });\n\n return modifiedFields;\n};\n"],"names":[],"mappings":"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"}
|