{"version":3,"file":"tree-select.mjs","sources":["../../src/tree-select/tree-select.tsx"],"sourcesContent":["import { defineComponent, ref, computed, watch, onMounted, toRefs } from 'vue';\nimport isArray from 'lodash/isArray';\nimport isEmpty from 'lodash/isEmpty';\nimport isBoolean from 'lodash/isBoolean';\nimport isFunction from 'lodash/isFunction';\nimport isNil from 'lodash/isNil';\n\nimport Tree, { TreeProps, TreeNodeModel, TreeNodeValue } from '../tree';\nimport SelectInput, { TdSelectInputProps } from '../select-input';\nimport { InputValue } from '../input';\nimport FakeArrow from '../common-components/fake-arrow';\nimport { PopupVisibleChangeContext } from '../popup';\n\nimport { INodeOptions } from './interface';\nimport { TreeSelectValue, TdTreeSelectProps, TreeSelectValueChangeTrigger } from './type';\nimport { TreeOptionData } from '../common';\nimport props from './props';\n\n// hooks\nimport { usePrefixClass, useConfig } from '../hooks/useConfig';\nimport { useFormDisabled } from '../form/hooks';\nimport { useTNodeJSX, useTNodeDefault } from '../hooks/tnode';\nimport useVModel from '../hooks/useVModel';\nimport useDefaultValue from '../hooks/useDefaultValue';\n\nexport default defineComponent({\n  name: 'XTreeSelect',\n  props,\n  setup(props: TdTreeSelectProps, { slots }) {\n    const renderTNodeJSX = useTNodeJSX();\n    const renderDefaultTNode = useTNodeDefault();\n    const classPrefix = usePrefixClass();\n    const { globalConfig } = useConfig('treeSelect');\n    const formDisabled = useFormDisabled();\n\n    // ref\n    const treeRef = ref(null);\n\n    // data\n    const filterByText = ref(null);\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    // watch\n    watch(treeSelectValue, async () => {\n      await changeNodeInfo();\n      if (!props.multiple) {\n        actived.value = nodeInfo.value ? [nodeInfo.value.value] : [];\n      }\n    });\n    watch(\n      () => props.data,\n      async () => {\n        await changeNodeInfo();\n        treeRerender();\n      },\n      {\n        deep: true,\n      },\n    );\n\n    // computed\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 '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 '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 'children';\n    });\n\n    // timelifes\n    onMounted(async () => {\n      if (!treeSelectValue.value && props.defaultValue) {\n        await 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    // methods\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((nodeValue) => getTreeNode(props.data, nodeValue));\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) {\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 = getTreeNode(props.data, 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: InputValue): boolean => {\n      // 未打开状态不处理输入框输入\n      if (!innerVisible.value) {\n        props.onSearch?.(String(value));\n        return;\n      }\n      setInnerInputValue(value);\n      if (!value) {\n        filterByText.value = null;\n        return null;\n      }\n      filterByText.value = (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      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 changeNodeInfo = async () => {\n      await treeSelectValue.value;\n\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      if (treeRef.value && (props.treeProps as TreeProps)?.load) {\n        if (!isEmpty(props.data)) {\n          const node = treeRef.value.getItem(nodeValue);\n          if (node) {\n            return { label: node.data[realLabel.value], value: node.data[realValue.value] };\n          }\n        }\n        return { label: nodeValue, value: nodeValue };\n      }\n      const node = getTreeNode(props.data, nodeValue);\n      if (!node) {\n        return { label: nodeValue, value: nodeValue };\n      }\n      return node;\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        if (treeRef.value && (props.treeProps as TreeProps)?.load) {\n          if (!isEmpty(props.data)) {\n            const node = treeRef.value.getItem(nodeValue);\n            if (node) {\n              return { label: node.data[realLabel.value], value: node.data[realValue.value] };\n            }\n          }\n          return { label: nodeValue, value: nodeValue };\n        }\n        const node = getTreeNode(props.data, nodeValue);\n        if (!node) {\n          return { label: nodeValue, value: nodeValue };\n        }\n        return node;\n      });\n    };\n    const getTreeNode = (data: Array<TreeOptionData>, targetValue: TreeSelectValue): TreeSelectValue | null => {\n      for (let i = 0, len = data.length; i < len; i++) {\n        if (data[i][realValue.value] === targetValue) {\n          return { label: data[i][realLabel.value], value: data[i][realValue.value] };\n        }\n        if (data[i]?.[realChildren.value]) {\n          const result = getTreeNode(data[i]?.[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\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    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={props.readonly}\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        suffixIcon={() => renderSuffixIcon()}\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          panel: () => (\n            <div\n              class={[\n                `${classPrefix.value}-select__dropdown-inner`,\n                `${classPrefix.value}-select__dropdown-inner--size-${dropdownInnerSize.value}`,\n              ]}\n            >\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            </div>\n          ),\n          collapsedItems: slots.collapsedItems,\n        }}\n        onInputChange={inputChange}\n        onTagChange={tagChange}\n        onPopupVisibleChange={(state: boolean, context: PopupVisibleChangeContext) => setInnerVisible(state, context)}\n        {...(props.selectInputProps as TdTreeSelectProps['selectInputProps'])}\n      />\n    );\n  },\n});\n"],"names":["name","props","setup","treeSelectValue","setTreeSelectValue","innerVisible","setInnerVisible","innerInputValue","setInnerInputValue","_regeneratorRuntime","_context","actived","watch","_context2","treeRerender","deep","small","medium","large","isArray","isEmpty","_context3","changeNodeInfo","node","trigger","change","current","filterByText","isFunction","isBoolean","value","data","e","_context4","nodeInfo","label","isNil","_withDirectives","_createVNode","_mergeProps","defaultNode","_vShow","maxWidth","params","onClose","index"],"mappings":"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"}