{"version":3,"file":"Column.cjs","sources":["../../../../../../../packages/vue-components/vc-cascader/src/OptionList/Column.tsx"],"sourcesContent":["import type { Key } from '@antdv/types';\nimport type { DefaultOptionType, SingleValueType } from '../Cascader';\nimport { cloneElement } from '@antdv/utils';\nimport { useInjectCascader } from '../context';\nimport { SEARCH_MARK } from '../hooks/useSearchOptions';\nimport { isLeaf, toPathKey } from '../utils/commonUtil';\nimport Checkbox from './Checkbox';\n\nexport const FIX_LABEL = '__cascader_fix_label__';\nexport interface ColumnProps {\n  prefixCls: string;\n  multiple?: boolean;\n  options: DefaultOptionType[];\n  /** Current Column opened item key */\n  activeValue?: Key;\n  /** The value path before current column */\n  prevValuePath: Key[];\n  onToggleOpen: (open: boolean) => void;\n  onSelect: (valuePath: SingleValueType, leaf: boolean) => void;\n  onActive: (valuePath: SingleValueType) => void;\n  checkedSet: Set<Key>;\n  halfCheckedSet: Set<Key>;\n  loadingKeys: Key[];\n  isSelectable: (option: DefaultOptionType) => boolean;\n}\n\nexport default function Column({\n  prefixCls,\n  multiple,\n  options,\n  activeValue,\n  prevValuePath,\n  onToggleOpen,\n  onSelect,\n  onActive,\n  checkedSet,\n  halfCheckedSet,\n  loadingKeys,\n  isSelectable,\n}: ColumnProps) {\n  const menuPrefixCls = `${prefixCls}-menu`;\n  const menuItemPrefixCls = `${prefixCls}-menu-item`;\n\n  const {\n    fieldNames,\n    changeOnSelect,\n    expandTrigger,\n    expandIcon: expandIconRef,\n    loadingIcon: loadingIconRef,\n    dropdownMenuColumnStyle,\n    customSlots,\n  } = useInjectCascader();\n  const expandIcon = expandIconRef.value ?? customSlots.value.expandIcon?.();\n  const loadingIcon = loadingIconRef.value ?? customSlots.value.loadingIcon?.();\n\n  const hoverOpen = expandTrigger.value === 'hover';\n  // ============================ Render ============================\n  return (\n    <ul class={menuPrefixCls} role=\"menu\">\n      {options.map((option) => {\n        const { disabled } = option;\n        const searchOptions = option[SEARCH_MARK];\n        const label = option[FIX_LABEL] ?? option[fieldNames.value.label];\n        const value = option[fieldNames.value.value];\n\n        const isMergedLeaf = isLeaf(option, fieldNames.value);\n\n        // Get real value of option. Search option is different way.\n        const fullPath = searchOptions\n          ? searchOptions.map(opt => opt[fieldNames.value.value])\n          : [...prevValuePath, value];\n        const fullPathKey = toPathKey(fullPath);\n\n        const isLoading = loadingKeys.includes(fullPathKey);\n\n        // >>>>> checked\n        const checked = checkedSet.has(fullPathKey);\n\n        // >>>>> halfChecked\n        const halfChecked = halfCheckedSet.has(fullPathKey);\n        // >>>>> Open\n        const triggerOpenPath = () => {\n          if (!disabled && (!hoverOpen || !isMergedLeaf))\n            onActive(fullPath);\n        };\n\n        // >>>>> Selection\n        const triggerSelect = () => {\n          if (isSelectable(option))\n            onSelect(fullPath, isMergedLeaf);\n        };\n\n        // >>>>> Title\n        let title: string;\n        if (typeof option.title === 'string')\n          title = option.title;\n        else if (typeof label === 'string')\n          title = label;\n\n        // >>>>> Render\n        return (\n          <li\n            key={fullPathKey}\n            class={[\n              menuItemPrefixCls,\n              {\n                [`${menuItemPrefixCls}-expand`]: !isMergedLeaf,\n                [`${menuItemPrefixCls}-active`]: activeValue === value,\n                [`${menuItemPrefixCls}-disabled`]: disabled,\n                [`${menuItemPrefixCls}-loading`]: isLoading,\n              },\n            ]}\n            style={dropdownMenuColumnStyle.value}\n            role=\"menuitemcheckbox\"\n            title={title}\n            aria-checked={checked}\n            data-path-key={fullPathKey}\n            onClick={() => {\n              triggerOpenPath();\n              if (!multiple || isMergedLeaf)\n                triggerSelect();\n            }}\n            onDblclick={() => {\n              if (changeOnSelect.value)\n                onToggleOpen(false);\n            }}\n            onMouseenter={() => {\n              if (hoverOpen)\n                triggerOpenPath();\n            }}\n            onMousedown={(e) => {\n              // Prevent selector from blurring\n              e.preventDefault();\n            }}\n          >\n            {multiple && (\n              <Checkbox\n                prefixCls={`${prefixCls}-checkbox`}\n                checked={checked}\n                halfChecked={halfChecked}\n                disabled={disabled}\n                onClick={(e: MouseEvent) => {\n                  e.stopPropagation();\n                  triggerSelect();\n                }}\n              />\n            )}\n            <div class={`${menuItemPrefixCls}-content`}>{label}</div>\n            {!isLoading && expandIcon && !isMergedLeaf && (\n              <div class={`${menuItemPrefixCls}-expand-icon`}>{cloneElement(expandIcon)}</div>\n            )}\n            {isLoading && loadingIcon && (\n              <div class={`${menuItemPrefixCls}-loading-icon`}>{cloneElement(loadingIcon)}</div>\n            )}\n          </li>\n        );\n      })}\n    </ul>\n  );\n}\nColumn.props = [\n  'prefixCls',\n  'multiple',\n  'options',\n  'activeValue',\n  'prevValuePath',\n  'onToggleOpen',\n  'onSelect',\n  'onActive',\n  'checkedSet',\n  'halfCheckedSet',\n  'loadingKeys',\n  'isSelectable',\n];\nColumn.displayName = 'Column';\nColumn.inheritAttrs = false;\n"],"names":["FIX_LABEL","Column","prefixCls","multiple","options","activeValue","prevValuePath","onToggleOpen","onSelect","onActive","checkedSet","halfCheckedSet","loadingKeys","isSelectable","menuPrefixCls","menuItemPrefixCls","fieldNames","changeOnSelect","expandTrigger","expandIcon","expandIconRef","loadingIcon","loadingIconRef","dropdownMenuColumnStyle","customSlots","useInjectCascader","value","hoverOpen","_createVNode","map","option","disabled","searchOptions","SEARCH_MARK","label","isMergedLeaf","isLeaf","fullPath","opt","fullPathKey","toPathKey","isLoading","includes","checked","has","halfChecked","triggerOpenPath","triggerSelect","title","onClick","onDblclick","onMouseenter","e","preventDefault","Checkbox","stopPropagation","cloneElement","props","displayName","inheritAttrs"],"mappings":"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"}