tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 42.2 kB
Source Map (JSON)
{"version":3,"file":"tree-select.mjs","sources":["../../../common/js/tree-select/utils.ts","../../../components/tree-select/tree-select.tsx"],"sourcesContent":["import { TreeOptionData } from '../common';\n\ntype TargetValue = string | number | object;\n\n/**\n * 递归查找指定节点的所有父节点的 value\n * @param options 树形数据\n * @param targetValue 目标节点的 value\n * @param realChildren 子节点的 key (别名)\n * @param realValue 节点的 value 的 key (别名)\n */\nexport function findParentValues(\n options: TreeOptionData[],\n targetValue: TargetValue,\n realValue: string,\n realChildren: string,\n): (TargetValue)[] {\n let currentTargetValue = targetValue;\n if (currentTargetValue != null && typeof currentTargetValue === 'object') {\n currentTargetValue = (currentTargetValue as { [key: string]: string | number })?.[realValue];\n }\n if (currentTargetValue == null) return [];\n\n function findPath(nodes: TreeOptionData[], parentPath: (TargetValue)[]): (TargetValue)[] | null {\n let result: (TargetValue)[] | null = null;\n nodes.some((node) => {\n const newPath = [...parentPath, node[realValue]];\n if (node[realValue] === currentTargetValue) {\n result = parentPath;\n return true;\n }\n if (Array.isArray(node[realChildren]) && node[realChildren].length) {\n result = findPath(node[realChildren], newPath);\n if (result !== null) {\n return true;\n }\n }\n return false;\n });\n return result;\n }\n\n return findPath(options, []) || [];\n}\n","import { defineComponent, ref, computed, watch, onMounted, toRefs } from 'vue';\nimport { isNil, isArray, isEmpty, isBoolean, isFunction } from 'lodash-es';\n\nimport { findParentValues } from '@tdesign/common-js/tree-select/utils';\n\nimport Tree, { TreeProps, TreeNodeModel, TreeNodeValue } from '../tree';\nimport SelectInput, { TdSelectInputProps } from '../select-input';\nimport FakeArrow from '../common-components/fake-arrow';\nimport { PopupVisibleChangeContext } from '../popup';\n\nimport { INodeOptions } from './types';\nimport { TreeSelectValue, TdTreeSelectProps, TreeSelectValueChangeTrigger } from './type';\nimport { TreeOptionData } from '../common';\nimport props from './props';\n\n// hooks\nimport {\n useConfig,\n useVModel,\n useDisabled,\n useReadonly,\n useTNodeJSX,\n usePrefixClass,\n useTNodeDefault,\n useDefaultValue,\n} from '@tdesign/shared-hooks';\n\nexport default defineComponent({\n name: 'TTreeSelect',\n props,\n setup(props: TdTreeSelectProps, { slots, expose }) {\n const renderTNodeJSX = useTNodeJSX();\n const renderDefaultTNode = useTNodeDefault();\n const classPrefix = usePrefixClass();\n const { globalConfig } = useConfig('treeSelect');\n const formDisabled = useDisabled();\n const isReadonly = useReadonly();\n\n // ref\n const treeRef = ref(null);\n\n // data\n const actived = ref([]);\n const expanded = ref([]);\n const nodeInfo = ref(null);\n const treeKey = ref(0);\n\n // model\n const { value, modelValue, popupVisible, inputValue } = toRefs(props);\n const [treeSelectValue, setTreeSelectValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n const [innerVisible, setInnerVisible] = useDefaultValue(\n popupVisible,\n false,\n props.onPopupVisibleChange,\n 'popupVisible',\n );\n const [innerInputValue, setInnerInputValue] = useDefaultValue(\n inputValue,\n props.defaultInputValue,\n props.onInputChange,\n 'inputValue',\n );\n\n /**\n * 设置树的所有父节点展开\n */\n const setTreeParentsExpanded = () => {\n const getParents = (value: TreeSelectValue) =>\n findParentValues(props.data, value, realValue.value, realChildren.value);\n\n let treeParents: TreeSelectValue[] = [];\n if (treeSelectValue.value) {\n if (Array.isArray(treeSelectValue.value) && props.multiple) {\n treeParents = treeSelectValue.value.flatMap(getParents);\n } else if (!Array.isArray(treeSelectValue.value) && !props.multiple) {\n treeParents = getParents(treeSelectValue.value);\n }\n }\n expanded.value = Array.from(new Set([...expanded.value, ...treeParents]));\n };\n\n // watch\n watch(treeSelectValue, async () => {\n await changeNodeInfo();\n if (!props.multiple) {\n actived.value = nodeInfo.value ? [nodeInfo.value.value] : [];\n }\n setTreeParentsExpanded();\n });\n watch(\n () => props.data,\n async () => {\n await changeNodeInfo();\n treeRerender();\n },\n {\n deep: true,\n },\n );\n\n // computed\n /** filterByText keep pace with innerInputValue */\n const filterByText = computed(() => {\n const value = innerInputValue.value || '';\n if (value === '') {\n return null;\n }\n return (node: TreeNodeModel<TreeOptionData>) => {\n if (isFunction(props.filter)) {\n const filter: boolean | Promise<boolean> = props.filter(String(value), node);\n if (isBoolean(filter)) {\n return filter;\n }\n }\n return node.data[realLabel.value].indexOf(value) >= 0;\n };\n });\n const tDisabled = computed(() => {\n return formDisabled.value || props.disabled;\n });\n\n const inputPlaceholder = computed(\n () => (innerVisible.value && nodeInfo.value?.label) || props.placeholder || globalConfig.value.placeholder,\n );\n\n const popupClass = computed(() => {\n return [`${classPrefix.value}-select__dropdown`, 'narrow-scrollbar'];\n });\n\n const dropdownInnerSize = computed(() => {\n return {\n small: 's',\n medium: 'm',\n large: 'l',\n }[props.size];\n });\n\n const isObjectValue = computed(() => props.valueType === 'object');\n\n const checked = computed((): Array<TreeNodeValue> => {\n if (props.multiple) {\n if (isObjectValue.value) {\n return isArray(treeSelectValue.value)\n ? (treeSelectValue.value as Array<TreeSelectValue>).map((item) => (item as INodeOptions).value)\n : [];\n }\n return isArray(treeSelectValue.value)\n ? (treeSelectValue.value as Array<TreeSelectValue>).map((item) => item as TreeNodeValue)\n : [];\n }\n return [];\n });\n\n const multiLimitDisabled = computed(() => {\n return (\n props.multiple &&\n !!props.max &&\n isArray(treeSelectValue.value) &&\n props.max <= (treeSelectValue.value as Array<TreeSelectValue>).length\n );\n });\n\n const realLabel = computed(() => {\n if (!isEmpty(props.treeProps) && !isEmpty((props.treeProps as TreeProps).keys)) {\n return (props.treeProps as TreeProps).keys.label || 'label';\n }\n return props.keys?.label || 'label';\n });\n\n const realValue = computed(() => {\n if (!isEmpty(props.treeProps) && !isEmpty((props.treeProps as TreeProps).keys)) {\n return (props.treeProps as TreeProps).keys.value || 'value';\n }\n return props.keys?.value || 'value';\n });\n\n const realChildren = computed(() => {\n if (!isEmpty(props.treeProps) && !isEmpty((props.treeProps as TreeProps).keys)) {\n return (props.treeProps as TreeProps).keys.children || 'children';\n }\n return props.keys?.children || 'children';\n });\n\n onMounted(async () => {\n setTreeParentsExpanded();\n if (!treeSelectValue.value && props.defaultValue) {\n change(props.defaultValue, null, 'uncheck');\n }\n if (isObjectValue.value) {\n actived.value = isArray(treeSelectValue.value)\n ? (treeSelectValue.value as Array<TreeSelectValue>).map((item) => (item as INodeOptions)?.value)\n : [(treeSelectValue.value as INodeOptions)?.value];\n } else {\n (actived.value as TreeSelectValue) = isArray(treeSelectValue.value)\n ? treeSelectValue.value\n : [treeSelectValue.value];\n }\n changeNodeInfo();\n });\n\n const change = (\n valueParam: TreeSelectValue,\n node: TreeNodeModel<TreeOptionData>,\n trigger: TreeSelectValueChangeTrigger,\n ) => {\n setTreeSelectValue(valueParam, { node, trigger });\n changeNodeInfo();\n };\n\n const clear = (content: { e: MouseEvent }) => {\n const defaultValue: TreeSelectValue = props.multiple ? [] : '';\n actived.value = [];\n change(defaultValue, null, 'clear');\n props.onClear?.({ e: content.e });\n };\n\n const treeNodeChange = (\n valueParam: Array<TreeNodeValue>,\n context: { node: TreeNodeModel<TreeOptionData>; e?: MouseEvent },\n ) => {\n let current: TreeSelectValue = valueParam;\n if (isObjectValue.value) {\n current = valueParam.map(getNodeItem);\n }\n change(current, context.node, 'check');\n };\n\n const treeNodeActive = (\n valueParam: Array<TreeNodeValue>,\n context: { node: TreeNodeModel<TreeOptionData>; e?: MouseEvent },\n ) => {\n if (!props.multiple) {\n setInnerVisible(false, context);\n }\n // 多选模式屏蔽 Active 事件和取消选中状态改变\n if (props.multiple || !context.node.actived) {\n return;\n }\n // 单选模式重复选择不清空\n if (treeSelectValue.value === context.node.data[realValue.value]) {\n return;\n }\n let current: TreeSelectValue = valueParam;\n if (isObjectValue.value) {\n const nodeValue = isEmpty(valueParam) ? '' : valueParam[0];\n current = getNodeItem(nodeValue);\n } else {\n current = isEmpty(valueParam) ? '' : valueParam[0];\n }\n change(current, context.node, 'check');\n actived.value = valueParam;\n };\n\n const treeNodeExpand = (valueParam: Array<TreeNodeValue>) => {\n expanded.value = valueParam;\n };\n\n const treeNodeLoad = () => {\n changeNodeInfo();\n };\n\n const inputChange = (value: string): boolean => {\n // 未打开状态不处理输入框输入\n if (!innerVisible.value) {\n props.onSearch?.(String(value));\n return;\n }\n setInnerInputValue(value);\n props.onSearch?.(String(value));\n };\n\n const tagChange: TdSelectInputProps['onTagChange'] = (value, context) => {\n const { trigger, index } = context;\n if (['tag-remove', 'backspace'].includes(trigger)) {\n isArray(treeSelectValue.value) && (treeSelectValue.value as Array<TreeSelectValue>).splice(index, 1);\n }\n props.onRemove?.({ value, data: null, e: context && (context.e as MouseEvent) });\n change(treeSelectValue.value, null, trigger as 'tag-remove' | 'backspace');\n };\n\n const handlePopupVisibleChange = (visible: boolean, context: PopupVisibleChangeContext) => {\n setInnerVisible(visible, context);\n // 在通过点击选择器打开弹窗时 清空此前的输入内容 避免在关闭时就清空引起的闪烁问题\n if (visible && context.trigger === 'trigger-element-click') setInnerInputValue('');\n };\n const changeNodeInfo = async () => {\n if (!props.multiple) {\n if (treeSelectValue.value || treeSelectValue.value === 0) {\n nodeInfo.value = getSingleNodeInfo();\n } else {\n nodeInfo.value = '';\n }\n } else if (props.multiple) {\n if (isArray(treeSelectValue.value)) {\n nodeInfo.value = getMultipleNodeInfo();\n } else {\n nodeInfo.value = [];\n }\n } else {\n nodeInfo.value = null;\n }\n };\n\n const getSingleNodeInfo = () => {\n const nodeValue = isObjectValue.value ? (treeSelectValue.value as INodeOptions).value : treeSelectValue.value;\n return getNodeItem(nodeValue);\n };\n\n const getMultipleNodeInfo = () => {\n return (treeSelectValue.value as Array<TreeSelectValue>).map((value) => {\n const nodeValue = isObjectValue.value ? (value as INodeOptions).value : value;\n return getNodeItem(nodeValue);\n });\n };\n\n const getNodeItem = (targetValue: TreeSelectValue) => {\n if (treeRef.value) {\n const node = treeRef.value.getItem(targetValue);\n if (node) {\n return {\n ...node.data,\n label: node.data[realLabel.value],\n value: node.data[realValue.value],\n };\n }\n }\n const node = getTreeNode(props.data, targetValue);\n if (node) {\n return node;\n }\n return {\n label: targetValue,\n value: targetValue,\n };\n };\n\n const getTreeNode = (data: Array<TreeOptionData>, targetValue: TreeSelectValue): TreeSelectValue | null => {\n for (let i = 0, len = data.length; i < len; i++) {\n const item = data[i];\n if (item[realValue.value] === targetValue) {\n return {\n ...item,\n label: item[realLabel.value],\n value: item[realValue.value],\n };\n }\n if (item?.[realChildren.value]) {\n const result = getTreeNode(item?.[realChildren.value], targetValue);\n if (!isNil(result)) {\n return result;\n }\n }\n }\n return null;\n };\n\n const treeRerender = () => {\n treeKey.value += 1;\n };\n\n const renderTree = () => (\n <Tree\n ref={treeRef}\n v-show={!props.loading}\n key={treeKey.value}\n value={[...checked.value]}\n hover\n keys={props.keys}\n data={props.data}\n activable={!props.multiple}\n checkable={props.multiple}\n disabled={tDisabled.value || multiLimitDisabled.value}\n size={props.size}\n filter={filterByText.value}\n icon={!filterByText.value}\n actived={actived.value}\n expanded={expanded.value}\n activeMultiple={props.multiple}\n onChange={treeNodeChange}\n onActive={treeNodeActive}\n onExpand={treeNodeExpand}\n onLoad={treeNodeLoad}\n expandOnClickNode={false}\n v-slots={{\n empty: () =>\n renderDefaultTNode('empty', {\n defaultNode: <div class={`${classPrefix.value}-select__empty`}>{globalConfig.value.empty}</div>,\n }),\n }}\n {...(props.treeProps as TdTreeSelectProps['treeProps'])}\n />\n );\n\n const renderSuffixIcon = () => (\n <FakeArrow\n isActive={innerVisible.value}\n disabled={props.disabled}\n overlayClassName={{\n [`${classPrefix.value}-fake-arrow--highlight`]: innerVisible.value,\n [`${classPrefix.value}-fake-arrow--disable`]: props.disabled,\n }}\n />\n );\n\n expose({\n treeRef,\n });\n\n return () => (\n <SelectInput\n class={`${classPrefix.value}-tree-select`}\n value={nodeInfo.value}\n inputValue={innerVisible.value ? innerInputValue.value : ''}\n popupVisible={innerVisible.value}\n disabled={tDisabled.value}\n multiple={props.multiple}\n loading={props.loading}\n clearable={props.clearable}\n autoWidth={props.autoWidth}\n borderless={props.borderless}\n readonly={isReadonly.value}\n placeholder={inputPlaceholder.value}\n allowInput={props.filterable || isFunction(props.filter)}\n minCollapsedNum={props.minCollapsedNum}\n collapsed-items={props.collapsedItems}\n popupProps={{\n overlayClassName: popupClass.value,\n ...(props.popupProps as TdTreeSelectProps['popupProps']),\n }}\n inputProps={{\n size: props.size,\n ...(props.inputProps as TdTreeSelectProps['inputProps']),\n }}\n tagInputProps={{\n size: props.size,\n }}\n tagProps={{\n maxWidth: 300,\n ...(props.tagProps as TdTreeSelectProps['tagProps']),\n }}\n label={() => renderTNodeJSX('prefixIcon')}\n suffix={props.suffix}\n suffixIcon={() => {\n if (props.suffixIcon || slots.suffixIcon) {\n return renderTNodeJSX('suffixIcon');\n }\n\n return renderSuffixIcon();\n }}\n onClear={clear}\n onBlur={(_: any, context) => {\n props.onBlur?.({ value: treeSelectValue.value, e: context.e as FocusEvent });\n }}\n onFocus={(_: any, context: { e: FocusEvent }) => {\n props.onFocus?.({ value: treeSelectValue.value, e: context.e });\n }}\n valueDisplay={() =>\n renderTNodeJSX('valueDisplay', {\n params: props.multiple\n ? {\n value: nodeInfo.value,\n onClose: (index: number) => {\n const value = nodeInfo.value.map((node: TreeOptionData) => node.value);\n tagChange(value, {\n trigger: 'tag-remove',\n index,\n item: value[index],\n });\n },\n }\n : {\n value: nodeInfo.value || { [realLabel.value]: '', [realValue.value]: undefined },\n },\n })\n }\n v-slots={{\n suffix: slots.suffix,\n panel: () => (\n <div\n class={[\n `${classPrefix.value}-select__dropdown-inner`,\n `${classPrefix.value}-select__dropdown-inner--size-${dropdownInnerSize.value}`,\n ]}\n >\n {renderTNodeJSX('panelTopContent')}\n <p\n v-show={props.loading && !tDisabled.value}\n class={[`${classPrefix.value}-select-loading-tips`, `${classPrefix.value}-select__right-icon-polyfill`]}\n >\n {renderDefaultTNode('loadingText', {\n defaultNode: <div class={`${classPrefix.value}-select__empty`}>{globalConfig.value.loadingText}</div>,\n })}\n </p>\n {renderTree()}\n {renderTNodeJSX('panelBottomContent')}\n </div>\n ),\n collapsedItems: slots.collapsedItems,\n }}\n onInputChange={inputChange}\n onTagChange={tagChange}\n onPopupVisibleChange={handlePopupVisibleChange}\n {...(props.selectInputProps as TdTreeSelectProps['selectInputProps'])}\n />\n );\n },\n});\n"],"names":["findParentValues","options","targetValue","realValue","realChildren","currentTargetValue","_typeof","_currentTargetValue","findPath","nodes","parentPath","result","some","node","newPath","concat","_toConsumableArray","Array","isArray","length","defineComponent","name","props","setup","slots","_ref","expose","renderTNodeJSX","useTNodeJSX","renderDefaultTNode","useTNodeDefault","classPrefix","usePrefixClass","_useConfig","useConfig","globalConfig","formDisabled","useDisabled","isReadonly","useReadonly","treeRef","ref","actived","expanded","nodeInfo","treeKey","_toRefs","toRefs","value","modelValue","popupVisible","inputValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","treeSelectValue","setTreeSelectValue","_useDefaultValue","useDefaultValue","onPopupVisibleChange","_useDefaultValue2","innerVisible","setInnerVisible","_useDefaultValue3","defaultInputValue","onInputChange","_useDefaultValue4","innerInputValue","setInnerInputValue","setTreeParentsExpanded","getParents","data","treeParents","multiple","flatMap","from","Set","watch","_callee","_regeneratorRuntime","wrap","_context","prev","next","changeNodeInfo","stop","_asyncToGenerator","mark","_callee2","_context2","treeRerender","deep","filterByText","computed","isFunction","filter","String","isBoolean","realLabel","indexOf","tDisabled","disabled","inputPlaceholder","_nodeInfo$value","label","placeholder","popupClass","dropdownInnerSize","small","medium","large","size","isObjectValue","valueType","checked","map","item","multiLimitDisabled","max","_props2$keys","isEmpty","treeProps","keys","_props2$keys2","_props2$keys3","children","onMounted","_callee3","_treeSelectValue$valu","_context3","change","valueParam","trigger","clear","content","_props2$onClear","onClear","e","treeNodeChange","context","current","getNodeItem","treeNodeActive","nodeValue","treeNodeExpand","treeNodeLoad","inputChange","_props2$onSearch2","_props2$onSearch","onSearch","tagChange","_props2$onRemove","index","includes","splice","onRemove","handlePopupVisibleChange","visible","_callee4","_context4","getSingleNodeInfo","getMultipleNodeInfo","getItem","_objectSpread","getTreeNode","i","len","isNil","renderTree","_withDirectives","_createVNode","Tree","_mergeProps","empty","defaultNode","_vShow","loading","renderSuffixIcon","FakeArrow","_defineProperty","SelectInput","clearable","autoWidth","borderless","filterable","minCollapsedNum","collapsedItems","overlayClassName","popupProps","inputProps","maxWidth","tagProps","suffix","suffixIcon","onBlur","_","_props2$onBlur","onFocus","_props2$onFocus","valueDisplay","params","onClose","selectInputProps","panel","loadingText"],"mappings":"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"}