@sparrowengg/integrations-templates-frontend 7.0.0-bulkify.2 → 7.0.0-bulkify.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/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/constants/condition-operators.js +1 -0
- package/dist/cjs/dynamic-mapping/constants/condition-operators.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/constants/condition-operators.js +1 -0
- package/dist/es/dynamic-mapping/constants/condition-operators.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 +3 -1
- package/package.json +1 -1
|
@@ -10,11 +10,27 @@ const CascaderDropdownProvider = ({
|
|
|
10
10
|
data,
|
|
11
11
|
value,
|
|
12
12
|
onChange,
|
|
13
|
-
selectorValue
|
|
13
|
+
selectorValue,
|
|
14
|
+
defaultOpen = false,
|
|
15
|
+
onOpenChange
|
|
14
16
|
}) => {
|
|
15
17
|
const id = React.useId();
|
|
16
18
|
const inputRef = React.useRef(null);
|
|
17
19
|
const [popoverOpen, setPopoverOpen] = React.useState(false);
|
|
20
|
+
const prevPopoverOpen = React.useRef(false);
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
if (defaultOpen) {
|
|
23
|
+
const timer = setTimeout(() => setPopoverOpen(true), 0);
|
|
24
|
+
return () => clearTimeout(timer);
|
|
25
|
+
}
|
|
26
|
+
return void 0;
|
|
27
|
+
}, [defaultOpen]);
|
|
28
|
+
React.useEffect(() => {
|
|
29
|
+
if (prevPopoverOpen.current !== popoverOpen) {
|
|
30
|
+
prevPopoverOpen.current = popoverOpen;
|
|
31
|
+
onOpenChange == null ? void 0 : onOpenChange(popoverOpen);
|
|
32
|
+
}
|
|
33
|
+
}, [popoverOpen, onOpenChange]);
|
|
18
34
|
const [selectedNode, setSelectedNode] = React.useState(null);
|
|
19
35
|
const [focusedNode, setFocusedNode] = React.useState(null);
|
|
20
36
|
const { selectionPath, foldersSelectionPath } = React.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":["useId","useRef","useState","useMemo","buildSelectionPath","buildTree","findNextFocusableRowNode","findPrevFocusableRowNode","optionTypes","recursiveFind","useEffect","CascaderDropdownContext"],"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":["useId","useRef","useState","useEffect","useMemo","buildSelectionPath","buildTree","findNextFocusableRowNode","findPrevFocusableRowNode","optionTypes","recursiveFind","CascaderDropdownContext"],"mappings":"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"}
|
|
@@ -36,7 +36,9 @@ const CascaderDropdown = ({
|
|
|
36
36
|
dropdownProps = {},
|
|
37
37
|
dropdownContentProps = {},
|
|
38
38
|
tooltipProps,
|
|
39
|
-
selectorValue = cascaderDropdownConstants.initialFilterValueSelectorValue
|
|
39
|
+
selectorValue = cascaderDropdownConstants.initialFilterValueSelectorValue,
|
|
40
|
+
defaultOpen = false,
|
|
41
|
+
onOpenChange
|
|
40
42
|
}) => {
|
|
41
43
|
var _a;
|
|
42
44
|
const [localValue, setLocalValue] = React.useState(
|
|
@@ -64,6 +66,8 @@ const CascaderDropdown = ({
|
|
|
64
66
|
data,
|
|
65
67
|
value: selectedValue,
|
|
66
68
|
selectorValue,
|
|
69
|
+
defaultOpen,
|
|
70
|
+
onOpenChange,
|
|
67
71
|
onChange: ({
|
|
68
72
|
value: selectedDataValue,
|
|
69
73
|
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":["initialFilterValueSelectorValue","useState","recursiveFind","useMemo","_a","ThemeWrapper","TooltipProvider","CascaderDropdownProvider","CascaderDropdownContent"],"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":["initialFilterValueSelectorValue","useState","recursiveFind","useMemo","_a","ThemeWrapper","TooltipProvider","CascaderDropdownProvider","CascaderDropdownContent"],"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,GAAgBA,yDAAA;AAAA,EAChB,WAAA,GAAc,KAAA;AAAA,EACd;AACF,CAAA,KAA6B;AA3D7B,EAAA,IAAA,EAAA;AA4DE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,cAAA;AAAA,IAAA,CACjC,EAAA,GAAA,OAAO,YAAA,KAAiB,QAAA,GACrB,YAAA,GACAC,mCAAA,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,GAAgBC,cAAuC,MAAM;AArErE,IAAA,IAAAC,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,GAAAF,mCAAA,CAAc,IAAA,EAAM,EAAE,KAAiB,CAAC,CAAA,KAAxC,OAAAE,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,uBACE,KAAA,CAAA,aAAA,CAACC,oBAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAACC,uBAAA,EAAA,EAAgB,eAAe,GAAA,EAAA,kBAC9B,KAAA,CAAA,aAAA;AAAA,IAACC,iDAAA;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,EAAkBL,oCAAc,IAAA,EAAM;AAAA,cACpC,OAAO,iBAAA,CAAkB,KAE3B,CAAC,CAAA;AAAA,YACD,aAAA,EAAe;AAAA,WAChB,CAAA;AAAA,QACH;AAAA,MACF;AAAA,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA;AAAA,MAACM,+CAAA;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;;;;"}
|
|
@@ -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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"}
|
|
@@ -67,7 +67,15 @@ const FilterPill = ({
|
|
|
67
67
|
onDelete,
|
|
68
68
|
showError = false
|
|
69
69
|
}) => {
|
|
70
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
70
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
71
|
+
const [operatorDismissed, setOperatorDismissed] = React.useState(false);
|
|
72
|
+
const isConnectorMissing = !((_a = filterPillData.connector) == null ? void 0 : _a.value);
|
|
73
|
+
const effectiveShowError = showError && (!isConnectorMissing || operatorDismissed);
|
|
74
|
+
const handleOperatorOpenChange = (open) => {
|
|
75
|
+
if (!open && isConnectorMissing) {
|
|
76
|
+
setOperatorDismissed(true);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
71
79
|
const onChange = ({
|
|
72
80
|
selectedProperty,
|
|
73
81
|
selectorValue
|
|
@@ -91,12 +99,14 @@ const FilterPill = ({
|
|
|
91
99
|
setFilterPillData(newFilterPillData);
|
|
92
100
|
}
|
|
93
101
|
};
|
|
94
|
-
return /* @__PURE__ */ React.createElement(tooltip.TooltipProvider, { delayDuration: 0 }, /* @__PURE__ */ React.createElement(StyledFilterPill, { variant:
|
|
102
|
+
return /* @__PURE__ */ React.createElement(tooltip.TooltipProvider, { delayDuration: 0 }, /* @__PURE__ */ React.createElement(StyledFilterPill, { variant: effectiveShowError ? "error" : variant }, /* @__PURE__ */ React.createElement(FilterPillLabel, { icon, label: filterPillData.property.label, labelProps: { css: { color: "$neutral900" } } }), /* @__PURE__ */ React.createElement(flex.Flex, null, !((_b = filterPillData.connector) == null ? void 0 : _b.value) && /* @__PURE__ */ React.createElement(
|
|
95
103
|
cascaderDropdown.CascaderDropdown,
|
|
96
104
|
{
|
|
97
105
|
data: cascaderDropdownData,
|
|
98
106
|
selectorValue: filterPillData.value,
|
|
99
107
|
onChange,
|
|
108
|
+
defaultOpen: true,
|
|
109
|
+
onOpenChange: handleOperatorOpenChange,
|
|
100
110
|
dropdownContentProps: { align: "start" }
|
|
101
111
|
},
|
|
102
112
|
/* @__PURE__ */ React.createElement(StyledValueButton, { css: { borderTopRightRadius: "$lg", borderBottomRightRadius: "$lg" } }, /* @__PURE__ */ React.createElement(
|
|
@@ -105,14 +115,14 @@ const FilterPill = ({
|
|
|
105
115
|
css: __spreadValues({
|
|
106
116
|
color: "$neutral700",
|
|
107
117
|
padding: "3px $4 3px $1"
|
|
108
|
-
},
|
|
118
|
+
}, effectiveShowError && {
|
|
109
119
|
color: "$negative700",
|
|
110
120
|
fontWeight: "$5"
|
|
111
121
|
})
|
|
112
122
|
},
|
|
113
123
|
"Choose Condition"
|
|
114
124
|
))
|
|
115
|
-
), ((
|
|
125
|
+
), ((_c = filterPillData.connector) == null ? void 0 : _c.value) && /* @__PURE__ */ React.createElement(
|
|
116
126
|
cascaderDropdown.CascaderDropdown,
|
|
117
127
|
{
|
|
118
128
|
data: cascaderDropdownData,
|
|
@@ -120,11 +130,11 @@ const FilterPill = ({
|
|
|
120
130
|
onChange,
|
|
121
131
|
dropdownContentProps: { align: "start" }
|
|
122
132
|
},
|
|
123
|
-
/* @__PURE__ */ React.createElement(StyledValueButton, { css: __spreadValues({}, ((
|
|
133
|
+
/* @__PURE__ */ React.createElement(StyledValueButton, { css: __spreadValues({}, ((_d = filterPillData.connector) == null ? void 0 : _d.dataType) === "NO_VALUE" && {
|
|
124
134
|
borderTopRightRadius: "$lg",
|
|
125
135
|
borderBottomRightRadius: "$lg"
|
|
126
|
-
}) }, /* @__PURE__ */ React.createElement(text.Text, { css: { color: "$neutral700", padding: "3px $1 3px $1" } }, (
|
|
127
|
-
), ((
|
|
136
|
+
}) }, /* @__PURE__ */ React.createElement(text.Text, { css: { color: "$neutral700", padding: "3px $1 3px $1" } }, (_e = filterPillData.connector) == null ? void 0 : _e.label))
|
|
137
|
+
), ((_f = filterPillData.connector) == null ? void 0 : _f.value) && ((_g = filterPillData.connector) == null ? void 0 : _g.dataType) !== "NO_VALUE" && /* @__PURE__ */ React.createElement(
|
|
128
138
|
cascaderDropdown.CascaderDropdown,
|
|
129
139
|
{
|
|
130
140
|
data: cascaderDropdownData,
|
|
@@ -139,12 +149,12 @@ const FilterPill = ({
|
|
|
139
149
|
css: __spreadValues({
|
|
140
150
|
color: "$neutral900",
|
|
141
151
|
padding: "3px $4 3px $2"
|
|
142
|
-
},
|
|
152
|
+
}, effectiveShowError && {
|
|
143
153
|
color: "$negative700"
|
|
144
154
|
}),
|
|
145
155
|
weight: "medium"
|
|
146
156
|
},
|
|
147
|
-
(
|
|
157
|
+
(_h = getDisplayValue(filterPillData)) != null ? _h : "Choose Value"
|
|
148
158
|
))
|
|
149
159
|
)), /* @__PURE__ */ React.createElement(tooltip.Tooltip, { content: "Remove" }, /* @__PURE__ */ React.createElement(StyledCloseButton, { className: StyledItem.prefixClassName("filter-pill__close-button"), onClick: () => onDelete() }, /* @__PURE__ */ React.createElement(closeCircleFill.CloseCircleFillIcon, { size: 16 })))));
|
|
150
160
|
};
|
|
@@ -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;;;;"}
|
|
@@ -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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { styled } from '../packages/frontend-templates/slitches.config.js';
|
|
2
2
|
import { prefixClassName } from '../cascader-dropdown/styled/StyledItem.js';
|
|
3
|
-
import React__default from 'react';
|
|
3
|
+
import React__default, { useState } from 'react';
|
|
4
4
|
import { CascaderDropdown } from '../cascader-dropdown/cascader-dropdown.js';
|
|
5
5
|
import { dataTypes, optionTypes, initialFilterValueSelectorValue } from '../cascader-dropdown/helpers/cascader-dropdown-constants.js';
|
|
6
6
|
import FilterPillValueSelector from './filter-pill-value-selector.js';
|
|
@@ -65,7 +65,15 @@ const FilterPill = ({
|
|
|
65
65
|
onDelete,
|
|
66
66
|
showError = false
|
|
67
67
|
}) => {
|
|
68
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
68
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
69
|
+
const [operatorDismissed, setOperatorDismissed] = useState(false);
|
|
70
|
+
const isConnectorMissing = !((_a = filterPillData.connector) == null ? void 0 : _a.value);
|
|
71
|
+
const effectiveShowError = showError && (!isConnectorMissing || operatorDismissed);
|
|
72
|
+
const handleOperatorOpenChange = (open) => {
|
|
73
|
+
if (!open && isConnectorMissing) {
|
|
74
|
+
setOperatorDismissed(true);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
69
77
|
const onChange = ({
|
|
70
78
|
selectedProperty,
|
|
71
79
|
selectorValue
|
|
@@ -89,12 +97,14 @@ const FilterPill = ({
|
|
|
89
97
|
setFilterPillData(newFilterPillData);
|
|
90
98
|
}
|
|
91
99
|
};
|
|
92
|
-
return /* @__PURE__ */ React__default.createElement(TooltipProvider, { delayDuration: 0 }, /* @__PURE__ */ React__default.createElement(StyledFilterPill, { variant:
|
|
100
|
+
return /* @__PURE__ */ React__default.createElement(TooltipProvider, { delayDuration: 0 }, /* @__PURE__ */ React__default.createElement(StyledFilterPill, { variant: effectiveShowError ? "error" : variant }, /* @__PURE__ */ React__default.createElement(FilterPillLabel, { icon, label: filterPillData.property.label, labelProps: { css: { color: "$neutral900" } } }), /* @__PURE__ */ React__default.createElement(Flex, null, !((_b = filterPillData.connector) == null ? void 0 : _b.value) && /* @__PURE__ */ React__default.createElement(
|
|
93
101
|
CascaderDropdown,
|
|
94
102
|
{
|
|
95
103
|
data: cascaderDropdownData,
|
|
96
104
|
selectorValue: filterPillData.value,
|
|
97
105
|
onChange,
|
|
106
|
+
defaultOpen: true,
|
|
107
|
+
onOpenChange: handleOperatorOpenChange,
|
|
98
108
|
dropdownContentProps: { align: "start" }
|
|
99
109
|
},
|
|
100
110
|
/* @__PURE__ */ React__default.createElement(StyledValueButton, { css: { borderTopRightRadius: "$lg", borderBottomRightRadius: "$lg" } }, /* @__PURE__ */ React__default.createElement(
|
|
@@ -103,14 +113,14 @@ const FilterPill = ({
|
|
|
103
113
|
css: __spreadValues({
|
|
104
114
|
color: "$neutral700",
|
|
105
115
|
padding: "3px $4 3px $1"
|
|
106
|
-
},
|
|
116
|
+
}, effectiveShowError && {
|
|
107
117
|
color: "$negative700",
|
|
108
118
|
fontWeight: "$5"
|
|
109
119
|
})
|
|
110
120
|
},
|
|
111
121
|
"Choose Condition"
|
|
112
122
|
))
|
|
113
|
-
), ((
|
|
123
|
+
), ((_c = filterPillData.connector) == null ? void 0 : _c.value) && /* @__PURE__ */ React__default.createElement(
|
|
114
124
|
CascaderDropdown,
|
|
115
125
|
{
|
|
116
126
|
data: cascaderDropdownData,
|
|
@@ -118,11 +128,11 @@ const FilterPill = ({
|
|
|
118
128
|
onChange,
|
|
119
129
|
dropdownContentProps: { align: "start" }
|
|
120
130
|
},
|
|
121
|
-
/* @__PURE__ */ React__default.createElement(StyledValueButton, { css: __spreadValues({}, ((
|
|
131
|
+
/* @__PURE__ */ React__default.createElement(StyledValueButton, { css: __spreadValues({}, ((_d = filterPillData.connector) == null ? void 0 : _d.dataType) === "NO_VALUE" && {
|
|
122
132
|
borderTopRightRadius: "$lg",
|
|
123
133
|
borderBottomRightRadius: "$lg"
|
|
124
|
-
}) }, /* @__PURE__ */ React__default.createElement(Text, { css: { color: "$neutral700", padding: "3px $1 3px $1" } }, (
|
|
125
|
-
), ((
|
|
134
|
+
}) }, /* @__PURE__ */ React__default.createElement(Text, { css: { color: "$neutral700", padding: "3px $1 3px $1" } }, (_e = filterPillData.connector) == null ? void 0 : _e.label))
|
|
135
|
+
), ((_f = filterPillData.connector) == null ? void 0 : _f.value) && ((_g = filterPillData.connector) == null ? void 0 : _g.dataType) !== "NO_VALUE" && /* @__PURE__ */ React__default.createElement(
|
|
126
136
|
CascaderDropdown,
|
|
127
137
|
{
|
|
128
138
|
data: cascaderDropdownData,
|
|
@@ -137,12 +147,12 @@ const FilterPill = ({
|
|
|
137
147
|
css: __spreadValues({
|
|
138
148
|
color: "$neutral900",
|
|
139
149
|
padding: "3px $4 3px $2"
|
|
140
|
-
},
|
|
150
|
+
}, effectiveShowError && {
|
|
141
151
|
color: "$negative700"
|
|
142
152
|
}),
|
|
143
153
|
weight: "medium"
|
|
144
154
|
},
|
|
145
|
-
(
|
|
155
|
+
(_h = getDisplayValue(filterPillData)) != null ? _h : "Choose Value"
|
|
146
156
|
))
|
|
147
157
|
)), /* @__PURE__ */ React__default.createElement(Tooltip, { content: "Remove" }, /* @__PURE__ */ React__default.createElement(StyledCloseButton, { className: prefixClassName("filter-pill__close-button"), onClick: () => onDelete() }, /* @__PURE__ */ React__default.createElement(CloseCircleFillIcon, { size: 16 })))));
|
|
148
158
|
};
|
|
@@ -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":["React"],"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":["React"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -726,6 +726,8 @@ type CascaderDropdownProps = {
|
|
|
726
726
|
dropdownContentProps?: DropdownContentProps;
|
|
727
727
|
tooltipProps?: TooltipProps;
|
|
728
728
|
selectorValue?: CascaderDropdownValueSelectorType;
|
|
729
|
+
defaultOpen?: boolean;
|
|
730
|
+
onOpenChange?: (open: boolean) => void;
|
|
729
731
|
} & CascaderDropdownComponentProps;
|
|
730
732
|
type CascaderDropdownComponentProps = {};
|
|
731
733
|
type OnChangeReturnType = {
|
|
@@ -734,7 +736,7 @@ type OnChangeReturnType = {
|
|
|
734
736
|
selectedProperty: CascaderDropdownDataValueType | null;
|
|
735
737
|
selectorValue?: CascaderDropdownValueSelectorType;
|
|
736
738
|
};
|
|
737
|
-
declare const CascaderDropdown: ({ children, data, value, defaultValue, onChange, dropdownProps, dropdownContentProps, tooltipProps, selectorValue, }: CascaderDropdownProps) => react_jsx_runtime.JSX.Element;
|
|
739
|
+
declare const CascaderDropdown: ({ children, data, value, defaultValue, onChange, dropdownProps, dropdownContentProps, tooltipProps, selectorValue, defaultOpen, onOpenChange, }: CascaderDropdownProps) => react_jsx_runtime.JSX.Element;
|
|
738
740
|
|
|
739
741
|
export { CascaderDropdown, ContactImport, DynamicMapping, FilterPill, FilterPillWithoutOperator, IntegrationTemplate, Mapping, SingleMapping, Triggers };
|
|
740
742
|
export type { CascaderDropdownComponentProps, CascaderDropdownProps, DropdownContentProps, FilterPillProps, FilterValueItemType, FilterValueOperatorType, OnChangeReturnType, SingleMappingPropsType };
|