tav-ui
Version:
1 lines • 29.5 kB
Source Map (JSON)
{"version":3,"file":"tree2.mjs","sources":["../../../../../../../packages/components/tree/src/tree.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n nextTick,\n onMounted,\n reactive,\n ref,\n shallowRef,\n toRaw,\n unref,\n watch,\n watchEffect,\n} from 'vue'\nimport { Empty, Tree } from 'ant-design-vue'\nimport { difference, get, omit } from 'lodash-es'\nimport { useContextMenu } from '@tav-ui/hooks/web/useContextMenu'\nimport { filter, treeToList } from '@tav-ui/utils/helper/treeHelper'\nimport { extendSlots, getSlot } from '@tav-ui/utils/helper/tsxHelper'\nimport { isArray, isBoolean, isEmpty, isFunction } from '@tav-ui/utils/is'\nimport ScrollContainer from '@tav-ui/components/container-scroll'\nimport { treeProps } from './props'\nimport TreeHeader from './TreeHeader.vue'\nimport { TreeIcon } from './TreeIcon'\nimport { useTree } from './useTree'\nimport type {\n CheckEvent,\n CheckKeys,\n ContextMenuItem,\n FieldNames,\n Keys,\n Recordable,\n TreeActionType,\n TreeItem,\n} from './types'\nimport type { CSSProperties } from 'vue'\n// import { CreateContextOptions } from \"@casta-fe-playground/components/ContextMenu\";\ntype contextMenuOptions = {\n event: any\n items?: ContextMenuItem[]\n}\ninterface State {\n expandedKeys: Keys\n selectedKeys: Keys\n checkedKeys: CheckKeys\n checkStrictly: boolean\n}\nexport default defineComponent({\n name: 'TaTree',\n inheritAttrs: false,\n props: treeProps,\n emits: [\n 'update:expandedKeys',\n 'update:selectedKeys',\n 'update:checkedKeys',\n 'change',\n 'check',\n 'update:searchValue',\n ],\n setup(props, { attrs, slots, emit, expose }) {\n const state = reactive<State>({\n checkStrictly: props.checkStrictly,\n expandedKeys: props.expandedKeys || [],\n selectedKeys: props.selectedKeys || [],\n checkedKeys: props.checkedKeys || [],\n })\n\n const searchState = reactive({\n startSearch: false,\n searchText: '',\n searchData: [] as TreeItem[],\n prevCheckedKeys: [] as string[],\n })\n\n const treeDataRef = ref<TreeItem[]>([])\n\n const [createContextMenu] = useContextMenu()\n const prefixCls = 'ta-basic-tree'\n\n const getFieldNames = computed((): Required<FieldNames> => {\n const { fieldNames } = props\n return {\n children: 'children',\n title: 'title',\n key: fieldNames?.id ? fieldNames?.id : fieldNames?.key ? fieldNames?.key : 'key',\n id: fieldNames?.id ?? 'id',\n pid: fieldNames?.pid ?? 'pid',\n ...omit(fieldNames, ['key', 'id', 'pid']),\n }\n })\n\n const getBindValues = computed(() => {\n const propsData = {\n blockNode: true,\n ...attrs,\n ...props,\n expandedKeys: state.expandedKeys,\n selectedKeys: state.selectedKeys,\n checkedKeys: state.checkedKeys,\n checkStrictly: state.checkStrictly,\n fieldNames: unref(getFieldNames),\n 'onUpdate:expandedKeys': (v: Keys) => {\n state.expandedKeys = v\n emit('update:expandedKeys', v)\n },\n 'onUpdate:selectedKeys': (v: Keys) => {\n state.selectedKeys = v\n emit('update:selectedKeys', v)\n },\n onCheck: (v: CheckKeys, e: CheckEvent) => {\n let currentValue = toRaw(state.checkedKeys) as Keys\n if (isArray(currentValue) && searchState.startSearch) {\n currentValue = [...currentValue, ...searchState.prevCheckedKeys]\n const { key: keyField } = unref(getFieldNames)\n const target = e.node.$attrs ? e.node.$attrs : e.node\n currentValue = difference(currentValue, getChildrenKeys(target[keyField]))\n if (e.checked && Array.isArray(currentValue)) {\n currentValue.push(target[keyField] as string)\n }\n state.checkedKeys = [...new Set([...currentValue])]\n } else {\n state.checkedKeys = v\n }\n\n const rawVal = toRaw(state.checkedKeys)\n emit('update:checkedKeys', rawVal)\n emit('check', rawVal, e)\n },\n onRightClick: handleRightClick,\n }\n return omit(propsData, 'treeData', 'class')\n })\n\n const getTreeData = computed((): TreeItem[] =>\n searchState.startSearch ? searchState.searchData : unref(treeDataRef)\n )\n\n const getNotFound = computed((): boolean => {\n return !getTreeData.value || getTreeData.value.length === 0\n })\n\n const {\n deleteNodeByKey,\n insertNodeByKey,\n insertNodesByKey,\n filterByLevel,\n updateNodeByKey,\n getAllKeys,\n getChildrenKeys,\n getEnabledKeys,\n } = useTree(treeDataRef, getFieldNames)\n\n function getIcon(params: Recordable, icon?: string) {\n if (!icon) {\n if (props.renderIcon && isFunction(props.renderIcon)) {\n return props.renderIcon(params)\n }\n }\n return icon\n }\n\n async function handleRightClick({ event, node }: Recordable) {\n const { rightMenuList, beforeRightClick } = props\n const contextMenuOptions: contextMenuOptions = { event, items: [] }\n\n if (beforeRightClick && isFunction(beforeRightClick)) {\n const result = await beforeRightClick(node, event)\n if (Array.isArray(result)) {\n contextMenuOptions.items = result\n } else {\n Object.assign(contextMenuOptions, result)\n }\n } else {\n contextMenuOptions['items'] = rightMenuList\n }\n if (!contextMenuOptions.items?.length) return\n createContextMenu(contextMenuOptions)\n }\n\n function setExpandedKeys(keys: Keys) {\n state.expandedKeys = keys\n }\n\n function getExpandedKeys() {\n return state.expandedKeys\n }\n function setSelectedKeys(keys: Keys) {\n state.selectedKeys = keys\n }\n\n function getSelectedKeys() {\n return state.selectedKeys\n }\n\n function setCheckedKeys(keys: CheckKeys) {\n state.checkedKeys = keys\n }\n\n function getCheckedKeys() {\n return state.checkedKeys\n }\n\n function checkAll(checkAll: boolean) {\n state.checkedKeys = checkAll ? getEnabledKeys() : ([] as Keys)\n }\n\n function expandAll(expandAll: boolean) {\n state.expandedKeys = expandAll ? getAllKeys() : ([] as Keys)\n }\n\n function onStrictlyChange(strictly: boolean) {\n state.checkStrictly = strictly\n }\n\n watch(\n () => props.searchValue,\n (val) => {\n if (val !== searchState.searchText) {\n searchState.searchText = val\n }\n },\n {\n immediate: true,\n }\n )\n\n watch(\n () => props.treeData,\n (val) => {\n if (val) {\n handleSearch(searchState.searchText)\n }\n }\n )\n\n const searchedKeys = shallowRef<string[]>([])\n async function handleSearch(searchValue: string) {\n if (searchValue !== searchState.searchText) searchState.searchText = searchValue\n emit('update:searchValue', searchValue)\n\n if (searchValue) {\n searchState.prevCheckedKeys = [...(state.checkedKeys as any)]\n const { filterFn /*checkable, expandOnSearch, checkOnSearch, selectedOnSearch*/ } =\n unref(props)\n searchState.startSearch = true\n await nextTick()\n const { title: titleField, key: keyField, pid: pidField } = unref(getFieldNames)\n const matchedKeys: string[] = []\n searchState.searchData = filter(\n unref(treeDataRef),\n (node) => {\n let result = false\n if (filterFn) {\n result = filterFn(searchValue, node, unref(getFieldNames))\n } else {\n result = node[titleField]?.includes(searchValue)\n }\n if (result) {\n matchedKeys.push(node[keyField])\n }\n return result\n },\n {\n id: keyField,\n pid: pidField,\n }\n )\n searchedKeys.value = treeToList(searchState.searchData).map((val: any) => {\n return val[keyField]\n })\n\n // if (expandOnSearch) {\n // const expandKeys = treeToList(searchState.searchData).map((val: any) => {\n // return val[keyField]\n // })\n // if (expandKeys && expandKeys.length) {\n // setExpandedKeys(expandKeys)\n // }\n // }\n\n // if (checkOnSearch && checkable && matchedKeys.length) {\n // setCheckedKeys(matchedKeys)\n // }\n\n // if (selectedOnSearch && matchedKeys.length) {\n // setSelectedKeys(matchedKeys)\n // }\n\n if (searchedKeys.value.length) {\n setExpandedKeys([...new Set([...state.expandedKeys, ...searchedKeys.value])])\n }\n } else {\n searchState.startSearch = false\n await nextTick()\n\n if (searchedKeys.value.length) {\n setExpandedKeys([...new Set([...state.expandedKeys, ...searchedKeys.value])])\n }\n searchedKeys.value = []\n searchState.prevCheckedKeys = []\n\n return\n }\n }\n\n function handleClickNode(key: string, children: TreeItem[]) {\n if (!props.clickRowToExpand || !children || children.length === 0) return\n if (!state.expandedKeys.includes(key)) {\n setExpandedKeys([...state.expandedKeys, key])\n } else {\n const keys = [...state.expandedKeys]\n const index = keys.findIndex((item) => item === key)\n if (index !== -1) {\n keys.splice(index, 1)\n }\n setExpandedKeys(keys)\n }\n }\n\n watchEffect(() => {\n treeDataRef.value = props.treeData as TreeItem[]\n })\n\n onMounted(() => {\n const level = parseInt(props.defaultExpandLevel.toString())\n if (level > 0) {\n state.expandedKeys = filterByLevel(level)\n } else if (props.defaultExpandAll) {\n expandAll(true)\n }\n })\n\n watchEffect(() => {\n state.expandedKeys = props.expandedKeys\n })\n\n watchEffect(() => {\n state.selectedKeys = props.selectedKeys\n })\n\n watchEffect(() => {\n state.checkedKeys = props.checkedKeys\n })\n\n watchEffect(() => {\n state.checkStrictly = props.checkStrictly\n })\n\n const instance: TreeActionType = {\n setExpandedKeys,\n getExpandedKeys,\n setSelectedKeys,\n getSelectedKeys,\n setCheckedKeys,\n getCheckedKeys,\n insertNodeByKey,\n insertNodesByKey,\n deleteNodeByKey,\n updateNodeByKey,\n checkAll,\n expandAll,\n filterByLevel: (level: number) => {\n state.expandedKeys = filterByLevel(level)\n },\n setSearchValue: (value: string) => {\n handleSearch(value)\n },\n getSearchValue: () => {\n return searchState.searchText\n },\n }\n\n expose(instance)\n\n function renderAction(node: TreeItem) {\n const { actionList } = props\n if (!actionList || actionList.length === 0) return\n return actionList.map((item, index) => {\n let nodeShow = true\n if (isFunction(item.show)) {\n nodeShow = item.show?.(node)\n } else if (isBoolean(item.show)) {\n nodeShow = item.show\n }\n\n if (!nodeShow) return null\n\n return (\n <span key={index} class={`${prefixCls}__action`}>\n {item.render(node)}\n </span>\n )\n })\n }\n\n function renderTreeNode({ data, level }: { data: TreeItem[] | undefined; level: number }) {\n return data && data.length > 0\n ? data.map((item) => {\n const { key: keyField, children: childrenField } = unref(getFieldNames)\n\n const propsData = omit(item, 'title')\n const children = get(item, childrenField) || []\n\n return (\n <Tree.TreeNode\n {...propsData}\n node={toRaw(item)}\n key={get(item, keyField)}\n class={`${\n !item[childrenField!] || item[childrenField!].length === 0\n ? 'level---1'\n : `level--${level}`\n }`}\n >\n {{\n default: () => renderTreeNode({ data: children, level: level + 1 }),\n }}\n </Tree.TreeNode>\n )\n })\n : []\n }\n\n function renderTreeNodeTitle({ data }: { data: TreeItem | undefined }) {\n if (!data) {\n return null\n }\n const searchText = searchState.searchText\n const { highlight } = unref(props)\n const { title: titleField, key: keyField, children: childrenField } = unref(getFieldNames)\n const icon = getIcon({ ...data }, data.icon)\n const title = get(data, titleField)\n\n const searchIdx = searchText ? title.indexOf(searchText) : -1\n const isHighlight =\n searchState.startSearch && !isEmpty(searchText) && highlight && searchIdx !== -1\n\n const titleDom = (\n <span class={`${prefixCls}-title__content ${prefixCls}-title__content--highlight`}>\n {isHighlight ? (\n <>\n <span>{title.substr(0, searchIdx)}</span>\n <span class=\"highlight-keyword\">{searchText}</span>\n <span>{title.substr(searchIdx + (searchText as string).length)}</span>\n </>\n ) : (\n title\n )}\n </span>\n )\n\n return (\n <span\n class={`${prefixCls}-title pl-2`}\n onClick={handleClickNode.bind(null, data[keyField], data[childrenField])}\n >\n {icon && TreeIcon({ icon })}\n {titleDom}\n {/*{get(data, titleField)}*/}\n <span class={`${prefixCls}-title__actions`}>{renderAction({ ...data })}</span>\n </span>\n )\n }\n\n return () => {\n const { title, helpMessage, toolbar, search, checkable } = props\n const showTitle = title || toolbar || search || slots.headerTitle\n const scrollStyle: CSSProperties = { height: 'calc(100% - 38px)' }\n return (\n <div\n class={[\n prefixCls,\n 'h-full',\n attrs.class,\n unref(getBindValues)?.inlineLayoutLevel !== undefined ? `inline-layout-level` : '',\n ]}\n >\n {showTitle && (\n <TreeHeader\n checkable={checkable}\n checkAll={checkAll}\n expandAll={expandAll}\n title={title}\n search={search}\n toolbar={toolbar}\n helpMessage={helpMessage}\n onStrictlyChange={onStrictlyChange}\n onSearch={handleSearch}\n searchText={searchState.searchText}\n >\n {extendSlots(slots)}\n </TreeHeader>\n )}\n <ScrollContainer style={scrollStyle} v-show={!unref(getNotFound)}>\n <Tree {...unref(getBindValues)} showIcon={false}>\n {{\n // switcherIcon: () => <DownOutlined />,\n default: () => renderTreeNode({ data: unref(getTreeData), level: 1 }),\n title: ({ data }: any) => {\n return slots?.title && typeof slots?.title === 'string'\n ? getSlot(slots, slots?.title, data)\n : renderTreeNodeTitle({ data })\n },\n ...extendSlots(slots, ['title']),\n }}\n </Tree>\n </ScrollContainer>\n\n <Empty v-show={unref(getNotFound)} image={Empty.PRESENTED_IMAGE_SIMPLE} class=\"!mt-4\" />\n </div>\n )\n }\n },\n})\n"],"names":["name","inheritAttrs","props","emits","attrs","emit","expose","state","reactive","checkStrictly","expandedKeys","selectedKeys","checkedKeys","searchState","startSearch","searchText","searchData","prevCheckedKeys","treeDataRef","createContextMenu","prefixCls","getFieldNames","fieldNames","children","title","key","id","pid","omit","blockNode","v","onCheck","isArray","currentValue","keyField","unref","difference","getChildrenKeys","checked","Array","rawVal","e","onRightClick","propsData","computed","deleteNodeByKey","filterByLevel","getEnabledKeys","icon","node","beforeRightClick","items","result","Object","contextMenuOptions","setExpandedKeys","keys","setSelectedKeys","setCheckedKeys","checkAll","expandAll","onStrictlyChange","strictly","watch","immediate","handleSearch","searchValue","filterFn","pidField","matchedKeys","searchedKeys","value","treeToList","clickRowToExpand","watchEffect","onMounted","level","_createVNode","Tree","_mergeProps","getSearchValue","renderAction","actionList","nodeShow","show","index","_Fragment","render","toRaw","data","highlight","titleField","ScrollContainer","childrenField","isHighlight","titleDom","searchIdx","length"],"mappings":"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"}