Skip to content

SColumnSettings

Включение/выключение колонок в таблице.

Базовый пример

Настроить колонки
ПользовательТарифБалансРоль
IvanovБазовый3000customer
PetrovРасширенный4500admin
<div style="display: flex; justify-content: flex-end; margin-bottom: 20px;">
    <SColumnSettings v-model="tableColumns" :options="availableColumns" />
</div>

<STable :data="users">
    <template #header>
        <td>Пользователь</td>
        <template v-for="tableColumn in tableColumns" :key="tableColumn">
            <td class="center">{{ availableColumns[tableColumn] }}</td>
        </template>
        <td></td>
    </template>
    <template #row="{ row }">
        <td>{{ row.username }}</td>
        <template v-for="tableColumn in tableColumns" :key="tableColumn">
            <td class="center">{{ row[tableColumn] }}</td>
        </template>
        <td class="right">
            <SActionIcon title="Удалить" :confirm="`Вы действительно хотите удалить пользователя «${row.username}»?`"
                @click="deleteUser(row.username)" icon="trash" danger />
        </td>
    </template>
</STable>

Сброс колонок до значений по умолчанию

Если нужно сбрасывать колонки до набора по умолчанию, это можно сделать так:

Настроить колонки
ПользовательТарифБалансРольДата регистрации
IvanovБазовый3000customer2025-11-04
PetrovРасширенный4500admin2025-11-05
<div style="display: flex; justify-content: flex-end; margin-bottom: 20px;">
    <SColumnSettings v-model="tableColumns" :options="availableColumns" :column-presets="columnPresets" />
</div>

<STable :data="users">
    <template #header>
        <td>Пользователь</td>
        <template v-for="tableColumn in tableColumns" :key="tableColumn">
            <td class="center">{{ availableColumns[tableColumn] }}</td>
        </template>
        <td></td>
    </template>
    <template #row="{ row }">
        <td>{{ row.username }}</td>
        <template v-for="tableColumn in tableColumns" :key="tableColumn">
            <td class="center">{{ row[tableColumn] }}</td>
        </template>
        <td class="right">
            <SActionIcon title="Удалить" :confirm="`Вы действительно хотите удалить пользователя «${row.username}»?`"
                @click="deleteUser(row.username)" icon="trash" danger />
        </td>
    </template>
</STable>

Когда набор полей всего один, по умолчанию в футере выпадающего списка выводится строка «Сбросить изменения», когда несколько — выводится название каждого набора. Это повдение можно изменить с помощью слота setpreset:

vue
<template>
    <SColumnSettings v-model="tableColumns" :options="availableColumns" :column-presets="columnPresets">
        <template #setpreset="{ preset }">
            <FontAwesomeIcon icon="rotate-left" /> Сбросить на {{ preset.title }}
        </template>
    </SColumnSettings>
</template>

Постоянные колонки

Если нужно запретить удаление определенных колонок, передайте массив с ними в атрибут permanent-columns:

Настроить колонки
ПользовательТарифБалансРольДата регистрации
IvanovБазовый3000customer2025-11-04
PetrovРасширенный4500admin2025-11-05
<div style="display: flex; justify-content: flex-end; margin-bottom: 20px;">
    <SColumnSettings v-model="tableColumns" :permanent-columns="permanentColumns" :column-presets="columnPresets" :options="availableColumns" />
</div>

<STable :data="users">
    <template #header>
        <td>Пользователь</td>
        <template v-for="tableColumn in tableColumns" :key="tableColumn">
            <td class="center">{{ availableColumns[tableColumn] }}</td>
        </template>
        <td></td>
    </template>
    <template #row="{ row }">
        <td>{{ row.username }}</td>
        <template v-for="tableColumn in tableColumns" :key="tableColumn">
            <td class="center">{{ row[tableColumn] }}</td>
        </template>
        <td class="right">
            <SActionIcon title="Удалить" :confirm="`Вы действительно хотите удалить пользователя «${row.username}»?`"
                @click="deleteUser(row.username)" icon="trash" danger />
        </td>
    </template>
</STable>

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

Свойства (Props)

НазваниеТипПо умолчаниюОписание
modelValue / v-modelstring[][]Массив ключей активных колонок.
optionsRecord<string, string>{}Объект (словарь), сопоставляющий ключи колонок с их отображаемыми заголовками, например { id: 'Идентификатор' }.
columnPresetsSColumnSettingsPreset[][]Массив объектов { title: string, columns: string[] }. Используется для быстрого сброса колонок на заданные пресеты.
permanentColumnsstring[][]Массив ключей колонок, которые пользователь не может выключить.

Слоты (Slots)

НазваниеОписание
labelОсновное содержимое кнопки, открывающей выпадающий список. По умолчанию отображает иконку и текст "Настроить колонки".
setpresetСлот для переопределения шаблона кнопки пресета в подвале выпадающего списка. Передает параментр { preset }.