element-plus
Version:
A Component Library for Vue 3
1 lines • 22.7 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/cascader-panel/src/index.vue"],"sourcesContent":["<template>\n <div\n :class=\"[ns.b('panel'), ns.is('bordered', border)]\"\n @keydown=\"handleKeyDown\"\n >\n <el-cascader-menu\n v-for=\"(menu, index) in menus\"\n :key=\"index\"\n :ref=\"(item) => (menuList[index] = item as CascaderMenuInstance)\"\n :index=\"index\"\n :nodes=\"[...menu]\"\n >\n <template #empty>\n <slot name=\"empty\" />\n </template>\n </el-cascader-menu>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n nextTick,\n onBeforeUpdate,\n onMounted,\n provide,\n reactive,\n ref,\n useSlots,\n watch,\n} from 'vue'\nimport { cloneDeep, flattenDeep, isEqual } from 'lodash-unified'\nimport {\n castArray,\n focusNode,\n getEventCode,\n getSibling,\n isClient,\n isEmpty,\n scrollIntoView,\n unique,\n} from '@element-plus/utils'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport ElCascaderMenu from './menu.vue'\nimport Store from './store'\nimport Node from './node'\nimport {\n cascaderPanelEmits,\n cascaderPanelProps,\n useCascaderConfig,\n} from './config'\nimport { checkNode, getMenuIndex, sortByOriginalOrder } from './utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type {\n CascaderNode,\n CascaderNodeValue,\n CascaderOption,\n CascaderValue,\n ElCascaderPanelContext,\n} from './types'\nimport type { CascaderMenuInstance } from './instance'\n\ndefineOptions({\n name: 'ElCascaderPanel',\n})\n\nconst props = defineProps(cascaderPanelProps)\nconst emit = defineEmits(cascaderPanelEmits)\n\n// for interrupt sync check status in lazy mode\nlet manualChecked = false\n\nconst ns = useNamespace('cascader')\nconst config = useCascaderConfig(props)\nconst slots = useSlots()\n\nlet store: Store\nconst initialLoaded = ref(true)\nconst initialLoadedOnce = ref(false)\nconst menuList = ref<CascaderMenuInstance[]>([])\nconst checkedValue = ref<CascaderValue>()\nconst menus = ref<CascaderNode[][]>([])\nconst expandingNode = ref<CascaderNode>()\nconst checkedNodes = ref<CascaderNode[]>([])\n\nconst isHoverMenu = computed(() => config.value.expandTrigger === 'hover')\nconst renderLabelFn = computed(() => props.renderLabel || slots.default)\n\nconst initStore = () => {\n const { options } = props\n const cfg = config.value\n\n manualChecked = false\n store = new Store(options, cfg)\n menus.value = [store.getNodes()]\n\n if (cfg.lazy && isEmpty(props.options)) {\n initialLoaded.value = false\n lazyLoad(undefined, (list) => {\n if (list) {\n store = new Store(list, cfg)\n menus.value = [store.getNodes()]\n }\n initialLoaded.value = true\n syncCheckedValue(false, true)\n })\n } else {\n syncCheckedValue(false, true)\n }\n}\n\nconst lazyLoad: ElCascaderPanelContext['lazyLoad'] = (node, cb) => {\n const cfg = config.value\n node! = node || new Node({}, cfg, undefined, true)\n node.loading = true\n\n const resolve = (dataList?: CascaderOption[]) => {\n const _node = node as Node\n const parent = _node.root ? null : _node\n _node.loading = false\n _node.loaded = true\n _node.childrenData = _node.childrenData || []\n dataList && store?.appendNodes(dataList, parent as Node)\n dataList && cb?.(dataList)\n if (node.level === 0) {\n initialLoadedOnce.value = true\n }\n }\n\n const reject = () => {\n node!.loading = false\n node!.loaded = false\n if (node!.level === 0) {\n initialLoaded.value = true\n }\n }\n\n cfg.lazyLoad(node, resolve, reject)\n}\n\nconst expandNode: ElCascaderPanelContext['expandNode'] = (node, silent) => {\n const { level } = node\n const newMenus = menus.value.slice(0, level)\n let newExpandingNode: CascaderNode\n\n if (node.isLeaf) {\n newExpandingNode = node.pathNodes[level - 2]\n } else {\n newExpandingNode = node\n newMenus.push(node.children)\n }\n\n if (expandingNode.value?.uid !== newExpandingNode?.uid) {\n expandingNode.value = node\n menus.value = newMenus\n !silent && emit('expand-change', node?.pathValues || [])\n }\n}\n\nconst handleCheckChange: ElCascaderPanelContext['handleCheckChange'] = (\n node,\n checked,\n emitClose = true\n) => {\n const { checkStrictly, multiple } = config.value\n const oldNode = checkedNodes.value[0]\n manualChecked = true\n\n !multiple && oldNode?.doCheck(false)\n node.doCheck(checked)\n calculateCheckedValue()\n emitClose && !multiple && !checkStrictly && emit('close')\n !emitClose && !multiple && expandParentNode(node)\n}\n\nconst expandParentNode = (node: Node | undefined) => {\n if (!node) return\n node = node.parent\n expandParentNode(node)\n node && expandNode(node)\n}\n\nconst getFlattedNodes = (leafOnly: boolean) => store?.getFlattedNodes(leafOnly)\n\nconst getCheckedNodes = (leafOnly: boolean) => {\n return getFlattedNodes(leafOnly)?.filter(({ checked }) => checked !== false)\n}\n\nconst clearCheckedNodes = () => {\n checkedNodes.value.forEach((node) => node.doCheck(false))\n calculateCheckedValue()\n menus.value = menus.value.slice(0, 1)\n expandingNode.value = undefined\n emit('expand-change', [])\n}\n\nconst calculateCheckedValue = () => {\n const { checkStrictly, multiple } = config.value\n const oldNodes = checkedNodes.value\n const newNodes = getCheckedNodes(!checkStrictly)!\n // ensure the original order\n const nodes = sortByOriginalOrder(oldNodes, newNodes)\n const values = nodes.map((node) => node.valueByOption)\n checkedNodes.value = nodes\n checkedValue.value = multiple ? values : (values[0] ?? null)\n}\n\nconst syncCheckedValue = (loaded = false, forced = false) => {\n const { modelValue } = props\n const { lazy, multiple, checkStrictly } = config.value\n const leafOnly = !checkStrictly\n\n if (\n !initialLoaded.value ||\n manualChecked ||\n (!forced && isEqual(modelValue, checkedValue.value))\n )\n return\n\n if (lazy && !loaded) {\n const values: CascaderNodeValue[] = unique(\n flattenDeep(castArray(modelValue as CascaderNodeValue[]))\n )\n const nodes = values\n .map((val) => store?.getNodeByValue(val))\n .filter((node) => !!node && !node.loaded && !node.loading) as Node[]\n\n if (nodes.length) {\n nodes.forEach((node) => {\n lazyLoad(node, () => syncCheckedValue(false, forced))\n })\n } else {\n syncCheckedValue(true, forced)\n }\n } else {\n const values = multiple ? castArray(modelValue) : [modelValue]\n const nodes = unique(\n values.map((val) =>\n store?.getNodeByValue(val as CascaderNodeValue, leafOnly)\n )\n ) as Node[]\n syncMenuState(nodes, forced)\n checkedValue.value = cloneDeep(modelValue ?? undefined)\n }\n}\n\nconst syncMenuState = (\n newCheckedNodes: CascaderNode[],\n reserveExpandingState = true\n) => {\n const { checkStrictly } = config.value\n const oldNodes = checkedNodes.value\n const newNodes = newCheckedNodes.filter(\n (node) => !!node && (checkStrictly || node.isLeaf)\n )\n const oldExpandingNode = store?.getSameNode(expandingNode.value!)\n const newExpandingNode =\n (reserveExpandingState && oldExpandingNode) || newNodes[0]\n\n if (newExpandingNode) {\n newExpandingNode.pathNodes.forEach((node) => expandNode(node, true))\n } else {\n expandingNode.value = undefined\n }\n\n oldNodes.forEach((node) => node.doCheck(false))\n reactive(newNodes).forEach((node) => node.doCheck(true))\n checkedNodes.value = newNodes\n nextTick(scrollToExpandingNode)\n}\n\nconst scrollToExpandingNode = () => {\n if (!isClient) return\n\n menuList.value.forEach((menu) => {\n const menuElement = menu?.$el\n if (menuElement) {\n const container = menuElement.querySelector(\n `.${ns.namespace.value}-scrollbar__wrap`\n )\n const activeNode =\n menuElement.querySelector(\n `.${ns.b('node')}.${ns.is('active')}:last-child`\n ) || menuElement.querySelector(`.${ns.b('node')}.in-active-path`)\n scrollIntoView(container, activeNode)\n }\n })\n}\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n const code = getEventCode(e)\n\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.down: {\n e.preventDefault()\n const distance = code === EVENT_CODE.up ? -1 : 1\n focusNode(\n getSibling(\n target,\n distance,\n `.${ns.b('node')}[tabindex=\"-1\"]`\n ) as HTMLElement\n )\n break\n }\n case EVENT_CODE.left: {\n e.preventDefault()\n const preMenu = menuList.value[getMenuIndex(target) - 1]\n const expandedNode = preMenu?.$el.querySelector(\n `.${ns.b('node')}[aria-expanded=\"true\"]`\n )\n focusNode(expandedNode)\n break\n }\n case EVENT_CODE.right: {\n e.preventDefault()\n const nextMenu = menuList.value[getMenuIndex(target) + 1]\n const firstNode = nextMenu?.$el.querySelector(\n `.${ns.b('node')}[tabindex=\"-1\"]`\n )\n focusNode(firstNode)\n break\n }\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n checkNode(target)\n break\n }\n}\n\nprovide(\n CASCADER_PANEL_INJECTION_KEY,\n reactive({\n config,\n expandingNode,\n checkedNodes,\n isHoverMenu,\n initialLoaded,\n renderLabelFn,\n lazyLoad,\n expandNode,\n handleCheckChange,\n })\n)\n\nwatch(\n config,\n (newVal, oldVal) => {\n if (isEqual(newVal, oldVal)) return\n initStore()\n },\n {\n immediate: true,\n }\n)\n\nwatch(() => props.options, initStore, {\n deep: true,\n})\n\nwatch(\n () => props.modelValue,\n () => {\n manualChecked = false\n syncCheckedValue()\n },\n {\n deep: true,\n }\n)\n\nwatch(\n () => checkedValue.value,\n (val) => {\n if (!isEqual(val, props.modelValue)) {\n emit(UPDATE_MODEL_EVENT, val)\n emit(CHANGE_EVENT, val)\n }\n }\n)\n\nconst loadLazyRootNodes = () => {\n if (initialLoadedOnce.value) return\n initStore()\n}\n\nonBeforeUpdate(() => (menuList.value = []))\n\nonMounted(() => !isEmpty(props.modelValue) && syncCheckedValue())\n\ndefineExpose({\n menuList,\n menus,\n checkedNodes,\n handleKeyDown,\n handleCheckChange,\n getFlattedNodes,\n /**\n * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n */\n getCheckedNodes,\n /**\n * @description clear checked nodes\n */\n clearCheckedNodes,\n calculateCheckedValue,\n scrollToExpandingNode,\n loadLazyRootNodes,\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_unref","border","_Fragment","_renderList","_createBlock","_withCtx","_renderSlot"],"mappings":"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"}