BottomSheet — это компонент, предоставляемый фреймворком Quasar, который позволяет создавать всплывающие панели снизу экрана. Он удобен для отображения быстрых действий, выбора опций или отображения дополнительной информации, не перегружая основной интерфейс. В отличие от диалогов, BottomSheet занимает только часть экрана и поддерживает как списки действий, так и кастомный контент.
Для использования BottomSheet необходимо импортировать соответствующий плагин из Quasar:
import { BottomSheet } from 'quasar';
Вызов производится через метод
BottomSheet.create(options), где options —
объект конфигурации. Минимальная структура:
BottomSheet.create({
title: 'Выберите действие',
options: [
{ label: 'Удалить', icon: 'delete', handler: () => console.log('Удаление') },
{ label: 'Редактировать', icon: 'edit', handler: () => console.log('Редактирование') },
{ label: 'Отмена', icon: 'close', handler: () => console.log('Отмена') }
]
});
Ключевые моменты:
title — заголовок панели.
options — массив объектов с полями:
label — текст кнопки.icon — иконка из библиотеки Material Icons.handler — функция, выполняемая при выборе опции.BottomSheet поддерживает различные стили оформления:
BottomSheet.create({
title: 'Действия',
class: 'my-bottom-sheet',
options: [...]
});
В my-bottom-sheet можно добавить собственные стили,
например, скругления углов или тень.
dark или
light:BottomSheet.create({
title: 'Выбор режима',
dark: true,
options: [...]
});
Каждая опция в options имеет обработчик
handler. Он вызывается при выборе пользователя. Важно
помнить:
handler может быть асинхронным:{
label: 'Загрузить',
icon: 'cloud_upload',
handler: async () => {
await uploadFile();
}
}
hide():const sheet = BottomSheet.create({...});
sheet.hide();
onOk и onCancel:BottomSheet.create({
title: 'Выберите действие',
options: [
{ label: 'Сохранить', handler: () => 'save' },
{ label: 'Отмена', handler: () => 'cancel' }
]
}).onOk(result => console.log(result));
BottomSheet можно использовать не только для списков опций, но и для
произвольного контента через слот component. Пример с
Vue-компонентом:
import CustomContent from './CustomContent.vue';
BottomSheet.create({
component: CustomContent,
componentProps: { message: 'Привет, мир!' }
});
Особенности:
componentProps передает свойства в кастомный
компонент.BottomSheet имеет встроенные анимации появления и скрытия, которые
можно настроить через transitionShow и
transitionHide:
BottomSheet.create({
title: 'Анимация',
transitionShow: 'slide-up',
transitionHide: 'slide-down',
options: [...]
});
slide-up,
fade, zoom, flip.divider) между группами.BottomSheet может динамически формировать список опций из состояния приложения:
import { useStore } from 'vuex';
const store = useStore();
BottomSheet.create({
title: 'Выбор проекта',
options: store.state.projects.map(project => ({
label: project.name,
handler: () => store.dispatch('selectProject', project.id)
}))
});
Таким образом, список всегда актуален, и действия привязаны к состоянию приложения.
| Метод / Свойство | Назначение |
|---|---|
create(options) |
Создает новый BottomSheet |
hide() |
Закрывает BottomSheet |
onOk(callback) |
Вызывается при выборе действия |
onCancel(callback) |
Вызывается при отмене |
component |
Используется для кастомного Vue-компонента |
componentProps |
Передача props в кастомный компонент |
class |
Добавление CSS-классов для кастомизации |
dark / light |
Установка темы |
BottomSheet в Quasar сочетает в себе простоту вызова, гибкость кастомизации и полную интеграцию с реактивной системой Vue, позволяя создавать как стандартные панели действий, так и сложные интерактивные элементы интерфейса.