{"version":3,"file":"cascader.mjs","sources":["../../src/cascader/cascader.tsx"],"sourcesContent":["import { defineComponent, computed } from 'vue';\nimport omit from 'lodash/omit';\nimport Panel from './components/Panel';\nimport SelectInput from '../select-input';\nimport FakeArrow from '../common-components/fake-arrow';\nimport props from './props';\n\nimport { useCascaderContext } from './hooks';\nimport { CascaderValue, TdSelectInputProps, TdCascaderProps } from './interface';\nimport { useConfig, usePrefixClass, useCommonClassName } from '../hooks/useConfig';\n\nimport { closeIconClickEffect, handleRemoveTagEffect } from './core/effect';\nimport { getPanels, getSingleContent, getMultipleContent } from './core/helper';\nimport { getFakeArrowIconClass } from './core/className';\nimport { useFormDisabled } from '../form/hooks';\n\nexport default defineComponent({\n  name: 'XCascader',\n\n  props: { ...props },\n\n  setup(props, { slots }) {\n    const disabled = useFormDisabled();\n    const COMPONENT_NAME = usePrefixClass('cascader');\n    const classPrefix = usePrefixClass();\n    const { STATUS } = useCommonClassName();\n    const overlayClassName = usePrefixClass('cascader__popup');\n    const { globalConfig } = useConfig('cascader');\n\n    // 拿到全局状态的上下文\n    const { cascaderContext, isFilterable } = useCascaderContext(props);\n\n    const displayValue = computed(() =>\n      props.multiple ? getMultipleContent(cascaderContext.value) : getSingleContent(cascaderContext.value),\n    );\n\n    const panels = computed(() => getPanels(cascaderContext.value.treeNodes));\n\n    const inputPlaceholder = computed(\n      () =>\n        (cascaderContext.value.visible && !props.multiple && getSingleContent(cascaderContext.value)) ||\n        (props.placeholder ?? globalConfig.value.placeholder),\n    );\n\n    const renderSuffixIcon = () => {\n      const { visible, disabled } = cascaderContext.value;\n      return (\n        <FakeArrow\n          overlayClassName={getFakeArrowIconClass(classPrefix.value, STATUS.value, cascaderContext.value)}\n          isActive={visible}\n          disabled={disabled}\n        />\n      );\n    };\n\n    return () => {\n      const { setVisible, visible, inputVal, setInputVal } = cascaderContext.value;\n\n      return (\n        <SelectInput\n          class={COMPONENT_NAME.value}\n          value={displayValue.value}\n          inputValue={visible ? inputVal : ''}\n          popupVisible={visible}\n          keys={props.keys}\n          allowInput={isFilterable.value}\n          min-collapsed-num={props.minCollapsedNum}\n          collapsed-items={props.collapsedItems}\n          readonly={props.readonly}\n          disabled={props.disabled}\n          clearable={props.clearable}\n          placeholder={inputPlaceholder.value}\n          multiple={props.multiple}\n          loading={props.loading}\n          status={props.status}\n          tips={props.tips}\n          suffixIcon={() => renderSuffixIcon()}\n          popupProps={{\n            ...(props.popupProps as TdCascaderProps['popupProps']),\n            overlayInnerStyle: panels.value.length && !props.loading ? { width: 'auto' } : '',\n            overlayClassName: [\n              overlayClassName.value,\n              (props.popupProps as TdCascaderProps['popupProps'])?.overlayClassName,\n            ],\n          }}\n          inputProps={{ size: props.size, ...(props.inputProps as TdCascaderProps['inputProps']) }}\n          tagInputProps={{\n            size: props.size,\n            ...(props.tagInputProps as TdCascaderProps['tagInputProps']),\n          }}\n          tagProps={{ ...(props.tagProps as TdCascaderProps['tagProps']) }}\n          onInputChange={(value, ctx) => {\n            if (!isFilterable.value) return;\n            setInputVal(`${value}`);\n            (props?.selectInputProps as TdSelectInputProps)?.onInputChange?.(value, ctx);\n          }}\n          onTagChange={(val: CascaderValue, ctx) => {\n            // 按 enter 键不处理\n            if (ctx.trigger === 'enter') return;\n            handleRemoveTagEffect(cascaderContext.value, ctx.index, props.onRemove);\n            // @ts-ignore TODO: fix bug\n            (props?.selectInputProps as TdSelectInputProps)?.onTagChange?.(val, ctx);\n          }}\n          onPopupVisibleChange={(val: boolean, context) => {\n            if (disabled.value) return;\n            setVisible(val, context);\n            (props?.selectInputProps as TdSelectInputProps)?.onPopupVisibleChange?.(val, context);\n          }}\n          onBlur={(val, context) => {\n            props.onBlur?.({\n              value: cascaderContext.value.value,\n              inputValue: context.inputValue || '',\n              e: context.e as FocusEvent,\n            });\n            (props?.selectInputProps as TdSelectInputProps)?.onBlur?.(val, context);\n          }}\n          onFocus={(val, context) => {\n            props.onFocus?.({\n              value: cascaderContext.value.value,\n              e: context.e,\n            });\n            (props?.selectInputProps as TdSelectInputProps)?.onFocus?.(val, context);\n          }}\n          onClear={(context: { e: MouseEvent }) => {\n            closeIconClickEffect(cascaderContext.value);\n            (props?.selectInputProps as TdSelectInputProps)?.onClear?.(context);\n          }}\n          v-slots={{\n            panel: () => (\n              <Panel\n                option={props.option}\n                empty={props.empty}\n                visible={visible}\n                trigger={props.trigger}\n                loading={props.loading}\n                loadingText={props.loadingText}\n                cascaderContext={cascaderContext.value}\n                v-slots={{ option: slots.option, empty: slots.empty, loadingText: slots.loadingText }}\n              />\n            ),\n            collapsedItems: slots.collapsedItems,\n          }}\n          {...omit(props.selectInputProps as TdSelectInputProps, [\n            'onTagChange',\n            'onInputChange',\n            'onPopupVisibleChange',\n            'onBlur',\n            'onFocus',\n            'onClear',\n          ])}\n        />\n      );\n    };\n  },\n});\n"],"names":["name","props","setup","_createVNode","_mergeProps","width","overlayClassName","setInputVal","handleRemoveTagEffect","setVisible","value","inputValue","closeIconClickEffect"],"mappings":"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"}