@sparrowengg/integrations-templates-frontend 7.0.0-bulkify.2 → 7.0.0-bulkify.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CO,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;AAClB,CAAA,KAA6B;AAvD7B,EAAA,IAAA,EAAA;AAwDE,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;AAjErE,IAAA,IAAAC,GAAAA;AAkEI,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,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
+ {"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;;;;"}
@@ -91,6 +91,7 @@ const FIELD_TYPE_TO_OPERATORS = {
91
91
  number: NUMBER_OPERATORS,
92
92
  Rating: NUMBER_OPERATORS,
93
93
  OpinionScale: NUMBER_OPERATORS,
94
+ NPSScore: NUMBER_OPERATORS,
94
95
  // Email type
95
96
  EMAIL: EMAIL_OPERATORS,
96
97
  email: EMAIL_OPERATORS,
@@ -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: showError ? "error" : variant }, /* @__PURE__ */ React.createElement(FilterPillLabel, { icon, label: filterPillData.property.label, labelProps: { css: { color: "$neutral900" } } }), /* @__PURE__ */ React.createElement(flex.Flex, null, !((_a = filterPillData.connector) == null ? void 0 : _a.value) && /* @__PURE__ */ React.createElement(
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
- }, showError && {
118
+ }, effectiveShowError && {
109
119
  color: "$negative700",
110
120
  fontWeight: "$5"
111
121
  })
112
122
  },
113
123
  "Choose Condition"
114
124
  ))
115
- ), ((_b = filterPillData.connector) == null ? void 0 : _b.value) && /* @__PURE__ */ React.createElement(
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({}, ((_c = filterPillData.connector) == null ? void 0 : _c.dataType) === "NO_VALUE" && {
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" } }, (_d = filterPillData.connector) == null ? void 0 : _d.label))
127
- ), ((_e = filterPillData.connector) == null ? void 0 : _e.value) && ((_f = filterPillData.connector) == null ? void 0 : _f.dataType) !== "NO_VALUE" && /* @__PURE__ */ React.createElement(
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
- }, showError && {
152
+ }, effectiveShowError && {
143
153
  color: "$negative700"
144
154
  }),
145
155
  weight: "medium"
146
156
  },
147
- (_g = getDisplayValue(filterPillData)) != null ? _g : "Choose Value"
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, useMemo, useEffect } from 'react';
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CO,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;AAClB,CAAA,KAA6B;AAvD7B,EAAA,IAAA,EAAA;AAwDE,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;AAjErE,IAAA,IAAAA,GAAAA;AAkEI,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,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
+ {"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;;;;"}
@@ -89,6 +89,7 @@ const FIELD_TYPE_TO_OPERATORS = {
89
89
  number: NUMBER_OPERATORS,
90
90
  Rating: NUMBER_OPERATORS,
91
91
  OpinionScale: NUMBER_OPERATORS,
92
+ NPSScore: NUMBER_OPERATORS,
92
93
  // Email type
93
94
  EMAIL: EMAIL_OPERATORS,
94
95
  email: EMAIL_OPERATORS,
@@ -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: showError ? "error" : variant }, /* @__PURE__ */ React__default.createElement(FilterPillLabel, { icon, label: filterPillData.property.label, labelProps: { css: { color: "$neutral900" } } }), /* @__PURE__ */ React__default.createElement(Flex, null, !((_a = filterPillData.connector) == null ? void 0 : _a.value) && /* @__PURE__ */ React__default.createElement(
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
- }, showError && {
116
+ }, effectiveShowError && {
107
117
  color: "$negative700",
108
118
  fontWeight: "$5"
109
119
  })
110
120
  },
111
121
  "Choose Condition"
112
122
  ))
113
- ), ((_b = filterPillData.connector) == null ? void 0 : _b.value) && /* @__PURE__ */ React__default.createElement(
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({}, ((_c = filterPillData.connector) == null ? void 0 : _c.dataType) === "NO_VALUE" && {
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" } }, (_d = filterPillData.connector) == null ? void 0 : _d.label))
125
- ), ((_e = filterPillData.connector) == null ? void 0 : _e.value) && ((_f = filterPillData.connector) == null ? void 0 : _f.dataType) !== "NO_VALUE" && /* @__PURE__ */ React__default.createElement(
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
- }, showError && {
150
+ }, effectiveShowError && {
141
151
  color: "$negative700"
142
152
  }),
143
153
  weight: "medium"
144
154
  },
145
- (_g = getDisplayValue(filterPillData)) != null ? _g : "Choose Value"
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAM,kBAAA,GAAqB,CACzB,QAAA,EACA,OAAA,KACW;AA1Cb,EAAA,IAAA,EAAA,EAAA,EAAA;AA2CE,EAAA,IAAI,EAAC,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,MAAA,CAAA;AAAQ,IAAA,OAAO,QAAA;AAC7B,EAAA,OAAA,CAAO,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,QAAQ,CAAA,KAAxC,IAAA,GAAA,MAAA,GAAA,EAAA,CAA2C,KAAA,KAA3C,IAAA,GAAA,EAAA,GAAoD,QAAA;AAC7D,CAAA;AAEA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAsB;AA/C/C,EAAA,IAAA,EAAA,EAAA,EAAA;AAgDE,EAAA,IAAI,CAAC,KAAA,CAAM,SAAA;AAAW,IAAA,OAAO,IAAA;AAC7B,EAAA,MAAM,YAAA,GAAA,CAAe,EAAA,GAAA,KAAA,CAAM,KAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,MAAM,SAAA,CAAU,QAAA,CAAA;AACnD,EAAA,MAAM,OAAA,GAAA,CAAW,EAAA,GAAA,KAAA,CAAM,SAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAyB,OAAA;AAE1C,EAAA,IAAI,MAAM,SAAA,CAAU,QAAA,KAAa,UAAU,aAAA,IAAiB,OAAO,iBAAiB,QAAA,EAAU;AAC5F,IAAA,OAAO,kBAAA,CAAmB,cAAc,OAAO,CAAA;AAAA,EACjD;AACA,EAAA,IAAI,KAAA,CAAM,UAAU,QAAA,KAAa,SAAA,CAAU,gBAAgB,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,EAAG;AACtF,IAAA,OAAO,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,KAAM,kBAAA,CAAmB,GAAG,OAAO,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,EAC1E;AACA,EAAA,IAAI,OAAO,YAAA,KAAiB,QAAA;AAAU,IAAA,OAAO,YAAA;AAC7C,EAAA,IAAI,KAAA,CAAM,QAAQ,YAAY,CAAA;AAAG,IAAA,OAAO,YAAA,CAAa,KAAK,IAAI,CAAA;AAC9D,EAAA,IAAI,KAAA,CAAM,UAAU,QAAA,KAAa,SAAA,CAAU,cAAc,OAAO,YAAA,KAAiB,QAAA,IAAY,YAAA,KAAiB,IAAA,EAAM;AAClH,IAAA,OAAO,CAAA,EAAG,YAAA,CAAa,KAAK,CAAA,GAAA,EAAM,aAAa,GAAG,CAAA,CAAA;AAAA,EACpD;AACA,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,MAAM,aAAa,CAAC;AAAA,EACzB,IAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,oBAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,KAAuB;AA1EvB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA2EE,EAAA,MAAM,WAAW,CAAC;AAAA,IAChB,gBAAA;AAAA,IACA;AAAA,GACF,KAA0B;AACxB,IAAA,IAAI,oBAAoB,MAAA,IAAU,gBAAA,IAAoB,gBAAA,CAAiB,IAAA,KAAS,YAAY,cAAA,EAAgB;AAC1G,MAAA,IAAI,EAAE,UAAA,IAAc,gBAAA,CAAA;AAAmB,QAAA;AACvC,MAAA,MAAM,SAAA,GAAiC;AAAA,QACrC,UAAU,gBAAA,CAAiB,QAAA;AAAA,QAC3B,KAAA,EAAO,CAAA,EAAG,gBAAA,CAAiB,KAAK,CAAA,CAAA;AAAA,QAChC,KAAA,EAAO,CAAA,EAAG,gBAAA,CAAiB,KAAK,CAAA,CAAA;AAAA,QAChC,MAAM,gBAAA,CAAiB;AAAA,OACzB;AACA,MAAA,IAAI,SAAA,IAAa,gBAAA,IAAoB,gBAAA,CAAiB,OAAA,EAAS;AAC7D,QAAA,SAAA,CAAU,UAAU,gBAAA,CAAiB,OAAA;AAAA,MACvC;AACA,MAAA,MAAM,iBAAA,GAAoB,iCACrB,cAAA,CAAA,EADqB;AAAA,QAExB,OAAO,aAAA,IAAA,IAAA,GAAA,aAAA,GAAiB,+BAAA;AAAA,QACxB;AAAA,OACF,CAAA;AACA,MAAA,iBAAA,CAAkB,iBAAiB,CAAA;AAAA,IACrC;AAAA,EACF,CAAA;AAEA,EAAA,uBACEA,cAAA,CAAA,aAAA,CAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,CAAA,EAAA,+CAC7B,gBAAA,EAAA,EAAiB,OAAA,EAAS,SAAA,GAAY,OAAA,GAAU,OAAA,EAAA,kBAC/CA,cAAA,CAAA,aAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAY,OAAO,cAAA,CAAe,QAAA,CAAS,KAAA,EAAO,UAAA,EAAY,EAAE,GAAA,EAAK,EAAE,KAAA,EAAO,eAAc,EAAE,EAAG,CAAA,kBAClHA,cAAA,CAAA,aAAA,CAAC,IAAA,EAAA,IAAA,EACE,EAAA,CAAC,EAAA,GAAA,cAAA,CAAe,SAAA,KAAf,mBAA0B,KAAA,CAAA,oBAC1BA,cAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,oBAAA;AAAA,MACN,eAAe,cAAA,CAAe,KAAA;AAAA,MAC9B,QAAA;AAAA,MACA,oBAAA,EAAsB,EAAE,KAAA,EAAO,OAAA;AAAQ,KAAA;AAAA,oBAEvCA,cAAA,CAAA,aAAA,CAAC,qBAAkB,GAAA,EAAK,EAAE,sBAAsB,KAAA,EAAO,uBAAA,EAAyB,OAAM,EAAA,kBACpFA,cAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,cAAA,CAAA;AAAA,UACH,KAAA,EAAO,aAAA;AAAA,UACP,OAAA,EAAS;AAAA,SAAA,EACL,SAAA,IAAa;AAAA,UACf,KAAA,EAAO,cAAA;AAAA,UACP,UAAA,EAAY;AAAA,SACd;AAAA,OAAA;AAAA,MAEH;AAAA,KAGH;AAAA,GACF,EAAA,CAAA,CAED,EAAA,GAAA,cAAA,CAAe,SAAA,KAAf,IAAA,GAAA,MAAA,GAAA,EAAA,CAA0B,KAAA,qBACzBA,cAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,oBAAA;AAAA,MACN,eAAe,cAAA,CAAe,KAAA;AAAA,MAC9B,QAAA;AAAA,MACA,oBAAA,EAAsB,EAAE,KAAA,EAAO,OAAA;AAAQ,KAAA;AAAA,oBAEvCA,cAAA,CAAA,aAAA,CAAC,qBAAkB,GAAA,EAAK,cAAA,CAAA,EAAA,EAAA,CAAA,CAClB,oBAAe,SAAA,KAAf,IAAA,GAAA,MAAA,GAAA,EAAA,CAA0B,cAAa,UAAA,IAAc;AAAA,MACvD,oBAAA,EAAsB,KAAA;AAAA,MACtB,uBAAA,EAAyB;AAAA,KAC3B,CAAA,EAAA,kBAEAA,cAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAK,EAAE,KAAA,EAAO,aAAA,EAAe,OAAA,EAAS,eAAA,EAAgB,EAAA,EAAA,CAAI,EAAA,GAAA,cAAA,CAAe,SAAA,KAAf,IAAA,GAAA,MAAA,GAAA,EAAA,CAA0B,KAAM,CAClG;AAAA,GACF,EAAA,CAAA,CAED,oBAAe,SAAA,KAAf,IAAA,GAAA,MAAA,GAAA,EAAA,CAA0B,YAAS,EAAA,GAAA,cAAA,CAAe,SAAA,KAAf,IAAA,GAAA,MAAA,GAAA,EAAA,CAA0B,QAAA,MAAa,UAAA,oBACzEA,cAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,oBAAA;AAAA,MACN,eAAe,cAAA,CAAe,KAAA;AAAA,MAC9B,OAAO,cAAA,CAAe,SAAA;AAAA,MACtB,QAAA;AAAA,MACA,oBAAA,EAAsB,EAAE,KAAA,EAAO,OAAA;AAAQ,KAAA;AAAA,oBAEvCA,cAAA,CAAA,aAAA,CAAC,qBAAkB,GAAA,EAAK,EAAE,sBAAsB,KAAA,EAAO,uBAAA,EAAyB,OAAM,EAAA,kBACpFA,cAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,cAAA,CAAA;AAAA,UACH,KAAA,EAAO,aAAA;AAAA,UACP,OAAA,EAAS;AAAA,SAAA,EACL,SAAA,IAAa;AAAA,UACf,KAAA,EAAO;AAAA,SACT,CAAA;AAAA,QAEF,MAAA,EAAO;AAAA,OAAA;AAAA,MAAA,CAEN,EAAA,GAAA,eAAA,CAAgB,cAAc,CAAA,KAA9B,IAAA,GAAA,EAAA,GAAmC;AAAA,KAExC;AAAA,GAGN,mBACAA,cAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAQ,SAAQ,QAAA,EAAA,kBACfA,cAAA,CAAA,aAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAW,eAAA,CAAgB,2BAA2B,GAAG,OAAA,EAAS,MAAM,QAAA,EAAS,EAAA,kBAClGA,cAAA,CAAA,aAAA,CAAC,mBAAA,EAAA,EAAoB,MAAM,EAAA,EAAI,CACjC,CACF,CACF,CACF,CAAA;AAEJ;AAEA,MAAM,kBAAkB,CAAC;AAAA,EACvB,IAAA;AAAA,EAAM,KAAA;AAAA,EAAO,GAAA;AAAA,EAAK,UAAA;AAAA,EAAY;AAChC,CAAA,KAA2G;AACzG,EAAA,uBACEA,cAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAK,UAAA,EAAW,QAAA,EAAS,GAAA,EAAI,IAAA,EAAK,GAAA,EAAK,cAAA,CAAA,EAAE,OAAA,EAAS,eAAA,EAAA,EAAoB,GAAA,CAAA,EAAA,EACpE,IAAA,oBACCA,cAAA,CAAA,aAAA;AAAA,IAAC,GAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACK,SAAA,CAAA,EADL;AAAA,MAEC,GAAA,EAAK,cAAA,CAAA;AAAA,QACH,UAAA,EAAY,CAAA;AAAA,QACZ,UAAA,EAAY,CAAA;AAAA,QACZ,KAAA,EAAO,aAAA;AAAA,QACP,UAAA,EAAY;AAAA,UACV,QAAA,EAAU,IAAA;AAAA,UACV,SAAA,EAAW,IAAA;AAAA,UACX,MAAA,EAAQ,IAAA;AAAA,UACR,KAAA,EAAO;AAAA;AACT,OAAA,EACG,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,GAAA;AAAA,KAAA,CAAA;AAAA,IAGf;AAAA,GACH,kBAEFA,cAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,MAAA,EAAO,QAAA;AAAA,MACP,QAAA,EAAQ;AAAA,KAAA,EACJ,UAAA,CAAA,EAHL;AAAA,MAIC,KAAK,cAAA,CAAA,EAAE,KAAA,EAAO,aAAA,EAAe,QAAA,EAAU,SAAU,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,GAAA;AAAA,KAAA,CAAA;AAAA,IAE5D;AAAA,GAEL,CAAA;AAEJ,CAAA;AAWO,MAAM,4BAA4B,CAAC;AAAA,EACxC,IAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,KAAsC;AAxOtC,EAAA,IAAA,EAAA;AAyOE,EAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAAsF;AACtG,IAAA,MAAM,iBAAA,GAAoB,iCACrB,cAAA,CAAA,EADqB;AAAA,MAExB,KAAA,EAAO,aAAA,CAAA,cAAA,CAAA,EAAA,EACF,cAAA,CAAe,KAAA,CAAA,EADb;AAAA,QAEL,CAAC,IAAA,CAAK,QAAQ,GAAG;AAAA,OACnB,CAAA;AAAA,MACA,SAAA,EAAW;AAAA,QACT,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,KAAA,EAAO,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,QACpB,KAAA,EAAO,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,QACpB,MAAM,IAAA,CAAK;AAAA;AACb,KACF,CAAA;AACA,IAAA,iBAAA,CAAkB,iBAAiB,CAAA;AAAA,EACrC,CAAA;AAEA,EAAA,uBACEA,cAAA,CAAA,aAAA,CAAC,eAAA,EAAA,EAAgB,aAAA,EAAe,CAAA,EAAA,+CAC7B,gBAAA,EAAA,EAAiB,OAAA,EAAS,SAAA,GAAY,OAAA,GAAU,OAAA,EAAA,kBAC/CA,cAAA,CAAA,aAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAY,OAAO,CAAA,EAAG,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA,CAAA,CAAA,EAAK,CAAA,EACxE,IAAA,CAAK,QAAA,KAAa,6BACjBA,cAAA,CAAA,aAAA,CAAC,IAAA,EAAA,IAAA,kBACCA,cAAA,CAAA,aAAA,CAAC,iBAAA,EAAA,EAAkB,KAAK,EAAE,oBAAA,EAAsB,KAAA,EAAO,uBAAA,EAAyB,OAAM,EAAA,kBACpFA,cAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK;AAAA,QACH,KAAA,EAAO,aAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACX;AAAA,MACA,MAAA,EAAO;AAAA,KAAA;AAAA,IAEN,IAAA,CAAK;AAAA,GAEV,CACF,CAAA,mBAEAA,cAAA,CAAA,aAAA,CAAC,uBAAA,EAAA,EAAwB,aAAA,EAAe,cAAA,CAAe,KAAA,EAAO,QAAA,EAAU,IAAA,CAAK,QAAA,EAAU,OAAA,EAAS,IAAA,CAAK,SAAS,OAAA,EAAS,QAAA,EAAA,kBACrHA,cAAA,CAAA,aAAA,CAAC,IAAA,EAAA,IAAA,kBACCA,cAAA,CAAA,aAAA,CAAC,iBAAA,EAAA,EAAkB,GAAA,EAAK,EAAE,oBAAA,EAAsB,KAAA,EAAO,uBAAA,EAAyB,KAAA,EAAM,EAAA,kBACpFA,cAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,cAAA,CAAA;AAAA,QACH,KAAA,EAAO,aAAA;AAAA,QACP,OAAA,EAAS;AAAA,OAAA,EACL,SAAA,IAAa;AAAA,QACf,KAAA,EAAO;AAAA,OACT,CAAA;AAAA,MAEF,MAAA,EAAO;AAAA,KAAA;AAAA,IAAA,CAEN,EAAA,GAAA,eAAA,CAAgB,cAAc,CAAA,KAA9B,IAAA,GAAA,EAAA,GAAmC;AAAA,GAExC,CACF,CACF,CAAA,kBAEFA,cAAA,CAAA,aAAA,CAAC,WAAQ,OAAA,EAAQ,QAAA,EAAA,kBACfA,cAAA,CAAA,aAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAW,eAAA,CAAgB,2BAA2B,CAAA,EAAG,OAAA,EAAS,MAAM,QAAA,EAAS,EAAA,kBAClGA,cAAA,CAAA,aAAA,CAAC,mBAAA,EAAA,EAAoB,IAAA,EAAM,EAAA,EAAI,CACjC,CACF,CACF,CACF,CAAA;AAEJ;AAEA,MAAM,gBAAA,GAAmB,OAAO,IAAA,EAAM;AAAA,EACpC,MAAA,EAAQ,IAAA;AAAA,EACR,UAAA,EAAY,QAAA;AAAA,EACZ,WAAA,EAAa,KAAA;AAAA,EACb,WAAA,EAAa,OAAA;AAAA,EACb,WAAA,EAAa,WAAA;AAAA,EACb,YAAA,EAAc,KAAA;AAAA,EACd,UAAA,EAAY,oBAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,aAAA;AAAA,EACP,QAAA,EAAU,UAAA;AAAA,EACV,UAAA,EAAY,CAAA;AAAA,EACZ,SAAA,EAAW;AAAA,IACT,WAAA,EAAa;AAAA,GACf;AAAA,EACA,CAAC,CAAA,SAAA,EAAY,eAAA,CAAgB,2BAA2B,CAAC,EAAE,GAAG;AAAA,IAC5D,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,GAAA;AAAA,QACT,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,OAAA,EAAS;AAAA,MACP,OAAA,EAAS;AAAA,QACP,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,KAAA,EAAO;AAAA,QACL,sBAAA,EAAwB,CAAC,cAAA,EAAgB,IAAI,CAAA;AAAA,QAC7C,WAAA,EAAa,QAAA;AAAA,QACb,WAAA,EAAa,cAAA;AAAA,QACb,SAAA,EAAW;AAAA,UACT,WAAA,EAAa;AAAA;AACf;AACF;AACF,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;AAED,MAAM,iBAAA,GAAoB,OAAO,QAAA,EAAU;AAAA,EACzC,eAAA,EAAiB,aAAA;AAAA,EACjB,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,UAAA,EAAY,oBAAA;AAAA,EACZ,YAAA,EAAc,KAAA;AAAA,EACd,YAAA,EAAc,OAAA;AAAA,EACd,YAAA,EAAc,aAAA;AAAA,EACd,UAAA,EAAY,CAAA;AAAA,EACZ,mBAAA,EAAqB;AAAA,IACnB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;AAED,MAAM,iBAAA,GAAoB,OAAO,QAAA,EAAU;AAAA,EACzC,eAAA,EAAiB,aAAA;AAAA,EACjB,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS,MAAA;AAAA,EACT,KAAA,EAAO,aAAA;AAAA,EACP,UAAA,EAAY,oBAAA;AAAA,EACZ,UAAA,EAAY,CAAA;AAAA,EACZ,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO,CAAA;AAAA,EACP,GAAA,EAAK,CAAA;AAAA,EACL,SAAA,EAAW,sBAAA;AAAA,EACX,OAAA,EAAS,CAAA;AAAA,EACT,UAAA,EAAY,yEAAA;AAAA,EACZ,6CAAA,EAA+C;AAAA,IAC7C,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,YAAA,EAAc,KAAA;AAAA,IACd,YAAA,EAAc,OAAA;AAAA,IACd,YAAA,EAAc,WAAA;AAAA,IACd,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO;AAAA,GACT;AAAA,EACA,iEAAA,EAAmE;AAAA,IACjE,YAAA,EAAc;AAAA;AAElB,CAAC,CAAA;;;;"}
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparrowengg/integrations-templates-frontend",
3
- "version": "7.0.0-bulkify.2",
3
+ "version": "7.0.0-bulkify.3",
4
4
  "license": "MIT",
5
5
  "module": "dist/es/index.js",
6
6
  "main": "dist/cjs/index.js",