UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

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