UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 11.6 kB
{"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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"}