/
githubmirror
/
halo
Обзор
Документация
Войти
/
githubmirror
/
halo
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ui/src/components/entity/EntityDropdownItems.vue
68 строк
2 KB
Ryan Wang
Refactor dropdown component (#7978)
01 дек 2025, 06:32
Не верифицирован
01 дек 2025, 06:32
fca4c32
Код
Авторство
О чём код?
<script setup lang="ts" generic="T"> import { VDropdown } from "@halo-dev/components"; import { utils, type OperationItem } from "@halo-dev/ui-shared"; const props = withDefaults( defineProps<{ dropdownItems: OperationItem<T>[]; item?: T; }>(), { item: undefined, } ); function action(dropdownItem: OperationItem<T>) { dropdownItem.action?.(props.item); } </script> <template> <template v-for="(dropdownItem, index) in dropdownItems"> <template v-if=" !dropdownItem.hidden && utils.permission.has(dropdownItem.permissions || []) " > <VDropdown v-if="dropdownItem.children?.length" :key="`dropdown-children-items-${index}`" :triggers="['click']" > <component :is="dropdownItem.component" v-bind="dropdownItem.props" @click="action(dropdownItem)" > {{ dropdownItem.label }} </component> <template #popper> <template v-for="(childItem, childIndex) in dropdownItem.children"> <component :is="childItem.component" v-if=" !childItem.hidden && utils.permission.has(childItem.permissions || []) " v-bind="childItem.props" :key="`dropdown-child-item-${childIndex}`" @click="action(childItem)" > {{ childItem.label }} </component> </template> </template> </VDropdown> <component :is="dropdownItem.component" v-else v-bind="dropdownItem.props" :key="`dropdown-item-${index}`" @click="action(dropdownItem)" > {{ dropdownItem.label }} </component> </template> </template> </template>