Skip to content

SActionIcon

Иконка действия (чаще всего используется в таблицах).

В чем отличие от аналогов?

В отличие от популярных библиотек компонентов для Vue3:

  1. Привязка к FontAwesome, который бесплатен и оптимально решает задачи иконок для стартапов.
  2. Упрощает запрос подтверждения перед опасными действиями (напр. удаление) с помощью одного атрибута.

Стандартный пример

Используются стандартые иконки FontAwesome. Типовой пример с click-событием:

<SActionIcon icon="pen-to-square" title="Редактировать" @click="greet('Hello!')" />
<SActionIcon :icon="['far', 'calendar']" title="Календарь" @click="greet('Hello!')" />
<SActionIcon icon="xmark" title="Закрыть" @click="greet('Hello!')" />
<SActionIcon icon="arrow-up-right-from-square" title="Открыть" @click="greet('Hello!')" />
<SActionIcon icon="circle-question" title="Помощь" @click="greet('Hello!')" />
<SActionIcon icon="copy" title="Копировать" @click="greet('Hello!')" />
<SActionIcon icon="bars" title="Меню" @click="greet('Hello!')" />
<SActionIcon icon="cloud-arrow-down" title="Скачать" @click="greet('Hello!')" />
<SActionIcon icon="folder-open" title="Открыть папку" @click="greet('Hello!')" />
<SActionIcon icon="user" title="Профиль" @click="greet('Hello!')" />

Ссылка в иконке

Если указать href-атрибут, то по умолчанию иконка станет анкором:

<SActionIcon icon="pen-to-square" title="Перейти на сайт" href="https://startup-ui.ru" />
<SActionIcon :icon="['far', 'calendar']" title="Перейти на сайт" href="https://startup-ui.ru" />
<SActionIcon icon="xmark" title="Перейти на сайт" href="https://startup-ui.ru" />
<SActionIcon icon="arrow-up-right-from-square" title="Перейти на сайт" href="https://startup-ui.ru" />
<SActionIcon icon="circle-question" title="Перейти на сайт" href="https://startup-ui.ru" />
<SActionIcon icon="copy" title="Перейти на сайт" href="https://startup-ui.ru" />
<SActionIcon icon="bars" title="Перейти на сайт" href="https://startup-ui.ru" />
<SActionIcon icon="cloud-arrow-down" title="Перейти на сайт" href="https://startup-ui.ru" />
<SActionIcon icon="folder-open" title="Перейти на сайт" href="https://startup-ui.ru" />
<SActionIcon icon="user" title="Перейти на сайт" href="https://startup-ui.ru" />

Но при необходимости также через атрибут is можно также передать Link-компонент InertiaJs:

vue
<template>
    <SActionIcon icon="pen-to-square" title="Редактировать" :is="Link" href="/users/" />
</template>

<script setup>
import { Link } from '@inertiajs/vue3';
</script>

Подтверждение действия

Для небезопасных действий выделяем иконку цветом (атрибут danger) и запрашиваем подтверждение перед выполнением (атрибут confirm):

<SActionIcon title="Удалить" @click="deleteUser" icon="trash" danger
    confirm="Вы действительно хотите удалить пользователя?" />

Подписи и цвет кнопок диалога настраиваются через confirm-options (пробрасываются в SConfirm):

vue
<SActionIcon
    icon="trash"
    confirm="Удалить запись?"
    :confirm-options="{ acceptLabel: 'Удалить', variant: 'danger' }"
    @click="remove"
/>

Интерфейс компонента

Свойства (Props)

НазваниеТипПо умолчаниюОписание
iconstring | string[]requiredИмя иконки FontAwesome (например, 'trash' или ['far', 'calendar'])
dangerbooleanfalseВыделяет иконку красным цветом
confirmstringundefinedТекст диалога подтверждения перед выполнением @click
confirmTitlestring'Необходимо подтверждение'Заголовок диалога подтверждения
confirmOptionsobjectundefinedОпции, пробрасываемые в SConfirm.open (acceptLabel, cancelLabel, variant, …)
isstring | ComponentundefinedHTML-элемент или Vue-компонент для рендеринга (например, InertiaJS Link)
hrefstringundefinedURL для перехода (делает иконку ссылкой)
titlestringundefinedТекст подсказки при наведении

События (Events)

НазваниеПараметрыОписание
clicknoneВызывается при клике на иконку. Срабатывает ПОСЛЕ подтверждения, если передан параметр confirm.