{#snippet renderNestedItems(items: SelectItem[], depth = 0)} {#each items as item}
handlerOnSelect(item)}>
{#if item.children && item.children.length > 0}
{/if}
{item.label}
{#if item.dataType}
{item.dataType}
{/if}
{#if item.children && item.children.length > 0}
{@render renderNestedItems(item.children, depth + 1)}
{/if} {/each} {/snippet}
isOpen = true} onHide={() => { isOpen = false; hoveredItem = null; }} syncWidth={true} syncWidthMode="min" placement="bottom" >
{#if type === 'ref'}
{#if selectedItem}
{#if selectedItem.nodeType && nodeIcons[selectedItem.nodeType]}
{@html nodeIcons[selectedItem.nodeType]}
{/if}
{selectedItem.displayLabel || selectedItem.label}
{:else}
{placeholder}
{/if}
{ e.stopPropagation(); onTypeChange?.('fixed'); onRefChange?.(''); }} title="清空引用">
{:else}
onTextChange?.((e.target as HTMLInputElement).value)} onclick={(e) => e.stopPropagation()} />
{/if}
{#snippet floating()}
{#each refOptions as item}
handleMouseEnter(item)} onclick={() => handlerOnSelect(item)}>
{#if item.icon} {@html item.icon} {:else if item.nodeType && nodeIcons[item.nodeType]} {@html nodeIcons[item.nodeType]} {:else if item.children && item.children.length > 0}
{/if}
{item.label}
{#if item.children && item.children.length > 0}
{/if}
{/each}
{#if hoveredItem && hoveredItem.children && hoveredItem.children.length > 0}
{@render renderNestedItems(hoveredItem.children)}
{/if}
{/snippet}