diff --git a/CHANGELOG.md b/CHANGELOG.md index 5634ed1f290dfdba8003c2537b895c9d07172417..681bc218f87feb830db3f1e1252ac7111c7f8f45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ ## [Unreleased] +### Added + +- 更新树部件适配默认选中及适配不显示根节点配置 + ## [0.0.40] - 2024-12-12 ### Fixed diff --git a/src/control/tree/tree.scss b/src/control/tree/tree.scss index 2ca13a5aa2117901978a0c76b55f1c8f2f60a2e0..a5c8661c90a9f43a52d326013339b050a0ab0d4c 100644 --- a/src/control/tree/tree.scss +++ b/src/control/tree/tree.scss @@ -101,4 +101,10 @@ $control-treeview-crumb: ( } } } + + @include when('no-root') { + &>span:has(.#{bem('control-treeview-header__crumb')}.is-root) { + display: none; + } + } } diff --git a/src/control/tree/tree.tsx b/src/control/tree/tree.tsx index dfa75d050739d8430c0495417fc317a62e523a3d..361dbe8518508b3a9c81c4e7be9faee6464f9437 100644 --- a/src/control/tree/tree.tsx +++ b/src/control/tree/tree.tsx @@ -46,7 +46,7 @@ export const TreeControl = defineComponent({ const ns = useNamespace(`control-${c.model.controlType!.toLowerCase()}`); // 默认选中项 const checkedKeys = computed(() => { - return c.state.selectedData.map(item => item.srfkey); + return c.state.selectedData.map(item => item._id); }); // 节点创建的app实例,用于组件销毁时销毁所有实例 @@ -247,17 +247,34 @@ export const TreeControl = defineComponent({ */ const treeDataFormat = (data: ITreeNodeData) => { return { - id: data.srfkey, + id: data._id, name: data._text, children: data._children, isLeaf: data._leaf, }; }; + /** + * 处理单选默认选中样式 + * + * @author ljx + * @date 2024-12-12 15:07:59 + * @param {IData} opts + * @return {*} + */ + const handleSingleSelect = (opts: IData) => { + const { originData, loadingEl } = opts; + if (checkedKeys.value.includes(originData._id) && loadingEl) { + loadingEl.parentNode.parentNode.classList.add('selected'); + opts.store.selectedCurrent = opts; + } + }; + const renderContent = ( h: (tag: string, opt: IData) => VNode, opts: IData, ) => { + if (c.state.singleSelect) handleSingleSelect(opts); const { originData } = opts; if (!originData._leaf) { return h('div', { @@ -302,7 +319,10 @@ export const TreeControl = defineComponent({ content.appendChild(data.icon.cloneNode(true)); } content.appendChild(textDom); - content.className = ns.be('header', 'crumb'); + content.className = `${ns.be('header', 'crumb')} ${ns.is( + 'root', + data._vsroot, + )}`; content.onclick = () => handleExpandedLastKey.bind(this)(data); return content; }, @@ -360,7 +380,10 @@ export const TreeControl = defineComponent({
),