// composables/useDropdownActions.js import { computed } from 'vue' import { h } from 'vue' import { NIcon } from 'naive-ui' export function useDropdownActions(groups, renderIcon) { return computed(() => { const result = [] const visibleGroups = groups.filter(group => group.items?.some(item => item.if !== false)) visibleGroups.forEach((group, groupIndex) => { // Фильтруем видимые пункты внутри группы const visibleItems = group.items.filter(item => item.if !== false) if (visibleItems.length === 0) return // Добавляем пункты группы visibleItems.forEach(item => { const option = { ...item } // Убираем служебное поле if delete option.if // Добавляем иконку через renderIcon если есть if (item.icon && renderIcon) { option.icon = renderIcon(item.icon) } result.push(option) }) // Добавляем divider после группы, если это не последняя группа if (groupIndex < visibleGroups.length - 1) { result.push({ type: 'divider', key: `divider-${group.key || groupIndex}` }) } }) return result }) }