From a80d22cadc7ca7871e394418eee0bc055f4894f8 Mon Sep 17 00:00:00 2001 From: lijianxiong <1518062161@qq.com> Date: Thu, 12 Dec 2024 21:29:52 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=9B=B4=E6=96=B0=E6=A0=91?= =?UTF-8?q?=E9=83=A8=E4=BB=B6=E9=80=82=E9=85=8D=E9=BB=98=E8=AE=A4=E9=80=89?= =?UTF-8?q?=E4=B8=AD=E5=8F=8A=E9=80=82=E9=85=8D=E4=B8=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=A0=B9=E8=8A=82=E7=82=B9=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ src/control/tree/tree.scss | 6 ++++++ src/control/tree/tree.tsx | 31 +++++++++++++++++++++++++++---- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5634ed1f29..681bc218f8 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 2ca13a5aa2..a5c8661c90 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 dfa75d0507..361dbe8518 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({
), -- Gitee